数字通信同步技术的MATLAB与FPGA实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 FPGA概念及其在信号处理中的应用

1.3.1 基本概念及发展历程

1.基本概念

随着数字集成电路的发展,越来越多的模拟电路逐渐由数字电路取代,同时数字集成电路本身也在不断地进行更新换代。它由早期的电子管、晶体管、中小规模集成电路发展到超大规模集成电路,以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。电子工程设计师们更愿意自己设计专用集成电路芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际的工程应用之中,因而出现了可编程逻辑器件(Programmable Logic Device,PLD)。其中应用最广泛的为现场可编程门阵列(Field Programmable Gate Array,FPGA)和复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)。PLD的主要特点是芯片或器件的功能完全由用户通过特定软件编程控制,并完成相应功能,且可反复擦写。这样,用户在用PLD设计好PCB(Printed Circuit Board,印制电路板)后,只要预先安排好PLD引脚的硬件连接,即可只通过软件编程的方式灵活改变芯片功能,从而达到改变整块PCB功能的目的。这种方法不需对PCB进行任何更改,从而大大缩短了产品的开发周期和成本。也就是说,由于使用了PLD进行设计,硬件设计已部分实现了软件化。随着生产工艺的不断革新,高密度、超大规模FPGA/CPLD器件越来越多地在电子信息类产品设计中得到应用,同时由于DSP、ARM(Advanced RISC Machines)技术与FPGA技术相互融合,在数字信号处理等领域,已出现了具有较强通用性的硬件平台,核心硬件设计工作正逐渐演变为软件设计。

2.发展历程

早期的可编程逻辑器件在20世纪70年代初出现,这一时期只有可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)和电可擦除只读存储器(Electrically EPROM,EEPROM)3种。这类器件结构相对简单,只能完成简单的数字逻辑功能,但也足以给数字电路设计带来巨大变化。

20世纪70年代中期出现了结构上稍复杂的可编程芯片,即可编程逻辑器件。它能够完成各种数字逻辑功能。典型的PLD由 “与”门和“或”门阵列组成。由于任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以“乘积项”的形式完成大量的组合逻辑功能。这一阶段的产品主要有PAL(Programmable Array Logic,可编程阵列逻辑)和GAL(Generic Array Logic,通用阵列逻辑)。PAL由一个可编程的“与”平面和一个固定的“或”平面构成。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是PLA(Programmable Logic Array,可编程逻辑阵列),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑,如GAL16V8、GAL22V10等。它采用了EEPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期PLD器件的一个共同特点是,可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。

为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx两家公司分别推出了类似于PAL结构的扩展型CPLD和与标准门阵列类似的FPGA。它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和GAL的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其他ASIC相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无须测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。

20世纪90年代末以来,随着可编程逻辑器件工艺和开发工具日新月异的发展,尤其是Xilinx公司和Altera公司不断推出新一代超大规模可编程逻辑器件。FPGA技术与ASIC、DSP及CPU技术不断融合,FPGA器件中已成功地以硬核的形式嵌入ASIC、PowerPC处理器、ARM处理器,以HDL的形式嵌入越来越多的标准数字处理单元,如PCI控制器、以太网控制器、MicroBlaze处理器、Nios以及NiosⅡ处理器等。新技术的发展不仅实现了软、硬件设计的完美结合,也实现了灵活性与速度设计的完美结合,使得可编程逻辑器件超越了传统意义上的FPGA概念,并以此发展形成了现在流行的SoC(System on Chip,系统级芯片)及SoPC(System on a Programmable Chip,片上可编程系统)设计技术,其应用领域扩展到了系统级,涵盖了实时数字信号处理技术、高速数据收发器、复杂计算以及嵌入式系统设计技术的全部内容。

目前,FPGA的发明者,Xilinx公司正在研制采用全新工艺的新型FPGA,这种FPGA将集成更大的存储单元和其他功能器件,FPGA正向超级系统芯片的方向发展。FPGA的演进历程示意图如图1-1所示。

