标签: concatenation verilog signed sign-extension
我需要将符号扩展从4位数转换为32位数。 所以我尝试重复MSB 28时间看起来像这样:
assign x={28'b{a[3]},a[3:0]};
但错误是:
" {" 附近的语法错误
" {"
x定义为:wire [31:0] x ; a定义为:input [3:0]a;
wire [31:0] x ;
input [3:0]a;
是错误实现的连接,还是这个特定错误的原因是什么?
答案 0 :(得分:5)
您需要摆脱'b并添加另一对{}:
'b
{}
assign x = { {28{a[3]}}, a};
请参阅IEEE Std 1800-2012,第11.4.12.1节和第34页;复制运算符"。