赛灵斯 Xilinx FPGA 最小系统设计指南

现场可编程门阵列(FPGA,Field Programmable Gate Array)是一种高性能低延时可重构,拥有高速并行运算能力,并可定制性能与功耗的可编程数字逻辑芯片,最早由 1984 年创立的赛灵思(Xilinx)公司推出,该公司由 Ross H. FreemanBernard V. Vonderschmitt 共同创办。不同于专用集成电路(ASIC,Application Specific Integrated Circuit)固定的内部电路连接和逻辑功能,FPGA 芯片内部电路连接与数字逻辑功能都可以通过灵活的编程来定义。

目前全球 FPGA 的市场份额主要集中在 赛灵思(Xilinx,2020 年被 AMD 收购)和 阿尔特拉(Altera,2015 年被 Intel 收购)两家美国企业手中,余下的市场份额主要由 莱迪思(Lattice)和 美高森美(Microsemi)两家公司占据。国产 FPGA 芯片产业起步较晚,产品性能与专利积累较为薄弱,目前主要有 深圳紫光同创上海安路科技广东高云半导体上海复旦微电子西安智多晶深圳易灵思北京京微齐力成都华微电子 等研发厂商。本文基于 AMD/Xilinx 官方提供的数据手册与参考资料,分别从 产品线序列片上功能单元最小系统设计 三个维度进行讨论,协助硬件工程师快速上手相关电路设计。

FPGA 的基本结构

现场可编程门阵列FPGA,Field Programmable Gate Array)芯片的内部基本结构主要由 可编程 IO 单元可编程逻辑单元嵌入式块 RAM布线资源内嵌专用硬核 六大功能单元构成,下面这张抛砖引玉的示意图可以协助大家直观的建立起 FPGA 的基本概念:

AMD/Xilinx 产品线介绍

AMD/Xilinx 公司的纯 FPGA 产品线,主要可以划分为 7 系列UltraScale 系列(过渡性产品)、UltraScale+ 系列 三个大系列:

  1. 7 系列:采用 28nm 制程工艺,包含 Spartan-7Artix-7Kintex-7Virtex-7 四个子系列;
  2. UltraScale 系列:采用 20nm 制程工艺,包含 Kintex UltraScaleVirtex UltraScale 两个子系列;
  3. UltraScale+ 系列:采用 16nm 制程工艺,包含 Spartan UltraScale+Artix UltraScale+Kintex UltraScale+Virtex UltraScale+ 子系列;

注意:截止到 2026 年 8 月,UltraScale 作为过度系列已经逐步边缘化,不再推荐新项目选型。

在上述三个大系列的基础之上,面向不同的应用场景,上述 FPGA 产品线还会被进一步细分为 SpartanArtixKintexVirtex 四个子系列:

  1. Spartan 系列:低成本低功耗,面向消费电子和基础应用;
  2. Artix 系列:平衡成本与性能,适用于低功耗中等算力场景;
  3. Kintex 系列:高性能计算与通信,同时兼顾性价比;
  4. Virtex 系列:旗舰级高性能和高集成度;

AMD/Xilinx 公司也推出了同时集成有 SoCFPGA 功能的四款自适应 Soc(Adaptive SoCs)产品线:

  • Zynq 7000 SoC:采用 28nm 制程工艺,集成有单/双核 ARM Cortex-A9,拥有 12.5G 速率的收发器;
  • UltraScale+™ MPSoC:采用 16nm 制程工艺,集成有双/四核 ARM Cortex-A53、双核 ARM Cortex-R5FARM Mali-400MP2H.264/H.265 视频编解码器,是应用最为广泛的通用型号;
  • UltraScale+ RFSoC:采用 16nm 制程工艺,集成有四核 ARM Cortex-A53、双核 ARM Cortex-R5F 和数字 RF-ADCRF-DACSD-FEC,广泛应用于 5G 通信、雷达、卫星通信等领域;
  • AMD Versal Adaptive SoC:采用 7nm 制程工艺,集成有双核 ARM Cortex-A72、双核 ARM Cortex-R5F,以及 DSP 和 AI 引擎与可编程片上网络,主要应运用于人工智能场景;

AMD/Xilinx 公司目前力推的 UltraScale+ 系列 多处理器片上系统(MPSoC,Multi-Processor System on Chip)产品,属于集成有多种异构处理核心的高性能片上系统,主要内置有如下的片上计算资源:

  • 应用处理器 APU:多核 64 位 ARM Cortex-A53,可运行 Linux 操作系统,负责通用计算;
  • 实时处理器 RPU:双核 ARM Cortex-R5F,用于处理实时任务;
  • 图形处理器 GPUARM Mali-400MP2 用于处理显示输出任务;
  • 可编程逻辑 PLUltraScale+ FPGA,用于实现硬件加速;
  • 视频编解码:用于支持 H.264/H.265 视频编解码;

UltraScale+ MPSoC 系列下面又进一步划分出了下表中的 CGEGEVRF 四个子系列:

UltraScale+ MPSoCCG 子系列:入门级器件,主要集成有 双核 1.3 GHz ARM Cortex-A53双核 ARM Cortex-R5F,系统逻辑单元数量在 81K ~ 600K 范围,其对应的具体系统功能框图如下面所示:

UltraScale+ MPSoCEG 子系列:资源较为丰富,主要集成有 四核 1.5 GHz ARM Cortex-A53双核 600 MHz ARM Cortex-R5F多核 ARM Mali-400MP2 图形处理器,系统逻辑单元数量在 81K ~ 1143K 范围,其对应的具体系统功能框图如下面所示:

UltraScale+ MPSoCEV 子系列:内置视频编解码器,主要集成有 四核 1.5 GHz ARM Cortex-A53双核 600 MHz ARM Cortex-R5F多核 ARM Mali-400MP2 图形处理器,以及 H.264/H.265 视频编解码器,系统逻辑单元数量在 192K ~ 504K 范围,其对应的具体系统功能框图如下面所示:

MPSoC 系列命名规则

UltraScale+ MPSoC 系列产品的命名由 设备名称 + 设备属性 + 封装信息 构成,例如对于命名为 XCZU7EV-2FFV C1156I 的 MPSoC 芯片:

