FPGA中的毛刺信号解析

合集下载

毛刺的消除

毛刺的消除

毛刺
时序仿真输出波形
引入了D 引入了D触发器的长帧同步时钟的产生
module longframe2(clk,strb); parameter DELAY=8; input clk; output strb; reg[7:0] counter; reg temp,strb; always@(posedge clk) begin if(counter==255) counter<=0; else counter<=counter+1; end always@(posedge clk) begin strb<=temp;end //引入触发器 //引入触发器 always@(counter) begin if(counter<=(DELAY-1)) temp<=1; else temp<=0; if(counter<=(DELAYend endmodule
消除毛刺后的时序仿真输出波形
延时方式去毛刺
延时方式去毛刺
逻辑方式去毛刺
逻辑方式去毛刺
定时方式去毛刺
定时方式去毛刺
跨时钟域设计
module metastable(clka,clkb,ina,outb); input clka,clkb,ina; output outb; reg outb,outa; always @(posedge clka) outa=ina; always @(posedge clkb) outb=outa; outa outb~reg0 endmodule
FPGA设计中毛刺的消除 FPGA设计中毛刺的消除
信号在FPGA器件内部通过连线和逻辑门时, 信号在FPGA器件内部通过连线和逻辑门时, 都有一定的延时。因此多路信号的电平值发生 变化时,在信号变化的瞬间,组合逻辑的输出 有先后顺序,往往会出现一些不正确的“毛刺” 有先后顺序,往往会出现一些不正确的“毛刺” (Glitch),称为“冒险”(Hazard)现象。 Glitch),称为“冒险” Hazard)现象。 这些毛刺在电路板的设计中由于PCB走线时, 这些毛刺在电路板的设计中由于PCB走线时, 存在分布电感和分布电容,所以许多毛刺能够 被自然滤除,而在PLD内部没有分布电感和电 被自然滤除,而在PLD内部没有分布电感和电 容,这些毛刺将被完整地保留并向下一级传递, 所以在FPGA设计中,如何消除毛刺就变得很 所以在FPGA设计中,如何消除毛刺就变得很 重要。

毛刺信号消除电路的研究与实现

毛刺信号消除电路的研究与实现

第32卷第4期集宁师专学报Vol.32,No.42010年12月Journal of JiningTeachers College Dec.2010收稿日期:2010-06-13作者简介:聂阳,男,汉族,内蒙古乌兰察布市人,硕士,研究方向:系统级芯片设计、D SP 电路设计。

基金资助:2010年度内蒙古自治区高等学校科学研究项目:《基于FPG A 的数字电路教学方法变革与研究思路》(编号:N )毛刺信号消除电路的研究与实现聂阳,赵鹏宇,荆丽丽(集宁师范学院物理系,内蒙古乌兰察布012000)摘要:本文分析了毛刺信号的消除电路,以电路实例给出毛刺信号消除的三种电路解决方案,并利用FPG A 和ED A 仿真软件给出了仿真结果,具有一定的工程指导意义。

关键词:毛刺信号;延时电路;定时电路中图分类号:TN 492文献标识码:A 文章编号:1009-7171(2010)04-0011-051引言信号在数字系统内部传输时,都有一定的延时。

延时的大小不仅与连线的长短和逻辑单元的数目有关,还受器件的制造工艺、工作电压、温度等条件的影响;同时信号的高低电平转换也需要一定的过渡时间[]1。

当多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为毛刺。

1.1电路理论分析根据理论分析,若实现如下电路y=ab +cd ,其电路原理图和仿真图如图1、2所示,从图2中可以看到4个信号都发生变化时,电路的输出产生毛刺。

图1电路原理图图2电路仿真图J 1021212集宁师专学报第32卷2毛刺信号消除电路解决方案2.1消除毛刺信号—增加冗余项函数式和真值表所描述的是静态逻辑,而竞争则是从一种稳态到另一种稳态的过程。

因此竞争是动态过程,它发生在输入变量变化时。

