FPGA毛刺的产生与消除

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

基于VerilogHDL语言的FPGA设计

课程作业

学院:电子工程学院

专业班级:集电11级3班

姓名:朱潮勇学号:05116079

作业题目:FPGA毛刺的产生与消除

完成日期:2013年11月25日

一、设计要求 (2)

二、规范说明 (3)

三、顶层设计结构图 (3)

四、模块详细设计......................................................................................... 错误!未定义书签。

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

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

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

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

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

五、结论和问题: (5)

前言:在FPGA的设计中,毛刺现象是长期困扰电子设计工程师的设计问题之一,是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由FPGA内部结构特性决定的。毛刺现象在FPGA的设计中是不可避免的,有时任何一点毛刺就可以导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。

任何组合电路、反馈电路和计数器都可能是潜在的毛刺信号发生器,但毛刺并不是对所有输入都有危害,如触发器的D输入端,只要毛刺不出现在时钟的上升沿并满足数据的建立保持时间,就不会对系统造成危害。而当毛刺信号成为系统的启动信号、控制信号、握手信号,触发器的清零信号(CLEAR)、预置信号(PRESET)、时钟输入信号(CLK)或锁存器的输入信号时就会产生逻辑错误。在实际设计过程中,应尽量避免将带有毛刺的信号直接接入对毛刺敏感的输入端上,对于产生的毛刺,应仔细分析毛刺的来源和性质,针对不同的信号,采取不同的解决方法加以消除。

因此,克服和解决毛刺问题对现代数字系统设计尤为重要。本文从FPGA的原理结构的角度探讨了产生毛刺的原因及产生的条件,在此基础上,总结了多种不同的消除方法,在最后结合具体的应用对解决方案进行深入的分析。

一、设计要求

将通过本次实验演示FPGA中出现的典型毛刺现象,并通过一些方法对电路改进从而来消除毛刺现象。本次实验将搭建一个简单的异或门电路。

二、规范说明

本次实验,在quartus2下建立工程,选择的平台是Cyclone® II 系列2C70 型FPGA 芯片,全称是:EP2C70F896C6。虽然其中的器件布线,器件延迟主要针对这款芯片。但各种FPGA 都大同小异,所以本次实验还是具有普遍说明性。

三、原理图设计

用该原理图实现异或功能

改进后的原理图,在输入端增加D触发器

三、综合后的RTL布线图

改进前的原理图综合后RTL布线图

改进后的原理图综合后的RTL布线图

四、仿真结果

改进前原理图时序仿真结果

改进后原理图时序仿真结果

五、实验分析

通过前面异或门原理图的设计与改进。看到FPGA中确实会出现意想不到的毛刺现象,但毛刺现象并不是都无法避免。

毛刺现象产生的原因:由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰。

在上图中我们可以看出从iSW[1]状态变化到输出oLEDG[0]状态发生相应的变化之间有9.44-9.45ns 的延时,而从输入iSW[0]状态变化到输出oLEDG[0]状态发生相应的变化之间约有9.84ns 的延时。

再仔细查看RTL图,就可以轻易看出布线的长短影响了延迟,当然延迟除了布线长短的原因之外,更多的是器件的延迟,由于本次实验的原理图比较简单,看不出,但是事实上,每个不同元器件,有不同的延迟,以及每一路信号元器件的数量不同更是形成了不同的延迟。该延时为FPGA 布线所决定,不同开发板均不同。

六、结论和问题:

在实验中看到了毛刺现象的出现是由于延迟引起,知道了毛刺产生的条件,就可以通过改变设计,破坏其条件来减少毛刺的发生。下面对各种方法做分别介绍

1利用冗余项法

利用冗余项消除毛刺有2种方法:代数法和卡诺图法,两者都是通过增加冗余项来消除险象,只是前者针对于函数表达式而后者针对于真值表。以卡诺图为例,若两个卡诺圆相切,其对应的电路就可能产生险象。因此,修改卡诺图,在卡诺图的两圆相切处增加一个圆,以增加多余项来消除逻辑冒险。但该法对于计数器型产生的毛刺是无法消除的。

举例说明:如图所示逻辑函数,在B=C=1时,F=将产生偏“1”冒险。增加多余项BC,则当B=C=1 时,F恒为1,所以消除了冒险。即卡诺图化简时多圈了一个

相关文档
最新文档