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

合集下载

(整理)FPGA中的亚稳态毛刺异步FIFO.

(整理)FPGA中的亚稳态毛刺异步FIFO.

(整理)FPGA中的亚稳态毛刺异步FIFO.1亚稳态1.1亚稳态的定义亚稳态是指触发器无法在某个规定时间段内达到一个确定的状态。

当一个触发器进入亚稳态时,该触发器的输出何时能稳定以及会稳定在哪个状态都不能确定。

在达到稳定之前的时间,触发器输出一些中间电平或者处于震荡状态,并且这种无用的输出电平可以沿着信号通路上级联的触发器传播下去。

1.2亚稳态的产生机制如果触发器的setup time、hold time不满足,就可能产生亚稳态,此时触发器的输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,这段时间称为决断时间(resolution time)。

经过resolution time 之后Q端将稳定到0或者1,但究竟是0还是1和输入没有关系。

图1是一个处于亚稳态的寄存器的输出的例子。

1.3亚稳态的危害与避免亚稳态会导致逻辑误判,如果发生亚稳态的部位对系统的稳定至关重要同时缺少防错机制,则可能导致系统崩溃(逻辑挂死)。

逻辑误判可以通过特殊设计减轻危害,例如异步fifo的gray设计。

比发生部位本身的逻辑误判更严重的是亚稳态传递。

亚稳态传递会扩大故障面,让问题变得复杂。

在完全同步的设计中,CAD工具可以方便的分析每一个触发器的建立保持时间。

理论上一个时序完全收敛的纯同步设计不会有亚稳态问题。

和有赖于时序分析的完备性,例如所使用的timing mode与实际芯片及其工作条件的吻合度,实际时钟抖动、偏斜与预期是否一致等。

扩大时序裕量可以降低亚稳态发生的概率。

当前一个数字芯片上往往有多个时钟域,时钟域之间的异步设计是必不可少的。

只要系统中存在异步设计,则亚稳态无法避免,但我们可以尽量限制亚稳态的影响范围并通过特殊的逻辑设计容忍可能的逻辑误判。

1.3.1缩小亚稳态的影响范围a.“将异步输出寄存器的扇出限制为1”如图2所示,让异步输出寄存器的扇出为1相当于减少了异步路径的条数。

若异步信号有多个输出,则可能因为路径延迟和时钟偏斜导致有的寄存器采到有效值,有的寄存器进入不确定的状态,如图2和图3所示。

毛刺的消除

毛刺的消除

毛刺
时序仿真输出波形
引入了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中的毛刺信号解析

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种可构造单元构成的。

数字电路毛刺消除问题

数字电路毛刺消除问题

数字电路⽑刺消除问题参考博⽂:和1. ⽑刺的产⽣原因:冒险和竞争使⽤分⽴元件设计电路时,由于PCB在⾛线时,存在分布电容和电容,所以在⼏ns内⽑刺被⾃然滤除,⽽在PLD内部没有分布电感和电容,所以在PLD/FPGA设计中,竞争和冒险问题⽐较重要。

信号在FPGA器件内部通过连线和逻辑单元时,都有⼀定的延时。

延时的⼤⼩与连线的长短和逻辑单元的数⽬有关,同时还受器件的制造⼯艺、⼯作电压、温度等条件的影响。

信号的⾼低电平转换也需要⼀定的过渡时间。

由于存在这两⽅⾯因素,多路信号的电平值发⽣变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现⼀些不正确的尖峰信号,这些尖峰信号称为"⽑刺"。

如果⼀个组合逻辑电路中有"⽑刺"出现,就说明该电路存在"冒险"。

可以概括的讲,只要输⼊信号同时变化,(经过内部⾛线)组合逻辑必将产⽣⽑刺。

将它们的输出直接连接到时钟输⼊端、清零或置位端⼝的设计⽅法是错误的,这可能会导致严重的后果。

所以我们必须检查设计中所有时钟、清零和置位等对⽑刺敏感的输⼊端⼝,确保输⼊不会含有任何⽑刺。

存在逻辑冒险的电路:仿真波形:2. 判断是否存在冒险关于冒险的知识,数电书上有详细的说明,当时没有认真学,只了解个⼤概,现在⼜要重新看...还记得当年画卡诺图时的痛苦冒险按照产⽣⽅式分为静态冒险 & 动态冒险两⼤类。

静态冒险指输⼊有变化,⽽输出不应该变化时产⽣的窄脉冲;动态冒险指输⼊变化时,输出也应该变化时产⽣的冒险。

动态冒险是由静态冒险引起的,所以,存在动态冒险的电路也存在静态冒险。

静态冒险根据产⽣条件不同,分为功能冒险和逻辑冒险两种。

当有两个或两个以上的输⼊信号同时变化时,在输出端有⽑刺,称为功能冒险;如果只有⼀个输⼊变量变化时,出现的冒险称为逻辑冒险。

