FPGA内部资源介绍

发布于:2025-06-30 ⋅ 阅读:(16) ⋅ 点赞:(0)

FPGA内部资源介绍

目录

  1. 逻辑资源块
  2. LUT(查找表)
  3. 加法器
  4. 寄存器
  5. MUX(复用器)
  6. 时钟网络资源
  7. 时钟处理单元
  8. BLOCK RAM
  9. DSP
  10. 布线资源
  11. 接口资源
  12. 总结

1. 逻辑资源块

逻辑资源块是FPGA中最重要的资源,它在FPGA芯片中占的比重最大。Xilinx公司称它为CLB(Configurable Logic Block),而Altera公司称它为ALM(Adaptive Logic Module)。Xilinx把一个CLB划分为若干个slice,每个slice中一般又包含若干个LUT、寄存器、异或门和复用器等;Altera把一个ALM划分为若干个ALUT和寄存器等,而每个ALUT中一般又可包含若干个LUT、全加器和复用器等。虽然逻辑资源块在不同的器件中叫法不一样(当然结构上也会有略微的差别),但它们的本质是类似的。在FPGA芯片中,逻辑资源块是均匀分布的,不过在列的方向上,它们的排列一般更加紧密些,这估计是为了减少加法进位链的延迟和实现高性能的寄存器链。

2. LUT(查找表)

**LUT(查找表)**是FPGA芯片与其他可编程逻辑芯片之间最大的区别。LUT可以有多个输入引脚,但只能有一个输出引脚。我们可以用ROM的概念来理解LUT,即一个N输入的查找表,它的行为相当于一个地址总线为N位,单位存储量为1 bit,总存储量为2N bit的单口ROM。例如,对于一个2输入的查找表,如果按照“逻辑与”的真值表去配置其内部ROM的存储内容,那么它的行为就相当于一个与门;如果按照“逻辑或”的真值表去配置其内部ROM的存储内容,那么它的行为就相当于一个或门。通过恰当的连接,LUT可以实现任意的组合逻辑功能。目前,FPGA中的基本LUT一般都是4输入、6输入甚至更多输入引脚的,它们所能实现的逻辑功能更加复杂、灵活和多变。

3. 加法器

加法是所有二进制运算的基础,因此它在FPGA中的地位非常重要。二进制加法中最重要的功能元素是异或操作,因此,为了实现高性能的加法,Xilinx采用了专门的异或门,而Altera引入了专门的全加器。虽然LUT也可以模拟异或门的功能,但其延迟相比专有的异或门来说还是太大,尤其是两个多位数据相加时,由于级联效应,会导致处理变慢。因此,在FPGA的逻辑资源块中,都留有专门的异或门外加专门的进位链布线资源,再配合相关资源实现全加器。不过,LUT可以配合异或门实现超前进位加法器,进一步提高加法器的性能。

4. 寄存器

FPGA中有丰富的寄存器资源,这也是它区别于CPLD的地方。寄存器是时序逻辑的基础,由于它对电路状态的保持和记忆特性,才使得数字电路具有千变万化的功能。FPGA中的寄存器一般可以被配置为D类型的触发器或者锁存器。配置为D类型的触发器时,根据生产厂商以及型号的不同,可能会有一些其他的功能管脚,例如异步复位、同步复位、时钟使能、同步置位等。FPGA中寄存器的输出一般都会连到附近一个寄存器的输入MUX中,通过配置该MUX,可以将多个寄存器串联起来形成寄存器链,实现移位寄存器电路。

5. MUX(复用器)

MUX即复用器,也叫多路选择器。FPGA的逻辑资源块中有很多MUX,根据用法可以分为两类:

  • 配置MUX:它的选通是在配置FPGA的时候确定的,因此它决定了所处逻辑资源块的功能。
  • 逻辑MUX:它的选通是由此时的内部逻辑决定的,因此它是内部逻辑的一部分。

配置MUX在FPGA中的作用更大一些,通过改变配置MUX的选通情况,可以让逻辑资源块实现多种多样的功能。例如,通过改变配置MUX的选通情况,我们可以只使用逻辑资源块中的组合逻辑部分,也可以只使用其中的寄存器,甚至可以同时使用这两部分,但它们却分别隶属于不同的功能模块。

