system verilog笔记
更新时间:2023-11-09 05:04:01 阅读量: 教育文库 文档下载
- system推荐度:
- 相关推荐
第三章 数据类型
两态SystemVerilog数据类型,16位有符号整数 两态SystemVerilog数据类型,32位有符号整数 两态SystemVerilog数据类型,64位有符号整数
两态SystemVerilog数据类型,8位有符号整数或ASCII码字符 两态SystemVerilog数据类型,用户定义的向量尺寸 四态SystemVerilog数据类型,用户定义的向量尺寸 四态Verilog-2001数据类型,用户定义的向量尺寸 四态Verilog-2001数据类型,32位有符号整数 四态Verilog-2001数据类型,64位无符号整数
3.3 整数数据类型 shortint int longint byte bit logic reg integer time
3.3.1 integral类型
integral指的基本的整数数据类型、压缩数组、压缩结构体、压缩联合体、枚举类型和时间类型。
3.3.2 两态(两值)与四态(四值)数据类型
具有未知值(X)和高阻值(Z)的类型称为四态类型,包括logic、reg、integer和time。其它不具有未知值及高阻值的类型称为两态类型,例如bit和int。
int和integer的区别是:int是两态逻辑而integer是四态逻辑。四态值需要一个额外的位来编码X和Z状态。两态数据类型的仿真速度更快一些,而且占用更少的内存,因而在某些设计风格中成为首选数据类型。 3.3.3 有符号与无符号数据类型
整数类型使用整数算术,并且可以是有符号的也可以是无符号的。这些会影响某些操作码的含义,例如“<”等
int unsigned ui; int signed si;
缺省情况下,byte、shortint、int、integer和longint是有符号的。bit、reg、logic以及这几种类型的数组在缺省情况下是无符号的。
注意:signed关键字是Verilog-2001的一部分。unsigned关键字在Verilog-2001中是保留关键字,但未被使用。 3.4 real与shortreal数据类型
real1数据类型来自于Verilog-2001,与C语言中的double数据类型相同。shortreal数据类型是一个SystemVerilog数据类型,与C语言中的float数据类型相同。
3.5 void数据类型
void数据类型代表数据不存在。这种类型可以用作函数的返回类型,表示没有返回值。这种数据类型还可以用于标签联合体的成员。
3.6 chandle数据类型
chandle数据类型的声明语法如下:
chandle variable_name;
其中variable_name是一个有效的标识符。chandle类型的变量总是被初始化成null值,它在C语言中具有0的值。chandle类型的使用是非常受限的,仅仅在下列情况下能够合法使用:
? chandle变量仅仅能够使用下列操作符:
o 与另外一个chandle变量或与null进行相等(==)和不等(!=)操作; o 与另外一个chandle变量或与null进行条件相等(===)和条件不等(!==)操作(与==和!=具有相同的语义);
? 可以作为一个布尔值进行检测,如果chandle变量为null则为0,否则为1。 ? chandle变量仅能执行如下的赋值操作:
o 赋值为另外一个chandle变量; o 赋值成null;
? chandle变量可以插入到联合数组(参看4.9节)中,但这样的联合数组中的任意两个条目的相对顺序都是变化的,甚至在相同工具的两次连续运行中也是如此; ? 可以在类中使用chandle;
? chandle可以作为参数传递给函数或任务; ? chandle可以从函数中返回; 在下列情况中chandle的使用是受限的:
? 端口中不应该有chandle数据类型;
? chandle不能被赋值到其它任何数据类型的变量; ? 在下列情况中不能使用chandle:
o 除了上面说明的表达式外的任何其它表达式; o 作为端口;
o 在敏感列表或事件表达式中; o 在连续赋值语句中; o 在联合体中; o 在压缩类型中; 3.7 string数据类型
SystemVerilog包含一个string数据类型,它是一个可变尺寸、动态分配的字节数组。SystemVerilog还包含许多特殊的方法来对字符串进行操作。
Verilog也支持字符串文本,但这种支持仅仅是在词法级别上。在Verilog中,字符串文本表现为一个具有宽度为8位整数倍的压缩数组。当一个字符串文本被赋值到一个具有不同尺寸的integral类型的压缩数组变量的时候,它或者被截短到变量的尺寸或者必要时在左侧填补0。
在SystemVerilog中,字符串文本的表现行为与Verilog相同。然而,SystemVerilog还支持string数据类型,我们可以将一个字符串文本赋值到这种数据类型。当使用string数据类型来替代一个integral变量的时候,字符串可以具有任意的长度并且不会发生截短现象。当文本字符串赋值到一个string数据类型或者在一个使用string类型操作数的表达式中使用的时候,它会被隐式地转换成string数据类型。
string类型的变量可以从0到N-1(数组的最后一个元素)进行索引,而且可以作用于一个特殊的空字符串:\。从一个字符串读取一个元素会产生一个字节。
FPGA技术网提示:
string类型变量的索引从字符串的左侧开始排列,例如:对字符串\,索引0对应\,索引1对应\,依此类推...。
string类型变量的声明语法如下:
string variable_name [= initial_value];
这里的variable_name是一个有效的标识符,可选的initial_value可以是一个字符串文本也可以是一个空字符串(\)。例如:
string myName = “John Smith”;
如果在声明中没有指定初始值,变量会被初始化成空字符串(\)。
SystemVerilog提供了一组操作符,这些操作符可以用来处理字符串变量和字符串文本的组合。string数据类型的基本操作符在表格3-2中给出。
一个字符串文本可以被赋值到一个string或integral类型的变量。如果它们的尺寸不同,字符串文本会进行右调整,并且在必要的时候在左侧进行截短或者在左侧填补0。例如:
byte c = \; // 将c赋值为”A”
bit [10:0] a = \; // 将a赋值为’b000_0100_0001 bit [1:4][7:0] h = \; // 将h赋值为”ello”
一个string、字符串文本、或压缩数组可以被赋值到一个string变量。string变量可以增长或缩减以便容纳压缩数组。如果压缩数组的尺寸(以位为单位)不是8的整数倍,那么压缩数组会在左侧填入0。例如:
string s1 = \; // 将s1设置为\ bit [11:0] b = 12'ha41;
string s2 = b; // 将s2设置为'h0a41
第二个例子:
reg[15:0] r; integer i = 1; string b = \; string a = {\,b}; r = a; // OK
b = r; // OK (隐式强制类型转换,可以发布一个警告) b = \; // OK b = {5{\}}; // OK
a = {i{\}}; // OK(非常量复制) r = {i{\}}; // 无效(非常量复制)
a = {i{b}}; // OK a = {a,b}; // OK a = {\,b}; // OK
r = {\,\}; // 产生\,\被转换成8'b0 b = {\,\}; // 产生\,\是空字符串 a = {a,b}; // OK
a[0] = \; // OK, 与a[0] = \相同
表格 3-2:字符串操作符
操作符 Str1==Str2
语义
相等。检查两个字符串是否相等。如果相等则结果为1,否则结果为0。两个字符串的类型可以都是string,或者其中一个为字符串文本。如果两个均为字符串文本,那么表达式与Verilog中对整数类型的相等操作符相同。可以使用空字符串(\)。 不等。==的逻辑否。
比较,关系操作符。使用两个字符串的词典编撰顺序比较,如果对应的条件为真则返回1。比较类似于ANSI C的strcmp函数(或字符串比较方法)(以词汇顺序),并且包含嵌入的空字节。两个操作数可以都是string类型,或者其中一个是字符串文本。 串联。每一个操作符都可以是string类型或一个字符串文本(它会被隐式地转换成string类型)。如果至少一个操作数为string类型,那么表达式计算成串联字符串并且具有string的类型。如果所有的操作数都是字符串文本,那么表达式的行为就像Verilog中integral类型的串联一样。如果结果接着使用在一个调用string类型的表达式中,那么它被隐式地转换成string类型。
Str1!=Str2 Str1
{multiplier{Str}} 复制。Str可以是string类型或者是字符串文本。multiplier必须
是integral类型并且可以是非常量。如果multiplier是非常量或者Str是string类型,那么结果就是包含N个Str串联的字符串,其中N由multiplier指定。如果Str是一个文本并且multiplier是常量,那么表达式的行为就类似于Verilog中的数值复制(如果结果被使用在另一个调用string类型的表达式中,那么它被隐式地转换成string类型)。 Str[index]
索引。返回一个字节,值为给定索引的ASCII码。索引的范围从0到N-1,其中N为字符串中字符的数目。如果给定的索引超出了范围,那么返回0。在语义上等价于Str.getc(index),参见3.7.3节。
圆点(.)操作符用来调用字符串的一个特定方法。
Str.method(…)
SystemVerilog还包含许多特殊的方法来对字符串进行操作。这些方法使用内建的方法符号。这些方法将在接下来的几节中描述
3.7.1 len()
function int len()
? str.len()返回字符串的长度,也就是字符串中字符的数目(不包括任何终结字符)。
? 如果str是\,那么str.len()返回0。 3.7.2 putc()
task putc(int i, string s) task putc(int i, byte c)
? str.putc(i, c)将str中的第i个字符替换成指定的integral值; ? str.putc(i, s)将str中的第i个字符替换成s中的第一个字符; ? s可以是赋值为一个字符串的任何表达式;
? putc不会改变str的尺寸,如果i < 0或i >= str.len(),那么str不会发生改变;
注意:str.putc(j, x)在语义上等价于str[j] = x。
正在阅读:
system verilog笔记11-09
浴室装修注意事项12-31
2015年中国传媒大学《古代汉语》研究生考试大纲、考研重点笔记资料07-24
2008-2010年全国计算机二级c语言真题及答案03-02
苏州历史老街平江路 - 图文09-08
类疾病的生化和分子遗传学09-01
测量学试题库(含答案)07-06
拥抱春天作文350字07-09
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- verilog
- 笔记
- system
- 中考语文 阅读一百天68(含解析)
- 数控技术复习题
- 第十四章 浆膜腔积液检查习题
- 水土保持总结报告 - 图文
- 年产10万吨热塑性酚醛树脂的工厂设计
- 旅游业的宏观环境分析
- 现代汉语下册的部分课后习题
- 人教版五年级语文上册总复习(一到三单元基础题)
- 财务管理第五章营运资金管理习题
- 面向对象程序设计(java)题库
- 51单片机的串行通讯程序
- 小学美术人美版 四年级下册 第3课《快乐的人》优质课公开课教案教师资格证面试试讲教案
- 经济责任审计资料清单
- 小学科学5年级下册《2脑与神经》
- 江高镇总体规划说明书
- 高考物理专题10 交变电流
- c语言课程设计报告 - 数独
- 县长在财政工作会议讲话
- (2,1,2)卷积码的译码设计(0)
- 数值分析-Gauss消去法