第五章 硬件资源详解

上一章我们从"板子上有什么"的角度认识了开发板,本章更进一步,从原理图层面讲清楚这些资源是怎么设计的、IO 怎么分配的。读懂本章,你就能知道某个功能需要分配哪些引脚、写驱动时该注意什么。

本章在讲什么

本章内容分五部分:

  1. 领航者ZYNQ 的IO 分配——PL 端和PS 端的IO 组织方式与引脚分配表;
  2. 底板原理图详解——电源、启动模式、LED、按键、各类通信接口的电路设计;
  3. 核心板原理图详解——核心板电源、ZYNQ 芯片、DDR3、QSPI Flash、eMMC 等;
  4. 使用注意事项——供电、跳帽操作、静电防护等实用提醒;
  5. ZYNQ 的学习方法——从方法论的层面给你一条清晰的学习路径。

核心概念拆解

1. IO 分配:PL 与PS 两套规则

XC7Z020 有6 个用户IO BANK(比XC7Z010 多一个BANK13)和最大253 个用户IO。ZYNQ 的IO 分成PL 和PS 两部分,两者的IO 分配规则完全不同

PL 端IO 分配——像传统FPGA 一样自由

XC7Z020 的PL 端IO 分为3 组(BANK13、BANK34、BANK35),同一BANK 内所有IO 电平相同,不同BANK 电平可以不同。领航者开发板上这3 个BANK 的供电均为3.3V,即PL 端所有IO 电平均为3.3V。

注意:BANK13 的IO 仅XC7Z020 可用,对XC7Z010 来说是空脚(NC)。

图5.1.1 PL 端的BANK13

图5.1.2 PL 端的BANK34

一个特殊引脚需要注意:B34_L3_P 是PUDC_B 管脚,Xilinx 官方手册要求它必须通过1KΩ 或更小的电阻接到VCCO_34 或GND,且芯片配置完成前电平要保持稳定。

图5.1.3 Xilinx 官方手册PUDC_B 管脚说明

图5.1.4 PL 端的BANK35

开发板PL 端常用外设的引脚分配(节选):

信号 方向 管脚 说明
sys_clk input U18 系统时钟50MHz
sys_rst_n input N16 PL 复位,低电平有效
key[0]/key[1] input L14/K16 PL 按键KEY0/KEY1
led[0]/led[1] output H15/L15 底板PL_LED0/1
led output J16 核心板PL_LED
beep output M14 蜂鸣器
uart_rxd/uart_txd in/out K14/M15 RS232/RS485 串口
iic_scl/iic_sda out/inout E18/F17 IIC 总线(EEPROM/RTC/音频配置)
lcd_rgb[23:0] output RGB LCD 24 位数据
cam_data[7:0] input 摄像头8 位数据

完整分配表见原书,资料盘A 盘→3_开发板原理图文件夹下还提供Excel 格式的管脚分配表格(分"PL IO 引脚列表"和"PS IO 引脚列表"两个工作表)。

PS 端IO 分配——映射固定,不能随意改

PS 端也有3 个IO BANK(BANK500、BANK501、BANK502),分别采用3.3V、1.8V、1.35V 供电。与PL 端最大的不同:PS 端外设的IO 与MIO(多路复用IO)之间具有固定关系的映射,用户不能像PL 那样把IO 随意分配给某个外设。某个外设可能映射到不同MIO,某个MIO 也可能有多个外设映射。

图5.1.8 PS 端外设和MIO 之间的映射

PS 端常用外设的MIO 映射(节选):

信号 MIO 说明
ps_led(核心板) MIO0 PS_LED
QSPI_CS#/SCK/D0~D3 MIO1/6/2/3/4/5 QSPI FLASH
ps_key[0]/[1] MIO12/11 PS 按键
PS_UART_RXD/TXD MIO14/15 PS 串口
ETH_TX/RX MIO16~27, 52/53 PS 以太网RGMII
SD_CLK/CMD/D0~D3/CD MIO40~45, 10 SD 卡
eMMC_* MIO46~51 eMMC

2. 底板原理图要点

电源系统:12V 适配器→DC-DC(RY9125)→+5V→电源开关→系统供电;再由LDO 芯片AMS1117-3.3 和AMS1117-1.8 产生+3.3V 和+1.8V。USB 串口的+5V 也可供电,但驱动能力有限(500mA),不能带LCD 等大功耗外设。

图5.2.1 底板电源拓扑

图5.2.4 电压转换电路的原理图

