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

目前全球 FPGA
的市场份额主要集中在赛灵思(Xilinx,2020 年被 AMD
收购)和阿尔特拉(Altera,2015 年被 Intel
收购)两家美国企业手中,余下的市场份额同样由美国的莱迪思(Lattice)和美高森美(Microsemi)两家公司占据。国产
FPGA 芯片产业起步较晚,产品性能与专利积累较为薄弱,目前主要有 深圳紫光同创、上海安路科技、广东高云半导体、上海复旦微电子、西安智多晶、深圳易灵思、北京京微齐力、成都华微电子
等研发厂商。全文基于 AMD/Xilinx 官方截止于 2026
年提供的各类数据手册整理而成,力求各项指标准确无误,如果读者发现有谬误之处,可以通过邮件和社交媒体与我联系。
FPGA 的基本结构
现场可编程门阵列(FPGA,Field Programmable Gate Array)芯片的内部基本结构主要由 可编程 IO 单元、可编程逻辑单元、嵌入式块 RAM、布线资源、内嵌专用硬核 六大功能单元构成,下面这张抛砖引玉的示意图可以协助大家直观的建立起 FPGA 的基本概念:

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

- 7 系列:采用
28nm制程工艺,包含Spartan-7、Artix-7、Kintex-7、Virtex-7四个子系列; - UltraScale 系列:采用
20nm制程工艺,包含Kintex UltraScale、Virtex UltraScale两个子系列; - UltraScale+ 系列:采用
16nm制程工艺,包含Spartan UltraScale+、Artix UltraScale+、Kintex UltraScale+、Virtex UltraScale+子系列;
注意:截止到 2026 年 8 月,UltraScale 作为过度系列已经逐步边缘化,不再推荐新项目选型。
在上述三个大系列的基础之上,面向不同的应用场景,上述 FPGA 产品线还会被进一步细分为 Spartan、Artix、Kintex、Virtex 四个子系列:

- Spartan 系列:低成本低功耗,面向消费电子和基础应用;
- Artix 系列:平衡成本与性能,适用于低功耗中等算力场景;
- Kintex 系列:高性能计算与通信,同时兼顾性价比;
- Virtex 系列:旗舰级高性能和高集成度;
AMD/Xilinx 公司也推出了同时集成有 Soc 和 FPGA 的四种自适应 Soc(Adaptive SoCs)产品线:

- Zynq 7000 SoC:采用 28nm
制程工艺,集成有单/双核
ARM Cortex-A9,拥有12.5G速率的收发器; - UltraScale+™ MPSoC:采用 16nm
制程工艺,集成有双/四核
ARM Cortex-A53、双核ARM Cortex-R5F、ARM Mali-400MP2和 H.264/H.265 视频编解码器。 - UltraScale+ RFSoC:采用 16nm 制程工艺,集成有四核
ARM Cortex-A53、双核ARM Cortex-R5F和数字RF-ADC、RF-DAC、SD-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,用于处理实时任务; - 图形处理器 GPU:
ARM Mali-400MP2用于处理显示输出任务; - 可编程逻辑
PL:
UltraScale+ FPGA,用于实现硬件加速; - 视频编解码:用于支持
H.264/H.265视频编解码;
而 UltraScale+ MPSoC 主要涵盖了 CG、EG、EV、RF 四个子系列:

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

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

UltraScale+ MPSoC 的 EV
子系列:内置视频编解码器,主要集成有
四核 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°C,I 表示工作在–40°C ~ +100°C;
处理系统 PS & 可编程逻辑 PL
AMD/Xilinx 的 Zynq 系列属于 ARM + FPGA 异构一体化 SoC 芯片产品,其 Zynq 7000 和 Zynq MPSoC 系列均由 处理系统(PS,Processing System)和 可编程逻辑(PL,Programmable Logic)两个核心部分组成:

