收藏 分享(赏)

第4章.模块和端口.ppt

上传人:无敌 文档编号:1155905 上传时间:2018-06-15 格式:PPT 页数:19 大小:326KB
下载 相关 举报
第4章.模块和端口.ppt_第1页
第1页 / 共19页
第4章.模块和端口.ppt_第2页
第2页 / 共19页
第4章.模块和端口.ppt_第3页
第3页 / 共19页
第4章.模块和端口.ppt_第4页
第4页 / 共19页
第4章.模块和端口.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、FPGA技术与Verilog HDL语言,第四章 模块和端口,本章学习目标,掌握Verilog模块定义中的各个组成部分,例如模块名、端口列表、参数、变量声明、数据流描述语句、行为语句、调用(实例引用)其他模块以及任务和函数等。理解如何定义模块的端口列表以及在Verilog中如何声明。掌握模块实例的端口连接规则。理解如何通过有序列表和名字将端口与外部信号相连。理解对Verilog标识符的层次引用。,4.1 模块,模块定义以关键字module开始,模块名、端口列表、端口声明和可选的参数声明必须出现在其他部分的前面,endmodule语句必须为模块的最后一条语句。模块内部的5个组成部分是:变量声明、

2、数据流语句、低层模块实例、行为语句块以及任务和函数。这些部分可以在模块中的任意位置,以任意顺序出现。在模块的所有组成部分中,只有module、模块名和endmodule必须出现,其他部分都是可选的,用户可以根据设计的需要随意选用。在一个Verilog源文件中可以定义多个模块,Verilog对模块的排列顺序没有要求。,4.1 模块,例4.1 SR锁存器的构成,SR锁存器包括两个输入端口S和R以及两个输出端口Q和Qbar。结构示意图如下:,4.1 模块RS实例,SR锁存器及其激励的Verilog描述:,SR锁存器的模块中各组成部分并未全部出现,如变量声明、数据流和行为语句。激励模块中包括了模块名、

3、线网、寄存器、变量声明、低层次模块实例、行为语句和endmodule,但没有端口列表、端口声明和数据流语句;除了module和endmodule以及模块名,其他部分都是可选的,可以根据需要混合使用。,4.2 端口,端口是模块与外部环境交互的通道(接口),只有在模块有端口的情况下才需要有端口列表和端口声明。对于外部环境来说,模块内部是不可见的,对模块的调用只能通过其端口进行。只要接口保持不变,模块内部的修改不会影响到外部环境。端口终端(terminal),4.2.1 端口列表,在模块的定义中包括一个可选的端口列表。如果模块和外部环境没有交换任何信号,则可以没有端口列表。考虑一个在顶层模块Top中

4、被调用(实例引用)的四位加法器,如下图所示。全加器对应的端口列表,4.2.2 端口声明,端口列表中的所有端口必须在模块中进行声明,Verilog中的端口具有三种类型:input(输入端口),output(输出端口)和inout(输入/输出双向端口)。针对前面的全加器模块 fulladd4 的端口声明如下:,4.2.2 端口声明(续),在Verilog中,所有的端口隐含地声明为wire类型,因此如果希望端口具有wire数据类型,将其声明为三种类型之一即可。如果输出类型的端口需要保存数值,则必须将其显式地声明为reg数据类型。在下面的例子中,DFF触发器模块的输出端口q需要保持它的值,直到下一个时

5、钟边沿,其端口声明如下所示:注意:不能将input和inout类型的端口声明为reg数据类型,这是因为reg类型的变量是用于保存数值的,而输入端口只反映与其相连的外部信号的变化,并不能保存这些信号的值 。,4.2.3 端口连接规则,我们可以将一个端口看成是由相互连接的两个部分组成,一部分在模块内部,另一部分在模块的外部。当在一个模块中调用(实例引用)另一个模块时,端口之间的连接必须遵守一些规则。下图中对这些规则进行了总结。,4.2.3 端口连接规则(续),位宽匹配 在对模块进行调用(实例引用)的时候,Verilog允许端口的内、外两个部分具有不同的位宽。在一般情况下,Verilog仿真器会对此

6、给予警告。未连接端口 Verilog允许模块实例的端口保持未连接的状态。例如,如果模块的某些输出端口只用于调试,那么这些端口可以不与外部信号连接。例如下面的模块调用(实例引用)方法,让其中一个端口不与其他模块连接。举例如下:,4.2.3 端口连接规则(续),一个非法连接的示例,4.2.4 端口与外部信号的连接,在对模块调用(实例引用)的时候,可以使用两种方法将模块定义的端口与外部环境中的信号连接起来:按顺序连接以及按名字连接。但是,这两种方法不能混合在一起使用。1.顺序端口连接 在这种方法中,需要连接到模块实例的信号必须与模块声明时目标端口在端口列表中的位置保持一致。2.命名端口连接 在大型的

7、设计中,模块可能具有很多个端口。在这种情况下,要记住端口在端口列表中的顺序是很困难的,而且很容易出错。因此,Verilog提供了另一种端口连接方法:命名端口连接。顾名思义,在这种方法中端口和相应的外部信号按照其名字进行连接,而不是按照位置。端口连接可以以任意顺序出现,只要保证端口和外部信号的正确匹配即可。,4.2.4 顺序端口连接的例子,4.2.4 命名端口连接的例子,注意,在这种连接方法中,需要与外部信号连接的端口必须用名字进行说明,而不需要连接的端口只需简单地忽略掉即可。例如,如果端口c_out需要悬空,则Verilog程序代码如下所示。注意,在端口连接列表中端口c_out被忽略。,4.3

8、 层次命名,每一个模块实例、信号或变量都使用一个标识符进行定义;在整个设计层次中,每个标识符都具有惟一的位置。层次命名允许设计者在整个设计中通过惟一的名字表示每个标识符。层次名由一连串使用“.”分隔的标识符组成,每个标识符代表一个层次。设stimulus是顶层模块。,4.4 小结,模块定义包括多个组成部分。关键字module和endmodule是必须使用的。其他各个部分,诸如端口列表、端口声明、变量和信号声明、数据流语句、行为语句块、低层模块实例以及任务和函数都是可选的,由用户根据需要进行添加。端口是模块与其他模块或外部环境通信的渠道。模块可以具有一个端口列表,其中的每个端口必须在模块中声明为输入、输出或输入/输出三种类型之一。在对模块进行调用(实例引用)的时候,必须遵守有关端口连接的规则。ANSI C风格的端口声明将端口声明嵌入到端口列表中。端口的连接方法有两种:顺序连接和命名连接。设计中的每个标识符都具有惟一的层次名,它使得用户可以在设计中的任何位置访问设计中的每个标识符。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报