FPGA设计中毛刺信号解析
法有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状态做最后输出,就避免了由延迟造成的
- 基于TI最新多核DSP SoC架构解析(05-12)
- ARM linux解析之压缩内核zImage的启动过程(11-10)
- 基于Xilinx V5的DDR2数据解析功能实现(09-12)
- 网站出现“register_globals must is Off”解析(09-12)
- SAX PULL DOCUMENT解析XML总结(09-12)
- 两起西门子PROFIBUS-DP网络干扰故障解析(09-12)