基于VHDL的毛刺信号消除

基于VHDL的毛刺信号消除

摘要:针对FPGA设计过程中常见的毛刺现象问题,研究了用于VHDL语言清除毛刺信号的脉冲选择法与时序逻辑保持法。首先,研究了冒险现象与毛刺信号;其次,总结了数字电路消除毛刺信号的主要方法;最后,在基于VHDL语言上运用冗余法、脉冲选择法和锁存法对毛刺信号进行消除。实验结果表明:VHDL语言上运用冗余法、脉冲选择法和锁存法可消除毛刺信号。
关键词:VHDL;毛刺信号 ;FPGA

一、引言

VHDL语言是一种用于电路设计的高级语言。VHDL翻译成中文就是超高速继承电路硬件描述语言,主要应用于数字电路的设计当中,常用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体,既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。在中国VHDL语言被大量运用于FPGA/CPLD/EPLD的设计当中。

在FPGA的设计中,毛刺现象是影响设计效率和数字系统设计有效性和可靠性的主要因素之一。毛刺信号是数字电路设计中的常用词。数字电路中常将毛刺信号定义为采样间距越过了逻辑门限一次以上的任何跳变,主要是指电路输出波形中含有时间很短有规律或没有规律的脉冲。但又对设计没有用处或对数字电路系统产生其他影响,一般都要考虑去除毛刺。

由于信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。
针对以上问题,本文阐述了毛刺信号产生的原因和情况,总结了毛刺信号与冒险现象之间的联系,研究了目前主流的消除毛刺信号的方法,并在此基础上研究了利用冗余法、脉冲选择法和锁存法的VHDL语言消除毛刺信号。

二、冒险现象与毛刺信号

竞争与冒险是数字电路中逻辑门因输入端的竞争而导致输出产生的不应有的尖峰干扰脉冲的现象。竞争是当一个逻辑门的两个输入端的信号同时向相反方向变化时,从变化开始达到稳定状态所需时间不同的现象如下图1为 O U T = A ⋅ B + A ˉ ⋅ C OUT=A\cdot B+\bar{A} \cdot C OUT=AB+AˉC的逻辑电路,当 B 、 C B、C BC都为1时,若 A A A值发生改变,则会发生竞争。

而冒险是逻辑门因输入端的竞争而导致输出产生不应有的尖峰干扰的现象,是一种由于数字电路内部设计或者外部影响造成错误数字信号的不良效应。数字电路中,输入的数字信号改变或进行一些逻辑运算时,如非、与、或等运算时,输出信号没有能完全同步改变,从而引发短暂时间内的错误信号脉冲输出,这种错误信号的脉冲很窄,被称作“毛刺”。

在FPGA器件内部由于信号通过连线和逻辑单元时,有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。且信号的高低电平转换也需要一定的过渡时间。由于存在多方面的因素,信号在FPGA器件内部通过连线和逻辑单元时,都会有一定的延时。图1逻辑电路通过VHDL仿真可以得到如图2所示的仿真图形:

在这里插入图片描述

图2 仿真图中“AF”表示“ A ˉ \bar{A} Aˉ”,“O”表示“ O U T OUT OUT”,为电路的输出信号。从图2的仿真波形可以看出, “ A , B , A ˉ , C A, B,\bar{A},C A,B,Aˉ,C”4个输入信号经过布线延时以后, B B B C C C值都为1时,A值在发生变化时,会产生竞争现象,在仿真图中表现为 A A A值变化时, O U T OUT OUT的波形中含有毛刺信号。而对于一般的组合逻辑电路,例如 O U T = A ⋅ B + C ⋅ D OUT=A\cdot B+C\cdot D OUT=AB+CD, 当 A ˉ = D \bar{A}=D Aˉ=D时,电路会产生冒险现象,波形可能会出现毛刺信号,如下图3为 O U T = A ⋅ B + C ⋅ D OUT=A\cdot B+C\cdot D OUT=AB+CD的仿真图:

在这里插入图片描述

图2、3仿真图中“AF”表示“”,“O”表示“ O U T OUT OUT”,为电路的输出信号。从图中从图3的仿真波形可以看出, “ A , B , C , D A, B, C, D A,B,C,D”4个输入信号经过布线延时以后, 高低电平变换不是同时发生的, 这导致输出信号“ O U T OUT OUT”出现了毛刺。由于无法保证所有连线的长度一致, 所以即使4个输入入信号在输入端同时变化, 但经过PLD内部的走线到达或门的时间也是不一样的, 也必然产生毛刺.

