Verilog全新。
简单的32位寄存器:
reg32 Reg_32 (
.in(valueA), // input 32 bits
.clock(clk),
.reset(rst),
.out(valueB) // output 32 bits
但是,ValueA定义为10位线[9:0]。
valueA是否需要22个扩展0位?
即:
.in({22b'0,valueA}), // 22 bits of 0 + value of wire [9:0]
或编译器是否在ModelSim中执行此操作?
答案 0 :(得分:4)
我怀疑在大多数情况下都是必要的。但是,为了避免由于编译器不同而导致的不可预测行为,将值明确填充到正确的宽度会更安全。我会使用复制串联(例如IEEE Std 1800-2012中所述):
.in ({ {22{1'b0}}, valueA}),