- 处理系统(PS,Processing System):基于 ARM Cortex 架构,类似于传统的 CPU 中央处理器,可以直接运行嵌入式 Linux 操作系统;
- 可编程逻辑(PL,Programmable Logic):传统的 FPGA 可编程逻辑资源,支持硬件并行处理,可通过 Verilog 或者 VHDL 进行编程;
注意:PS 和 PL 之间的数据交互,如果是低速数据可以采用 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 的应用范围与使用灵活性。
串行解串器 SerDes
FPGA 内置的串行解串器(SerDes,Serializer/Deserializer)用于进行串行数据与并行数据的相互转换:
- 当 FPGA 作为接收端的时候,用于将串行数据,转换为 FPGA 内部能够处理的并行数据。
- 当 FPGA 作为发送端的时候,用于将 FPGA 内部的并行数据,转换为便于传输的串行数据。
注意:现代 FPGA 通常集成了专用的 SerDes 外设,例如 AMD/Xilinx 的
GTX/GTH/GTY收发器,以及 Intel/Altera 的Transceiver收发器。
PS 侧的 MIO/EMIO
UltraScale+ MPSoC 在 PS 侧提供了多路复用(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(HP,High Performance) | 适用于高速场景(1.0V ~ 1.8V); |
单端速率最大 1.6 Gb/s,LVDS 差分速率最大
1.8 Gb/s,DDR4 接口速率 2.667 Gb/s; |
| 宽范围 Bank(HR,High Range) | 适用于宽电压范围场景(1.2V ~ 3.3V); |
单端速率最大 800 Mb/s,LVDS 差分速率最大
1.25 Gb/s,不支持 DDR; |
| 高密度 Bank(HD,High Density) | 单位晶圆面积提供更多 IO
引脚,适用于低速率场景(1.2V ~ 3.3V); |
单端速率最大 250 Mb/s,不支持 LVDS 和
DDR; |
- UltraScale+ MPSoC 的 HP Bank:拥有 52 个标准 SelectIO 引脚(24 个差分对);
- UltraScale+ MPSoC 的 HD Bank:拥有 24 个标准 SelectIO 引脚(12 个差分对);
注意:Zynq 7000 系列没有
HD Bank,UltraScale+ MPSoC 系列没有HR Bank,不带 + 号的 UltraScale MPSoC 系列才拥有HR Bank。
串行解串器 SerDes
FPGA 内置的串行解串器(SerDes,Serializer/Deserializer)用于进行串行数据与并行数据的相互转换:
- 当 FPGA 作为接收端的时候,用于将串行数据,转换为 FPGA 内部能够处理的并行数据。
- 当 FPGA 作为发送端的时候,用于将 FPGA 内部的并行数据,转换为便于传输的串行数据。
注意:现代 FPGA 通常集成了专用的 SerDes 外设,例如 AMD/Xilinx 的
GTx收发器,以及 Intel/Altera 的Transceiver收发器。
吉比特收发器 GTx
AMD/Xilinx 在 FPGA 芯片 PL 端集成的
SerDes
外设被称作吉比特收发器(GT,Gigabyte
Transceiver),基于不同的数据传输速率及其所具备的高级特性,规格书当中会分别以
GTx 格式进行命名,例如
GTP、GTX、GTH、GTZ、GTY。对应于
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。
注意:许多数据手册和参考原理图当中出现的多吉比特收发器(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 区域的温度,以及 PL 和 PS 端的多个电压节点,也可以基于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 内存控制器
PS 端的 DDR
UltraScale+ MPSoC 系列在 PS 端内置了 DDR
控制器和物理层的硬核实现,可以对
DDR3、DDR3L、LPDDR3、DDR4、LPDDR4
提供支持;PS 端的 DDR 引脚位于 Bank504(PS 端 DDR
控制器专属的 MIO Bank),能够连接
16 bit、32 bit、64 bit 位宽的 DDR
颗粒(所有 DDR 颗粒必须使用相同的位宽),DDR
引脚互换遵循如下三条核心原则:
- DDR4 的
地址、命令、控制信号引脚严禁交换,必须一对一进行连接; - 数据通道(Byte Lane)可以整组互换(即每 8
位数据
DQ信号,及其对应的数据选通DQS_P/N、数据掩码DM信号为一个组),不同的组之间可以整组互相调换; - 相同 数据通道 内部的数据
DQ信号可以任意调换位置;
PL 端的 DDR
赛灵斯在 Vivado 当中提供了一个 IP 软核
内存接口生成器(MIG,Memory Interface
Generator)来提供对于 DDR 的控制器和物理层支持(基于 HP
Bank 引脚),UltraScale+ MPSoC 系列的 MIG
同样对
DDR3、DDR3L、LPDDR3、DDR4、LPDDR4
提供了支持。
输入输出组 IO Bank
输入输出组 IO Bank 是 FPGA
内部对引脚资源进行分组管理的单元区块,相同 Bank 上的全部 IO
引脚都共享同一个电源域(可以将 Bank
翻译为中文的组),下面以 UltraScale+
MPSoC 系列采用 SFVC784 封装的
XCZU4EV 引脚定义示意图来进行讨论:
XCZU4EV 的 PL 逻辑侧 IO 被划分为
Bank43、Bank44、Bank45、Bank46、Bank64、Bank65、Bank66、Bank224
八个组:
- 高性能 HP
Bank:
Bank43、Bank44、Bank45、Bank46(支持DDR4、LVDS、LVCMOS等高速接口), - 高密度 HD
Bank:
Bank64、Bank65、Bank66(通用低速外设接口); - 吉比特收发器 GT Bank:
Bank224(高速 SerDes 接口);
XCZU4EV 的 PS 系统侧的 96 个
MIO 引脚则被划分为了
Bank500、Bank501、Bank502、Bank503、Bank504、Bank505
六个组:
| 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/O、PLL、高速收发器、VCU、ADC
等子电源域:
- PS 全功耗域(LPD,Low Power Domain);
- PS 低功耗域(FPD,Full Power Domain);
- PL 电源域(PLPD,PL Power Domain);
- 电池电源域(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 引脚(用于实现
I2C、SPI、UART、CAN等低速协议); - 全功耗域(FPD,Full Power
Domain):Cortex-A53 应用处理器、Mali-400 GPU、PS 端
DDR 内存控制器、PS 端 GTR 收发器(高速 SerDes 通道,无需占用 PL
资源即可实现
USB3.0、PCIe Gen2、SATA、SGMII等高速接口协议);
低功耗域 LPD 推荐使用如下列表的上电顺序(下电顺序相反):
- 首先 \(V_{CC\_PSINTLP}\) 开始上电;
- 然后 \(V_{CC\_PSAUX}\)、\(V_{CC\_PSADC}\) 和 \(V_{CC\_PSPLL}\) 三者可以任意顺序或者同时上电;
全功耗域 FPD 推荐使用如下列表的上电顺序(下电顺序相反):
- \(V_{CC\_PSINTFP}\) 与 \(V_{CC\_PSINTFP\_DDR}\) 必须使用相同的电源进行供电;
- \(V_{PS\_MGTRAVCC}\) 与 \(V_{CC\_PSDDR\_PLL}\) 两者可以任意顺序或者同时上电;
- \(V_{PS\_MGTRAVTT}\) 与 \(V_{CCO\_PSDDR}\):两者可以任意顺序或者同时上电;
注意:低功耗域 LPD 必须首先就绪,然后全功耗域 FPD 再行上电。除此之外,PS 端的复位信号
PS_POR_B在上电期间必须保持低电平GND,上电完成之后才能释放;
PL 端上电时序
同样为了 PL 侧引脚处于高阻态,避免 IO 引脚由于上电时序错误,产生较大瞬态电流出现功耗异常,官方推荐 PL 端的上电顺序如下面列表所示(下电顺序相反):
- 首先 \(V_{CCINT}\) 开始上电;
- 然后 \(V_{CCINT\_IO}\)、\(V_{CCBRAM}\)、\(V_{CCINT\_VCU}\) 进行上电;
- 最后 \(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 系列的 GTH 或 GTY 收发器实现最小电流汲取(即上电时序错误产生较大瞬态电流导致的功耗异常),官方推荐了如下两种上电顺序(下电顺序分别相反):
- \(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)型号为 MT25QU256ABA1EW9
的 256Mb 容量 Flash 存储器,其内部存储位宽为 8 位(存储阵列
32M × 8bit = 256Mb = 32MB),采用 1.8V
电压进行供电,并且连接到 XCZU4EV 在 PS 端
Bank500 的 MIO 引脚上面,使用时需要将这些
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-4M
的 8GB 容量 eMMC 存储器。

注意:这颗 eMMC 存储器被连接到 PS 端
Bank500的 MIO 引脚,数据位宽为 8 位,使用时需要将这些引脚配置为 eMMC 接口功能。
该存储器兼容 联合电子器件工程委员会(JEDEC,Joint
Electron Device Engineering Council)提出的 e.MMC v5.0(即
JESD84-B50)存储接口标准,支持
DDR52、HS200、HS400
三种总线速度模式:

- DDR52
模式:双倍数据速率(DDR,Double Data
Rate)采样,即在时钟信号上升沿和下降沿各传输一次数据,时钟频率最高可达
52MHz,最大数据传输速率为52MHz × 2 倍 = 104MB/s; - HS200
模式:单倍数据速率(SDR,Souble Data
Rate)采样方式,通过大幅提高时钟频率至
200MHz来提升传输效率,并采用调优(Tuning)机制进行动态时序校准,最大数据传输速率为200MHz × 1 倍 = 400MB/s; - 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}\) 两个电源域来进行设计和考量:

- NAND Flash 存储阵列电源 \(V_{CC}\):标准电压范围为
2.7V ~ 3.6V,通常设定为3.3V; - eMMC 控制器电源 \(V_{CCQ}\):可以选用
1.7V ~ 1.95V和2.7V ~ 3.6V两种电源范围,通常设定为1.8V或者3.3V,该电源决定了 eMMC 存储器的数据线DAT[7:0]、命令线CMD、时钟线CLK的逻辑电平;
时钟树
该 XCZU4EV 核心板分别为
PS(处理系统)和
PL(可编程逻辑)部分提供了独立的系统参考时钟,使得两者可以单独工作。除此之外,为了便于获取以
1 秒为单位的自然计时(计时器从 0 累计到 32767
可以产生 1
秒脉冲信号),还加入了实时时钟(RTC,Real
Time Clock):

32.768KHz无源晶振可以为 PS 侧提供实时时钟,该时钟信号连接到 PS 侧Bank503的PS_PADI_503和PS_PADO_503引脚;33.333MHz单端有源晶振为 PS 侧提供系统时钟,该时钟信号连接到 PS 侧Bank503的PS_REF_CLK_503引脚;200MHz有源差分时钟为 PL 侧提供系统时钟(作为内部逻辑电路和 DDR4 控制器的参考时钟),该时钟信号连接到 PL 侧Bank64的多区域时钟引脚(MRCC,Multi‑Region Clock‑Capable),作为全局时钟使用;
UltraScale+ MPSoC 引脚定义
用户 I/O 引脚
UltraScale+ MPSoC 系列芯片的每个用户 I/O 引脚名称,都是由如下的标识格式组成:
1 | IO_L[1 to 24][P or N]_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]:代表该引脚所属字节组,而U和L分别代表在该字节组内的半字节位置(上半字节Upper,下半字节Lower)。N[0‑12]:该引脚在其所属字节组内部的引脚编号;[multi‑function]:可复用为其它硬件功能的多功能引脚,不使用复用功能时可以作为普通用户 I/O 引脚使用;[bank number]:该用户 I/O 引脚所属的 Bank 编号;
注意:UltraScale+ MPSoC 标准 52 引脚的 HD、HP、HR Bank 都固定包含有
T0、T1、T2、T3四个字节组(Byte Group),每个字节组内部则拥有N0、N1、N2 … N12共 13 个局部编号引脚。除此之外,26 引脚的 HR Bank 只拥有T0和T1两个字节组,每个字节组同样拥有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
端的锁相环电源(DPLL、RPLL、APLL、VPLL、IOPLL); |
| \(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,可以被配置为
SPI、USB、SDIO、UART、SPI、GPIO
等接口; |
| \(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 编号]}\) | 专用 | 输入 | RXP 和 RXN 为
GTH Quad 各个接收器的差分输入对; |
| \(MGTH_{TX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) | 专用 | 输出 | TXP 和 TXN 为
GTH Quad 各个发送器的差分输出对; |
| \(MGTY_{RX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) | 专用 | 输入 | RXP 和 RXN 为
GTY Quad 各个接收器的差分输入对; |
| \(MGTY_{TX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) | 专用 | 输出 | TXP 和 TXN 为
GTY Quad 各个发送器的差分输出对; |
| \(PS_{MGTR\_RX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) | 专用 | 输入 | RXP 和 RXN 为
PS-GTR Quad
各个接收器的差分输入对; |
| \(PS_{MGTR\_TX[P 或 N][0 \sim 3]\_[GT Quad 编号]}\) | 专用 | 输出 | TXP 和 TXN 为
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 表示的是 四个通道划分为一组,该单词出现在高速收发器后面的时候,表示的是一个高速收发器内部固定包含有
Channel0、Channel1、Channel2、Channel3四条通道(Lane)。
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 最小系统设计指南