三、数字电路中毛刺信号的消除

1、硬件描述语言

在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器。格雷码计数器每次输出只会有一位跳变,消除了竞争与冒险的发生条件,避免了毛刺信号的产生,十进制数、二进制数与格雷码的转化关系如表1所示:

十进制二进制格雷码
000000000
100010001
200100011
300110010
401000110
501010111
601100101
701110100
810001100
910011101
1010101111
1110111110
1211001010
1311011011
1411101001
1511111000

2、冗余项法

利用冗余项消除毛刺有2种方法:代数法和卡诺图法,两者都是通过增加冗余项来消除冒险现象,只是前者针对于函数表达式而后者针对于真值表。以卡诺图为例,若两个卡诺圆相切,其对应的电路就可能产生险象。因此,修改卡诺图,在卡诺图的两圆相切处增加一个圆,以增加多余项来消除逻辑冒险。但该法对于计数器型产生的毛刺是无法消除的

3、采样法

由于冒险多出现在信号发生电平跳变的时刻,即在输出信号的建立时间内会产生毛刺,而在保持时间内不会出现,因此,在输出信号的保持时间内对其进行采样,就可以消除毛刺信号的影响,常用的采样方法有2种:一种使用一定宽度的高电平脉冲与输出相与,从而避开了毛刺信号,取得输出信号的电平值。这种方法必须保证采样信号在合适的时间产生,并且只适用于对输出信号时序和脉冲宽度要求不严的情况。另一种更常见的方法叫锁存法,是利用D触发器的输入端D对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号。由于在时钟的上升沿时刻,输出端Q=D,当输入的信号有毛刺时,只要不发生在时钟的上升沿时刻,输出就不会有毛刺。这种方法类似于将异步电路转化为同步电路,实现简单,但同样会涉及到时序问题。

4、吸收法

由于产生的毛刺实际上是高频窄脉冲,故增加输出滤波,在输出端接上小电容C就可以滤除毛刺。但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。

5、延迟法

因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。但有时随着负载增加,毛刺会继续出现,而且,当温度变化,所加的电压变化或要增加逻辑门时,所加的延迟是不同的,必须重新设计延迟线,因而这种方法也是有局限性的。而且采用延迟线的方法产生延迟会由于环境温度的变化而使系统可靠性变差

四、VHDL毛刺现象的消除

以上方法都可以大幅度的减少毛刺信号,下面是从以上方法中选取了三种基于VHDL去除毛刺的方法:

1、冗余项法

冗余法是通过利用代数法或卡诺图法增加冗余项来消除冒险现象,从而消除FPGA中的毛刺信号。以 O U T = A ⋅ B + A ˉ ⋅ C OUT=A\cdot B+\bar{A}\cdot C OUT=AB+AˉC为例,因为 A ⋅ B + A ˉ ⋅ C = A ⋅ B + A ˉ ⋅ C + B ⋅ C A\cdot B+\bar{A}\cdot C=A\cdot B+\bar{A}\cdot C+B\cdot C AB+AˉC=AB+AˉC+BC,所以 B ⋅ C B\cdot C BC为冗余项。所以逻辑电路 O U T = A ⋅ B + A ˉ ⋅ C OUT=A\cdot B+\bar{A}\cdot C OUT=AB+AˉC中可添加冗余项 B ⋅ C B\cdot C BC来消除毛刺现象。添加冗余项B后的逻辑电路图如图4所示:

是东方大哥

对图4所示逻辑电路图的仿真图如下图5所示

在这里插入图片描述

图5仿真图中“AF”表示“ A ˉ \bar{A} Aˉ”;“O”表示“ O U T OUT OUT”,为电路的输出信号;“TEST”表示不采用冗余法的输出信号。从图5中可以看出通过冗余法可以完全消除毛刺信号,并保持波形的完整性,但对于复杂逻辑电路和计数型逻辑电路差生的毛刺是难以消除的。

2、采样法——脉冲选择法