设备名称 部分是 XCZU7EV

  • 商品级别XC 表示商业标准级Xilinx Commercial),XA 表示汽车认证级Xilinx Automotive);
  • 产品系列ZU 表示 Zynq UltraScale+ 系列产品线;
  • 价值索引:该数值越大,片上资源就越丰富,价格也就越高;
  • 处理器系统标识符C 代表双核 APU 和双核 RPU,E 代表四核 APU、双核 RPU、单个 GPU;
  • 引擎类型G 表示通用规格,V 表示携带有视频解码器;

制造工艺 部分是 -2FFV

  • 速度等级-1/2/3 表示最慢/中等/最快,-L1/L2 表示低功耗;
  • 倒装封装F 表示球距 1.0 mm 的 Flip-chip 封装,S 表示球距 0.8 mm 的 Flip-chip 封装,U 表示球距 0.5 mm 的 InFO 封装;
  • 封装技术F 表示 Lid 封装技术,B 表示 Lidless 封装技术;
  • 电气标准V 表示符合 RoHS 六项检测;

封装信息 部分是 C1156I

  • 封装标识符:例如 A 或者 C 等;
  • 封装引脚数量:例如 1156 等;
  • 温度等级E 表示工作在 0°C ~ +100°CI 表示工作在 –40°C ~ +100°C

处理系统 PS & 可编程逻辑 PL

AMD/XilinxZynq 系列属于 ARM + FPGA 异构一体化 SoC 芯片产品,其 Zynq 7000Zynq MPSoC 系列均由 处理系统(PS,Processing System)和 可编程逻辑(PL,Programmable Logic)两个核心部分组成:

  • 处理系统PS,Processing System):基于 ARM Cortex 架构,类似于传统的 CPU 中央处理器,可以直接运行嵌入式 Linux 操作系统;
  • 可编程逻辑PL,Programmable Logic):传统的 FPGA 可编程逻辑资源,支持硬件并行处理,可通过 Verilog 或者 VHDL 进行编程;

注意PSPL 之间的低速数据交互可以采用 EMIO,而高速数据则必须使用 高级可扩展接口AXI,Advanced eXtensible Interface)总线。

虽然更早推出的 Zynq 7000 以及后来的 Zynq MPSoC 均采用 PS + PL 的架构,但是两者的区别在于 Zynq-7000 的 PS 端为双核 Cortex-A9 架构,而 Zynq MPSoC 的 PS 端升级为了四核 Cortex-A53 加上 双核 Cortex-R5 以及 GPU 的多核架构,在算力和实时性以及多媒体处理能力方面都得到了大幅提升:

基本逻辑单元 CLB

可配置逻辑块CLB,Configurable Logic Block)是 FPGA 可编程逻辑单元的基本组成部分,每一个 CLB 包括有 2 个 Slices 切片。而每一个 Slice 切片又由 4 个 查找表LUT,Look-Up Table)、8 个寄存器、逻辑门共同组成。

切片 Slices 可以进一步被划分为 逻辑切片SLICEL,Slice Logic)和 存储器切片SLICEM,Slice Memory)两种类型,其中 SLICEM 的功能更加强大,除了具备 SLICEL 的所有功能之外,还能实现分布式的 RAM、ROM 以及移位逻辑功能。除此之外,UltraScale 架构的 FPGA 内部通常还内嵌有块存储器(BRAM,Block RAM),而 UltraScale+ 架构还会内置超存储器URAM,Ultra RAM),从而大大扩展了 FPGA 的应用范围与使用灵活性。

PS 侧的 MIO/EMIO

UltraScale+ MPSoCPS 侧提供了多路复用(MIO,Multiplexed IO)和扩展多路复用(EMIO,Extended Multiplexed IO)两种 I/O 管理机制:

  • MIO:用于 PS 端的多路复用 IO,由处理系统 PS 直接管理的物理引脚,用于控制 PS 端的各种外设资源;
  • EMIO:用于 PS 端的扩展多路复用 IO,由处理系统 PS 通过 PL 可编程逻辑扩展的 I/O 接口,当 PS 的 MIO 数量不足时,可通过 PL 路由出更多的 EMIO(会引入额外延迟);

PL 侧的 SelectIO

SelectIO 指的是用于 PL 侧的逻辑 IO 引脚,能够支持多种单端(例如 LVCMOS)和差分(例如 LVDS)电平标准(信号电平幅值越低,传输速率越快),Xilinx FPGA 的 SelectIO 对 IO Bank 进行了如下表的分类:

Bank 类型 功能特点 性能描述
高性能 BankHP,High Performance) 适用于高速场景(1.0V ~ 1.8V); 单端速率最大 1.6 Gb/s,LVDS 差分速率最大 1.8 Gb/s,DDR4 接口速率 2.667 Gb/s
高密度 BankHD,High Density) 单位晶圆面积提供更多 IO 引脚,适用于低速率场景(1.2V ~ 3.3V); 单端速率最大 250 Mb/s,不支持 LVDSDDR
宽范围 BankHR,High Range) 适用于宽电压范围场景(1.2V ~ 3.3V); 单端速率最大 800 Mb/s,LVDS 差分速率最大 1.25 Gb/s,不支持 DDR
  • UltraScale+ MPSoC 系列的 HP Bank:拥有 52 个标准 SelectIO 引脚(24 个差分对);
  • UltraScale+ MPSoC 系列的 HD Bank:拥有 24 个标准 SelectIO 引脚(12 个差分对,无 I/ODELAY 功能);

注意Zynq 7000 系列没有 HD BankUltraScale+ MPSoC 系列没有 HR Bank,不带 + 号的 UltraScale MPSoC 系列才拥有 HR Bank

吉比特收发器 GTx

FPGA 内置的串行解串器SerDes,Serializer/Deserializer)用于进行串行数据与并行数据的相互转换:

  1. 当 FPGA 作为接收端的时候,用于将串行数据,转换为 FPGA 内部能够处理的并行数据;
  2. 当 FPGA 作为发送端的时候,用于将 FPGA 内部的并行数据,转换为便于传输的串行数据;

注意:目前的 FPGA 芯片通常都集成有专用的 SerDes 外设单元,例如 AMD/XilinxGTx 收发器,以及 Intel/AlteraTransceiver 收发器。

