【ZYNQ学习】ZYNQ架构介绍
在上一篇博客中,主要介绍了ZYNQ的基本信息以及如何在vivado上实现自己的设计,但是在实际应用中,掌握ZYNQ的架构是必要的,因此在这篇博客中主要记录一下ZYNQ的架构
本篇博客的主要参考是ZYNQ book,有兴趣的可以去阅读一下,里面对于ZYNQ的介绍我认为讲的还不错,适合入门使用
处理器系统
- 硬处理器:一颗双核ARM Cortex-A9处理器
- 软处理器:Xilinx的MicroBlaze,由可编程逻辑部分的单元组合而成
- 软处理器的优势是处理器实例的数量和精确实现是灵活的,而硬处理器可以获得相对较高的性能,可以在ZYNQ的PL部分分配上一个或多个MicroBlaze软处理器,用于和ARM处理器协同工作
下面着重来介绍一下PS部分,提到PS部分,下面这张图需要掌握:
上图就是PS部分的架构框图,高亮的部分是APU
应用处理器单元(APU)
ZYNQ的处理器系统里并非只有ARM处理器,还有一组相关的处理资源,形成了一个应用处理器单元(Application Processing Unit,APU),除此之外还有时钟发生电路,扩展外设接口,存储器接口等
APU主要由两个ARM处理核组成,每个都关联了一些可计算的单元:
- 一个NEONTM媒体处理引擎(Media Processing Engine,MPE)
- 浮点单元(Floating Point Unit,FPU)
- 一个内存管理单元(Memory Management Unit,MMU):在虚拟地址和物理地址之间做翻译
- 一个一级cache存储器(分为指令和数据两个部分)
- 一个二级cache存储器
- 片上存储器(On Chip Memory,OCM)
- 一个一致性控制单元(Snoop Control Unit,SCU)在ARM核和二级cache及OCM存储器之间形成了桥连接
从编程的角度而言,对ARM指令的支持是由Xilinx的软件开发包(Software Development Kit, SDK)来实现的,同时编译器支持ARM和Thumb指令集(16位或32位),在特定的状态下还支持8位Java字节码(用于Java虚拟机)
处理器系统外部接口
PS和外部接口之间的通信主要是通过复用的输入/输出(MIO)实现的,提供了可灵活配置的54个引脚,也可以通过扩展MIO(EMIO)实现,但是EMIO并不是PS和外部连接之间的直接通路,而是通过共用PL的I/O资源实现的
可用的I/O包括标准通信接口和通用输入输出,如下图所示:
可编程逻辑
ZYNQ的PL部分是基于Artix-7和Kintex-7的FPGA
- 可配置逻辑块(CLB):在PL中排列为一个二维阵列,通过可编程互联连接到其他类似的资源,每个CLB中包含两个逻辑片,且紧邻一个开关矩阵
- 片(Slice):CLB中的一些子单元,ZYNQ的片是由4个查找表、8个触发器和其他一些逻辑所组成的
- 开关矩阵:每个CLB旁都有一个开关矩阵,实现灵活的布线功能来连接CLB内的单元或把一个CLB与PL内的其他资源连接起来
- 输入/输出块(IOB):实现PL逻辑资源之间的对接,并且提供物理设备焊盘来连接外部电路
特殊资源
- 块RAM
- 每个块RAM可以存储最多36KB的信息,并且可以配置为一个36KB的RAM或两个独立的18KB的RAM(默认的字宽是18位),还可以被重塑来包含更多更小或更少更长的单元
- DSP48E1
- 逻辑部分的LUT可以用来实现任意长度的算术运算,但是最适合的是做短字长的算术运算,而DSP48E1是专门用于实现对长字节的高速算术运算的逻辑片
通用输入/输出
ZYNQ上的IOB合起来称为SelectIO资源,被组成50个IOB一组,每个IOB有一个焊盘,与外部世界连接来做单个信号的输入输出
I/O组分为高性能(High Performance,HP)或高范围(High Range,HR),支持各种IO标准和电压
- HP接口的电压最高为1.8V,通常用作连接存储器和其他芯片的高速接口
- HR接口允许高达3.3V的电压,适合做各种IO标准的连接
- 两类接口都支持单端和差分信号,单端需要一个IOB连接,差分需要两个
- 每个IOB还包含一个IOSERDES资源,可以做并行和串行数据的可编程转换,数据可以是2位到8位的
其他可编程逻辑扩展接口
模数转换:XADC块,具有两个独立的12位ADC,每个可以以1Msps对外部模拟信号采样,对XADC的控制是用位于PS内部的PS-XADC接口控制块实现的,可以由在APU上执行的软件来编程
时钟:PL接收来自PS的四个独立的时钟输入
编程和调试:在PL部分实现了一组JTAG端口来实现对PL的配置和调试
处理器系统与可编程逻辑的接口
AXI标准
AXI表示的是高级可扩展接口(Advanced Extensible Interface),当前的版本是AXI4,是ARM AMBA3.0开放标准的一部分
- AXI4
- AXI4-Lite:只支持每次连接传输一个数据
- AXI4-Stream:用于高速流数据,支持批量传输无限大小的数据,没有地址机制
存储映射:如果一个协议是存储映射的,则在主机所发出的会话就会标明一个地址,对于每次会话单个数据传输的AXI4-Lite而言,数据就是写入那个指定的地址或者从那个地址读出;而对于AXI4批量的情况下,地址表明的是要传输的第一个数据字的地址,而从机端必须计算随后的数据字的地址
AXI互联和接口
在PS和PL之间的主要连接是通过一组9个AXI接口,每个接口由多个通道组成,这些形成了PS内部的互联以及与PL的连接
互联(Interconnect):实际上是一个开关,管理并直接传递所连接的AXI接口间的通信,在PS内有几个互联,其中有一些直接连接到PL,而另一些只用于内部连接,互联之间的连接也是用AXI接口所构成的
接口(Interface):用于在系统中的主机和从机之间传递数据、地址和握手信号的点对点连接
在处理器系统内部,AXI接口用来连接处理器核和SCU、cache存储器和OCM,以及连接PS内的各种互联,这些连接是对PS-PL边界上的连接的补充,上图中所示的三个互联(存储器、主机和从机互联)是内部连接到中央互联的
通用AXI:一条32位数据总线,共有四个通用接口:两个PS做主机,两个PL做主机
加速器一致性端口:在PL和APU内的SCU之间的单个异步连接,总线宽度为64位,端口用于实现APU cache和PL的单元之间的一致性
高性能端口:四个高性能AXI接口,带有FIFO缓冲来提供批量读写操作,并支持PL和PS中的存储器单元的高速率通信,数据宽度是32位或64位,在所有四个接口中PL都是做主机的
EMIO接口
EMIO不支持所有的MIO接口,支持的那些能力也受到了限制,被分为两个32位的组
- 直接连接到所需的PL的外部引脚上,这个连接是由一个约束文件中的条目指定的,在这种模式下,EMIO可以实现额外的64个输入线和64个带有输出使能的输出线
- 连接PS和PL里的外设模块
ZYNQ-7000系列成员
【ZYNQ学习】ZYNQ架构介绍的更多相关文章
- 人工智能深度学习Caffe框架介绍,优秀的深度学习架构
人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...
- Zynq学习笔记(1)——Hellow World
Zynq是一款SOC芯片,之前只是用了PL(Programmable Logic)部分,而Zynq最突出的功能,就是内部的双核Cortex-A9,所以从现在开始我将学习ZYNQ的SOC学习(PS部分) ...
- MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎
文章目录 Mysql逻辑架构介绍 总体概览 总体概览 mysql存储引擎 查看命令 看你的 mysql 现在已提供什么存储引擎 : 看你的 mysql 当前默认的存储引擎 : 各个引擎简介 MyISA ...
- 从零开始编写自己的C#框架(5)——三层架构介绍
三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪—<.NE ...
- Android_进化史和平台架构介绍
一.Android平台发展史 2008年9月,谷歌正式发布了Android 1.0系统,全球第一台Android设备HTC (G1) 2009年4月,谷歌正式推出了Android 1.5 ...
- Oracle GoldenGate学习之Goldengate介绍
Oracle GoldenGate学习之Goldengate介绍 (2012-10-02 17:07:27) 标签: 检查点 数据传输 队列 进程 分类: Goldengate Goldengate介 ...
- ML平台_微博深度学习平台架构和实践
( 转载至: http://www.36dsj.com/archives/98977) 随着人工神经网络算法的成熟.GPU计算能力的提升,深度学习在众多领域都取得了重大突破.本文介绍了微博引入深度学 ...
- python网络编程之C/S架构介绍
标签(空格分隔): c/s架构介绍 什么是C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),后续我们可以试着写个c/s软件实现服务器软件与客户端软件基于网络通信: 计 ...
- Flume系列一之架构介绍和安装
Flume架构介绍和安装 写在前面 在学习一门新的技术之前,我们得知道了解这个东西有什么用?我们可以使用它来做些什么呢?简单来说,flume是大数据日志分析中不能缺少的一个组件,既可以使用在流处理中, ...
- Kafka系列一之架构介绍和安装
Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...
随机推荐
- 基于GPU 显卡在k8s 集群上实现hpa 功能
前言 Kubernetes 支持HPA模块进行容器伸缩,默认支持CPU和内存等指标.原生的HPA基于Heapster,不支持GPU指标的伸缩,但是支持通过CustomMetrics的方式进行HPA指标 ...
- VS2022 17.1.6在windows10下打开winform设计器报timed out while connecting to named pipe错误
.net 6.0的项目,vs2022 17.1.6在windows10下打开winform设计器报timed out while connecting to named pipe错误,同样的项目在wi ...
- ASP.NET Core http请求内容过大, IIS服务器 返回 Request Too Long 解决方案
1.修改web.config文件内容如下: <?xml version="1.0" encoding="utf-8"?> <configura ...
- SpringCloudBus实现配置文件动态更新
前言 在SpringCloud之配置中心(config)的使用的基础上加上SpringCloudBus实现配置文件动态更新 在此之前需要修改版本,否则会出现"Endpoint ID 'bus ...
- Jenkins Pipeline(一) - 创建一个新的pipeline
jenkins pipeline: 使用Goovy语法,以代码形式更自由地编写jenkins job. 代码文本被称为Jenkinsfile IDE: vscode 推荐安装vscode插件: jen ...
- 发送QQ消息
#include <iostream>#include <windows.h>#include <vector> using namespace std;int m ...
- [iOS]遇到了一个问题:“XXXX”中无法使用Apple Pay ,检查此应用的设置并确定其设计可使用Apple Pay”
在钥匙串里查看,发现当时申请的Merchant ID XXXX 证书过期 1. 到 apple开发者: https://developer.apple.com/account/#/overview/ ...
- Mysql之迂回连接术
转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/14932870.html 关键词:OmniDB.Mysql Router 背景:项目的测试数据库放在了生产机 ...
- Spyder无法使用搜狗输入中文的解决办法
Ubuntu 18.04 LTS系统下,spyder4编辑器无法使用搜狗输入中文.系统输入法为fcitx+搜狗拼音,chrome浏览器无此问题.网上答案: Spyder (以及其他PyQt程序) 无法 ...
- CSP202104-4 校门外的树
设状态时,首先从简单状态设起: 一维不行再试二维.简单状态应付不了再设复杂的(因为某些状态可以体现在状态转移的过程中,或者说状态转移方程中,不一定体现在原式中) E.g. 计算机软件能力认证考试系统- ...