在上一篇博客中,主要介绍了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. Asp.NET core/net 5接口返回实体含有long/int64的属性序列后最后几位变为0的解决

    Asp.NET core /net 5接口返回实体含有long/int64的属性时,序列后最后几位变为0的. 不得不吐槽一下MS,这种事还有问题,NND. 解决方案在startup.cs中添加:opt ...

  2. CVE-2020-1938 Tomcat AJP漏洞复现

    一  漏洞环境 # vulhub靶场地址 https://github.com/vulhub/vulhub靶场还需要有python环境,pip,docker docker-composeGitHub上 ...

  3. Spark应用程序第三方jar文件依赖解决方案

    第一种方式 操作:将第三方jar文件打包到最终形成的spark应用程序jar文件中 应用场景:第三方jar文件比较小,应用的地方比较少 第二种方式 操作:使用spark-submit提交命令的参数: ...

  4. appium:报错Message: Message: Parameters were incorrect. We wanted {"required":["value"]}

    python版本3.7.4,selenium版本4.0.0,Appium-Python-Client版本2.0.0,报错见标题 别人给出的建议:https://blog.csdn.net/liangs ...

  5. 比Everything更强的文件搜索工具,支持文件名、文件内容和文件图片上的文字搜索,文件内容搜索工具,文件图片内容搜索工具,OCR图片文本识别搜索,文件快速搜索工具,文字识别文件搜索工具

    Windows自带的文件搜索功能想必不需要过多吐槽,搜索速度简直是在龟爬,所以小编很早之前就在用Everything进行文件搜索了, 不过,今天的主角不是它,而是比它更更更更更强的一款软件! 这款软件 ...

  6. docker之rabbitmq delayed message exchange

    创建dockerfile FROM rabbitmq:3.9.11-management-alpine COPY rabbitmq_delayed_message_exchange-3.9.0.ez ...

  7. 利用Opencv+Python 实现二维码识别

    pip3 install pyzbar   准备工作: 二维码图片,我这里直接打印在了一张A4纸上,或者直接在草料网站上生成 草料二维码生成器,存放在手机上进行显示.在安装条码扫描库的时候大家注意:z ...

  8. Flink常见问题解决记录

    1.Hardlink from files of previous local stored state might cross devices 开启了state.backend.local-reco ...

  9. C++ Gui Qt4 第二章

    这一章需要使用在控制台使用qmake 使用qmake的时候要先配置qmake的环境变量 找到qmake所在的目录,添加环境变量即可 在使用的时候要先跳转到源文件所在的目录 课本中说qmake可以自动检 ...

  10. docker kafka 一键搞定

    1. docker network create app-tier 2. docker run -d --name zookeeper-server \ --network app-tier \ -e ...