基于Nios Ⅱ内核的FPGA电路系统设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 可编程逻辑器件的发展历程

可编程逻辑器件从20世纪70年代发展到现在, 已经形成了许多类型的产品, 其结构、工艺、集成度、速度和性能等都在不断地改进和提高。这个发展过程经历了可编程只读存储器(Programmable Read Only Memory, PROM)、可编程阵列逻辑(Programmable Array Logic,PAL)、通用阵列逻辑(Generic Array Logic, GAL), 直到复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。早期出现的PROM、PAL和GAL集成度较低, 称为简单PLD。

2.2.1 简单PLD的基本结构

1. 可编程只读存储器(PROM)

可编程只读存储器(PROM)芯片的结构如图2-2所示。输入缓冲电路提供输入信号的原变量和反变量, 与门提供所有输入信号的组合, 或门的输入采用可编程连接。对于任意一个给定的输入信号变量组合, 相应的与门输出高电平。如果或门的输入和该与门的输出相连接, 则此或门输出高电平;如果或门的输入没有和该与门的输出相连接, 则这个或门将输出低电平。

图2-2 可编程只读存储器(PROM)芯片的结构

在图2.2(b)中, 3个或门的输出分别为:

O2 =AB+

O1 =

O0 =

由于可编程只读存储器(PROM)产生了输入信号的所有乘积项, 所以它能产生输入信号的任意逻辑函数。这种器件的缺点是当输入信号包括的变量数目较大时实现起来很困难,因为每增加一个输入变量, 需要编程的连接点将增加一倍。

2. 可编程阵列逻辑(PAL)

考虑到在实际应用时, 绝大多数组合逻辑函数并不需要所有的乘积项, 因此可编程阵列逻辑(PAL)对PROM进行了改进, 这种芯片的结构如图2-3所示。

图2-3 可编程阵列逻辑(PAL)芯片的结构

相对于如图2-2所示的PROM内部电路, 图2.3所示的PAL内部电路的与门输入是可编程的, 或门的输入是固定连接。它适合逻辑函数只需要较少的乘积项的情况。由于与门的输入是可编程的, 因此它可以产生输入信号的任意一种乘积项。每个或门的输入只和3个与门的输出固定连接, 它限定了每个输出函数只能有3个乘积项。

通常情况下, PAL器件的乘积项数允许达到8个, 而一般逻辑函数的与或式中仅需要完成3~4个乘积项的或运算, 因此PAL的这种阵列结构很容易满足大多数逻辑函数的设计要求。

在图2.3(b)中, 3个或门的输出分别为:

O2 =AB+

O1 =+

O0 =AC+BC

上面提到的PROM和PAL电路结构只能解决组合逻辑的可编程问题, 对时序逻辑还是无能为力。在如图2-3所示电路的基础上再加上输出寄存器单元就可以实现时序逻辑的可编程了。

为实现不同的应用需要, PAL的输出结构很多, 一种输出结构只能实现一种类型的逻辑函数,器件种类繁多使得生产和使用都不方便。此外PAL一般采用熔丝工艺生产, 只能实现一次可编程, 修改不方便。现在PAL器件已不生产, 在中小规模可编程应用领域, 已经被GAL取代。

3. 通用阵列逻辑(GAL)

通用阵列逻辑(GAL)是在可编程阵列逻辑(PAL)的基础上发展起来的, 它沿用了与阵列可编程、或阵列固定的结构。它们之间的区别反映在编程工艺和输出结构方面。一般的PAL器件采用熔丝型编程工艺, 属于一次性可编程器件;GAL器件采用E2 PROM型编程工艺, 允许对其进行多次编程。它在输出部分增加了输出逻辑宏单元(Output Logic Macro Cell, OLMC), 使得一种GAL器件可以代替多种PAL器件。

如图2-4所示为GAL 16V8的结构图, 它是Lattice Semiconductor公司的产品。这种芯片具有8个专用输入引脚(引脚2~9), 2个特殊功能输入引脚(引脚1和引脚11), 8个输入/输出引脚(引脚12~19)。

图2-4 GAL 16V8结构图

8个专用输入引脚中每一个的输入信号经过一级缓冲以后, 产生输入信号的原变量和反变量, 它们分别连接到输入矩阵对应的列线上, 为与阵列提供一部分输入信号。与阵列的输入信号还包括来自输出逻辑宏单元(OLMC)的反馈信号, 这些反馈信号也分别连接到输入矩阵对应的列线上。

输出逻辑宏单元(OLMC)的电路图如图2-5所示。每个OLMC具有1个8输入或门、D触发器、4输入三态数据选择器(Three State MUX)、输出数据选择器(Out MUX)、乘积项数据选择器(Prod T MUX)和反馈数据选择器(Feedback MUX)。

图2-5 输出逻辑宏单元(OLMC)的电路图

OLMC中的4个数据选择器通过不同的选择方式可以产生多种输出结构。其中, 输出数据选择器用来选择输出方式和输出极性, 反馈数据选择器用来选择反馈信号, 这两个数据选择器的状态取决于E2 PROM矩阵中的可编程位(AC0和AC1)。

输出数据选择器是一个2输入数据选择器, 它由E2 PROM矩阵中的可编程位(AC0和AC1)控制, 在组合逻辑输出和寄存器(D触发器)输出之间实现选择。

