CycloneIII 内部资源概述#
[toc]
本人使用的 Altera DE0 使用的主控芯片为 EP3C16F484C6,由上图可知包含 15408 个逻辑单元,56 个 M9K,56 个 18×18 乘法器,4 个 PLL 等资源。
Logic Elements and Logic Array Blocks(逻辑元件和逻辑阵列块)#
LE#
LE 是 FPGA 中最小的逻辑单元,可以提供高效逻辑使用的高级功能。LE 的结构如下图所示:
- LUT:用于完成用户需要的逻辑功能,Cyclone III 的查找表是 4 输入 1 输出,可以完成任何 4 输入 1 输出的组合逻辑
- Programmable Register:可以配置成 D 触发器、T 触发器、JK 触发器等,每个寄存器包含 4 个输入信号,数据信号、时钟信号、时钟使能、复位信号。
LE 有两种工作模式:
- Normal mode:适合于一般的逻辑运算
- Arithmetic mode:适用于实现加法器、计数器、累加器、比较器等
LAB#
每个 LAB 都由以下元素组成:
- 16 个 LE
- LAB 控制信号
- LE 转移链
- 寄存器链
- 本地互联
本地互联用于在同一 LAB 内的 LE 之间传递信号;寄存器链用于将一个 LE 的输出传递到相邻的 LE 中。
LAB 结构如图所示:
LAB Interconnects#
LAB 本地互连由同一 LAB 中的列和行互连和 LE 输出驱动。相邻的 LAB、锁相环、M9K RAM 块和从左到右的嵌入式乘法器也可以通过直接链路连接驱动 LAB 的本地互连。直接链接连接功能最大限度地减少了行和列互连的使用,提供更高的性能和灵活性。每个 LE 可以通过快速本地和直接链路互连驱动多达 48 个 LE。
直接连接如下图所示:
Memory Blocks(内存块)#
嵌入式内存结构由 M9K 内存块组成,可以配置内存块以提供各种内存功能,例如 RAM,移位寄存器,ROM 和 FIFO 等。
M9K 的内存单位是 9k ==bit==,并不是 9k ==byte==,并且 9k 中有 1k 的空间用于校验等功能,实际可用空间为 8kbit
Memory mode#
Clocking mode#
当使用 Read or Write 模式,如果对同一个地址进行读写操作,则输出的读数据是未知的。如果要使输出的数据是一个确定的信号,则需要使用 single-clock 模式或者 IO-clock 模式并且在 MegaWizard Plug-In Manager 中选择合适的读写操作。
读写时违反内存块输入寄存器的建立和保持时间可能会导致内存内容的损坏
异步清零只在读地址寄存器、输出寄存器和输出锁存器上可用
Memory mode 和 Clocking mode 的关系如下图所示:
Embedded Multipliers and Digital Signal Processing Support(嵌入式乘法器和数字信号处理支持)#
乘法器结构#
- 输入的数据既可以先发送到输入寄存器也可以直接输入到乘法器,两个输入信号相互独立,例如:A 信号可以通过寄存器将输入发送到乘法器,同时 B 信号可以直接发送到乘法器。
- 根据乘法器的位宽和操作模式,单个乘法器可以并行的执行一次或两次乘法运算。
- 两个输入信号如果都是无符号数,则输出数据也是无符号数;其中任何一个是有符号数的话,输出结果就是有符号数。