初学Verilog语言,有个问题:always@( )列表里面不能同时有电平敏感事件和边沿触发事件吗?

看到用Verilog描述有的时序电路要把触发器部分和组合逻辑部分分开描述,难道不能用一个always来描述吗?初学,很多不知道,谢谢大家

不能同时有电平触发与边沿触发信号存在,综合的时候通不过,例如Xlinx ISE 会报错Xst:902 Unexpected xxx event in always block sensitivity list.
同样的,一个逻辑块里不能同时阻塞赋值和非阻塞赋值。
必须分开写。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-15
可以不过这种很容易导致引起竞争与冒险
所以最好把他们分开。
还有要注意阻塞赋值与非阻塞赋值的用法。
不要乱用。
第2个回答  2018-03-04
组合逻辑是当输入信号改变时引起输出的即时变化;时序逻辑一般存在寄存器,由时钟的边沿触发进行取样。两者对输入取样的时机显然不一样,因此必须加以区分,放到不同的电路块中,将两者触发条件(always的条件部分)混合起来是没有可能的。但是组合逻辑电路是可以包含在时序触发电路中的,最终的电路块还是时序逻辑,不过很多情况下将组合逻辑单独成块是有好处的,它只能是电平敏感条件了。
第3个回答  2011-12-15
语法问题应该没有什么好推理的吧

初学Verilog语言,有个问题:always@( )列表里面不能同时有电平敏感事件...
不能同时有电平触发与边沿触发信号存在,综合的时候通不过,例如Xlinx ISE 会报错Xst:902 Unexpected xxx event in always block sensitivity list.同样的,一个逻辑块里不能同时阻塞赋值和非阻塞赋值。必须分开写。

verilog中,电平触发和边沿触发区别在哪
上面的写法是错误的,编译不会通过的,在同一个always中用边沿触发的话,只能是上升沿或者下降沿,下面那种写法是只要clk变化就触发

请大家帮个忙,我用verilog 实现一个带异步复位端和使能端的上升沿D触...
还有敏感列表不能既有电平敏感事件en还有边沿触发的clk和reset。

verilog 键盘控制数码管显示数字程序中的一个always,大家帮看看问题出在...
电平触发和边沿触发不能同时在always语句内进行判断,所以将key1 or key2 or key3 or key4 or删除就不会出现这个错误了

verilog语法问题
这是因为,你的“always@(posedge clk or negedge r_est)”表明在clk上升沿或r_est下降沿这两个敏感事件发生时always语句块得以触发;而always中的if条件语句必须至少有一个条件指向其中一个敏感事件(边界标识符);所以写成“if(r_est)...else...”就会出错。你可以把“always@(posedge clk or...

Verilog语言中.always 后面的括号有什么用
always 在程序中表示永远,总是;verilog中有它来指定的内容会不断地重复运行;最长用的两个事件是电平触发(某个信号发生变化)和边沿触发(电平上升沿或者下降沿);需要在always 后面加@之后再跟上事件内容。

Verilog语言中.always 后面的括号有什么用
always 在程序中表示永远,总是;verilog中有它来指定的内容会不断地重复运行;最长用的两个事件是电平触发(某个信号发生变化)和边沿触发(电平上升沿或者下降沿);需要在always 后面加@之后再跟上事件内容。

verilog 中always可以用多个敏感信号控制吗
可以呀!组合逻辑:always@(in_a or in_b or in_c or in_d)begin sum = in_a + in_b + in_c + in_d;end时序逻辑:always@(posedge Clk or negedge Rst)begin if(!Rst) Out <= 2'b00; else Out <= Out + 1'b1;end ...

请教关于verilog HDL语言中关于always语句块的问题?
falling_edge拉高时代表检测到下降沿 rising_edge || falling_edge 代表检测到边沿 reg[1:0] sign_in_d;reg rising_edge;reg falling_edge;always@(posedge clk)sign_in_d <= {sign_in_d[0],sign_in};always@(posedge clk or negedge rstn)if(rstn == 1'b0)rising_edge <= ...

verilog 判断上升沿 (3个小问题)
以时钟上升沿为标准:always@(posedge clk)begin a_last <= a;end 在clk上升沿那一刹那,a_last变化,变化的值是上升沿之前a的值。其实看仿真更容易理解。建议去搞明白电平触发,边沿触发和脉冲触发。

相似回答