图1-1 FPGA的演进历程

1.3.2 FPGA的结构和工作原理

1.FPGA的结构

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

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

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

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-3所示。

图1-2 FPGA芯片内部结构示意图

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

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电压相同是接口标准化的基本条件。

2)可配置逻辑块(CLB)

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

Slice是赛灵思公司定义的基本逻辑单位,其内部结构如图1-5所示。一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND)。一个异或门可以使一个Slice实现2 bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片Slice中的两个输入函数为6输入,可以实现6输入LUT或64 bit移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。

图1-4 典型的CLB结构示意图

3)数字时钟管理模块(DCM)

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

4)嵌入式块RAM(BRAM)

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

图1-5 典型的4输入Slice结构示意图

对于一般的FPGA器件来讲,单片块RAM的容量为18 kbit,即位宽为18 bit、深度为1024。用户可以根据需要改变其位宽和深度,还可以将多片块RAM级联起来形成更大的RAM,此时所配置的最大容量只受限于芯片内的块RAM数量。

5)丰富的布线资源

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

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

6)底层内嵌功能单元

内嵌功能模块主要指DLL(Delay Locked Loop,延迟锁定环)、PLL(Phase Locked Loop,锁相环)、DSP等软处理核(Soft Core)。现在越来越丰富的内嵌功能单元使得单片FPGA成为系统级的设计平台,使其具备软、硬件联合设计的能力,并逐步向SoC平台过渡。DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。赛灵思公司生产的芯片上集成了DCM和DLL,Altera公司的芯片集成了PLL,Attice公司的新型芯片上同时集成了PLL和DLL。PLL和DLL可以通过IP核生成工具方便地进行管理和配置。DLL的结构如图1-6所示。

图1-6 典型DLL结构

7)内嵌专用硬核

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

2.FPGA的工作原理

众所周知,类似于PROM、EPROM、EEPROM可编程器件的可编程原理是通过加高压或紫外线导致三极管或MOS管内部的载流子密度发生变化,来实现所谓的可编程,但是这些器件大多只能实现单次可编程,或者编程状态难以稳定。FPGA则不同,它采用了LCA(Logic Cell Array,逻辑单元阵列)这样一个新概念,内部包括CLB(Configurable Logic Block,可配置逻辑模块)、IOB(Input Output Block,输入/输出模块)和内部连线(Interconnect)三个部分。FPGA的可编程实际上改变了CLB和IOB的触发器状态。这样可以实现多次重复的编程。由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。

根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不论是与、或运算,还是其他逻辑运算,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存储单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写程序文件去配置查找表的内容,从而在相同电路结构的情况下实现了不同的逻辑功能。查找表简称LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

从表1-1中可以看到,LUT具有和逻辑电路相同的功能。实际上,LUT具有更快的执行速度和更大的规模。由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序逻辑与组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。

表1-1 LUT输入与门的真值表

FPGA是由存放在片内RAM中的程序来设置其工作状态的。因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式编程。加电时,FPGA芯片将EPROM中的数据读入片内的编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失。因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须通用的EPROM、PROM编程器即可。Actel、QuickLogic等公司还提供反熔丝技术的FPGA,具有抗辐射、耐高低温、低功耗和速度快等优点,在军品和航空航天领域中应用较多,但这种FPGA不能重复擦写,开发初期比较麻烦,费用也比较昂贵。

3.IP核的概念

IP(Intelligent Property)核是指具有知识产权的集成电路模块或软件功能模块的总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了SoC阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力的体现。对于FPGA开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占有率就越高。目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。

从IP核的提供方式上,通常将其分为软核、固核和硬核这3类。从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用性最高。

1)软核(Soft IP Core)

软核在EDA设计领域指的是综合之前的寄存器传输级(Register Transfer Level,RTL)模型。具体在FPGA设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核是已通过功能仿真的功能模块,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP核应用最广泛的形式。

2)固核(Firm IP Core)

