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设计中,如何消除毛刺就变得很 重要。

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 0 0 1 —2 2 6 5 ( 2 0 1 3 ) 1 0— 0 0 6 9— 0 4
基于 F P G A的机 械 去 毛 刺 机 组 控 制 系统 实 现 技 术
朱 兴 华 , 王 晓峰 , 吴 新 明 , 王成 飞
( 1 . 常州 数控 技 术研 究所 , 江 苏 常州 2 1 3 1 6 4 ; 2 . 江南现 代 工业研 究 院 , 江 苏 常州 2 1 3 1 6 4 )
( 1 .C h a n g z h o u I n s t i t u t e o f Nu me r i c a l C o n t r o l T e c h n o l o g y ,C h a n g z h o u J i a n g s u 2 1 3 1 6 4,C h i n a ;2 . T h e J i a n g n a n I n s t i t u t e o f Mo d e r n I n d u s t r y,C h a n g z h o u J i a n g s u 2 1 3 1 6 4,Ch i n a )
摘要 : 根 据机械 去 毛刺 系统的 功 能需要 , 基 于 Al t e r a公 司 的 C YC L O NE I I系列 F P GA 器 件 , 利 用 Ve r i l —
o g H D L硬 件 描 述 语 言 在 Q u a r t u s I I 9 . 0开 发 环 境 下 , 实 现 了去 毛 刺 机 的 组 控 制 系统 。 组 控 制 系 统 包
第1 0期 2 0 1 3年 1 0月
组 合 机 床 与 自 动 化 加 工 技 术
M o dul ar M a c h i ne To o l& A u t o ma t i c M a nu f a c t ur i ng Te c hni q ue

毛刺与抗干扰

毛刺与抗干扰

毛刺与抗干扰在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设计中毛刺信号解析

FPGA设计中毛刺信号解析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

毛刺滤波的一些方法

毛刺滤波的一些方法

毛刺滤波的一些方法在采集一组并行接口信号时,发现接收到的数据非常不稳定。

用示波器测量几个用于同步的控制信号,发现时不时的有毛刺产生。

因为这些数据最终都是要显示在液晶屏上的,当示波器同时测量两个同步信号时,液晶屏的显示错位现象得到明显好转。

示波器探头测量信号时相当于并联上一个pF级的电容,也能够一定程度上起到滤波的效果,因此可以断定同步信号的毛刺影响了数据的采集。

其中一个同步信号如图1,两个有效高脉冲之间有很多毛刺,放大毛刺后如图2所示,大约维持10ns的高电平。

图1图2如何滤除这些毛刺呢?办法有两个,其一就是用纯粹硬件的办法,在信号进入FPGA 之前进行滤波处理,串个电阻并个电容都可以,特权同学并了一个20pF电容后就能够把这些毛刺彻底滤干净,如图3所示。

图3而还有一种“软”硬件滤波的方法。

就如特权同学收录进《深入浅出玩转FPGA》一书中的博文《基于FPGA的跨时钟域信号处理——亚稳态》所谈到的,降低数据采集频率以及多次采集后逻辑处理都是一种思路。

那这里特权同学给出一种多次采集处理的滤波方法和大家分享。

input ain; //输入信号reg[3:0] ainr; //输入信号缓存//输入信号打4拍always @(posedgeclk or negedgerst_n)if(!rst_n) ainr<= 4'd0;elseainr<= {ainr[2:0],ain};//输入信号上升沿检测,高电平有效wirepos_ain = ~ainr[3] & ~ainr[2] &ainr[1] &ainr[0];//通常只要两个信号就行,即wire pos_ain = ~ainr[2] &ainr[1] ;。

//这里用了4个信号就是多次采样滤波的效果//输入信号下降沿检测,高电平有效wireneg_ain = ainr[3] &ainr[2] & ~ainr[1] & ~ainr[0];//通常只要两个信号就行,即wire neg_ain = ainr[2] & ~ainr[1] ;。

