非阻塞赋值

2019-07-15 23:08发布

各位大师:   请教一个问题。always @(posedge clk or posedge rst)if (rst) y1 <= 0; // resetelse y1 <= y2;always @(posedge clk or posedge rst)if (rst) y2 <= 1; // preset此处插入许多非阻塞语句。else y2 <= y1;endmodule资料说:左边的REG集中赋值,两个ALWAYS先后顺寻没关系。如果第二个ALWAYS因为插入许多语句,导致执行时间与第一个ALWAYS有大的差异,那么两个ALWAYS的左边的REG更新是在哪个ALWAYS执行完毕更新,是最长时间执行完毕的ALWAYS,然后两个一起更新吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
samm100
1楼-- · 2019-07-16 11:54
谢谢诸位的回答,特别是5#,6#。那么我还有一个疑问。你们所说的时钟应该是系统时钟。
always @ (posedge clk or negedge rst_n),
是clk上升沿所有reg同时赋值吗???那么rst_n呢,对于REG赋值有影响吗?

如果有一语句always @ (posedge XXX ),XXX是一个输入引脚,它不是时钟,那么REG赋值是在什么时候呢?
如果还是系统时钟上升沿同时赋值,那不是有很大的风险吗?就是刚刚XXX上升沿来了,系统时钟上升沿又来了。
samm100
2楼-- · 2019-07-16 14:26
顶一下。新的问题。
勇敢的心2
3楼-- · 2019-07-16 15:09
新手吗?你不能只看verilog hdl语法,还要理解什么是组合逻辑,什么是时序逻辑!用HDL语言编写的代码,最终都要综合成电路,如果对电路没有概念的话,编写出来的代码可综合性非常差!针对你提出的问题,我建议你去看三段式的FSM编写方法,并自己去仿真和思考!网络上有很多关于三段式的详细说明!
fpga_wang
4楼-- · 2019-07-16 18:35
always @ (posedge XXX )的时候 只跟XXX的上升沿来操作,always @ (posedge clk or negedge rst_n)这个是跟clk的上升沿和rst_n的下降沿来操作。always下边包含的代码 只通过后边()里面的沿运行
samm100
5楼-- · 2019-07-16 19:24
 精彩回答 2  元偷偷看……

一周热门 更多>