反馈数据选择器也由E2 PROM矩阵中的可编程位(AC0和AC1)控制, 用来选择反馈到输入矩阵中的逻辑信号, 这些反馈信号和芯片的输入信号一起作为“与-或”阵列的输入信号。由于反馈信号中包括D触发器的输出信号, 这个特点使得GAL器件具有了实现时序逻辑的能力。

上面讨论的可编程只读存储器(PROM)、可编程阵列逻辑(PAL)和通用阵列逻辑(GAL)通常被称为简单可编程逻辑器件。现在广泛使用的两种可编程逻辑器件是复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA), 它们也被称为大容量可编程逻辑器件。

2.2.2 FPGA的基本结构

现场可编程门阵列(FPGA)是20世纪80年代出现的可编程逻辑器件, 它是由若干独立的现场可编程逻辑模块组成的, 用户可以通过对这些模块的编程来实现所需要的逻辑功能。通常, 由于FPGA中可编程逻辑模块的排列形式和门阵列(Gate Array)中单元的排列形式十分相似, 因此使用了门阵列这个名称。

FPGA由6部分组成, 分别为可编程I/O单元、基本可编程逻辑单元、嵌入式RAM块、布线资源、底层嵌入功能单元和内嵌专用硬核等。FPGA的基本结构如图2-6所示。

图2-6 FPGA的基本结构

1. 可编程输入/输出单元(I/O单元)

可编程输入/输出单元简称I/O单元, 它们是芯片与外部电路的接口部分, 用于完成不同电气特性下对输入/输出信号的驱动与匹配需求。

目前大多数FPGA的I/O单元被设计为可编程模式, 即通过软件的灵活配置, 可适应不同的电器标准与I/O物理特性;可以调整匹配阻抗特性, 上、下拉电阻;可以调整输出驱动电流的大小等。

2. 基本可编程逻辑单元

FPGA的基本可编程逻辑单元(Logic Elements, LE)是由查找表(Look -Up Table, LUT)和寄存器(Register)组成的, 其中查找表被用来实现纯组合逻辑功能。基本可编程逻辑单元内部的寄存器可配置为带同步/异步复位和置位、时钟使能的触发器, 也可以配置为锁存器。FPGA一般依赖寄存器完成同步时序逻辑设计。

随着器件的发展, 可编程逻辑单元的配置结构也在更新, 最新的可编程逻辑器件常常会根据设计要求推出新的LUT和寄存器的配置比率, 并优化其内部的连接结构。学习底层LUT和寄存器的配置比率的重要意义在于器件选型和规模估算。很多器件手册讲器件的规模时用器件的ASIC门数或等效的系统门数表示, 其实用系统门数权衡基本可编程逻辑单元的数量是不准确的, 这是由于FPGA内部除了基本可编程逻辑单元外, 还有嵌入式的RAM、PLL或DLL, 以及专用的Hard IP Core等, 这些功能模块也能等效出一定规模的系统门。比较简单科学的方法是用器件的LUT或寄存器的数量衡量。

3. 嵌入式RAM块

目前大多数FPGA都有内嵌的RAM块。嵌入式RAM块可以配置为单端口RAM、双端口RAM、伪双端口RAM、内容地址存储器(Content Addressable Memory, CAM)和FIFO等存储结构。FPGA中没有专用的ROM资源, 而是用对RAM赋初值, 并保持初值的方法来实现ROM。

不同厂商或不同器件族的嵌入式RAM块的结构不同。Xilinx常见的RAM块的大小是4Kb和18Kb两种结构。Altera的RAM块最为灵活, 一些高端器件内部同时有M512RAM(512b)、M4KRAM(4Kb)和M-RAM(512b)3种RAM块结构。

4. 布线资源

布线资源连通FPGA内部所有单元, 连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。布线资源根据工艺、长度、宽度和分布位置的不同划分为全局性的专用布线资源、长线资源和短线资源。全局性的专用布线资源用来完成器件内部的全局时钟和全局复位/置位的布线;长线资源用来完成器件分区(Bank)间的一些高速信号和一些第二全局时钟信号的布线;短线资源用来完成基本逻辑单元间的逻辑互联与布线。另外, 在基本逻辑单元内部还有着各种布线资源和专用时钟、复位等控制信号线。

5. 底层嵌入功能单元

底层嵌入功能单元是指通用程度较高的嵌入式功能模块, 如锁相环(Phase Locked Loop, PLL)、DLL(Delay Locked Loop)、DSP(Digital Signal Processing)和CPU等。并非所有的FPGA器件都有底层嵌入功能单元, 但是随着FPGA的发展, 这些模块被越来越多的嵌入到其内部, 以适应不同场合的需求。

大部分FPGA厂商都在FPGA内部集成了DLL和PLL硬件电路以完成时钟的高精度、低抖动的倍频、分频、占空比调整和移相等功能。Xilinx公司生产的芯片上集成了DLL;Altera公司的芯片集成了PLL;Lattice公司的新型芯片上同时集成了PLL和DLL。

现在越来越多的FPGA产品都包含DSP和CPU等软处理核(Soft Core), 使得FPGA在一定程度上具备了实现软硬件联合设计的能力, 并逐步向SOPC(System On Programmable Chip)平台过渡。

6. 内嵌专用硬核

内嵌专用硬核主要是那些通用性相对较弱, 而针对性较强的专用硬核。并非所有的FP-GA器件都有内嵌专用硬核。