1. 逻辑单元 (LE) 在 Cyclone IV 器件结构中是最小的逻辑单位。LE 紧密且有效的提供了高级功能的逻辑使用。每个 LE 有以下特性:
一个四口输入的查找表 (LUT),以实现四种变量的任何功能
一个可编程的寄存器
一个进位链连接
一个寄存器链连接
可驱动以下的相互连接:本地、行、列、寄存器链、直连。
2. 看下图,可以对每个 LE 配置可编程的寄存器为 D、 T、 JK, 或 SR 触发器操作。每个寄存器上有数据,时钟,时钟使能和清零输入。全局时钟网络,通用 I/O 管脚,任何内部逻辑都可以驱动时钟和清零寄存器控制信号。每个 LE 有三个输出端分别驱动本地,行和列的布线资源。在下图中有一个Register Bypass就是说我们可以不使用寄存器,让LUT(4输入查找表)的输出直接接行,列,直连,此时LUT和寄存器可以分别驱动不同的输出端,这个叫做寄存器套包。
除了三个通用布线输出之外,在一个 LAB 上的 LE 有寄存器链输出,使得同一个 LAB 中的寄存器能够串联在一起。寄存器链输出使 LUT 能够被用于组合功能,实现寄存器被用于一个不相关的移位寄存器。这些资源加速了 LAB 之间的连接,同时节省本地互联资源。
问题:刚开始一直没搞懂直连(Direct Link直接链接布线)和本地互联(本地布线)的区别。后面解答我的理解。
3. 本地是什么意思,下面要说的是逻辑阵列模块LAB,每个 LAB 包括以下特性:
16 LE
LAB 控制信号
LE 进位链
寄存器链
本地互联
4. 本地互联在同一个 LAB 的 LE 之间传输信号。寄存器链连接把一个 LE 寄存器的输出传输到 LAB 中相邻的 LE 寄存器上。
看下图标位1的三根红线,意思是本地LAB驱动隔壁LAB互联,标位为2的三根线是本地互联去驱动隔壁LAB。注意好像LAB不能直接驱动隔壁的LAB。注意这6根是直接链接布线。
问题:刚开始一直没搞懂直连(Direct Link直接链接布线)和本地互联(本地布线)的区别。如果是同一个LAB内部的LE连接的话使用本地互联,如果是LAB(+它的本地互联)去连接隔壁的LAB(+它的本地互联)使用直接链接布线。那么它和行、列区别是什么?直连只能连接隔壁的,行、列可以连接很远的LAB(+它的本地互联)。
邻近的 LAB, 锁相环 (PLL),M9K RAM 模块和嵌入式乘法器由左到右通过直接链接连接也可以驱动 LAB的本地互联。直接链接连接功能最小化行和列互联的使用,以提供更高的性能和灵活性。每个 LE 通过加速本地和直接链接互联可以驱动多达 48 个的 LE。为什么是48个呢?它自己的16个,加上左边和右边隔16个,所以是48个。
5. LAB的控制信号,每个 LAB 都包含专用的逻辑以驱动控制信号各自 LE。可以看第2点的图上面的信号,一一对应,控制信号包括:
两个时钟
两个时钟使能
两个异步清零
一个同步清零
一个同步加载
6. LE的操作模式,正常模式和算术模式。正常模式适用于一般的逻辑运用和组合功能。在正常模式中,来自 LAB 本地互联的四个数据输入口输入到一个四口输入的 LUT 中。Quartus II 编译器自动选择carry- in (cin) 或data3信号作为其中一个输入到 LUT。LE 在正常模式中支持套包寄存器和寄存器的反馈。
7. 算术模式,算术模式对于加法器,计数器,蓄能器和比较器的实现是理想的。一个 LE 在算术模式中实现一个 2 位全加器和基本的进位链 。LE 在算术模式中可以驱动 LUT 输出存储与未存储的版本。寄存器反馈和寄存器套包都支持 LE 用于算术模式。我对于下图全加器和进位链的具体实现不是很懂,有空研究下。