|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 Darnew 于 2025-4-6 22:29 编辑
我设置的ext_clk_25m时钟信号,周期是40ns。
我在testbench中,不小心把ext_rst_n的初始化拉高在了时钟上升沿(100ns),发现delay的+1操作也能在此时赋值,这是为什么,不是应该延迟一拍吗?
代码:
- reg[23:0] delay;
- always @ (posedge ext_clk_25m or negedge ext_rst_n)
- if(!ext_rst_n) delay <= 24'd0;
- else delay <= delay+1'b1;
复制代码
仿真文件:
- `timescale 1 ns/ 1 ps
- module cy4_vlg_tst();
- // constants
- // general purpose registers
- //reg eachvec;
- // test vector input registers
- reg ext_clk_25m;
- reg ext_rst_n;
- reg [1:0] key_v;
- reg [0:0] switch;
- // wires
- wire [7:0] led;
- // assign statements (if any)
- cy4 i1 (
- // port map - connection between master ports and signals/registers
- .ext_clk_25m(ext_clk_25m),
- .ext_rst_n(ext_rst_n),
- .key_v(key_v),
- .led(led),
- .switch(switch)
- );
- initial
- begin
- // code that executes only once
- // insert code here --> begin
- ext_clk_25m = 0;
- ext_rst_n =0;
- switch =1;
- key_v = 2'b11;
- // delay 100ns, wait the finish of ststem reset
- # 100;
- ext_rst_n = 1;
- # 20;
- key_v = 2'b01;
- switch = 0;
- # 120;
- key_v = 4'b11;//little bounce
- # 10;
- key_v = 4'b01;
- # 40000160;
- # 167772120;
- $stop;
- // --> end
- $display("Running testbench");
- end
- always #20 ext_clk_25m = ~ext_clk_25m; //generate 25MHz clock source
-
- endmodule
复制代码
|
|