新闻  |   论坛  |   博客  |   在线研讨会
FPGA开发板DIY活动准备工作(四)——FPGA基础续
51FPGA | 2012-05-09 16:03:28    阅读:1912   发布文章

目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。

根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。

查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。其组成部分主要有可编程输入/输出单元、基本可编程逻辑单元、内嵌SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等,主要设计和生产厂家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。

如前所述,FPGA是由存放在片内的RAM来设置其工作状态的,因此工作时需要对片内RAM进行编程。用户可根据不同的配置模式,采用不同的编程方式。FPGA有如下几种配置模式:并行模式:并行PROM、Flash配置FPGA; 主从模式:一片PROM配置多片FPGA; 串行模式:串行PROM配置FPGA;外设模式:将FPGA作为微处理器的外设,由微处理器对其编程。目前,FPGA市场占有率最高的两大公司Xilinx和Altera生产的FPGA都是基于SRAM工艺的,需要在使用时外接一个片外存储器以保存程序。上电时,FPGA将外部存储器中的数据读入片内RAM,完成配置后,进入工作状态;掉电后FPGA恢复为白片,内部逻辑消失。这样FPGA不仅能反复使用,还无需专门的FPGA编程器,只需通用的EPROM、PROM编程器即可。Actel、QuickLogic等公司还提供反熔丝技术的FPGA,只能下载一次,具有抗辐射、耐高低温、低功耗和速度快等优点,在军品和航空航天领域中应用较多,但这种FPGA不能重复擦写,开发初期比较麻烦,费用也比较昂贵。Lattice是ISP技术的发明者,在小规模PLD应用上有一定的特色。早期的Xilinx产品一般不涉及军品和宇航级市场,但目前已经有Q Pro-R等多款产品进入该类领域。

 目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。FPGA芯片主要由6部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
     
1. 可编程输入输出单元(IOB)

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。 

 外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。

为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。


2.基本可编程逻辑单元
基本可编辑逻辑单元是可编程逻辑的主题,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。fpga一般基于SRAM工艺的,其基本可编辑逻辑单元几乎都是由查找表(LUT,Look Up Table)和寄存器(Reigister)组成的。FPGA内部查找表一般为4输入(注:Altera Stratix II的自适应逻辑模块ALM结构比较特殊),查找表一般完成纯组合逻辑功能。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(Programmalbe Function Unit,可编程功能单元),它由8个LUT和8~9个Register构成。当然这些可编程单元的配置结构随着器件的发展也在不断更新,最新的一些可编程逻辑器件常常根据设计需求推出一些新的LUT和Register的配置比率,并优化其内部的连接构造。

     学习底层配置单元的 LUT和Rtgister比率的一个重要意义在于器件选型和规模估算,很多器件手册上用期间的 ASIC门级或等效的系统门级表示器件的规模。但是由于目前FPGA内部出了基本可编程逻辑单元外,还包含有丰富的嵌入式RAM,PLL或DLL,专用Hard IP Core(硬知识产权功能核)等。这些功能模块也会等效出一定规模的系统门,所以用系统门权衡基本可编程逻辑单元的数量是不准确的,常常混淆设计者。比较简单科学的方法是用器件的Register和LUT的数量衡量(一般来说两者比率为1:1)例如:Xilinx的Apartan-III系列的XC3S1000有15360个LUT,而Lattice的EC系列LEFC15E也有15360个LUT,所以这两款FPGA的可编程逻辑单元数量基本相当,属于同一规模的产品。同样道理,Altera的Cyclone器件族的EP1C12的LUT数量是12060个,就比前面提到的两款FPGA规模略小。需要说明的是,器件选型是一个综合性问题,需要将设计的需求、成本压力、规模、速度等级、时钟资源、I/O特性、封装、专用功能模块等诸多因素综合考虑。

3. 嵌入式块RAM(BRAM)

目前大多数FPGA都有内嵌的块RAM(Block RAM).FPGA内部嵌入可编程RAM模块。大大地扩展了FPGA的应用范围和使用灵活性。FPGA内嵌的块RAM一般可以灵活配置为单端口RAM(SPRAM.Single Pseudo RAM)、双端口RAM(DPRAM,Double Ports RAM)、伪双端口RAM(Pseudo DPRAM)、CAM(Content Addressable Memory).FIFO(First In First Out)等常用存储结构。FPGA中其实没有专用的ROM硬件资源,实现ROM的思路是对RAM赋予初值,并保持该初值。所谓CAM,即内容地址储存器。CAM这种存储器在其每个存储单元都包含了一个内嵌的比较逻辑,写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。概括地讲,RAM是一种根据地址读、写数据的存储单元;而CAM和RAM恰恰相反,它返回的是与端口数据相匹配的内部地址。CAM的应用也非常广泛。比如在路由器中的地址交换表等。FIFO是“先进先出队列”式存储结构。FPGA内部实现RAM.ROM.CAM.FIFO等存储结构都可以基于嵌入式块RAM单元,并根据需求自动生成相应的粘合逻辑(Glue Logic)以完成地址和片选等控制逻辑。

不同器件商或不同器件族的内嵌块RAM的结构不同,Xilinx常见的块RAM大小是4kbit和18kbit两种结构。Lattice常用的块RAM大小是9kbit,Altera的块RAM最为灵活,一些高端器件内部同时含有3种块RAM结构,分别是M512RAM(512bit),M4KRAM(4kbit),M-RAM(512kbit)。

需要补充的是,出了块RAM,Xilinx和Lattice的FPGA还可以灵活地将LUT配置成RAM.ROM.FIFO等存储结构,这种技术被称为分布式RAM(Distributed RAM)。根据设计需求,块RAM的数量和配置方式也是器件选型的一个重要标准
4. 丰富的布线资源

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

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

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

6. 内嵌专用硬核
内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。
Xilinx公司的高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。 1.2.3 软核、硬核以及固核的概念 IP(Intelligent Property)核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了SOC阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力体现。对于FPGA开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占用率就越高。目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
theskyofsnail  2012-09-29 17:27:00 

茅塞顿开啊!谢谢答疑解惑!

推荐文章
最近访客