我是靠谱客的博主 可靠月亮,最近开发中收集的这篇文章主要介绍[Verilog]Verilog中的位拼接运算符{ } Verilog中的位拼接运算符{ },觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Verilog中的位拼接运算符{ }
引言:在Verilog中,如何給一個多bit(如123bit)的變量賦值呢?該不至於連續寫123bit的1吧?或者換算為16進制數表示?如果1230bit又該怎麼辦?此時就需要位拼接運算。
一、Verilog中的位拼接运算符
虽然Verilog HDL和C语言长得很像,但是在学习Verilog的过程中还是遇到了一些和C完全不同的语法,比如拼接运算符 { }。注意: 这个{ }的使用跟C语言一点关系没有,Verilog语言表示代码区块是用begin-end来表示的。
1.2、位拼接的定义
位拼接运算符{ }用于将两个或多个信号拼接起来,表示一个整体的信号例如一个一位全加器可以将进位输出和结果拼接在一起:
- 例如加法器:
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的值的变化:
二、技巧与注意事项
2.1、使用重复数字法简化拼接表达式的书写
- 例如要表示4bit的w
{4{w}} <=> {w, w, w, w}
- 使用嵌套方式简化书写
{a, {3{b, c}}} <=> {a, b, c, b, c, b, c}
2.2、使用位拼接运算符的注意:
- 位拼接表达式中最好指明每个元素的具体位数,否则默认为32位二进制数
三、通過參數指定位寬
localparam MEM_DUMMY_BIT = 1024;
assign l1_evt_mem_dummy_data = {{(MEM_DUMMY_BIT){1'b0}}, l1_evt_mem_di};
四、參考文獻
4.1、參考鏈接:Link
最后
以上就是可靠月亮为你收集整理的[Verilog]Verilog中的位拼接运算符{ } Verilog中的位拼接运算符{ }的全部内容,希望文章能够帮你解决[Verilog]Verilog中的位拼接运算符{ } Verilog中的位拼接运算符{ }所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复