前言

最近要做新的设计用到Xilinx ZYNQ UltraScale+ MPSoc系列的芯片。文档看到吐,阅读间隙和妹子聊天,还被吐槽太闲。人生不易,我决定把近几日所学,整理成一篇文章,让大家少走点弯路,少被妹子吐槽。

一、ZYNQ UltraScale+ MPSoc的EG系列

Xilin的FPGA芯片主要分为两大类FPGA和SOC系列,FPGA产品就是我们以前比较熟悉的Spartan、Artix、Kintex和Vertex系列的产品,是纯逻辑产品,有不同的逻辑规模、速度等级和制程。SOC就是将FPGA和处理器单元以及常见处理器外设封装在一起,试图以单芯片解决整个控制部分的设计,Xilinx冠之以ZYNQ的名字。比较常见的ZYNQ-7000系列,便宜、够用,灵活性大,很多工业场合都会使用。

下图就是ZYNQ系列的图谱。他们的主要区别在于处理的数量和逻辑规模的大小,越高端的系列集成了数量越多等级的越高的ARM核,高端的里面还有一个RFSoc系列,集成了射频的数据转换器,可能是针对雷达和通信系统的。

高端系列里面的UltraScale+ MPSoc有EV和EG两个系列,EV系列比EG系列多一个Video Codec,可以用来进行更高效的视屏处理,我们今天为例学习的XCZU19EG属于EG系列,它有四核Arm Cortex-A53和双核Cortex-R5。

MPSOC系列芯片名字太长了,刚上来根本他喵的记不住啊,首先我们看一下这个系列的命名规则,简单记忆之后我们大概能根据芯片的名字得出芯片的基本信息,包括封装、速度等级、工作温度等。

二、UltraScale+ MPSoc EG系列概要

首先,来我们看一下我们选择的这块芯片的内部资源。

Huck,是不是很惊喜,根本不知道这些都特么是啥啊,我该怎么用啊。没事,我也是从一团雾水,慢慢搞清楚的。

我们先看一下系统内部资源模块图。

这样一看是不是清晰很多,这个芯片分为PS(Processing System)和PL(Programmable Logic),就是处理器部分和逻辑部分。处理器部分比较复杂,除了各种Arm核之外,还有GPU、DDR控制器,当然也集成了我们常见的外设DMA、Watch Dog和各种各种常见的高速接口。PL部分就相对简单,主要是处理计算、高速连接和IO。PS和PL部分各自集成了一个10bit的ADC来进行系统监测,称之为System Monitor。

从硬件工程师的角度,我将分IO、电源、时钟与复位和外设四个部分来介绍EG系列的芯片,其中时钟与复位和外设部分会放到另外一篇或者几篇文章进行讲述。

三、IO

MPSoc系列的芯片都很复杂,比如XCZUxxxx-2FFVC1760E有1760个管脚,刚上来的时候看到原理图我差点哭出声,但是我忍住了,不能弄脏我新配的眼镜。

官方文档给出了一个分类图,花花绿绿的一顿操作,然鹅,我们并不知道它有哪些东西。

经过一番努力,我做出了下面这张脑图,原创,建议打赏然后收藏。

说明:为了便于记忆每个IO Bank后面括号里的数字代表XCZU19EG所拥有的Bank号,方便你看到bank好的时候知道这个bank所在的分类。

3.1 IO分类

IO由一个个Bank组成,首先要分成PS和PL两部分。PS的部分可以分为以下四个部分:

1.PS MIO,即Multi-function IO。每个bank有26个IO,一共三组,这些IO就是支撑了常见的外设如串口、I2C、SPI等,也可以支持SD卡、NAND和eMMC的接口。

2.PS-GTR。这是PS的高速收发器bank,有四对高速收发器和四对时钟,可以支持我们常见的各种高速接口,PCIE、DP、USB、SATA等,需要用到高速收发器的接口。

3.PS DDR。这是DDR controller的接口,支持ECC功能,不在此详述。

4.PS config。配置端口,JTAG就是在这里,模式设置、参考时钟、复位和错误指示等接口都在这里。

PL分为两大类,IO Bank和高速收发器。

高速收发器分为GTH、GTY和GTM,他们的主要区别是传输速度,每组我们成为一个Quad,一个Quad有四个收发器差分对和两个时钟差分对。我们所选的芯片没有GTM收发器。

