我是 Verilog 新手,正在迈出 FPGA“编程”的第一步。 我有一个类似于以下的参数化模块定义:
module foobar #(
parameter BITS = 4
) (...);
reg[BITS - 1:0] counter = 0;
...
if (counter == |) begin
...
end
...
endmodule
并想在|
处测试counter
的所有位是否已设置(或未设置)。如何实现这一目标?如果没有参数化,通过指定会很容易,例如4'b1111
(或4'b0000
)。
最佳答案
使用复制串联运算符。检查是否设置了所有位:
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
关于verilog - 检查所有设置/未设置的位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77511343/