HDLBits (18) — 扩展操作符
2022-01-26 00:15 作者:僚机Wingplane | 我要投稿
本题链接:
https://hdlbits.01xz.net/wiki/Vector4
拼接操作符允许将向量拼接在一起以形成更大的向量。 但有时您会希望将同一向量多次拼接在一起,并且执行诸如 assign a = {b,b,b,b,b,b}; 之类的乏味操作。 扩展操作符允许重复一个向量并将它们拼接在一起:
{num{vector}}
这将vector复制 num 次。 num 必须是一个常数。 这两个大括号都是必需的。
例子:

题目
一个常见使用扩展操作符的地方是将较小的数字符号扩展为较大的数字,同时保留其符号值。 它是通过将较小数字的符号位(最高有效位)复制到左侧来完成的。 例如,将 4'b0101 (5) 符号扩展至 8 位会产生 8'b00000101 (5),而将 4'b1101 (-3) 符号扩展至 8 位会产生 8'b11111101 (-3)。
构建一个 8 位数字符号扩展为 32 位的电路。 这需要拼接 24 个符号位副本(即复制 bit[7] 24 次),之后才是这 8 位数字本身。

答案

拼接操作符用大括号 {,} 来表示,用于将多个操作数(向量)拼接成新的操作数(向量),信号间用逗号隔开。
拼接符操作数必须指定位宽,常数的话也需要指定位宽。
这里所说的扩展操作符可以看作是包含了我们所说的拼接操作符。
参考内容:
2.4 Verilog 表达式 | 菜鸟教程:
https://www.runoob.com/w3cnote/verilog-expression.html