电源输入口有防反接二极管D4,极性接反也不会烧板。3.3V 产生后电源指示灯PWR 点亮,可通过它判断供电是否正常。板载5V/3.3V 电源输入输出排针,最大1000mA,调试小电路板很方便。

BOOT 启动模式:ZYNQ 支持4 种启动模式——JTAG、NAND、QSPI FLASH、SD Card,由底板两个拨码开关(连接MIO4/MIO5,与QSPI_D2/D3 复用)设置:

拨码开关1 拨码开关2 启动模式
ON ON JTAG
OFF ON NAND(本板无NAND,不可用)
ON OFF QSPI FLASH
OFF OFF SD Card

图5.2.6 BOOT 模式选择开关的原理图

有源蜂鸣器:注意"有源"的"源"指震荡源而非电源——有源蜂鸣器内部自带震荡源,通电就响;无源蜂鸣器需要2K~5K 方波驱动。电路通过NPN 三极管S8050 驱动:BEEP(PL IO)输出高电平→三极管导通→蜂鸣器负极接地形成通路→鸣叫。

图5.2.8 有源蜂鸣器的原理图

LED 灯:底板4 个LED(PL/PS 各2 个),IO 输出高电平"1"点亮,低电平"0"熄灭:

图5.2.10 LED 灯的原理图

用户按键:PL 复位按键(按下低电平复位)、2 个PL 按键、2 个PS 按键,全部外接上拉电阻——未按下输出高电平,按下输出低电平:

图5.2.12 复位/按键接口的原理图

电容触摸按键:采用AR101(兼容JL223B)专用驱动芯片,内部有1K 电容充电电阻,产生稳定无毛刺信号。触摸时TPAD 变高电平,未触摸为低电平。

JTAG 接口:14-Pin 标准调试口,与核心板6-PIN JTAG 硬件连通,由TMS、TDI、TDO、TCK、3.3V 电源和GND 组成,用于下载程序和在线调试。

USB 串口(CH340C):国产芯片,用于PS 程序调试日志显示。通过P5 排针+跳线帽选择CH340 连接PS 端还是PL 端IO。两个细节设计:单独的3.3V(XC6206)给CH340 供电,保证开发板断电后电脑仍能识别串口COM 号;74LVC1G125 芯片防止断电后CH340 引脚电压反灌给FPGA。

RS232/RS485(复用IO):电脑串口用RS-232 负逻辑电平(-15V~-5V 为"1",+5V~+15V 为"0"),与FPGA 的3.3V 数字电平不同,需要SP3232 收发器转换。RS485 电平与LVDS 类似(两线压差±2~6V),需SP3485 芯片转换,且属半双工通信,用RS485_DE 信号控制收发方向——巧妙的是DE 信号没占用ZYNQ 引脚,而是由三极管构成的自动方向选择电路根据RS485_RX 电平自动切换。P1 排针选择用RS232 还是RS485。

图5.2.20 RS232 接口的原理图

图5.2.22 RS485 接口的原理图

RGB LCD 接口:RGB888 格式,最大1677 万色,支持触摸(电阻/电容屏),LCD_BL 为1 打开背光。仅支持RGB 接口液晶,不支持MCU 接口。

XADC 接口:ZYNQ 内部XADC 模块采样率可达1MSPS,可测芯片内部温度电压和0~1V 外部模拟电压。接口处R107/R108/C105 组成抗混叠滤波器,滤除超过采样频率一半的高频谐波。

EEPROM(AT24C64):I2C 接口,64Kb 容量,掉电数据不丢失。A0~A2 接地即器件地址为0,写代码时要注意;IIC 的SCL/SDA 开漏,必须接上拉电阻。

RTC(PCF8563):提供年月日时分秒、星期和日历功能,外接32.768KHz 无源晶振,支持3.3V 直接供电和CR1220 纽扣电池备用供电(BAT54C 隔离两路电源)。器件地址与EEPROM 不同,所以两者可共用一组IIC 总线。

I2S 音频(ES8388):低功耗立体声编解码器,内部集成24 位DAC&ADC,支持最高96KHz@24bit 播放,自带EQ、3D 音效、麦克风放大器和耳机放大器。ZYNQ 通过PL IO 模拟I2S 总线传音频数据,I2C 总线做配置。板载MIC(录音)、PHONE(耳机输出)、LINE_IN(音频输入)和8Ω2W 小喇叭。

HDMI 接口:PL 侧差分IO 直连HDMI 差分信号,由FPGA 逻辑实现TMDS 编解码,最高支持1080P。HDMI 的IIC 引脚是5V 电平,通过MOS 管电路双向转换为3.3V。

