《Verilog+HDL6用户定义的原语》由会员分享,可在线阅读,更多相关《Verilog+HDL6用户定义的原语(11页珍藏版)》请在金锄头文库上搜索。
1、第6章 用户定义的原语,在前一章中,我们介绍了Verilog HDL提供的内置基本门。本章讲述Verilog HDL指定用户定义原语UDP的能力。 UDP的实例语句与基本门的实例语句完全相同,即UDP实例语句的语法与基本门的实例语句语法一致。,6.1 UDP的定义,使用具有如下语法的UDP说明定义UDP。,UDP的定义不依赖于模块定义,因此出现在模块定义以外。也可以在单独的文本文件中定义UDP。,输出可以取值0、1或x (不允许取z值)。输入中出现值z以x处理。UDP的行为以表的形式描述。,在UDP中可以描述下面两类行为: 1) 组合电路 2) 时序电路(边沿触发和电平触发),6.2 组合电路
2、UDP,在组合电路UDP中,表规定了不同的输入组合和相对应的输出值。没有指定的任意组合输出为x。下面以2-1多路选择器为例加以说明。,在多路选择器的表中没有输入组合01x项(还有其它一些项);在这种情下,输出的缺省值为x(对其它未定义的项也是如此)。,图6-1为使用2-1多路选择器原语组成的4-1多路选择器的示例。,如上例所示,在UDP实例中,总共可以指定2个时延,这是由于UDP的输出可以取值0、1或x(无截止时延)。,6.3 时序电路UDP,在时序电路UDP中,使用1位寄存器描述内部状态。该寄存器的值是时序电路UDP的输出值。共有两种不同类型的时序电路UDP:一种模拟电平触发行为;另一种模拟
3、边沿触发行为。时序电路UDP使用寄存器当前值和输入值决定寄存器的下一状态(和后继的输出)。,6.3.1 初始化状态寄存器,时序电路UDP的状态初始化可以使用带有一条过程赋值语句的初始化语句实现。形式如下:,初始化语句在UDP定义中出现。,6.3.2 电平触发的时序电路UDP,下面是D锁存器建模的电平触发的时序电路UDP示例。只要时钟为低电平0,数据就从输入传递到输出;否则输出值被锁存。,注意UDP的状态存储在寄存器D中。,6.3.3 边沿触发的时序电路UDP,下例用边沿触发时序电路UDP为D边沿触发触发器建模。初始化语句用于初始化触发器的状态。,对任意未定义的转换,输出缺省为x。,假定D_Edge_FF为UDP定义,它现在就能够象基本门一样在模块中使用,如下面的4位寄存器所示。,6.3.4 边沿触发和电平触发的混合行为,在同一个表中能够混合电平触发和边沿触发项。在这种情况下,边沿变化在电平触发之前处理,即电平触发项覆盖边沿触发项。,6.4 另一实例,下面是3位表决电路的U D P描述。如果输入向量中存在2个或更多的1,则输出为1。,6.5 表项汇总,出于完整性考虑,下表列出了所有能够用于U D P原语中表项的可能值。,