超级版主
- 积分
- 4671
- 金钱
- 4671
- 注册时间
- 2019-5-8
- 在线时间
- 1224 小时
|
本帖最后由 正点原子运营 于 2021-11-4 11:33 编辑
1)实验平台:正点原子领航者V2FPGA开发板
2) 章节摘自【正点原子】《领航者ZYNQ之FPGA开发指南 V2.0》
3)购买链接:https://detail.tmall.com/item.htm?id=609032204975
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz_linhanz(V2).html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)正点原子FPGA技术交流QQ群:712557122
3.3开发板核心板原理图详解
3.3.1核心板电源
ZYNQ-7020/ZYNQ-7010核心板的电源来自底板转接板IO上的5V电源引脚,核心板电源拓扑结构如下图所示:
图 3.3.1.1 核心板电源拓扑
与底板相比,核心板需要的电源数量更多,包括1.0V、1.35V、1.8V、3.3V以及VCCIO(3.3V)。DC-DC芯片EA3059负责将+5V电压转换为1.0V、1.35V、1.8V、3.3V,LDO芯片SPX3819M5-3-3负责将+5V电压转换为3.3V,专门给FPGA芯片的BANK34提供电源,如果大家想BANK34工作在其他电压,可以自行把SPX3819M5-3-3替换为期望电压值的LDO型号。
另外,由于ZYNQ芯片的供电有上电顺序的要求,所以这些电源的产生顺序必须符合ZYNQ的上电顺序要求,在Xilinx官方手册DS187(Zynq-7000 SoC(Z-7007S, Z-7012S, Z-7014S, Z-7010, Z-7015, and Z-7020):DC and AC Switching Characteristics)中,有对ZYNQ7010和ZYNQ7020芯片的上电要求有详细的描述,ZYNQ PS上电顺序如下图所示:
图 3.3.1.2 PS上电启动顺序官方描述
ZYNQ PL上电顺序如下图所示:
图 3.3.1.3 PL上电启动顺序官方描述
由上图可知,推荐的上电顺序为VCCINT->VCCBRAM->VCCAUX->VCCO,如果VCCINT和VCCBRAM电平相同时,可以使用相同的电源。
ZYNQ芯片的PS和PL都需要多组电源。如下表所示:
表 3.3.1 ZYNQ PS和PL的电源
PS VCCPINT PS的1.0V逻辑电源。
VCCPAUX PS的1.8V辅助电源。
VCCO_MIO0 PS MIO bank 500的1.8V-3.3V I/O电源,领航者使用3.3V。
VCCO_MIO1 PS MIO bank 501的1.8V-3.3V I/O电源,领航者使用1.8V。
VCCO_DDR PS 1.2V-1.8V DDR I/O电源,领航者使用1.5V。
VCCPLL PS的1.8V PLL电源。
PL VCCAUX 1.8V电源引脚,用于辅助电路。
VCCINT 内部逻辑的1.0V核心电源电压。
VCCO_# 每个IO bank的电源,领航者BANK13、BANK34、BANK35全部使用3.3V。
VCCBRAM PL Block RAM的1.0V电源引脚。
VCCBATT_0 解密器密钥存储器的备用电源。不使用时,应连接到相应的VCC或GND。
RSVDVCC[3:1] 保留引脚,必须连接到VCCO_0。
独立电源 VCCADC XADC的供电引脚
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的独立供电引脚,与上述几种电源之间没有上电顺序的要求。
核心板的供电电路原理图如下图所示:
图 3.3.1.4 核心板供电电路原理图
从上图可以看到,EA3059芯片的功能还是很强大的,单个芯片就可以转换出四种不同的电压,这里我们需要注意它输出的四路电压顺序是1.0V>1.8V>1.35V&3.3V(1.35V和3.3V同时输出),这是怎么做到的呢?主要靠芯片的使能来控制(EN1~EN4),我们可以看到使能EN1和EN3都是通过RC电路连接5V电源,不同的是,连接EN1上的电容标注了NC(No Connect),即不焊接,而连接EN3上的电容是焊接的,这就意味着同样的 5V 电源,EN1 是直接被激活,而EN3需要先把电容给充电充满才能激活,所以EN1比EN3快一步,因此1.0V电压输出(EN1控制)要比1.8V电压输出(EN3控制)提前输出。而EN2和EN4引脚连接在了一起,所以1.35V和3.3V是同时启动的,它们通过RC电路连接到了1.8V,因此这两个1.35V和3.3V都是晚于1.8V生效,所以启动顺序为1.0V>1.8V>1.35V&3.3V(1.35V和3.3V同时输出)。
另外,我们通过一个独立的电源为ZYNQ的BANK34供电,方便大家对该BANK34的 IO电平进行修改,原理图如下图所示:
图 3.3.1.5 VCCIO电源原理图
核心板上还具有一个电源指示灯,其原理图如下图所示:
图 3.3.1.6 核心板电源指示灯
它连接到了3.3V电源上,可以通过核心板的电源指示灯来判断核心板供电是否正常。
3.3.2ZYNQ主控芯片
ZYNQ7020核心板主控芯片采用Xilinx公司的ZYNQ7000系列的XC7Z020,具体型号为XC7Z020CLG400-2。ZYNQ 分为PS(Processing System)和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(Processing System)和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芯片系统框图如下图所示:
图 3.3.2.1 ZYNQ芯片系统框图
PS系统部分的主要参数如下:
基于ARM双核CortexA9的应用处理器,基于ARM-v7架构,高达766Mhz(XC7Z020)/666Mhz(XC7Z010)核心频率
每个CPU 32KB 1级指令和数据缓存,2个CPU共享512KB 2级缓存
集成片上Boot ROM和256KB片内RAM
集成外部存储接口,支持16/32 bit DDR2、DDR3接口
支持两个千兆网控制器:支持GMII,RGMII,SGMII三种接口
支持两个USB2.0 OTG接口,每个最多支持12节点
支持两个CAN2.0B总线接口
支持两个SD卡、SDIO、MMC兼容控制器
支持2个SPI,2个UART,2个I2C接口
4组32bit GPIO,54个(32+22)作为PS系统IO,64个连接到 PL
PS外设内部和PS外设到PL外设的高带宽连接
ZYNQ-7020核心板PL逻辑部分的主要参数如下:
逻辑单元Logic Cells:85K;
查找表LUT:53,200
寄存器(flip-flops):106,400
乘法器18x25MACCs:220;
Block RAM:4.9Mb;
两个AD转换器,可以测量片上电压、温度感应和高达17个外部差分输入通道,1Mbps采样率
ZYNQ-7010核心板PL逻辑部分的主要参数如下:
逻辑单元Logic Cells:28K;
查找表LUT:17,600
寄存器(flip-flops):35,200
乘法器18x25MACCs:80;
Block RAM:2.1Mb;
两个AD转换器,可以测量片上电压、温度感应和高达17个外部差分输入通道,1Mbps采样率
XC7Z020-2CLG400I芯片的速度等级为-2,工业级,封装为BGA400,引脚间距为0.8mm。XC7Z010-1CLG400C芯片的速度等级为-1,商业级,封装为BGA400。ZYNQ7000系列的具体的芯片型号定义如下图所示:
图 3.3.2.2 ZYNQ芯片命名规则
另外当我们使用BGA封装的芯片以后,芯片引脚名称变为由字母+数字的形式,比如A1,C2等,因此我们在看原理图的时候,看到的字母+数字这种形式的,就是代表了BGA的引脚。
ZYNQ芯片实物图如下图中间所示(以ZYNQ-7020核心板为例):
图 3.3.2.3 ZYNQ芯片实物图
3.3.3DDR3 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.35V。下图是DDR3与ZYNQ之间的连接框图(以ZYNQ-7020核心板为例,ZYNQ-7010核心板DDR3存储容量减半):
图 3.3.3.1 DDR3 SDRAM连接框图
两片内存颗粒共享时钟信号、命令信号和地址总线,数据总线、数据选通信号和数据掩码信号各自分开。每片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.3.2和图 3.3.3.3所示:
图 3.3.3.2 DDR3 SDRAM1
图 3.3.3.3 DDR3 SDRAM2
另外,DDR3由于速度高且是双倍速率采样,所以硬件设计时需要严格考虑信号完整性,核心板在原理图设计、PCB布线和PCB加工时候就充分考虑了匹配电阻/终端电阻,走线阻抗控制,走线等长控制,保证DDR3的高速稳定的工作。
3.3.46-Pin JTAG 接口
简化版的JTAG接口与底板的14-Pin JTAG接口是一体的,硬件电路是连通的,用于在单独调试核心板时使用,如下图所示:
图 3.3.4.1 核心板6-Pin JTAG接口
JTAG接口由TMS、TDI、TDO、TCK、电源和GND组成。如果想单独使用核心板6PIN JTAG接口,可以焊接一个6PIN的2.54MM间距的排针,然后通过两个都是母头的杜邦线连接到下载器对应接口上面。
图 3.3.4.2 核心板6-Pin JTAG实物图
6Pin下载口实物图如上图所示,从上到下引脚定义依次TMS、TDI、TDO、TCK、GND和3.3V。
3.3.5PS复位按键
核心板板载一个PS的复位按键,它连接到了PS端的复位逻辑,按下后,PS端将重新从上电后的状态开始运行。其原理图如下图所示:
图 3.3.5.1 PS端复位电路
PS端复位电路采用了专用复位芯片HX811T,用于提供稳定可靠、无毛刺的复位信号。
3.3.6PL LED
核心板板载一个PL控制的LED,可以通过Verilog编程来控制其状态,逻辑输出为1时LED发光。这个PL LED灯的点亮状态可以作为程序运行状态的指示,方便对代码进行调试。其原理图如下图所示:
图 3.3.6.1 PL的LED
3.3.7PS LED
核心板板载一个PS控制的LED,可以通过C语言编程来控制其状态,逻辑输出为1时LED发光。这个PS LED灯的点亮状态可以作为程序运行状态的指示,方便对代码进行调试。其原理图如下图所示:
图 3.3.7.1 PS的LED
3.3.8PL时钟输入
核心板板载一个50Mhz的有源晶振,为ZYNQ的PL提供时钟,原理图如下图所示:
图 3.3.8.1 PL的时钟晶振电路
晶振输出的PL_GCLK(50Mhz)连接到FPGA的全局时钟(MRCC),这个全局GCLK可以用来给FPGA用户逻辑提供时钟。当用户逻辑需要其它频率的时钟时可以通过PL内部中的MMCM/PLL倍频或者分频来产生。
3.3.9PS时钟输入
核心板板载一个33.333Mhz的有源晶振,为ZYNQ的PS提供时钟,原理图如下图所示:
图 3.3.9.1 PS的时钟晶振电路
PS端的专用PLL会用此时钟来产生PS端所需的各种时钟频率。
3.3.10PL配置状态指示灯
核心板板载一颗PL配置状态指示灯,连接到了PL端的配置完成(DONE)信号,在PL端配置(下载程序)完成之后,该LED灯会被点亮。其原理图如下图所示:
图 3.3.10.1 PL端配置状态指示灯
3.3.11PS端千兆以太网
核心板板载一颗PS端千兆以太网PHY(物理)芯片,型号为YT8521S,实现了10/100/1000M以太网物理层功能。该PHY芯片的引脚连接到了底板上的RJ45接口上,能够满足高带宽通信的需求。
YT8521S连接到了PS端的BANK 501上面,PHY和ZYNQ芯片的连接框图如下图所示:
图 3.3.11.1 PS端千兆以太网PHY芯片连接框图
其原理图如下图所示:
图 3.3.11.2 PS端千兆以太网PHY
YT8521S芯片支持10/100/1000Mbps网络传输速率,通过RGMII接口跟ZYNQ PS系统的MAC层进行数据通信,并支持通过MDIO总线进行PHY寄存器的管理。除此之外,YT8521S上电会检测一些特定IO引脚的电平状态,从而确定自己的工作模式,用于配置芯片的工作状态。RGMII接口时序图如下图所示:
图 3.3.11.3 RGMII接口时序图
YT8521S芯片支持10/100/1000Mbps网络传输速率,由通信双方所能达到的最高通信速率决定。当以太网PHY芯片通信速率为1000Mbps时,以太网接口时钟频率为125Mhz,数据在时钟的上升沿和下降样被采样;当以太网PHY芯片通信速率为100Mbps时,以太网接口时钟频率为25Mhz,数据在时钟的上升沿被采样;当以太网PHY芯片通信速率为10Mbps时,以太网接口时钟频率为2.5Mhz,数据在时钟的上升沿被采样。
3.3.12QSPI FLASH
核心板板载一颗QSPI Flash芯片,型号为W25Q256,存储容量为256Mbit(32M字节),采用QSPI协议和FPGA进行通信。QSPI Flash可用于存储ZYNQ芯片的启动镜像数据,包括PS端的程序镜像和PL端的配置镜像,以保证ZYNQ在重新上电后仍能继续工作。
下图是其与ZYNQ之间的连接框图,QSPI连接到了BANK500上面:
图 3.3.12.1 QSPI FLASH芯片连接框图
下面是其详细的电路原理图,其中CS信号需要上拉到高电平:
图 3.3.12.2 QSPI FLASH芯片原理图
需要说明的是,QSPI_D2和QSPI_D3也作为ZYNQ启动方式的引脚选择,这两个引脚连接到了开发板底板的拨码开关上。
3.3.13eMMC
eMMC是非易失性NAND存储器,俗称电子硬盘,核心板板载的eMMC芯片型号为KLM8G1GETF,存储容量为 8GB,能够满足PS端大容量非易失性的存储需求,如存储ARM的应用程序、系统文件以及其它的用户数据文件。
ZYNQ与eMMC之间的连接框图如下图所示:
图 3.3.13.1 eMMC芯片连接框图
eMMC FLASH连接到ZYNQ芯片的PS部分BANK501的MIO口上,其原理图如下图所示:
图 3.3.13.2 eMMC芯片原理图
3.4开发板使用注意事项
为了让大家更好的使用领航者ZYNQ开发板,我们在这里总结该开发板使用的时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。
1.由于ZYNQ芯片工作电流较大,而USB供电电流最大500mA,所以使用USB串口进行供电可能会供电不足,建议大家使用一个电源适配器供电。
2.当你想使用某个IO口用作其他用处的时候,请先看看开发板的原理图,该IO口是否有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干扰,先确定无干扰,再使用这个IO。
3.开发板上需要连接跳帽的地方比较多,大家在使用某个功能的时候,要先查查实现这个功能是否需要连接跳帽,以免浪费时间。
4.当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重新插试试),如果还不行,可以通过串口看看LCD ID是否正常,再做进一步的分析。
至此,本手册的实验平台领航者FPGA的硬件部分就介绍完了,了解了整个硬件对我们后面的学习会有很大帮助,有助于后面的管脚约束(分配),在编写程序的时候,可以事半功倍,希望大家细读!另外正点原子开发板的其他资料及教程更新,都可以在技术论坛www.openedv.com 下载到,大家可以经常去这个论坛获取更新的信息。
3.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做为一种硬件描述语言,是对数字电路的一种描述,而数字电路是并行工作的,因而在编写Verilog HDL时要有并行的思想,不同于软件设计语言,软件设计语言是由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板块有各种主题,很多疑问已经有网友提过了,所以可以在论坛先搜索一下,很多时候,就可以直接找到答案了。论坛是一个分享交流的好地方,是一个可以让大家互相学习,互相提高的平台,所以有时间,可以多上去看看。 |
|