简述

在初步接触到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编码不太正经,所以可能理解有较大偏差。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