说明:时序逻辑延迟一拍,时序逻辑中传输led_out <=key_in,当时钟上升沿来临时起作用,是当前时钟周期的led_out 等于上一时钟周期的key_in
module shixu(
input wire clk,
input wire rst_n,
input wire key_in,
output reg led_out
);
always@(posedge clk)//同步复位 只有当rst_n为0了,并且在时钟上升沿时刻才会进行复位操作,取消复位操作时,也是要rst_n置高电平,在时钟上升沿时刻才可以
//always@(posedge clk or negedge rst_n) //异步复位 只要rst_n为0,即刻进行复位操作, 但是取消复位操作时,也是要rst_n置高电平,在时钟上升沿才可以
begin
if (!rst_n)
led_out <= 1'b0;
else
led_out <=key_in;
end
endmodule
module vtf_shixu;
// Inputs
reg clk;
reg rst_n;
reg key_in;
// Outputs
wire led_out;
// Instantiate the Unit Under Test (UUT)
shixu uut (
.clk(clk),
.rst_n(rst_n),
.key_in(key_in),
.led_out(led_out)
);
initial begin
// Initialize Inputs
clk = 0;
rst_n = 0;
key_in = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
end
always #10 clk=~clk;
always #50 rst_n <={$random}%2;
always #100 key_in <={$random}%2;
endmodule