数字调制解调技术的MATLAB与FPGA实现:Altera/Verilog版(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.3 FPGA的组成结构

目前所说的PLD,通常是指FPGA与CPLD。FPGA与CPLD因其内部结构不同,导致其集成度、运算速度、功耗和应用方面均有一定的差别。通常,将以乘积项结构方式构成逻辑行为的器件称为CPLD,如Xilinx公司的XC9500系列、Altera公司的MAX7000S系列和Lattice公司的Mach系列等,这类器件的密度在几千到几万个逻辑门之间。CPLD更适合触发器有限而乘积项丰富的结构,适合完成复杂的组合逻辑。通常将基于查找表(Look-Up-Table,LUT)结构的PLD器件称为FPGA,如Xilinx公司的Spartan、Virtex-7等系列,Altera公司的Cyclone、Arria、Stratix等系列。FPGA是在CPLD的基础上发展起来的。作为ASIC领域的一种半定制电路器件,FPGA克服了ASIC灵活性不足的缺点,同时解决了CPLD等逻辑门电路资源有限的缺点,这种器件的密度通常在几万门到几百万可利用门之间。FPGA更适合触发器丰富的结构,适合完成时序逻辑,因此在数字信号处理领域多使用FPGA。

目前主流的FPGA仍是基于查找表技术的,但已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)模块。FPGA内部结构如图1-15所示(图1-15只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构),FPGA主要由6部分组成,分别为可编程输入/输出单元(Input/Output Block,IOB)、可配置逻辑块(Configurable Logic Block,CLB)、数字时钟管理模块(Digital Clock Manager,DCM)、嵌入式块RAM(Block RAM,BRAM)、丰富的布线资源和内嵌专用硬核。

图1-15 FPGA内部结构示意图

(1)可编程输入/输出单元(IOB)。可编程输入/输出单元是FPGA与外界电路的接口部分,由于完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-16所示。

FPGA内的I/O接口按组分类,每组都能够独立地支持不同的I/O接口标准。通过软件的灵活配置,可适应不同的电气标准与I/O接口物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻的阻值。目前,I/O接口的数据传输速率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2 Gbps的数据传输速率。外部输入信号既可以通过IOB的存储单元输入FPGA的内部,也可以直接输入FPGA内部。为了便于管理和适应多种电气标准,FPGA的IOB被划分为若干组(Bank),每个Bank的接口标准由其接口电压Vcco决定,一个Bank只能有一种Vcco,但不同Bank的Vcco可以不同。只有具有相同电气标准的端口才能连接在一起,Vcco电压相同是接口标准化的基本条件。

图1-16 FPGA内部的IOB结构图

(2)可配置逻辑块(CLB)。CLB是FPGA内的基本逻辑单元,其实际数量和特性会因器件的不同而不同。用户可以根据设计需要灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA一般是基于SRAM工艺的,其基本可配置逻辑块几乎都由查找表(Look Up Table,LUT)和寄存器(Register)组成。FPGA内部的查找表一般为4输入的LUT,Altera公司的一些高端FPGA采用了ALM(Adaptive Logic Modules,自适应逻辑块)结构,可根据设计需求由设计工具自动配置成所需的模式,如配置成5输入和3输入的LUT、6输入和2输入的LUT或两个4输入的LUT等。查找表一般用来完成组合逻辑功能。

FPGA内部寄存器结构相当灵活,既可以配置为带同步/异步置位、时钟使能的触发器(Flip Flop,FF),也可以配置成锁存器(Latch)。FPGA一般依赖寄存器完成同步时序逻辑设计。比较典型的CLB是1个寄存器加1个LUT,但是不同厂商的寄存器和LUT的内部结构有一定的差异,而且寄存器和LUT的组合模式也不同。例如,Altera公司的CLB通常被称为逻辑单元(Logic Element,LE),由1个寄存器外加1个LUT构成。Altera公司大多数FPGA将10个LE有机地组合起来,构成更大的功能单元—逻辑阵列模块(Logic Array Block,LAB)。除了LE,LAB中还包含LE间的进位链、LAB控制信号、局部互连线、LUT链、寄存器链等连线与控制资源,如图1-17所示。Xilinx公司CLB称为Slice,它是由上下两个部分构成的,每个部分都由1个寄存器加1个LUT组成,称为逻辑单元(Logic Cell,LC),两个LC之间有一些共用逻辑,可以完成LC之间的配合与级联。Lattice公司的底层CLB称为可编程功能单元(Programmable Function Unit,PFU),它由8个LUT和8~9个寄存器构成。当然,这些CLB的配置结构随着FPGA的发展也在不断更新,一些FPGA常常根据设计需求推出一些新的LUT和寄存器的配置比率,并优化其内部的连接构造。