6. 时钟网络资源

6.1 全局时钟网络资源

全局时钟网络资源的作用范围覆盖整个FPGA芯片,它能保证其上所承载的时钟信号到达FPGA芯片上任意两个地方的延迟时间偏差最小,从而保证大型的FPGA设计能够被高速的时钟信号正确驱动。一般来说,全局时钟网络资源是比较珍贵的,一些小型的FPGA中可能仅有几个全局时钟网络,因此在使用的时候一定要节省。

6.2 区域时钟网络资源

随着FPGA芯片的集成度越来越高,规模大一点的FPGA又被划分为多个区域(一般来说,一个FPGA区域只包含一个IO bank)。与全局时钟网络不同,每一个FPGA区域都有若干个属于自己的区域时钟网络,它所能覆盖的范围是整个区域甚至还包括与本区域相邻的区域。区域时钟网络能保证其上所承载的时钟信号到达FPGA芯片上该时钟网络作用域中任意两个地方的时间偏差最小。这种区域时钟网络资源对于源同步的接口逻辑十分有效。

6.3 IO时钟网络资源

前面所述的两种时钟网络资源主要针对的都是FPGA内部的一些资源,例如逻辑资源块、BLOCK RAM、DSP等。而对于接口资源,则有专门的IO时钟网络资源来完成时钟信号承载工作。主要原因有三点:

  1. 接口资源中的寄存器数量较少,不需要大型的树状时钟网络来减少时钟到达各个目的地之间的延迟时间差。
  2. 内部的时钟网络资源由于作用范围广,网络较庞大,一般上面不能承载频率太高的时钟信号,而一些通信接口的时钟速率很高,远远超出了全局或区域时钟网络的承受范围,因此需要使用专有的IO时钟网络资源。
  3. 高速的接口逻辑一般都使用专有的接口资源,其布局布线已经固定,能够保证外部信号到达寄存器的延迟最短。为了配合高速信号传输,时钟信号所走的路径也必须最短。而全局或区域时钟网络的特点是保证时钟到达各个地方的延迟差最小,而不是延迟最短,因此并不适用高速接口的情况,这种情况下只能使用专有的IO时钟网络资源。

7. 时钟处理单元

在实际使用中,经常会碰到外部送给我们的时钟信号在频率或者相位上并不满足直接使用的要求,而内部时序逻辑又只能对时钟信号进行整数倍的分频,并且不能保证产生新时钟信号的相位稳定性。因此,这个时候就需要用到时钟处理单元。时钟处理单元可以对时钟信号进行高精度的倍频、分频和相位调整,对时序逻辑的设计非常重要。FPGA中的时钟处理单元主要有两种:PLL(Phase-Locked Loop)DCM(Digital Clock Manager)

8. BLOCK RAM

FPGA生产厂商相继为自己的FPGA芯片中引入了硬件的存储核,我们称之为BLOCK RAM。由于BLOCK RAM不同于寄存器的硬件结构,使得实现同样的存储容量所消耗的资源要远比寄存器少得多。当然,同一时刻一般只能操作BLOCK RAM中一个地址的数据,而如果是用寄存器实现缓存,我们完全可以在同一时刻操作所有的寄存器。与逻辑资源块一样,BLOCK RAM资源也均匀分布于整个FPGA芯片中,当然在列的方向它们的排列也紧密一些,估计是为了便于拼凑起来形成更大的缓存。BLOCK RAM本身就是一个先天的查找表,对于一些普通LUT难以应付的大容量表格情况,使用BLOCK RAM可以很好地解决。

9. DSP

**DSP(Digital Signal Processing)**硬核中的核心资源是一个高性能的硬件乘法器,外加一些累加器和寄存器、复用器等资源。DSP硬核通过将这些高性能的资源紧密地结合在一起,从而让FPGA芯片具有强大的数字信号处理运算的能力。

10. 布线资源

