第二讲:语法入门5.pptVIP

  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文档。上传文档
查看更多
第二讲:语法入门5

第11章结构建模 本章讲述Verilog HDL中的结构建模方式。结构建模方式用以下三种实例语句描述: .Gate实例语句;.UDP实例语句;.Module实例语句 11.1模块 基本单元定义成模块形式,如下所示: Module module_name(port_list); Declarations_and_Statements endmodule 端口队列port_list列出了该模块通过哪些端口与外部模块通信。 11.2端口 模块的端口可以是输入端口、输出端口或双向端口。缺省的端口类型为线网类型(即wire类型)。 输出或输入输出端口能够被重新声明为reg型寄存器。 无论是在线网说明还是寄存器说明中,线网或寄存器必须与端口说明中指定的长度相同。例: Module Micro(PC,Instr,Next_Addr); input[3:1] PC;//端口说明 output[1:8] Instr; inout[16:1] Next_Addr; //重新说明端口类型: wire[16:1] Next_Addr;//该说明是可选的,但如果指定了,就必须与它的端口说明保持相同长度。 reg[1:8] Instr;//Instr已被重新说明为reg类型,因此它能在always语句或在initial语句中赋值。 endmodule 11.3模块实例语句 一个模块能够在另外一个模块中被引用。模块实例语句形式如下: module_name instance_name(port_associations); 信号端口可以通过位置或名称关联;但是关联方式不能够混合使用。端口关联形式如下: port_expr//通过位置。 .PortName(port_expr)//通过名称。 Port_expr可以是以下的任何类型: 1)标识符(reg或net);2)位选择 3)部分选择;4)上述类型的合并 5)表达式(只适用于输入端口) 在位置关联中,端口表达式按指定的顺序与模块中的端口关联。在通过名称实现的关联中,模块端口和端口表达式的关联被显式地指定,因此端口的关联顺序并不重要。 使用两个半加器模块构造全加器;逻辑图如下所示。 在第一个模块实例语句中,HA是模块的名字,h1是实例名称,并且端口按位置关联,即信号P与模块(HA)的端口A连接,信号Q与端口B连接,S1与S连接,C1与模块端口C连接。 在第二个实例中,端口按名称关联,即模块(HA)和端口表达式间的连接是显示地定义的。 下例是使用不同端口表达式形式的模块实例语句。 MicroM1(UdIn[3:0],{WrN,RdN},Status[0],Status[1],UdOut[0:7],TxData); 这个实例语句表示端口表达式可以是标识符(TxData)、位选择(Status[0])、部分位选择(UdIn[3:0])、合并({WrN,RdN})或一个表达式(udOut[0:7]);表达式只能够连接到输入端口。 11.3.1悬空端口 在实例语句中,悬空端口可通过将端口表达式表示为空白来指定为悬空端口,例如: DFFd1(.Q(QS),.Qbar(),.Data(D),.Preset(),.Clock(CK));//名称对应方式。 DFFd2(QS,,D,,CK);//位置对应方式。 //输出端口Qbar悬空。 //输入端口Preset打开,其值设定为z。 在这两个实例语句中,端口Qbar和Preset悬空。 模块的输入端悬空,值为高阻态z。模块的输出端口悬空,表示该输出端口废弃不用。 11.3.2不同的端口长度 当端口和局部端口表达式的长度不同时,端口通过无符号数的右对齐或截断方式进行匹配。例如: Module Child(Pba,Ppy); input[5:0]Pba;output[2:0]Ppy; endmodule Module Top; wire[1:2]Bdl;wire[2:6]Mpr; ChildC1(Bdl,Mpr); endmodule 在对Child模块的实例中,Bdl[2]连接到Pba[0],Bdl[1]连接到Pba[1],余下的输入端口Pba[5]、Pba[4]和Pba[3]悬空,因此为高阻态z。 Mpr[6]连接到Ppy[0],Mpr[5]连接到Ppy[1],Mpr[4]连接到Ppy[2]。 11.3.3模块参数值 当某个模块在另一个模块内被引用时,高层模块能够改变低层模块的参数值。模块参数值的改变可采用下述两种方式: 1)参数定义语句(defparam); 2)带参数值的模块引用。 1.参数定义语句 参数定义语句形式如下: defparamhier_path_name1=value1,hier_path_name2=value2,...; 较低层模块中的层次路径名参数可

文档评论(0)

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

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

1亿VIP精品文档

相关文档