网上书城网站开发方案外贸网站的特色
在systemverilog中,主要包含以下数据类型:
- 4值类型
 - 2值类型
 - 数组
 - 字符串
 - 结构体和联合体
 - 枚举
 - 自定义类型
 

- 无符号数:无符号数的符号不使用任何标志,即无符号数只能存储正数。无符号二进制数的范围从 0 到 
((2^n) - 1),n 表示位数。 - 有符号数:通过有符号数中的符号标志来区分正值和负值。有符号位的零有两种可能表示形式(正 (0) 和负 (1))。有符号二进制数的范围从 
-2^(n-1)到2^(n-1)-1,n表示位数。有符号二进制数在计算机系统中,一般用补码来表示。 
4 值数据类型
| 序号 | 数据类型 | 2值/4值 | 位 | 有符号/无符号 | 
|---|---|---|---|---|
| 1. | reg | 4 | >=1 | unsigned | 
| 2. | wire | 4 | >=1 | unsigned | 
| 3. | logic | 4 | >=1 | unsigned | 
| 4. | integer | 4 | 32 | signed | 
| 5. | time | 4 | 64 | unsigned | 
| 6. | real | 4 | 64 | unsigned | 
| 状态 | 描述 | 
|---|---|
| 0 | 状态 0 | 
| 1 | 状态 1 | 
| x or X | 未知状态 (与 reg 有关) | 
| z or Z | 高阻态 (与 wire 有关) | 
- reg 变量用于对锁存器、触发器和存储器等存储元件进行建模,它存储一个值并用于程序赋值。 reg 的默认值为 x。
 - wire 是一种 Verilog 数据类型,用于连接元件以及连接由单个门或连续分配驱动的网络。导线的默认值为 z。
 - Logic 类型是 4 值类型,可以取值 0、1、x 和 z。Logic 类型,可以用来代替 wire 和 reg,因为 wire 数据类型没有多个 driver。默认情况下 Logic 类型是无符号的,其初始值为 x。z。Logic 类型可以在过程块和连续赋值语句中驱动。
 - 整数是 4 态数据类型,整数可以是 0,1,x 和 z,表示 32 位有符号数。整数的默认值为 x。整数可以保存范围从 -2^31 到 (2^31)-1 的值。
 - time 是用于模拟时间测量的特殊数据类型。它是 4 值类型,表示 64 位无符号整数,可以与 $time 系统函数结合使用来保存当前的仿真时间。
 - real 是以 64 位实数实现的实数数据类型。实数可以用十进制记数法 (4.43) 或科学记数法 (42e8) 指定。 real 数据类型的默认值为 0。
 
2 值数据类型
| 序号 | 数据类型 | 2值/4值 | 位 | 有符号/无符号 | 
|---|---|---|---|---|
| 1. | bit | 2 | >=1 | unsigned | 
| 2. | byte | 2 | 8 | signed | 
| 3. | shortint | 2 | 16 | signed | 
| 4. | int | 2 | 32 | signed | 
| 5. | longint | 2 | 64 | signed | 
- bit 可以是 0 或 1,代表单个位。bit 数据类型的默认值为 0。
 - byte 可以是 0 或 1,表示 8 位有符号整数。byte 的默认值为0。
 - shortint 可以是 0 或 1,表示 16 位有符号整数。 shortint 的默认值为 0。
 - int 可以是 0 或 1,表示 32 位有符号整数。 int 的默认值是 0。
 - longint 可以是 0 或 1,表示 64 位有符号整数。 longint 的默认值为 0。
 
数据类型转换
转换意味着将一种数据类型转换为另一种数据类型。 转换有两种类型:
- 静态转换
 - 动态转换
 
静态转换 : 转换发生在编译时,不会出现任何运行时错误。静态转换仅适用于固定数据类型。它不适用于面向对象的编程概念。
语法 :data_type'(variable or expression or value);
动态转换 : 转换发生在运行时。如果转换无效,则会报告错误。动态转换用于将分配的值转换为通常无效的变量。 $cast 是系统方法。 $cast 可以是函数或任务。
语法 :$cast(destination_variable, source_expression_or_variable);
枚举 enum
枚举数据类型定义一组命名值。
- 除非指定为其他类型,否则枚举类型存储为“int”类型。
 - 此类型会自动为列表中的每个名称赋予唯一值。
 - 值默认为“int”类型,从 0 开始,然后递增 1。
 - 如果没有为名称指定值,它将获取列表中前一个名称的值并加 1。
 
语法 :
enum enum_base_type(optional) {<enum_name_declaration> = constant_expr(optional)...}<enum_type_identifier>;
枚举函数:
| 序号 | 函数 | 描述 | 
|---|---|---|
| 1 | first() | 返回枚举的第一个成员的值 | 
| 2 | last() | 返回枚举最后一个成员的值 | 
| 3 | next() | 返回枚举的下一个成员的值 | 
| 4 | prev() | 返回枚举中前一个成员的值 | 
| 5 | num() | 返回给定枚举中的元素数量 | 
| 6 | name() | 返回给定枚举值的字符串表示形式 | 
typedef 枚举数据类型
在 typedef 中可以给出类型名称,以便可以在许多地方使用相同的类型。
语法 :
typedef enum enum_base_type(optional) {<enum_name_declaration> = constant_expr(optional)...} <enum_type_identifier>;
String
字符串类型是可变长度的有序字符集合。字符串的长度是集合中字符的数量。
- 字符串的内存空间是动态分配的。
 - 字符串变量的索引应从 0 到 N–1(其中 N 是字符串的长度)进行编号,以便索引 0 是字符串的第一个(最左边)字符,索引 N–1 是最后一个(最右边)字符字符串的。
 - 未初始化或空字符串用特殊值 "" 表示。空字符串的长度为 0。
 
| 操作 | 操作符 | 描述 | 
|---|---|---|
| 等于 | str1==str2 | 如果两个字符串相等则返回 1,否则返回 0 | 
| 不等 | str1!=str2 | 如果两个字符串不相等则返回 1,如果相等则返回 0 | 
| 比较 | str1 < str2, str1 <= str2, str1 > str2, str1 >= str2 | 如果相应条件为 true,则返回 1;如果为 false,则返回 0 | 
| 级联 | {str1, str2, …, strN} | 所有字符串将连接成一个结果字符串 | 
| 复制 | {N{str}} | 将字符串复制 N 次 | 
| 索引 | str[index] | 返回一个字节,即给定索引处的 ASCII 代码。如果给定索引超出范围,则返回 0 | 
| 函数 | 描述 | 
|---|---|
| str.len() | 返回字符串的长度。 | 
| str.putc() | 修改字符串的一个字符 | 
| str.getc() | 返回一个字符。 | 
| str.tolower() | 返回字符串的小写字母。 | 
| str.toupper() | 返回字符串的大写字母。 | 
| str.compare(s) | 以 ascii 值形式返回字符串比较结果。 | 
| str.icompare(s) | 以 ascii 值的形式返回不区分大小写的字符串比较结果。 | 
| str.substr(i,j) | 返回主字符串的子字符串。 | 
