EDA技术及其创新实践(Verilog HDL版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.8 FPGA的结构与工作原理

FPGA是大规模可编程逻辑器件的另一大类PLD器件,而且其逻辑规模比CPLD大得多,应用领域也要广得多。以下介绍最常用的FPGA的结构及其工作原理。

1.8.1 查找表逻辑结构

前面提到的可编程逻辑器件,诸如GAL、CPLD之类都是基于乘积项的可编程结构,即可编程的与阵列和固定的或阵列组成。而在本节中将要介绍的FPGA,使用了另一种可编程逻辑的形成方法,即可编程的查找表(LUT,Look Up Table)结构,LUT是可编程的最小逻辑构成单元。大部分FPGA采用基于SRAM(静态随机存储器)的查找表逻辑形成结构,就是用SRAM来构成逻辑函数发生器。一个N输入LUT可以实现N个输入变量的任何逻辑功能,如N输入“与”、N输入“异或”等。图1-17是4输入LUT,其内部结构如图1-18所示。

一个N输入的查找表,需要SRAM存储N个输入构成的真值表,需要用位数为2的N次幂的SRAM单元。显然N不可能很大,否则LUT的利用率很低,输入多于N个的逻辑函数,必须用数个查找表分开实现。Xilinx的Virtex-6系列、Spartan-3E系列、Spartan-6系列,Altera的Cyclone、Cyclone 1/2/3/4/5、Stratix-3、Stratix-4等系列都采用SRAM查找表构成,是典型的FPGA器件。

图1-17 FPGA查找表单元

图1-18 FPGA查找表单元内部结构

1.8.2 Cyclone Ⅲ系列器件的结构原理

考虑到本书此后给出的实验项目中主要以Cyclone Ⅲ系列FPGA为主,且其结构和工作原理也具有典型性,故在此简要介绍此类器件的结构与工作原理。

Cyclone Ⅲ系列器件是Altera公司近年推出的一款低功耗、高性价比的FPGA,它主要由逻辑阵列块(LAB,Logic Array Block)、嵌入式存储器块、嵌入式硬件乘法器、I/O单元和嵌入式PLL等模块构成,在各个模块之间存在着丰富的互连线和时钟网络。Cyclone Ⅲ器件的可编程资源主要来自LAB,而每个LAB都由多个逻辑宏单元(LE,Logic Element)构成。LE是Cyclone ⅢFPGA器件的最基本的可编程单元,图1-19所示为Cyclone ⅢFPGA的LE的内部结构。观察图1-19可以发现,LE主要由一个4输入的查找表(LUT)、进位链逻辑、寄存器链逻辑和一个可编程的寄存器构成。4输入的LUT可以完成所有的4输入1输出的组合逻辑功能。每一个LE的输出都可以连接到行、列、直连通路、进位链、寄存器链等布线资源。

图1-19 Cyclone Ⅲ的LE结构图

每个LE中的可编程寄存器可以被配置成D触发器、T触发器、JK触发器和RS寄存器模式。每个可编程寄存器具有数据、时钟、时钟使能、清零输入信号。全局时钟网络、通用I/O口以及内部逻辑可以灵活配置寄存器的时钟和清零信号。任何一个通用I/O和内部逻辑都可以驱动时钟使能信号。在一些只需要组合电路的应用中,对于组合逻辑的实现,可将该可配置寄存器旁路,LUT的输出可作为LE的输出。

LE有三个输出驱动内部互连,其中一个驱动局部互连,另两个驱动行或列的互连资源,LUT和寄存器的输出可以单独控制。可以实现在一个LE中,LUT驱动一个输出,而寄存器驱动另一个输出(这种技术称为寄存器打包)。因而在一个LE中的寄存器和LUT能够用来完成不相关的功能,因此能够提高LE的资源利用率。

寄存器反馈模式允许在一个LE中寄存器的输出作为反馈信号,加到LUT的一个输入上,在一个LE中就完成反馈。

除上述三个输出外,在一个逻辑阵列块中的LE还可以通过寄存器链进行级联。在同一个LAB中的LE里的寄存器可以通过寄存器链级联在一起,构成一个移位寄存器,那些LE中的LUT资源可以单独实现组合逻辑功能,两者互不相关。

Cyclone Ⅲ的LE可以工作在两种操作模式,即普通模式和算术模式。

普通模式下的LE适合通用逻辑应用和组合逻辑的实现。在该模式下,来自LAB局部互连的四个输入将作为一个4输入1输出的LUT的输入端口。可以选择进位输入(cin)信号或者data3信号作为LUT中的一个输入信号。每一个LE都可以通过LUT链直接连接到(在同一个LAB中的)下一个LE。在普通模式下,LE的输入信号可以作为LE中寄存器的异步装载信号。普通模式下的LE也支持寄存器打包与寄存器反馈。

在Cyclone Ⅲ器件中的LE还可以工作在算术模式下。在这种模式下,可以更好地实现加法器、计数器、累加器和比较器。在算术模式下的单个LE内有两个3输入LUT,可被配置成全加器和基本进位链结构。其中一个3输入LUT用于计算,另外一个3输入LUT用来生成进位输出信号cout。在算术模式下,LE支持寄存器打包与寄存器反馈。逻辑阵列块LAB是由一系列相邻的LE构成的。每个Cyclone Ⅲ的LAB包含16个LE,在LAB中,LAB之间存在着行互连、列互连、直连通路互连、LAB局部互连、LE进位链和寄存器链。

在Cyclone ⅢFPGA器件中所含的嵌入式存储器(Embedded Memory),由数十个M9K的存储器块构成。每个M9K存储器块具有很强的伸缩性,可以实现的功能有:8192位RAM(单端口、双端口、带校验、字节使能)、ROM、移位寄存器、FIFO等。在Cyclone ⅢFPGA中的嵌入式存储器可以通过多种连线与可编程资源实现连接,这大大优化了FPGA的性能,扩大了FPGA的应用范围。

在Cyclone Ⅲ系列器件中还有嵌入式乘法器(Embedded Multiplier),这种硬件乘法器的存在可以大大提高FPGA在完成DSP(数字信号处理)任务时的能力。嵌入式乘法器可以实现9×9乘法器或者18×18乘法器,乘法器的输入与输出可以选择是寄存的还是非寄存的(即组合输入输出)。可以与FPGA中的其他资源灵活地构成适合DSP算法的MAC(乘加单元)。

在数字逻辑电路的设计中,时钟、复位信号往往需要同步作用于系统中的每个时序逻辑单元,因此在Cyclone Ⅲ器件中设置有全局控制信号。由于系统的时钟延时会严重影响系统的性能,故在Cyclone Ⅲ中设置了复杂的全局时钟网络,以减少时钟信号的传输延迟。另外,在Cyclone3 FPGA中还含有2~4个独立的嵌入式锁相环(PLL),可以用来调整时钟信号的波形、频率和相位。PLL的使用方法将在第5章中介绍。

Cyclone Ⅲ的I/O支持多种I/O接口,符合多种I/O标准,可以支持差分的I/O标准:诸如LVDS(低压差分串行)和RSDS(去抖动差分信号)、SSTL-2、SSTL-18、HSTL-18、HSTL-15、HSTL-12、PPDS、差分LVPECL,当然也支持普通单端的I/O标准,比如LVTTL、LVCMOS、PCI和PCI-X I/O等,通过这些常用的端口与板上的其他芯片沟通。

Cyclone Ⅲ器件还可以支持多个通道的LVDS和RSDS。Cyclone Ⅲ器件内的LVDS缓冲器可以支持最高达875Mbps的数据传输速率。与单端的I/O标准相比,这些内置于CycloneIII器件内部的LVDS缓冲器保持了信号的完整性,并具有更低的电磁干扰、更好的电磁兼容性(EMI)及更低的电源功耗。

图1-20的示意图为Cyclone Ⅲ器件内部的LVDS接口电路。

图1-20 LVDS连接

Cyclone Ⅲ系列器件除了片上的嵌入式存储器资源外,可以外接多种外部存储器,比如SRAM、NAND、SDRAM、DDR SDRAM、DDR2 SDRAM等。

Cyclone Ⅲ的电源支持采用内核电压和I/O电压(3.3V)分开供电的方式,I/O电压取决于使用时需要的I/O标准,而内核电压使用1.2V供电,PLL供电2.5V。

Cyclone Ⅲ系列中有一个子系列是Cyclone 3LS系列,该器件系列可以支持加密功能,使用AES加密算法对FPGA上的数据做保护。