了解CLB的LUT和寄存器比率的一个重要意义在于器件选型和规模估算[3],很多器件通过ASIC门数或等效的系统门数来表示器件的规模。但是由于目前FPGA内部除了CLB,还包含了丰富的嵌入式BRAM、PLL或DLL,专用Hard IP Core(硬知识产权功能核,IP硬核)等。这些功能模块也会等效出一定规模的系统门,所以用CLB的数量来权衡FPGA是不准确的,常常会混淆设计者。比较简单、科学的方法是用器件的寄存器或LUT数量来衡量(一般来说,两者的比率为1:1)。例如,Xilinx公司的Spartan-3系列的XC3S1000有15360个LUT,而Lattice公司的EC系列LFEC15E也有15360个LUT,所以这两款FPGA的CLB数量基本相当,属于同一规模的产品。同样的道理,Alter公司的Cyclone系列的EP1C12的LUT数量是12060个,比前面提到的两款FPGA芯片规模略小。需要说明的是,FPGA的选型是一个综合性问题,需要综合考虑设计需求、成本压力、规模、速度等级、时钟资源、I/O接口特性、封装、专用功能模块等诸多因素。

图1-17 典型的LAB结构示意图

LE是Altera公司FPGA的基本逻辑单位,通常由一个4输入的LUT和1个可编程触发器,再加上一些辅助电路组成。LE有两种工作模式,即正常模式和动态算术模式。其中正常模式用于实现普通的组合逻辑功能,动态算术模式用于实现加法器、计数器和比较器等功能。

LE正常模式的结构如图1-18所示。在正常模式下,LUT作为通用的4输入函数,实现组合逻辑功能。LUT的组合输出可以直接输出到行列互连线,或者通过LUT链输出到下一级LE的LUT输入端,也可以经过触发器的寄存后输出到行列互连线。触发器同样可以通过触发器链串起来作为寄存器。在不相关的逻辑功能中LUT和触发器可以被集成到同一个LE中,而且同一个LE中的触发器的输出可以反馈到LUT中,这样可以提高资源的利用率。

图1-18 LE正常模式的结构

在动态算术模式下,4输入LUT被配置成两个2输入LUT,用于计算两个数相加之和与进位值。LE动态算术模式的结构如图1-19所示。

图1-19 LE动态算术模式的结构

(3)数字时钟管理模块(DCM)。大多数FPGA均提供数字时钟管理模块,用于产生用户所要求的稳定时钟信号,该功能主要由锁相环完成。锁相环能够提供精确的时钟综合、降低抖动,并实现过滤功能。DCM主要指延迟锁相环(Delay Locked Loop,DLL)、锁相环(Phase Locked Loop,PLL)、DSP等处理核。现在,越来越丰富的内嵌功能单元使得单片FPGA成为系统级的设计工具,使其具备了软硬件联合设计的能力,并逐步向SoC平台过渡。DLL和 PLL具有类似的功能,可以完成时钟高精度低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的FPGA集成了DCM和DLL,Altera公司的FPGA集成了PLL,Attice公司的FPGA同时集成了DLL。PLL和DLL可以通过IP核生成工具方便地进行管理和配置。典型DLL的结构如图1-20所示。

图1-20 典型DLL的结构

(4)嵌入式块RAM(BRAM)。大多数FPGA都具有嵌入式BRAM,极大地拓展了FPGA的应用范围和灵活性。BRAM可被配置为单端口RAM、双端口RAM、地址存储器(CAM)和FIFO等。CAM在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址。除了BRAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等。在实际应用中,FPGA内部的BRAM数量也是选择FPGA的一个重要因素。

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

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

(6)内嵌专用硬核。内嵌专用硬核是相对底层嵌入的软核而言的,FPGA内部集成了处理能力强大的硬核(Hard Core),相当于ASIC电路。为了提高FPGA性能,生产商在FPGA内部集成了一些专用的硬核。例如,为了提高FPGA的乘法速度,主流的FPGA都集成了专用乘法器核;为了适应通信总线与接口标准,很多高端的FPGA内部都集成了串/并收发器(SERDES)核,可以达到数10 Gbps的收发速率。Xilinx公司的高端产品不仅集成了PowerPC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Microblaze、Picoblaze等平台,能够开发标准的DSP及其相关应用。Altera公司的高端FPGA不仅集成了大量的硬件乘法器、多个高速收发器模块、PCI模块,还集成了ARM Cortex-A9等具有强大实时处理功能的嵌入式硬核,从而实现SoC的开发。