目录
2. 双状态数据类型:bit, byte, shortint, int, longint
一、 Verilog HDL中的数据类型
Verilog HDL中有19种数据类型:
1. 物理数据类型(与实际硬件电路映射)
(1)线网(net)类型
① wire, tri:标准连线型
② wor, trior:多重驱动时,具有线或特性的连线型
③ wand, trand:多重驱动时,具有线或特性的连线型
④ trireg:具有电荷保持特性的连线型(用于电容节点的建模,缺省初始值为x)
⑤ tri1, tri0:上拉/下拉电阻(若无驱动源,值为1/0)
⑥ supply1, supply0:对电源(VCC)/地(GND)建模,即高电平1/低电平0
(2)寄存器型:reg
(3)存储器型:mem
2. 抽象数据类型(辅助设计和验证)
(1)整型:integer(32位有符号整数)
(2)时间型:time(64位无符号数)
(3)实型:real
(4)参数型:parameter
二、SystemVerilog的内建数据类型
SystemVerilog增加了很多新的数据类型,方便设计和验证:
(1)双状态数据类型:提高仿真器性能,减少内存消耗
(2)队列、动态数组、关联数组:减少内存消耗,自带搜索和分类功能
(3)类和结构:抽象数据结构
(4)字符串
(5)枚举类型:增强代码可读性
1. 逻辑类型:logic
(1)可以由过程赋值语句或连续赋值语句赋值、被门单元和模块驱动
(2)只能有一个驱动(否则编译时会报错)
2. 双状态数据类型:bit, byte, shortint, int, longint
3. 分类
(1)逻辑类型
四值逻辑:net-type(wire等),reg,integer,logic
二值逻辑:bit,byte,shortint,int,longint
* 四值逻辑 → 硬件(硬件设计)
* 二值逻辑 → 软件(验证环境)
(2)符号类型
有符号类型:integer,byte,shortint,int,longint
无符号类型:net-type,reg,bit,logic
4. 注意事项
(1)避免有符号变量、无符号变量的混用
例:
byte signed_vec ; // 8位有符号变量
bit [8:0] result_vec ; // 9位无符号变量
initial begin
signed_vec = 8'h80 ;
result_vec = signed_vec ; // 'h180
result_vec = unsigned'(signed_vec) ; // 'h080
end
(2)把双状态变量连接到被测设计的输出时,应检查未知值的传播
例:
logic [3:0] x_vec = 'b111x ;
bit [2:0] b_vec ;
initial begin
b_vec = x_vec ; // 'b110 (x → 0)
end
Tips: $isunknown( )可以在表达式的任意位出现X或Z时返回1。
5. 类型转换
systemverilog中的类型转换$cast_systemverilog string转int怎么实现-CSDN博客
(1)隐式转换
Verilog对整数和实数类型,或不同位宽的向量之间进行隐式转换。
(2)显式转换
(a)静态转换( ' )
静态转换在编译时完成,不对转换值进行检查。