verilog硬件描述语言——006

verilog硬件描述语言——006

ID:34458874

大小:137.08 KB

页数:5页

时间:2019-03-06

verilog硬件描述语言——006_第1页
verilog硬件描述语言——006_第2页
verilog硬件描述语言——006_第3页
verilog硬件描述语言——006_第4页
verilog硬件描述语言——006_第5页
资源描述:

《verilog硬件描述语言——006》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、下载第6章用户定义的原语在前一章中,我们介绍了VerilogHDL提供的内置基本门。本章讲述VerilogHDL指定用户定义原语UDP的能力。UDP的实例语句与基本门的实例语句完全相同,即UDP实例语句的语法与基本门的实例语句语法一致。6.1UDP的定义使用具有如下语法的UDP说明定义UDP。primitiveUDP_name(OutputName,List_of_inputs)Output_declarationList_of_input_declarations[Reg_declaration][Initial_statemen

2、t]tableList_of_tabel_entriesendtableendprimitiveUDP的定义不依赖于模块定义,因此出现在模块定义以外。也可以在单独的文本文件中定义UDP。UDP只能有一个输出和一个或多个输入。第一个端口必须是输出端口。此外,输出可以取值0、1或x(不允许取z值)。输入中出现值z以x处理。UDP的行为以表的形式描述。在UDP中可以描述下面两类行为:1)组合电路2)时序电路(边沿触发和电平触发)6.2组合电路UDP在组合电路UDP中,表规定了不同的输入组合和相对应的输出值。没有指定的任意组合输出为x。下面

3、以2-1多路选择器为例加以说明。primitiveMUX2x1(Z,Hab,Bay,Sel);outputZ;inputHab,Bay,Sel;table//HabBaySel:Z注:本行仅作为注释。0?1:0;1?1:1;?00:0;?10:1;00x:0;50VerilogHDL硬件描述语言下载11x:1;endtableendprimitive字符?代表不必关心相应变量的具体值,即它可以是0、1或x。输入端口的次序必须与表中各项的次序匹配,即表中的第一列对应于原语端口队列的第一个输入(例子中为Hab),第二列是Bay,第三列是

4、Sel。在多路选择器的表中没有输入组合01x项(还有其它一些项);在这种情况下,输出的缺省值为x(对其它未图6-1使用UDP构造的4-1多路选择器定义的项也是如此)。图6-1为使用2-1多路选择器原语组成的4-1多路选择器的示例。moduleMUX4x1(Z,A,B,C,D,Sel);inputA,B,C,D;input[2:1]Sel;outputZ;parametertRISE=2,tFALL=3;MUX2x1#(tRISE,tFALL)(TL,A,B,Sel[1]),(TP,C,D,Sel[1]),(Z,TL,TP,Sel[2

5、]);endmodule如上例所示,在UDP实例中,总共可以指定2个时延,这是由于UDP的输出可以取值0、1或x(无截止时延)。6.3时序电路UDP在时序电路UDP中,使用1位寄存器描述内部状态。该寄存器的值是时序电路UDP的输出值。共有两种不同类型的时序电路UDP:一种模拟电平触发行为;另一种模拟边沿触发行为。时序电路UDP使用寄存器当前值和输入值决定寄存器的下一状态(和后继的输出)。6.3.1初始化状态寄存器时序电路UDP的状态初始化可以使用带有一条过程赋值语句的初始化语句实现。形式如下:initialreg_name=0,1,

6、orx;初始化语句在UDP定义中出现。6.3.2电平触发的时序电路UDP下面是D锁存器建模的电平触发的时序电路UDP示例。只要时钟为低电平0,数据就从输入传递到输出;否则输出值被锁存。primitiveLatch(Q,Clk,D);outputQ;regQ;inputClk,D;table第6章用户定义的原语51下载//ClkDQ(State)Q(next)01:?:1;00:?:0;1?:?:-;endtableendprimitive“-”字符表示值“无变化”。注意UDP的状态存储在寄存器D中。6.3.3边沿触发的时序电路UDP

7、下例用边沿触发时序电路UDP为D边沿触发触发器建模。初始化语句用于初始化触发器的状态。primitiveD_Edge_FF(Q,Clk,Data);outputQ;regQ;inputData,Clk;initialQ=0;table//ClkDataQ(State)Q(next)(01)0:?:0;(01)1:?:1;(0x)1:1:1;(0x)0:0:0;//忽略时钟负边沿:(?0)?:?:-;//忽略在稳定时钟上的数据变化:?(??):?:-;endtableendprimitive表项(01)表示从0转换到1,表项(0x)表

8、示从0转换到x,表项(?0)表示从任意值(0,1或x)转换到0,表项(??)表示任意转换。对任意未定义的转换,输出缺省为x。假定D_Edge_FF为UDP定义,它现在就能够象基本门一样在模块中使用,如下面的4位寄存器所示。module

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。