Verilog如何消除毛刺

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内部没有分布电感和电容,无法预见的毛刺信号可通过设计电路传播,从而使电路出现错误的逻辑输出。

任何组合电路、反馈电路和计数器都可能是潜在的毛刺信号发生器。

毛刺并不是对所有输入都有危害,如触发器的D输入端,只要毛刺不出现在时钟的上升沿并满足数据的建立保持时间,就不会对系统造成危害。

而当毛刺信号成为系统的启动信号、控制信号、握手信号,触发器的清零信号(CLEAR)、预置信号(PRESET)、时钟输入信号(CLK)或锁存器的输入信号就会产生逻辑错误。

任何一点毛刺都可能使系统出错,因此消除毛刺信号是FPGA设计中的一个重要问题。

毛刺问题在电路连线上是找不出原因的,只能从逻辑设计上采取措施加以解决。

消除毛刺的一般方法有以下几种:(1)利用冗余项消除毛刺函数式和真值表所描述的是静态逻辑,而竞争则是从一种稳态到另一种稳态的过程。

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

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

但该法对于计数器型产生的毛刺是无法消除的。

(2)取样法由于冒险出现在变量发生变化的时刻,如果待信号稳定之后加入取样脉冲,那么就只有在取样脉冲作用期间输出的信号才能有效。

这样可以避免产生的毛刺影响输出波形。

(3)吸收法增加输出滤波,在输出端接上小电容C可以滤除毛刺。

但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。

(4)延迟办法因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。

对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。

但有时随着负载增加,毛刺会继续出现,因而这种方法也是有局限性的。

FPGA消除毛刺的方法

FPGA消除毛刺的方法

FPGA消除毛刺的方法1. 控制时钟边沿:毛刺往往是由于时钟边沿的不稳定引起的。

为了减少毛刺的发生,可以通过合理控制时钟边沿的稳定性来消除毛刺。

一种常见的方法是使用FPGA的Phase-Locked Loop(PLL)电路来锁定外部输入的时钟信号,并生成一个稳定的内部时钟信号。

通过合理设置PLL的参数,可以消除时钟边沿的抖动,进而减少毛刺现象的发生。

2.去除信号干扰:毛刺往往是由于信号干扰引起的。

为了消除毛刺,可以采取一些方法来去除信号干扰。

首先,可以通过布线的方式将敏感信号和噪声源进行物理隔离,减少信号之间的干扰。

其次,在设计时可以采用差分信号传输技术,利用差分传输的优势来抵消一部分共模干扰,减小信号受到噪声的影响。

还可以利用滤波器来消除高频噪声干扰,提高信号质量。

3.适当增加延时:毛刺往往是由于信号变化过快引起的。

为了减少毛刺的发生,可以适当增加信号的延时。

通过增加延时,可以使信号的变化更加平滑,避免毛刺的产生。

可以使用FPGA内部的延时线来实现增加延时的功能。

在选择延时线时,要根据信号的频率和变化情况来确定延时的大小,以达到最佳的消除毛刺效果。

4.信号滤波:毛刺往往是由于信号不稳定引起的。

为了减少毛刺的发生,可以通过信号滤波来稳定信号。

可以根据信号的特点选择合适的滤波器类型和参数,对信号进行滤波处理。

常用的滤波器包括低通滤波器、带通滤波器和带阻滤波器等。

通过对输入信号进行滤波处理,可以减少信号快速变化引起的毛刺现象。

5.引入缓冲器:毛刺往往是由于信号传输路径中的阻抗不匹配引起的。

为了消除毛刺,可以在信号传输路径中引入合适的缓冲器。

缓冲器可以提供合适的驱动能力,消除驱动能力不足或者驱动能力过强引起的毛刺现象。

在选择缓冲器时,要考虑信号的特点和传输路径的阻抗匹配情况,以达到最佳的消除毛刺效果。

