本帖最后由 正点原子01 于 2020-6-9 10:48 编辑
1)实验平台:正点原子领航者ZYNQ开发板
2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-301505-1-1.html
4)对正点原子FPGA感兴趣的同学可以加群讨论:712557122
5)关注正点原子公众号,获取最新资料更新
第三章硬件资源详解
本章,我们将向大家详细介绍领航者ZYNQ开发板各部分的硬件原理图,让大家对领航者ZYNQ开发板的各部分硬件原理有个深入理解,并向大家介绍开发板的使用注意事项,为后面的学习做好准备。 本章包括以下几个部分: 2.1 领航者ZYNQ的IO分配 2.2 核心板外设详解 2.3 底板外设详解 2.4 开发板使用注意事项 2.5 ZYNQ的学习方法
1.1领航者ZYNQ的IO分配ZYNQ-7020核心板的主控芯片为XC7Z020CLG400-2,ZYNQ-7010核心板的主控芯片为XC7Z010CLG400-1。XC7Z020芯片比XC7Z010芯片多出一个BANK,即BANK13。为了使ZYNQ-7020核心板和ZYNQ-7010核心板的引脚完全兼容,ZYNQ-7020核心板的BANK 13我们没有连接到任何硬件外设,即没有引出至BTB转接板。 XC7Z020芯片有6个用户I/O BANK(比XC7Z010多一个BANK)和最大253个用户I/O,了解器件的IO分配方式,有助于我们在硬件设计时根据器件的一些约束,对设计进行合理的IO分配,减少硬件出错的可能性。ZYNQ的IO口分成了PL和PS两部分,我们将分别介绍PL和PS两部分的IO分配。 1.1.1 PL端的IO分配ZYNQ的PL侧和传统FPGA一样,可以灵活地分配到不同的IO口上。在XC7Z020中,PL端的IO被分成了3组,每一组称为一个IO Bank,分别是BANK13、BANK34、BANK35。同一个Bank中的所有IO供电相同,而各个Bank的IO供电可以不同,领航者开发板都将它们连接到了3.3V的电源上。PL端的3个IO BANK分别如图3.1.1、图3.1.2和图3.1.3所示: 需要说明的是,XC7Z020芯片比XC7Z010芯片多出一个BANK13,为了使这两颗芯片的引脚完全兼容,XC7Z020芯片的BANK13没有连接到任何硬件外设。 为了让大家更快更好的使用我们的领航者ZYNQ开发板,这里特地将ZYNQPL端的IO引脚分配做了一个总表,以便大家查阅。领航者ZYNQ PL端IO引脚分配总表如下表所示: 表3.1.1领航者ZYNQPL端IO引脚分配总表
在上表中,表格中列出来了除扩展口外,开发板上所有的PL IO引脚,扩展口上的引脚IO可以参考开发板的原理图或者直接查看开发板上的丝印标注。
另外在资料盘(A盘)→3_正点原子领航者ZYNQ开发板原理图文件夹下,有提供Excel格式的管脚分配表格,表格里共两个工作表,一个是“PL IO引脚列表”,另一个是“PS IO引脚列表”,方便大家查看。
1.1.2 PS端的IO分配在ZYNQ PS端同样也包含了3个IO BANK,如下图所示: ZYNQ不同的IO BANK可以采用不同的供电电压,IOBANK的引脚电平和供电电压的电平保持一致,我们根据PS端连接不同的外设来选择不同的供电电压。BANK500、BANK501和BANK502分别采用3.3V、1.8V和1.5V供电。 与PL端IO BANK不同的是,PS端的IO连接是是相对固定的,用户不能够像PL引脚那样,将PS端的IO随意分配到某个外设。PS端外设的IO口与MIO(多路复用IO)之间,具有固定关系的映射,某个外设的IO口可能会映射到不同的MIO上,某个MIO也有可能会具有多个外设的IO口映射到其上面。两者之间的映射如下图所示: 领航者ZYNQ开发板所使用到的所有外设与MIO之间所选择的映射关系如下表所示: 表3.1.2领航者ZYNQPS端IO引脚分配总表 1.2开发板底板原理图详解1.2.1 底板电源底板电源拓扑结构如下图所示: 图3.2.1底板电源拓扑 整个板子的电源来自电源适配器的12V供电电压,经过DC-DC芯片(型号为JW50690T_6)之后,转变为系统+5V电压,再经过电源开关后,给系统供电,核心板的电源就来自系统+5V电压。PS端USB串口的+5V也可以用来给系统供电,但是需要特别注意,由于USB接口的驱动能力有限,所以不能驱动供电电流需求大的器件如LCD,这种情况下,请改用电源适配器供电。系统+5V电压除了直接驱动某些外设之外,还用于电压转换,LDO(线性稳压器)芯片AMS1117-3.3和AMS1117-1.8用于将系统+5V电压分别转变为+3.3V和+1.8V,然后给各个外设供电。 使用+5V电压供电的底板外设包括ATKMODULE、CAN、RGB LCD接口、AUDIO、HDMI接口、核心板、扩展口、USB HUB。使用+3.3V电压供电的底板外设包括SP3232、EEPROM、RTC、TOUCH KEY(AR101)、BEEP、摄像头接口、XADC接口、JTAG、Micro SD、AUDIO、PL以太网、HDMI接口、扩展口、USB OTG。使用+1.8V电压供电的底板外设包括Micro SD、USB OTG。 电源适配器供电的电源接口原理图如下图所示: DC_IN用于外部直流电源输入,输入电压(12V)经过U15 DC-DC芯片转换为5V电源输出,其中D4是防反接二极管,避免外部直流电源极性接反的时候,烧坏开发板。 ZYNQ开发板底板的供电电源可以从电源适配器供电,也可以通过USB供电,无论通过哪种方式供电,都经过电源开关K1控制是否对开发板供电,其原理图如下图所示: VBTN为电源适配器输入的12V电压经电源转换芯片转换后得到的5V电压,VUSB为通过USB 接口输入的电压。 除了+5V电压之外,ZYNQ开发板底板还提供了3.3V、1.8V的电源电压,都是由5V电压转换而来,其电压转换电路原理图如下图所示: 当电路接通后,LDO(线性稳压器)芯片AMS1117-3.3和AMS1117-1.8将系统+5V电压分别转变为+3.3V和+1.8V。通过电压转换芯片得到3.3V电压,点亮电源指示灯PWR,可以通过电源指示灯PWR判断开发板供电是否正常。 除了这些之外,领航者ZYNQ开发板还板载了两组5V和3.3V输入输出接口,其原理图如下图所示: 图中,VOUT1和VOUT2分别是3.3V和5V的电源输入输出接口,有了这2组接口,我们可以通过开发板给外部提供3.3V和5V电源了,虽然功率不大(最大1000ma),但是一般情况都够用了,大家在调试自己的小电路板的时候,有这两组电源还是比较方便的。同时这两组端口,也可以用来由外部给开发板供电。 1.2.2 ZYNQ启动模式ZYNQ支持4种启动模式,分别是JTAG、NAND、QSPI FLASH和SD Card。为了方便用户的操作,领航者底板板载了一个控制ZYNQ启动模式的拨码开关,原理图如图3.2.6所示。 PS的模式选择开关由MIO4(和QSPI_D2引脚复用)和MIO5(和QSPI_D3引脚复用)引脚控制,底板上的两个拨码开关用于设置ZYNQ的BOOT模式: 当拨开开关1设置为“ON”、拨开开关2设置为“ON”时,ZYNQ PS端在上电后的启动源被设置为JTAG; 当拨开开关1设置为“ON”、拨开开关2设置为“OFF”时,ZYNQ PS端在上电后的启动源被设置为NANDFLASH。由于ZYNQ开发板并没有板载NANDFLASH存储器,因此不能从NANDFLASH启动,此模式对于本开发板来说没有用。 当拨开开关1设置为“OFF”、拨开开关2设置为“ON”时,ZYNQ PS端在上电后的启动源被设置为QSPI FLASH; 当拨开开关1设置为“OFF”、拨开开关2设置为“OFF”时,ZYNQ PS端在上电后的启动源被设置为SDCard。 1.2.3 有源蜂鸣器蜂鸣器是现代常用的一种电子发声器,主要用于产生声音信号。蜂鸣器(Buzzer)常用于计算机、打印机、报警器、电子玩具等电子产品中。常用的蜂鸣器有两种:有源蜂鸣器和无源蜂鸣器,这里的有“源”不是电源,而是震荡源,有源蜂鸣器内部带有震荡源,所以有源蜂鸣器只要通电就会叫。无源蜂鸣器内部不带震荡源,直接用直流电是驱动不起来的,需要2K-5K的方波去驱动。 为方便大家使用,领航者底板使用的是有源蜂鸣器,原理图如下图所示: 图中通过一个NPN型三极管S8050来驱动蜂鸣器,BEEP连接到PL的IO,这个IO可以控制三极管Q1的导通。当BEEP输出高电平的时候Q1导通,相当于蜂鸣器的正极连接到+3.3V,蜂鸣器形成一个通路,因此蜂鸣器会鸣叫。同理,当BEEP输出低电平的时候Q1不导通,那么蜂鸣器就没有形成一个通路,因此蜂鸣器也就不会鸣叫。 1.2.4 PL LED领航者底板板载了两个PL LED,在调试代码的时候,使用LED来指示程序执行状态,是一个很好的辅助调试方法。其电路原理图如下图所示: 上面的“PL_LED0”和“PL_LED1”是PL的2个LED,当PL的IO口输出高电平“1”时,点亮LED灯,输出低电平“0”时,熄灭LED灯。 1.2.5 PS LED领航者底板板载了两个PS LED,在调试代码的时候,使用LED来指示程序执行状态,是一个很好的辅助调试方法。电路原理图如下图所示: 其中下面的“PS_LED0”和“PS_LED1”是连接到PS的两个LED,当PS的IO口输出高电平“1”时,点亮LED灯,输出低电平“0”时,熄灭LED灯。 1.2.6 PL按键领航者ZYNQ开发板底板板载了一个PL复位按键和两个PL功能按键,其电路原理图如下图所示: 图中,最上面的“PL_RESET”按键为PL端的复位按键,按下时低电平复位,一般作为PL逻辑的系统复位信号。紧接着下面的“PL_KEY0”和“PL_KEY1”为PL端的功能按键输入。它们都外接上拉电阻,未按下时按键端口输出高电平,按下时输出低电平。按键作为最简单的输入设备,适合在需要给系统输入控制信号的场合使用。 1.2.7 PS按键领航者底板板载了两个PS功能按键,其电路原理图如下图所示: 图中,最下面的两个按键“PS_KEY0”和“PS_KEY1”作为PS端的功能按键,它们都外接上拉电阻,未按下时按键端口输出高电平,按下时输出低电平。按键作为最简单的输入设备,适合在需要给系统输入控制信号的场合使用。 1.2.8 电容触摸按键领航者底板板载一个触摸按键,触摸按键在稳定性、使用寿命、抗干扰能力等方面都优于传统的机械按键,被广泛应用于遥控器,便携电子设备,楼道电灯开关,各类家电控制面板等场景。下图是ZYNQ与触摸按键之间的连接框图: 其电路原理图如下图所示: 图中1K电阻是电容充电电阻,AR101是触摸按键专用驱动芯片,用于产生稳定无毛刺的信号。AR101的1脚TPAD信号就是处理后的IO信号。当用户触摸了触摸按键时,TPAD会变为高电平。用户用户不触摸触摸按键时,TPAD信号为低电平。 1.2.9 14-Pin JTAG接口领航者底板板载一个14针标准JTAG调试口(JTAG),该JTAG口与核心板的6-Pin JTAG接口是硬件连通的,该接口可以直接和Xilinx下载器(调试器)连接,用于下载程序或者对程序进行在线调试。 JTAG接口一般由TMS、TDI、TDO、TCK、3.3V电源和GND组成。其原理图如下图所示: 1.2.10 USB串口领航者底板板载了一个UART转USB接口的转换芯片,一般用于PS程序调日志显示功能,下图是其与ZYNQ之间的连接框图: 其原理图如下图所示: USB转串口芯片,我们选择的是CH340C,是国内芯片公司南京沁恒的产品,稳定性经测试还不错,所以我们还是要支持下国产。 USB_UART是一个MiniUSB座,提供CH340C和电脑通信的接口,同时可以给开发板供电,VUSB就是来自电脑USB的电源,USB_UART是本开发板的可选供电口。 1.2.11 RS232 接口RS-232-C是美国电子工业协会EIA(ElectronicIndustry Association)制定的一种串行物理接口标准,在早期它是个人计算机上的通讯接口之一,虽然现在在个人电脑上几乎看不到他的身影了,但他还是广泛应用在工业领域。 领航者底板板载了一个母头RS232接口,连接到了PL端的IO上,如下图所示: 为了减少外设接口对IO的占用,领航者开发板的RS232接口和RS485接口复用IO,可以通过跳线帽来进行选择打开哪个接口。其电路原理图如下图所示: 由于FPGA输入输出引脚为数字信号,3.3V代表逻辑“1”,0V代表逻辑“0”;而计算机串口采用RS-232电平,它是负逻辑电平,即-15V~-5V代表逻辑“1”,+5V~+15V代表逻辑“0”。因此当计算机与FPGA通信时,需要一个电平转换芯片,这里我们选择的是SP3232(也可以用MAX3232)来做电平转接,同时图中的P1用来选择打开RS232接口(COM2)还是RS485接口。 当使用跳帽将U2_RX连接UART2_TX,U2_TX连接UART2_RX时,可以完成ZYNQ和RS232接口的通信;当使用跳帽将RS485_RX连接UART2_TX,RS485_TX连接UART2_RX时,可以完成ZYNQ和RS485接口的通信。当未使用跳帽进行连接时,FPGA的UART2_TX和UART2_RX两个IO本身硬件已连接到40PIN扩展口上,可以作为40PIN扩展口IO使用。 1.2.12 RS485 接口RS-485接口是针对UART串口的一种接口标准,它定义了串行通信系统中发送器和接收器的一系列电气特性。相比于RS-232,RS-485标准的通信系统抗干扰能力较强,可实现长距离数据传输,同时支持多个收发器连接到同一个通信网络中。因此,RS-485在工业控制领域以及有类似需求的领域得到了广泛的应用。领航者底板板载的RS485接口与ZYNQ PL的连接框图如下图所示: 原理图如下图所示: RS485的电平特性和LVDS类似,都是通过两线间的电压差表示逻辑“1”和逻辑“0”,逻辑“1”的两线间线压差为+(2至6)V,逻辑“0”的两线间线压差为-(2至6)V。RS485的电平不能直接连接到ZYNQ芯片的引脚上,需要通过电平转换芯片(SP3485)将RS485的差分电平信号转换成3.3V的数字电平信号。 上图中的RS485_RX和RS485_TX的信号命名是以SP3485芯片来说的,即RS485_RX为SP3485芯片的接收侧,连接FPGA的串口发送引脚;RS485_TX为SP3485芯片的发送侧,连接FPGA的串口接收引脚。除此之外,由于RS485通信属于半双工通信,不能同时发送和接收数据,因此RS485_DE信号用于控制SP3485的通信方向。当RS485_DE信号为高电平时,SP3485芯片将接收到的FPGA引脚电平转换为差分信号;当RS485_DE信号为低电平时,SP3485芯片将差分信号转换为数字信号,并连接至FPGA的接收引脚。 需要说明的是,RS485_DE信号并没有连接到ZYNQ的引脚上,而是连接至自动选择方向电路,从而可以节省ZYNQ的一个IO引脚,图3.3.20中的三极管Q5、MBR0520等器件组成了自动方向选择电路。自动选择方向电路是根据RS485_RX的电平状态来改变RS485_DE信号的电平状态,从而最终改变SP3485芯片的电平转换方向。当RS485_RX信号为低电平时,三极管Q5截止,此时RS485_DE信号被上拉到3.3V,SP3485芯片将接收到的FPGA引脚电平转换为差分信号;当RS485_RX信号为高电平时,三极管Q5导通,此时RS485_DE信号连接至GND,SP3485芯片将差分信号转换为数字信号,并连接至FPGA的接收引脚。 1.2.13 RGB LCD模块接口TFT-LCD是一种液晶显示屏,它采用薄膜晶体管(TFT)技术提升图像质量,如提高图像亮度和对比度等。相比于传统的CRT显示器,TFT-LCD有着轻薄、功耗低、无辐射、图像质量好等诸多优点,因此广泛应用于电视机、电脑显示器、手机等各种显示设备中。领航者底板板载的RGB LCD模块接口电路如下图所示: 图中,RGBLCD是RGB LCD液晶接口,采用RGB888数据格式,最大支持256*256*256=1677W色颜色显示,并支持触摸屏(支持电阻屏和电容屏)。该接口仅支持RGB接口的液晶(不支持MCU接口的液晶),目前正点原子的RGB接口LCD模块有:4.3寸(ID:4342, 480*272)和7寸(ID:7084, 800*480和ID:7016,1024*600)等尺寸可选。 图中的T_MISO/T_MOSI/T_PEN/T_CS/T_SCK用于实现对液晶触摸屏的控制(支持电阻屏和电容屏),连接到ZYNQ PL端的IO的触摸屏的4个信号如图中的CT_INT、CT_RST、IIC2_SCL、IIC2_SDA所示,它们也可以使用PS端的EMIO来连接到PS系统。LCD_BL用于控制LCD的背光,LCD_BL为1表示打开背光。 1.2.14 XADC接口ZYNQ SOC内部集成了一个高速ADC模块,AD采样速率高达1Mbps,该XADC模块既可以测量ZYNQ芯片内部的温度和电压,也可以用来测量外部的模拟电压,测试外部模拟电压的范围是0~1V。领航者底板的XADC接口(J1)其原理图如下图所示: 板上的XADC接口(J1)用于测量外部输入的模拟电压。其中,输入端的R107、R108、C105组成抗混叠滤波器,用来移除输入信号中的高频谐波部分,防止高频谐波超过采样频率的一半。 1.2.15 OLED/摄像头模块接口领航者ZYNQ开发板板载了一个OLED/摄像头模块接口,电路原理图如下图所示: 图中的OLED/摄像头接口可以用来连接正点原子OLED模块或者正点原子摄像头模块,正点原子摄像头模块支持OV7725、OV5640和其他类似接口的摄像头。 1.2.16 EEPROMEEPROM(Electrically Erasable Progammable Read Only Memory,E2PROM)即电可擦除可编程只读存储器,是一种常用的非易失性存储器(掉电数据不丢失),也常在嵌入式领域中作为数据的存储设备,在物联网及可穿戴设备等需要存储少量数据的场景中也有广泛应用。 领航者底板板载的EEPROM是Atmel公司的AT24C64,使用I2C接口进行通信,该芯片的容量为64Kb,对于一般应用来说是足够了。驱动该E2PROM只需要用到两个IO,其与ZYNQ之间的连接框图如下图所示: 其电路原理图如下图所示: 硬件原理图里我们把A0~A2均接地,对AT24C64来说也就是把地址位设置成了0了,写代码的时候要注意这点。另外AT24C64采用IIC协议进行数据的读写,而IIC的串行时钟线SCL和数据线SDA均是开漏的,所以需要接上拉电阻。 1.2.17 实时时钟领航者底板板载了一个I2C接口的实时时钟RTC,实时时钟芯片采用NXP公司的PCF8563,可以提供年月日时分秒、星期以及日历功能。数字时钟一般用于给系统提供时间功能。PCF8563与ZYNQ之间的连接框图如下图所示: 其电路原理图如下图所示: PCF8563需要外接一个32.768KHz的无源时钟,采用直接供电(VCC3.3)和备用电源供电两种供电方式。PCF8563采用IIC协议进行通信,与EEPROM共用IIC引脚。为了开发板掉电以后实时时钟还可以正常运行,还需要配一个电池给PCF8563供电,图中为BAT1为电池座,我们将纽扣电池(型号CR1220,电压为3V)放入BAT1插座以后,当系统掉电后,纽扣电池还可以继续给PCF8563供电。原理图中的BAT54C是一款正向电压为320mV的半导体二极管,防止3.3V和电池互相导通。 1.2.18 ATK模块接口领航者ZYNQ开发板板载了一个ATK模块接口,电路原理图如下图所示: 如图所示,U4是一个1*6的排母座,可以用来连接正点原子开发的“ATK-USB-UART 模块”或者其他ATK接口的外设模块。当连接“ATK-USB-UART 模块”时,则实现UART串口通信功能。其中,UART3_TX和UART3_RX连接到了PL的IO口上。 1.2.19 I2S音频编解码领航者底板的音频编解码芯片采用Wolfson公司的WM8960,WM8960是一颗低功耗、高性能的立体声多媒体数字信号编解码器。下图是WM8960与ZYNQ之间的连接框图: ZYNQ通过PL IO模拟I2S总线与WM8960进行音频数据双向传输,I2C总线用于对WM8960进行配置。WM8960具有一个音频信号输入接口和一个音频信号输出接口,除此之外,还具有一个直接驱动扬声器的输出接口。其电路原理图如下图所示: WM8960内部集成了24位高性能DAC&ADC,可以播放最高192K@24bit的音频信号,并且自带段EQ调节,支持3D音效等功能。不仅如此,该芯片还结合了立体声差分麦克风的前置放大与扬声器、耳机和差分、立体声线输出的驱动,减少了应用时必需的外部组件,直接可以驱动耳机(16Ω@40mW)和喇叭(8Ω/0.9W),无需外加功放电路。 图中,SPK-和SPK+连接了一个板载的8Ω2W小喇叭(在开发板背面)。MIC是板载的麦克,可用于录音机实验,实现录音。PHONE是3.5mm耳机输出接口,可以用来插耳机。LINE_IN 则是线路输入接口,可以用来外接线路输入,实现立体声录音。IIC1_SCL和IIC1_SDA是与AT24C64等共用一个IIC接口。 图中,电源端口均串联了33欧姆电阻,用于和滤波电容一起构成RC滤波电路,以滤除掉电源网络上的噪声。 1.2.20 HDMI接口领航者底板板载高清晰度多媒体接口HDMI(HighDefinition Multimedia Interface,HDMI)接口,可以连接显示器用来实现图片和视频的显示。领航者开发板通过PL侧的差分IO直接连接到HDMI接口的差分信号和时钟,通过FPGA逻辑实现HMDI信号的差分转并行和编解码,实现数字视频输入和输出的传输解决方案,最高支持1080P的输入和输出功能。 其与ZYNQ之间的连接框图如下图所示: 当开发板作为HDMI主设备时,HDMI接口外接显示设备,HPD(hotplug detect)热插拔信号作为输入。开发板在作为HDMI主设备时,需要提供给HDMI显示设备一个+5V的电源。另外HMDI主设备会通过IIC总线来读取HDMI显示设备的设备信息。 其电路原理图如下所示: 需要说明的是,HDMI的IIC引脚是5V电平的,需要将其转换为ZYNQPL端所需的3.3V电压。电平转换电路如下图所示: 其中,IIC2_SCL和IIC2_SDA连接到ZYNQ PL侧的IO口上,HDMI_SCL_LS和HDMI_SDA_LS连接到HDMI插座上。 当总线空闲即IIC2_SCL和IIC2_SDA都被ZYNQ驱动为高电平时,MOS管截止,HDMI_SCL_LS和HDMI_SDA_LS也被上拉电阻R55和R61上拉到+5V的高电平。 当IIC2_SCL或IIC2_SDA被ZYNQ驱动为低电平时,MOS管导通,此时HDMI_SCL_LS或HDMI_SDA_LS也被下拉到了GND。 若HDMI_SDA_LS需要向ZYNQ发送低电平时,HDMI_SDA_LS为低,MOS管内部二极管导通IIC2_SDA被下拉到了低电平。以此实现了双向电平转换的功能。 1.2.21 PL端千兆以太网接口(RJ45)领航者底板板载了一个以太网PHY芯片,型号也为B50610。与PS端自带的以太网MAC层硬核逻辑不同的是,用户可以使用PL端的逻辑资源来实现一个以太网MAC层软逻辑,可以通过编写Verilog代码来实现。此外,用户还可以通过EMIO来将PL端的RGMII接口耦合到PS端的以太网MAC层硬核逻辑。 PL端的PHY芯片与ZYNQ PL的连接框图如下图所示: 其原理图如下图所示: B50610芯片支持10/100/1000Mbps网络传输速率,通过RGMII接口跟ZYNQ PL端的IO进行数据通信,并支持通过MDIO总线进行PHY寄存器的管理。 开发板的底板上还为PL端的PHY芯片板载了一个自带网络变压器的RJ45插座(HR911130C),它们能够满足高带宽通信的需求,比如,可以使用网线连接到电脑,来与电脑上位机进行通信。 1.2.22 USB 2.0接口领航者底板板载了1个连接PS端的USB2.0收发器芯片,USB2.0收发器采用的是一个1.8V的,高速且支持ULPI标准接口的USB3320C芯片,再通过一个USBHUB芯片GL850扩展出4路USB HOST接口。ZYNQ的USB总线接口和USB3320C收发器相连接,实现高速的USB2.0Host模式的数据通信。另外还外扩了一个SLAVE模式的接口。USB HOST口采用侧立式的USB 接口(USB Type A),USB HOST口采用迷你USB接口(Mini USB)。 USB3320C与ZYNQ之间的连接框图如下图所示: 其电路原理图如下图所示: 图3.2.38USB接口原理图2
USB2.0 PHY芯片USB3320C工作在1.8V电压下,与ZYNQ PS BANK501的MIO之间通过ULPI标准高速接口来进行通信。USB总线接口差分信号(OTG_DP/N)通过一个USB HUB芯片GL850G扩展出了4路USB HOST接口,此外,USB2.0 PHY芯片USB3320C还直接连接到了一个USB Slave接口上。 若工作在Slave模式下,则需要将USBHUB芯片GL850G的5V电源断开(经过实际测试,工作在Slave模式下时,为USB HUB芯片GL850G提供5V电源会干扰到USB slave模式的正常工作),即将P4跳线帽的1、2脚短接在一起,这样就把USB HUB芯片GL850G的5V电源通过一个电阻连接到了GND上。如果工作在HOST模式下,则需要为USB HUB芯片GL850G提供5V电源,即将P4跳线帽的2、3脚短接在一起,这样就把USB HUB芯片GL850G的5V电源连接到了底板的+5V电源网络上。 4个HOST接口,可分别用来连接不同的USBSLAVE设备,可以用来连接鼠标、键盘等不同的设备。SLAVE模式的接口,可以用来连接HOST设备,以满足特定的应用需求。 1.2.23 Micro SD卡接口领航者底板板载了一个Micro SD(TF)卡接口,位于底板的背面。Micro SD卡一般用于存储ZYNQ芯片的BOOT程序,Linux操作系统内核, 文件系统以及其它的用户数据文件。 下图是其与ZYNQ之间的连接框图: 其电路原理图如下图所示: 上图中的SD_CD信号用于MicroCard的热插拔检测,当插上MicroCard时,CD信号会被拉低。SD_CD信号连接到了IO BANK500上的MIO 10,该BANK IO为3.3V,因此该引脚的上拉电平为3.3V。由于在领航者开发板中,ZYNQPS端连接到MicroSD的IO是位于BANK501上面,BANK501的供电电压是1.8V,而Micro SD的工作电压是3.3V,所以要使用电平转换芯片TXS02612RTWR将3.3V的电平转换为1.8V的电平。 1.2.24 CAN接口CAN是控制器局域网络(ControllerAreaNetwork)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11898)。目前CAN总线是国际上应用最广泛的现场总线之一。 领航者底板板载一个CAN收发器芯片,型号为TJA1050芯片。该芯片是控制器区域网络(CAN)协议控制器和物理总线之间的接口芯片。该器件为总线提供差分发射能力并为CAN控制器提供差分接收能力。CAN接口与ZYNQ PL之间的连接框图如下图所示: 其电路原理图如下图所示: 原理图中R20为终端匹配电阻。TJA1050转换得到的数字电平信号连接到了ZYNQ的PL端的IO上,领航者CANTX和RX是与扩展口IO复用的,所以使用CAN接口时要加上跳线帽P3来导通CAN TX和RX与IO口的连接。 1.2.25 IO扩展口领航者底板板载一个40PIN的IO的扩展口,位于开发板的左下角,其原理图如下图所示: 该扩展口排针规格是2*20 Pin,其中包括36个IO口、1个+3.3V、1个+5V、2个GND。它可以用来连接不同的功能模块,例如,正点原子开发的高速AD/DA模块、双目摄像头模块等。 1.3 开发板核心板原理图详解1.3.1 核心板电源ZYNQ-7020/ZYNQ-7010核心板的电源来自底板转接板IO上的5V电源引脚,核心板电源拓扑结构如下图所示: 与底板相比,核心板需要的电源数量更多,包括1.0V、1.8V、1.5V、3.3V以及VCCO 3.3V。DC-DC芯片TLV62130RGT负责将+5V电压转换为1.0V、1.8V、1.5V、3.3V,LDO芯片SPX3819M5-3-3负责将+5V电压转换为3.3V,专门给ZYNQ的BANK35提供电源,如果大家想BANK35工作在其他电压,可以自行把SPX3819M5-3-3替换为期望电压值的LDO型号。 另外,由于ZYNQ的供电有上电顺序的要求,所以这些电源的产生顺序必须符合ZYNQ的上电顺序要求,图中的蓝色虚线表示这些电源的产生顺序。 ZYNQ芯片的PS和PL都需要多组电源。如下表所示: 表3.3.1ZYNQPS和PL的电源 PS和PL的供电完全独立,两者之间没有任何上电顺序的要求,PS电源(VCCPINT,VCCPAUX,VCCPLL,VCCO_DDR,VCCO_MIO0和VCCO_MIO1)可在任何PL电源之前或之后上电。但是PS和PL各自内部的各个电源之间却有上电顺序的要求。 官方推荐的PS上电顺序为:VCCPINT-->VCCPAUX和VCCPLL --> PS_VCCO(VCCO_MIO0、VCCO_MIO1、VCCO_DDR)。官方推荐的PL上电顺序为:VCCINT-->VCCBRAM -->VCCAUX --> VCCO,如果VCCINT和VCCBRAM具有相同的电源电压,则两者可以由相同的电源供电并同时供电。VCCADC是XADC的独立供电引脚,与上述几种电源之间没有上电顺序的要求。 核心板的供电电路原理图如下图所示: 其中,各个DC-DC芯片或LDO芯片的电源输入均是+5V,输出为所需的各路电源电压。各路电源电压之间的产生顺序是通过级联各个芯片的“EN”引脚来实现的,即,第一个产生的电源电压连接到第二个电源芯片的“EN”引脚上,这样,只有在第一个电源电压稳定输出之后,第二个电源电压才会开始产生。以此类推,直到产生最后一路电源电压。 另外,核心板上还具有一个电源指示灯,其原理图如下图所示: 它连接到了3.3V电源上,可以通过核心板的电源指示灯来判断核心板供电是否正常。 1.3.2 ZYNQ主控芯片ZYNQ7020核心板主控芯片采用Xilinx公司的ZYNQ7000系列的XC7Z020,具体型号为XC7Z020CLG400-2。ZYNQ分为PS(ProcessingSystem)和PL(Programmable Logic)两部分。 PL部分拥有85K个逻辑单元、4.9Mbits的嵌入式存储资源、220个DSP单元、4个时钟管理单元(CMT)、16个全局时钟网络、6个用户I/O BANK和最大253个用户I/O,是一款非常具有性价比的芯片。 ZYNQ7010核心板主控芯片采用Xilinx公司的ZYNQ7000系列的XC7Z010,具体型号为XC7Z010CLG400-1。ZYNQ分为PS(ProcessingSystem)和PL(Programmable Logic)两部分。 PL部分拥有28K个逻辑单元、2.1Mbits的嵌入式存储资源、80个DSP单元、2个时钟管理单元(CMT)、16个全局时钟网络、5个用户I/O BANK和最大228个用户I/O,是一款非常具有性价比的芯片。 XC7Z020和XC7Z010都集成了两个Cortex-A9处理器,AMBA®互连,内部存储器,外部存储器接口和外设。这些外设主要包括USB总线接口,以太网接口,SD/SDIO接口,I2C总线接口,CAN总线接口,UART 接口,GPIO等。 ZYNQ芯片系统框图如下图所示: PS系统部分的主要参数如下: l 基于ARM双核CortexA9的应用处理器,基于ARM-v7架构,高达766Mhz(XC7Z020)/666Mhz(XC7Z010)核心频率 l 每个CPU 32KB 1级指令和数据缓存,2个CPU共享512KB 2级缓存 l 集成片上Boot ROM和256KB片内RAM l 集成外部存储接口,支持16/32 bit DDR2、DDR3接口 l 支持两个千兆网控制器:支持GMII,RGMII,SGMII三种接口 l 支持两个USB2.0 OTG接口,每个最多支持12节点 l 支持两个CAN2.0B总线接口 l 支持两个SD卡、SDIO、MMC兼容控制器 l 支持2个SPI,2个UART,2个I2C接口 l 4组32bit GPIO,54个(32+22)作为PS系统IO,64个连接到 PL l PS外设内部和PS外设到PL外设的高带宽连接 ZYNQ-7020核心板PL逻辑部分的主要参数如下: l 逻辑单元Logic Cells:85K; l 查找表LUT:53,200 l 寄存器(flip-flops):106,400 l 乘法器18x25MACCs:220; l Block RAM:4.9Mb; l 两个AD转换器,可以测量片上电压、温度感应和高达17个外部差分输入通道,1Mbps采样率 ZYNQ-7010核心板PL逻辑部分的主要参数如下: l 逻辑单元Logic Cells:28K; l 查找表LUT:17,600 l 寄存器(flip-flops):35,200 l 乘法器18x25MACCs:80; l Block RAM:2.1Mb; l 两个AD转换器,可以测量片上电压、温度感应和高达17个外部差分输入通道,1Mbps采样率 XC7Z020-2CLG400I芯片的速度等级为-2,工业级,封装为BGA400,引脚间距为0.8mm。XC7Z010-1CLG400C芯片的速度等级为-1,商业级,封装为BGA400。ZYNQ7000系列的具体的芯片型号定义如下图所示: 另外当我们使用BGA封装的芯片以后,芯片引脚名称变为由字母+数字的形式,比如A1,C2等,因此我们在看原理图的时候,看到的字母+数字这种形式的,就是代表了BGA的引脚。 ZYNQ芯片实物图如下图中间所示(以ZYNQ-7020核心板为例): 1.3.3 DDR3 SDRAM存储器ZYNQ-7020核心板板载两片4Gbit DDR3内存,芯片型号为NT5CB256M16EP-DI,总容量为8Gbit(1GB); ZYNQ-7010核心板板载两片2Gbit DDR3内存,芯片型号为NT5CB128M16IP-DI,总容量为4Gbit(512MB); DDR3 SDRAM的最高运行速度可达533MHz,由于DDR3为双倍数据采样,所以数据采样率可以达到1066Mbps。它们连接到了ZYNQ的IO BANK502上,供电电压为1.5V。下图是DDR3与ZYNQ之间的连接框图(以ZYNQ-7020核心板为例,ZYNQ-7010核心板DDR3存储容量减半):
两片内存颗粒共享时钟信号、命令信号和地址总线,数据总线、数据选通信号和数据掩码信号各自分开。每片DDR3数据位宽为16位,两片DDR3的组成32位位宽的DDR3系统,其最大IO时钟频率为533MHz,对应的等效数据传输频率为1066MHz,两个DDR3颗粒提供的最大物理带宽为1066MHz * 32bit*0.9 = 30.7Gbit/s,其中0.9是DDR3刷新造成的性能损失后的参数。这么高的存储带宽使得领航者能够轻松应对各种大内存和高带宽需求场景,比如普通图片存储、摄像头图像数据存储、录音数据存储等。 此外,它们还用来作为PS端处理器的运行内存。由于DDR3是PS部分的存储接口,因此PL逻辑需要通过AXI接口访问DDR3。 其详细的原理图如图3.3.8和图3.3.9所示: 另外,DDR3由于速度高且是双倍速率采样,所以硬件设计时需要严格考虑信号完整性,核心板在原理图设计、PCB布线和PCB加工时候就充分考虑了匹配电阻/终端电阻,走线阻抗控制,走线等长控制,保证DDR3的高速稳定的工作。 1.3.4 6-Pin JTAG接口简化版的JTAG接口与底板的14-PinJTAG接口是一体的,硬件电路是连通的,用于在单独调试核心板时使用,如下图所示: JTAG接口由TMS、TDI、TDO、TCK、电源和GND组成。如果想单独使用核心板6PINJTAG接口,可以焊接一个6PIN的2.54MM间距的排针,然后通过两个都是母头的杜邦线连接到下载器对应接口上面。 6Pin下载口实物图如上图所示,从上到下引脚定义依次TMS、TDI、TDO、TCK、GND和3.3V。 1.3.5 PS复位按键核心板板载一个PS的复位按键,它连接到了PS端的复位逻辑,按下后,PS端将重新从上电后的状态开始运行。其原理图如下图所示: PS端复位电路采用了专用复位芯片TCM811TERCTR,用于提供稳定可靠、无毛刺的复位信号。 1.3.6 PL LED核心板板载一个PL控制的LED,可以通过Verilog编程来控制其状态,逻辑输出为1时LED发光。这个PL LED灯的点亮状态可以作为程序运行状态的指示,方便对代码进行调试。其原理图如下图所示: 1.3.7 PS LED核心板板载一个PS控制的LED,可以通过C语言编程来控制其状态,逻辑输出为1时LED发光。这个PS LED灯的点亮状态可以作为程序运行状态的指示,方便对代码进行调试。其原理图如下图所示: 1.3.8 PL时钟输入核心板板载一个50Mhz的有源晶振,为ZYNQ的PL提供时钟,原理图如下图所示: 晶振输出的PL_GCLK(50Mhz)连接到FPGA的全局时钟(MRCC),这个全局GCLK可以用来给FPGA用户逻辑提供时钟。当用户逻辑需要其它频率的时钟时可以通过PL内部中的MMCM/PLL倍频或者分频来产生。 1.3.9 PS时钟输入核心板板载一个33.333Mhz的有源晶振,为ZYNQ的PS提供时钟,原理图如下图所示: PS端的专用PLL会用此时钟来产生PS端所需的各种时钟频率。 1.3.10 PL配置状态指示灯核心板板载一颗PL配置状态指示灯,连接到了PL端的配置完成(DONE)信号,在PL端配置(下载程序)完成之后,该LED灯会被点亮。其原理图如下图所示: 1.3.11 PS端千兆以太网核心板板载一颗PS端千兆以太网PHY(物理)芯片,型号为RTL8211E-VL,实现了10/100/1000M以太网物理层功能。该PHY芯片的引脚连接到了底板上的 RJ45 接口上,能够满足高带宽通信的需求。 RTL8211E-VL连接到了PS端的BANK 501上面,PHY和ZYNQ芯片的连接框图如下图所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image132.gif 其原理图如下图所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image134.gif RTL8211E芯片支持10/100/1000Mbps网络传输速率,通过RGMII接口跟ZYNQ PS系统的MAC层进行数据通信,并支持通过MDIO总线进行PHY寄存器的管理。除此之外,RTL8211E上电会检测一些特定IO引脚的电平状态,从而确定自己的工作模式,用于配置芯片的工作状态。RGMII接口时序图如下图所示: RTL8211E芯片支持10/100/1000Mbps网络传输速率,由通信双方所能达到的最高通信速率决定。当以太网PHY芯片通信速率为1000Mbps时,以太网接口时钟频率为125Mhz,数据在时钟的上升沿和下降样被采样;当以太网PHY芯片通信速率为100Mbps时,以太网接口时钟频率为25Mhz,数据在时钟的上升沿被采样;当以太网PHY芯片通信速率为10Mbps时,以太网接口时钟频率为2.5Mhz,数据在时钟的上升沿被采样。 1.3.12 QSPIFLASH核心板板载一颗QSPI Flash芯片,型号为W25Q256FVEI,存储容量为256Mbit(32M字节),采用SPI协议和FPGA进行通信。QSPIFlash可用于存储ZYNQ芯片的启动镜像数据,包括PS端的程序镜像和PL端的配置镜像,以保证ZYNQ在重新上电后仍能继续工作。 下图是其与ZYNQ之间的连接框图,QSPI连接到了BANK500上面: 下面是其详细的电路原理图,其中CS信号需要上拉到高电平: 需要说明的是,QSPI_D2和QSPI_D3也作为ZYNQ启动方式的引脚选择,这两个引脚连接到了开发板底板的拨码开关上。 1.3.13 eMMCeMMC是非易失性NAND存储器,俗称电子硬盘,核心板板载的eMMC芯片型号为KLM8G1GETF,存储容量为 8GB,能够满足PS端大容量非易失性的存储需求,如存储ARM的应用程序、系统文件以及其它的用户数据文件。 ZYNQ与eMMC之间的连接框图如下图所示: eMMC FLASH连接到ZYNQ芯片的PS部分BANK501的MIO口上,其原理图如下图所示:
1.4 开发板使用注意事项为了让大家更好的使用领航者ZYNQ开发板,我们在这里总结该开发板使用的时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。 1. USB供电电流最大500mA,且由于存在导线电阻,供到开发板的电压,一般都不会有5V,如果使用了很多大负载外设,比如4.3寸屏、7寸屏、摄像头模块等,那么可能引起USB供电不足,所以开发板如果连接大负载模块的朋友,或者同时用到多个模块的时候,建议大家使用一个电源适配器供电。 2. 当你想使用某个IO口用作其他用处的时候,请先看看开发板的原理图,该IO口是否有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干扰,先确定无干扰,再使用这个IO。 3. 开发板上需要连接跳帽的地方比较多,大家在使用某个功能的时候,要先查查实现这个功能是否需要连接跳帽,以免浪费时间。 4. 当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重新插试试),如果还不行,可以通过串口看看LCD ID是否正常,再做进一步的分析。 至此,本手册的实验平台领航者FPGA的硬件部分就介绍完了,了解了整个硬件对我们后面的学习会有很大帮助,有助于后面的管脚约束(分配),在编写程序的时候,可以事半功倍,希望大家细读!另外正点原子开发板的其他资料及教程更新,都可以在技术论坛 www.openedv.com下载到,大家可以经常去这个论坛获取更新的信息。 1.5ZYNQ的学习方法ZYNQ作为目前热门的SOC类处理器,正在被越来越多的公司选择使用。学习ZYNQ的朋友也越来越多,初学者可能会认为ZYNQ很难学,以前只学过51,或者甚至连51都没学过的,一看到ZYNQ就懵了。其实,万事开头难,只要掌握了方法,学好ZYNQ,还是非常简单的,这里我们总结学习ZYNQ的几个要点: 1. 一款实用的开发板。 这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板在手,什么东西都可以直观的看到,效果不是仿真能比的。但开发板不宜多,多了的话连自己都不知道该学哪个了,觉得这个也还可以,那个也不错,那就这个学半天,那个学半天,结果学个四不像。倒不如从一而终,学完一个再学另外一个。 2. 掌握方法,勤学慎思。 ZYNQ不是妖魔鬼怪,不要畏难,ZYNQ的学习和普通单片机一样,基本方法就是: 3. 了解ZYNQ的基本结构。 学习ZYNQ之前需要先对ZYNQ的基本结构和其功能有个大概的了解,如PS、AXI总线、锁相环PLL、FIFO等。需要知道PLL是用来产生不同频率的时钟,如使用WM8960(音频编解码芯片)时需要生成12MHz的时钟;FIFO用于数据的缓存和异步时钟域数据的传递等。 4. 了解Verilog HDL基本语法 没有软件的硬件就如同行尸走肉一般。软件是硬件的灵魂,硬件是软件的舞台。好的软件设计才能发挥硬件的性能,而软件的精髓在于代码。学习FPGA也是这样,Verilog HDL做为一种硬件描述语言,是对数字电路的一种描述,而数字电路是并行工作的,因而在编写VerilogHDL时要有并行的思想,不同于软件设计语言,软件设计语言是由CPU统一进行处理,一条指令一条指令的串行运行,所以软件设计语言是基于串行的设计思想,因而在写Verilog HDL代码的时候要注意这种差别。另外对于Verilog HDL的基本语法是务必要掌握的,如一般常用的module/endmodule、input/output/inout、wire/reg、begin/end、posedge/negedge、always/assign、if/else、case/default/endcase/parameter/localparam等关键字要清楚它们的作用和区别。掌握了Verilog HDL的基本语法和Verilog HDL的并行设计思想后,会觉得Verilog HDL和C语言一样简单。 5. ZYNQ PS的学习 学习ZYNQ PS首先要了解C语言的基本语法。然后了解PS端基本的系统框架和外设,例如PS端架构、片内互连、AXI总线、DDR控制器等等。最关键的是PS端的C程序。软件系统可以被认为是建立于基于硬件的系统上的一个栈,或者说是一系列层,从底至上依次是基础硬件系统(来自Vivado的自定义硬件)、板级支持包、Operating System、软件应用。 初学者可以多看看官方的文档和资料,对于PS端的软件,xilinx提供了丰富的库函数,很多时候用户直接调用调用即可,读者要学会利用这些库函数。遇到问题时,读者可以借助xilinx的SDK开发环境中的各种调试功能来定位错误,以帮助解决问题。 6. 多思考,多动手。 所谓熟能生巧,先要熟,才能巧。如何熟悉?这就要靠大家自己动手,多多练习了,光看或说是没什么太多用的。只有在使用ZYNQ的过程中,才会一点点的熟悉,也只有动手实练,才能对FPGA有切实的感受。 熟悉了之后,就应该进一步思考,也就是所谓的巧了。我们提供了几十个例程,供大家学习,跟着例程走,无非就是熟悉ZYNQ的过程,只有进一步思考,才能更好的掌握ZYNQ,也即所谓的举一反三。例程是死的,人是活的,所以,可以在例程的基础上,自由发挥,实现更多的其他功能,并总结规律,为以后的学习和使用打下坚实的基础,如此,方能信手拈来。 所以,学习一定要自己动手,光看视频,光看文档,是不行的。举个简单的例子,你看视频,教你如何煮饭,几分钟估计你就觉得学会了。实际上你可以自己测试下,是否真能煮好?机会总是留给有准备的人,只有平时多做准备,才可能抓住机会。 只要以上三点做好了,学习ZYNQ基本上就不会有什么太大问题了。如果遇到问题,可以在我们的技术论坛:开源电子网: www.openedv.com提问,论坛FPGA板块有各种主题,很多疑问已经有网友提过了,所以可以在论坛先搜索一下,很多时候,就可以直接找到答案了。论坛是一个分享交流的好地方,是一个可以让大家互相学习,互相提高的平台,所以有时间,可以多上去看看。
|