此时,若在两个卡诺图圆圈相切处增加一个冗余的卡诺图圈,即卡诺图的两圆相切处增加一个圆,可以消除逻辑冒险。

FPGA设计中抗干扰问题及毛刺信号的消除

FPGA设计中抗干扰问题及毛刺信号的消除

制干 扰 ,本 文从 不 同 的 角度 深 入探 讨 了抗 干扰 及 毛刺 产 生 的原 因及 产 生 的条件 ,总 结 了多种 不 同
的解决方法,使得 F G 设计更加优化 ,合理。 PA
关键 词 :F G ; 抗 干扰 ; 毛刺信 号 PA 中图分 类号 :T 3 i1 P3. 1 文献标 识码 :A 文 章编 号 : 10 - 0 2 0 )0.090 0 94 1(0 9 60 5.4 6
器。
( )F G 二 P A中干 扰 的原 因
信号 在F G 器件 内部通过 连线 和逻 辑单元 PA 时, 都有一定 的延时。 延时的大小与连线的长短和
逻辑单元的数 目 有关 ,同时还受器件的制造工艺 、
在F G 设 计 中 ,设 计思 路一般 是 微处 理 器 和 PA F G 相 结合 的方 法 ,另外 ,还 有 电源 、信 号 的采 PA
第 l 卷 第 6 期 7 20 0 9年 1 2月
呼伦贝尔学院学报
J u n l f Hu u b ir Co l o r a l n e e l o e
No. 6
Voi1 .
P bih d i c mb r 0 9 u l e n De e e. 0 s 2

5 9.
P M、 S 可编程连线 P 组成 ,其中我们主要采用编 I
程 的方式 控制其 内部 门阵列 的连 接情况 。 另外 一种 较常用 的 F G P A为 Atr公 司生产 的 F E 0 E系 l a e L X1K
输的路径不同, 或是各种器件延迟时间不同 , 这种
现象也称为竞争 。 当然所以竞争都有可能造成输 出 波形产生不应有的尖脉冲 ( 俗称毛刺 ) 即产生毛 , 刺信号, 这种现象成为冒险。 如果布尔式中有相反 的信号则可能产生竞争和 冒险现象。

FPGA亚稳态和毛刺小结

FPGA亚稳态和毛刺小结

FPGA亚稳态和毛刺小结1首先介绍一下建立时间和保持时间的基本概念:1.1建立时间和保持时间:图1.1tsh:建立时间,th:保持时间建立时间:是指时钟触发器上升沿到来之前,数据稳定不变的时间。

如果建立时间不够,则数据不能在这个时钟进入触发器。

保持时间:是指时钟触发器上升沿到来之后,数据保持不变的时间。

如果保持时间不够,则数据同样不能被打入触发器。

由于PCB走线时,存在分布电感和电容,所以几纳秒的毛刺将被自然滤除,而在PLD内部决无分布电感和电容,所以在PLD/FPGA设计中,竞争和冒险问题将变的较为突出。

2关于毛刺的基本概念:信号在FPGA内通过连线和逻辑单元时,都会产生延时。

延时产生的原因:①:连线的长短和逻辑单元的数目,②:受器件的制造工艺、工作电压、温度等条件的影响,所以在信号变化的瞬间,组合逻辑的输出有先后顺序,往往会产生一些尖峰的信号,这些信号称为毛刺。

如果有毛刺,该电路称为冒险电路。

只由内部电路决定。

看下面的例子:我们可以看到,A,B,C,D四个输入信号,最后导致输出出现毛刺。

原因是A,B,C,D信号输入不是同时发生。

(即使同时发生,它们各自由于连线和逻辑单元的原因,到达门电路的时间也不同。

)所以可以说,只要输入信号同时发生变化,由于走线的原因,必将产生毛刺。

所以我们不能直接将其输出,要进行一些措施。

方法一:格雷码代替二进制计数器,由于格雷码每次只有一位进行变化,不满足产生毛刺的条件。

所以可以减小错误方法二:另一种更常见的方法是利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号,这种方法类似于将异步电路转化为同步电路。

如图:由于异步输入不是总能满足所馈送的触发器满足建立时间和保持时间,所以常常会产生亚稳态。

3关于亚稳态知识的基本概念图1.2:采用一个时钟同步下的模型其中:tco为触发器数据输出延时;T delay=T comb 为经过组合逻辑的延时;Tsetup(tsu)为建立时间;Tpd为时钟延时,一般时钟延时可以忽略。

毛刺与抗干扰

毛刺与抗干扰

毛刺与抗干扰在FPGA的设计中,毛刺现象是影响设计效率和数字系统设计有效性和可靠性的主要因素。

由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由FPGA内部结构特性决定的。

毛刺现象在FPGA的设计中是不可避免的,有时任何一点毛刺就可以导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。

因此,克服和解决毛刺问题对现代数字系统设计尤为重要。

一、FPGA电路中毛刺的产生我们知道,信号在FPGA器件中通过逻辑单元连线时,一定存在延时。

延时的大小不仅和连线的长短有关,还和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。

因此,信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。

这时,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”。

另外,由于FPGA及其他的CPLD器件内部的分布电容和电感对电路中的毛刺基本没有什么过滤作用,因此这些毛刺信号就会被“保留”并传递到下一级,从而使得毛刺问题更加突出。

可见,即使是在最简单的逻辑运算中,如果出现了多路信号同时跳变的情况,在通过内部走线之后,就一定会产生毛刺。

而现在在数字电路设计及数字信号处理中的信号往往是由时钟控制的,多数据输入的复杂运算系统,甚至每个数据都由相当多的位数组成。

这时,每一级的毛刺都会对结果有严重的影响,如果是多级的设计,那么毛刺累加后甚至会影响整个设计的可靠性和精确性。

总的来说,毛刺发生的条件就是同一时刻有多个信号输入发生改变。

二、毛刺的消除方法1.利用冗余项法利用冗余项消除毛刺有两种方法:代数法和卡诺图法,两者都是通过增加冗余项来消除险象,只是前者针对于函数表达式而后者针对于真值表。

以卡诺图为例,若两个卡诺图的两圆相切,其对应的电路就可能产生险象。

因此,修改卡诺图,在卡诺图的两圆相切处增加一个圆,以增加多余项来消除逻辑冒险。

FPGA毛刺产生的原因及其抑制方法

FPGA毛刺产生的原因及其抑制方法

图 2给出 了一个逻 辑 冒险 的电路 ,从图 3的仿真 波形可
以看 出, “ A、B、C 、D ”4个输入 信号 经过布 线延时 以后 ,
高低 电平变换不 是同时发生 的,这导致输 出信号 “ U ”出现 OT
了毛刺 。可 以概括 地讲 ,只要输 入信号 同时变化 ,组合逻辑
必将产生毛刺 。 将 它们的输 出直接连接 到时钟输 入端 、清零
8 … A .
tu s
t — h
3 … B .
时 钟
t: s 建立时间 t: u h保持时间
8. . C .
… . .

图 1 建 立与 保 持 时 间
图 2 逻 辑 冒 险 的 电 路
D C B A ot u 0 。 0 O 0 O I , 一 l I 。 ; : i : ; :
2 竞争和 冒 险
在使用分立元件设计数字 系统时 ,由于 P B走 线时 ,存 C 在分布 电感 和电容 ,所 以几 纳秒 的毛刺将被 自然滤 除 ,而在
P D 内部 决无分 布 电感 和 电容 ,所 以在 P DF G 设计 中 , L L /P A 竞争和 冒险问题将变得较为突出 。 信号在 F G 器件 内部 通过连 线和逻辑 单元 时 ,都有 一 PA
电脑 编程技 巧与维护 பைடு நூலகம்
FG P A毛刺产生 的原 因及其抑制 方法
孙 晓东
( 山电视发射台 ,唐 山 0 3 0 ) 唐 60 0 摘 要 : 简单分析 了 P DF G L /P A内部产生毛刺 、影响和其产生过 程、原理 。通过改变毛刺产 生条件 ( 用格 雷码取 采
代 二 进 制 计 数 器) ,采 用 同步 电路 等 方 法 减 少其 危 害 。

电路设计中的毛刺问题的研究

电路设计中的毛刺问题的研究

FPGA电路设计中的毛刺问题的研究目录1 引言 (1)2 FPGA的相关概念.................................. 错误!未定义书签。

2.1 FPGA的基本特点 (1)2.2 FPGA的工作原理 (1)3 简述FPGA电路中毛刺的产生 (2)3.1 毛刺产生的原因 (2)3.2 毛刺产生条件的分析......................... 错误!未定义书签。

4 毛刺的消除方法 (2)4.1 冗余项法................................... 错误!未定义书签。

4.2 采样法..................................... 错误!未定义书签。

4.3 吸收法..................................... 错误!未定义书签。

4.4 延迟法..................................... 错误!未定义书签。

4.5状态机控制法 (2)4.6 硬件描述语言法............................. 错误!未定义书签。

5 实例............................................. 错误!未定义书签。

5.1 输出加D触发器 (4)5.2在有限状态机的基础上采用时钟同步信号 (6)5.3直接把状态机的状态码作为输出信号 (8)6 结语 (10)参考文献 (11)致谢 (12)FPGA电路设计中的毛刺问题的研究摘要:目前,FPGA器件已经越来越广泛地应用在数字电路设计等领域,但它的毛刺问题却成为一个影响其可靠性和精确性的重要因素。

本文探讨了毛刺产生的原因及产生的条件,以计数器和乘法器为例对解决方案进行了深入具体地分析,总结了多种不同的解决方法,并且通过仿真说明这几种方法能够有效地消除或在一定程度上减少数字电路设计中出现的毛刺。

FPGA设计中毛刺信号解析

FPGA设计中毛刺信号解析

FPGA设计中毛刺信号解析
在FPGA(Field-Programmable Gate Array)设计中,毛刺信号是一种不稳定的、短暂的、高频的信号噪声。

这种信号可能是由于电路中的突变或者切换引起的,通常会引起系统性能下降或者功能异常。

因此,解析和处理毛刺信号对于FPGA设计来说非常重要。

下面将介绍如何解析毛刺信号以及常见的解决方法。

一种常见的解决方法是通过信号滤波来降低毛刺的影响。

滤波可以通过数字滤波器实现,常见的滤波器包括低通滤波器、中通滤波器和带通滤波器。

根据毛刺信号的特征,选择适合的滤波器参数,可以有效地去除毛刺信号。

另一种方法是通过信号的去抖动处理来消除毛刺影响。

去抖动是一种通过延迟信号的上升或下降边沿的方法,以消除信号中的瞬时毛刺。

通过添加适当的延迟,我们可以使得毛刺信号在系统中不被处理,从而减少对系统性能的影响。

此外,我们还可以通过时序优化来减少毛刺问题。

时序优化包括调整时钟频率、优化时序路径和消除时序冲突等。

通过优化时序,我们可以使得信号在FPGA中的传输更加平稳和稳定,从而减少毛刺信号的出现。

在一些特殊情况下,信号毛刺可能需要通过硬件逻辑设计来解决。

例如,我们可以使用状态机、锁存器或者计数器等特殊电路来对毛刺信号进行抑制和消除。

综上所述,FPGA设计中毛刺信号解析是一个复杂的问题,需要综合考虑信号源、滤波、去抖动、时序优化和硬件逻辑等方面。

通过合理选择
解决方案,并借助模拟和数字混合仿真工具的帮助,我们可以有效地解析和处理毛刺信号,提高系统性能和功能稳定性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FPGA设计中毛刺信号解析在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设计者有一定的参考作用。

相关文档
最新文档