verilog 接收clk信号

`timescale 1ns/100ps

module led_key
    (
    //input
    clk,
	clk1,	
    reset_n,
    //skey,
	
    //output
    led
    );

/******************************** 参数定义 ************************************/		
//parameter U_DLY           = 1;                            //只在仿真时有效,便于观察波形.不影响综合和布线.
	
/******************************** 端口声称 ****************************************/	
//input	
input               clk;
output reg           clk1;
input               reset_n;
//input        	 	skey;                                 //输入的按键值

//output
output reg [3:0]     led;                                  //1-亮,0-灭

/******************************** 端口定义 ************************************/
//reg [3:0]           led;

/******************************** 内部信号定义 ********************************/

/******************************** 代码开始 ************************************/
/* always @(posedge clk or negedge reset_n)
begin
    if (!reset_n)
        led <= 4'b0000;       //LED缺省为灭
		
    else 
        led <= #U_DLY {~skey[3],~skey[2],~skey[1],~skey[0]};
end */

always @(posedge clk or negedge reset_n)
begin
    if (!reset_n)
       led <=4'b0000;
    else 
       led <=4'b1111;
	   clk1<=clk;
end

endmodule

 

clk 赋值只在时序逻辑中有效 ,示波器可以测量clk信号

 

testbench:

-------------------------------------------------------------------------

`timescale 1ns/1ns

module v_test1_tb();

reg   sys_clk;
reg   sys_rst_n;
reg   ckl2;

initial
     begin
         sys_clk = 1'b1; //初始化高电平
         sys_rst_n <= 1'b0; //初始化低电平
         #20
         sys_rst_n <= 1'b1;
     end

always #10 sys_clk = ~sys_clk;  //10ns 翻转一次clk

v_test1 tb(
.clk(sys_clk),
.rst(sys_rst_n),
.clk1(clk2)
);

endmodule 

 

posted @ 2024-05-07 15:51  微笑的''80  阅读(28)  评论(0)    收藏  举报