问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

FPGA秋招必看基础 | FPGA内部结构

创作时间:
作者:
@小白创作中心

FPGA秋招必看基础 | FPGA内部结构

引用
CSDN
1.
https://blog.csdn.net/2301_77414568/article/details/143195724

FPGA(现场可编程门阵列)是一种可编程逻辑器件,广泛应用于各种数字信号处理、通信系统、图像处理等领域。了解FPGA的内部结构对于掌握其工作原理和进行有效开发至关重要。本文将详细介绍Intel/Altera FPGA和Xilinx FPGA的内部结构及其基本单元,帮助读者建立对FPGA硬件架构的全面认识。

摘要

本文主要介绍了常用的Intel/Altera FPGA和Xilinx FPGA的内部结构,并对FPGA中一些基本单元进行了介绍。

1. 常用FPGA的结构

1.1 Intel/Altera FPGA

Intel/Altera FPGA由LAB、布线资源、存储资源、时钟管理单元PLL、I/O引脚、专用硬件块、配置逻辑等组成。

  • LE(Logic Element,逻辑单元):Intel/Altera FPGA的可编程单元,由一个查找表LUT、一个寄存器Flip-Flop和进位链Carry Chain组成。

  • LAB(Logic Array Block,逻辑阵列模块):Intel/Altera FPGA中更大的逻辑功能单元,是Intel/Altera FPGA最基本的构成块。LAB一般包含10个LE,LAB之间通过可编程的布线资源连接,以实现复杂的数字电路。

  • 布线资源:负责将不同的LE和LAB互相连接。布线资源提供了高度灵活的互联结构,允许信号在FPGA的不同部分自由传递。布线资源主要有两种类型:

  • 全局布线网络:用于连接远距离的逻辑单元和存储资源。

  • 局部布线网络:用于连接相邻的LAB,以实现低延迟的局部连接。

  • 存储资源:Altera FPGA内部主要有两种存储资源:

  • 分布式RAM:将LE中的LUT配置为小型的分布式RAM。用于小型或临时数据存储。

  • Block RAM(M9K和M20K):大容量的存储单元,用于实现FIFO、缓冲区和数据缓存。

  • 时钟管理单元(PLL, Phase-Locked Loop):PLL(锁相环)负责产生时钟信号,并通过全局时钟树将时钟信号分发到FPGA的不同区域,保证低延迟和时钟信号的稳定性。

  • I/O引脚:I/O引脚负责Altera FPGA与外部设备的通信,支持多种不同的通信标准和电压电平。

  • 专用硬件块:Altera FPGA集成了一些专用硬件块,用于加速特定任务。常见模块包括:

  • DSP模块:用于加速乘法、累加等数字信号处理任务。

  • 硬核处理器:ARM Cortex-A系列硬核处理器,形成了FPGA+SoC(系统级芯片)的结构。这允许设计人员在一个FPGA内实现硬件加速和软件处理的协同设计。

  • PCIe控制器:用于高速数据传输的PCIe硬核模块,能够大幅提高系统的通信带宽。

  • 配置逻辑:配置逻辑用于存储比特流文件,当FPGA上电或复位时,配置存储器会自动将比特流加载到FPGA中,设置FPGA的逻辑。

下图是Intel/Altera CYCLONE IV FPGA LAB的结构图:

1.2 Xilinx FPGA

Xilinx FPGA由可编程逻辑单元CLB、布线资源、可编程输入输出接口I/O、存储资源、数字时钟管理单元(Digital Clock Manager,DCM)、专用硬件块与配置逻辑等组成。

  • Slice:Xlinx FPGA的可编程单元叫Slice,它由4个查找表LUT(6输入)、8个寄存器Flip-Flop、进位链等组成。Slice有两种类型:

  • Slice-L(逻辑型Slice):这种类型的Slice主要用于实现一般的组合逻辑和时序逻辑功能。

  • Slice-M(存储型Slice):Slice-M除了具备Slice-L的功能外,还可以配置为分布式RAM或移位寄存器。

  • CLB(Config Logic Block,可编程逻辑块):Xilinx FPGA中更大的逻辑功能单元叫CLB,是Xilinx FPGA最基本的构成块,它由多个Slice组成。Xlinx FPGA的其余组成结构大致与Intel/Altera FPGA相似,便不再赘述。

下图是Xilinx FPGA的内部结构图:

2. FPGA基本单元

2.1 LUT(Look-up table,查找表)

FPGA使用LUT代替逻辑门电路。LUT的作用类似于一个小型的SRAM(静态随机存取存储器),通过查表的方式实现任意逻辑函数。以逻辑表达式“data_o = data[0] & data[1] & data[2] & data[3] & data[4] & data[5]”为例,写为HDL代码综合后的结果是一个LUT6。

2.2 进位链(半加器、全加器、多位加法器)

  • 半加器:由两个1比特数据(A、B)相加,输出一个1比特结果位(S)和进位(C)的加法器为半加器。

  • 全加器:由两个1比特数据(A、B)和一个1比特低位进位(Cin)相加,输出一个1比特结果位(S)和进位(Cout)的加法器为全加器。

  • 多位加法器:由半加器或低位进位为0的全加器作为最低位,与全加器级联即可构成多位加法器。

2.3 触发器、锁存器

  • 触发器flip-flop:由时钟边沿作为触发条件,将输入送到输出的记忆单元。一个触发器能存储一位二进制数据。一个触发器可以组成一个1位寄存器register;多个触发器可以组成一个多位寄存器。

  • 锁存器latch/闩锁

由电平的改变作为触发条件,将输入送到输出的电路单元。注意:

  • 锁存器不需要时钟,因此也不是时序元件。
  • 锁存器对毛刺非常敏感,容易影响电路逻辑,设计中尽量避免使用。
  • 为了在设计中不产生锁存器,组合逻辑中的判断语句必须完整(比如,if语句必须有else,case语句必须有default),而时序逻辑不用考虑该问题。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号