如何添加网站关键词,如何建一个外贸网站,尽请期待还是敬请期待,制作简历的app免费SystemVerilog文本值和数据类型
1、增强的文本值赋值
给一个向量赋予文本值 在Veirlog语言中#xff0c;一个向量可以很容易地赋值为全00、全x#xff08;不确定#xff09;或全z#xff08;高阻态#xff09;。
parameter SIZE 64;
reg [SIZE-1 :0] data;
data 0;//…SystemVerilog文本值和数据类型
1、增强的文本值赋值
给一个向量赋予文本值 在Veirlog语言中一个向量可以很容易地赋值为全00、全x不确定或全z高阻态。
parameter SIZE 64;
reg [SIZE-1 :0] data;
data 0;//将数据各位置0
data bz;//将数据各位置z
data bx;//将数据各位置x上例中每个赋值都是可扩展的。如果SIZE参数被重新定义如128赋值会自动扩展到data的新长度。但是Verilog并未提供一种将向量赋为全1的方便途径。为了将一个文本值所有位都置1必须指定一个固定长度。
data 64hFFFFFFFFFFFFFFFFF;为了使所有全1赋值都是可扩展的Verilog设计者必须学习编码技巧例如使用一些操作类型来对向量赋全1而不是指定文本值。
data ~0;//0的补码运算
data -1;//2的补码运算给一个向量赋予特殊的文本值 SystemVerilog在两个方面增强了文本值的赋值。第一增加了一个更简单的语法可以指定要赋的值而不用指定进制。第二赋值可以是逻辑1.这个语法指定所有位被赋予什么值该值前面有个硬撇号’。
0将左边的所有位赋为0
1将左边的所有位赋为1
z或者Z将左边的所有位赋为z
x或者X将左边的所有位赋为0注意硬撇号不同于重音符号data b1; //将data的所有位置为1文本值随左手边向量宽度扩量
2、define增强
SystemVerilog扩展了Verilog宏文本替换–define的功能是宏文本可以包含特殊字符。
允许字符串内的宏变量替换字符串内的宏变量替换
Verilog允许在define宏中使用双引号但是双引号内文本变成文本串。也就是说在Verilog中
不可能采用在字符串中嵌入宏变量的文本替换宏创建字符串。
SystemVerilog可以进行宏文本字符串的变量替换这是通过在形成字符串的引号前加重音符号
来实现。//本例文本替换的目的是将所有出现的宏变量v变量替换为实际的变量值data。
define print(v)\$display(variable v %h,v);
print(data);在Verilog中为了不影响表示字符串的双引号字符串内嵌入的引号必须带转义符 \
$display(variable \data\ %h,data);当字符串是包含变量替换的文本替换宏的一部分时对嵌入的双引号仅使用转义符是不够的必须使用 ’ \
define print(v)\$display(variable \v\ %h,v);
print(data);通过宏建立标识符名 使用Verilog的’define不可能通过连接两个或多个文本宏来建立一个新的标识符。原因是创建的标识符名各部分之间总是有一个空格。
在宏文本中“作为不引入空格的分隔符 SystemVerilog提供了一个不引入空格的方法使用两个连接的重音符”,使两个或多个文本宏连接成一个新的名字。 在多次使用一组相似的名字并且无法使用数组的情况下应用可以简化源代码。
需要定义多个名字相似的两态bit变量和wand线网并且将变量持续赋值给线网。
这个bit变量可以使用局部过程赋值而这个wand线网是可以有多个驱动的线逻辑它的一个驱动时两态变量bit
bit类型类似于Verilog的reg类型但是bit类型只能储存两态值而reg类型可储存四态变量。//在无文本替换的源文件中
bit d00_bit; wand d00_net d00_bit;
bit d01_bit; wand d01_net d01_bit;
...//每一位都重复60多次
bit d62_bit; wand d62_net d62_bit;
bit d63_bit; wand d00_net d62_bit;
//使用SystemVerilog对define增强
define TWO_STATE_NET(name) bit name_bit;\
wand name_net name_bit;
TWO_STATE_NET(d00)
TWO_STATE_NET(d01)
...
TWO_STATE_NET(d62)
TWO_STATE_NET(d63)