PL 端千兆以太网:PHY 芯片YT8531,支持10/100/1000Mbps,通过RGMII 接口与PL 通信。注意:PS 端有以太网MAC 硬核,而PL 端需要用户自己用Verilog 实现MAC 层软逻辑(或通过EMIO 耦合到PS 端MAC)。RJ45 插座ATK91131A 自带网络变压器。

USB 2.0 接口:USB3320C PHY 芯片(1.8V 供电,ULPI 接口连PS 端MIO),差分信号经GL850G HUB 芯片扩展出4 路USB HOST,另直接连1 路USB SLAVE。HOST 和SLAVE 不能同时使用,通过P4 排针跳线帽切换。

Micro SD 接口:PS 端BANK501 的IO 电平是1.8V,而Micro SD 工作电压3.3V,所以需要专用电平转换芯片TXS02612RTWR。SD_CD 信号(MIO10,3.3V 上拉)用于热插拔检测。

CAN 接口:TJA1050 收发器连接CAN 协议控制器与物理总线。CAN 的数字信号经P3 排针隔离后(跳线帽短接)才连到ZYNQ——因为CAN_TX/RX 与扩展口有IO 复用关系,不用CAN 时建议拔掉跳线帽防串扰。R2 是终端匹配电阻。

IO 扩展口:J3、J4 两个40PIN 扩展口(2×20 排针,2.54mm 间距),各含36 个IO、3.3V/5V 电源和GND。J4 大部分IO 接BANK13,仅ZYNQ-7020 可完整使用。

3. 核心板原理图要点

核心板电源:底板5V 输入后,由4 片DC-DC 芯片TLV62130RGT 分别产生1.0V、1.35V、1.8V、3.3V,另有LDO SPX3819M5-3-3 专门给BANK34 供3.3V(想改BANK34 电平可换LDO 型号)。

图5.3.1 核心板电源拓扑

上电顺序是ZYNQ 硬件设计的关键:官方推荐PS 上电顺序为 VCCPINT→VCCPAUX/VCCPLL→VCCO;PL 上电顺序为 VCCINT→VCCBRAM→VCCAUX→VCCO。核心板的实现很巧妙:利用TLV62130RGT 的使能引脚(EN)和电源良好引脚(PG)级联——+1.0V 由+5V 使能,+1.8V 由+1.0V 的PG 使能,+1.35V 由+1.8V 的PG 使能,+3.3V 由+1.35V 的PG 使能,最终实现 +1.0V→+1.8V→+1.35V→+3.3V 的启动顺序。PS 和PL 的供电完全独立,相互之间没有上电顺序要求。

图5.3.2 PS 上电启动顺序官方描述

ZYNQ 主控芯片参数对比

参数 XC7Z020(7020 核心板) XC7Z010(7010 核心板)
逻辑单元 85K 28K
查找表LUT 53,200 17,600
寄存器 106,400 35,200
DSP(18×25 MACC) 220 80
Block RAM 4.9Mb 2.1Mb
CMT 4 个 2 个
用户IO BANK 6 个 5 个
最大用户IO 253 228
Cortex-A9 最高频率 766MHz 666MHz

两者都集成双核Cortex-A9(ARM-v7 架构)、每个CPU 32KB L1 指令+32KB L1 数据缓存、共享512KB L2 缓存、256KB 片内RAM、BootROM,支持DDR2/DDR3、双千兆网、双USB2.0 OTG、双CAN2.0B、双SD/SDIO、2×SPI/UART/I2C、4 组32bit GPIO(54 个PS 系统IO + 64 个连PL)。

DDR3 SDRAM:两片DDR3 组成32 位位宽系统(每片16 位),共享时钟/命令/地址总线,数据总线各自分开。最高运行速度533MHz,双沿采样,数据率1066Mbps,最大物理带宽约 1066MHz×32bit×0.9 ≈ 30.7Gbit/s(0.9 为刷新损失)。DDR3 是PS 部分的存储接口,PL 逻辑需要通过AXI 接口才能访问DDR3。硬件设计需严格考虑信号完整性(匹配电阻、阻抗控制、等长走线)。

图5.3.13 DDR3 SDRAM 连接框图

QSPI FLASH(W25Q256):32MB,QSPI 协议,接PS 端BANK500,存储ZYNQ 启动镜像(PS 程序+PL 配置)。注意QSPI_D2/D3 兼作启动方式选择引脚,连到底板拨码开关。CS 信号需上拉。

eMMC(KLM8G1GETF):8GB 非易失性NAND 存储器(电子硬盘),接PS 端BANK501,存储ARM 应用程序、系统文件和用户数据。