总结起来,FPGA消除毛刺的方法包括控制时钟边沿、去除信号干扰、适当增加延时、信号滤波以及引入缓冲器等。

FPGA消除毛刺的方法

FPGA消除毛刺的方法

如何解决FPGA电路设计中的毛刺问题如何解决FPGA电路设计中的毛刺问题武汉大学电气工程学院张志杰汪翔引言随着半导体技术的飞速发展,FPGA(Field Programmable Gate Array)的计算能力、容量以及可靠性也有了很大的提高。

它正以高度灵活的用户现场编程功能、灵活的反复改写功能、高可靠性等优点,成为数字电路设计、数字信号处理等领域的新宠。

但和所有的数字电路一样,毛刺也是FPGA电路中的棘手问题。

它的出现会影响电路工作的稳定性、可靠性,严重时会导致整个数字系统的误动作和逻辑紊乱。

因此,如何有效正确的解决设计中出现的毛刺,就成为整个设计中的关键一环。

本文就FPGA设计中出现的毛刺问题,根据笔者自己的经验和体会,提出了几种简单可行的解决方法和思路,供同行供交流与参考。

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

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

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

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

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

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

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

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

下面我们将以乘法运算电路来说明毛刺的产生以及去除,在实验中,我们使用的编程软件是Quartus II2.0,实验器件为CycloneEP1CF400I7。

FPGA毛刺的产生与消除

FPGA毛刺的产生与消除

基于VerilogHDL语言的FPGA设计课程作业学院:电子工程学院专业班级:集电11级3班姓名:朱潮勇学号:05116079作业题目:FPGA毛刺的产生与消除完成日期:2013年11月25日一、设计要求 (2)二、规范说明 (3)三、顶层设计结构图 (3)四、模块详细设计......................................................................................... 错误!未定义书签。

1 功能说明............................................................................................. 错误!未定义书签。

2 端口定义............................................................................................. 错误!未定义书签。

3 设计代码............................................................................................. 错误!未定义书签。

4 激励代码............................................................................................. 错误!未定义书签。

5 仿真结果............................................................................................. 错误!未定义书签。

五、结论和问题: (5)前言:在FPGA的设计中,毛刺现象是长期困扰电子设计工程师的设计问题之一,是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。

可编程逻辑阵列减少毛刺的低功耗布线算法

可编程逻辑阵列减少毛刺的低功耗布线算法

可编程逻辑阵列减少毛刺的低功耗布线算法一、引言介绍可编程逻辑阵列和其重要性,以及毛刺的定义、原因和对电路的影响。

简要介绍本文提出的低功耗布线算法的目的和意义。

二、相关工作回顾以往的研究,比较相关算法的优缺点。

讨论已有算法存在的问题,以及本文提出的算法相较于以往的改进和优势。

三、低功耗布线算法的设计介绍本文提出的低功耗布线算法的具体实现流程,包括阵列形状优化、相邻网线的互斥规划、网线的长度和方向的优化等。

详细介绍各步骤的具体实现,并给出算法流程图。

四、实验和结果使用仿真程序和实际电路进行实验,验证本文提出算法的有效性和优势。

分析电路仿真结果和实验数据,并与已有算法进行对比和验证。

五、总结总结本文提出的低功耗布线算法,强调其对于减少毛刺的重要性,并针对现有算法存在的问题进行讨论。

展望未来,本文提出的算法还可进一步发展和完善。

第一章节是论文的引言,主要介绍可编程逻辑阵列和毛刺的概念,以及本文提出的低功耗布线算法的目的和意义。

本章的主要作用是为读者提供一个引导,让他们了解到该论文的主题和背景信息。

可编程逻辑阵列(FPGA)是一种可以重复配置其内部逻辑功能的通用数字电路。

毛刺是一种意外信号,它出现在由电路中随机电磁噪声、截止脉冲或其他电路干扰所导致的输出极性瞬间变化时。

