当前位置:   article > 正文

FPGA原理与结构_fpga原理和结构

fpga原理和结构

FPGA原理

由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构,查找表可以很好地满足这一要求。目前,主流FPGA都采用了基于SRAM工艺的查找表结构,可通过烧写文件改变查找表内容的方法来实现对 FPGA的重复配置。

根据数字电路的基本知识可以知道,对于一个n输人的逻辑运算,不管是与或非运算还是异或运算,最多只可能存在 2n 种结果。所以如果事先将相应的结果存放于一个存储单元中,就相当于实现了与非门电路的功能。FPGA 的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。

查找表(Look-Up-Table)简称为 LUT,LUT 本质上就是一个 RAM。目前,FPGA 中多使用4输人的LUT,所以每一个LUT 可以看成一个有4 位地址线的16X1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写人 RAM。这样,每输入一个信号进行逻辑运算,就等于输入一个地址进行查表,找出地址对应的内容后输出即可。

下面给出一个4输人与门电路的例子来说明 LUT实现逻辑功能的原理。

FPGA芯片结构

目前,FPGA芯片仍是基于查找表技术的,但其概念和性能已经远远超出查找表技术的限制,并且整合了常用功能的硬核模块(如块 RAM时钟管理和 DSP)。图 1-1 所示为Xilinx公司Spartan-2系列FPGA的内部结构图(注意,图1-1所示只是一个示意图。实际上,每一个系列的 FPGA都有其相应的内部结构,由于应用场合不同,所以内部结构会有局部不同),从中可以看出FPGA芯片主要由6个部分(前3个是最基本的)组成:可编程输入/输出单元、基本可编程逻辑单元、丰富的布线资源、完整的时钟管理、嵌人块式 RAM、内嵌的底层功能单元和内嵌专用硬件模块。

1.可编程输入/输出单元简称(IOB)

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,用于完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-2所示。FPGA内的I/O按组分类,每组都能够独立地支持不同的 I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上下拉电阻。目前,I/O口的频率越来越高,一些高端的 FPGA通过 DDR寄存器技术可以支持高达2Gb/s的数据速率。

外部输人信号可以通过IOB模块的存储单元输入到 FPGA的内部也可以直接输入FPGA内部。当外部输入信号经过IOB模块的存储单元输人到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。

为了便于管理和适应多种电气标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压Vcco决定,一个bank 只能有一种 Vcco,但不同 bank的 Vcco可以不同。只有相同电气标准的端口才能连接在一起,Vcco相同是接口标准的基本条件。

2.可配置逻辑块(CLB)

CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输人、一些选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置,以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图1-3所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。

Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图 1-4 所示,一个Slice由两个4/6 输入的查找表函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice 实现2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生器用于实现4 输人LUT分布式RAM或16比特移位寄存器(目前,基于65nm工艺的FPGA一般都采用6输人查找表,可以实现6输入LUT或64 比特移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。

3.丰富的布线资源

布线资源连通 FPGA内部的所有单元,而且连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4个不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用于完成芯片 bank 间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线

在实际中,设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。

4.数字时钟管理模块(DCM)

业内大多数 FPGA均提供数字时钟管理(Xilinx的全部 FPGA均具有这种特性)Xilinx 推出最先进的 FPGA 提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。

5.嵌入式块 RAM(BRAM)

大多数 FPGA都具有内嵌的块 RAM,这大大拓展了 FPGA 的应用范围和灵活性。块RAM可被配置为单端口 RAM、双端口 RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不赘述。CAM 存储器在其内部的每个存储单元中都有一个比较逻辑,写人CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将 FPGA中的LUT 灵活地配置成 RAM、ROM和FIFO等结构。在实际应用中,芯片内部块 RAM的数量也是选择芯片的一个重要因素。

单片块 RAM的容量为18Kbit,即位宽为18bit、深度为 1024bit,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽X深度)不能大于 18Kbit;其次,位宽最大不能超过 36bit。当然,可以将多片块 RAM 级联起来形成更大的 RAM,此时只受限于芯片内块 RAM的数量,而不再受上面两条原则约束。

6.底层内嵌功能单元

内嵌功能模块主要指 DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU 等软处理核(Embeded Processor)。正是由于集成了丰富的内嵌功能单元,从而使得单片 FPGA 成为系统级的设计工具,具备了软、硬件联合设计的能力,逐步向 SOC 平台过渡。

DLL和 PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx 公司生产的芯片上集成了 DLL,Altera 公司的芯片集成了PLL,Lattice 公司的新型芯片上同时集成了 PLL和DLL。PLL 和DLL可以通过IP 核生成的工具方便地进行管理和配置。典型的 DLL结构如图 1-5 所示。

7.内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,指 FPGA处理能力强大的硬核(HardCore),等效于 ASIC 电路。为了提高 FPGA 性能,芯片生产商在芯片内部集成了一些专用的硬核。例如,为了提高 FPGA的乘法速度,主流的 FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十吉比特/秒的收发速度。

例如,Xilinx公司的高端产品不仅集成了 PowerPC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK 和 Platform Studio,并依此提出了片上系统 SOC的概念。通过 PowerPC、MicroBlaze PicoBlaze 等处理器平台,能够开发标准的DSP处理器及其相关应用,达到 SOC的开发目的。

 参考文献:《FPGA开发实用教程》、《FPGA原理和结构》

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/676560
推荐阅读
相关标签
  

闽ICP备14008679号