PS 复位:采用专用复位芯片HX811T,提供稳定无毛刺的复位信号。

PL/PS 时钟:50MHz 有源晶振接PL 端全局时钟(MRCC),需要其他频率时通过MMCM/PLL 倍频分频;33.333MHz 晶振给PS 端提供时钟。

PS 端千兆以太网PHY(YT8521S):接BANK501,RGMII 接口连PS 端MAC。RGMII 时序:1000Mbps 时接口时钟125MHz(双沿采样)、100Mbps 时25MHz、10Mbps 时2.5MHz(单沿采样)。

PL 配置状态指示灯(DONE LED):连接PL 端配置完成信号,程序下载完成后点亮。

4. 开发板使用注意事项

  1. 供电:ZYNQ 工作电流较大,USB 供电最大500mA 可能不足,建议用配套电源适配器;
  2. 断电操作:拔插跳帽/杜邦线、拨动拨码开关、拔插连接器或外接器件之前,必须先断电
  3. IO 复用检查:把某个IO 用作其他功能前,先查原理图确认该IO 是否连到板上外设,判断是否有干扰;
  4. 跳帽查询:使用某功能前先查是否需要连接跳帽,避免浪费时间;
  5. 液晶白屏排查:先检查液晶模块是否插好(拔下重插),再通过串口查看LCD ID;
  6. 静电防护:干燥环境(尤其冬季)注意防静电——经常洗手保持皮肤水分、穿防静电鞋/手环、少穿化纤衣物、避免手指直接触摸排针和连接器引脚。

5. ZYNQ 的学习方法

ZYNQ 看似复杂,掌握方法后并不难。三个要点:

  1. 一款实用的开发板:软件仿真通过不代表板上能跑起来;开发板不宜多,从一而终,学完一个再学另一个;
  2. 掌握方法,勤学慎思
  3. 了解ZYNQ 基本结构(PS、AXI 总线、PLL、FIFO 等概念);
  4. 掌握Verilog HDL 基本语法和并行设计思想——module/endmodule、wire/reg、always/assign、if/else、case 等关键字要清楚作用和区别;数字电路是并行工作的,写Verilog 要有并行的思想;
  5. 多思考、多动手:先"熟"才能"巧",光看视频文档不行,要在例程基础上自由发挥、举一反三;
  6. 善用技术论坛(开源电子网 openedv.com):很多疑问网友已经提过,先搜索再提问。

初学者容易踩的坑

  1. 以为PS 端IO 也像PL 一样自由分配:PS 端外设与MIO 的映射是固定的,只能通过MIO/EMIO 机制使用,不能随意指定引脚。
  2. 分不清"有源蜂鸣器"的"源":它指震荡源,不是电源。有源蜂鸣器给电平就响,无源的才需要方波驱动。
  3. 忘记拔跳线帽导致实验异常:RS232/RS485 复用IO、USB HOST/SLAVE 切换、CAN 与扩展口复用等都靠跳线帽选择,做扩展口实验时若不拔相关跳帽,可能信号串扰。
  4. 带电拔插跳帽或外设:必须先断电再操作,否则可能损坏芯片。
  5. 忽略上电顺序的硬件设计逻辑:虽然核心板已处理好,但自己设计ZYNQ 硬件时,电源时序是必须严格遵守的规范(VCCINT→VCCBRAM→VCCAUX→VCCO 等)。
  6. 直接把RS485/CAN 电平接芯片引脚:这些差分电平必须经过专用收发器芯片(SP3485/TJA1050)转换。
  7. 以为PL 可以直接访问DDR3:DDR3 挂在PS 的存储接口上,PL 必须通过AXI 接口访问。

小结 & 下一步

本章从原理图层面详解了开发板:PL 端IO 按BANK 自由分配(3.3V 电平),PS 端IO 与MIO 固定映射;底板电源经DC-DC+LDO 分级转换,BOOT 模式由拨码开关设定;各类外设(蜂鸣器、LED、按键、串口、LCD、HDMI、以太网、SD、CAN、音频等)的电路设计各有巧思(自动方向RS485、跳帽隔离复用IO、电平转换等);核心板则解决了ZYNQ 严格的上电顺序要求,并搭载DDR3(30.7Gbit/s 带宽)、QSPI Flash 和eMMC 构成完整存储体系。最后我们还收获了ZYNQ 学习方法论:好板子、掌握语法与并行思想、多动手。

下一章开始进入开发实战:搭建FPGA 开发环境(Vivado)