Verilog HDL 数字系统设计及实践 第9章 编译预处理.pptVIP

Verilog HDL 数字系统设计及实践 第9章 编译预处理.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Verilog HDL 数字系统设计及实践 第9章 编译预处理.ppt

* 第9章 编译预处理 Verilog HDL 数字系统设计及实践 学习指南 【知识目标】 (1) 了解编译指令的概念; (2) 了解常见的几个编译指令。 【技能目标】 (1) 能够掌握常见的编译指令语法形式; (2) 能够正确地运用常见的编译指令功能。 【重点难点】 (1) 宏定义及条件编译指令的运用。 9.1`define, `undef `define指令用于定义文本替换,类似C语言中的#define指令。 `undef指令则是取消前 面定义的宏。 `define DATASIZE 8 …… reg [`DATASIZE-1:0] data; //等于 reg [7:0] data; `undef DATASIZE //DATASIZE不再有效 9.2 `ifdef,`else, `elsif, `endif, `ifndef 通常Verilog代码中所有的行都会被编译器编译(注释除外),但是有时候设计者需要根据某些条件选择性的编译某部分代码,同时选择性的忽略某部分代码。而实现这种功能的编译指令就是条件编译指令。 这些指令有以下几种格式: `ifdef 宏名1(标识符) 程序段a `elseif 宏名2 (标识符) 程序段b `else 程序段c `endif 9.3 `include 此指令可以在编译时将另一个源文件包含到本文件里来,作用类似于C语言中的#include。例如: `include “header.v” // 包含一个header.v的文件, // 编译时这一行内容由header.v的内容替换 这个命令是非常有用,可以将常用的宏定义或者任务(task)甚至底层的module等 分开编写,再在需要的主文件中包含进来,避免重复设计。 9.4 `timescale `timescale指令用于指定延迟的时间单位和时间精度,其指令格式为: `timescale unit/precision 其中的unit和precision由整数1,10,100以及单位s,ms,us,ns,ps,fs组成。 时间单位值决定了模块中仿真和延迟时间的基准单位。时间精度值则决定仿真时 间的精确程度。时间精度值不能大于时间单位值。例如: `timescale 1ns/100ps …… #5.55 a = 0; …… 9.5 预编译处理实例 【例9.1】我们先写一个名叫def.h的文件,此文件中包含对整个设计的配置参数,如下: `define DELAY 10 //延时 `define DATASIZE 32 //数据位宽 `define AND_OPERATION //ADD_OPERATION:加 / SUB_OPERATION:减 / AND_OPERATION:按位与 /缺省:按位或在这个文件中我们可以配置延时大小,数据位宽,以及模块的逻辑功能。下面是主程序: //example_9_1:条件编译指定逻辑功能 `include def.h //包含文件def.h `timescale 1ns/100ps //延迟时间单位和精度 module multi_calc (i_A,i_B,o_OUT); input [`DATASIZE-1:0] i_A; //位宽由宏名DATASIZE决定 input [`DATASIZE-1:0] i_B; //位宽由宏名DATASIZE决定 output [`DATASIZE-1:0] o_OUT; //位宽由宏名DATASIZE决定 *

文档评论(0)

书屋 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档