CycloneIII内部资源概述
-
CycloneIII内部资源概述
-
Logic Elements and Logic Array Blocks(逻辑元件和逻辑阵列块)
- LE
-
LAB
- LAB Interconnects
-
Memory Blocks(内存块)
- Memory mode
- Clocking mode
-
Embedded Multipliers and Digital Signal Processing Support(嵌入式乘法器和数字信号处理支持)
- 乘法器结构
- Clock Networks and PLLs(时钟网络和锁相环)
-
Logic Elements and Logic Array Blocks(逻辑元件和逻辑阵列块)
本人使用的Altera DE0使用的主控芯片为EP3C16F484C6,由上图可知包含15408个逻辑单元,56个M9K,56个18×18乘法器,4个PLL等资源。
Logic Elements and Logic Array Blocks(逻辑元件和逻辑阵列块)
LE
LE是FPGA中最小的逻辑单元,可以提供高效逻辑使用的高级功能。LE的结构如下图所示:
- LUT:用于完成用户需要的逻辑功能,CycloneIII的查找表是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
M9K内存块不支持异步内存输入
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信号可以直接发送到乘法器。
- 根据乘法器的位宽和操作模式,单个乘法器可以并行的执行一次或两次乘法运算。
- 两个输入信号如果都是无符号数,则输出数据也是无符号数;其中任何一个是有符号数的话,输出结果就是有符号数。