




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 FPGA电路设计中的毛刺问题的研究目 录1 引言12 FPGA的相关概念12.1 FPGA的基本特点12.2 FPGA的工作原理23 简述FPGA电路中毛刺的产生23.1 毛刺产生的原因23.2 毛刺产生条件的分析44 毛刺的消除方法44.1 冗余项法44.2 采样法54.3 吸收法54.4 延迟法54.5状态机控制法54.6 硬件描述语言法65 实例75.1 输出加D触发器95.2在有限状态机的基础上采用时钟同步信号105.3直接把状态机的状态码作为输出信号136 结语15参考文献16致 谢17FPGA电路设计中的毛刺问题的研究摘要:目前,FPGA器件已经越来越广泛地应用在数字电路设计等领
2、域,但它的毛刺问题却成为一个影响其可靠性和精确性的重要因素。本文探讨了毛刺产生的原因及产生的条件,以计数器和乘法器为例对解决方案进行了深入具体地分析,总结了多种不同的解决方法,并且通过仿真说明这几种方法能够有效地消除或在一定程度上减少数字电路设计中出现的毛刺。Burr problem of FPGA circuit design researchAbstract: The FPGA device at present, already more and more widely used in the field of digital circuit design and so on, but
3、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 a
4、nd 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; Com
5、petition adventure1 引言随着半导体技术的飞速发展,FPGA(Field Programmable Gate Array)的计算能力、容量及其可靠性也有了大幅的提高。本文FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上更进一步发展的产物。它作为专用集成电路(ASIC)领域中的一种半定制电路,既处理了定制电路的不到位,又克服了原有可编程器件门电路数量有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新的概念,里边包括可配置逻辑模块CLB(C
6、onfigurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分1。2.1 FPGA的基本特点主要有:1)采用FPGA设计ASIC电路,用户不需投资生产,就能得到合适的芯片。2)FPGA也可做其它全定制或半定制ASIC电路中的试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、研发费用最低并且风险最小的器件之一。5)FPGA采用高速CHMOS工艺,功耗低,可与CMOS、TTL等电平兼容。 综上所诉,无疑FPGA芯片是小批量系统(System)、提高系统(Syst
7、em)集成度、可靠性的上好选择之一。目前FPGA的品种繁多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等等。2.2 FPGA的工作原理 FPGA的工作状态是由存放在片内RAM中的程式来设置的,因此,工作时需对其片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内的编程模块RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA则还原成白片,里边的所有逻辑关系消失,因此,FPGA芯片能够反复使用。FPGA的编程不需要专用的FPGA编程器,通用的EPROM、PROM编程器即可。如需修改FPGA功
8、能,只需要换一片EPROM即可。这样,同一片FPGA,不同的编程数据,还可产生不同的电路功能。因此,FPGA的用法非常灵活。FPGA有多种配置模式:1)并行主模式,一片FPGA加一片EPROM的方式;2)主从模式可支持一片PROM对多片FPGA进行编程;3)串行模式可采用串行PROM编程FPGA;4)外设模式可将FPGA作为微CPU的外部设备,由微CPU对其进行编程。3 简述FPGA电路中毛刺的产生我们知道,信号在FPGA器件中通过逻辑单元连线时,一定会存在延时。延时的大小不仅仅和连线的长短、逻辑单元的数目有关,还和器件的制造工艺、工作环境等有很大的关系。因此,信号在FPGA中传输的时候,所需
9、的时间是不能精确估算的,当多路信号同时发生跳变的瞬间,就会产生“竞争冒险”。此时,往往会出现一些不正确的小的尖峰信号,这些尖峰信号就叫做“毛刺”。另外,由于FPGA及其它CPLD器件内部的电容和电感对电路中的毛刺几乎没有过滤作用,最终这些毛刺信号就会被“保留”并传递到下一级,从而使得毛刺问题更为突出。可见,即使在最简单的逻辑运算中,如果出现多路信号同时发生跳变的情况,在通过内部走线后,就一定会产生毛刺。然而现在用在数字电路设计和数字信号处理中的信号常常是由时钟来控制的,在多数据输入的复杂运算系统,甚至每个数据都是由相当多的位数组成。此时,每一级产生的毛刺都会对结果有严重的影响,如果设计是多级的
10、,那么毛刺的累加甚至会影响整个设计的可靠性和精确性。下面我们将以乘法运算电路来说明毛刺的产生以及消除2。3.1 毛刺产生的原因 4 毛刺的消除方法状态机控制法对于大型的数字电路设计,状态机是一种非常理想的选择,能使运行性能和硬件资源的占用达到最佳的优化,另外灵活的使用状态机也可以实现信号的同步和消除毛刺的目的。在数据传递比较复杂的多模块系统中,由状态机在特定的时刻分别发出控制特定模块的时钟信号或者模块使能信号,状态机的循环控制就可以使得整个系统协调运作,同时减少毛刺信号。那么只要我们在状态机的触发时间上加以处理,就可以避免竞争冒险,从而抑制毛刺的产生。原理如图6-1所示。图6-1状态机控制原理
11、首先,我们来设计一个简单的4位乘法器。其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mul4 IS PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END mul4; ARCHITECTURE behave OF mul4 ISsignal c0,c1,c2,c3:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(a,b,c0
12、,c1,c2,c3)BEGINIF b(0)='0' THEN c0<="0000"ELSE c0<=a;end if;IF b(1)='0' THEN c1<="0000"ELSE c1<=a;end if;IF b(2)='0' THEN c2<="0000"ELSE c2<=a;end if;IF b(3)='0' THEN c3<="0000"ELSE c3<=a;end if;y<=(&q
13、uot;0000"& c0)+("000"& c1&'0')+("00"& c2&"00")+('0'&c3&"000"); END PROCESS;END behave; 仿真结果如图5-1:图5-1四位乘法器仿真结果如上图所示,如果在不加任何的去除毛刺的措施的时候,我们可以看到结果y中含有大量的毛刺。产生的原因就是每个输入(a和b)的各个数据线上的数据都不可能保证能够同时到达,也就是说在时钟读取数据线上的数据的时候
14、,往往有的数据线上读取的已经是新的数据了,而有的数据线上读取的仍然是上一个数据,无疑这样会产生毛刺信号,而当数据完全稳定的时候,毛刺信号也就自然消失了8。5.1 输出加D触发器前面我们也有讲到,这是一种比较传统的去除毛刺的方法。原理就是用一个D触发器去读取带毛刺的信号,利用D触发器对于输入信号的毛刺不敏感的特点,去除信号中的毛刺。这是一种在简单逻辑电路中常见的方法,尤其是对于信号中发生在非时钟跳变沿的毛刺信号,其去除效果非常的明显。但是对于大多数的时序电路来讲,毛刺信号往往是发生在时钟信号的跳变沿,这样,D触发器的效果就不是那么明显了(见图5-2,加D触发器以后的输出D_OUT,仍含有毛刺)。
15、另外,D触发器的使用还会给系统带来一定的延时,尤其是在系统级数较多的情况下,延时也将会随之变大,因此,在使用D触发器去除毛刺的时候,一定要视情况而定,并不是所有的毛刺信号都可以利用D触发器来消除9。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY mul4 IS PORT( D_IN :IN STD_LOGIC; CLK :IN STD_LOGIC; D_OUT :OUT STD_LOGIC_VECTOR(7 DO
16、WNTO 0); a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); y:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);END mul4;ARCHITECTURE behave OF mul4 IS signal c0,c1,c2,c3:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Q: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(a,b,c0,c1,c2,c3,clk)BEGINIF b(0)='0' THEN c0<="0000"
17、ELSE c0<=a;end if;IF b(1)='0' THEN c1<="0000"ELSE c1<=a;end if;IF b(2)='0' THEN c2<="0000"ELSE c2<=a;end if;IF b(3)='0' THEN c3<="0000"ELSE c3<=a;end if;y<=("0000"& c0)+("000"& c1&'0'
18、;)+("00"& c2&"00")+('0'&c3&"000"); IF CLK'EVENT AND CLK = '1' THEN Q(0)<=y(0); FOR I IN 1 TO 7 LOOP Q(I) <= y(I-1); END LOOP; END IF; D_OUT <= Q;END PROCESS;END behave; 仿真结果:图5-2加D触发器后仿真结果5.2在有限状态机的基础上采用时钟同步信号在有限状态机的基础上采用时钟同步
19、信号,即把时钟信号引入组合进程。状态机每一个输出信号都经过附加的输出寄存器,并由时钟信号同步,因而保证了输出信号没有毛刺。这种方法存在一些弊端:由于增加了输出寄存器,硬件开销增大,这对于一些寄存器资源较少的目标芯片是不利的,从状态机的状态位到达输出需要经过两级组合逻辑,这就限制了系统时钟的最高工作频率,由于时钟信号将输出加载到附加的寄存器上,所以在输出端得到信号值的时间要比状态的变化延时一个时钟周期10。例如Mealy型状态机,其主要程序如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT ( CLK ,DATAIN
20、,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY1;ARCHITECTURE behav OF MEALY1 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; BEGIN COMREG : PROCESS(CLK,RESET) BEGIN -决定转换状态的进程 IF RESET ='1' THEN STX <= ST0; ELSIF CLK'EVENT AND CLK = '1'
21、 THEN CASE STX IS WHEN st0 => IF DATAIN = '1' THEN STX <= st1; END IF; WHEN st1 => IF DATAIN = '0' THEN STX <= st2; END IF;WHEN st2 => IF DATAIN = '1' THEN STX <= st3; END IF; WHEN st3=> IF DATAIN = '0' THEN STX <= st4; END IF; WHEN st4=> IF
22、 DATAIN = '1' THEN STX <= st0; END IF; WHEN OTHERS => STX <= st0; END CASE ; END IF; END PROCESS COMREG ;COM1: PROCESS(STX,DATAIN) BEGIN -输出控制信号的进程 CASE STX IS WHEN st0 => IF DATAIN = '1' THEN Q <= "10000" ; ELSE Q<="01010" ; END IF ; WHEN st1 =&
23、gt; IF DATAIN = '0' THEN Q <= "10111" ; ELSE Q<="10100" ; END IF ; WHEN st2 => IF DATAIN = '1' THEN Q <= "10101" ; ELSE Q<="10011" ; END IF ; WHEN st3=> IF DATAIN = '0' THEN Q <= "11011" ; ELSE Q<="
24、;01001" ; END IF ; WHEN st4=> IF DATAIN = '1' THEN Q <= "11101" ; ELSE Q<="01101" ; END IF ; WHEN OTHERS => Q<="00000" ; END CASE ; END PROCESS COM1 ;END behav; 其时序仿真波形如图5-3所示:图5-3 Mealy型有限状态机的仿真时序图不难看出有毛刺现象,采用时钟同步信号,将输出的Q值由时钟信号锁存后在输出,改进后的Mea
25、ly型状态机,其主要程序如下:LIBRARY IEEE; -MEALY FSMUSE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY2 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY2;ARCHITECTURE behav OF MEALY2 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 D
26、OWNTO 0); BEGIN COMREG : PROCESS(CLK,RESET) -决定转换状态的进程 BEGIN IF RESET ='1' THEN STX <= ST0; ELSIF CLK'EVENT AND CLK = '1' THEN CASE STX IS WHEN st0 => IF DATAIN = '1' THEN STX <= st1; END IF;WHEN st1 => IF DATAIN = '0' THEN STX <= st2; END IF; WHEN
27、st2 => IF DATAIN = '1' THEN STX <= st3; END IF; WHEN st3=> IF DATAIN = '0' THEN STX <= st4; END IF; WHEN st4=> IF DATAIN = '1' THEN STX <= st0; END IF; WHEN OTHERS => STX <= st0; END CASE ; END IF; END PROCESS COMREG ;COM1: PROCESS(STX,DATAIN,CLK) -输出控
28、制信号的进程 VARIABLE Q2 : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN CASE STX IS WHEN st0=> IF DATAIN='1' THEN Q2 :="10000" ELSE Q2:="01010" END IF; WHEN st1=> IF DATAIN='0' THEN Q2 :="10111" ELSE Q2:="10100" END IF; WHEN st2=> IF DATAIN='1
29、9; THEN Q2 :="10101" ELSE Q2:="10011" END IF; WHEN st3=> IF DATAIN='0' THEN Q2 :="11011" ELSE Q2:="01001" END IF; WHEN st4=> IF DATAIN='1' THEN Q2 :="11101" ELSE Q2:="01101" END IF; WHEN OTHERS => Q2:="00000&qu
30、ot; ; END CASE ; IF CLK'EVENT AND CLK = '1' THEN Q1<=Q2; END IF; END PROCESS COM1 ; Q <= Q1 ;END behav;其时序仿真波形如图5-4所示,改进后毛刺不复存在。图5-4 改进后Mealy型有限状态机的仿真时序图5.3直接把状态机的状态码作为输出信号直接把状态机的状态码作为输出信号,即采用状态码直接输出型状态机, 使状态和输出信号一致,使得输出译码电路被优化掉了,因此不会出现竞争冒险。这种方案,占用芯片资源少,信号与状态变化同步,因此速度快,是一种较优方案。但在设计
31、过程中对状态编码时可能增加状态向量,出现多余状态。虽然可用CASE语句中WHENOTHERS来安排多余状态,但有时难以有效控制多余状态,运行时可能会出现难以预料的情况。因此它适用于状态机输出信号较少的场合11。 若对AD0809的采样控制采用状态码直接输出型状态机方案,其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS PORT (D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK ,EOC : IN STD_LOGIC; ALE, START, OE, ADDA : OUT STD_LO
32、GIC; c_state : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END AD0809;ARCHITECTURE behav OF AD0809 ISSIGNAL current_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO 0 ); CONSTANT st0 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00000" ; CONSTANT st1 : STD_LOGIC_VECTOR(4 DOWNTO
33、 0) := "11000" ; CONSTANT st2 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00001" ; CONSTANT st3 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00100" ; CONSTANT st4 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00110" ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK: STD_LOGIC; BEGIN
34、 ADDA<='1' Q<=REGL; START<=current_state(4); ALE<=current_state(3); OE<=current_state(2); LOCK<=current_state(1);c_state <=current_state; COM: PROCESS(current_state,EOC) BEGIN -规定各状态转换方式 CASE current_state IS WHEN st0=> next_state <= st1; -0809初始化 WHEN st1=> nex
35、t_state <= st2; -启动采样 WHEN st2=> IF (EOC='1') THEN next_state <= st3; -EOC=1表明转换结束 ELSE next_state <= st2; -转换未结束,继续等待 END IF ; WHEN st3=> next_state <= st4;-开启OE,输出转换好的数据 WHEN st4=> next_state <= st0; WHEN OTHERS => next_state <= st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF; END PROCESS REG ; LATCH1: PROCESS (LOCK) - 此进程中,在LOCK的上升沿,将转换好的数据锁入 BEG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件显示不安全问题
- 2025年中国酒店羽绒枕芯数据监测报告
- 酒类评委考试题及答案
- 经纪顾问考试题及答案
- 近期热点考试题及答案
- 鱼粉制作工专项考核试卷及答案
- 2025年教师招聘之《幼儿教师招聘》模拟试题及参考答案详解(夺分金卷)
- 戒烟考试题及答案大全
- 2025年中国手工绣花工艺品数据监测研究报告
- 液氯工质量管控考核试卷及答案
- 血液透析病人饮食管理
- 饿了创业成功案例分析
- I类切口手术预防应用抗菌药物制度
- 鞋业模具制作流程
- 第六课 实现人生的价值(精美课件)
- 《水利工程白蚁防治技术规程SLT 836-2024》知识培训
- 《专利及专利查询》课件
- 地下水污染控制与修复
- 智障个别化教育计划案例(3篇)
- 《欧盟的法律体系》课件
- 网络信息安全基础知识培训课件
评论
0/150
提交评论