首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA中竞争冒险问题的研究(1)

FPGA中竞争冒险问题的研究(1)

1 引言
     现场可编程门阵列(FPGA)在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,来实现一定的逻辑功能。 FPGA可以替代其他PLD或者各种中小规模数字逻辑芯片在数字系统中广泛应用,也是实现具有不同逻辑功能ASIC的有效办法。FPGA是进行原型设计最 理想的载体,原型机的最初框架和实现通过PFGA来验证,可以降低成本、缩短开发周期。利用FPGA的可重配置功能,可以在使用过程中,在不改变所设计的 设备的硬件电路情况下,改变设备的功能。但和所有的数字电路一样,FPGA电路中也存在毛刺问题。它的出现会影响电路工作的可靠性、稳定性,严重时会导致 整个数字系统的误动作和逻辑紊乱。在此详细论述了解决此问题的多种方法。
2 FPGA的功能和结构特点
2.1 FPGA的功能
    FPGA的功能由逻辑结构的配置数据决定,在工作时,这些配置数据存放在片内的SRAM或者熔丝图上。使用SRAM的FPGA器件,在工作前需要从芯片外 部加载配置数据,这些配置数据可以存放在片外的EPROM或其他存储体上,人们可以控制加载过程,在现场修改器件的逻辑功能。


图1     实际逻辑电路


图2 LUT的实现方式

2.2 FPGA的结构特点
    FPGA使用了可编程的查找表(Look Up Table ,LUT)结构,LUT是可编程的最小逻辑构成单元。大部分FPGA采用基于SRAM的查找表逻辑形成结构,就是用SRAM(静态随机存储器)来构成逻辑 函数发生器。图1、2分别是4输入LUT的实际逻辑电路和LUT的实现方式。FLEX10KE系列器件的结构和工作原理在Altera的FPGA器件中具 有典型性,下面以此类器件为例,介绍PFGA的结构。其内部结构如图3所示:


图3      FLEX10KE内部结构

    FLEX10KE内部结构包含嵌入式阵列块(EAB,Embedded Array Block)、逻辑阵列块(LAB,Logic Array Block)、快速通道(Fast Track)互连和输入/输出单元(I/O Element,IOE)四部分。
(1) 嵌入式阵列用来实现各种存储器及复杂的逻辑功能,如数字信号处理、微控制器等。嵌入式阵列由一系列嵌入式阵列块(EAB)构成。EAB是在输入输出口上具有寄存器的能变形的RAM块。
(2) 逻辑阵列用来实现普通逻辑功能,如计数器、加法器、状态机等。逻辑阵列由一系列逻辑阵列块(LAB)构成。每个LAB包含八个LE和一些局部互连。LAB 构成了FLEX10KE的“粗粒度”结构,有利于EDA软件进行布局布线,优化器件的利用,提高性能。LE是FLEX10KE结构中的最小单元,每个LE 含有一个4输入查找表(LUT)、一个带有同步使能的可编程触发器(Programmable Register)、一个进位链(Carry Chain)和一个级连链(Cascade)。每个LE都能驱动LAB局部互连(LAB Local Interconnect)和快速通道互连(Fast Track Interconnect)。LE的内部结构如图4所示。


图4     逻辑单元(LE)内部结构

(3) 器件内部信号的互连和器件引出端之间的信号互连由快速通道(FastTrack)连线提供,FastTrack遍布于整个FLEX10KE器件,是一系列水平和垂直走向的连续式布线通道。FastTrack互连是一系列贯通器件行、列的快速连接通道。
(4) I/O引出端由一些I/O单元(IOE)驱动。IOE位于快速通道的行和列的末端,每个IOE有一个双向I/O缓冲器和一个既可做输入寄存器也可做输出寄存器的触发器。
3 竞争冒险
在组合电路中,当逻辑门有两个互补输入信号同时向相反状态变化时,输出端可能产生过渡干扰脉冲的现象,称为竞争冒险。

3.1 FPGA中产生竞争冒险的原因
信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等 条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺 序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。如果一个组合逻辑电路中有“毛刺”出现,就说明该电路存在“冒 险”。(与分立元件不同,由于PLD内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在PLD、FPGA 设计中尤为突出)

3.2 FPGA中竞争冒险的危害
图5给出了一个逻辑冒险的例子,从图6的仿真波形可以看出,“A、B、C、D”四个输入信号经过布线延时以后,高低电平变换不是同时发生的,这导致输出信 号“OUT”出现了毛刺。而当数据完全稳定的时候,毛刺信号也就自然消失了。可以概括的讲,只要输入信号不同时变化,(经过内部走线)组合逻辑必将产生毛 刺。将它们的输出直接连接到时钟输入端、清零或置位端口的设计方法是错误的,这可能会导致严重的后果。而现在FPGA设计中的信号往往是由时钟控制的,多 数据输入的复杂运算系统,甚至每个数据都由相当多的位数组成。这时,每一级的毛刺都会对结果有严重的影响,如果是多级的设计,那么毛刺累加后甚至会影响整 个设计的可靠性和精确性。时钟端口、清零和置位端口对毛刺信号十分敏感,任何一点毛刺都可能会使系统出错,因此判断逻辑电路中是否存在冒险以及如何避免冒 险是设计人员必须要考虑的问题。

图5 一个逻辑冒险的例子

图6 仿真波形


任何组合电路、反馈电路和计数器都可能是潜在的毛刺信号发生器。毛刺并不是对所有输入都有危害,如触发器的D输入端,只要毛刺不出现在时钟的上升沿并满足 数据的建立保持时间,就不会对系统造成危害。而当毛刺信号成为系统的启动信号、控制信号、握手信号,触发器的清零信号(CLEAR)、预置信号 (PRESET)、时钟输入信号(CLK)或锁存器的输入信号就会产生逻辑错误。任何一点毛刺都可能使系统出错。
返回列表