AMD/Xilinx 在 FPGA 芯片 PL 端集成的 SerDes 外设被称作吉比特收发器GT,Gigabyte Transceiver),基于不同的数据传输速率及其所具备的高级特性,规格书当中会分别以 GTx 格式进行命名,例如 GTPGTXGTHGTZGTY。对应于 AMD/Xilinx 的不同产品系列,GTx 的传输速率也会有所不同:

7 系列 UltraScale 系列 UltraScale+ 系列
GTP = 6.6 Gb/s GTH = 16.3 Gb/s GTH = 16.3 Gb/s
GTX = 12.5 Gb/s GTY = 30.5 Gb/s GTY = 32.75 Gb/s
GTH = 13.1 Gb/s - GTR = 6.0 Gb/s
GTZ = 28.05 Gb/s - -

上述表格当中的 GTR 是集成在 UltraScale+ MPSoC 系列芯片 PS 端的硬核高速收发器,其传输速率上限为 6.0 Gb/s,采用固定的 4 对差分信号收发引脚(只能被运用于 PS 端的 PCIe2.0SATA3.1USB3.0DPSGMII 五种硬核协议)。

注意:许多数据手册和参考原理图当中出现的多吉比特收发器MGT,Multi‑Gigabit Transceiver),通常指代的是高速收发器所在的 Bank,也就是 MGT Bank

模数转换 XADC/SYSMON

赛灵思模数转换器XADC,Xilinx Analog-to-Digital Converter)是 Zynq 7 系列(纯 FPGA 芯片)、Zynq 7000 系列(集成有双核 ARM Cortex-A9 系统的 FPGA 芯片)内部集成的硬核子系统,在 UltraScale+ MPSoC 架构当中更名为系统监控器 SYSMON(早期 UltraScale 采用 SYSMONE1 版本架构,后期 UltraScale+ 统一采用 SYSMONE4 版本架构,本文主要介绍后者):

UltraScale+ MPSoC 系列芯片分别在 PS 端和 PL 端都内置有 SYSMONE4 增强型系统监控器:

  • PL 端系统监控器 PL SYSMON:采样率为 200 kSample/S,可以监测 PL 区域的温度,以及 PLPS 端的多个电压节点,也可以基于 1.25V 差分参考输入引脚 \(V_{REFP}\)\(V_{REFN}\) 进行外部模数转换采样(通过模拟差分输入引脚 \(V_P\)\(V_N\)),电源使用的是 \(V_{CCAUX}\)\(V_{CCADC}\) 两个引脚;
  • PS 端系统监控器 PS SYSMON:采样率为 1 MSample/S,只能监测芯片内部温度和电压,无法采集外部模拟信号,使用 PS 端 LPD 低功耗电源域的 \(V_{CC\_PSAUX}\)\(V_{CC\_PSADC}\) 两个引脚供电;

注意SYSMONE增强型系统监控器(System Monitor Enhanced)的英文缩写。

DDR 内存控制器

字节组 & 字节通道

在 DDR 相关的技术手册当中经常出现的字节组 Byte Group字节通道 Byte Lane 两个术语,本质上属于可以互换使用的同义词。每一组 Byte Lane 负责并行传输 8 位的数据(即一个字节),但是一个完整的 Byte Lane 不仅包含有 8 条 DQ 数据信号线,还会包含有相对应的控制与时序信号线:

  • 8 条数据信号 DQ[7:0]
  • 2 条数据选通 DQS_tDQS_c 组成的差分信号;
  • 1 条数据掩码(Data Mask)DM_n 或者数据总线反相(Data Bus Inversion)DBI_n 信号;

注意:除此之外,Byte Lane 同样也是 PCB Layout 阶段信号分组等长匹配的最基本单位。

PS 端的 DDR

UltraScale+ MPSoC 系列在 PS 端内置了 DDR 控制器和物理层的硬核实现,可以对 DDR3DDR3LLPDDR3DDR4LPDDR4 提供支持;PS 端的 DDR 引脚位于 Bank504(PS 端 DDR 控制器专属的 MIO Bank),能够连接 16 bit32 bit64 bit 位宽的多枚 DDR 颗粒(所有 DDR 颗粒必须使用相同的位宽),DDR 引脚互换遵循如下三条核心原则:

  1. DDR4地址命令控制 信号引脚严禁交换,必须一对一进行连接;
  2. 数据通道(Byte Lane)可以整组互换(即每 8 位数据 DQ 信号,及其对应的数据选通 DQS_P/N数据掩码 DM 信号为一个组),不同的组之间可以整组互相调换;
  3. 相同 数据通道 内部的数据 DQ 信号可以任意调换位置;

PL 端的 DDR

赛灵斯在 Vivado 当中提供了一个 IP 软核 内存接口生成器MIG,Memory Interface Generator)​来提供对于 DDR 的控制器和物理层支持(基于 HP Bank 引脚),UltraScale+ MPSoC 系列的 MIG 软核可以支持 DDR3DDR3LLPDDR3DDR4LPDDR4,这款软核对于 DDR 字节通道的绑定,主要存在如下具体规则:

  • DQS_tDQS_c 信号必须使用该数据通道 Lane 专用的差分时钟引脚 N6N7
  • DM_nDBI_n 信号必须使用 N0 引脚;
  • DQ 信号可以使用该字节通道剩余的引脚,但是不能随意跨通道进行调换;

输入输出组 IO Bank

输入输出组 IO Bank 是 FPGA 内部对引脚资源进行分组管理的单元区块,相同 Bank 上的全部 IO 引脚都共享同一个电源域(可以将 Bank 翻译为中文的),下面以 UltraScale+ MPSoC 系列采用 SFVC784 封装的 XCZU4EV 引脚定义示意图来进行讨论:

XCZU4EVPL 逻辑侧 IO 被划分为 Bank43Bank44Bank45Bank46Bank64Bank65Bank66Bank224 八个组:

  • 高性能 HP BankBank43Bank44Bank45Bank46(支持 DDR4LVDSLVCMOS 等高速接口),
  • 高密度 HD BankBank64Bank65Bank66(通用低速外设接口);
  • 吉比特收发器 GT BankBank224PL 侧的高速 SerDes 接口);

