一个简单的verilog的问题?

integer a,b,c;
always@(posedge clk)
begin
    if(b>5)
        a<=1;
    else
        a<=2;
end
always@(posedge clk)
begin
    c<=a;
end

在这里,同一个时钟周期内,a被赋值的语句和c被赋值的语句的执行的先后顺序未必确定对不对?
我希望无论如何都是c<=a先执行,这样的话应该怎么写代码呢?我知道写在一个begin块里用=就行但我想知道不同always块内的情况,,,
刚开始搞这玩意不太明白,恳请赐教.

阅读 480
2 个回答

强行让第一个块慢一拍。

新手上路,请多包涵

增加握手信号可以完成,a赋值完成之后给出一个valid信号,c的always块判断这个valid返回ready

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