Verilog HDL模块化程序设计.docxVIP

  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模块化程序设计

Verilog HDL模块化程序设计   摘 要:电子技术设计的核心是EDA,目前,EDA技术的设计语言主要有Verilog HDL和VHDL两种,相对来说Verilog HDL语言相对简单,上手快,其语法风格与C语言类似,据统计,Verilog HDL和VHDL的使用比率大概是80%和20%,在中国,大多数电子行业企业都采用Verilog。而模块化的设计让Verilog HDL语言具有思路清晰、逻辑关系明确、可读性强等特点,模块化的设计在Verilog HDL语法设计中也成为主流。   关键词:Verilog EDA 模块化   中图分类号: 文献标识码:A 文章编号:1672--0012-02   1 EDA的发展现状   在全球范围内,自动化软件市场已比较成熟,年增长速度大概在9%左右,目前,全球知名的自动化软件厂商不足20家,亚洲由于中国和印度是发展中的大国,自动化软件的应用潜力比较大,所以整个亚洲年增长速度大概在15%左右,当然其基数也比较低。   现在EDA技术的发展可以用日新月异来形容,目前EDA技术已在各个方面得到了广泛使用,例如在医疗器械制造过程中,从设计、性能测试及特性分析,都可能涉及到EDA技术。   在EDA软件开发方面,目前主要集中在美国,其中三大商业巨头为Synopsys、Mentor、Cadence,虽然,目前中国的EDA技术已经逐渐在走向成熟,但是想要与美国的设计工程师形成更有力的竞争,中国的设计队伍应该在EDA技术中更深入的了解,研发,必要的时候还可以购入一些最新的EDA技术。可见EDA在以后的发展中有着不可估量的地位。   2 为什么要进行模块化设计   在实际运用中,如果所有的功能都由一个模块来实现,那么会造成模块的设计复杂,思路不清晰,Verilog HDL的模块化设计是一种非常重要的设计方法,不仅能够简化设计流程,而且主流设计思想是“自顶向下”。模块化设计就是将一个大的模块分为一个顶层模块和N个子模块,而顶层模块只需要通过简单的程序代码对子模块进行调用就能实现整体功能。   模块化设计,就和小时候玩积木游戏是一样的,根据不同的应用需求,设计不同的子模块,每个子模块实现不同的功能,各个模块之间都是并行运行的,顶层模块可以通过调用子模块来实现复杂的设计,如果想将所有的子模块连接成一个完整的系统,那么可以通过顶层模块将所有的子模块连接起来。一个子模块也可以在另一个子模块中被调用。   3 顶层模块与子模块的关系图   顶层模块与子模块的关系图如图1所示。   4 模块的概念及其特点   Verilog HDL中的模块可分为顶层模块与子模块,顶层模块可调用任意子模块,子模块内部也可调用其他子模块。而子模块一般是具有具体功能的一段verilog代码,例如一个简单的与门、非门、或门。在顶层模块中,可以同时调用多个模块进行功能的组合。无论是顶层模块还是子模块,都具有以下特点。   每一??模块都是以关键词module开始,以关键词endmodule结束的一段程序。   每一个模块都能完成一种特定的功能。   模块之间都是并行运行的。   模块内部都有端口的声明。   各个子模块之间的端口可用线型变量进行连接。   5 模块的结构   Verilog HDL模块化设计的主要思想就在于“模块设计”。一个模块内部主要由三部分构成:端口声明,变量描述,功能描述。   一个简单的模块结构如下:   module ;         endmodule   模块名和端口的声明中可以包含英文字母、数字和下划线,并且只能以英文字母开头,它是模块的唯一标识符。   端口描述:定义了该模块与其他模块通讯的外部接口,可作为PLD器件的引脚,也可作为模块之间的连线,根据数据流的方向可以分为输入,输出及双向端口。   变量描述:根据进程模块中数据的需要,可以定义所需要的寄存器变量、线型变量、常量、整型数据等。   功能描述:对具体的端口或变量进行算术运算、逻辑运算、关系运算、位运算等操作。   例如一个简单的单输入D触发器模块设计如下:   module Dtrigger;//端口描述   input clk,d; //clk,d定义为输入端口   output q;//q定义为输出端口   reg q;//q定义为寄存器类型   always@// clk信号的上升沿触发   begin   q=d;//功能描述   end   endmodule   6 模块与模块的连接   若两模块之间的端口需要进行连接,那么首先必须定义好连接端口所用的导线,那么,在Verilog HDL中,可作为导线的变量只有wire类型,所以,在模块调用的时候,常用到wire类型变量来进行端口的连接。   7 模块的调用   模块调用一般是指在

文档评论(0)

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

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

1亿VIP精品文档

相关文档