FPGA|CPLD|ASIC论坛
直播中

马翔龙

5年用户 6经验值
擅长:可编程逻辑 嵌入式技术 接口/总线/驱动 处理器/DSP 控制/MCU EDA/IC设计
私信 关注
[问答]

请问Quartusii软件中的波形仿真可以显示竞争与冒险吗?

为什么RST信号下降沿之后y1和y2的值均没有变化,而是在clk上升沿才有变化?


verilog代码如下

module Blocking(y1,y2,clk,rst);
output y1,y2;
input clk,rst;
reg y1,y2;
always @(posedge clk or posedge rst)
begin
        if(rst)y1=0;
        else         y1=y2;
end


always @(posedge clk or posedge rst)
begin
        if(rst)y2=1;
        else          y2=y1;
end
endmodule


仿真波形如下



  • VEVS2CB])1Y}D7FZ4)S__VS.png

回帖(2)

卿小小_9e6

2019-11-15 21:50:08
问:为什么RST信号下降沿之后y1和y2的值均没有变化,而是在clk上升沿才有变化?
答:always后面的敏感时间是clk的上升沿或rst的上升沿。言外之意,当rst下降沿到来且无clk上升沿时,y1/y2的值不会变化,保持静态;在rst=0之后,当clk上升沿到来时,代码执行。

补充:
a.一般在always块里,使用非阻塞赋值“<=”,而不是阻塞赋值“=”。
b.组合逻辑电路容易引入竞争冒险,原因就是输入信号到达的先后顺序不同。时序逻辑电路可以理解是为每组输入信号做一个时钟周期的延时(留出时间裕量),降低竞争冒险的概率。
c.不同的仿真平台对于竞争冒险的优化方式不同。
d.不同的仿真平台对于仿真代码的处理方式不同。
1 1 举报
  • 01_blocking_code.png
  • 02_blocking_sim.png
  • 03_blocking_resault.png

橖榆_45d

2019-11-17 09:05:20
always后面的敏感就是clk和rst的上升沿。。。
3 举报

更多回帖

发帖
×
20
完善资料,
赚取积分