在上一篇博客中,主要介绍了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架构介绍的更多相关文章

  1. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构

    人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...

  2. Zynq学习笔记(1)——Hellow World

    Zynq是一款SOC芯片,之前只是用了PL(Programmable Logic)部分,而Zynq最突出的功能,就是内部的双核Cortex-A9,所以从现在开始我将学习ZYNQ的SOC学习(PS部分) ...

  3. MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎

    文章目录 Mysql逻辑架构介绍 总体概览 总体概览 mysql存储引擎 查看命令 看你的 mysql 现在已提供什么存储引擎 : 看你的 mysql 当前默认的存储引擎 : 各个引擎简介 MyISA ...

  4. 从零开始编写自己的C#框架(5)——三层架构介绍

    三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪—<.NE ...

  5. Android_进化史和平台架构介绍

    一.Android平台发展史  2008年9月,谷歌正式发布了Android 1.0系统,全球第一台Android设备HTC (G1)  2009年4月,谷歌正式推出了Android 1.5      ...

  6. Oracle GoldenGate学习之Goldengate介绍

    Oracle GoldenGate学习之Goldengate介绍 (2012-10-02 17:07:27) 标签: 检查点 数据传输 队列 进程 分类: Goldengate Goldengate介 ...

  7. ML平台_微博深度学习平台架构和实践

    ( 转载至: http://www.36dsj.com/archives/98977)  随着人工神经网络算法的成熟.GPU计算能力的提升,深度学习在众多领域都取得了重大突破.本文介绍了微博引入深度学 ...

  8. python网络编程之C/S架构介绍

    标签(空格分隔): c/s架构介绍 什么是C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),后续我们可以试着写个c/s软件实现服务器软件与客户端软件基于网络通信: 计 ...

  9. Flume系列一之架构介绍和安装

    Flume架构介绍和安装 写在前面 在学习一门新的技术之前,我们得知道了解这个东西有什么用?我们可以使用它来做些什么呢?简单来说,flume是大数据日志分析中不能缺少的一个组件,既可以使用在流处理中, ...

  10. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

随机推荐

  1. 基于GPU 显卡在k8s 集群上实现hpa 功能

    前言 Kubernetes 支持HPA模块进行容器伸缩,默认支持CPU和内存等指标.原生的HPA基于Heapster,不支持GPU指标的伸缩,但是支持通过CustomMetrics的方式进行HPA指标 ...

  2. 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 ...

  3. ASP.NET Core http请求内容过大, IIS服务器 返回 Request Too Long 解决方案

    1.修改web.config文件内容如下: <?xml version="1.0" encoding="utf-8"?> <configura ...

  4. SpringCloudBus实现配置文件动态更新

    前言 在SpringCloud之配置中心(config)的使用的基础上加上SpringCloudBus实现配置文件动态更新 在此之前需要修改版本,否则会出现"Endpoint ID 'bus ...

  5. Jenkins Pipeline(一) - 创建一个新的pipeline

    jenkins pipeline: 使用Goovy语法,以代码形式更自由地编写jenkins job. 代码文本被称为Jenkinsfile IDE: vscode 推荐安装vscode插件: jen ...

  6. 发送QQ消息

    #include <iostream>#include <windows.h>#include <vector> using namespace std;int m ...

  7. [iOS]遇到了一个问题:“XXXX”中无法使用Apple Pay ,检查此应用的设置并确定其设计可使用Apple Pay”

    在钥匙串里查看,发现当时申请的Merchant ID XXXX 证书过期 1. 到 apple开发者: https://developer.apple.com/account/#/overview/ ...

  8. Mysql之迂回连接术

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/14932870.html 关键词:OmniDB.Mysql Router 背景:项目的测试数据库放在了生产机 ...

  9. Spyder无法使用搜狗输入中文的解决办法

    Ubuntu 18.04 LTS系统下,spyder4编辑器无法使用搜狗输入中文.系统输入法为fcitx+搜狗拼音,chrome浏览器无此问题.网上答案: Spyder (以及其他PyQt程序) 无法 ...

  10. CSP202104-4 校门外的树

    设状态时,首先从简单状态设起: 一维不行再试二维.简单状态应付不了再设复杂的(因为某些状态可以体现在状态转移的过程中,或者说状态转移方程中,不一定体现在原式中) E.g. 计算机软件能力认证考试系统- ...