IO Bank分为HP、HD和HR三类。

1. HP,High-performance,旨在满足高速存储器和其它芯片对芯片接口,工作中电压1.0V到1.8V每组52个IO,其中48个可以作为24个差分对进行配置。

2. HR,High-range,旨在支持更广泛的 I/O 标准,工作中电压1.2V到3.3V,每个Bank有52个IO,有些小型的bank只有26个。我们所选的19EG没有该接口。

3. HD,High-density,旨在支持低速接口,工作中电压1.2V到3.3V,每组24个IO。

3.2 IO的供电电压

PS MIO、HP和GD的IO Bank有多个电压,以适应各种不同的逻辑电平和应用场合。

3.2.1 VCCO

VCCO 电源是 I/O 电路的主电源。特定 HP I/O bank 的所有 VCCO 管脚必须连接到开发板上相同的外部供电电压,因此,该 I/O bank 内的所有 I/O 的 VCCO电平必须相同。 VCCO 电压必须符合已分配给此 I/O bank 的 I/O 标准的要求。错误的 VCCO 电压可能会导致功能丧失或损坏器件。

3.2.2 VREF

带差分输入缓存的单端 I/O 标准需要输入参考电压 (VREF)。如果 I/O bank 中需要 VREF,可将专用 VREF 管脚作为 VREF 供电输入(外部),或者使用内部生成的 VREF (INTERNAL_VREF 或 VREF 扫描(仅限 HP I/O bank))。使用INTERNAL_VREF 约束即可启用内部生成的参考电压。

在 I/O 标准需输入参考电压并使用内部生成的 VREF 的 bank 中,使用500Ω 或 1K 电阻将 VREF 管脚连接至 GND。如果无需输入参考电压,可以用500Ω 或 1KΩ 电阻将VREF 管脚接地,也可以保持浮空。

HP I/O bank 中提供了内部 VREF 扫描功能,以适应工艺变化或系统考虑因素。

3.2.3 VCCAUX

全局辅助 (VCCAUX) 供电轨主要用于为器件内部各个块的互联逻辑供电。在 I/O bank 中, VCCAUX 还用于为某些 I/O 标准的输入缓存电路供电。其中包括部分不高于 1.8V 的单端 I/O 标准,以及部分 2.5V 标准 (仅限 HR I/O bank)。此外,VCCAUX 供电轨还为大多数差分 I/O 标准和 VREF I/O 标准中使用的差分输入缓存电路供电。

3.2.4 VCCAUX_IO

辅助 I/O (VCCAUX_IO) 供电电压轨用于为 I/O 电路供电。 VCCAUX_IO 只能按 1.8V 标准供电。

3.2.5 VCCINT_IO

这是 I/O bank 的内部电源。连接至 VCCINT 供电电压轨。

3.3 MIO and EMIO

PS端有三组MIO可供各种外设使用,当这些IO不够用的时候我们可以调用PL端的IO,这些IO叫 EMIO(extended multiplexed I/O )。PL端的EMIO可以通过PL逻辑连接到EMIO interface上,然后被PS端访问。所以PS端有6组I/O接口,3组MIO和3组EMIO。

3.4小结

SOC FPGA的IO相比MCU和普通SOC的IO要复杂很多,主要是因为要支持高速的、低速的各种逻辑电平的接口。但是只要分类清楚理解起来并不难,当然还有更多的细节需要自己去看数据手册。

四、电源

与IO一样复杂的还有电源系统。电源系统分为以下四个域:

1.Low-power domain (LPD).

2.Full-power domain (FPD).

3.PL power domain (PLPD).

3. Battery power domain (BPD).

每个电源域都可以单独隔离。工作在LPD域上的平台管理单元(PMU)管理着每个电源域。当相应电源域的电源之一意外掉电时,可以自动打开隔离。 由于每个电源域都可以单独隔离,因此可以实现功能隔离。

4.1电源结构

芯片电源结构如下图:

Power Domains and Islands (UG1085)

上图涉及了太多的电源轨,有着不同的电压和噪声要求。为了简化电源设计,我们可以使用下面的电源方案。

(UG583)

4.2 电源上电时序要求

