3.2 模块与基础端口_第1页
3.2 模块与基础端口_第2页
3.2 模块与基础端口_第3页
3.2 模块与基础端口_第4页
3.2 模块与基础端口_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章硬件描述语言VerilogHDL模块与端口02Part2模块与端口2.1模块结构VerilogHDL语言中的模块是构建数字系统的基本单位,描述某个电路块的功能或内部结构以及该电路与其他电路进行通信的外部端口。2模块与端口2.1模块结构模块提供了一种结构化和层次化的方法来描述硬件电路。每个模块就像是一个封装好的电路单元,具有明确的输入和输出接口,所以每个模块是独立的,同一个模块可以在不同的设计项目中重复使用。2模块与端口2.1模块结构VerilogHDL的模块结构电路描述门级描述数据流描述(RTL级)行为级描述module模块名(端口列表);变量声明任务和函数(可选)endmodule参数(可选)端口声明2模块与端口模块框架module和endmodule这两个关键字表明了模块的开始和结束,共同组合成模块的框架。模块的先后顺序不影响它们的执行顺序。moduleA……endmodulemoduleB……endmodule2模块与端口模块框架即使模块有层级关系,模块B的电路是模块A电路的一部分,模块代码也不能写成嵌套形式。错误写法:moduleA……

moduleB

……

endmodule……endmodule一个程序文件里有多个模块,通过module-endmodule组合可以明确区分出各个模块。2模块与端口模块第一行1模块的第一行首先写出关键字module,后面紧跟模块名和端口列表,最后以分号(;)结束。2模块名是自定义的标识符,帮助模块定位。3端口列表写在模块名后面的()里,有两种书写方式。仅列出电路模块所有输入端口和输出端口的名称把完整的端口声明写在()里。2模块与端口声明模块里的声明主要包含端口声明和变量声明。端口声明是对电路外部接口在类型、名称、位宽等特性的定义。如果模块第一行的()里仅列出了端口名称,那么在第一行下面要写出所有端口的声明语句。变量声明是对电路内部变量进行类型、名称、位宽等特性的定义,遵循“定义后使用”的原则,只有经过声明的变量才能在模块主体中用于描述电路,并且在不同的描述风格中必须使用相应类型的变量。2模块与端口电路描述电路描述是VerilogHDL模块的主体,体现电路的结构或行为。Verilog允许使用门级描述、数据流描述和行为级描述等不同抽象级别的描述方式。2模块与端口可选部分参数是用来定义常量的标识符,在编译时为模块提供可配置的常数值,从而灵活地实现模块的复用。任务主要用来在测试平台中进行数据显示或者辅助时序逻辑控制。函数是用于实现从输入到输出的映射关系的结构,仅有一个返回值,常用于实现复杂的计算或数据转换。2模块与端口例3.1使用VerilogHDL语言描述一个上升沿D触发器。moduledff(q,clk,data);outputq;inputclk,data;regq;always@(posedgeclk)q=data;endmodule电路描述(行为级描述)端口声明变量声明模块名dff2模块与端口例3.2使用VerilogHDL语言描述一个SR锁存器。2模块与端口2.2端口端口是VerilogHDL模块与外部环境之间的通道,代表着电路对外的接口。端口声明的基本格式如下:端口类型[端口宽度]端口名;2模块与端口端口类型其中,inout声明的双向端口兼具输入端口和输出端口的功能。关键字端口类型input输入端口output输出端口inout

双向端口VerilogHDL端口类型说明2模块与端口端口宽度端口的宽度可以是1位,也可以是多位,默认是1位端口。矢量端口必须注明位数(宽度),位数写在[]里,可以按照两种方式声明:[LSB:MSB]或者[MSB:LSB]其中LSB(LeastSignificantBit)为最低有效位,MSB(MostSignificantBit)为最高有效位。如:inputclk;//1位输入端口output[7:0]bcd;//8位输出端口,左边是最高位2模块与端口端口宽度宽度超过1位的端口,在端口列表处也只需要写出端口名,不需要写宽度,如:moduledb(clk,bcd);//bcd在端口列表只写端口名inputclk;output[7:0]bcd;2模块与端口端口声明的两种写法端口列表和端口声明可以分开,也可以合并。分开时模块第一行的端口列表里只写端口名称,详细信息写在端口声明语句里,每条语句用分号表示结束。只有类型相同且位宽相同的端口才可以写在同一条语句里。合并的情况是把端口声明搬入端口列表,同时把每条语句结尾的分号(;)改为逗号(,)。如例3.1可以写成moduledff(outputregq,inputclk,data);always@(posedgeclk)q=data;endmodule例3.2可以写成moduleSR_latch(outputQ,Qbar,inputSbar,Rbar);nandn1(Q,Sbar,Qbar);nandn2(Qbar,Rbar,Q);endmodule2模块与端口端口声明的两种写法modulefull_adder(sum,c_out,a,b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论