XCZU4EVPS 系统侧的 96 个 MIO 引脚则被划分为了 Bank500Bank501Bank502Bank503Bank504Bank505 六个组:

Bank 组 MIO 引脚 Bank 组 MIO 引脚
Bank500 MIO[0~15] Bank503 MIO[48~63]
Bank501 MIO[16~31] Bank504 MIO[64~79]
Bank502 MIO[32~47] Bank505 MIO[80~95]

电源 の 上电时序

UltraScale+ MPSoC 系列芯片定义有 4 个顶层的独立电源域,每一个域下面会再细分 内核I/OPLL高速收发器VCUADC 等子电源域:

  1. PS 全功耗域LPD,Low Power Domain);
  2. PS 低功耗域FPD,Full Power Domain);
  3. PL 电源域PLPD,PL Power Domain);
  4. 电池电源域BPD,Battery Power Domain);

下面的框图当中,展示的是 UltraScale+ MPSoC 系列芯片的整体电源域架构:

UltraScale+ MPSoC 系列的 PL 端和 PS 端的电源域(Power Domain)相互独立,官方不强制要求双方的上电顺序,各自满足自身的上电时序即可。接下来内容当中所涉及的电源引脚定义,都可以方便的在本文后续的 《UltraScale+ MPSoC 引脚定义》小节内容中查询得到。

注意:上图当中的英文 Auxiliary [ɔːɡˈzɪliəri] 表示的是辅助的意思,Xilinx 的数据手册当中经常将其缩写为 Aux

PS 端上电时序

为了确保上电时,PS 端的 IO 引脚处于高阻态(避免上电瞬间 IO 输出的高低电平状态),并且避免这些 IO 引脚由于 PS 端电源上电时序错误,产生较大的瞬态电流导致功耗异常,官方推荐遵循如下上电顺序:

  • 低功耗域LPD,Low Power Domain):Cortex-R5 实时处理器、PMU 电源管理单元、PS 端的低速 MIO 引脚(用于实现 I2CSPIUARTCAN 等低速协议);
  • 全功耗域FPD,Full Power Domain):Cortex-A53 应用处理器、Mali-400 图形处理器、PS 端 DDR 内存控制器、PS 端 GTR 收发器(高速 SerDes 通道,无需占用 PL 资源即可实现 USB3.0PCIe Gen2SATASGMII 等高速接口协议);

低功耗域 LPD 推荐使用如下列表的上电顺序(下电顺序相反):

  1. 首先 \(V_{CC\_PSINTLP}\) 开始上电;
  2. 然后 \(V_{CC\_PSAUX}\)\(V_{CC\_PSADC}\)\(V_{CC\_PSPLL}\) 三者可以任意顺序或者同时上电;

全功耗域 FPD 推荐使用如下列表的上电顺序(下电顺序相反):

  1. \(V_{CC\_PSINTFP}\)\(V_{CC\_PSINTFP\_DDR}\) 必须使用相同的电源进行供电;
  2. \(V_{PS\_MGTRAVCC}\)\(V_{CC\_PSDDR\_PLL}\) 两者可以任意顺序或者同时上电;
  3. \(V_{PS\_MGTRAVTT}\)\(V_{CCO\_PSDDR}\):两者可以任意顺序或者同时上电;

注意:低功耗域 LPD 必须首先就绪,然后全功耗域 FPD 再行上电。除此之外,PS 端的复位信号 PS_POR_B 在上电期间必须保持低电平 GND,上电完成之后才能释放;

PL 端上电时序

同样为了 PL 侧引脚处于高阻态,避免 IO 引脚由于上电时序错误,产生较大瞬态电流出现功耗异常,官方推荐 PL 端的上电顺序如下面列表所示(下电顺序相反):

  1. 首先 \(V_{CCINT}\) 开始上电;
  2. 然后 \(V_{CCINT\_IO}\)\(V_{CCBRAM}\)\(V_{CCINT\_VCU}\) 进行上电;
  3. 最后 \(V_{CCAUX}\)\(V_{CCAUX\_IO}\)\(V_{CCO}\) 完成上电;

电源的同步缓升是指多路电源从 0V 开始,电压上升的斜率基本一致,电压值同步抬升,并最终同时达到额定电压。

  • 如果 \(V_{CCINT}\)\(V_{CCINT\_IO}\)\(V_{CCBRAM}\) 设定的电压一致(必须将 \(V_{CCINT\_IO}\)\(V_{CCBRAM}\) 短接),那么可以使用相同的电源进行供电(需要同步缓升)。
  • 如果 \(V_{CCAUX}\)\(V_{CCAUX\_IO}\)\(V_{CCO}\) 设定的电压一致(必须将 \(V_{CCAUX}\)\(V_{CCAUX\_IO}\) 短接),那么同样可以使用相同的电源进行供电(需要同步缓升)。

注意:除此之外,\(V_{CCADC}\)\(V_{REF}\) 可以随时上电,没有上电顺序方面的要求。

高速收发器上电时序

UltraScale+ MPSoC 系列的 GTHGTY 收发器实现最小电流汲取(即上电时序错误产生较大瞬态电流导致的功耗异常),官方推荐了如下两种上电顺序(下电顺序分别相反):

  • \(V_{CCINT} \implies V_{MGTAVCC} \implies V_{MGTAVTT}\)
  • \(V_{MGTAVCC} \implies V_{CCINT} \implies V_{MGTAVTT}\)

上面列表里的 \(V_{CCINT}\)\(V_{MGTAVCC}\) 这两路电源允许进行同步缓升。

注意高速收发器辅助电源 \(V_{MGTVCCAUX}\),官方没有约束其上电时序,因而可以跟随其它电源在任意时刻上电。

XCZU4EV 最小系统

本文接下来的内容会通过一块 Xilinx UltraScale+ MPSoC XCZU4EV 核心板作为典型示例,讨论 FPGA 最小系统电路的基本构成。

PS/PL DDR4

这块 XCZU4EV 核心板采用 5 片 美光科技(Micron)型号为 MT40A512M16GE 的 DDR4 内存颗粒:

  • PS 端:挂载 4 片 DDR4(连接到 Bank504,提供 4GB 容量和 64 位的数据位宽),PS 端 DDR4 SDRAM 的最大运行频率为 1200MHz,数据传输速率为 2400Mbps

  • PL 端:挂载 1 片 DDR4(连接到 Bank64,提供 1GB 容量和 16 位的数据位宽),PL 端 DDR4 SDRAM 的最大运行频率为 1066MHz,数据传输速率为 2132Mbps

