FPGA的基本物理结构

[TOC]

IO

输入/输出单元简称I/O单元,他们是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求.为了使FPGA有更灵活的应用,目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可以适应不同的电气标准与I/O特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等.

这个其实比较好理解,FPGA的管脚是可以配制成输入、输出、双向的,这个是要改变内阻特性的;然后管脚可以灵活的连接到任意内部单元,这个算是FPGA最强大的地方,这个就需要配置内部的连线;然后还有差分对IO,之前没用过的,物理特性也是很不一样的。

基本可编程逻辑单元

基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能.FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表(LUT, Look Up Table)和寄存器(Register)组成的.FPGA内部的查找表一般为4输入,查找表一般完成纯组合逻辑功能.FPGA内部寄存器结构相当灵活,可以配置成为带同步/异步复位或置位,时钟使能的触发器(FF, Flip Flop),也可以配置成为锁存器(Latch).FPGA一般依赖寄存器完成同步时序逻辑设计.一般来说,比较经典的基本可编程单元的配置是一个寄存器加一个查找表,但是不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同.例如,Altera的可编程逻辑单元通常被称为LE(Logic Element),由一个Register和一个LUT组成.Altera大多数FPGA将10个LE有机的组合起来,成更大的功能单元——逻辑阵列模块(LAB,Logic Array Block),LAB中除了LE还包含LE间的进位链,LAB控制信号,局部互联布线资源,LUT级联链,寄存器级联链等连线与控制资源.Xilinx可编程逻辑单元叫做Slice,它是由上下两个部分构成,每个部分都由一个Register加一个LUT组成,被称为LC(Logic Cell,逻辑单元),两个LC之间有一些共用逻辑,可以完成LC之间的配合和级联.Lattice的底层逻辑单元叫做PFU(Programmable Function unit,可编程功能单元),它由8个LUT和8~9个Register组成.当然这些可编程逻辑单元的配置结构随着器件的发展也在不断更新,最新的一些可编程逻辑器件通常根据设计需要推出一些新的LUT和Register的配置比率,并优化其内部的连接构造.

这个部分一直都没有好好看看,就记得SRAM、查找表这几个名词而已。现在看了这段话,觉得明白了很多细节方面的东西,比如Quartus的编译报告里面的逻辑单元为什么会分成两部分。

然后感觉还是有些地方不清楚的,就是SRAM工艺体现在哪里?查找表跟SRAM是好理解的,但是寄存器呢?还有逻辑单元的连线是怎么实现的,是SRAM?还有查找表为什么是4输入1输出的?

布线资源

布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度.FPGA内部有着非常丰富的布线资源,这些布线资源根据工艺,长度,宽度和分布位置的不同而被划分为不同的等级,有一些是全局性的专用布线资源,用以完成器件内部的全局时钟和全局复位/置位的布线;一些叫做长线资源,用以完成器件Bank间的一些高速信号和一些第二全局信号的布线;还有一些叫做短线资源,用以完成基本逻辑单元之前的逻辑互联与布线;另外,在基本逻辑单元内部还有着各式各样的布线资源和专用时钟,复位等控制信号线.

这个部分资料里面对于布线是什么还有布线是怎么实现的说的不清不楚,只能靠自己猜测。这个布线其实归根到底还是由编译好的编程文件来配置的,就是说肯是以二进编码来描述的。这样的话,可以猜测这个布线体系其实是由一个个开关组成的,所有开关状态由编程文件决定。然后这些开关是不是就是SRAM的数据块呢,这个很有可能啊。

其他硬件模块

上面的几个东西是FPGA中最基本东西,剩下的东西就没什么了,就放到一起记了。

嵌入式块RAM

目前大多数FPGA都有内嵌的块RAM,可以灵活的配置为单端口RAM,双端口RAM,伪双端口RAM,CAM,ROM,FIFO等.不同器件的内嵌RAM结构不同,Xilinx常见的块RAM大小是4kbit和18kbit,Lattice常用的块RAM大小是9kbit,Atera的有M512,M4K等.

之前在IP核配置里面会经常见到M512、M4k的字眼,当时还反应不过来这个原来指的就是RAM的容量。

嵌入功能单元

就是PLL,DLL(功能跟PLL是一样的),DSP还有CPU这些。

PLL没得说,只能通过硬件实现,这个也是现在的FPGA里面一定会有的东西。DSP其实就是静态乘法器。CPU应该是高端器件里面才会有的东西,我其实是很看好CPU嵌入FPGA这种方式的,CPU的功能抽象能力加上FPGA逻辑单元的高速数据传输还有灵活的管脚配置,这样很是完美。

专用硬核

指的是一些非常高速的串并收发单元,这个是用于专业场合的。