第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2025/5/21 1:57:23 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

1 引言

随着半导体技术的飞速发展,FPGA(Field Programmable Gate Array)的计算能力、容量及其可靠性也有了大幅的提高。本文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 毛刺产生的原因

毛刺的除方法 状态机制法

对于型的数字路设计,态机是一

4 消控

大电状种

非常理想的选择,能使运行性能和硬件资源的占用达到最佳的优化,另外灵活的使用状态机也可以实现信号的同步和消除毛刺的目的。在数据传递比较复杂的多模块系统中,由状态机在特定的时刻分别发出控制特定模块的时钟信号或者模块使能信号,状态机的循环控制就可以使得整个系统协调运作,同时减少

毛刺信号。那么只要我们在状态机的触发时间上加以处理,就可以避免竞争冒险,从而抑制毛刺的产生。原理如图6-1所示。

图6-1状态机控制原理

首先,我们来设计一个简单的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 IS

signal c0,c1,c2,c3:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(a,b,c0,c1,c2,c3) BEGIN

IF b(0)='0' THEN c0<=\ELSE c0<=a; end if;

IF b(1)='0' THEN c1<=\ELSE c1<=a; end if;

IF b(2)='0' THEN c2<=\ELSE c2<=a; end if;

IF b(3)='0' THEN c3<=\ELSE c3<=a; end if;

y<=(\END PROCESS; END behave;

仿真结果如图5-1:

图5-1四位乘法器仿真结果

如上图所示,如果在不加任何的去除毛刺的措施的时候,我们可以看到结果y中含有大量的毛刺。产生的原因就是每个输入(a和b)的各个数据线上的数据都不可能保证能够同时到达,也就是说在时钟读取数据线上的数据的时候,往往有的数据线上读取的已经是新的数据了,而有的数据线上读取的仍然是上一个数据,无疑这样会产生毛刺信号,而当数据完全稳定的时候,毛刺信号也就自然消失了[8]。

5.1 输出加D触发器

前面我们也有讲到,这是一种比较传统的去除毛刺的方法。原理就是用一个D触发器去读取带毛刺的信号,利用D触发器对于输入信号的毛刺不敏感的特点,去除信号中的毛刺。这是一种在简单逻辑电路中常见的方法,尤其是对于信号中发生在非时钟跳变沿的毛刺信号,其去除效果非常的明显。

但是对于大多数的时序电路来讲,毛刺信号往往是发生在时钟信号的跳变沿,这样,D触发器的效果就不是那么明显了(见图5-2,加D触发器以后的输出D_OUT,仍含有毛刺)。另外,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;

搜索更多关于: 电路设计中的毛刺问题的研究 的文档
电路设计中的毛刺问题的研究.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c46jn9320ur5136q5t3t485bn78arf200cmq_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top