module clk1 #
(
parameter N=100000,
parameter M=N/2
)
(
input clk,
input rst,
output ad_o,
output ad_o1
);
reg [17:0] cont;
always@(posedge clk)
begin
if(~rst)
cont<=0;
else if(cont==N-1)
cont <=0;
else
cont<=cont+1'b1;
end
reg vs;
always@(posedge clk)
begin
if(~rst)
vs<=0;
else if(cont==M-1)
vs<=1'b1;
else if(cont==N-1)
vs<=1'b0;
end
assign ad_o=cont;
assign ad_o1=vs;
endmodule
测试:
`timescale 1ns/1ps
module clk1text();
reg clk;
reg rst;
initial
begin
rst=0;
#100 rst=1;
#100000 $stop;
end
initial
begin
clk=0;
end
parameter N=10000;
parameter M=N/2;
always #5 clk<=~clk;
clk1
clk1_inst
(
.clk(clk),
.rst(rst),
.ad_o(),
.ad_o1()
);
endmodule