QSPI Flash

FPGA 最小系统通常需要使用 Nor Flash 存储器(小容量,擦写寿命长,读速度快,写速度慢)来作为系统启动设备(用于存储 比特流ARM 应用程序用户文件 等数据),因此该 XCZU4EV 核心板配备了 1 片 华邦电子(Winbond)型号为 MT25QU256ABA1EW9256Mb 容量 Flash 存储器,其内部存储位宽为 8 位(存储阵列 32M × 8bit = 256Mb = 32MB),采用 1.8V 电压进行供电,并且连接到 XCZU4EV 在 PS 端 Bank500MIO 引脚上面,使用时需要将这些 IO 引脚映射为 QSPI Flash 接口。

该款存储器采用 Quad‑SPI 总线进行通信,具有 4 个双向 IO 引脚(每个时钟周期传输 4 位数据),最大总线时钟频率为 133 MHz,4 位模式下等效传输速率为 133 MT/s × 4 = 532 Mb/s

eMMC Flash

FPGA 最小系统还需要使用 NAND Flash 存储器(大容量,单位成本低)来存放 PS 端的嵌入式 Linux 操作系统和应用程序,该 XCZU4EV 核心板配备了 1 片 美光科技(Micron)型号为 MTFC8GAKAJCN-4M8GB 容量 eMMC 存储器。

注意:这颗 eMMC 存储器被连接到 PS 端 Bank500 的 MIO 引脚,数据位宽为 8 位,使用时需要将这些引脚配置为 eMMC 接口功能。

该存储器兼容 联合电子器件工程委员会(JEDEC,Joint Electron Device Engineering Council)提出的 e.MMC v5.0(即 JESD84-B50)存储接口标准,支持 DDR52HS200HS400 三种总线速度模式

  1. DDR52 模式双倍数据速率(DDR,Double Data Rate)采样,即在时钟信号上升沿和下降沿各传输一次数据,时钟频率最高可达 52MHz,最大数据传输速率为 52MHz × 2 倍 = 104MB/s
  2. HS200 模式单倍数据速率(SDR,Souble Data Rate)采样方式,通过大幅提高时钟频率至 200MHz 来提升传输效率,并采用调优(Tuning)机制进行动态时序校准,最大数据传输速率为 200MHz × 1 倍 = 400MB/s
  3. HS400 模式:结合双倍数据速率 DDR 采样与数据选通(DS,Data Strobe)机制,读取数据时 eMMC 存储器主动产生一个与数据窗口对齐的 DS 信号,协助 FPGA 克服高频时钟偏移问题,从而在 200MHz 的时钟频率下稳定实现双倍速率传输 200MHz × 2 倍 = 400MB/s

接下来的封装示意图以及表格里,整理了 MTFC8GAKAJCN-4M 存储器 153 球 FBGA 封装全部引脚的位置定义

eMMC 引脚 类型 功能描述
\(CLK\) 输入 时钟引脚;
\(RST_n\) 输入 复位引脚;
\(CMD\) 输入/输出 命令引脚;
\(DAT[7:0]\) 输入/输出 数据引脚;
\(DS\) 输出 数据选通引脚;
\(V_{CC}\) 电源 NAND Flash 存储阵列电源;
\(V_{CCQ}\) 电源 eMMC 控制器电源;
\(V_{SS}\) 电源 NAND Flash 存储阵列接地;
\(V_{SSQ}\) 电源 eMMC 控制器接地;
\(V_{DDIM}\) - 内部电压节点(禁止连接到电源和地);
\(RFU\) - 保留功能,悬空即可;

对于上述表格当中 eMMC 存储器电源的接法,主要从 NAND Flash 存储阵列电源 \(V_{CC}\)eMMC 控制器电源 \(V_{CCQ}\) 两个电源域来进行设计和考量:

  1. NAND Flash 存储阵列电源 \(V_{CC}\):标准电压范围为 2.7V ~ 3.6V,通常设定为 3.3V
  2. eMMC 控制器电源 \(V_{CCQ}\):可以选用 1.7V ~ 1.95V2.7V ~ 3.6V 两种电源范围,通常设定为 1.8V 或者 3.3V,该电源决定了 eMMC 存储器的数据线 DAT[7:0]命令线 CMD时钟线 CLK 的逻辑电平;

时钟树

XCZU4EV 核心板分别为 PS(处理系统)和 PL(可编程逻辑)部分提供了独立的系统参考时钟,使得两者可以单独工作。除此之外,为了便于获取以 1 秒为单位的自然计时(计时器从 0 累计到 32767 可以产生 1 秒脉冲信号),还加入了实时时钟RTC,Real Time Clock):

  1. 32.768KHz 无源晶振可以为 PS 侧提供实时时钟,该时钟信号连接到 PSBank503PS_PADI_503PS_PADO_503 引脚;
  2. 33.333MHz 单端有源晶振为 PS 侧提供系统时钟,该时钟信号连接到 PSBank503PS_REF_CLK_503 引脚;
  3. 200MHz 有源差分时钟PL 侧提供系统时钟(作为内部逻辑电路和 DDR4 控制器的参考时钟),该时钟信号连接到 PL 侧 Bank64多区域时钟引脚MRCC,Multi‑Region Clock‑Capable),作为全局时钟使用;

UltraScale+ MPSoC 引脚定义

用户 I/O 引脚

UltraScale+ MPSoC 系列芯片的每个用户 I/O 引脚名称,都是由如下的标识格式组成:

1
2
IO_L[1 to 24][P or N]_T[0 to 3] [U or L]_N[0 to 12]_ [multi-function]_[bank number]
IO_T[0 to 3][U or L]_N[0 to 12]_[multi-function]_[bank number]

