FPGA的设计这么久了,每次介绍给别人,总觉得说话不够深入,不好意思。
这次,我将展开FPGA的硬件属性,简单地写下来,和大家分享。
我的很多朋友都是经验丰富的算法工程师、嵌入式工程师,但是他们在数学、MCU的背景下,对数学公式和嵌入式有很多了解。 因此,关于什么是FPGA以及FPGA能做什么只有模糊的概念。 每次说你的算法设计得很好,我FPGA都能给你高效的实现。 他们总是不相信。 你为什么会有效率? 为什么有效率? 你能比现在的人工智能芯片更厉害吗? 留下了很多零散的说明。 我们总是喜欢刨根问底,如果你问得很急,他们会说:“组成FPGA可以让你做不同的事情。”但是他们真的会问FPGA里面有什么,或者如何在设计中使用FPGA这种高级产品呢
事实上,MCU适用于某些任务,但对某些控制和复杂计算可能特别不利。 例如,如果需要并行执行大量计算任务,FPGA可能会让你高兴。
# # # #
FPGA的基本结构如下。
查找表(lut ) :逻辑操作查找表; 通常输入n个LUT,需要2n个存储单元,一般为4输入查找表结构。 LUT可以用于计算,也可以用作存储器。
闪存(闪存) :触发器可以存储LUT操作的结果,并控制输出数据的时钟周期,包括时钟控制等。
wire:总线连接
I/O:数据通过I/O与FPGA和其他设备通信
DSP:算法计算逻辑单元由加法器和乘法器组成。
BRAM :在FPGA上配置双端口RAM,以便在片上存储大数据,并在相同的时钟周期内访问不同的ram位置。
在介绍一点补充LATCH、DFF :
LATCH :是锁存器。 由级别触发,异步控制。 使能信号有效时latch相当于路径,使能信号无效时latch维持输出状态。
LUT和LATCH的共同点都属于组合逻辑。
不同之处在于,LUT是FPGA的最小单元配置,而LATCH不是。
DFF是d类触发器。 由边缘引起,分为时序逻辑。 reg由DFF构成。 定义8位寄存器意味着使用了8个同步的d触发器。
# # # #
FGA采用逻辑单元阵列LCA这一概念,内部有可配置逻辑模块CLB、输出输入模块IOB、内部连线三部分。
FGA通过小型查找表实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器驱动其他逻辑电路或驱动I/O
组合逻辑功能FPGA的逻辑通过将编程数据加载到时序逻辑功能中来实现,根据存储在存储器单元中的值,逻辑单元的逻辑功能和
将程序烧到MCU,程序固件写入MCU片上存储器ROM,大多数现代MCU片上存储器ROM是闪存,可以断电保存数据,即使关闭,程序也可以
另一方面,对于Altera和Xilinx两个FPGA芯片来说,FPGA芯片是基于SRAM的查找表(LUT ),因此在将. sof下载到FPGA芯片之后,这些数据直接用于SRAM的查找解决方法是在FPGA芯片的外部放置即使关闭电源也不会丢失数据的存储器。 例如,在一般的EPCS、QFLASH等中,在FPGA内部设计专用的硬件电路,芯片接通电源后立即积极地读取其存储器中的固件,配置在FPGA芯片上。
接通电源时,FPGA芯片将EPROM内的数据读取到片上编程存储器中,配置完成后,FPGA进入工作状态。
关闭电源后,FPGA返回白色薄片,内部逻辑关系消失,因此FPGA可重复使用。
FPGA内部不存在计算概念,所有结果大多由硬件直接给出,因此计算速度快,计算延迟准确到多少个时钟? FPGA进行并行计算的性能功耗分配了几个GPU (也并不夸张),但其代价是开发难度的增大。 看来会写Verilog的老司机还是比会写Verilog的老司机少,所以Xilinx一直试图推进HLS,在Verilog上开发FPGA。 但是,这类似于程序集和FPGA之间的关系。 关于终极性能,Verilog肯定更好。
# # # #
########
FPGA计算能力分析
FPGA作为一种高性能、低功耗的可编程芯片,可以根据客户定制来做针对性的算法设计。所以在处理海量数据的时候,FPGA 相比于CPU 和GPU,优势在于:FPGA计算效率更高,FPGA更接近IO。
FPGA不采用指令和软件,是软硬件合一的器件。对FPGA进行编程要使用硬件描述语言,硬件描述语言描述的逻辑可以直接被编译为晶体管电路的组合。所以FPGA实际上直接用晶体管电路实现用户的算法,没有通过指令系统的翻译。
FPGA的英文缩写名翻译过来,全称是现场可编程逻辑门阵列,这个名称已经揭示了FPGA的功能,它就是一堆逻辑门电路的组合,可以编程,还可以重复编程。
这里用Xilinx的V7-690T进行分析FPGA计算能力,V7-690T包含3600个DSP(Digital Signal Processing),DSP就是FPGA的计算单元。每个DSP可以在每个时钟周期可以做2个单精度浮点计算(乘和加)。
FPGA峰值浮点计算性能 = DSP个数 X FPGA频率 X 每周期执行的浮点操作数。
V7-690T运行频率已250MHz来计算,V7-690T峰值浮点计算性能 = 3600(DSP个数) X 250MHz X 2(乘和加)=1.8T FLOPs/s即每秒1.8T峰值浮点计算能力。
FPGA芯片结构是否可以充分发挥浮点计算能力?FPGA由于算法是定制的,所以没有CPU和GPU的取指令和指令译码过程,数据流直接根据定制的算法进行固定操作,计算单元在每个时钟周期上都可以执行,所以可以充分发挥浮点计算能力,计算效率高于CPU和GPU。