Verilog 位拼接运算符 { }

虽然Verilog HDL和C语言长得很像,但是在学习verilog的过程中还是遇到了一些和C完全不同的语法,比如拼接运算符 { }

注意: 这个{ }的使用跟C语言一点关系没有,Verilog语言表示代码区块是用begin-end来表示

1. 定义
  • 位拼接运算符{ }用于将两个或多个信号拼接起来,表示一个整体的信号

例如一个一位全加器可以将进位输出和结果拼接在一起:

module fulladder(a, b, cin, sum, cout);
input a, b, cin;
output sum, cout;

assign {cout, sum} = a + b + cin;	// 进位输出与和拼接在一起

endmodule

因为如果a+b+cin产生了溢出位,正好被参与拼接中的cout所接收,就起到了简化表达式的作用

再例如在移位寄存器中有以下的部分:

// 设有寄存器store[7:0]
store <= {0, store[7:1]};

上面的代码通过拼接0和store的左侧7位实现了右移1位的操作
则store的值的变化:

// store 初值为1111_1111
1111_1111
0111_1111
0011_1111
	......
2. 技巧与注意事项

使用位拼接运算符的技巧:

  1. 使用重复数字法简化拼接表达式的书写
{4{w}} = {w, w, w, w}
  1. 使用嵌套方式简化书写
{a, {3{b, c}}} = {a, b, c, b, c, b, c}

使用位拼接运算符的注意

  • 位拼接表达式中最好指明每个元素的具体位数,否则默认为52位二进制数
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值