目录
一 FPGA简介
什么是FPGA呢 ?
FPGA的内部结构有什么呢?
为什么要开发FPGA?
FPGA的发展历程?
FPGA用于做什么?
FPGA的优缺点?
二 Xilinx FPGA和Intel FPGA区别
2.1 基本资源逻辑
2.2 内部结构
一 FPGA简介
学习FPGA有一段时间了,因为前一段时间主要学习的是 和 Intel FPGA相关的,最近来了解一下 XIlinx FPPGA,并小小总结一下,两者之间的区别。首先理解一下什么是FPGA,FPGA用来做什么,它有什么优势。
什么是FPGA呢 ?
- FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA的内部结构有什么呢?
- 可编程输入/输出块(IOB)、时钟管理模块、可配置逻辑块(CLB)、嵌入式块 RAM(BRAM)、丰富的布线资源、底层内嵌功能资源、内嵌专用硬核资源等。
- 由于FPGA具有布线资源丰富,可重复编程和集成度高,投资较低的特点,在数字电路设计领域得到了广泛的应用。FPGA的设计流程包括算法设计、代码仿真以及设计、板机调试,设计者以及实际需求建立算法架构,利用EDA建立设计方案或HD编写设计代码,通过代码仿真保证设计方案符合实际要求,最后进行板机调试,利用配置电路将相关文件下载至FPGA芯片中,验证实际运行效果。
为什么要开发FPGA?
- FPGA 相对于传统的PC、单片机的开发有很大的不同。FPGA以并行运算为主,用的是硬件描述语言来实现(常用Verilog VHDL、VHDL等);相比于PC或者单片机的顺序操作有很大的区别,导致FPGA的入门也比较难。FPGA的开发是自顶向下进行设计的,模块分层、逻辑实现、软硬件进行调试之后再进行上板验证。
- FPGA 并非 是单纯局限于 研究和设计芯片,而是针对多领域产品都能借助特定的芯片模型予以优化设计。
- 从芯片角度讲,FPGA本身构成了半定制电路中的典型集成电路,其中富含有数字管理模块、内嵌单元、输入输出单元等。
- 在此基础上,关于FPGA芯片有必要全面着眼于综合性的芯片优化设计,通过改进当前的芯片设计来增设全新的芯片功能,据此实现了芯片整体构造的简化与性能提升。
FPGA的发展历程?
- 1985年 Xilinx公司推出了全球第一款FPGA产品 XC2064。采用的是2um工艺,包含了64个逻辑模块和85000个晶体管,们数量不超过1000个。
- 22年后的2007年,FPGA业界双雄------Xilinx 和 Altera公司 纷纷推出了65nm工艺的FPGA产品,门数量已经达到了千万级别,其中晶体管的数量更是达到了 10亿 个。
FPGA用于做什么?
- 可用作视频图像处理,FPGA芯片硬件结构比较特殊,可用事先编辑的逻辑结构文件调整内部结构,利用约束的文件调整不同的逻辑单元的来凝结和位置。妥善处理好数据线路径,其自身具有的灵活性和适应性方便用户的开发和应用。在处理视频信号时,FPGA芯片可以充分利用自身的速度和结构优势,实现乒乓技术和流水线技术。对外连接过程中,芯片采用数据并行来凝结的方式,使图像信息的位宽拓展,利用内部的咯及功能提高图像的处理速度。通过高速缓存结构以及时钟管理实现对图像处理以及其他设备的控制。在整体的设计结构中,FPGA芯片处于核心位置,复杂数据的插值处理以及提取和存储,还起到总体控制的作用,保证系统的稳定运行。另外,视频信息处理与其他数据处理不同,需要芯片具有特殊的逻辑单元以及RAM或者FIFO单元,保证提高足够的数据传输速度。
- 通信领域,后续补充;
- 安防、、工业领域,比如说安防领域的视频编码解码等协议在前端数据采集和逻辑控制的过程中可以利用FPGA处理。工业领域主要采用规模较小的FPGA,满足灵活性的需求,此外,由于FPGA具有较高的可靠性,因此在军工以及航天领域也有比较广泛的应用。
- 未来,随着技术的不断完善,相关工艺将会完成升级改造,在诸多新型行业比如大数据等,FPGA将会有更为广泛的应用前景。伴随5G网络的建设,初期会大量应用FPGA,人工智能等新型的领域也会更多的用到FPGA。
FPGA的优缺点?
优点:
- FPGA由逻辑单元、RAM、乘法器等硬件资源组成,通过将这些硬件资源合理组织,可实现乘法器、寄存器、地址发生器等硬件电路。
- FPGA可通过使用框图或者Verilog HDL来设计,从简单的门电路到FIR或者FFT电路。
- FPGA可无限地重新编程,加载一个新的设计方案只需几百毫秒,利用重配置可以减少硬件的开销。
- FPGA的工作频率由FPGA芯片以及设计决定,可以通过修改设计或者更换更快的芯片来达到某些苛刻的要求(当然,工作频率也不是无限制的可以提高,而是受当前的IC工艺等因素制约)。
缺点:
- FPGA的所有功能均依靠硬件实现,无法实现分支条件跳转等操作。
- FPGA只能实现定点运算。
总结 :
FPGA依靠硬件来实现所有的功能,速度上可以和专用芯片相比,但设计的灵活度与通用处理器相比有很大的差距
二 Xilinx FPGA和Intel FPGA区别
现在 FPGA 以 Xilinx 或者 Intel 为主,两者使用的开发平台不一样,但是不管Quartus II还是ISE(Vivado)都只是一种工具,如果学习FPGA是以学习工具为主,那就把“路”走偏了。碎碎思认为任何一种语言(Python、C、PHP等)包括Verilog HDL和VHDL核心都是编程思想,你只要编程思想学会了,这门语言才是真正的入门了。
本质区别:
1.基本逻辑资源;
2.内部基本架构。
从使用角度来看,相对而言Xilinx FPGA要比Intel FPGA好用一些,但是Intel FPGA也相对便宜一些。Xilinx FPGA的短线资源非常丰富,这样在综合实现的时候,布线的成功率很高,尤其是逻辑做得比较满的时候。
2.1 基本资源逻辑
Intel FPGA的短线资源经常不够用,经常要占用LE(逻辑单元在Intel FPGA叫作LE(Logic Element,LE),在Xilinx FPGA中叫作LC(LOGIC CELL),下面会详细介绍。)来充当布线资源,但是当你对FPGA理解的更深一点的时候,也能把他的性能发挥得很好。
两家的 FPGA 结构各不相同,参数也各不相同,但可以用统一单位去衡量,那就是 LUT(Look-Up-Table)查找表。
以 Intel 的 Cyclone IV E系列的 EP4CE15,以及 Xilinx 的 Spartan-6 系列的 XC3S500E 为例。以下表格都可以参考芯片的Datasheet。
其中,EP4CE15有15408个LEs。
其中,XC6SLX45有43661个LCs。
其中 Intel 的 LE 和 Xilnx 的 LC 对应于查找表(LUT)的结构。
从图1‑3 Cyclone IV E系列LE结构Cyclone IV E系列LE结构可以知道 1 LE = 1 LUT。
从图1‑4结构可以知道:
1 CLB =4 Slice=9 LC。
Logic Cell = 4-input Look-Up Table (LUT) + a ‘D’ flip-flop;
Datasheet 上有公式:"Equivalent Logic Cells" equals "Total CLBs" x 8 Logic Cells/CLB x1.125 effectiveness。
即有:9LEs/CLB 。
从而可以知道 Xilinx 和 Intel FPGA 逻辑资源的对应关系:
(为了统一度量衡(感觉像 QSH 一样),业界一般会归结到 BLM(Basic Logic Module)1 BLM= 1 LUT4(四输入查找表)+1 寄存器(可以配置成 1 触发器 DFF 或 1 锁存器)+多路复用器 mux。
1 BLM= 1 LC(Xilinx)=4/9 Slice(Xilinx)= 1/9 CLB(Xilinx)=1 LE(Intel)=1LUT(Intel)=0.125 LAB(Intel) =2.25 Tile(Actel)。
于是就可以知道 Intel 的 Cyclone IV 系列的 EP4CE15有15408个LEs;Xilinx 的Spartan-6 系列的 XC6SLX45 有 43661个LCs,就有43661 个 LUT(LEs)。
2.2 内部结构
从1985年Xilinx公司推出第一片FPGA到现在,FPGA的使用已经有近30年的历史了。目前主流市场的FPGA主要还是Xilinx和Intel(2015年12月Intel公司斥资167亿美元收购了Intel公司,下面统一用Intel。)两大系列,下面分别来介绍下它们各自的基本结构组成。
1)Xilinx FPGA内部基本架构
Xilinx的FPGA主要由以下单元结构组成:可配置逻辑块(CLB)、时钟管理模块(CMT)、存储器(RAM/FIFO)、数字信号处理模块(DSP)和一些专用模块。以Virtex-5为例,简单介绍下各模块的功能。
1、CLB是FPGA中组成设计逻辑的主要资源,也是电路设计中工作的主要对象,下面对CLB的内外结构做一个简单介绍。
FPGA的逻辑就是由阵列排布的CLB实现的,每个CLB单元都和一个开关阵列相连,并受其控制以实现逻辑,如下图所示
每一个CLB中包含有两个基本结构(Slice),每个基本结构中包含4个查找表(LUT)、4个存储单元、广函数多路器(Wide_function Multiplexer)和进位逻辑,这种基本结构(Slice)称为SLICEL。另外,有些基本结构(Slice)中还包含使用RAM存储数据的功能和使用32位寄存器移位的功能,支持这些功能的基本结构称为SLICEM。
2、时钟管理模块(CMT)
时钟管理模块(CMT)用于产生高质量的时钟,以Virtex-5系列器件为例,CMT包括两个 数字时钟管理单元(DCM)和一个锁相环电路(PLL)。
3、存储器(RAM/FIFO)
现代Xilinx的FPGA都有内部的存储器块,以Virtex-5为例,内部包含若干块RAM,每一块36KB,并且RAM的大小可以灵活配置。Virtex-5内的RAM是同步的双口RAM,并且可以配置为多速率的FIFO存储器,极大地提高了设计的灵活性。
4、数字信号处理模块(DSP)
大多数的FPGA产品都提供了DSP。
5、其他专用模块
除了上述模块外,在现代的Xilinx的FPGA产品中还有一些其他专用模块,例如:Rocket IO千兆位级收发器、PCI Express端点模块和三态以太网MAC模块等。
2)Intel FPGA内部基本架构
Intel公司的产品一般包括如下单元结构:逻辑阵列模块(LAB)、TriMatrix存储器模块(RAM)、数字信号处理模块(DSP)和锁相环模块(PLL)。下面以StartixII 器件为例说明Intel 公司产品的结构。
1、 逻辑阵列模块(LAB)
逻辑阵列模块(LAB)的主要结构是8个适应逻辑模块(ALM),还包括一些进位链和控制逻辑等结构。适应逻辑模块(ALM)是StratixII器件的基本模块,其结构如下图。
每个ALM中都包含了两个可编程的寄存器、两个专用全加器、一个进位链、一个共享算术链和一个寄存器链。需要注意的是,在上图所示的组合逻辑块(Combinational Logic)中包含了两个4输入4 查找表(LUT)和4个三输入的查找表。
2、 存储器模块(RAM)
StratixII器件具有TriMatrix存储结构,它包括3种大小的嵌入式RAM块。TriMatrix存储器包括512位的M512块、4Kb的M4K块和512Kb的M-RAM块,每个都可以配置支持各种特性。
3、 数字信号处理模块(DSP)
DSP块结构是为实现多种 最大性能和最小逻辑资源利用率的DSP功能而优化的。
4、 锁相环(PLL)
StratixII器件具有多达12个锁相环(PLL)和48个独立系统时钟,可以作为中央时钟管理器满足系统时序需求。
以上可以看出,Xilinx与Intel的FPGA的结构最大不同还是其逻辑单元部分:Xilinx的逻辑单元基本组成为可配置逻辑模块(CLB),而Intel的为LAB,但更深一层讲,CLB和LAB里面也都是由LUT、触发器等构成的。两个公司的FPGA组成各有特点,这也决定了它们的FPGA产品在功能上各有特点。
总结:
Xilinx FPGA独有可配置逻辑块(CLB)/Slice
Intel FPGA独有逻辑阵列模块(LAB)
三 链接
Xilinx 和 atera的区别