Verilog编程技巧之(括号)、[中括号]、{大括号}用法(对比matlab)

简述

在初步接触到Verilog的括号时经常会将其和matlab矩阵的各种(括号)、[中括号]、{大括号}搞混。

Verilog中括号的应用

Verilog语言中,除去这些括号在计算优先级中的作用(一般也只会用到小括号加优先级)。

(括号)主要用于函数模块传参,例如自定义函数 fuc_name后面括号内定义的input、output,或者一些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里面(括号)用于引用或声明数组的元素,[中括号]用来存储矩阵和向量,逗号或者空格隔开、分号换行,{ 大括号}用于cell型的数组的分配或引用,例如:

>> clear all;
>> a=cell(2,2)

a=

		[]		[]
		[]		[]

>> a{1,2}=[1,2]

a =

		[]		[1,2]
		[]		[]

上例中cell型数组的引用也必须用{大括号}才能调用,例如a{1,2} = [1,2]。

matlab个人用的也不算多,全是做图像处理用到的,而且感觉matlab编码不太正经,所以可能理解有较大偏差。

猜你喜欢

转载自blog.csdn.net/weixin_49617016/article/details/108443988
今日推荐