FPGA的人工智能之路:基于Intel FPGA开发的入门———第二章—FPGA的架构

FPGA的架构:可编程的I/O、可编程逻辑、可编程存储器和可编程DSP模块

  2.2FPGA逻辑阵列模块

逻辑阵列模块(LAB)由逻辑单元(LEs)或自适应逻辑模块(ALM)组成

逻辑块中的每一个都包含查找表、寄存器和其他可配置功能。

典型的FPGA的逻辑模块主要由3个主要部分组成:查找表(LUT)、进位逻辑和输出寄存器逻辑。

2.2.1查找表(LUT)

是FPGA生成乘积函数和(与或表达式)等组合逻辑的关键。LUT由一系列级联的多路复用器(选择器)组成,LUT的输入作为选择线。多路复用器的输入被编程为高或低逻辑电平。

之所以叫查找表是因为,LUT的输入是查找的序号,多路复用器的输入是表中所有的值,根据LUT的输入去查找多路复用器的输入。

2.2.2可编程寄存器

LE逻辑单元的同步部分来自可编程寄存器,逻辑单元通常由全局时钟驱动,但任何时钟域都可以驱动LE。寄存器的输入控制信号可以由其他逻辑产生,也可以来自IO引脚。寄存器的输出可以驱动LE到设备的布线通道,或者反馈到LUT,寄存器也可以被旁路,产生严格的组合逻辑功能。(ps:旁路技术,在输出和输入之间有专门的通道可以执行结果到输入的操作,解决了需要等待操作完成的问题。不必等待某条指令的执行结果送回到寄存器后,再从寄存器中取出结果。作为下一条指令的源操作数,而是直接将执行结果送到其他所需要的地方。)

2.2.2.1进位和寄存器链

进位可以来自LAB内的其他LE或来自设备中的其他LAB。生成的进位可以输出到其他LE或互联的设备。LUT和进位逻辑可以在LAB内完全旁路,链接LAB中的所有LE寄存器。

2.2.2.2寄存器封装

寄存器封装:通过配置,LE被配置出一些功能、函数。

不理解:单个LE可以输出两个独立的功能,一个来自LUT和进位链逻辑,另一个来自输出寄存器。这个可以节省设备资源,因为完全不相关的寄存器函数可以打包到仅使用模块组合逻辑部分的LE中。

2.2.3LABs和LE:更进一步观察

放大特定的LAB,没有使用任何逻辑资源、由浅蓝色背景表示及LAB中的资源都是白色的现象。LAB、LE他们都互相连接,并通过许多可见的线互相连接成行和列。

2.2.4自适应逻辑模块(ALM)

ALE类似于LE,但更有优势。FPGA LE仍需要通过级联和反馈来生产输入多于可用输入的函数,加入ALM可以更好的解决这个问题。

ALM包括2或4个输出寄存器,为生成函数提供了更多选择(增加了排列组合,因为输出寄存器变多了)。ALM还内置硬件加法模块,可执行标准算术活动,无需占用LUT、DSP资源。

ALUT是ALM与LE的主要区别,ALUT类似LUT,但ALUT可以拆分并配置成不同大小的LUT,以适应任何类型的两个独立函数。ALUT类似于LUT,但它可以拆分并配置成不同大小的LUT,以适应任何类型的两个独立的函数(简单或复杂)。基于ALM的FPGA可以使用少量资源和智能资源管理提供高性能的逻辑运算。

2.3FPGA嵌入式存储

2.3.1存储资源的利用

除LAB外,FPGA还包含专用硬件模块,这些专用资源占用阵列中的一个或多个模块,并通过FPGA布线通道可以完全访问,通常这些专用资源被安排在设备中的特定行或列的块中。

内存模块(M9K模块等)是可以配置成不同类型内存设备(单双端口RAM、ROM、移位寄存器、FIFO)的专用模块。FPGA的存储模块的编程与器件中其他的结构类似,因此可以使用上电时所需的任何内存内容对其进行初始化。

MLAB包括内存LAB,其容量比专用存储器模块小的多,MLAB可以用作标准的LAB,也可以配置为简单的双端口SRAM。

2.3.2M9K资源

2.4时钟网络

2.4.1FPGA时钟架构

FPGA器件包括用于控制时钟信号应该去的位置以及时钟信号如何到达目的地的硬件资源。

时钟布线网络将时钟到设备中所有逻辑的布线信道组成。

时钟控制块可以理解为时钟控制的管理员,一方面,决定了提供给设备的时钟布线网络,另一方面,在上电或断电期间,所选时钟的启用或禁用也由时钟控制块决定。

2.4.2PLL锁相环

PLL模块由输入时钟、可编程模块、生成时钟(时钟域)组成,可在整个器件中使用,并且具有最小的时钟漂移。

2.5DSP模块

包含嵌入式乘法器和加法器,用于执行算术运算和乘法/累加运算。(可替代ALM逻辑来提高设计中的算术性能)

2.6FPGA布线

局部互连和行列互联

局部互连直接在单个LAB内的LE或ALM之间布线,同时在相邻LAB之间提供成为直接链路的连接。

行列互连具有固定长度,并且跨越选定数量的LAB或设备的整个长度或宽度。

LAB I/O可以连接到本地互连,以进行高速局部操作,也可以直接连接到行列互连,以将数据传输到芯片的其他位置。

2.7FPGA编程资源

大多数FPGA使用SRAM单元技术来编程互连和LUT功能单元,但SRAM具有易失性。SRAM单元大部分是锁存器,无论何时断电,锁存器都会被清空,这就意味着必须始终在上电时对FPGA器件进行配置,以配置器件SRAM单元。

由于FPGA是基于SRAM的可编程逻辑器件,因而配置信息必须存储在非易失的其他地方(EEPROM、CPU、CPLD的外部设备等),以便在上电时配置器件。

主动配置:FPGA在上电时自动开始与外部设备通信,并基本上自行配置。

被动配置:外部设备控制FPGA如何及何时使用存储在EEPROM或其他配置设备中的数据进行配置。

2.8FPGA I/O元件

除基本输入、输出和双向信号外,I/O引脚还支持各种I/O标准,包括许多最新的低电压高速标准,可以组合成对的I/O引脚,以支持差分信号I/O标准。其他功能包括可变电流驱动强度和压摆率控制,以帮助提高板级信号的完整性。

输入/输出/双向

多个I/O标准

差分信号

电流驱动强度

转换速率

片上终端/上拉电阻

开漏/三态

2.8.1典型的I/O元件逻辑

输入路径捕获输入,输出路径输出,输出使能逻辑

2.8.2高速收发器

这些I/O结构支持高速协议,传输速率为每秒千兆位或更高。

2.9英特尔Soc FPGA

FPGA包含了ARM处理器和外围子系统,简言之Soc FPGA就是FPGA+硬核处理器,其中硬核处理器有一些Cache、各种接口(以太网、USB、Flash存储器接口、SPI、CAN、I2C等等)。

HPS(硬核处理器,即Hard processor system),与FPGA之间具有多个高速、高带宽接口,同时处理器还直接连接FPGA的配置控制器,因此可以对FPGA进行编程配置。

HPS和FPGA逻辑拥有共享的I/O,以及各自独立专用的I/O功能接口。

 

你可能感兴趣的:(fpga开发)