因为动态冒险是由静态冒险引起的,所以消除了静态冒险,也就消除了动态冒险。

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亚稳态和毛刺小结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为时钟延时,一般时钟延时可以忽略。

Verilog如何消除毛刺

Verilog如何消除毛刺?(VHDL也能同理消除毛刺)0 引言现场可编程门阵列(FPGA)是1985年由美国Xilinx公司首先推出的一种新型的PLD。

FPGA在结构上由逻辑功能模块排列成阵列,并由可编程的内部连线连接这些功能模块来实现一定的逻辑功能。

FPGA的功能由逻辑结构的配置数据决定,这些配置数据存放在片外的EPROM或其他存储器上。

由于FPGA规模大、集成度高、灵活性更强,实现的逻辑功能更广,因此已逐步成为复杂数字硬件电路设计的首选。

1 FPGA的基本结构FPGA通常由可编程逻辑单元 CLB、可编程输入输出单元lOB及可编程连线资源组成。

通常CLB包含组合逻辑部分和时序逻辑部分,组合逻辑一般又包括查询表(Look-up Table)和相关的多路选择器(Multiplexer)。

而时序逻辑部分则包含触发器(DFF)和一些相关的多路选择器。

lOB主要提供FPGA内部和外部的接口,连线资源则提供CLB与lOB之间以及各CLB之间的通讯功能。

FPGA芯片的基本结构如图1所示,其中开关盒可对水平和竖直连线资源进行切换,连接盒可将CLB的输入输出连接到连线资源中。

2 verilog HDL语言的特点与优化设计Verilog HDL语言是硬件描述语言的一种。

它能形式化地抽象表示电路的行为和结构,同时支持层次设计中逻辑和范围的描述。

设计时可借用高级语言的精巧结构来简化电路行为的描述。

此外,该语言还具有电路仿真与验证机制,可以保证设计的正确性,同时支持电路描述由高层到低层的综合转换,且硬件描述与实现工艺无关,便于文档管理,易于理解和设计重用。

由于Verilog HDL语言易于理解、设计灵活,因此,Verilog HDL语言已经成为目前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设计中毛刺信号解析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

个人收集整理仅供参考学习2013届本科毕业论文FPGA电路设计中的毛刺问题的研究学院:物理与电子工程学院专业班级:电子信息科学与技术09-11班学生姓名:谢永红指导教师:皇甫海燕老师答辩日期:2013年5月11日新疆师范大学教务处目录1 引言 (1)2 FPGA的相关概念 (1)2.1 FPGA的基本特点 (1)2.2 FPGA的工作原理 (2)3 简述FPGA电路中毛刺的产生 (2)3.1 毛刺产生的原因 (2)3.2 毛刺产生条件的分析 (4)4 毛刺的消除方法 (4)4.1 冗余项法 (4)4.2 采样法 (5)4.3 吸收法 (5)4.4 延迟法 (5)4.5状态机控制法 (5)4.6 硬件描述语言法 (6)5 实例 (7)5.1 输出加D触发器 (9)5.2在有限状态机的基础上采用时钟同步信号 (10)5.3直接把状态机的状态码作为输出信号 (13)6 结语 (15)参考文献 (16)致谢 (17)FPGA电路设计中的毛刺问题的研究摘要:目前,FPGA器件已经越来越广泛地应用在数字电路设计等领域,但它的毛刺问题却成为一个影响其可靠性和精确性的重要因素。

在FPGA设计中毛刺现象非常普遍,而毛刺的出现往往导致系统结果的错误。

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

关键词: FPGA;毛刺;采样;竞争冒险Burr problem of FPGA circuit design research Abstract:The FPGA device at present, already more and more widely used in the field of digital circuit design and so on, but the burr problem has become one of important factors affecting its reliability and accuracy. Burr phenomenon is very common in the FPGA design, and the emergence of the burr tends to lead to the system results error. This paper discusses the cause of burr and the creation of conditions, to counter and multiplier as an example for solutions conducted in-depth analysis in detail, summarizes the different types of solutions, and through the simulation shows that these methods can effectively eliminate or reduce to a certain extent burr in digital circuit design.Key words:FPGA; Burr; Sampling; Competition adventure1 引言随着半导体技术的飞速发展,FPGA(Field Programmable Gate Array)的计算能力、容量及其可靠性也有了大幅的提高。

在现代数字通信系统中得到广泛的应用。

目前采用FPGA设计数字电路已成为数字电路系统领域的主要设计方式之一。

而在FPGA的设计中,毛刺现象是长期困扰电子设计工程师的一个重要设计问题之一,也是影响设计者设计效率和数字系统设计中有效性和可靠性的主要因素。

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

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

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

本文从FPGA的原理结构的角度探讨了产生毛刺的原因及产生的条件,在此基础上,总结了多种不同的消除方法。

2 FPGA的相关概念FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上更进一步发展的产物。

