这是有问题的示例行为 Verilog 代码
module constant;
reg [7:0] foo;
initial begin
foo = 1'bz;
$display("%H", foo);
end
endmodule
伊卡洛斯 Verilog 给了我
$ iverilog -o constant constant.v
$ ./constant
0Z
但是,根据这个网站(以及我正在学习的 FPGA 课程的讲师),
如果 number 小于 size 常数,那么它将用零填充到左侧。如果指定数字的最高有效位具有未知 (x) 或高阻抗 (z) 值,则该值将用于向左填充。
在这种情况下,输出应该是ZZ
而不是0Z
. 我很确定这是由于规范的变化(可能是ZZ
在 Verilog 1995 和0Z
Verilog 2001 中,或其他),但是导致每种行为的标准是什么?我曾尝试在线搜索规范,但它们似乎不是免费提供的,例如需要购买或订阅的规范。
作为奖励,我在哪里可以找到 Verilog 各种规格的变化摘要?