网站大量收购独家精品文档,联系QQ:2885784924

Verilog HDL项目式教程 课件 项目3 结构化建模.pptx

Verilog HDL项目式教程 课件 项目3 结构化建模.pptx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

任务3.1门级原语

任务3.2层次建模;任务3.1门级原语;任务3.1门级原语;简单的逻辑电路可以使用逻辑门来设计实现。

基本的逻辑门分为两类:与/或门类、缓冲/非门类。

(1)与/或门类。

与/或门类包括与门(and)、或门(or)、与非门(nand)、或非门(nor)、异或门(xor)、同或门(xnor)。与/或门类都具有一个标量输出端和多个标量输入端,门的端口列表中的第一个端口必定是输出端口,其他均为输入端口。当任意一个输入端口的值发生变化时,输出端口的值立即重新计算。

例如:;(2)缓冲/非门类。

缓冲/非门类包括缓冲器(buf)、非门(not)、带控制端的缓冲器/非门(bufif1、bufif0、notif1、notif0)。缓冲/非门类具有一个标量输入端和多个标量输出端,门的端口列表中的最后一个端口必定是输入端口,其他均为输出端口。

例如:;【例3-1】利用双输入端的nand门,编写自己的双输入端的与门(my_and)、或门(my_or)、非门(my_not)、异或门(my_xor)。

上述电路设计涉及的知识点有门级原语例化和多输出处理。

下面对这些知识点进行说明。;(1)门级原语例化。

在门级原语实例引用的时候,可以不指定具体的实例名,这一点给需要实例引用几百个甚至更多门的模块提供了方便。但对于初学者,建议在调用门级原语时给出实例名。在以上示例中,调用门级原语时均没有给出实例名。

在实际应用中,与非门和或非门更为普遍,这是因为由这两种门生成其他逻辑门容易实现。本例给出了使用与非门来设计其他基本逻辑门的方法。

(2)多输出处理。

例3-1中有4个输出y[0]~y[3],分别对应着与门、或门、非门、异或门。这4个输出均是独立的,在代码中分别进行了单独处理。在实践中,建议针对每个输出单独进行分析设计,这样做对于正确地实现电路逻辑是非常有效的。

例3-1的测试代码如例3-2所示。;【例3-2】门电路测试代码。

;任务3.2?层次建模;首先通过一个典型的实例来介绍层次建模的概念。

【例3-3】实现一个1位全加器。

使用QuartusⅡ软件综合的全加器的电路图如图

3-2所示。

由图3-2可见,全加器是由两个半加器和一个或门组成的。

双击图中的半加器,可以看出半加器又由与门、异或门和

???门构成,如图3-3所示。;上述电路设计涉及的知识点有层次建模、模块例化。

下面对这些知识点进行说明。

(1)层次建模。

模块是可以进行层次嵌套的,因此,可以将大型数字电路设计分割成不同的小模块来实现特定的功能,最后通过顶层模块调用子模块来实现整体功能。

在全加器模块内部调用了半加器模块和或门模块,而在半加器模块内部又调用了基本逻辑门原语。

在层次建模中,不管是顶层模块还是被调用模块内部,其实现方式都可以使用多种方式,包括数据流建模、行为建模、结构化建模、状态机建模等。例如,在例3-3中,或门模块内部使用了数据流建模,使用了连续赋值语句assign。;(2)模块例化。

在全加器模块中有两处调用了半加器:h_adderu0(ain,bin,d,e);?和h_adderu1(e,cin,f,sum);。每次调用均给出一个唯一的实例名,调用时端口列表名称不同。在Verilog设计中,模块调用时,可以按顺序将模块定义的端口与外部环境中的信号连接起来,这种方法称为按顺序连接。h_adderu0(ain,bin,d,e);?调用将ain、bin、d、e分别与模块定义中的端口a、b、co、so连接;h_adderu1(e,cin,f,sum);?调用将e、cin、f、sum分别与模块定义中的端口a、b、co、so连接。

全加器的仿真波形如图3-4所示。从仿真波形中可???看出,该设计完成了一位全加器的功能。;与仿真波形相应的测试代码如下:

【例3-4】1位全加器测试模块。

;(1)层次建模。

数字电路设计中有两种基本的设计方法:自底向上和自顶向下。在自顶向下设计方法中,首先定义顶层模块,随后将顶层模块分解为多个必要的子模块,然后进一步对各个子模块进行分解,直到达到无法进一步分解的底层功能块,如图3-5所示。

在自底向上设计方法中,首先对现有的功能块进行分析,然后使用这些模块来搭建规模大一些的功能块,如此继续,直到顶层模块,如图3-6所示。

在典型的设计中,这两种方法是混合使用的。为了说明层次建模的概念,下面结合全加器进行说明。

根据全加器的电路图,可以得出全加器的设计层次如图3-7所示。;使用自顶向下的方法进行设计,首先需要说明全加器的功能。在使用半加器和或门搭建顶层模块之后,进一步使用与门、异或门和非门来实现半加器。这样就可以将较大的功能块分解为较小的功能块,直到无法继续分解。对于例3-4,我们

您可能关注的文档

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档