冒险出现在信号发生电平转换的时刻,也就是说在输出信号的建立时间内会发生冒险,而在输出信号的保持时间内是不会有毛刺信号出现的。如果在输出信号的保持时间内对其进行"采样",即在 O U T OUT OUT前端加入一个采样信号,就可以消除毛刺信号的影响,如图6所示为 O U T = A ⋅ B + A ˉ ⋅ C OUT=A\cdot B+\bar{A}\cdot C OUT=AB+AˉC采用脉冲选择法的逻辑电路图:

在这里插入图片描述

图6逻辑电路 O U T = A ⋅ B + A ˉ ⋅ C OUT=A\cdot B+\bar{A}\cdot C OUT=AB+AˉC脉冲选择法逻辑电路图通过VHDL仿真后的仿真图如图7所示:

在这里插入图片描述

图7仿真图中“AF”表示“ A ˉ \bar{A} Aˉ”;“O”表示“ O U T OUT OUT”,为电路的输出信号;“TEST”表示不采用脉冲选择法的输出信号;SAMPLE”为采样信号。从图5中可以看出,脉冲选择法可有效的消除毛刺信号,但缺点是需人为的调节SAMPLE信号的大小及出现时间。

3、采样法——锁存法

D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,也说明毛刺对D触发器的D输入端不敏感,所以利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用D触发器读取组合逻辑的输出信号,将异步电路转化为同步电路,与“三、数字电路中毛刺信号的消除”中的方法2原理一致。图8是应用了这种方法的电路图:

在这里插入图片描述

图8逻辑电路 O U T = A ⋅ B + A ˉ ⋅ C OUT=A\cdot B+\bar{A}\cdot C OUT=AB+AˉC脉冲选择法逻辑电路图通过VHDL仿真后的仿真图如图9所示

在这里插入图片描述

图7仿真图中“AF”表示“ A ˉ \bar{A} Aˉ”;“O”表示“ O U T OUT OUT”,为电路的输出信号;“TEST”表示不采用锁存法的输出信号;“CLK”为采样时钟信号。从图9可以看出,毛刺信号可以被清除,这是因为D触发器的D输入端对毛刺信号不敏感的特点, 在输出信号的保持时间内, 用D触发器读取组合逻辑的输出信号, 这种方法类似于将异步电路转化为同步电路,从而避免冒险现象,消除毛刺信号。

从以上分析看出, 通过上述可用于VHDL的3种逻辑电路处理可以有效减少毛刺的产生, 从而减少逻辑错误, 提高芯片工作的稳定性.

五、结语

本文阐述了毛刺信号产生的原因是由于信号在FPGA内部具有过渡时间,使信号作用时间不同,造成组合逻辑电路的冒险现象导致产生毛刺信号。总结了目前主流的消除毛刺信号的5种方法。在此基础上,基于VHDL语言使用冗余法、脉冲选择法和锁存法改善组合逻辑电路,可以有效消除毛刺信号,提高芯片工作的稳定。

参考文献

[1]李聪,向新,王瑞,孙晔.基于FPGA的数字信号处理模块设计与实现[J].计算机工程与设计,2020,41(06):1586-1591.
[2]陈宇泽,宋绪勇.FPGA设计中的相关问题及处理对策[J].中国高新区,2017(13):20.
[3]章若冰.电路竞争冒险及其改进策略研究[J].电脑知识与技术,2017,13(07):195-196.
[4]肖军.探讨FPGA设计中的关键问题[J].通信电源技术,2017,34(01):80-81.
[5]李烨.组合逻辑电路竞争冒险现象消除方法仿真分析[J].镇江高专学报,2015,28(03):57-60.
[6]刘高潮.基于数字电路竞争与冒险的仿真分析[J].网络财富,2010(03):135-136.
[7]李良钰.FPGA中竞争冒险问题的研究[J].可编程控制器与工厂自动化,2005(09):91-95.
[8]李良钰.FPGA中竞争冒险问题的研究[J].电源世界,2005(07):66-70.
[9]宣丽萍.FPGA器件的竞争与冒险现象及消除方法[J].现代电子技术,2005(10):119-120.
[10]陆维佳,潘玉.FPGA设计中毛刺问题的研究[J].现代电子技术,2005(09):36-38+41.
[11]李雪梅.FPGA设计中由于延迟产生的冒险现象分析及消除[J].微计算机应用,2005(02):201-203.
[12]周奇勋,王勉华,乐春峡.基于FPGA的VHDL语言设计优化[J]. 仪器仪表学报,2003(S1):595-598.

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三天后的承诺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值