99问答网
所有问题
verilog的两个always的问题
写程序中经常会这样写,自己感觉会有一点竞争冒险了,两个always都响应同样的时钟,其中一个always里面给变量赋值,另外一个用if来判断变量的值做不同的处理,这样会不会不稳定
举报该问题
推荐答案 2013-08-30
稳定的,你在第一个always里给那个变量赋值,这个变量从时钟上升沿到真正值的变化会有一个Tco的时间,这个你应该懂的吧,这个Tco加上布线延时的时间会比保持时间Th长,所以你在第二个always里用if来判断变量的值做不同的处理是没有问题的。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/BO7OeXXBe.html
其他回答
第1个回答 2013-08-30
不会,一个always块完成一个变量的赋值,便于综合成硬件,都是这样处理的,只要不是多个always块都对同一个变量赋值即可。
第2个回答 2013-08-29
逻辑上没问题的话应该就不会有问题的,不过为什么要在两个always里面写呢。。写下一个里面也不复杂啊
相似回答
...用第一个always的输出当成第
二个always的
敏感信号,为什么第二个alway...
答:
你好,首先我们用
verilog
写出来的是电路,不是程序。其次always关键字构造两种电路,一种是时序电路,它需要一个时钟标志就是always @(posedge ,然后在这个时钟的上升或者下降沿来触发寄存器输出结果。你的第一
个always
就是这样的电路。always还有一种是组合逻辑电路,它不需要时钟,它利用always后面的敏感...
verilog
如何处理需要在
两个always 中
赋值的变量
答:
一旦遇到这个问题。
verilog
中的解决方法是两个变一个。一个
always
块只对一个变量赋值。最后将其用组合逻辑将其变为一个信号。举例:
always
@ (posedge clk or negedge rst)if (!rst)cnt1 <= #1 3'd0;else if (cnt==4)cnt1 <= #1 3'd0;else cnt <= #1 cnt+1;always @ (negedge clk ...
有关
verilog
里
always的问题
……?
答:
Verilog是一种硬件描述语言(HDL),在撰写代码时,我们实际是在构建电路。当遇到
问题
时,应从电路的角度去思考。在
Verilog中
,同时触发机制涉及众多细微之处,例如存在微小的延迟,但在大部分情况下,这些延迟可以忽略不计。类比于数字电子学中的多个D触发器在相同的时钟驱动下,共同响应同一时钟源。“
alw
...
verilog中
在同一模块下 一
个always
块中计数得到的值 可以在另一个always...
答:
假设,下降沿也可以的),是之前的寄存的数据,当然是可以用的,尽管,在该时钟周期,计数器的值可能会改变,加或减1,但是不影响你控制其他
always
块,或assign语句也可以的,但是这是实时的,与计数器值变化有关的 如:assign over=(cnt==4‘b0010)?1:0;此时cnt为
2
...
关于
verilog 中always
块的总线与敏感列表
问题
答:
你这个key_out跟你那个sum_in是
两个
信号。
always的
模块有两种用法,一个是时序logic,在时延posedge 或者是negedge来的时候,进行相关的工作。需要注意的时候,这个logic在实际电路上只能是一个d触发器,所以只能有一个时钟。另外一个是组合logic,在这种情况下,那个敏感列表是可以有多个信号的,但是不能...
verilog中
多个
always的
困惑
答:
是并行的 你要注意他们是出于不同的时钟上升沿下,两个always是同时起作用的,第一个计算tempa、tempb,而此时第
二个always中
tempa、tempb还是上一周期算出的tempa、tempb;也就是说第一次需要两个周期才能出一个结果的,以后每周期出一个结果的 你这里相当于流水了,不知道你明白不?
关于
verilog中两个always的
关系
问题
答:
第一个always块中把enclk当成普通信号而把datain当时钟信号,第二个always块中把enclk当时钟信号,这在一般的设计当中是不允许的。如果非要这样用,则因为有多个时钟,需要特别做同步处理,否则做成的硬件不能正常工作。关于
verilog中两个always的
关系
问题
...
关于
verilog中两个always的
关系
问题
答:
第一个always块中把enclk当成普通信号而把datain当时钟信号,第
二个always
块中把enclk当时钟信号,这在一般的设计当中是不允许的。如果非要这样用,则因为有多个时钟,需要特别做同步处理,否则做成的硬件不能正常工作。
verilog 中
为什么不能再
两个always中
同时赋值同一参数
答:
因为那样是电路不可以实现的,一
个always中
要进行赋值必须是reg变量,一个reg变量对应在时序逻辑电路里是一个触发器的输出,你
两个always
模块中对同一个reg变量赋值是综合不出来的。。。我的理解是这样。所以写到一个模块里吧。如果还解决不了可以附代码出来,我帮你改改。本人菜鸟,多交流。
大家正在搜
always verilog
verilogalways用法
always循环verilog
verilog always语法
verilog中always语句
verilog negedge
verilog if else
verilog不进入elseif
assign verilog
相关问题
关于verilog中两个always的关系问题
verilog中多个always的困惑
Verilog问题:如何在多个always块中写同一个寄存器...
Verilog里一个always语句的问题
verilog语言中一个模块中2个always语句是如何执行
verilog两个always 用第一个always的输出当...
verilog语句中的always语句执行顺序问题
verilog 如何处理需要在两个always 中赋值的变量...