它作为专用集成电路(ASIC)领域中的一种半定制电路,既处理了定制电路的不到位,又克服了原有可编程器件门电路数量有限的缺点。

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新的概念,里边包括可配置逻辑模块CLB (Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分[1]。

2.1 FPGA的基本特点主要有:1)采用FPGA设计ASIC电路,用户不需投资生产,就能得到合适的芯片。

2)FPGA也可做其它全定制或半定制ASIC电路中的试样片。

3)FPGA内部有丰富的触发器和I/O引脚。

4)FPGA是ASIC电路中设计周期最短、研发费用最低并且风险最小的器件之一。

5)FPGA采用高速CHMOS工艺,功耗低,可与CMOS、TTL等电平兼容。

综上所诉,无疑FPGA芯片是小批量系统(System)、提高系统(System)集成度、可靠性的上好选择之一。

目前FPGA的品种繁多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等等。

2.2 FPGA的工作原理FPGA的工作状态是由存放在片内RAM中的程式来设置的,因此,工作时需对其片内的RAM进行编程。

用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内的编程模块RAM中,配置完成后,FPGA进入工作状态。

掉电后,FPGA则还原成白片,里边的所有逻辑关系消失,因此,FPGA芯片能够反复使用。

FPGA的编程不需要专用的FPGA编程器,通用的EPROM、PROM编程器即可。

如需修改FPGA功能,只需要换一片EPROM即可。

这样,同一片FPGA,不同的编程数据,还可产生不同的电路功能。

因此,FPGA的用法非常灵活。

FPGA有多种配置模式:1)并行主模式,一片FPGA加一片EPROM的方式;2)主从模式可支持一片PROM对多片FPGA进行编程;3)串行模式可采用串行PROM编程FPGA;4)外设模式可将FPGA作为微CPU的外部设备,由微CPU对其进行编程。

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

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

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

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

另外,由于FPGA及其它CPLD器件内部的电容和电感对电路中的毛刺几乎没有过滤作用,最终这些毛刺信号就会被“保留”并传递到下一级,从而使得毛刺问题更为突出。

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

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

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

下面我们将以乘法运算电路来说明毛刺的产生以及消除[2]。

3.1 毛刺产生的原因图3-1 3位计数器以图3-1的3位计数器的例子简单分析毛刺产生的原因:图3-1是一个3位同步加法计数器,当使能端EN为高电平时,在每个时钟的上升沿时刻QA、QB、QC从000逐步变到111,而进入到全1状态后,进位输出端将输出半个时钟脉冲宽度的高电平,但是从图3-2仿真结果中我们可以看到在011变化到100时刻时RCO出现了一个尖脉冲,即毛刺[2]。

图3-2 仿真结果以Xilinx的FPGA为例分析其内部结构,如图3-3所示:图3-3 FPGA的内部结构FPGA芯片是由可构造的输入输出块(Input/OutputBlock,IOB)、可构造逻辑块(Cinfigurable Logic Block,CLB)和可编程连线资源(Programmable Interconnect Array,PIA)3种可构造单元构成的。

输入输出块(IOB)位于芯片内部四周,其在内部逻辑阵列与外部芯片封装引脚之间提供了一个可编程的接口,它主要由逻辑门、触发器以及控制单元组成;可构造逻辑块(CLB)是FPGA 的核心阵列,能完成所有用户指定的逻辑功能;每个可构造逻辑块(CLB)主要有一个组合逻辑、几个触发器、若干个多选一电路和控制单元组成;可编程连线资源(PIA)位于芯片内部的逻辑块之间,经编程之后形成连线网络,用于芯片内部逻辑间的相互连接,并在它们之间传递信息。

从图3-3中我们可以看出,对于不同的输入1和2,到逻辑块(M)的走线可能是不一样的,所以就造成了输入信号的延迟,假设1和2同时发生变化,由于延迟的存在,到达M的时候就会有先有后(这种现象称为竞争),在逻辑输出端就可能会出现险象(也称冒险),即产生了毛刺。

在上述3位计数器例子中的011状态,假设QA与QB同时从1变到0,而QC提前2ns从0变到1,就会产生一个2ns的高电平,这就是毛刺。

也就是说,在FPGA设计中,毛刺产生的最根本原因就是信号在芯片内部走线时产生的延迟[3]。

3.2 毛刺产生条件的分析借助上述3位计数器的例子来分析毛刺产生的条件。

QA,QB,QC在每一个时钟上升沿同时发生翻转,但在实际中,由于延迟的存在,并不能保证QA,QB,QC到D触发器的布线长短的一致。

如果QC比QA,QB提前了2ns,这就会形成2ns的全1状态,称为“假象全1”,进而导致进位输出产生一个尖脉冲。

值得注意的是,在3变到4,即011到100时,3位中有2位同时发生翻转,即在同一时刻有大于一个信号的信号发生改变。

由于延迟的作用,使多个信号到达终点的时间有先有后,就形成了竞争,而由竞争产生的错误输出就称为毛刺。

相关文档
最新文档