怎样消除竞争冒险

2019-07-16 02:25发布

module compare(out,a,b);
  input [7:0] a,b;
  output out;
  reg out;
  always @(a or b)
  begin
    if(a>b)
      out=1;
    else
      out=0;
  end
endmodule

在进行门级仿真的时候波形中出现了毛刺,也就是所谓的竞争冒险,如下图
书上也有竞争冒险的解决办法,但具体到代码里还是不会,谁能教教我该怎么改这个代码才能消除竞争冒险?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
zhihuizhou
2019-07-16 14:00
lique 发表于 2011-10-21 14:34
不好意思,可能我确实没表达清楚。这段代码就是比较8位二进制a和b的大小,若a>b,则输出out=1,否则out=0 ...

在楼顶模块的代码里,也应该有test bench那样的时钟clk,利用clk用4楼的做法就能消除竞争冒险。假如这个clk跟外部驱使a、b变化的是同一时钟的话,那么a和b无需再整形,3楼写的前两行代码可省略。

一周热门 更多>