PS 和 PL 电源为彼此完全独立的电源。所有 PS 电源均可在任意 PL 电源之前或之后上电。 PS 和 PL 电源区域已隔离以防止损坏。 (DS925)

4.2.1 PS 上电/断电电源时序

低功耗域 (LPD) 正常运作后, 全功耗域 (FPD) 方可正常运行。低功耗域和全功耗域可同时上电。按上电顺序运行期间, PS_POR_B 输入必须断言为 GND(请参阅表 37) 。使用 FPD 时, 它必须先上电, 然后才能释放PS_POR_B。

LPD推荐上电顺序:

1. VCC_PSINTLP

2. VCC_PSAUX、 VCC_PSADC 和 VCC_PSPLL, 按任意顺序或同时执行。

3. VCCO_PSIO

这样做可以实现最低电流汲取并确保上电时 I/O 处于三态状态。下电顺序反过来即可。

FPD)推荐上电顺序:

1. VCC_PSINTFP 和 VCC_PSINTFP_DDR 从相同供电电源驱动。

2. VPS_MGTRAVCC 和 VCC_PSDDR_PLL, 按任意顺序或同时执行。

3. VPS_MGTRAVTT 和 VCCO_PSDDR, 按任意顺序或同时执行。

旨在实现最低电流汲取并确保上电时 I/O 处于三态状态。下电顺序反过来即可。

4.2.2 PL 上电/断电电源排序

推荐上电顺序:

1. VCCINT

2.VCCINT_IO/VCCBRAM/VCCINT_VCU

3. VCCAUX/VCCAUX_IO 和 VCCO,

这样即可实现最低电流汲取并确保上电时 I/O 处于三态。下电顺序反过来即可。

如果 VCCINT 和 VCCINT_IO/VCCBRAM 的推荐电压电平相同,那么可使用相同电源为其供电并同步执行缓升。 VCCINT_IO 必须连接到 VCCBRAM。

如果 VCCAUX/VCCAUX_IO 和 VCCO 的推荐电压电平相同, 那么可使用相同电源为其供电并同步执行缓升。 VCCAUX 和 VCCAUX_IO 必须连接在一起。

VCCADC 和 VREF 可随时上电,无上电顺序要求。

为 GTH 或 GTY 收发器实现最小电流汲取的推荐上电顺序为

1.VCCINT

2. VMGTAVCC

3. VMGTAVTT 或 VMGTAVCC

4.VCCINT

5. VMGTAVTT

针对VMGTVCCAUX 不存在推荐的排序。

VMGTAVCC 和 VCCINT 均可同时执行电源缓升。

如果不满足这些推荐的顺序, 那么上电和断电期间从 VMGTAVTT 汲取的电流可能高于相应的规格。

4.3小结

电源的复杂度是随着系统的复杂同步上升的,后面在实际设计的时候应该还会遇到不少问题,到时我再补充文章进行说明。

五、参考文档:

DS890, UltraScale™ Architecture and Product Overview

DS891, Zynq® UltraScale+™ MPSoC Overview

DS925, Zynq UltraScale+ MPSoC Data Sheet: DC and AC Switching Characteristics

UG1075, Zynq UltraScale+ MPSoC Packaging and Pinouts

UG1085, Zynq UltraScale+ MPSoC Technical Reference Manual

UG571, UltraScale Architecture SelectIO™ Resources User Guide

UG574, UltraScale Architecture Configurable Logic Block User Guide

UG578, UltraScale Architecture GTY Transceivers User Guide

UG583, UltraScale Architecture PCB and Pin Planning User Guide

后记

未经整理的信息不足称为知识。我喜欢把看到乱七八糟的信息梳理成一篇有逻辑有体系的文章,节约大家学习的时间,让读者仅通过看一篇文章就对某块知识有个相对系统的了解,而这也是我深入学习的基石,我后续的学习只需要在此基础上丰富更多的细节,新学的任何知识都是有坐标体系的,不会混乱糊涂。

这依然属于自学笔记系列,属于我初涉领域,如有资深人士看到错讹之处,还请指教!

欢迎各位大佬打赏,将来聊上妹子了,也有点零花钱请人家吃个高档一点的餐厅。。。

