- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VerilogHDL数字系统设计及其应用_02初识VerilogHDL要点
第2章 初识Verilog HDL 第2章 初识Verilog HDL 2.1 Verilog HDL的设计方法 2.2 Verilog HDL中的模块及其描述方式 2.3 Verilog HDL设计流程 2.1 Verilog HDL的设计方法 Verilog HDL的设计方法归纳起来主要有两种:自下而上(Bottom-Up)的设计方法与自上而下(Top-Down)的设计方法。另外,还可根据实际情况,利用这两种方法的组合进行综合设计,即综合设计方法。 2.1.1 自下而上(Bottom-Up)的设计方法 方法的步骤自下而上的设计方法是一种传统的电子系统设计方法,它的主要步骤是:首先根据系统要求编制技术规格书,并画出系统控制流程图;然后依照技术规格书和系统控制流程图,对系统的功能进行细化,合理划分功能模块,并画出系统的功能框图;接着进行各功能模块的细化和电路设计;当各功能模块电路设计、调试完成后,将各功能模块连接起来进行全系统的调试。其具体流程如图2.1所示。 图2.1 自下而上设计 自下而上的设计方法常用于原理图设计中,它的优点是: (1) 设计人员对于用这种方法进行设计比较熟悉。 (2) 实现各个子块电路所需的时间较短。 但这种设计方法也有许多不足之处,具体表现为: (1) 一般来说采用这种设计方法,容易造成对系统的整体功能把握不足。 (2) 因为必须先完成各个小模块,所以整个系统的实现需要较长的时间。 (3) 这种方法对设计人员之间相互进行协作有比较高的要求。 2.1.2 自上而下(Top-Down)的设计方法 随着硬件技术以及HDL语言的发展,电子系统的设计方法发生了巨大的变化,传统的自下而上的设计方法已经不能满足复杂度日益增长的系统的要求。目前在电子系统的设计中已经越来越多地采用自上而下的设计方法了。在这种新的设计方法中,由系统用户对整个系统进行方案设计和功能划分,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,直到可以直接用元件库中的元件来实现为止。其具体流程如图2.2所示。 图2.2 自上而下设计方法的步骤 自上而下的设计方法一般采用HDL语言,具有以下一些优点: (1) 在设计周期开始就做好了系统分析。 (2) 由于设计的主要仿真和调试过程是在高层次完成的,所以能够在早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑仿真的工作量。 (3) 自顶向下的设计方法方便了从系统划分和管理整个项目,使得几十万门甚至几百万门规模的复杂数字电路的设计成为可能。并可减少设计人员,避免不必要的重复设计,提高了设计的一次成功率。 自上而下的设计方法有以下缺点: (1) 因采用的综合工具不一样,得到的最小单元不标准。 (2) 制造成本高。 2.1.3 综合设计方法 复杂数字逻辑电路和系统的设计过程通常是以上两种设计方法的结合。复杂系统的设计需要考虑多个目标的综合平衡。在高层系统采用自上而下的设计方法来实现,而在低层系统采用自下而上的方法从库元件或数据库中调用已有的单元设计。综合设计方法兼有上述两种设计方法的优点,而且可以使用矢量测试库进行测试。 2.2 Verilog HDL中的模块及其描述方式 2.2.1 模块的概念及结构 和其它高级语言一样,Verilog HDL语言也是模块化的。它以模块集合的形式来描述数字系统。模块(Module)是Verilog HDL语言的基本单元,它用于描述某个设计的功能或结构及其与其他模块通信的外部端口。每一个模块都有接口部分,用来描述与其它模块之间的连接,通常一个文件对应一个模块。Verilog HDL中的各个模块是并行运行的,不过常用的做法是用一个包括测试数据和硬件描述的高层模块来定义一个封闭的系统,并在这一模块中调用其它模块的实例。 模块的基本语法如下: module 模块名 (端口列表) 端口说明(input,out,inout) 参数定义(可选) 数据类型定义 连续赋值语句 (assign) 过程块 (initial和 always) -行为描述语句 低层模块实例 任务和函数 延时说明块 endmodule 其中模块名是模块唯一性的标识符;端口列表是由模块各个输入、输出和双向端口组成的一张端口列表,这些端口用来与其它模块进行连接;数据类型定义部分用来指定模块内用到的数据对象为寄存器型、存储器型或连线型;过程块包括initial过程块和always过程块两种,行为描述语句只能出现在这两种过程块内;延时说明块用来对模块各个输入和输出端口间的路径延时进行说明。 调用模块实例的一般形式如下: 模块名 参数列表 实例名 (端口列表) 下面以一个2
文档评论(0)