Cyclone V LAB &ALM结构

时间:2024-03-25 22:22:36

ALM:Adaptive Logic Modules 自适应逻辑块
LAB:Logic Array Blocks 逻辑阵列块
首先FPGA芯片主要由三部分组成,分别是:
(1) IOE(input output element,输入输出单元)
(2) LAB(logic array block,逻辑阵列块,对于Xilinx称之为可配置逻辑块CLB);
(3) Interconnect(内部连接线)。
1、LAB
本文主要是介绍下LAB和ALM。在cyclone v 芯片上,最小的逻辑单元是ALM ,而不再是之前的LE(logci cells)。LAB可以实现逻辑功能,算术功能以及寄存器等功能,你还以用LABs组成存储器功能的LAB(MLAB)。从下图可以看出一个LAB由10个ALM组成,它与相邻的LAB,存储器模块,DSP等模块用直接互联线进行连接。
Cyclone V LAB &ALM结构
在chip planner中看到的LAB如下图所示,跟芯片手册上的一致:
Cyclone V LAB &ALM结构
2、MLAB
每个MLAB最大可以配置成640bits 的简单双口同步ram(simple dual-port SRAM),你可以把MLAB里的每个ALM配置成32x2的存储器块。这样的话一个MLAB就有10个32x2的简单双口同步ram。
Cyclone V LAB &ALM结构

3、LAB Control Signals
每个LAB内部包含了丰富的逻辑,用来产生驱动其内部ALM的控制信号。有两个唯一的时钟源以及三个时钟使能信号。LAB内部的控制模块用这两个时钟源和三个时钟使能信号可以产生最多三个时钟。
Cyclone V LAB &ALM结构
4、ALM Resources
一个ALM包含了4个可编程寄存器,每个寄存器有4个端口:
(1)Data 数据口
(2)Clock 时钟口
(3)Sync and Async clear 同步异步清零信号
(4)Sync load 同步数据加载信号
全局信号,普通IO口和任何内部逻辑都可以用来驱动ALM内部寄存器的时钟和清除信号。
普通IO口和内部逻辑用来驱动时钟使能信号
当ALM用于组合逻辑功能时,寄存器会被旁通掉,ALM内部查找表的输出直接连接到ALM的输出接口。
下图是ALM的顶层模块组成图,可以看到一个ALM有8个输入接口,2个6输入的查找表,2个加法器以及4个寄存器。
Cyclone V LAB &ALM结构

下图是在chip planner中看到的1个ALM自适应逻辑块的组成。
Cyclone V LAB &ALM结构

5、ALM Output
一般,ALM的输出可以驱动本地,行以及列布线资源。ALM的输出中有两个可以驱动行,列以及直接连接布线资源,另外两个既可以驱动行,列以及直接连接布线资源又可以驱动本地本地连线资源。
查找表,加法器以及寄存器输出可以驱动ALM输出端口输出,当加法器,查找表驱动一种输出方式输出时,寄存器只能用另外一中输出方式进行输出。
寄存器打包功能可以优化器件资源使用率,即把不相关的寄存器和组合逻辑打包到同一个ALM里,这样就充分地使用了ALM的查找表和寄存资源。简单讲就是比如一个ALM里有4个输入只用到了查找表进行组合逻辑操作,这样寄存器就没有用到,我们就可以把其它地方只用了寄存器的逻辑放到该ALM里来,避免了这个ALM里的寄存器闲置而浪费。
下图是ALM内部详细组成图。
Cyclone V LAB &ALM结构
6、ALM Operating Modes
ALM有4中操作模式,至于使用哪种一般是由quartusII 软件自动进行分配:
(1)Normal Mode 正常模式
主要用于一般的逻辑与组合逻辑
(2)Extended LUT Mode 扩展查找表模式
该模式可以用来实现寄存器打包,比如在一个ALM里,有7个输入的组合逻辑操作不需要经过寄存器输出,这样剩下的一个输入就可以使用寄存器进行寄存器打包。分配如下图所示。
Cyclone V LAB &ALM结构
(3)Arithmetic Mode 算术模式
适用于实现加法器,累加器,计数器和比较器等操作
(4)Shared Arithmetic Mode 共享算术模式