毛刺对信号处理的精度和正确性产生了极大的负面影响,因此对于电路的准确性来说,尽量减少毛刺是非常重要的。

本文提出的低功耗布线算法旨在通过优化电路的布线,以减少电路中的毛刺产生。

该算法主要针对低功耗应用,它特点是满足低功耗零件和多个应用的要求。

正如在该领域的研究研究已经发现,这种应用需要降低功耗并提高性能的方法。

设计科学缩短了各节点之间的距离、优化线路的走向、减少电路中的噪音,从而大大降低了毛刺的产生。

本文的意义在于提出了一种实现低功耗布线的新算法,以解决电路中毛刺的问题。

该算法可以帮助电路设计者更好的完成电路布线的工作,避免后期的毛刺问题,同时减少布线的功耗,提高电路运行的性能和可靠性。

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

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

FPGA毛刺产生的原因及其抑制方法作者:孙晓东, SUN Xiaodong作者单位:唐山电视发射台,唐山,063000刊名:电脑编程技巧与维护英文刊名:COMPUTER PROGRAMMING SKILLS & MAINTENANCE年,卷(期):2010,""(14)被引用次数:0次1.徐志军CPLD/FPGA的开发与运用2.褚振勇.翁木云FPGA设计及应用1.期刊论文曾宏布线后修复时序违规的方法研究-中国集成电路2010,19(4)90/65nm下后端设计中由于多模式-角落,以及布局布线工具和签收工具之间的误差性,布线后修复各种时序违规如渡越时间、负载、建立时间、保持时间、串扰等将是一项十分耗时的工作.如何快速修复各种违规,取得设计收敛是后端设计者所关注的.本丈分析了各种情况,提供了一些解决方案.2.期刊论文谢红筝设计高速数字电路应关注的问题及解决方法-中国科技博览2010,""(18)在高速数字电路的设计中,时序设计、信号完整性等是关乎系统性能的重要标志.在高速数字电路设计中较难把握,但在理解电路时序模型的基础上,采用合理的设计方法是行之有效的,通过许多设计实例证明采用这些方式可以使电路的后仿真通过率大大提高,并且系统的工作频率可以达到一个较高水平.3.期刊论文刘一平.叶媲舟.凌朝东.LIU Yi-ping.YE Pi-zhou.LING Chao-dong FPGA的可靠时钟设计方案-华侨大学学报(自然科学版)2009,30(6)对于现场可编程门阵列(FPGA)常见的6种时钟设计,根据建立时间和保持时间的要求,按照同步设计原则,分别给出可靠的时钟设计方案.利用这些方案来设计FPGA的时钟,可以更容易完成FPGA的项目设计,使得FPGA系统更稳定、更可靠.4.期刊论文王慧.Wang Hui一种借助时序检测系统进行时序验证的方法-信息安全与通信保密2007,""(1)论文介绍了在集成电路时序验证阶段如何借助时序检测系统对集成电路端口信号的建立时间和保持时间进行检测.5.期刊论文王海鹏.曾爱凤.Wang Haipeng.Zeng Aifeng基于公共时钟同步的系统时序分析与控制-电子测量技术2010,33(8)随着系统时钟频率不断提高,时序在高速数字系统设计中越来越复杂.为保证系统能正常稳定工作,必须在PCB设计之初就进行精确的时序分析和控制;同时信号完整性问题对时序的影响越来越严重,信号完整性问题需在时序设计的同时解决.对公共时钟同步系统的时序进行了详细的分析,并针对一嵌入式系统,采用Cadence 仿真工具SPECCTRAQuest进行信号完整性仿真优化及时序分析计算,得出了控制系统工作时序的约束.这一设计方法也适用于其他高速数字系统的时序设计.6.期刊论文陈俊.周正中.CHEN Jun.ZHOU Zheng-zhong高速、高精度频率采样中的量化误差分析-电子科技大学学报2007,36(1)讨论了高速、高精度频率采样的基本原理;分析了量化噪声对测量误差的影响;提出了采样器建立和保持时间对测量误差影响的问题;导出了考虑采样器建立和保持时间后时间量化误差的概率密度函数,为量化误差的校正奠定了理论基础.7.期刊论文杨波.高德远RTL电路的时序优化设计-小型微型计算机系统2001,22(9)时序设计是数字系统性能的关键,在高层设计方法中对时序的控制进一步抽象,我们在介绍电路时钟和时序的基础上分析了RTL电路的时序模型,该模型讨论了RTL电路的时延路径、建立保持时间以及系统正常工作的条件,并据此提出了相应的设计策略,通过实践证明这种设计方法是行之有效的.8.学位论文钱立旺0.6μm CMOS 622Mb/s高速分接器设计2004分接器是光纤通信网中的关键器件.它位于光纤接收机的末端,将接收到的一路高速信号重新恢复成多路的低速信号.该文简要介绍了分接器的实现工艺和设计流程,以及复接和分接的原理.分接器有三种主要结构:串型结构、并型结构和树型结构,该文分析了三种结构的工作原理及其优缺点.根据三种结构的各自特点和设计目标,选用树型结构作为分接器的基本结构.电路设计是分接器设计的基础.速度、功耗、面积是电路设计要考虑的主要因素,不同的电路形式具有不同的优缺点,如CMOS互补逻辑电路功耗低,面积小,速度相对较慢;SCFL(源极耦合FET逻辑)电路速度高,功耗和面积较大.所以要针对具体设计需要选用适当的电路形式或其组合结构,以满足设计要求.触发器是分接器的基本组成单元,建立时间和保持时间是影响电路速度的关键,所以减小建立时间和保持时间是触发器设计的主要目标,该文着重介绍了SCFL锁存器的设计和优化方法.该文介绍了分接器的版图设计考虑,并给出了仿真结果和芯片的晶圆级测试结果,并对测试结果进行了分析.该文设计的1:4分接器采用CSMC-HJ 0.6μmCMOS工艺实现,测试结果表明,芯片成功的实现了SDHSTM-4级别1:4分接器的功能,最高分接速率可达622Mb/s.9.期刊论文李胜朝.张江鑫.LI Sheng-chao.ZHANG Jiang-xing高速电路中时序问题的分析与处理-浙江工业大学学报2009,37(5)高速电路中信号完整性现象正变得越来越普遍,而时序问题又是信号完整性现象中最为关键的一个问题,所以时序分析及仿真对保证高速PCB设计的质量十分必要.文章从理论上分析了一个高速信号系统中时钟线与数据线之间正确读写所需满足的时序关系.采用Specctraquest工具分析处理了一个实例中的时序问题,并从中得出了进行时序系统设计时所必需遵循的准则.实验结果验证了运用Specctraquest工具处理时序问题的高效性和实用性,具有非常大的推广价值.10.学位论文陈智荣大屏幕TFT-LCD源极驱动器数据输入接口设计2007TFT-LCD已成为信息时代显示技术的主流。

