在FPGA的规划中,毛刺现象是长时刻困扰电子规划工程师的规划问题之一, 是影响工程师规划功率和数字体系规划有用性和牢靠性的主要因素。因为信号在FPGA的内部走线和通过逻辑单元时构成的推迟,在多路信号改动的瞬间,组合逻辑的输出常常发生一些小的尖峰,即毛刺信号,这是由FPGA 内部结构特性决议的。毛刺现象在FPGA的规划中是不可防止的,有时任何一点毛刺就能够导致体系犯错,尤其是对尖峰脉冲或脉冲边缘灵敏的电路更是如此。
任何组合电路、反应电路和计数器都或许是潜在的毛刺信号发生器,但毛刺并不是对一切输入都有损害,如触发器的D输入端,只需毛刺不呈现在时钟的上升沿并满意数据的树立坚持时刻,就不会对体系构成损害。而当毛刺信号成为体系的发动信号、操控信号、握手信号,触发器的清零信号(CLEAR)、预置信号(PRESET)、时钟输入信号(CLK)或锁存器的输入信号时就会发生逻辑过错。在实践规划过程中,应尽量防止将带有毛刺的信号直接接入对毛刺灵敏的输入端上,关于发生的毛刺,应细心剖析毛刺的来历和性质,针对不同的信号,采纳不同的处理办法加以消除。
因此,战胜和处理毛刺问题对现代数字体系规划尤为重要。本文从FPGA的原理结构的视点讨论了发生毛刺的原因及发生的条件,在此基础上,总结了多种不同的消除办法,在最终结合详细的运用对处理方案进行深化的剖析。
1毛刺发生的原因
以图1的比如剖析毛刺发生的原因:图1是一个3位同步加法计数器,当使能端为高电平时,在每个时钟上升沿时刻,QA ,QB,QC从000逐渐变到111,进入到全1状况后,进位输出端输出半个时钟脉冲宽度的高电平,但从图2仿真成果中能够看到在011改动到100时刻ROC呈现了尖脉冲,即毛刺。
以Xilinx的FPGA为例剖析其内部结构,如图3所示[2]。
FPGA芯片是由可结构的输入输出块(Input/OutputBlock,IOB)、可结构逻辑块(Cinfigur able Logic Block,CLB)和可编程连线资源(Programmable Interconnect Array,PIA)3种可结构单元构成的。IOB坐落芯片内部四周,在内部逻辑阵列与外部芯片封装引脚之间供给一个可编程接口,他主要由逻辑门、触发器和操控单元组成。CLB组成了FPGA的中心阵列,能完结用户指定的逻辑功用;每个CLB主要有一个组合逻辑、几个触发器、若干个多选一电路和操控单元组成;PIA坐落芯片内部的逻辑块之间,经编程后构成连线网络,用于芯片内部逻辑间的相互连接,并在他们之间传递信息。从图3中能够看出,关于不同的输入1、2,到逻辑块(M)的走线或许是不同的,这就构成了输入信号的推迟,假定1、2一起改动,因为推迟的存在,抵达M时就有先有后(这种现象称为竞赛),在逻辑输出端就或许会有险象(也称冒险),即发生了毛刺。在上述比如中的011状况,假定QA与QB一起从1改动到0,而QC提早了2 ns从0变到1 ,发生一个2 ns的高电平,这便是毛刺。也便是说,在FPGA规划中,毛刺发生的底子原因是信号在芯片内部走线时发生的推迟。
2毛刺发生的条件
凭借相同的比如来剖析毛刺发生的条件。QA,QB,QC在每一个时钟上升沿一起发生翻转,但实践中因为推迟的存在,并不能确保QA,QB,QC到D触发器的布线长短共同。假如QC比Q A,QB提早了2 ns,这就构成了2 ns的全1状况,称为“假象全1”,然后导致进位输出发生一个尖脉冲。值得注意的是,在3变到4即011到100时,3位中有2位一起发生翻转,即在同一时刻有大于一个的信号发生改动。因为推迟的效果,多个信号抵达结尾的时刻有先有后,构成了竞赛,由竞赛发生的过错输出便是毛刺。所以,毛刺发生的条件便是在同一时刻有多个信号输入发生改动。
3消除毛刺的办法
知道了毛刺发生的条件,就能够通过改动规划,损坏其条件来削减毛刺的发生。例如,运用格雷码计数器每次输出只需一位跳变的特性,替代一般的二进制计数器,防止了毛刺的发生[3]。还能够对电路进行改善,以消除毛刺对体系的影响。下面临各种办法做别离介绍:
3.1运用冗余项法
运用冗余项消除毛刺有2种办法:代数法和卡诺图法,两者都是通过添加冗余项来消除险象,仅仅前者针关于函数表达式而后者针关于真值表。以卡诺图为例,若两个卡诺圆相切,其对应的电路就或许发生险象。因此,修正卡诺图,在卡诺图的两圆相切处添加一个圆,以添加多余项来消除逻辑冒险。但该法关于计数器型发生的毛刺是无法消除的。
3.2采样法
因为冒险多呈现在信号发生电平跳变的时刻,即在输出信号的树立时刻内会发生毛刺,而在坚持时刻内不会呈现,因此,在输出信号的坚持时刻内对其进行采样,就能够消除毛刺信号的影响,常用的采样办法有2种:一种运用必定宽度的高电平脉冲与输出相与,然后避开了毛刺信号,获得输出信号的电平值。这种办法有必要确保采样信号在适宜的时刻发生,并且只适用于对输出信号时序和脉冲宽度要求不严的状况。另一种更常见的办法叫锁存法,是运用D触发器的输入端D对毛刺信号不灵敏的特色,在输出信号的坚持时刻内,用触发器读取组合逻辑的输出信号。因为在时钟的上升沿时刻,输出端Q=D,当输入的信号有毛刺时,只需不发生在时钟的上升沿时刻,输出就不会有毛刺。这种办法类似于将异步电路转化为同步电路,完成简略,但相同会涉及到时序问题。
3.3吸收法
因为发生的毛刺实践上是高频窄脉冲,故添加输出滤波,在输出端接上小%&&&&&%C就能够滤除毛刺。但输出波形的前后沿将变坏,在对波形要求较严厉时,应再加整形电路,该办法不宜在中间级运用。
3.4推迟法
因为毛刺最终是因为推迟构成的,所以能够找出发生推迟的支路。关于相对推迟小的支路,加上毛刺宽度的推迟能够消除毛刺。但有时跟着负载添加,毛刺会持续呈现,并且,当温度改动,所加的电压改动或要添加逻辑门时,所加的推迟是不同的,有必要从头规划推迟线,因此这种办法也是有局限性的。并且选用推迟线的办法发生推迟会因为环境温度的改动而使体系牢靠性变差。
3.5硬件描绘言语法
这种办法是从硬件描绘言语下手,找出毛刺发生的底子原因,改动言语规划,发生满意要求的功用模块,来替代本来的逻辑功用块。在图1电路中,一个3位计数器或许会在011到100和101到110发生跳变时发生毛刺,究其原因是因为一次有2位发生跳变,能够选用VHDL言语对计数器编写如下,发生的计数模块替代本来一般的计数器。
注意在新的计数器中,每次状况发生改动时Q0,Q1,Q2 只需1位发生跳变,从底子上消除了毛刺。但计数器的输出状况没有规则,不便于其他电路运用。假如期望计数器的输出状况有规则改动以便其他电路运用,能够考虑选用双输出电路,一路是单信号输出,一路是正常计数输出。这种办法从底子上消除了毛刺发生的本源,具有遍及的含义,对体系也不会发生影响,是最为牢靠的办法,其晦气之处是这种办法对VHDL言语要求比较高,有必要对电路的作业状况及其改变有全面的剖析和把握,而跟着电路的复杂度进步,毛刺发生的来历冗杂,完成起来比较困难。
关于一般状况下发生的毛刺,能够尝试用D触发器来消除。但用D触发器消除时,有时会影响到时序,需求考虑许多问题。所以应依据不同状况,细心地剖析毛刺发生的来历和毛刺的性质,结合体系资源挑选详细办法,消除毛刺的影响。
4详细实例
在实践运用中要对一个周期同步脉冲信号进行检测,要求若在给定的时刻内没有检测到同步信号则给出必定脉冲宽度的高电平,作为复位信号。规划思维是选用一个计数器,当有同步信号时对其清零,并一起开端计数,依据给定时刻和体系时钟周期设定计数器的模数,通过给定的时刻后输出高电平,满意宽度后再置低。
实践要求检测时刻大约1 s,脉冲宽度坚持在20 ms左右,选用5片74161级联,第5片计数器的ROC接D触发器的使能端。同步信号输入后,清零并开端计数,若不再呈现同步脉冲,经16^5 个时钟周期后,第5片的RCO端输出一个高电平,使触发器的Q输出D(高电平),再过16^3*2个时钟周期后使第4片的QA,QB,QC,QD接组合门电路输出低电平,接到D触发器的计数器预制端,使Q输出为零。这样就完成经必定延时后的必定宽度的脉冲。经仿真成果如图4所示。
仿真渠道选用Max+PlusⅡ,时钟周期设为10 ns,经核算能够知道在10.485 928 2 ms处发生宽度为81.92μs的高电平,但因为存在数据树立时刻和坚持时刻,仿真成果中的改动时刻并不是严厉与核算相符的,其间 q0,q1,q2,q3是第5片74161的输出,roc1是第4片的进位输出,roc是第5片的进位输出,roc1输出16个高电平后,roc一起输出一个高电平。图4中复位信号reset却在5.247 ms和10.485 297 9 ms处发生。第一个过错的原因是,因为计数器累加,内部走线构成的延时,当第5片计数器从0111状况跳变到1 000时,输入一起有3位改动,致使进位输出roc在roc1的第8个输出时发生了一个尖脉冲,使触发器的Q端提早发生电平改变,导致了在5.247 ms处发生过错复位信号。相同的原因,第4片的进位输出roc1在第14个输出跳变到第15个输出时发生毛刺,而该毛刺使第5片161进入计数状况,在roc端也发生了毛刺,就呈现了图4中复位信号提早翻转的成果。
关于该电路中存在的毛刺问题,能够选用2种办法修正电路。因为该电路对时刻要求的不是很严厉,对第4,5片74LS161取1110状况做最终输出,就防止了由推迟构成的假象全1状况,仿真成果证明这种办法是有用的。但这种办法添加了逻辑门数量,一起也添加了险象发生的或许性。
另一种比较牢靠且常用的办法是用带使能端的D触发器替代本来的触发器,把计数器最终的输出roc接到触发器的使能端,时钟用一致的计数时钟,因为毛刺自身是尖脉冲,不能满意数据的树立时刻和坚持时刻,防止了发生的毛刺对Q的输出的影响。从仿真成果(图5)中能够看到,尽管这种办法并不能消除毛刺,可是毛刺现已不具有损害性,故这是一种简略有用的办法。
5结语
毛刺问题在FPGA规划中十分要害,只需深刻理解毛刺的实质,才有或许真实把握规划的精华,本文就FPGA规划中的毛刺问题进行了深化的讨论,剖析其发生的原因和条件,给出了几种常用的消除办法,期望对FPGA规划者有必定的参阅效果。