byte数组添加数据_SystemVerilog内建two-state 数据类型:高仿真性能,低内存消耗

f1e91997bd09e72c3eab946a4c3ae5f1.png

SystemVerilog在Verilog的基础上添加了许多新的数据类型,以提高仿真器运行时的内存利用率。

SystemVerilog的内建数据类型可以分为two-state数据类型four-state数据类型。

two-state数据类型只有0和1两种状态,而four-state数据类型可以有0,1,X,Z四种状态。

与four-state数据类型相比,two-state数据类型消耗更少的内存,仿真速度更快。

two-state数据类型:

bit:1位two-state数据类型,可以扩展成多位。

byte:8位有符号整数,可用于存储ASCII字符。

shortint:16位有符号整数。

int:32位有符号整数。

longint:64位有符号整数。

four-state数据类型:

logic

reg

wire

integer:32位有符号整数。

time:64位无符号整数。

integer类型可以是有符号或无符号的,对应的运算结果也不一样。默认情况下,byte,shortint,int,integer和longint默认为signed和bit,reg,logic和wire默认为unsigned。

wire和reg

wire数据类型用来建模电路组件之间的硬件连接关系。也就是说,wire类似于电路中的真实电线一样。

reg数据类型保存数据的值,直到将另一个值放在它们上。也就是说,reg就像寄存器组件一样。

integer,real和time

integer变量可以保存从-2^31到(2^31)-1的值。

integer变量声明的语法如下:

      integer integer_variable_name;

real变量存储的是64位的值。实数可以用十进制表示法(例如,14.72)或科学记数法(例如,39e8)指定。

real变量声明的语法如下:

     real real_variable_name;

在仿真开始时,integer和real变量都被初始化为零。

integer a [0:64]; //一个包含65个integer值的数组
       real float_v; //一个存储real值的变量

time

time存储的是64位无符号整数,可以与$time系统任务一起使用以打印仿真时间。

time数据类型不支持综合,只能用来仿真。

time变量声明的语法如下:

       time time_variable_name;

Parameters

Parameters表示常量,因此在运行时修改Parameters的值是非法的。

但是,可以在编译时修改参数以使其具有与变量声明时不同的值。这使得我们可以定制化不同参数的模块实例

parameter变量声明的语法如下:

               parametersize = 16 ;

logic

logic是reg变量从Verilog到SystemVerilog的改进版本。除了作为变量之外,它还可以进行连续赋值,被门和模块驱动。

logic变量声明的语法如下:

          logic a, addr;

two-state变量

two-state数据类型可提高four-state类型的性能和仿真器内存使用率。two-state数据类型是bit,byte,int,shortint,longint,byte。

bit – Unsigned

byte, shortint, int, longint – Signed

unsigned two-state types,

bit              single_bit ;    // unsigned single bit
bit [31:0]     32_bit      ;    // 32-bit unsigned integer

signed two-state types,

int              integer   ;   // 32-bit signed integer
byte            8_bit      ;   //   8-bit signed integer
shortint    16_bit    ;   // 16-bit signed integer
longint        64_bit  ;   // 64-bitsigned integer

unsigned from signedtwo-state types,

int              unsigned integer   ;   // 32-bit unsigned integer
byte           unsigned 8_bit    ;   //  8-bit unsigned integer
shortint      unsigned 16_bit   ;   // 16-bit unsigned integer
longint       unsigned 64_bit   ;   // 64-bit unsigned integer
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值