SystemVerilog文本值和数据类型

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 = 64'hFFFFFFFFFFFFFFFFF;

为了使所有全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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从IC设计来看Trace32的用途

通常的芯片设计,在开发阶段都会先在一个包含硬IP核的FPGA上进行,通过使用硬件描述语言HDL来对FPGA进行编程,这样既能加快设计速度又能够节省成本,最重要的是可以在芯片开发阶段发现可能存在的HW问题。一般的设计思路是首先将各个外…

使用GDI+保存图像为8bpp的灰度图像

使用GDI保存图像为8bpp的灰度图像,GDI真的有些特殊。。。。。 // Greyscale conversion #define GREY(r, g, b) (BYTE)(((WORD)r * 77 (WORD)g * 150 (WORD)b * 29) >> 8) // .299R .587G .114B //#define GREY(r, g, b) (BYTE)(((WORD)r * 169 (WORD)…

对象类型和数据类型

对象类型和数据类型 Verilog数据类型 Verilog语言具有针对硬件的变量类型和线网类型。这些类型具有特定的仿真和综合语义,表示芯片或系统中的实际连接行为。 (1)Verilog的reg、integer和time变量的每一位都有四种逻辑:0、1、Z、X…

尺度空间(Scale space)理论

尺度空间方法的基本思想是:在视觉信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得不同尺度下的视觉处理信息,然后综合这些信息以深入地挖掘图像的本质特征。尺度空间方法将传统的单尺度视觉信息处理技术纳入尺度不断变化的…

[转] Windows CE 6.0 启动过程分析

看到这么好的文章,小郭觉得不转载就是天理不容,转了!!!! *************************************************************************************** 在Windows CE 6.0中,内核(Ke…

数据类型规则的放宽

数据类型规则的放宽 SystemVreilog放宽了使用变量的限制 SystemVreilog放宽了变量的使用规则,大大简化了模型中数据类型的使用。在SystemVreilog中共,任何数据类型的变量都可以通过下列方式赋值,但只能采用其中的一种方式。 (1&a…

真实,让文学回到原点:关于非虚构写作的思考

任何一种文学主张,其实都是先有实践,而后再有理论和命名。“非虚构写作”也是如此。如果大胆猜想,“非虚构写作”可能要追溯到远古的口传心记和结绳记事。当时的人类记录下身边发生的事情,应该就是非虚构,而口头讲述的…

4位16色灰度图像处理

定义几个辅助的宏,如下。 // 拆分合并BYTE #define HIBITS(w) ((BYTE)((((BYTE)(w)) >> 4) & 0xf)) #define LOBITS(w) ((BYTE)(((BYTE)(w)) & 0xf)) #define MAKEBITS(a, b) ((BYTE)(((BYTE)(((BYTE)(a)) & 0xf)) | ((…

[转] 常见WinCE启动失败原因分析

*********************************************** 一般情况下,为设计中的IC开发SW方案,难免会碰到Bootloader/EBoot/OS启动失败的情况,对于Bootloader和EBoot,由于源代码很少,直接使用Trace32调试是最佳方法&#xff…

树莓派安装mariadb redis

安装软件 sudo apt install mariadb-server mariadb-client sudo apt install redis 二. 配置 1, mariadb 配置 配置远程访问 maridb configuration: sudo mysql_secure_installation # 设置root密码 vim.tiny mariadb.conf.d/50-server.cnf # 设置去除本地绑定 #bind-addre…

Google云服务降价,整合持续集成工具,支持Windows和托管虚拟机

本周二,Google举行了云平台的现场活动(点击查看视频记录),展示了一系列新特性、改进和全新定价模型。\u0026#xD;\n定价\u0026#xD;\nGoogle认为,云计算价格应该跟随硬件领域的摩尔定律,而且在过去数年间硬件…

静态和自动变量

静态和自动变量 自动变量–也可以称为动态变量,主要是用来描述在测试程序、抽象系统级、交易级或总线功能模型中的验证程序。自动变量的另一个用途就是编写可重入的任务,当一个任务的前一次调用仍然在执行时,可以再次对其调用。 自动变量也允…

图像拉普拉斯金字塔融合(Laplacian Pyramid Blending)

转摘的&#xff0c;修改了下程序&#xff0c;图像融合看不太懂 。。。。http://blog.csdn.net/abcjennifer/article/details/7628655#comments // 转摘的别人的程序 // #include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h>…

[转]GIS简介

************************************************** 最近论坛上经常有人讨论GIS&#xff0c;特意从别人的blog中转了一篇GIS简介的帖子************************************************** 地理信息系统(GIS,Geographic Information System)是一门用计算机来研究地理的学科…

debug设计

debug设计 会用到debug设计的阶段 (1)RTL级设计仿真 (2)实施后的设计模拟 (3)在系统调试 使用网表插入调试探测流动 (1)最高级别是一个简单的向导,用于创建和配置集成逻辑分析仪 (ILA)内核会根据选定的一组网络自动进行调试。 (2)下一级是主调试窗口,允许控制单个…

ASA 9.21 in Vmware Workstation 10

There is old post “ASA 8.02 in Vmware Workstation “ in this blog posted on Dec 2011. Anothe post “How to Make your own ASA 8.42 in VMware”. Here are all related posts in this blog: ASA 8.02 in Vmware WorkstationASA 8.42 in VMware WorkstationASA 9.21 i…

MMU及PTS说明

MMU与PTS表格 最近在FPGA上仿真调试Virgo&#xff08;基于ARM11的一款处理器&#xff09;芯片。MMU部分总是出错&#xff0c;具体的现象是查看物理地址和虚拟地址的映射时候芯片经常会挂掉。先是怀疑MMU的寄存器配置有问题&#xff0c;后来又怀疑MMU映射使用的PTS表格有问题&a…

bug?VS2010中CImageList::DrawIndirect总是返回失败

//VS2010 #if _MSC_VER > 1600pImageList->Draw(pDC, nImage, point, ILD_NORMAL); #elseSIZE size;size.cx rect.Width() < sizeImage.cx ? rect.Width() : sizeImage.cx;size.cy rect.Height() < sizeImage.cy ? rect.Height() : sizeImage.cy;pImageList-&g…

VHDL基本结构

VHDL基本结构 (1)实体(Entity):描述所设计的系统的外部接口信号,定义电路设计中得到所有的输入和输出端口。 (2)结构体(Architecture):描述系统内部的结构和行为 (3)包集合(Package):存放各设计模块能共享的数据类型、常数和子程序等; (4)配置(Configurat…

Source Code Collection for Reproducible Research

转自&#xff1a;http://www.csee.wvu.edu/~xinl/source.html “It doesnt matter how beautiful your theory is, it doesnt matter how smart you are. If it doesnt agree with experiment, its wrong” - Richard Feynman "As a method for finding things out, scien…