简要描述;简介
当我第一次接触Verilog的括号时,经常将其与各种类型的matlab矩阵(括号)、[括号]、{括号}混淆。
括号在Verilog中的应用
在Verilog语言中,那些括号在估计优先级中的作用被删除了(一般只使用括号加上优先级)。
(括号)主要用于功能模块的参数传递php 中括号,比如自定义函数fuc_name前面的括号内定义的输入输出,或者在一些if、always语句前面的括号内添加判断信息(其实就是函数参数)。
[方括号]用来声明位数,比如定义reg信号的位数,或者调用某个信号的位数:
reg [7:0] CPU_RESET_delay = { 8{1'b1} } ;
{大括号} 或参见上面的示例:
1. { } 表示拼接,{第一,第二...};
2. {{ }}表示复制,{4{a}}相当于{a,a,a,a};
所以 { 8{1'b1} } 表示将 8 个 1 拼接在一起,即 8'b11111111。
与matlab比较
matlab上面的(括号)用于引用或声明字段的元素,[方括号]用于存储矩阵和向量,用逗号或空格分隔,用分号换行,{大括号}用于分配或引用单元格类型链表,例如:
>> clear all;
>> a=cell(2,2)
a=
[] []
[] []
>> a{1,2}=[1,2]
a =
[] [1,2]
[] []
上例中单元格类型链表的引用也必须用{大括号}调用,例如a{1,2} = [1,2]。
我个人不使用matlab,都是用于图像处理的php 中括号,而且我觉得matlab编码也不是很认真,所以理解上可能会有很大的误差。