例如,我有一个输入wire fx
和parameter DATAWIDTH
。
我可以写
吗?wire [DATAWIDTH - 1 : 0] exfx;
assign exfx = {(DATAWIDTH - 1){1'b0}, fx};
将零信号fx扩展为DATAWIDTH?
如果我想要(DATAWIDTH - 1)位1怎么办?还是更复杂的组合?
答案 0 :(得分:3)
你快到了。
assign exfx = {{(DATAWIDTH-1){1'b0}}, fx};
这部分:{(DATAWIDTH-1){1'b0}}
是你的额外零。
然后使用{...}运算符将它们添加到fx。
这是8个零位:{8{1'b0}}
这也是8位,但模式01010101:{4{2'b01}}
计数可以是表达式:{2*DATAWIDTH-1{1'b0}}
您也可以通过重复MS位来使用它来对数字进行符号扩展:
localparam WIDTH = 16;
wire [7:0] A;
wire [WIDTH-1:0] B;
// Works only for WIDTH > 8 !!
assign B = { {WIDTH-8{A[7]}} , A };
答案 1 :(得分:0)
是的,你可以这样做。但是,您的exfx
目前为DATAWIDTH + 1尺寸
简单的分配也有效 -
assign exfx = fx;
它会将fx
值分配给LSB,并在其余部分显示0