固核在EDA设计领域指的是带有平面规划信息的网表,具体在FPGA设计中可以看作带有布局规划的软核,通常以RTL代码和对应具体工艺网表的混合形式提供。将RTL描述的标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具布线后即可使用。和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。目前,固核也是IP核的主流形式之一。

3)硬核(Hard IP Core)

硬核在EDA设计领域指经过验证的设计版图,具体在FPGA设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。不能修改的原因有两个:首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;其次是保护知识产权的要求,不允许设计人员对其有任何改动。IP硬核的不许修改特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄,但其性能优良、可靠性及稳定性高。

1.3.3 FPGA在数字信号处理中的应用

毫无疑问,现代数字信号处理技术的实现平台主要有ASIC、DSP、CPU及FPGA四种。随着半导体芯片生产工艺的不断发展,四种平台的应用领域已越来越呈现相互融合的趋势,但因各自的侧重点不同,依然有各自的优势及鲜明特点。关于对四者的性能、特点、应用领域等方面的比较分析一直都是广大技术人员及专业杂志讨论的热点之一。相对而言,ASIC只提供可以接受的可编程性和集成水平,通常可为指定的功能提供最佳解决方案;DSP可为涉及复杂分析或决策分析的功能提供最佳可编程解决方案;CPU则在需要嵌入操作系统、可视化显示等领域得到广泛应用;FPGA可为高度并行或涉及线性处理的高速信号处理功能提供最佳的可编程解决方案。

任何信号处理器件性能的鉴定必须包括衡量该器件是否能在指定的时间内完成所需的功能。这类评估中一种最基本的测量方法就是1024点快速傅里叶变换(FFT)处理时间的测量。考虑一个具有16个抽头的简单FIR滤波器。该滤波器要求在每次采样中完成16次乘积和累加(MAC)操作。德州仪器公司的TMS320C6203 DSP具有300MHz的时钟频率,在合理的优化设计中,每秒可完成大约4亿至5亿次MAC操作。这意味着C6203系列器件的FIR滤波具有最大为3100万次每秒采样的输入速率。但在FPGA中,所有16次MAC操作均可并行执行。对于Xilinx的Virtex器件,16位MAC操作大约需要配置160个结构可重置的逻辑块(CLB),因此16个并发MAC操作的设计实现将需要大约2560个CLB。XCV300E可轻松地实现上述配置,并允许FIR滤波器工作在1亿个样本每秒的输入采样速率下。

目前,无线通信技术的发展十分迅速,无线通信技术发展的理论基础之一是软件无线电技术,而数字信号处理技术无疑是实现软件无线电技术的基础。无线通信一方面正向语音和数据综合的方向发展;另一方面,在手持PDA产品中越来越多地需要综合移动技术。这一要求对应用于无线通信中的FPGA芯片提出了严峻的挑战,其中最重要的三个方面是功耗、性能和成本。为适应无线通信的发展需要,FPGA系统芯片(System On a Chip,SoC)的概念、技术、芯片应运而生。利用系统芯片技术将尽可能多的功能集成在一片FPGA芯片上,使其性能上具有速率高、功耗低的特点,不仅价格低廉,还可以降低复杂性,便于使用。

实际上,FPGA器件的功能早已超越了传统意义上的胶合逻辑功能。随着各种技术的相互融合,为了同时满足运算速度、复杂度,以及降低开发难度的需求,目前在数字信号处理领域及嵌入式技术领域,FPGA加CPU的配置模式已浮出水面,并逐渐成为标准的配置模式。全球最大的两家FPGA厂商,Altera和Xilinx,均推出了各自的嵌入了CPU核的FPGA器件及开发软件。Xilinx于2010年在其28 nm工艺的FPGA上嵌入ARM Cortex-A9内核,紧接着Altera宣布在其28 nm FPGA上嵌入ARM Cortex-A9、MIPS32等内核。这也直接推动嵌入式设计跨入了新的设计时代。