下面的列表,解释了各个标识的名字:

  • IO:代表用户 I/O 引脚;
  • L[1‑24]:代表一组独立差分对(包含有正极 P负极 N),换而言之,不带 L 标识则只支持单端信号,不能作为差分引脚使用;
  • T[0‑3][U or L]:代表该引脚所属字节组,而UL 分别代表在该字节组内的半字节位置(上半字节 Upper下半字节 Lower)。
  • N[0‑12]:该引脚在其所属字节组内部的引脚编号;
  • [multi‑function]:可复用为其它硬件功能的多功能引脚,不使用复用功能时可以作为普通用户 I/O 引脚使用;
  • [bank number]:该用户 I/O 引脚所属的 Bank 编号;

注意UltraScale+ MPSoC 标准 52 引脚的 HD、HP、HR Bank 都固定包含有 T0T1T2T3 四个字节组(Byte Group),每个字节组内部则拥有 N0、N1、N2 … N12 共 13 个局部编号引脚。除此之外,26 引脚的 HR Bank 只拥有 T0T1 两个字节组,每个字节组同样拥有 N0 ~ N12 的局部编号引脚。

多功能 I/O 引脚

引脚名称 引脚类型 方向 描述
\(GC\)\(HDGC\) 多功能 输入 全局时钟专用输入引脚,每个 I/O Bank 包含四组全局时钟引脚; PS_POR_B
\(VRP\) 多功能 P 型晶体管阻抗校准电压参考引脚,通常外接 240Ω/1% 的基准电阻下拉至低电平;
\(DBC\)\(QBC\) 多功能 输入 字节通道时钟,字节通道时钟,DDR 内存场景等价于 DQS
\(PERSTN [0 ~ 1]\) 多功能 输入 用于 PCIe 总线的硬件复位信号(低电平有效);

配置引脚

引脚名称 引脚类型 方向 描述
\(PUDC_{B}\) 专用 输入 用于配置阶段开启全部 SelectIO 引脚的内部上拉(0 开启配置前上拉,1 关闭配置前上拉),该引脚由 \(V_{CCAUX}\) 电源进行供电;
\(POR_{OVERRIDE}\) 专用 输入 上电复位延时重写(0 使用标准的 PL 上电复位延时(推荐默认值),1 缩短 PL 上电复位延时),配置前与配置过程当中,该引脚禁止悬空,该引脚必须连接至 \(V_{CCINT}\) 或者 GND
\(PS_{DONE}\) 专用 输出 PS DONE 完成信号(需要外接上拉电阻);
\(PS_{ERROR\_OUT}\) 专用 输出 PS 错误标识;
\(PS_{ERROR\_STATUS}\) 专用 输出 PS 错误状态;
\(PS_{INIT\_B}\) 专用 输入/输出 标识上电复位之后的初始化完成,高电平表示 PL 端初始化完成(需要外接上拉电阻);
\(PS_{JTAG\_TCK}\) 专用 输入 JTAG 数据时钟引脚;
\(PS_{JTAG\_TDI}\) 专用 输入 JTAG 数据输入引脚;
\(PS_{JTAG\_TDO}\) 专用 输出 JTAG 数据输出引脚;
\(PS_{JTAG\_TMS}\) 专用 输入 JTAG 模式选择引脚;
\(PS_{MODE}\) 专用 输入/输出 用于配置 PS 端从哪个设备启动(QSPI、SD、eMMC、JTAG、USB);
\(PS_{PADI}\) 专用 输入 RTC 实时时钟信号输入引脚;
\(PS_{PADO}\) 专用 输出 RTC 实时时钟信号输出引脚;
\(PS_{POR\_B}\) 专用 输入 PS 端冷上电复位,PS 上电复位过程当中保持为低电平,当 PS 端电源和参考时钟稳定之后,才允许该引脚拉高并释放复位;
\(PS_{PROG\_B}\) 专用 输入 复位 PL 配置模块,低电平有效,复位完成之后上拉为高电平(需要外接上拉电阻);
\(PS_{REF\_CLK}\) 专用 输入 PS 端参考时钟(频率范围 27MHz ~ 60MHz);
\(PS_{SRST\_B}\) 专用 输入 PS 端热复位,供调试时使用,置为 0 时强制 PS 端进入系统复位序列;

电源引脚

引脚名称 引脚类型 方向 描述
\(GND\) 专用 接地引脚;
\(RSVD_{GND}\) 专用 保留引脚,必须连接至 GND
\(RSVD\) 专用 保留引脚,保持悬空;
\(VCC_{INT}\) 专用 PL 内部逻辑电源;
\(VCC_{INT\_IO}\) 专用 I/O Bank 电源引脚,\(V_{CCINT\_IO}\) 必须与 \(V_{CCBRAM}\) 相互连接;
\(VCC_{INT\_VCU}\) 专用 视频编解码单元电源,不需要使用该单元可以将其接入 GND 以降低功耗,该引脚必须使用独立电源的供电,不能与其它电源轨合并;
\(VCC_{AUX}\) 专用 全局辅助电源引脚;
\(VCC_{AUX\_IO}\) 专用 I/O Bank 辅助电源引脚,必须将 \(V_{CCAUX\_IO}\) 连接到 \(V_{CCAUX}\)
\(VCC_{BRAM}\) 专用 PL 端块存储器 BRAM 的电源引脚;
\(VCC_{O\_[Bank 编号]}\) 专用 每个 Bank 的输出驱动器电源;
\(V_{REF\_[Bank 编号]}\) 专用 每个 Bank 输入引脚的参考电压引脚;
\(VCC_{ADC}\) 专用 系统监控器 SYSMON 模拟电源;
\(GND_{ADC}\) 专用 系统监控器 SYSMON 模拟地;
\(VCC_{PSADC}\) 专用 PS 端 ADC 电源;
\(GND_{PSADC}\) 专用 PS 端 ADC 模拟地;
\(VCC_{PSAUX}\) 专用 PS 端辅助电路供电电源;
\(VCC_{PSBATT}\) 专用 PS 端使用电池供电的 RTC 实时时钟电源(不使用时接入 GND);
\(VCC_{PSDDR\_PLL}\) 专用 PS 端 DDR 锁相环电源;
\(VCC_{PSPLL}\) 专用 PS 端的锁相环电源(DPLLRPLLAPLLVPLLIOPLL);
\(VCC_{PSINTFP}\) 专用 PS 端全功耗电源域;
\(VCC_{PSINTFP\_DDR}\) 专用 PS 端 DDR 全功耗电源域;
\(VCC_{PSINTLP}\) 专用 PS 端低功耗电源域;
\(VCC_{OPSIO[0:3]\_[500:503]}\) 专用 PS 端 I/O 电源,[0:3] 表示 PS 端的四组 I/O 电源域,[500:503] 对应的是 BGA 封装球的编号范围;
\(VCCO_{PSDDR}\) 专用 PS 端 DDR 控制器的 I/O 电源;

