返回介绍

3.1 简介(一般信息)

发布于 2020-09-09 22:55:43 字数 1040 浏览 1156 评论 0 收藏 0

为了能够平滑地从/向C语言移植,SystemVerilog支持C语言内建的数据类型,并具有C编译器给出的含义。然而,为了避免int和long数据类型的重复所带来的混淆,在SystemVerilog中,int是32位的,longint是64位的。C语言中float类型在SystemVerilog中称为shortreal,这样就不会与Verilog-2001的real类型混淆。

Verilog-2001具有线网数据类型,它具有0、1、X或Z的值,加上7种强度,具有120个值。Verilog-2001还具有诸如reg(具有0、1、X或Z这四种值)一类的变量数据类型。它们不仅仅是不同的数据类型,而且在使用上也是不同的。SystemVerilog加入了另外一个四值数据类型,这个数据类型被称为logic(参见3.3.2节和5.6节)。

SystemVerilog加入了字符串、chandle和class数据类型,并且增强了Verilog的event数据类型。

Verilog-2001通过使用reg数据类型提供了任意固定长度的算术运算。reg类型的各个位可能具有X或Z的值,然而相对于一个位数组来讲,因为这种数据类型的操作符计算必须检查X和Z,并且需要两倍的数据存储空间,它相对来说缺乏效率。SystemVerilog加入了一个bit数据类型,这种数据类型仅具有0或1两种值。参见3.3.2节中有关两态数据类型的内容。

在从一个较少位数向较多位数自动转换的时候,如果是无符号数则会引起0扩展,如果是有符号数则会引起符号扩展,并且这种情况不会引起警告信息。而从一个较多位数向较少位数自动转换的时候,则会引起警告信息。在logic和bit之间自动转换的时候不会引起警告信息。在从logic值转换到bit值的时候,1转换成1,其它值均转换成0。

typedef可以引入用户定义的数据类型,用户定义的数据类型必须在其使用之前定义。数据类型还可以作为模块或接口的参数,这就使得他们可以像面向对象编程中的类模板一样使用。一个例程在写入的时候可以反转任何数组中元素的顺序,而这在C语言和Verilog中是不可能的。

由于结构体标签和联合体标签具有分离的命名空间,因此它们在C语言中较为复杂。SystemVerilog遵从C的语法,但没有可选的结构体标签。

参见第四章中有关数组的说明。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文