当前位置:   article > 正文

verilog阻塞和非阻塞语法

verilog阻塞和非阻塞语法

阻塞和非阻塞是FPGA硬件编程中需要了解的一个概念,绝大部分时候,因为非阻塞的方式更加符合时序逻辑设计的思想,有利于时钟和信号的同步,更加有利于时序收敛,所以除非特殊情况,尽量采用非阻塞方式。

1,非阻塞代码

非阻塞赋值,A和B是同时被赋值的,具体是说在时钟的上升沿来的时刻,A和B (或调换A和B)同时被置1。

always @(posedge clk)
begin
     A <= 1'b1;
     B <= 1'b1;

end

  1. module unblock
  2. (
  3. input clk_i, input rst_n_i, output [4:0]result_o, output [3:0]A, output [3:0]B
  4. );
  5. reg [3:0]A;
  6. reg [3:0]B;
  7. reg [4:0]result_o;
  8. always @(posedge clk_i )
  9. begin
  10. if(!rst_n_i)
  11. begin
  12. A <= 4'd0;
  13. B <= 4'd0;
  14. result_o = 5'd0;
  15. end
  16. else
  17. begin
  18. A <= 4'd2;
  19. B <= B + 1'b1;
  20. result_o <= A + B + 1'b1;
  21. end
  22. end
  23. endmodule

仿真

第一个周期上升沿后: A 输出 2 这是个常量; B 输出 1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/719077
推荐阅读
相关标签
  

闽ICP备14008679号