第四章(EDA).ppt

  1. 1、本文档共175页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 Verilog HDL 5.1 引言 从语法结构上看,Verilog HDL语言与C语言有许多相似之处,并继承和借鉴了C语言的多种操作符和语法结构。下面列出的是Verilog HDL硬件描述语言的一些主要特点: 能形式化地表示电路的结构和行为。 借用高级语言的结构和语句,例如条件语句、赋值语句和循环语句等,在Verilog HDL中都可以使用,既简化了电路的措述,又方便了设计人员的学习和使用。 能够在多个层次上对所设计的系统加以描述.从开关级、门级、寄存器级(RTL)到功能级和系统级,都可以描述。设计的规模可以是任意的,语言不对设计的规模施加任何限制。 Verilog HDL具有混合建模能力,即在一个设计中各个模块可以在不同设计层次上建模和描述。 基本逻辑门,例如and、or和nand等都内置在语言中;开关级结构模型,例如pmos和nmos等也被内置在语言中,用户可以直接调用。 用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。 Verilog HDL程序举例 Verilog HDL程序举例 结论 Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间,每个模块实现特定的功能,模块是可以进行层次嵌套的。 每个模块首先要进行端口定义.并说明输入(input)和输出(output)或inout,然后对模块的功能进行逻辑描述。 Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分多行写。 基本上每个语句的最后必须有分号。 可以用/*……*/和//……对Verilog HDl程序的任何部分作注释。一个完整的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。 5.2.2 Verilog HDL模块的结构 Verilog HDL的基本设计单元是“模块(block)”。一个模块是由两部分组成的: 一部分描述接口; 另一部分描述逻辑功能,即定义输入是如何影响输出的。 下面举例说明。 图示“与—或—非”门电路。 Verilog HDL 语言描述 Verilog HDL程序的结构组成 模块说明 端口定义 信号类型说明 逻辑功能定义 1.模块的声明及其模块引用 例如 半加器 module h_adder(A,B,CO,SO); ……. endmodule 引用时: h_adder ha(ain,bin,co1,so1);\\位置关联法 h_adder ha(.A(ain),.B(bin),.co(co1),.so(so1)); \\名称关联法 2.端口(port)定义 对模块的输入输出端口要明确说明,格式为 I/O说明的格式如下: 或者 3.信号类型声明 对模块中的所有信号(包括端口信号、节点信号等)都必须进行数据类型的定义。 4. 逻辑功能定义 模块中最重要的部分是逻辑功能定义。有3种方法可在模块中描述逻辑 1.用“assign”语句(连续赋值方式)—适合对组合逻辑进行赋值 如:assign F = a b; 2.用元件例化(instantiate)——此方法同在电路图输入方式下调入库元件一样,键入元件的名字和引脚的名字即可。要求每个 实例元件的名字必须是唯一的。 如:and myand3(f,a,b,c); //定义了一个三输入与门(利用 Verilog HDL提供的与门库) 3.用“always”块语句——可用于产生各种逻辑,常用来描述 时序逻辑 例见计数器模块 5.2.4 Verilog HDL 模块的模板 仅考虑用于可综合部分,不考虑用于逻辑模拟的部分: 5.2.5 Verilog HDL源代码的构成 由大量基本语法元素构成: 空白符(White space) 注释(Comments) 运算符(Operator) 数值(Number) 字符串(String) 标识符(Identifier) 关键字(Keyword) 空白符 空白符包括:空格、 tab、换行和换页 Verilog HDL程序可以不分行,也可以加入空白符采用多行编写,使代码错落有致,阅读起来更方便。 在综合时空白符被忽略。 注释 分为两类: 单行注释,以“//”开始到本行行末结束 形式: //********* 多行注释,以“/*”开始,以”*/”结束。可以跨多行,但是中间不允许嵌套。 形式: /* ------------------------- */ 与

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档