PS 端引脚

引脚名称 引脚类型 方向 描述
\(PS_{MIO}\) 多功能 输入/输出 多路复用 I/O,可以被配置为 SPIUSBSDIOUARTSPIGPIO 等接口;
\(PS_{DDR\_DQ}\) 专用 输入/输出 DDR 数据;
\(PS_{DDR\_DQS\_P}\) 专用 输入/输出 DDR 差分数据选通信号();
\(PS_{DDR\_DQS\_N}\) 专用 输入/输出 DDR 差分数据选通信号();
\(PS_{DDR\_ALERT\_N}\) 专用 输入 DDR 告警信号;
\(PS_{DDR\_ACT\_N}\) 专用 输出 DDR 激活命令信号;
\(PS_{DDR\_A}\) 专用 输出 DDR 行列地址;
\(PS_{DDR\_BA}\) 专用 输出 DDR Bank 地址;
\(PS_{DDR\_BG}\) 专用 输出 DDR Bank 组地址;
\(PS_{DDR\_CK\_N}\) 专用 输出 DDR 差分时钟();
\(PS_{DDR\_CK}\) 专用 输出 DDR 差分时钟();
\(PS_{DDR\_CKE}\) 专用 输出 DDR 时钟使能;
\(PS_{DDR\_CS}\) 专用 输出 DDR 片选信号;
\(PS_{DDR\_DM}\) 专用 输出 DDR 数据掩码;
\(PS_{DDR\_ODT}\) 专用 输出 控制 DDR 颗粒内部终端电阻的开启或关闭;
\(PS_{DDR\_PARITY}\) 专用 输出 DDR 奇偶校验信号;
\(PS_{DDR\_RAM\_RST\_N}\) 专用 输出 DDR 复位信号,低电平有效;
\(PS_{DDR\_ZQ}\) 专用 输入/输出 阻抗校准信号;

系统监控引脚

引脚名称 引脚类型 方向 描述
\(AD_{[0 \sim 15][P 或 N]}\) 多功能 输入 系统监控器 0 ~ 15 通道差分辅助模拟输入引脚;
\(V_{REFP}\) 专用 电压参考输入;
\(V_{REFN}\) 专用 电压参考地;
\(V_{P}\) 专用 输入 系统监控器差分模拟输入();
\(V_{N}\) 专用 输入 系统监控器差分模拟输入();
\(I2C_{SCLK}\) 多功能 双向 I²C 串行时钟信号(直连到系统监控器 DRP 动态重配置端口,用于 I²C 操作配置);
\(I2C_{SDA}\) 多功能 双向 I²C 串行数据信号(直连到系统监控器 DRP 动态重配置端口,用于 I²C 操作配置);
\(SMB_{ALERT}\) 多功能 双向 可选的 PMBus 电源管理总线 告警与中断信号,低电平表示存在系统故障,需要通过 PMBus 命令清除;

高速收发器引脚

