- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章VHDL用户自定义元件UDP
4.1什么是UDP? 在 Verilog 结构模型中,可以使用: 二十多个门级原器件。 用户定义的原语。 UDP 可用于ASIC 库单元设计和小规模芯片和中规模芯片设计。 可以使用 UDP 扩大预定义原器件的范围。 UDP 是自包含的, 不能调用其他的模块。 UDP 既可以用来代替时序逻辑元件,也可以代替组合逻辑元件。 使用真值表来描述 UDP 的行为。 调用 UDP 的方式与调用嵌入的原器件的方式相同。 6 元件初始状态说明也是为进行时序电路UDP的定义而引入的,它的作用是对时序电路上电时刻 即0时刻 的初始状态进行定义,只允许有0、1、x三种状态。缺省为x态。元件初始状态说明用“initial”过程块来实现,比如: initial out x; 就将时序逻辑UDP元件的初始状态定义为“x”。 8 关键词“endprimitive”出现在定义模块的末尾,它标志着UDP定义模块的结束。 下面给出对四选一MUX进行UDP定义描述的一个例子。 UDP 只能有一个输出端,而且必须是端口的说明列表的第一项。 UDP 可以有多个输入端,最多允许有 10 个。 UDP 所有端口变量必须是标量,不允许使用双向端口。 UDP 不支持 Z 逻辑值。 在仿真的开始,UDP 的输出可以使用 initial 语句初始化为一个已知值。 UDP 不能被综合。 UDP特征 UDP 只能有一个输出。如果设计时的输出多于一个,则需要把其它的原器件连接到 UDP 输出,或同时使用多个 UDP。 UDP 输入端最多可以有 10 个,但是当输入的个数多于 5 个时,内存的需要将大大的增加。下页表列出了输入数目不同时,每个输入所需要的内存。 对于上述table表项格式,必须注意: 1 各个输入输出逻辑值只能是 0,1,x 和 ? 中的一个,不能取高阻态“z”。 2 输出端口在primitive定义语句的端口表项中列第一的位置,而输出端逻辑值在table表项内则是位于最后一项。 3 在表项中要用空格分隔开不同的输入端逻辑值, 各个输入端口在table表项中的排列顺序必须与它们在“primitive”定义语句中端口表项内的排列顺序保持严格一致。 UDP元件的逻辑功能是由UDP定义模块内关键词“table”和“endtable”之间的table表的内容所决定的,table表相当于构成了UDP元件输入输出的一个真值表。在进行模拟时,当模拟器发现UDP的某个输入发生改变时,将会自动进入table表查找相匹配的table表项,再把查到的输出逻辑值赋给输出端口。如果在UDP定义模块的table表中找不到与当前输入相匹配的table表项,则输出端将取不定态“x”。所以,在进行UDP元件描述时,应当将尽可能多的输入状态设置到table表项中。 与组合逻辑电路UDP的定义一样,时序逻辑电路UDP定义模块中各个输入端口在table表项中的排列顺序必须与它们在“primitive”语句中端口表项内的排列顺序保持严格一致;在表项中要用空格分隔开不同的输入逻辑值。 时序逻辑电路元件可根据触发方式分为 电平触发 边沿触发 它们对应的table表项格式虽然都是上面给出的格式,但是table表项中输入输出信号可取的状态在两种电路类别下是不同的。 在有些情况下必须对上电时刻 即0时刻 元件的初始状态值加以指定。所以在时序逻辑电路UDP的定义模块中还可以增加“元件初始状态说明”这一项通过initial过程块来指定元件上电时刻的初始状态 0、1或x 。如果该说明项 initial语句 缺省,则元件的初始状态被默认为不定态“x”。 模拟器只有在检测到输入信号发生跳变时才会搜索table表得到新的内部状态值和输出逻辑值。这样table表项中的输入逻辑值部分需要列出输入逻辑值的变化情况即跳变情况。 在Verilog中用一对括号括起来的二个数字“ vw ”的形式来表示从一个状态到另一个状态的转化,其中v、w可以是0、1、x、?之一,因而 01 代表的就是由0往1的上升沿正跳变, 10 则代表了下降沿负跳变, 1x 代表了由1往不定态的跳变, ?? 代表在0,1,x三状态间的任意跳变……。 在这种混合触发形式时序电路类型的UDP定义模块中,稳定的输入状态和输入信号的跳变状况都将对元件的输出和元件内部状态的改变产生影响。所以在进行UDP定义描述时需要同时对输入的稳定取值和变化状态加以考虑。在table表项中要同时包括有稳定输入状态和输入跳变状态。例4-13中所描述的就是一个具有异步清零功能的下降沿D触发器。 【例4-7】图4.1所示电路的UDP描述。 primitive and_or out,a,b,c ; output out; input a ,b
文档评论(0)