- 主题:verilog激励中,这两种赋值怎么不同?
- 代码是这样:
 always @(posedge clk or negedge rst_n)
 if (!rst_n)
 data_out <= 32'd0;
 else
 data_out <= data_in;
 
 激励1:
 initial begin
 ...
 #20
 @(posedge clk)
 data_in = 32'h12345678;
 ...
 
 end
 
 
 激励2:
 
 always @(posedge clk or negedge rst_n)
 if(!rst_n)    data_in <= 32'd0;
 else     data_in <= data_in + 32'h12345678;
 
 
 激励1是data_in和data_out是同步的,激励2中data_out要慢data_in一拍。
 激励1为什么是这样?竟然同步!
 --
 FROM 220.166.46.*
 
- 阻塞赋值 非阻塞赋值 的区别
 【 在 Schrooman 的大作中提到: 】
 : 代码是这样:
 : always @(posedge clk or negedge rst_n)
 : if (!rst_n)
 : ...................
 --
 FROM 180.167.199.*
 
- 没看懂呢,
 data_in和data_out在代码里面用的都是<=,只是激励里面给data_in赋值的方式不一样。
 激励里给data_in用了阻塞和非阻塞,怎么会影响到data_out了?
 【 在 WebGL 的大作中提到: 】
 : 阻塞赋值 非阻塞赋值 的区别
 --
 FROM 220.166.46.*
 
- <= 后面可以加#时间,其他不可以
 这样就能比较容易的分辨状态了
 这种写法,换个tool,可能解析结果都有区别
 
 
 【 在 Schrooman 的大作中提到: 】
 : 没看懂呢,
 : data_in和data_out在代码里面用的都是<=,只是激励里面给data_in赋值的方式不一样。
 : 激励里给data_in用了阻塞和非阻塞,怎么会影响到data_out了?
 : ....................
 --
 FROM 111.201.155.*
 
- 建议看一下verilog的schedule region就明白了
 
 【 在 Schrooman (林如风) 的大作中提到: 】
 :  没看懂呢,
 :  data_in和data_out在代码里面用的都是<=,只是激励里面给data_in赋值的方式不一样。
 :  激励里给data_in用了阻塞和非阻塞,怎么会影响到data_out了?
 :  【 在 WebGL 的大作中提到: 】
 --
 FROM 222.209.8.*
 
- 激励1用的是非阻塞赋值,改成阻塞赋值就可以跟激励2一样的效果了
 【 在 Schrooman 的大作中提到: 】
 : 代码是这样:
 : always @(posedge clk or negedge rst_n)
 : if (!rst_n)
 : ...................
 --
 FROM 221.217.88.*
 
- always block 执行顺序
 nondeterminism
 【 在 Schrooman 的大作中提到: 】
 : 代码是这样:
 : always @(posedge clk or negedge rst_n)
 : if (!rst_n)
 : ...................
 --
 FROM 118.126.54.*
 
- Verilog是硬件描述语言 写代码的时候脑子里要有硬件才行
 
 激励一是一个flip flop. Delta cycle后更新dataout;
 
 激励二是两个flipflop,自然差一拍更新。
 【 在 Schrooman 的大作中提到: 】
 : 代码是这样:
 : always @(posedge clk or negedge rst_n)
 : if (!rst_n)
 : ....................
 
 - 来自「最水木 for iPhone 11」
 --
 FROM 180.169.186.*