Verilog如何消除毛刺

Verilog如何消除毛刺

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

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

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

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

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

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

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

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

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

2verilogHDL语言的特点与优化设计VerilogHDL语言是硬件描述语言的一种。

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

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

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

由于VerilogHDL语言易于理解、设计灵活,因此,VerilogHDL语言已经成为目前FPGA编程最常用的工具之一。

然而,正是其设计灵活的特点使工程师必须面对采用哪种编程风格才能使逻辑电路精确工作的问题。

因为如果某些原因导致逻辑电路发生误动作,则有可能会造成系统无法正常工作。

而电路设计中的"毛刺"问题则是电路设计中最常见的。

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

如何解决FPGA电路设计中的毛刺问题
如何解决FPGA电路设计中的毛刺问题
武汉大学电气工程学院张志杰汪翔
引言
随着半导体技术的飞速发展,FPGA(Field Programmable Gate Array)的计算能力、容量以及可靠性也有了很大的提高。

它正以高度灵活的用户现场编程功能、灵活的反复改写功能、高可靠性等优点,成为数字电路设计、数字信号处理等领域的新宠。

但和所有的数字电路一样,毛刺也是FPGA电路中的棘手问题。

它的出现会影响电路工作的稳定性、可靠性,严重时会导致整个数字系统的误动作和逻辑紊乱。

