- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 常用编译预处理语句 编译预处理的功能 “编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令。 Verilog HDL编译系统通常先对这些特殊的命令进行“预处理”,然后将预处理的结果和源程序一起在进行通常的编译处理。 在Verilog HDL语言中,预处理命令以符号“`”开头。 有效作用范围为定义命令之后到本文件结束或到其它命令定义替代该命令之处。 常用的`define、`include、`timescale 1、宏定义 `define 用一个指定的标识符(即名字)来代表一个字符串, `define 标识符(宏名) 字符串(宏内容) 如:`define signal string 这种方法使用户能以一个简单的名字代替一个长的字符串,也可以用一个有含义的名字来代替没有含义的数字和符号,因此把这个标识符(名字)称为“宏名”; 在编译预处理时将宏名替换成字符串的过程称为“宏展开”。 例: `define WORDSIZE 8 module reg[1: `WORDSIZE] data; //这相当于定义reg[1:8] data; 关于宏定义的说明: 1) 宏名可用大写字母、小写字母表示。建议使用大写字母,以与变量名相区别。 2) `define命令可以出现在模块定义里面,也可以出现在模块定义外面。 宏名的有效范围为定义命令之后到原文件结束。通常,`define命令写在模块定义的外面在此程序内有效。 3) 在引用已定义的宏名时,必须在宏名的前面加上符号“`” 。 4) 使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。 5) 宏定义不作语法检查。只有在编译已被宏展开后的源程序时才报错。 6) 宏定义不是Verilog HDL语句,不必在行末加分号。如果加了分号会连分号一起进行置换。 例:module test; reg a, b, c, d, e, out; `define expression a+b+c+d; assign out = `expression + e; ... endmodule 经过宏展开以后,该语句为: assign out = a+b+c+d;+e; 7) 在进行宏定义时,可以引用已定义的宏名,可以层层置换。 例:module test; reg a, b, c; wire out; `define aa a + b `define cc c + `aa assign out = `cc; endmodule 这样经过宏展开以后,assign语句为 assign out = c + a + b; 8) 宏名和宏内容必须在同一行中进行声明。如果在宏内容中包含有注释行,注释行不会作为被置换的内容。 例: module `define typ_nand nand #5 //define a nand with typical delay `typ_nand g121(q21,n10,n11); ……… endmodule 经过宏展开以后,该语句为: nand #5 g121(q21,n10,n11); 宏内容可以是空格,在这种情况下,宏内容被定义为空的。当引用这个宏名时,不会有内容被置换。 2、文件包含”处理`include 所谓“文件包含”处理是一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包 含到本文件之中。 Verilog HDL语言提供了`include命令用来实现“文件包含”的操作。其一般形式为: `include “文件名” 例: (1)文件aaa.v module aaa(a,b,out); input a, b; output out; wire out; assign out = a^b; endmodule 关于“文件包含”处理的四点说明: 1) 一个`include命令只能指定一个被包含的文件,如果要包含n个文件,要用n个`include命令。注意下面的写法是非法的 `includeaaa.vbbb.v 2) `include命令可
您可能关注的文档
最近下载
- 2024译林版三年级英语上册期末专项训练:句子排序.pdf VIP
- 2022-2023学年济南市市中区九年级上学期期末化学试卷(含答案解析).docx
- 2023-2024学年福建省厦门市思明区莲花中学七年级(上)期末数学试卷及答案解析.pdf
- 家庭情况调查表【范本模板】.pdf VIP
- 北师大版(2024新版)七年级上册生物期末模拟练习试卷(含答案解析).docx
- 稠油油藏水平井堵水调剖技术研究应用.ppt
- 1_清稿1-质量管理体系认证规则(征求意见稿)V1.1.doc
- 财政数据迁移方案.docx
- 全员专项学习培训试题题库单选、多选试题附答案.doc
- 2025年蛇年总结PPT模板.pptx VIP
文档评论(0)