目录
这里简略介绍FPGA的基本结构。每一个组件都有很多内容,后面会逐个详细介绍,FPGA主要有三个部分、可编程输入输出(I/O模块)、可编程逻辑单元(逻辑模块)、布线资源。我们以中高端的Kintex-7系列XC7K410T为例,以它为案例来学习FPGA的基础结构,该芯片可以分为更详细的结构:CLB、BRAM、CMT、DSP、GTX Transceivers。
1 CLB
CLB是指可编程逻辑功能块(Configurable Logic Blocks),实际数量和特性会依器件的不同而不同,每个CLB由2个相同的SliceL或者一个SliceL和一个SliceM构成。每个Slice不仅可以用于实现组合逻辑、时序逻辑,还可以实现存储结构。其中,SliceM还可以配置为分布式RAM和分布式ROM,每个CLB包含两个SliceL或者一个SliceL和一个SliceM,他们的区别主要在四个六输入的LUT6,Vivado的Device可以看到每个Slice的结构。
每个Slice有四个组件:
- 4个LUT6;
- 3个多路选择器MUX;
- 1个进位链;
- 8个触发器
SliceL
SliceM
2 Bram
7系列FPGAs中的块RAM可以存储多达36 Kbits的数据,并且可以配置为两个独立的18KbRAM,或一个36 KbRAM。在简单的双端口模式下,每个36Kb块RAM可以与相邻的36 Kb块RAM级联配置为64Kx1,每个36Kb块RAM可以设置成以下结构(深度x位宽)32K x 1、16K x 2、8K x 4、4K x 9、2K x 18、1K x 36或512 x 72。每个18 Kb块RAM可以在简单的双端口模式下配置为16K x 1、8K x2、4K x 4、2K x 9、1K x 18或512 x 36。
7系列FPGA的BRAM特点如下:
- 每块的存储能力达到36Kbits;
- 可以配置成两个独立的18Kb BRAM或一个36Kb的BRAM;
- 每个36Kb的BRAM可以设置为512×72的简单双端口模式,每个18Kb的BRAM可以配置为512×36的简单双端口模式;
- 简单双端口RAM的两个端口宽度可以不一致;
- 两个相邻的块RAM可以组合成一个更深的64K x 1的存储器,而无需任何外部逻辑;
- 每36 Kb BRAM或36 Kb FIFO提供一个64位纠错编码块,独立的编码/解码功能。在ECC模式下注入错误的能力;
- 输出的同步设置/复位为初始值可用于块RAM输出的锁存器和寄存器模式;
- 单独的同步Set/Reset引脚独立控制块RAM中可选输出寄存器和输出锁存阶段的Set/Reset;
- 将块RAM配置为同步FIFO以消除标志延迟不确定性的属性;
- 7系列FPGA中的FULL标志在没有任何延迟的情况下被断言;
- 18、36或72位宽的块RAM端口可以为每个字节启用单独的写入;
- 每个36Kb BRAM包含可选的地址和控制电路,作为内置的双时钟FIFO存储器,但是无法将36Kb的BRAM当作两个18Kb的FIFO(因为无法共享FIFO控制逻辑);
- 输出数据路径有一个可选的内部寄存器,强烈建议使用该寄存器。这允许更高的时钟速率,但是它增加了一个时钟周期延迟;
3 CMT
每个7个系列FPGA最多有24个CMT,每个CMT由一个MMCM和一个PLL组成。MMCM和PLL作为广泛频率范围的频率合成器,作为外部或内部时钟的抖动滤波器,以及去偏时钟。PLL包含了MMCM的功能。7系列FPGA时钟输入连接允许多种资源为MMCM和PLL提供参考时钟。
7系的FPGA MMCM有无限的phase-shift能力且可以用于动态phase-shifting模式。MMCM在feedback或者一个output path中也有分数计数器(Fractional counter)功能来提供更好的频率合成能力。
LogiCORE IP可以合理利用MMCM和PLL来创造时钟网(clock network).GUI的画面提供了各种时钟参数。IP可以选择合适的CMT资源和的配置CMT资源和布线资源。
4 DSP
FPGA对于DSP可以实现定制、完全并行的算法。DSP内部使用许多二进制乘法器和累加器实现。所有7系列FPGA都有许多专用的、全定制的、低功耗的DSP,计算速度很高的同时使用小尺寸保留了系统设计的灵活性。DSP提高了除数字信号处理之外的许多应用程序的速度和效率,如宽动态总线移位器、内存地址生成器、宽总线多路复用器和内存映射的I/O寄存器。DSP48E1的基本功能如图。
DSP主要有以下特点:
- 25 x18 二进制补码乘法器;
- 48-bit累加器;
- 低功耗预加器;
- 单指令多数据 (SIMD)算术单元,可以用作两个24bit/四个12bit 加法器或者减法器或者累加器;
- 可以生成两个操作数的十种不同逻辑函数中的任意一种;
- 模式检测;
- 可选的流水线化和用于级联的专用总线;
5 GTX Transceivers
7系列中的每个子系列都有不同的串行收发器
- A7的GTP;
- K7的GTX;
- V7的GTH和GTZ;
优点:
- 速度高。高速串行I/O的线速可超过吉比特,甚至数十吉位。而并行传输线速不可能超越吉比特。吉比特串行I/O的主要优势是速度。在从片内/片外、板内/板外或盒内/盒外获取数据时,没有任何技术可以超越高速串行链路。高速串行链路的线速范围为1Gb/s~ 12Gb/s,有效负载范围为0.8Gb~10Gb。
- 节省管脚数。将大量数据传入/出芯片或电路板时所遇到的第一个问题是引脚数,电路板设计时间和成本会随着管脚数的增加而急剧增加。在大数据量应用下,串行I/O可节省大量的管脚(在低速以及小数据量应用中,MGT比传统并行模式需要更多的电源和接地引脚)。
- 简化同步转换输出。采用单端并行总线时,设计者应考虑同步转换输出(SSO,即大量寄存器的值在某一时刻同时翻转,会对电源和地平面产生一定的影响,甚至影响到器件内部时钟和逻辑的正常工作)。如果出现太多的同步转换,触地反弹会产生大量噪声。设计者还可以在所有I/O上都使用差分信号处理技术,以此来消除SSO问题,但是这样做就会使引脚数翻倍。如果数据流需求比较适中,设计者可以使用具有适当引脚数的并行接口。
- EMI指标优。经验表明:时钟越快,放射测试就越难进行,因此,吉比特设计的EMI测试看起来是不可能实现的。但是,通常高速串行链路的辐射量比以较低速度工作的大型总线低。这是因为运行时的吉比特链路需要出色的信号完整性,正如经典论断“辐射问题实际上就是信号完整性问题”所言,因此吉比特串行IO具有更好的EMI指标。
- 成本低。采用MGT通常会降低系统总成本。连接器采用较小、较经济的封装时,引脚数较少,电路板设计也更简单。
- 预设协议。采用MGT的另一个好处是可以使用预先定义好的协议和接口标准。如Xilinx提供了从Aurora到XAUI的多种协议,满足不同的用户需求。
缺点:
吉比特高速串行I/O的最大缺点在于对信号完整性的严格要求。而且,阻抗控制的PC(印刷电路)板、高速连接器和电缆的费用较高。因此,必须处理数字仿真中的复杂性和时基较小的问题。并且,在利用预设协议的时候,必须为集成过程计划时间,以及为协议的开销安排额外的逻辑电路或CPU时钟周期。
应用范围:
起初,吉比特级串行器/解串器(SERDES)仅局限于用在电信行业和少数缝隙市场(如广播视频)。如今,MGT应用出现在电子行业的各个角落——军事、医疗、网络、视频、通信等等。MGT也可以用于背板或机箱之间的PCB上。对于电子行业的发展前景而言,MGT至关重要。下面是采用吉比特级SERDES的行业标准示例。
参考文献
Xilinx 在文档中所用的 LC(logic cells) 与 LUT之间的换算关系_logic cell xilinx-CSDN博客