因此,如何有效正确的解决设计中出现的毛刺,就成为整个设计中的关键一环。

本文就FPGA设计中出现的毛刺问题,根据笔者自己的经验和体会,提出了几种简单可行的解决方法和思路,供同行供交流与参考。

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

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

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

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

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

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

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

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

下面我们将以乘法运算电路来说明毛刺的产生以及去除,在实验中,我们使用的编程软件是Quartus II2.0,实验器件为Cyclone
EP1CF400I7。

需要说明一点,由于示波器无法显示该整数运算的结果,我们这里将只给出软件仿真的结果。

而具体的编程以及程序的下载我们在这里也不再详述,可以参考相关的文献书籍。

毛刺的消除方法
首先,我们来设计一个简单的乘法运算电路。

运算电路所示。

(c)所示,如果在不加任何的去除毛刺的措施的时候,我们可以看到结果c中含有大量的毛刺。

产生的原因就是在时钟的上升沿,每个输入(a和b)的各个数据线上的数据都不可能保证同时到达,也就是说在时钟读取数据线上的数据的时候,有的数据线上读取的已经是新的数据,而有的数据线上读取的仍然是上一个数据,这样无疑会产生毛刺信号,而当数据完全稳定的时候,毛刺信号也就自然消失了。

输出加D触发器
这是一种比较传统的去除毛刺的方法。

原理就是用一个D触发器去读带毛刺的信号,利用D触发器对输入信号的毛刺不敏感的特点,去除信号中的毛刺。

这种方法在简单的逻辑电路中是常见的一种方法,尤其是对信号中发生在非时钟跳变沿的毛刺信号去除效果非常的明显。

但是对于大多数的时序电路来说,毛刺信号往往发生在时钟信号的跳变沿,这样D触发器的效果就没有那么明显了(见图2,加D触发器以后的输出q,仍含有毛刺)。

另外,D触发器的使用还会给系统带来一定的延时,特别是在系统级数较多的情况下,延时也将变大,因此在使用D触发器去除毛刺的时候,一定要视情况而定,并不是所有的毛刺都可以用D触发器来消除。

信号同步法
在很多文章中都提到,设计数字电路的时候采用同步电路可以大大减少毛刺。

另外,由于大多数毛刺都比较短(大概几个纳秒),只要毛刺不出现在时钟跳变沿,毛刺信号就不会对系统造成危害了。

因此很多人认为,只要在整个系统中使用同一个时钟就可以达到系统同步的目标了。

但是这里面有一个非常严重的问题,就是时钟信号和其他所有的信号一样,在FPGA器件中传递的时候是有延时的,这样根本就无法预知时钟跳变沿的精确位置。

也就是说我们无法保证在某个时钟的跳变沿读取的数据是一个稳定的数据,尤其是在多级设计中,这个问题就更加突出了。

因此,做到真正的"同步"就是去除毛刺信号的关键问题。

我认为这里同步的关键就是保证在时钟的跳变沿读取的数据是稳定的数据而不是毛刺数据。

以这个思想为出发点,提出了以下几种具体的信号同步方法。

信号延时同步法
首先,我们给出了一个两级乘法(c=a b;q=d c)的运算结果(所示,这里不再给出运算电路)。

可以看到,在没加任何处理过程的时候,两级结果c和q中都含有大量的毛刺信号。

