我希望在 verilog 中生成一组连续的
3 -> 'b111
4 -> 'b1111
5 -> 'b11111
我希望我可以使用
{num{1'b1}}
,但我发现该值必须是常量。在verilog中有什么方法可以生成一组连续的值吗?
最佳答案
使用系统 verilog,您可以使用 '1
语法,它会根据左侧自动调整大小。
此外,Dodon Victors 答案中的上述函数 2^N - 1
只是带符号符号的 -1
。我已经展示了下面两者的用法。
一些模拟器在宽度大于 32 时可能无法正常工作,尽管我相信所有现代模拟器都解决了这个问题。
下面是 EDAPlayground 的示例:
module dut;
logic [65:0] test1;
logic [65:0] test2;
initial begin
#1ps;
test1 = '1;
test2 = -1;
#1ps;
$displayb(test1);
$displayb(test2);
end
endmodule
输出:
# 111111111111111111111111111111111111111111111111111111111111111111
# 111111111111111111111111111111111111111111111111111111111111111111
关于verilog - 如何在verilog中生成一组连续的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23239366/