ultrascale和arm区别_ZYNQ UltraScale+ MPSoc FPGA初学笔记相关推荐

  1. ultrascale和arm区别_[原创] Avnet Zynq UltraScale+MPSoC系列Ultra96开发方案

    Avnet公司的Ultra96 开发板是基于ARM的Xilinx ZynqUltraScale+™ MPSoC系列产品的满足Linaro 96板指标的开发板,设计者可创建或评估Zynq处理器子系统(P ...

  2. AVR与ARM区别以及常用Arduino

    文章目录 前言 一.AVR与ARM区别 1.1AVR 1.2 ARM 二.常用的Arduino开发板 2.1.Arduino UNO R3 2.2.Arduino Mega 2560 2.3.Ardu ...

  3. FPGA学习笔记(五)Testbench(测试平台)文件编写进行Modelsim仿真

    系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...

  4. FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程

    FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程 很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部.即使MCU断电了再重新上电,程序 ...

  5. FPGA学习笔记(七): DSB调制解调的仿真

    笔记七是DSB调制解调的仿真实现. DSB调制解调的实现原理:首先使用DDS产生低频正弦波信号作为调制信号,再用DDS产生高频信号作为载波信号,然后使用乘法器将两者相乘产生DSB信号,DSB信号与载波 ...

  6. FPGA学习笔记(1)简单的时序逻辑电路——流水灯

    FPGA学习笔记(1)简单的时序逻辑电路--流水灯 编程语言为Verilog HDL 原理 (1)设计一个计数器,使开发板上的4个LED状态每500ms翻转一次.开发板上的晶振输出时钟频率为50MHz ...

  7. FPGA学习笔记(八)同步/异步信号的打拍分析处理及亚稳态分析

    系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...

  8. FPGA自学笔记--串口通信发送多字节数据(verilog版)

    1.需求分析 关于uart协议实现这部分大家可以参考我上一篇的博客.<FPGA自学笔记--串口通信实现(vivado&verilog版)>.在上一篇博客中,主要实现了将单字节的数据 ...

  9. FPGA学习笔记_ROM核调用与调试

    FPGA学习笔记 ROM核调用与调试 1. ROM存储器IP核的使用 2. 创建.mif文件 3. In system memory content editor内存查看工具的使用 4. Signal ...

最新文章

  1. 未来到底是什么样子?
  2. .NET智能客户端(SmartClient)
  3. ios中while()和 android中的不同之处
  4. 非技术(一)——从最近的股票市场看到的
  5. 【易创课堂】第4期深圳开讲,还有大包好礼!
  6. docker pull 下载一半_Docker 从入门到掉坑
  7. 【JFreeChart】JFreeChart—输出柱形图
  8. 深入解读RabbitMQ工作原理及简单使用
  9. 高通量数据中批次效应的鉴定和处理(一)
  10. 矩阵的旋转和翻转——Python
  11. C++ 简单实现unorderset和unordermap
  12. Python机器学习基础教程(一):简介
  13. Linux下的SYN flood***
  14. 揭开阿里P2P面纱:大数据是泡泡
  15. debug error/runtime error的原因之一
  16. 用Camshift算法对指定目标进行跟踪
  17. 如何在 think-cell 瀑布图中并行汇总多个系列?
  18. python矩形法求定积分_如何用矩形法(梯形法)求定积分
  19. python网络爬虫之如何伪装逃过反爬虫程序的方法
  20. Halcon|通过旋转前后3维坐标点求旋转轴及旋转角度

热门文章

  1. 判断图有无环_数读湾区经济潜能:基于大数据分析的环杭州湾大湾区“一体化”发展潜能!...
  2. JAVA算法:解救小哈(JAVA版)
  3. 《国史通鉴》历代一句话概括总结+大脉络记历史~~
  4. 字符集和字符编码(Charset Encoding)
  5. 谷歌浏览器设置启动页被hao123劫持_win10系统打开chrome会被hao123劫持怎么办?解决方案...
  6. 分享一个小案例,用HMS Scankit做一个安卓扫码购小应用
  7. flutter AppBar背景渐变色
  8. 镜像构建工具SOURCE TO IMAGE(S2I)实践
  9. 《汇编语言程序设计》(双语)上机指导
  10. 科学计算法(机器学习)----决策树定义以相关概念