- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SystemVerilog 语言简介
1. 接口(Interface)
Verilog 模块之间的连接是通过模块端口进行的。为了给组成设计的各个模块定义端口,
我们必须对期望的硬件设计有一个详细的认识。不幸的是,在设计的早期,我们很难把握设
计的细节。而且,一旦模块的端口定义完成后,我们也很难改变端口的配置。另外,一个设
计中的许多模块往往具有相同的端口定义,在Verilog 中,我们必须在每个模块中进行相同
的定义,这为我们增加了无谓的工作量。
SystemVerilog 提供了一个新的、高层抽象的模块连接,这个连接被称为接口(Interface)。
接口在关键字interface 和endinterface 之间定义,它独立于模块。接口在模块中就像一个单
一的端口一样使用。在最简单的形式下,一个接口可以认为是一组线网。例如,可以将PCI
总线的所有信号绑定在一起组成一个接口。通过使用接口,我们在进行一个设计的时候可以
不需要首先建立各个模块间的互连。随着设计的深入,各个设计细节也会变得越来越清晰,
而接口内的信号也会很容易地表示出来。当接口发生变化时,这些变化也会在使用该接口的
所有模块中反映出来,而无需更改每一个模块。下面是一个接口的使用实例:
interface chip_bus; // 定义接口
wire read_request, read_grant;
wire [7:0] address, data;
endinterface: chip_bus
module RAM (chip_bus io, input clk); // 使用接口
// 可以使用io.read_request 引用接口中的一个信号
...
endmodule
module CPU(chip_bus io, input clk);
...
endmodule
module top;
reg clk = 0;
chip_bus a; // 实例接口
// 将接口连接到模块实例
RAM mem(a, clk);
CPU cpu(a, clk);
endmodule
实际上,SystemVerilog 的接口不仅仅可以表示信号的绑定和互连。由于 SystemVerilog
的接口中可以包含参数、常量、变量、结构、函数、任务、initial 块、always 块以及连续赋
值语句,所以 SystemVerilog 的接口还可以包含内建的协议检查以及被使用该接口的模块所
共用的功能。
2. 全局声明和语句
在 Verilog 中,除了一个模块可以作为模块实例引用其他模块外,并不存在一个全局空
间。另外,Verilog 允许任意数目的顶层模块,因此会产生毫无关联的层次树。
SystemVeriog 增加了一个被称为$root 的隐含的顶级层次。任何在模块边界之外的声明和语
句都存在于$root 空间中。所有的模块,无论它处于哪一个设计层次,都可以引用$root 中声
明的名字。这样,如果某些变量、函数或其它信息被设计中的所有模块共享,那么我们就可
以将它们作为全局声明和语句。全局声明和语句的一个使用实例如下:
reg error _flag; // 全局变量
function compare (...); // 全局函数
always @(error_flag) // 全局语句
...
module test;
...
chip1 u1 (...)
endmodule
module chip1 (...);
FSM u2 (...);
always @(data)
error_flag = compare(data, expected);
endmodule
module FSM (...);
...
always @(state)
error_flag = compare(state, expected);
endmodule
3. 时间单位和精度
在Verilog 中,表示时间的值使用一个数来表示,而不带有任何时间单位。例如:
forever #5 clock = ~clock;
您可能关注的文档
最近下载
- Q/SH 0706-2016 金属材料验证性检验导则.pdf VIP
- 明清天主教文化传入中国的文化因素.docx VIP
- 2025年普通高校招生考试(八省联考)英语试题及答案.pdf VIP
- 晚晴簃诗汇--卷一百四十九 .pdf VIP
- 物流项目管理第一章.ppt VIP
- 物流项目管理案例分析.docx VIP
- [黔西南]2024年贵州黔西南州红十字会引进人才笔试历年典型考题及解题思路分析附带答案详解.docx VIP
- 现代数值计算(第3版)课后习题答案解析.pdf
- [黔西南]2024年贵州黔西南州农业农村局引进人才笔试历年典型考题及解题思路分析附带答案详解.docx VIP
- 2024年05月贵州黔西南州农业农村局引进人才笔试历年典型考点解题思路附带答案详解.docx VIP
文档评论(0)