其中毛刺信号产生的原因就是在计算时钟跳变时刻,数据信号同时发生了跳变。

另外,第一级信号c中含有大量的毛刺,在经过第二次乘法运算以后被明显放大了,从图3可以看出q中毛刺更加严重了。

但在很多实际工作中,我们最关心的往往是最后的输出结果(q),只要中间信号的毛刺对后面的输出没有什么影响我们就不需要对它们作任何处理了。

因此,这里所提出的信号同步的核心思想就是消除这些中间毛刺信号的影响。

信号延时法,它的原理就是在两级信号传递的过程中加一个延时环节,从而保证在下一个模块中读取到的数据是稳定后的数据,即不包含毛刺信号。

这里所指的信号延时可以是数据信号的延时,也可以是时钟信号的延时。

由于篇幅的关系,这里我们主要以对时钟信号的延时来说明信号延时法的原理。

对上述计算过程加时钟信号延时的原理及结果如图4所示。

图4中的clkdelay就是时钟延时环节。

在加这个环节以前的时钟信号是直接连到模块b上的,这样两个模块使用同一时钟,好像已经做到了同步,但是所示,结果中含有大量的毛刺,其原因就是产生毛刺的根本原因--“竞争冒险"现象没有得到根本性的消除。

加时钟延时环节的作用就是要从根本上消除“竞争冒险”,其过程是将控制模块b的时钟延时一段时间,使得模块b的控制时钟在上跳变化时数据c已经达到了稳定,即不含毛刺信号的数据,而这时数据d也已达到稳定,这样竞争冒险现象消除了,从而毛刺信号也得到了有效的抑制,如图4 (c) 所示。

与时钟延时法的原理相同,我们也可以在数据信号加延时环节来消除竞争冒险的现象,达到真正的同步。

这里的延时环节可以使用Quartus Ⅱ提供的lcell实现,也可以使用D触发器和一个高频的计数脉冲灵活实现。

另外我们也可以从综合结果(图4 (c)所示)看到,所加的延时环节占用的芯片资源是很少的,是一种简单有效而且节约资源的方法。

时钟信号的灵活使用
和上述方法的原理相似,灵活使用时钟信号的目的也是尽可能的消除竞争冒险。

比如在时钟的第一个跳变沿触发模块a,下一个跳变沿控制触发模块b,这样时钟的交替控制也在一定程度上消除了竞争冒险,从而抑制了毛刺信号。

还比如分别使用时钟的上升沿或者下降沿控制不同的模块。

但是这些方法不适合使用在比较复杂的设计中,否则会使设计的条理非常的混乱,给以后的阅读修改带来很大的困难。

因此,在选用这种方法的时候一定要慎重。

状态机控制
对于大型的数字电路设计,状态机是一种非常理想的选择,能使运行性能和硬件资源的占用达到最佳的优化,另外灵活的使用状态机也可以实现信号的同步和消除毛刺的目的。

在数据传递比较复杂的多模块系统中,由状态机在特定的时刻分别发出控制特定模块的时钟信号或者模块使能信号,状态机的循环控制就可以使得整个系统协调运作,同时减少毛刺信号。

那么只要我们在状态机的触发时间上加以处理,就可以避免竞争冒险,从而抑制毛刺的产生。

原理如图5所示。

限于篇幅的原因,这里我们只讲述状态机控制的原理,提出一种新的思路。

总结
由于毛刺信号对FPGA器件的运行有很大的影响,如何有效抑制毛刺信号就成了一个非常突出的问题。

但是必须强调的一点就是,我们首先必须对程序设计本身进行优化和改进,使毛刺信号的产生降低到最小,比如将一些信号用变量代替来减小延时等。

另外,在实际应用中如何选用适合的方法也非常的重要,一定要慎重考虑。

比如延时环节的加入会使整个系统的延时增大,加入太多时就会影响系统的运行等。

相关文档
最新文档