【Systemverilog总结】Part1——数据类型

合并数组和非合并数组

(1) 合并数组

存储方式是连续的,中间没有闲置空间。

例如,32bit的寄存器,可以看成是4个8bit的数据,或者也可以看成是1个32bit的数据。

表示方法:

数组大小和位,必须在变量名前指定,数组大小必须是【msb:lsb】

Bit[3:0] [7:0] bytes;

(2) 二维数组和合并数组识别

合并数组: bit [3:0] [7:0] arrays; 大小在变量名前面放得,且降序

二维数组: int arrays[0:7] [0:3] ; 大小在变量名后面放得,可降序可升序

位宽在变量名前面,用于识别合并和非合并数组,位宽在后面,用于识别数组中元素个数。

(3) 非合并数组

一般仿真器存放数组元素时使用32bit的字边界,byte、shortint、int都放在一个字中。

非合并数组:字的地位存放变量,高位不用。

表示方法:

Bit [7:0] bytes;

(4) 合并数组和非合并数组的选择

1)当需要以字节或字为单位对存储单元操作。

2)当需要等待数组中变化的,则必须使用合并数组。例如测试平台需要通过存储器数据的变化来唤醒,需要用到@,@只能用于标量或者合并数组。

Bit[3:0] [7:0] barray[3]  ; 

表示合并数组,合并数组中有3个元素,每个元素时8bit,4个元素可以组成合并数组

可以使用barry[0]作敏感信号。

动态数组

随机事物不确定大小。

使用方法:数组在开始是空的,同时使用new[]来分配空间,在new[n]指定元素的个数。

Int dyn[];
   Dyn = new[5];     //分配5个元素空间
          Dyn.delete() ;     //释放空间

队列

在队列中增加或删除元素比较方便。

关联数组

当你需要建立一个超大容量的数组。关联数组,存放稀疏矩阵中的值。

表示方法:

采用在方括号中放置数据类型的形式声明:

Bit[63:0] assoc[bit[63:0]];

常量

1)Verilog 推荐使用文本宏。

好处:全局作用范围,且可以用于位段或类型定义

缺点:当需要局部常量时,可能引起冲突。

2)Parameter

作用范围仅限于单个module

3)Systemverilog:

参数可以在多个模块里共同使用,可以用typedef 代替单调乏味的宏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值