对于FPGA的学习者而言,怎样学习FPGA是大家争论不断的。有的认为要先学习语言,也就是HDL硬件描述语言;也有的说要先学习数电、模电,没有这些知识,就算学会了语言,以后的学习也会非常艰难。但是唯一大家都认可的是掌握FPGA的基本结构。
我们先来看看FPGA的家谱。什么电子工艺的发展,电子管、晶体管、集成电路这些就不说了。直接从ASIC(专用集成电路)开始,它的出现,降低了产品的成本、缩小的设计的物理尺寸、增加了系统的稳定性(低、小、稳)。但是它也有一定的局限性(剧情往往就是这么发展的,哈哈),设计周期长,灵活性差,改版投资大(贵、繁、久)。人们希望有一种更灵活的设计方法,在实验室就能设计、更改大规模数字逻辑,研制自己的ASIC,并马上投入使用,因此就有了可编程逻辑的基本思想。
一.可编程逻辑器件
可编程逻辑器件指通过软件手段,更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。
可编程逻辑器件可以分为:PAL/GAL、CPLD、FPGA。
PAL/GAL:(Programmable Array Logic)可编程阵列逻辑,(Generic Array Logic)通用可编程阵列逻辑。大多基于E^2CMOS工艺,结构简单,逻辑单元密度低,仅能适用于一些简单的数字逻辑电路。
CPLD:(Complex Programmable Array Logic)复杂的可编程阵列逻辑。它是在PAL/GAL的基础上发展起来的,多数采用E^2COMS工艺、少数采用Flash工艺。当然它的逻辑功能有了大幅度的提升,可以完成逻辑设计中较高速、较复杂的逻辑功能。
FPGA:(Field Pragrammable Gate Array)现场可编程逻辑阵列。它是在CPLD的基础上发展起来的,一般采用SRAM工艺,有的也采用Flash工艺或反熔丝工艺。它的集成度很高。可以完成极其复杂的时序与组合逻辑电路功能,适用与高速、高密度的高端数字逻辑电路设计领域。
二.FPGA的基本结构
简化的FPGA基本由6部分组成:可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元、内嵌专用硬核。下面分别来解释说明这几个部分。
1.可编程输入/输出单元:简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求。目前大多数FPGA的I/O单元被设计为可编程模式,即可通过软件的配置,适配不同的电气标准与I/O物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。
上面的一些概念,现在读不懂没关系,随着学习的深入,再回过头来看,会加深理解。现在只需要知道FPGA的灵活性其中一方面体现在I/O接口上面,原因是可通过软件编程配置。
2.基本可编程逻辑单元:它是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA的基本可编程逻辑单元几乎都是由查找表LUT和寄存器Reg组成的。FPGA一般依赖查找表完成组合逻辑功能,依赖寄存器完成同步时序逻辑设计。Altera可编程逻辑单元通常被称为LE(logic Element,逻辑单元),1个LUT+1个Reg构成。若干个LE有机的组合起来,构成更大的功能单元,逻辑阵列模块LAB(Logic Array Bolck),LAB中除了LE还包含LE间的进位链、LAB控制信号、局部互联线资源、LUT级联链,寄存器级联链等连线与控制资源。Xilinx的可编程逻辑单元叫Slice,被称为LC(Logic Cell,逻辑单元)。Lattice的底层逻辑单元叫PFU(Programmable Function Unit,可编程功能单元)。
这段大家只需要知道FPGA是基于LUT和寄存器的就可以了,当然你或许之前就已经知道这点,但我相信你看过之后的理解和之前是不一样的。
3.嵌入式块RAM:FPGA内部嵌入可编程RAM模块,大大拓展了FPGA的应用范围和使用的灵活性。体现为单口RAM、双口RAM、CAM、FIFO等常用的存储结构,想必大家已经十分熟悉了。FPGA中没有ROM资源,ROM的实现本质也是RAM。
4.丰富的布线资源:布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。
a.全局性的专用布线资源:用以完成器件内部的全局时钟和全局复位/置位的布线。
b.长线资源:完成器件Bank(分区)间的一些高速信号和一些第二全局时钟信号的布线。
c.短线资源:完成基本逻辑单元之间的逻辑互联与布线。
另外还有各式各样的布线资源和专用时钟、复位等控制信号线。
5.底层嵌入功能单元:底层嵌入功能单元的概念比较笼统,这里指那些通用程度较高的嵌入式功能模块、入PLL、DSP、CPU等。随着FPGA的发展,这些模块越来越多地嵌入到FPGA的内部,以满足不同场合的需求。
6.内嵌专用硬核:这里说的硬核主要指那些通用性较弱,不是所有FPGA器件都包含硬核(Hard Core)。FPGA和CPLD为通用逻辑器件是相对于集成电路ASIC而言的。FPGA内部也有两个阵营:一方面是通用性较强,目标市场范围很广,价格适中的FPGA;两一方面是针对性较强,目标市场明确,价格较高的FPGA。
用户377235 2015-10-12 16:57
不错,长见识了