FPGA中的布局布线资源主要包括三部分:CB(Crossbar)、SB(Switchbox)和行列连线。布线资源的目的是为了能够让位于不同位置的逻辑资源块、时钟处理单元、BLOCK RAM、DSP和接口模块等资源能够相互通信,从而协调合作,完成所需功能。FPGA中的布线资源,就好比绘制PCB板时的连线资源一样。虽然器件A和器件B的位置和连接关系没有任何改变,但很可能因为周边电路的布局、布线的一些变化,使得前后两次A、B之间的连线形态发生很大的变化。因此,与采用固定长度的金属线将所有宏单元连接在一起的CPLD不同,FPGA中任意两点之间的线延迟是无法预测的,必须等到布局、布线完成之后才能确定。这也是为什么在FPGA的开发中,时序约束和时序分析这两样工作是必不可少的。

11. 接口资源

11.1 用户IO资源

接口资源是FPGA芯片的门户,它决定了FPGA芯片与外界交互的能力,因此接口资源是FPGA必须具备的一种资源。按照功能来划分,FPGA的外围接口有负责供电的、接地的、芯片配置的、用户IO的等。其中最重要的是负责用户IO的接口资源,按其承载信号的类型又可以细分为用户时钟管脚(一般仅指输入)和用户数据IO。一般来说,用户时钟管脚兼具用户数据IO的功能,但绝大多数数据IO不能兼具用户时钟管脚的特性。区分用户时钟IO和数据IO的关键,就是看其是否有直接连接到时钟网络资源的通路。如果有直接连接到全局时钟网络资源的通路,那么这是一个全局时钟管脚;如果有直接连接到区域时钟网络资源的通路,那么这是一个区域时钟管脚;如果有直接连接到IO时钟网络资源的通路,那么这是一个IO时钟管脚。当然,作为FPGA芯片制作厂商,它会提供详细的管脚属性资料供大家区分这些管脚,以便用户正确、恰当地使用。

针对用户IO资源,Xilinx公司的IOB(Input Output Block)以及Altera公司的IOE(Input Output Element)是其中的代表。用户IO资源最基本的功能就是必须支持单端或差分的输入、输出、双向以及三态模式,因此用户IO的基本原理图如图3-20所示,其中,PAD代表FPGA芯片的金属管脚。此外,当传输速度较高时,从用户IO资源到内部逻辑资源块之间的延迟就会显得不可忽略,因此,为了配合较高速度的接口传输,用户IO资源中必须集成一些专有的寄存器和精确的延迟调整功能,来完成较高速度的SOR(Serial-to-Parallel)或者DOR(Parallel-to-Serial)的输入、输出功能。例如,集成了相关功能模块的用户IO资源如图3-21所示。为了进一步提升接口传输的性能,增加用户使用的便利性,各大FPGA厂商又在用户IO资源中集成了名为SERDES(Serializer/Deserializer)的串并转换器,其中用于输入的叫做ISERDES,用于输出的叫OSERDES。相比于SDR、DDR的模式,SERDES能够做到1:6甚至更高的串并转换比率。图3-22所示就是SERDES的工作原理,大家可以参考理解。

最后,用户IO资源还必须支持LVTTL、LVCMOS、LVDS等多种数字电平,有的用户IO资源甚至内部嵌入了用于高频匹配的电阻,这样在电路板布线时,可以省去一些板载的匹配电阻。关于更高速接口的解决办法请参考下一小节。

11.2 专用高速接口资源

为了适应目前越来越高的串行通信速率要求,各大FPGA厂商也早已开始在自己的FPGA产品中嵌入专门的硬件资源用于超高速的串行通信。例如,Xilinx公司的Rocket IO资源和Altera公司的Transceiver资源。目前来说,这两种专有的硬件资源都已经能够支持最高达28 Gb/s的串行通信速率。


总结

本文详细介绍了FPGA内部的各种资源及其功能。逻辑资源块(CLB/ALM)是FPGA的核心资源,通过LUT、寄存器、加法器和MUX等基本元素实现复杂的逻辑功能。时钟网络资源(全局、区域和IO时钟网络)以及时钟处理单元(PLL和DCM)为FPGA提供了灵活的时钟管理能力。BLOCK RAM和DSP硬核分别用于存储和高性能数字信号处理。布线资源(CB、SB和行列连线)则确保了不同资源之间的通信。接口资源(用户IO资源和专用高速接口资源)则为FPGA与外部世界的交互提供了支持。这些资源共同构成了FPGA的强大功能基础,使其能够适应各种复杂的数字逻辑设计需求。



网站公告

今日签到

点亮在社区的每一天
去签到