FPGA 技术:芯片和工具
本章的重点是基于FPGA的原型验证的现有技术,包括硬件和软件。它介绍了作为核心技术的 FPGA 的主要特点,以及与基于 FPGA 的原型开发相关的合成软件技术。以下各章将详细介绍如何使用这些技术。
-
首先,总体介绍当前的 FPGA 技术,但重点介绍 Xilinx® Virtex® -6 系列。
-
我们将重点介绍基于FPGA 的原型开发中每种功能的实用性,这不仅取决于其功能,还取决于相关EDA 工具对其的支持。
请先阅读:【【FPGA原型验证】附录基础知识:FPGA/CPLD基本结构与实现原理】
3.1.当今的 FPGA 器件技术
FPGA 器件是基于 FPGA 的原型验证物理实现的核心。它是映射和实现 SoC 设计的地方,因此我们确实应该仔细研究它们以及我们用来与它们配合使用的工具。
多年来,FPGA 已经从普通的(按照今天的标准)可编程逻辑器件发展成为具有多功能架构特性的超大型逻辑阵列,并以惊人的时钟速率运行。
图 20 特别显示了随着架构的改进和硅技术按照摩尔定律的发展,FPGA 的容量也在不断提高。
事实上,那些为主要 FPGA 供应商生产 FPGA 器件的制造生产线(所有这些供应商都没有晶圆厂)都从生产超大型 FPGA 芯片的经验中获益匪浅,并能够相应地调整其工艺。因此,FPGA 的进步与整个硅技术的进步同步,
这一点不足为奇,而且我们应该期待它至少继续如此。事实上,在撰写本报告时,一些令人兴奋的新进展正在发生,三维集成电路技术的使用使一些FPGA 超越了摩尔定律。
投资基于 FPGA 的原型开发方法不应被视为因 FPGA 技术本身的稀缺而存在任何风险。
今天,让我们来仔细研究一下 Xilinx 的领先技术:Virtex® -6 系列。
3.1.1.Virtex® -6 系列:最新 FPGA 的范例
本章将以赛灵思® FPGA 为例,因为截至本章撰写之时,赛灵思 FPGA 已成为业界广泛应用的基于 FPGA 的原型验证的首选。
Xilinx® Virtex-6 系列是 Xilinx 目前最新的 FPGA 系列,由 Xilinx® Virtex® -5 架构发展而来,但功能更强、容量更大、性能更佳、功耗更低。
从表 2 中可以看出,采用更小的 CMOS 工艺几何形状制造,使最大的 Virtex- 5 和 Virtex-6 器件之间的逻辑容量增加了一倍多,此外,FF(触发器)与逻辑资源的比例也增加了一倍多,从而能够更好地支持流水线设计。
有关器件和体系结构的完整详细信息,可通过本书参考书目和附录中的一些资源获取,但现在让我们花一些时间来了解 FPGA 技术的各个部分,从基本逻辑块开始,了解每个逻辑块对我们基于 FPGA 的原型开发任务有多大帮助。
3.1.2.FPGA 逻辑块
顺序逻辑和组合逻辑在称为片的逻辑块中实现。片包含查找表(LUT)、存储元件和附加级联逻辑。
- 查找表(LUT):查找表(LUT)是一个用于实现多路选择器或多路复用器逻辑的硬件组件。在硬件描述语言(HDL)如Verilog或VHDL中,LUT通常用于实现组合逻辑电路。LUT通过将多个输入映射到一个特定的输出,实现了基于输入的多路选择。这种设计可以提高硬件效率,因为它可以减少所需的逻辑门数量。
查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有 4位地址线的 的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
- 存储元件:存储元件,如触发器(Flip-Flops)和寄存器(Registers),是数字电路中用于存储数据的基本元件。这些元件通常用于同步时序逻辑设计和存储数据,以便在后续的逻辑操作中使用。
关于硬件中常见的基本存储元件的定义、中英文对应的名字会模糊,今天特地查明具体定义。
flip-flop:触发器,是时钟边沿触发,可存储1 bit data,是register的基本组成单位,结构图如下:
register:寄存器,a hardware register stores bits of information in such a way that systems can write to or read out all the bits simultaneously.
就是时钟边沿触发的存储结构,是由多个flip-flop组成,可以构成register file, SRAM等,结构如下:
- 附加级联逻辑:级联逻辑是指将多个逻辑门连接在一起以实现更复杂的逻辑功能。附加级联逻辑通常用于增加电路的复杂性,实现更高级别的逻辑功能。
通过将多个简单的逻辑门组合在一起,可以构建更复杂的数字电路和系统。
典型的 4 输入 LUT 核心是一个 16x1 RAM。RAM 的任何特定位都将根据 4 位地址路由到 LUT 的输出。现在考虑在 16 位 RAM 中填入各种 1 和 0,这样当地址发生变化时,LUT 的输出也会发生变化。
我们已经创建了一个包含四个输入和一个输出的逻辑函数。剩下的工作就是对 16 位 RAM 进行排序,以模拟有用的逻辑功能。事实上,我们可以将 16 位 RAM 视为 Karnaugh 映射,在早期,这实际上是对它们进行编程的一种选择。
因此,逻辑功能(如奇偶校验、XOR、AND、OR 等)可以有效地封装到最小数量的 LUT 中,以执行所需的功能。算术功能也可以放在 LUT 中,设备中还有硬连接的携带前瞻逻辑,这样就可以比单独使用 LUT 提高性能。
如今,我们拥有多达 6 个输入 LUT(因此需要 64 位 RAM),所有这些都是通过合成来 "编程 "的,合成会根据所需的高级描述为我们创建 LUT 内容。然后在设备配置时加载 LUT RAM,利用 64 位 RAM 创建复杂的 6 输入函数。
LUT被嵌入到其他结构中,包括 FF、进位链、算术、存储器和其他复杂结构。
在 Xilinx® Virtex-6 器件中,LUT 用于实现六个独立输入的函数发生器。每个六输入 LUT 有两个输出。
这些函数发生器可以实现任意定义的布尔函数,同一 LUT 的第一个输出最多有六个输入,第二个输出最多有五个输入。
两个片段组合成一个可配置逻辑块(CLB)。CLB 以阵列形式排列在 FPGA中,通过互连资源相互连接并与其他类型的块连接。
在 Virtex-6 设备中,有两种类型的切片:
-
•SLICEM - 一个片断, 其中的 LUT 可用来实现组合函数、小型 RAM块或移位寄存器。
-
•SLICEL - 仅可使用 LUT 实现组合逻辑的片断。
图 21 显示的是 SLICEM 框图,从图中我们可以看到,每个片包含四个 6 输入LUT(位于左侧)、八个存储元件(四个 FF 和四个 FF/锁存器)以及级联逻辑。
可以对 CLB 中的各种路径进行编程,以连接或绕过 LUT 和 FF 的各种组合。
仔细观察还可以看到用于特定携带和级联功能的附加逻辑门,这些功能将 CLB 内外的资源连接起来。
SLICEL 与 SLICEL 类似,不同之处在于 LUT 只有六个输入信号和两个输出信号。这些资源可配置为内存使用,最常见的是 RAM,下文第 3.1.3 节将对此进行简要介绍。
如果工具能够最佳利用 CLB 来实现设计,那么原型可能会使用更少的 FPGA 资源,运行速度也会更快。
这意味着工具必须了解片的所有配置方式,以及使用片时可能存在的限制。
例如,如果将四个 FF/LAT 存储元件配置为锁存器,那么就不能使用其他四个 FF,因此最好不要使用锁存器。
此外,寄存器的控制信号是共享的,因此如果设计中存在许多不同的不相关控制信号,那么将设计寄存器打包到片中就会成为布局布线工具的一项复杂任务。
作为原型设计者,我们通常不会关心片的各种功能的最终用途,因为实现工具应自动使用适当的配置以满足时序约束。
不过,有时可能有必要掌握如此详细的专业知识,因此我们建议您参考本书末尾的参考文献,以获取更多信息。
原型实用性:非常高,是必不可少的构件。合成将自动或在 RTL 和/或约束文件中的可选属性和指令的指导下充分利用上述所有功能。
3.1.3.FPGA 存储器:LUT 存储器和块存储器
SoC 设计包括各种类型的多个存储器,如 RAM、ROM、内容可寻址存储器。在绝大多数情况下,这些存储器将从单元库或存储器生成器实用程序中实例化。
重要的是,FPGA 能够尽可能高效地表示这些存储器。
大多数高端 FPGA 都有多种存储器类型可供选择,小到寄存器文件和移位寄存器,大到大规模RAM。
如 3.1.2 节所述,Xilinx® Virtex-6 SLICEM 逻辑块中的 LUT 可用作小型本地存储器,例如 32 位宽 RAM。
这为实现 SoC 设计中许多地方的小型存储器功能提供了极大的自由度。
对于最大的 SoC 存储器,需要外部存储器资源。FPGA 自身的块存储器资源对于较小的存储器非常有用,从原型开发的角度来看,它们是 FPGA 中第二重要的资源。
在 Virtex-6 系列中,这种存储器资源被称为 BlockRAM,整个Virtex-6 FPGA 器件中分布有 156 到 1064 个 BlockRAM。
Xilinx® Virtex-6 BlockRAM 的示意图如图 22 所示,BlockRAM具有以下主要功能:
RAM分为BRAM(Block RAMs)和DRAM(Distributed RAM),即块RAM与分布式RAM,这两个差别在于BRAM是FPGA上固有的一些存储资源(针对不同型号的FPGA,其存储资源大小会有差别),而DRAM则是由LUT组合而成的。所以在数据量较大的情况下,一般使用BRAM,尽量避免使用DRAM,导致LUT资源的浪费。
-
•可配置性:每个块都是专用的双端口同步 36 Kb RAM 块,可配置为32K × 1、16K × 2、8K × 4、4K × 9(或 8)、2K × 18(或 16)、1K×端3口6(可或以独32立)配或置51。2 x 72(或 64)。每个
-
•同步操作:BlockRAM 可以实现任何单端口或双端口同步存储器。当配置为双端口 RAM 时,每个端口可以以不同的时钟速率运行。
-
•先进先出逻辑:专用但可配置的先进先出逻辑可与 BlockRAM 结合使用,以实现地址点和握手标志。FIFO 逻辑的深度和宽度可以配置, 但写入和读取两侧的宽度必须相同。
-
•ECC:当配置为 64 位宽时,每个 BlockRAM 可以存储和使用八个额外的汉明码位,并在读取过程中执行单位纠错和双位错误检测(ECC)。在向外部 64/72 位宽存储器写入或读取数据时,也可使用 ECC 逻辑。
FPGA 中的 BlockRAM 可以组合起来,以模拟更深或更宽的 SoC 存储器。这通常由综合工具完成, 这些工具会自动将较大的存储器划分到多个BlockRAM 中。
需要对从 SoC 实例化到最终 FPGA BlockRAM 的设计进行一些操作,这将在第 7 章中详细介绍。
原型开发工具:BlockRAM 是主要的构建模块,由综合工具自动推断。不过,在撰写本文时,综合工具并不自动支持 FIFO 逻辑,但可以通过内核实例化。将其包含在内。有关存储器实现的更多详情,请参阅第 7 章。
slice指FPGA的组成单元,如xilinx的fpga的结构中,基本单元是LUT,由LUT组成SLICE,由SLICE组成CLB,具体多少个LUT组成SLICE,多少个SLICE组成CLB由不同的器件类型决定.
3.1.4.FPGA DSP 资源
SoC 设计通常包含算术功能, 如乘法器、累加器和其他 DSP 逻辑。
高端FPGA(如 Xilinx® Virtex-6 器件)通过提供有限数量的专用 DSP 块来满足这些需求;在 Virtex-6 器件中,DSP 块的数量是有限的。
DSP48E1 系列产品被称为 DSP48E1 块。它们是专用的、可配置的低功耗 DSP 片,兼具高速和小巧的特点,同时保持了系统设计的灵活性。图 23 显示了DSP48E1 的详细框图。
如方框图所示,每个 DSP48E1 片都由一个专用的 25 × 18 位二进制乘法器和一个 48 位累加器组成,两者都能以 600 MHz 的吞吐量运行。
乘法器可以动态旁路,两个 48 位输入可以馈入一个单指令多数据(SIMD)算术单元(双 24位加法/减法/累加或四 12 位加法/减法/累加)或一个逻辑单元,后者可以生成两个操作数的 10 种不同逻辑功能中的任意一种。
DSP48E1 包括一个额外的前级,通常用于对称滤波器。这一功能提高了密集设计的性能,并有助于减少完成特定拓扑结构在 DSP 块之前或之后所需的逻辑片数量。
DSP48E1 芯片具有广泛的流水线和扩展功能,例如宽动态总线移位器、内存地址发生器、宽总线多路复用器和内存映射 IO 寄存器文件。累加器还可用作同步上/下计数器。乘法器可执行逻辑功能(AND、OR)和桶形移位。
原型设计实用性:非常高,是主要的构建模块。除模式检测可通过内核实例化纳入外,大多数功能都是由综合工具自动推断的。
3.1.5.FPGA 时钟资源
时钟资源和时钟网络是 FPGA 与 SoC 技术之间的主要区别。SoC 设计人员几乎可以完全自由地指定他们所能想象的各种时钟网络,而 FPGA 中能够实现的时钟网络数量却有实际的有限限制。
SoC 时钟与 FPGA 时钟资源的映射, 如果 SoC 团队不能妥善解决,例如提供简化版的 SoC 时钟,就会导致项目严重延误。
原型验证最好在设计的 RTL 上进行,然后再进行时钟树综合、树分割测试和时钟处理以降低功耗。不过,即使是 SoC 设计的原始 RTL 也可能包括一些非常复杂的时钟网络,FPGA 器件需要处理这些网络。
事实上,在某些设计中, 限制因素是 FPGA 中有限的时钟资源,而不是器件容量或性能。因此,有必要找到一种方法,使 FPGA 的时钟资源与 SoC 的时钟资源相匹配。
这可以通过简化原始时钟网络(参见第 9 章中的原型设计建议)或最大限度地利用可用 FPGA 时钟(参见第 7 章)来实现。时钟资源可分为时钟产生和时钟分配。
3.1.5.1.FPGA 时钟生成
时钟在称为 CMT(时钟管理芯片)的可配置单元中产生,在 Xilinx® Virtex-6 系列中,CMT 包括两个混合模式时钟管理器(MMCM)。
MMCM 是基于锁相环 (PLL) 架构的多输出频率合成器,具有增强的功能和性能。CMT 中的每个 MMCM 都可以单独处理;
但是,MMCM 之间存在专用路由,可以进行更复杂的频率合成。图 24 显示了 CMT 的示意图,从高层次展示了各种时钟输入源之间的连接以及 MMCM 与 MMCM 之间的连接。
PLL 中的压控振荡器 (VCO) 能够在 400MHz 至 1600MHz 范围内运行,最低输入频率可低至 10MHz,并具有可编程分频器和相位选择寄存器,以 45° 的间隔提供输出抽头。
其他可编程功能包括 PLL 带宽选择、反馈路径(使 PLL 成为时钟乘法器)或一个输出路径中的分数计数器,以及小增量固定或动态相移。
所有这些加起来就是一个非常强大的时钟发生块,每个 FPGA 中最多有九个这样的块。因此,在将 SoC 时钟网络映射到原型中时,我们应该不会缺少选择。
原型开发实用性:非常高,主要构件。许多时钟特性不能自动推断,必须实例化到 RTL 的 FPGA 版本中。
3.1.5.2.FPGA 时钟分配
几十年来,FPGA 厂商一直致力于生产具有尽可能多时钟的器件,同时又不浪费面积资源。因此,FPGA 非常适合实现具有有限数量时钟网络的常规同步电路。
为了提高效率,在大多数器件上,从全局低偏斜时钟到本地低扇出时钟,存在着不同时钟资源的层次结构。同样,合成和布线的任务是确保这些资源的良好使用,但有时也需要人工干预来简化任务,这将在第 7 章中讨论。
就 Xilinx® Virtex-6 系列而言,每个 FPGA 都提供五种不同类型的时钟线,以满足高扇出、短传播延迟和实现整个器件低偏移的不同时钟要求。
Xilinx® Virtex -6 时钟分配资源包括
-
•全局时钟线:每个 Virtex-6 FPGA 都有 32 条全局、高扇出时钟线,可连接到每个 FF 时钟、时钟使能、设置/复位以及许多逻辑输入。任何区域内都有 12 条全局时钟线。全局时钟线可由全局时钟缓冲器驱动,缓冲器还可以执行无间隙时钟多路复用和时钟使能功能。全局时钟通常由 CMT 驱动,可以完全消除基本时钟分配延迟。
-
•区域时钟:可驱动其区域内的所有时钟目的地以及上下区域。一个区域的定义是 40 个 IO 和 40 个 CLB 高、半个芯片宽的任何区域。Virtex-6 FPGA 有 6 到 18 个区域。每个区域有六个区域时钟轨道。每个区域时钟缓冲器可由四个时钟输入引脚中的任意一个驱动,其频率可选择除以 1 到 8 之间的任意整数。
-
•IO 时钟:仅服务于 IO 逻辑和串行器/解串器 (SERDES) 电路的特别快的时钟。Virtex-6 器件具有从 MMCM 直接连接到 IO 的高性能直接连接,可实现低抖动、高性能接口。
原型设计实用性:非常高,主要构件,由综合工具自动推断。如果需要区域时钟,则通常需要位置约束,以便将时钟负载与特定区域联系起来。
3.1.6.FPGA 输入和输出
正如我们在后面讨论基于多 FPGA 的原型验证硬件时将看到的那样,在 FPGA器件之间传递同步信号的能力,甚至将不同信号复用到同一条线路上的能力,取决于 FPGA 边界是否存在快速灵活的 IO 引脚和时钟资源。
与时钟一样,IO 引脚的有限数量往往比器件容量或内部性能更能限制信号的传递。
在 Xilinx® Virtex-6 器件中,根据器件和封装尺寸的不同,有 240 至 1200 个IO 引脚。每个 IO 引脚都可配置,符合多种 IO 标准,电压最高可达 2.5V。除电源引脚和少数专用配置引脚外,所有其他封装引脚都具有相同的 IO 功能,只是受到某些组/分组规则的限制。
所有 IO 引脚按组排列,每组 40 个引脚。每个组都有一个公共 VCCO 输出电源电压引脚,它也为某些输入缓冲器供电。某些单端输入缓冲器需要一个外部施加的基准电压(VREF )。
每个组有两个 VREF 引脚(配置组 0 除外)。一个组只能有一个 VREF电压值。
特点:单端输出采用传统的 CMOS 推/拉输出结构,向 VCCO 输出高电平或向地输出低电平,并可进入高 Z 状态。此外,压摆率和输出强度也是可编程的。输入始终处于激活状态,但在输出激活时通常会被忽略。每个引脚都可以选择弱上拉或弱下拉电阻。有关 IO 引脚单端操作的更多详情,请参阅下文:
- •IO 逻辑:每个 IO 引脚都有一个相关的逻辑块,可在其中选择多个选项:
- •配置:所有输入和输出均可配置为组合式或注册式。所有输入和输出均支持双倍数据速率(DDR)。
- •延时:任何输入或输出都可以单独延时,最多 32 个增量,每个增量~78ps。这是通过 IODELAY 实现的。延迟步数可通过配置设置,也可在使用时动态递增或递减。IODELAY 的工作频率接近 200MHz。每个总 IODELAY 的 32 个抽头由该频率控制,因此不受温度、电源电压和处理变化的影响。
- •驱动电流:FPGA 可能需要连接各种外设,有些外设安装在尚未创建的子卡上。Virtex-6 FPGA IO 引脚可配置为支持从 2mA 到 24mA 的不同驱动强度。
任何一对 IO 引脚都可配置为差分输入对或输出对。差分输入引脚对可选择使用 100Ω 内部电阻器端接。所有 Xilinx® Virtex-6 器件都支持 LVDS 以外的差分标准:HT、RSDS、LVDS、差分 SSTL 和差分 HSTL。
- •ISERDES 和 OSERDES:SERDES 块位于 IO 结构内部。每个输入端都可以访问自己的解串器(串行到并行转换器),并行宽度可编程为2、3、4、5、6、7、8 或 10 位;每个输出端都可以访问自己的串行器(并行到串行转换器),并行宽度可编程为:单数据速率 (SDR) 时最宽 8 位,双数据速率 (DDR) 时最宽 10 位。我们将在第 8 章中看到SERDES 模块如何在 FPGA 之间实现高速时分复用信号的巨大作用。
还有其他更复杂的 IO 块,如千兆位收发器和 PCIe 块,读者可以参考书目中的参考资料,了解在基于 FPGA 的原型中为特定目的使用这些块的更多信息。
第 10 章还讨论了如何使用 FPGA 中的内置 IP 来模拟被测 SoC 中的 IP。
3.1.7.千兆位收发器
快速串行通信通道在 ASIC 和 SoC 设计中越来越常见,用于通过背板或更远的距离连接集成电路。在 RTL 设计中,这些通道总是被实例化为黑盒子,并在最终硅布局中引用物理 IO 元素。
我们将在后面的章节中了解如何在基于FPGA 的原型中处理这些问题。要在 FPGA 中模拟这些超高速串行收发器, 需要专门和专用的片上电路,包括能够处理这些高数据速率下的信号完整性问题的差分 IO。
在 Xilinx® Virtex-6 系列中, 千兆位收发器块(简称 GTX 块)的存在使这种高速串行 IO 成为可能。
GTX 块的详细原理图如图 25 所示,从图中可以看出,除了物理发送和接收缓冲区外,GTX 块还能实现物理介质附件 (PMA) 和物理编码子层 (PCS)。每个 GTX 收发器还具有大量可由用户配置的功能和参数。
每个收发器都是发射器和接收器的组合, 数据传输速率介于 155Mb/s 和6.5Gb/s 之间。发射器和接收器都是独立的电路,使用独立的 PLL 将输入的参考频率乘以 2 到 25 之间的特定可编程数字,成为比特串行数据时钟。
首先来看发送器,它基本上是一个并行串行转换器,转换率为 8、10、16、20、32 或 40。
发射器输出通过单通道差分电流模式逻辑(CML)输出信号驱动PC 板。
而接收器从根本上说是一个串行到并行转换器,将输入的位串行差分信号转
换成并行字流,每个字流的宽度为 8、10、16、20、32 或 40 位。接收器接收输入的差分数据流,将其送入可编程均衡器,以补偿 PC 板和其他互连特性, 并使用 FREF 输入启动时钟识别。
Xilinx® Virtex-6 系列的不同成员各有 8 到 36 个 (GTX) 电路,最大的器件LX760 除外,不具备 GTX 功能。
因此,如果我们需要在设计中对高速串行 IP 进行原型开发,可能需要对 FPGA 进行一些组合,我们将在第 5 章中对此进行探讨。
原型设计工具:虽然 GTX 具有非常强大的功能,但由于其复杂性和可配置选项,综合工具无法自动推断出 GTX 及其相关逻辑。不过,可以通过内核实例化将这些模块包含在内。
3.1.8.内置 IP(以太网、PCI Express® 、CPU 等)
通常,许多网络和通信 SoC 设计都包含以太网或 PCI Express 通道,那么如何在基于 FPGA 的原型中对这些通道进行建模呢?FPGA 实现 MAC(媒体访问控制器)和 PHY(物理接口收发器)标准接口的能力越来越强。
如果所选的FPGA 内置了这些功能,那么就可以用它们来替代那些最终将嵌入到 SoC 中、但在 RTL 中可能以黑盒形式出现的物理 IP 块。有关这种替代的更多信息, 请参见第 10 章。
在 Virtex-6 FPGA 中,PCIe 和以太网 MAC 和 PHY 都集成到了 FPGA 结构中。
在以太网方面,根据 IEEE 802.3-2005 标准设计的三模(10/100/1000 Mb/s) 以太网 MAC (TEMAC) 块最多可达四个。这些模块可连接到 FPGA 逻辑、GTX 收发器和 IO 资源,支持高达 2.5Gbit/sec 的速度。
对于 PCIe , 所有 Xilinx® Virtex-6 LXT 和 SXT 器件都包含一个用于 PCI Express 技术的集成接口块,可配置为端点或根端口,设计符合 PCIe 基本规范 2.0 版。该接口块可根据系统设计要求进行高度配置,并可在 1、2、4 或 8 个通道上运行。
2.5Gbit/s 数据传输速率和 5.0Gbit/s 数据传输速率。
有些 FPGA 包含 CPU 硬核,通常是某种 ARM IP 核。这些内核针对 FPGA 进行了优化,在合成到 FPGA 时,其运行速度远远高于 SoC 的 RTL,通常是10:1。它们对原型开发的作用非常大,但前提是 FPGA 的内核与 SoC 内置的实际内核相匹配。
此外,当今大多数 SoC 设计都运行多个 CPU 内核,通常具有不同的功能或配置。如果每个 FPGA 都有一个硬 CPU 内核,那么分区标准就会受每个 FPGA 都有一个 CPU 的设计分割需求所驱动。这对于运行总线和其他通用设计元素来说可能并不理想,因此在 CPU 速度方面获得的优势可能无法转化为整体原型速度的显著提高。
如果用 FPGA 中的有限子集取代 SoC 内核会带来很大的折衷,那么我们最好使用外部测试芯片,或者在 CPU 速度而不是功能上做出让步。第 10 章对原型开发中的 IP 有更多讨论。
无论如何,如果 CPU 内核可以在系列中最大的FPGA 中使用,这样我们就不会影响总资源,那么 CPU 的存在对我们并没有坏处,我们也许可以在未来的设计中使用它。
在某些情况下,如果团队采用了原型验证设计程序,甚至可能会选择 SoC CPU,因为它在 FPGA 中具有非常接近的等效功能。我们对原型验证设计程序的宣言载于第 9 章,诚然,这只是一个极端的例子。
原型设计工具:虽然硬 IP 模块具有非常强大的功能,但合成工具不会自动推断出这些模块。不过,这些模块可以通过内核实例化来替代 SoC 模块。
3.1.9.系统监控
原型设计可以高速运行 FPGA 的很大一部分,因此功耗、发热、电压轨等可能会受到压力,特别是当设计的性能未达到预期或受到错误的影响时。我们将在有关选择或构建 FPGA 平台的章节中,对工作原型中的 FPGA 进行内置监控,对于避免错误操作造成损坏至关重要。
每个 Xilinx® Virtex-6 FPGA 都包含一个系统监控电路,提供热和电源状态信息。传感器输出由 10 位 200k 采样/秒模数转换器 (ADC) 进行数字化处理。
该模数转换器还可用于对多达 17 个外部模拟输入通道进行数字化。系统监控ADC 采用片内基准电路。此外,片上温度和电源监控器的测量精度分别为±4°C 和 ±1%。
默认情况下,系统监测器会持续对所有片上传感器的输出进行数字化处理。最新的测量结果以及最大和最小读数存储在专用寄存器中,可随时通过 DRP 或 JTAG 接口进行访问。报警限值可自动指示超温事件和不可接受的电源变化。指定限值(例如:125°C)可用于启动自动断电。
系统监视器无需在设计中明确实例化。一旦建立了适当的电源连接,就可以通过 JTAG 测试访问端口 (TAP) 随时访问测量数据,甚至在配置前或断电期间也可以访问。
我们将在第 5 章中了解如何在原型板上使用系统监视器。
原型开发实用程序:该模块主要是一个 "内部管理 "监控器,通常在实际设计之外,通常通过 JTAG 链读取器件和系统的健康状况。不过,它为在设计中加入 ADC 提供了一个独特的机会,如果需要,可以通过内核实例化加入。有关内核实例化的更多详情,请参阅第 10 章。
3.1.10.所有 FPGA 资源类型汇总
在继续讨论基于 FPGA 的原型开发工具和流程之前,让我们先总结一下迄今为止我们强调过的不同 FPGA 资源及其对原型开发的作用。
表 3 总结了当今大多数大规模 FPGA 中的不同模块。所有 FPGA 资源都是有用的,否则就不会出现这些资源,但它们面向的是在实际生产应用中使用FPGA 的广泛用户。
它们在 SoC 原型开发中的用处取决于 SoC 元素能否轻松映射到这些资源中,以及为此可能需要做出的妥协。现在,让我们仔细研究一下,在基于FPGA的原型验证项目中,有哪些工具可以让我们最大限度地利用这些FPGA资源。文章来源:https://www.toymoban.com/news/detail-827607.html
文章来源地址https://www.toymoban.com/news/detail-827607.html
到了这里,关于【FPGA原型验证】FPGA 技术:芯片和工具-当今的 FPGA 器件技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!