简介:这份资源是Xilinx Zynq-7020芯片开发板的完整原理图PDF,面向嵌入式硬件工程师、FPGA开发者及高校电子相关专业学生,用于参考Zynq-7000系列开发板的电路设计与接口布局。压缩包内仅含1个PDF文件,约417KB,以原理图页形式呈现,涵盖电源、接口与芯片供电等模块。原理图按功能划分为POWER、ZYNQ7010_POWER、接口等部分:电源部分包含POWER_INPUT及1V0、1V5、3V3、1V8等多路电压输出与参考电压设计;ZYNQ7010_POWER部分涉及芯片电源、配置电源及PL供电;接口部分则覆盖USB TO UART、USB OTG、HDMI、EEPROM与QSPI Flash、SD卡、LED、WIFI与蓝牙等常用外设。目前已有3667人学习下载,适合需要快速理解Zynq-7020开发板整体架构、供电方案与接口连接方式的读者作为设计参考。
1. 从一块“点不亮”的板子说起:为什么Zynq-7020的硬件设计要先啃原理图
很多做嵌入式开发的人拿到Zynq-7020开发板的第一反应是直接跑例程,结果发现DDR3初始化失败、HDMI没有输出、USB OTG识别不到设备,折腾几天后才发现问题出在硬件层面——某个电源轨的上电时序不对,或者PS端的MIO引脚分配和原理图对不上。这类问题的根源往往不在代码,而在于没有吃透开发板的原理图设计。Zynq-7020作为Xilinx Zynq-7000系列中性价比很高的SoC,集成了双核ARM Cortex-A9处理器和FPGA可编程逻辑,硬件设计涉及多路电源管理、DDR3高速接口、多种外设复用,任何一处设计疏漏都会导致系统不稳定。这份原理图方案覆盖了从电源树到PS/PL外设接口的完整设计,适合正在做嵌入式课设、毕设,或者需要基于Zynq平台做硬件方案交付的工程师参考。
2. 电源树设计:五路核心电压与上电时序的工程取舍
2.1 电源架构的整体划分
Zynq-7020的电源设计不是简单地“给几个电压就行”,它需要同时满足PS端和PL端不同模块的供电需求。从原理图的电源部分来看,整个电源树分为三个层级:输入级、中间变换级和负载点稳压级。
输入级采用DC_JACK接口接收5V直流输入,经过TVS管(SMAJ5.0CA)做浪涌保护,再通过自锁开关控制整板通断。中间变换级使用MP2143DJ同步降压转换器,这是一颗输入电压2.5V到5.5V、输出电流3A的芯片,开关频率1.2MHz,在Zynq开发板上属于比较经典的选型。原理图中一共用了五颗MP2143DJ,分别产生1.0V、1.5V、1.8V、3.3V和VIO可调电压。
每一路输出的反馈网络决定了最终电压值。以1.0V为例,反馈电阻R103=4.7K、R104=6.8K,代入公式 Vout = 0.6V × (1 + R103/R104) ≈ 1.0V。这里的0.6V是MP2143DJ的内部基准电压。其他几路的电阻取值逻辑相同,只是分压比不同。
注意:反馈电阻的精度直接影响输出电压误差,建议用1%精度的电阻,否则DDR3的1.5V供电偏差超过3%就可能导致初始化失败。
2.2 上电时序与PG信号链
Zynq-7020对上电时序有明确要求:VCCINT(1.0V)必须先于VCCAUX(1.8V)和VCCO(3.3V等)建立,否则芯片内部可能出现闩锁效应。原理图中通过PG(Power Good)信号实现了级联控制。
具体做法是:第一颗MP2143DJ产生1.0V后,其PG引脚输出高电平,连接到第二颗芯片的EN引脚,第二颗才开始工作产生1.8V。以此类推,形成1.0V → 1.8V → 1.5V → 3.3V → VIO的启动顺序。原理图中可以看到PG_1V0、PG_1V8、PG_1V5、PG_3V3这些网络标号,它们就是时序链的关键节点。
# 上电时序验证时,用示波器四通道同时抓取各路电压 # 通道1: VDD_1V0 (测试点TP_R附近) # 通道2: VDD_1V8 (C240电容正端) # 通道3: VDD_1V5 (C237电容正端) # 通道4: PG_1V0信号 (R901上拉电阻端) # 触发条件:通道1上升沿触发,时间基准设为10ms/div这段操作说明的是实际调试时怎么验证时序。如果你手头没有四通道示波器,至少要用两通道分别看1.0V和1.8V的上升沿,确认1.0V达到0.9V以上之后1.8V才开始爬升。我一般会在PCB上预留这些测试点,不然调试时探针没地方戳,那才叫一个尴尬。
2.3 DDR3参考电压与VTT端接电源
DDR3内存需要两个特殊电源:VREF(参考电压)和VTT(端接电压)。原理图中使用TPS51200DRCR这颗专用DDR终端稳压器来产生VTT_DDR3,它同时输出REFOUT作为VREF_DDR3。
TPS51200的VIN接3.3V,VLDOIN接1.5V,REFOUT输出等于VLDOIN的一半即0.75V,正好是DDR3的参考电压。VTT输出则跟随REFOUT,能吸收和灌入电流,用于DDR3数据线的端接匹配。原理图中R200和R202都是80.6Ω的精密电阻,用于VTT和VREF的分压校准。
这里有个容易翻车的地方:VREF的旁路电容不能省。原理图中C108、C112都是0.1uF,紧靠TPS51200的REFOUT引脚放置。如果省掉或者走线太长,DDR3读写会出现随机误码,而且这种问题用逻辑分析仪抓波形都很难定位,属于典型的“玄学”故障。
3. Zynq PS端核心设计:MIO分配、DDR3接口与启动配置
3.1 PS端MIO引脚的功能映射
Zynq-7020的PS端有54个MIO引脚,它们可以灵活分配给不同外设。原理图中MIO0到MIO53的分配如下:
| MIO分组 | 引脚范围 | 功能分配 | 电压域 |
|---|---|---|---|
| MIO0-15 | Bank0 | QSPI Flash、SD卡、UART | 1.8V/3.3V |
| MIO16-27 | Bank1 | 以太网PHY、USB OTG | 1.8V |
| MIO28-39 | Bank1 | 以太网PHY、USB OTG | 1.8V |
| MIO40-53 | Bank1 | WiFi SDIO、蓝牙UART | 1.8V |
从原理图可以看到,QSPI_CLK、QSPI_DQ0-DQ3、QSPI_CS连接在MIO1-MIO6上,这是Zynq启动模式中QSPI Flash的标准引脚分配。SD卡接口使用MIO40-MIO45,支持SD 3.0模式。以太网PHY通过MIO16-MIO27连接,使用RGMII接口。
提示:MIO Bank0的VCCO_MIO0_500接3.3V,Bank1的VCCO_MIO1_501接1.8V。这个电压选择不是随便定的——QSPI Flash和SD卡通常需要3.3V电平,而以太网PHY和USB PHY一般用1.8V。如果接反了,要么外设不工作,要么直接烧芯片。
3.2 DDR3接口的布线约束与端接
PS端的DDR3接口是整块板子最“娇气”的部分。原理图中PS_DDR3的数据线DQ0-DQ31、地址线A0-A14、控制线(nRAS、nCAS、nWE、nCS、CKE、ODT)都连接到了XC7Z010/20的Bank502。
DDR3的时钟线PS_DDR3_CLK_P/N是差分对,原理图中标注了100Ω的差分阻抗要求。数据线分为四组,每组8位,对应DQS0-DQS3四对差分选通信号。地址线和控制线走的是Fly-by拓扑,需要端接电阻到VTT。
-- DDR3引脚约束示例(用于Vivado的XDC文件) -- 数据线分组约束 set_property PACKAGE_PIN C3 [get_ports PS_DDR3_DQ0] set_property IOSTANDARD SSTL15 [get_ports PS_DDR3_DQ0] set_property PACKAGE_PIN C2 [get_ports PS_DDR3_DQS_P0] set_property IOSTANDARD DIFF_SSTL15 [get_ports PS_DDR3_DQS_P0] -- 地址线约束 set_property PACKAGE_PIN A3 [get_ports PS_DDR3_A0] set_property IOSTANDARD SSTL15 [get_ports PS_DDR3_A0] -- 时钟差分对约束 set_property PACKAGE_PIN H6 [get_ports PS_DDR3_CLK_P] set_property IOSTANDARD DIFF_SSTL15 [get_ports PS_DDR3_CLK_P]这段约束代码的关键在于IOSTANDARD必须设为SSTL15,因为DDR3的IO电平是1.5V。如果误设为LVCMOS15,信号摆幅和终端匹配都会出问题。另外,DQS差分对的PACKAGE_PIN必须严格按照原理图的引脚号填写,写错一个引脚,DDR3校准就过不了。
3.3 启动模式与QSPI Flash配置
Zynq-7020支持多种启动模式:QSPI Flash、SD卡、JTAG、NAND。原理图中通过MIO5和MIO4的上下拉电阻来设置启动模式。BOOT_OPTION部分的电阻R191、R184、R194、R192、R193、R185、R196、R187、R197、R183、R195构成了启动模式选择网络。
具体来说,MIO5和MIO4在上电复位时的电平组合决定启动源。原理图中默认配置为QSPI Flash启动,对应MIO5=0、MIO4=0。如果要改成SD卡启动,需要把MIO4的上拉电阻改成下拉。
QSPI Flash使用的是MIO1-MIO6,支持Quad-SPI模式。原理图中QSPI_DQ0-DQ3分别对应MIO1-MIO4,QSPI_CLK对应MIO6,QSPI_CS对应MIO5。Flash的供电是VDD_3V3,但MIO Bank0的VCCO也是3.3V,所以电平匹配没有问题。
4. PL端与外设接口:HDMI、USB OTG、以太网与扩展连接器
4.1 HDMI输出接口的TMDS信号设计
HDMI接口在Zynq开发板上通常由PL端实现TMDS编码输出。原理图中HDMI_INTERFACE部分包含HDMI_CLK_P/N、HDMI_DATA0_P/N到HDMI_DATA2_P/N三对数据差分线,以及HDMI_HPD、HDMI_CEC、HDMI_OUT_EN控制信号。
TMDS差分对的阻抗要求是100Ω,原理图中标注了HDMI_DATA0_P/N等网络。HDMI_OUT_EN用于控制HDMI输出缓冲器的使能,HDMI_HPD是热插拔检测信号,HDMI_CEC是消费电子控制通道。
# HDMI TMDS编码的Python简化模型(用于理解原理) # 实际实现通常在FPGA的Verilog/VHDL中完成 def tmds_encode(data_byte, ctrl_bits): """ data_byte: 8位像素数据 ctrl_bits: 2位控制信号 返回10位TMDS编码结果 """ # 第一步:计算1的个数 ones = bin(data_byte).count('1') # 第二步:选择编码方式(XOR或XNOR) if ones > 4 or (ones == 4 and data_byte & 1 == 0): # 使用XNOR编码 encoded = data_byte ^ (data_byte >> 1) disparity = 2 * ones - 8 else: # 使用XOR编码 encoded = data_byte ^ (data_byte >> 1) disparity = 8 - 2 * ones # 第三步:添加DC平衡位 # ...(省略具体位操作) return encoded这段代码展示的是HDMI TMDS编码的核心逻辑。虽然实际项目中不会用Python跑HDMI,但理解这个编码过程有助于调试时判断问题出在FPGA逻辑还是硬件电路。如果HDMI没有输出,先确认HDMI_OUT_EN是否拉高,再用示波器看TMDS差分对上有没有信号——没有信号就是FPGA逻辑问题,有信号但显示器不亮就是阻抗匹配或电平问题。
4.2 USB OTG与USB转串口
原理图中USB OTG部分使用USB3320C作为PHY芯片,通过ULPI接口与Zynq的MIO连接。USBPHY_DATA0-DATA7是8位ULPI数据总线,USBPHY_CLKOUT是PHY输出的60MHz时钟,USBPHY_DIR、USBPHY_NXT、USBPHY_STP是ULPI控制信号。
USB转串口部分使用CP2102或类似芯片,将USB信号转换为UART,连接到Zynq的MIO48/MIO49(FPGA_UART_TX/RX)。这部分电路比较简单,但要注意USB差分对的90Ω阻抗匹配。
注意:USB OTG的ID引脚决定了设备是Host还是Device模式。原理图中ID引脚通过电阻上拉或下拉来设置默认模式。如果要做OTG动态切换,ID引脚需要连接到Zynq的GPIO,由软件控制。
4.3 以太网PHY与扩展连接器
以太网PHY使用RTL8211E或类似芯片,通过RGMII接口连接Zynq的MIO16-MIO27。原理图中PHY_TXD0-TXD3、PHY_RXD0-RXD3是数据线,PHY_TX_CLK、PHY_RX_CLK是时钟,PHY_MDIO、PHY_MDC是管理接口。
扩展连接器部分包含了两组40pin的GPIO扩展口,标注为A_DATA和B_DATA。这些连接器引出了PL端的Bank13和Bank34/35的IO引脚,电压域是VDD_3V3。扩展口的引脚分配需要参考原理图中的FPGA_GPIO网络标号,比如FPGA_GPIO_0_34对应Bank34的第0号IO。
5. 避坑与排查:Zynq-7020硬件设计中最容易翻车的五个点
5.1 DDR3初始化失败——现象、原因与解决
现象:Vivado的DDR3校准卡在“Waiting for DDR calibration”或者报“DDR calibration failed”。
原因:最常见的是VREF电压不对。TPS51200的REFOUT如果没有正确连接到DDR3的VREF引脚,或者旁路电容失效,VREF就会偏离0.75V。其次是DQS差分对的P/N接反了,原理图上PS_DDR3_DQS_P0和DQS_N0如果PCB布线时交换了,校准算法无法收敛。
解决:先用万用表量VREF测试点,确认在0.74V-0.76V之间。如果电压不对,检查TPS51200的焊接和外围电阻。如果电压正常,用示波器看DQS差分对的极性,P端应该先于N端跳变。实在找不到问题,降低DDR3时钟频率到400MHz试试,如果低频能过高频不过,基本就是信号完整性问题。
5.2 电源时序错乱导致芯片发热
现象:上电后Zynq芯片迅速发烫,电流远超正常值。
原因:上电时序不对,1.8V先于1.0V建立。Zynq内部有寄生二极管,当1.8V先上电时,电流会通过寄生二极管灌入1.0V电源轨,导致闩锁效应。
解决:检查PG信号的连接。用示波器同时抓1.0V和1.8V的上升沿,确认1.0V先到0.9V以上。如果时序不对,调整PG信号的上拉电阻和电容值,增加1.0V的PG到1.8V的EN之间的RC延迟。
5.3 QSPI Flash无法启动
现象:板子设置为QSPI启动模式,但上电后没有任何输出,JTAG也连不上。
原因:MIO5和MIO4的上下拉电阻配置错误。原理图中默认是QSPI启动,但如果焊接时把上拉电阻焊成了下拉,启动模式就变成了JTAG或SD卡。
解决:量MIO5和MIO4在上电复位时的电平。QSPI启动应该是MIO5=0、MIO4=0。如果不对,检查R191、R184等电阻的焊接。另外,QSPI Flash本身需要先烧录BOOT.bin,空片是启动不了的。
5.4 HDMI输出花屏或黑屏
现象:HDMI显示器能识别到信号,但画面花屏或者全黑。
原因:TMDS差分对的阻抗不匹配,或者HDMI_OUT_EN没有拉高。另一个常见原因是HDMI的DDC通道(I2C)没有正确连接,显示器读不到EDID信息。
解决:先用示波器看TMDS差分对上的信号幅度,正常应该在400mV-600mV之间。如果幅度不对,检查端接电阻。如果信号正常但花屏,检查FPGA内部的TMDS编码逻辑,特别是DC平衡位的计算。DDC通道的问题用I2C扫描工具确认能否读到显示器的EDID。
5.5 USB OTG识别不到设备
现象:插入USB设备后没有任何反应,或者设备管理器里出现未知设备。
原因:ULPI接口的时钟USBPHY_CLKOUT没有输出,或者USB PHY的复位信号没有释放。原理图中USBPHY_nRSET是低电平复位,如果这个信号一直被拉低,PHY就不工作。
解决:先量USBPHY_CLKOUT有没有60MHz时钟。如果没有,检查PHY的供电和复位信号。如果有时钟但设备识别不到,检查ULPI数据线的焊接,特别是DATA0-DATA7有没有虚焊。另外,USB OTG的ID引脚电平决定了Host/Device模式,如果ID悬空,模式不确定,也会导致识别失败。
6. 验收与答辩:怎么证明你的Zynq硬件方案是可靠的
验收Zynq-7020开发板设计,不是“能跑个流水灯”就算过了。我一般会按下面这个清单逐项过一遍,每一项都有明确的通过标准。
| 验收项 | 测试方法 | 通过标准 |
|---|---|---|
| 电源时序 | 示波器四通道抓取 | 1.0V→1.8V→1.5V→3.3V顺序,间隔不超过50ms |
| 电源纹波 | 示波器AC耦合,20MHz带宽限制 | 每路电压纹波<50mV |
| DDR3校准 | Vivado硬件管理器 | 校准通过,读写测试无错误 |
| QSPI启动 | 烧录BOOT.bin后重新上电 | 串口有启动日志输出 |
| HDMI输出 | 连接1080p显示器 | 画面稳定,无花屏无闪烁 |
| USB OTG | 插入U盘 | 系统识别到存储设备 |
| 以太网 | 连接路由器,ping测试 | 丢包率<1% |
| 扩展GPIO | 用万用表量电平 | 可正常拉高拉低 |
答辩时,评委最常问的问题是“你怎么证明DDR3的时序是满足要求的”。这时候不要只口头说“我跑了校准”,要把Vivado的DDR3校准报告打开,指着眼图扫描结果说:“数据窗口的左右边界分别是多少ps,中心点偏移在允许范围内。”这比任何口头解释都有说服力。
另一个高频问题是“电源方案为什么选MP2143DJ而不是其他芯片”。回答时要落到具体参数:输入电压范围2.5V-5.5V覆盖了5V输入,3A输出电流满足Zynq峰值功耗,1.2MHz开关频率允许使用小尺寸电感,而且芯片自带PG信号方便做时序控制。这些理由都是从原理图的器件选型里直接读出来的,评委一听就知道你是真看过图纸的。
从那以后我每次做硬件方案验收,都强制自己走一遍“上电时序→电源纹波→时钟→复位→启动→外设”这个流程,一步都不能跳。因为Zynq这种SoC,硬件问题往往在软件层面才暴露出来,等到了写代码的时候才发现是硬件坑,那返工成本就太大了。希望这份原理图方案和验收思路能帮到你,少走一些我当年踩过的弯路。
本文还有配套的精品资源,点击获取