module erfenpin(
clk ,
rst_n ,
//其他信号,举例dout
dout
);
//参数定义
parameter DATA_W = 8;
//输入信号定义
input clk ;
input rst_n ;
//输出信号定义
output dout ;
//输出信号reg定义
reg dout ;
//时序逻辑写法
always@(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
dout<=0;
end
else begin
dout<=~dout;
end
end
endmodule
tb
`timescale 1 ns/1 ns
module testbench_name();
//时钟和复位
reg clk ;
reg rst_n;
//uut的输出信号
wire dout ;
//时钟周期,单位为ns,可在此修改时钟周期。
parameter CYCLE = 20;
//复位时间,此时表示复位3个时钟周期的时间。
parameter RST_TIME = 3 ;
erfenpin U1(
.clk (clk ),
.rst_n (rst_n ),
.dout (dout )
);
//生成本地时钟50M
initial begin
clk = 0;
forever
#(CYCLE/2)
clk=~clk;
end
//产生复位信号
initial begin
rst_n = 1;
#2;
rst_n = 0;
#(CYCLE*RST_TIME);
rst_n = 1;
end
endmodule
而不能将分频信号作为新的时钟信号
//cnt计数器
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
cnt<=1'b0;
end
else if(cnt==2)begin
cnt<=1'b0;
end
else begin
cnt<=cnt+1;
end
end
//en使能信号
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
en<=1'b0;
end
else if(cnt==2)begin
en<=1'b1;
end
else begin
en<=1'b0;
end
end
//使用en信号
always @(posedge clk or negedge rst_n)begin//错always @(posedge en or negedge rst_n)
if(rst_n==1'b0)begin
end
else if(en==1)begin
end
else begin
end
end