引脚名称 引脚类型 方向 描述
\(MGTH_{RX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) 专用 输入 RXPRXN 为 GTH Quad 各个接收器的差分输入对;
\(MGTH_{TX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) 专用 输出 TXPTXN 为 GTH Quad 各个发送器的差分输出对;
\(MGTY_{RX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) 专用 输入 RXPRXN 为 GTY Quad 各个接收器的差分输入对;
\(MGTY_{TX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) 专用 输出 TXPTXN 为 GTY Quad 各个发送器的差分输出对;
\(PS_{MGTR\_RX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) 专用 输入 RXPRXN 为 PS-GTR Quad 各个接收器的差分输入对;
\(PS_{MGTR\_TX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) 专用 输出 TXPTXN 为 PS-GTR Quad 各个发送器的差分输出对;
\(MGT_{AVCC\_[L 或 R][N 或 S]}\) 专用 输入 PL 端的 GTH/GTY 高速收发器内部收发电路的模拟电源引脚;
\(PS_{MGTR\_AVCC}\) 专用 PS 端的 GTR 高速收发器内部收发电路的模拟电源引脚;
\(MGT_{AVTT\_[L 或 R][N 或 S]}\) 专用 输入 PL 端的 GTH/GTY 高速收发器在收发端接电路的模拟电源引脚;
\(MGT_{VCCAUX\_[L 或 R][N 或 S]}\) 专用 输入 GT Quad 内部 4 路高速收发器共用的锁相环 QPLL 电路的辅助模拟电源引脚;
\(PS_{MGTR\_AVTT}\) 专用 PS 端 GTR 高速收发器的收发端接电路的模拟电源引脚;
\(MGT_{REFCLK[0 或 1][P 或 N]}\) 专用 输入/输出 可以配置为 GTH/GTY 高速收发器的参考时钟输入引脚,或者接收端恢复时钟输出引脚;
\(PS_{MGT\_REFCLK[0 \sim 3][P 或 N]}\) 专用 输入 PS 端 GTR 高速收发器的差分参考时钟;
\(MGT_{AVTT\_RCAL\_[L 或 R][N 或 S]}\) 专用 端接电阻校准电路的偏置电流引脚;
\(MGT_{RREF\_[L 或 R][N 或 S]}\) 专用 输入 PL 端的 GTH/GTY 高速收发器端接电阻的校准电阻引脚;
\(PS_{MGTR\_REF}\) 专用 输入 PS 端 GTR 高速收发器端接电阻的校准电阻引脚;

注意:上述表格当中的 Quad 表示的是 四个通道划分为一组,该单词出现在高速收发器后面的时候,表示的是一个高速收发器内部固定包含有 Channel0Channel1Channel2Channel3 四条通道(Lane)。

PS 端系统配置 Bank503

Bank503 属于 PS 端进行系统配置,同时提供时钟信号和调试接口的专用 Bank,本节内容将会分门别类对这些引脚进行介绍。

启动模式

下面表格当中的四个上电采样引脚,决定了 PS 端系统的启动来源,它们只会在 PS_POR_B 引脚由低电平跳变到高电平的上升沿时刻采样一次:

信号名 方向 功能说明
PS_MODE0 输入 启动模式选择位 0;
PS_MODE1 输入 启动模式选择位 1;
PS_MODE2 输入 启动模式选择位 2;
PS_MODE3 输入 启动模式选择位 3;

复位

信号名 方向 功能说明
PS_POR_B 输入 上电复位,该引脚必须保持低电平,直至 PS 端电源域满足电压指标,PS 端参考时钟满足系统要求;该引脚变为高电平之后,PS 端开始进入启动引导流程;
PS_SRST_B 输入 系统复位,通常用于调试场景。下拉为低电平时,就会强制 PS 端进入系统复位流程;
PS_PROG_B 输入 该引脚下拉为低电平时,会清空 PL 端的配置存储器,PL 端进入未配置状态(不会影响 PS 端);上拉为高电平之后,就会重新启动 PL 端配置流程;

状态指示

信号名 方向 功能说明
PS_INIT_B 输出 PL 端初始化完成志,可以开始收比特流,内部为开漏输出结构,必须外接上拉;
PS_DONE 输出 PS 端启动完成标志,必须外接上拉;PS 端启动流程结束之后,该引脚自动变为高电平,告知外部电路 PS 端启动完毕;
PS_ERROR_STATUS 输出 该引脚在 PS 端安全启动校验失败时,会被上拉为高电平,也可以 PMU 固件自定义输出状态;
PS_ERROR_OUT 输出 PMU 检测到不可恢复的严重硬件故障时,该引脚会被上拉为高电平,没有错误发生时保持为低电平

注意PMU 是电源管理单元(Power Management Unit)的英文缩写。

时钟

信号名 方向 Bank 功能说明
PS_REF_CLK 输入 PS 端系统主参考时钟 27MHz ~ 60MHz,通常使用 33.333MHz 或者 50MHz 的有源单端时钟;
PS_PADI 输入 32.768KHz 无源 RTC 晶振输入引脚;
PS_PADO 输出 32.768KHz 无源 RTC 晶振输出引脚;

电源

信号名 方向 Bank 功能说明
VCCO_PSIO3 电源 为 PS 端 Bank503 的所有 IO 引脚提供电源域参考,支持 1.8V2.5V3.3V,误差为 ±5%
VSS 接地 VCCO_PSIO3 对应的接地引脚;
VCC_PSBATT​ 接地 PS 侧的电池备份域电源(1.2V~1.5V),为 RTC 实时时钟和 BBRAM 电池备份 RAM 供电
VCC_PSADC 电源 PS 端系统监视器 SYSMON 的 ADC 模拟电源
GND_PSADC 接地 PS 端系统监视器 SYSMON 的 ADC 模拟地

PS 端 JTAG

信号名 方向 功能说明
PS_JTAG_TCK 输入 PS 端 JTAG 时钟
PS_JTAG_TDI 输入 PS 端 JTAG 数据输入
PS_JTAG_TDO 输出 PS 端 JTAG 数据输出
PS_JTAG_TMS 输入 PS 端 JTAG 状态机选择
PS_JTAG_TRST 输入 PS 端 JTAG 复位(低电平有效)

PL 端配置 Bank0 及专用引脚

根据赛灵思官方引脚分配相关资料的描述,Bank0 上面只存在一个 PUDC_B 引脚,也就是 配置期间上拉控制引脚(Pull‑Up During Configuration)引脚。用于在 FPGA 配置阶段,使能全部 SelectIO 引脚内部的上拉电阻

  • 低电平 0:预配置阶段,使能 SelectIO 引脚内部的弱上拉电阻;
  • 高电平 1:预配置阶段,失能 SelectIO 引脚内部的弱上拉电阻;

除此之外,UltraScale+ MPSoC 还存在如下表格中的专用(Dedicated)引脚,为了便于原理图符号按照 Bank 来分组管理,通常也会将这些引脚划分到 Bank0

引脚名称 类型 简要功能说明
POR_OVERRIDE 输入 上电复位延时设置,0 标准上电延时,1 快速上电延时;该引脚禁止悬空,必须基于 VCCINTGND 上下拉;
VCCADC 模拟电源 系统监视器模拟电源
GNDADC 模拟地 系统监视器模拟地
VREFP 专用 系统监视器外部参考电压
VREFN 专用 系统监视器外部参考电压
VP 输入 系统监视器差分模拟输入
VN 输入 系统监视器差分模拟输入
DXP 专用 FPGA 片上温度感应二极管引脚
DXN 专用 FPGA 片上温度感应二极管引脚

XCZU3TEG 引脚分配示意图

IO Bank 与高速收发器引脚分配

下面展示的是 SFVC784 封装 XCZU3TEG 在 PL 端和 PS 端的 IO Bank 引脚、高速收发器引脚以及部分专用引脚的分配示意图:

电源与多功能引脚分配

接下来展示的是 SFVC784 封装 XCZU3TEG 的电源引脚、其它专用和多功能引脚的分配示意图:

XCZU4EV 引脚分配示意图

IO Bank 与高速收发器引脚分配

下面展示的是 SFVC784 封装 XCZU4EV 在 PL 端和 PS 端的 IO Bank 引脚、高速收发器引脚以及部分专用引脚的分配示意图:

电源与多功能引脚分配

接下来展示的是 SFVC784 封装 XCZU4EV 的电源引脚、其它专用和多功能引脚的分配示意图:

XCZU7EV 引脚分配示意图

IO Bank 与高速收发器引脚分配

下面展示的是 FFVC1156 封装 XCZU7EV 在 PL 端和 PS 端的 IO Bank 引脚、高速收发器引脚以及部分专用引脚的分配示意图:

电源与多功能引脚分配

接下来展示的是 FFVC1156 封装 XCZU7EV 的电源引脚、其它专用和多功能引脚的分配示意图:

赛灵斯 Xilinx FPGA 最小系统设计指南

http://www.uinio.com/Electronics/FPGA/

作者

Hank

发布于

2026-08-06

更新于

2026-09-01

许可协议