09 Verilog语法_竞争与冒险

发布时间 2024-01-07 12:37:08作者: 米联客(milianke)

软件版本:无

操作系统:WIN10 64bit

硬件平台:适用所有系列FPGA

登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!

1概述

本小节主要讲解Verilog语法竞争与冒险,需要掌握竞争与冒险的概念以及消除方法。

2竞争与冒险

2.1 什么是竞争与冒险

在数字电路设计中,信号传输或者状态变换时在硬件电路上都会有一定的延时。

在组合逻辑电路中,不同路径的输入信号变化传输到同一点门级电路时,在时间上有先有后,这种先后所形成的时间差导致输出产生不应有的尖峰干扰脉冲的现象叫做竞争。

由于竞争的存在,输出信号需要经过一段时间才能达到期望状态,过渡时间内可能产生瞬间的错误输出,这种现象被称为冒险。

竞争不一定有冒险,但冒险一定会有竞争。

例如,对于给定逻辑 F = A & A',电路如图所示。

由于反相器电路的存在,信号 A' 传递到与门输入端的时间相对于信号 A 会滞后,这就可能导致与门最后的输出结果 F 会出现干扰脉冲。如下图所示,产生的干扰脉冲

2.2如何消除竞争冒险

消除竞争冒险的几个方法:

1.加封锁脉冲。在输入信号产生竞争冒险的时间内,引入一个脉冲将可能产生尖峰干扰脉冲的门封锁住。封锁脉冲应在输入信号转换前到来,转换结束后消失。

2.加选通脉冲。对输出可能产生尖峰干扰脉冲的门电路增加一个接选通信号的输入端,只有在输入信号转换完成并稳定后,才引入选通脉冲将它打开,此时才允许有输出。在转换过程中,由于没有加选通脉冲,因此,输出不会出现尖峰干扰脉冲。

3.接入滤波电容。由于尖峰干扰脉冲的宽度一般都很窄,在可能产生尖峰干扰脉冲的门电路输出端与地之间接入一个容量为几十皮法的电容就可吸收掉尖峰干扰脉冲。

4.修改逻辑设计,增加冗余项。利用卡诺图,在两个相切的圆之间,增加一个卡诺圈,并加在逻辑表达式之中。

5.同步电路信号的变化都发生在时钟边沿。对于触发器的 D 输入端,只要毛刺不出现在时钟的上升沿并且不满足数据的建立和保持时间,就不会对系统造成危害,因此可认为 D 触发器的 D 输入端对毛刺不敏感。 利用此特性,在时钟边沿驱动下,对一个组合逻辑信号进行延迟打拍,可消除竞争冒险。延迟一拍时钟时,会一定概率的减少竞争冒险的出现。实践表明,最安全的打拍延迟周期是 3 拍,可有效减少竞争冒险的出现。

6.采用格雷码计数器,计数时相邻的数之间只有一个数据 bit 发生了变化,所以能有效的避免竞争冒险。