代码之家  ›  专栏  ›  技术社区  ›  Thomas S.

检查所有已设置/未设置的位

  •  2
  • Thomas S.  · 技术社区  · 2 年前

    我是Verilog的新手,我正在迈出FPGA“编程”的第一步。 我有一个类似的参数化模块定义:

    module foobar #(
        parameter BITS = 4
    ) (...);
    
       reg[BITS - 1:0] counter = 0;
       ...
       if (counter == |) begin
          ...
       end
       ...
    endmodule
    

    并且希望在进行测试 | 是否的所有位 counter 已设置(或未设置)。如何做到这一点?在没有参数化的情况下,通过指定(例如。 4'b1111 (或 4'b0000 )。

    1 回复  |  直到 2 年前
        1
  •  2
  •   toolic    2 年前

    使用复制的串联运算符。检查是否设置了所有位:

       if (counter == {BITS{1'b1}}) begin
    

    检查是否清除了所有位:

       if (counter == {BITS{1'b0}}) begin
    

    或者,在启用SystemVerilog功能的情况下:

       if (counter == '1) begin // All set
       if (counter == '0) begin // All cleared
    
    推荐文章