The Zynq Book读书笔记——2 Zynq芯片(“是什么”)

2.1 处理器系统
  1. Xilinx的MicroBlaze“软”处理器,由可编程逻辑部分的单元组合而成的,即软处理器的实现和部署在FPGA的逻辑结构里的任何其他IP包是等价的。
  2. 在Zynq的PL部分配上一个或多个MicroBlaze软处理器,用来和ARM处理器协同工作。
    在这里插入图片描述

在这里插入图片描述

2.1.1 应用处理单元(APU)

在这里插入图片描述

  1. 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存储器之间形成了桥连接(这个单元还部分负责与PL对接)
  1. MMU的主要责任是在虚拟地址和物理地址之间做翻译
  2. 一致性(窥视)控制单元(SCU)从事的是一些和两个处理器与一二级cache存储器之间的接口相关的任务;负责维持两个处理器的数据cache存储器;SCU还要通过加速器一致端口(Accelerator Coherency Port,ACP)来管理在PS和PL之间的访问会话。
  3. 作为主ARM处理器的附加功能,NEON引擎实现了单指令多数据(Single Instruction Multiple Data,SIMD)功能来实现媒体和DSP类算法的战略加速。NEON指令时对标准ARM指令集的扩展,可以直接使用,也可以通过写出遵循特定的格式的C代码,来让编译器产生NEON指令
  4. SIMD术语意味着NEON引擎可以对输入向量中多组数据,同时执行相同的运算来得到对应的输出向量。
  5. NEON支持多种数类型,包括有符号和无符号的整数、单精度浮点数和半精度浮点数,但是不支持双精度的。
    在这里插入图片描述
  6. 对浮点单元(FPU)的扩展,叫做“浮点扩展”,也叫做“VFP(Vector Floating Point,向量浮点)扩展”。该单元实现了与IEEE 754标准兼容的浮点运算的硬件加速,支持单精度和双精度格式,另外还部分支持半精度和整数转换。
2.1.2 关于ARM模式
2.1.3 处理器系统外部接口
  1. PS和外部接口之间的通信主要是通过复用的输入/输出(Multiplexed Input/Output,MIO)实现的,它提供了可以做灵活配置的54个引脚。这样的连接也可以通过扩展MIO(Extended MIO,EMIO)来实现,EMIO并不是PS和外部连接之间的直接通路,而是通过共用了PL的I/O资源来实现的。
  2. 当需要扩展超过54个引脚的时候可以用EMIO,而当PL中实现了一个IP包的时候这也是PS和PL中的IP包接口的一种方法。
  3. 可用的I/O包括标准通信接口和通用输入/输出(General Purpose Input/Output,GPIO),GPIO可以用做各种用途,包括简单的按钮、开关和LED。
    在这里插入图片描述
2.2 可编程逻辑
2.2.1 逻辑部分
  1. PL主要是由通用的FPGA逻辑部分组成的,这个FPGA是由逻辑片和可配置逻辑块(Configurable Logic Block,CLB)组成的,另外还有用于接口的输入/输出块(Input/Output Block,IOB)
    在这里插入图片描述
  • 可配置逻辑块(CLB)——CLB是逻辑单元的小规模、普通编组,在PL中排列为一个二维阵列,通过可编程互联连接到其他类似的资源。
  • 片(Slice)——CLBA里的一个子单元,里面有实现组合和时序逻辑电路的资源。
  • 查找表(Lookup Table,LUT)——一个灵活的资源,可以实现(一)至多6个输入的逻辑函数;(二)一小片只读存储器(ROM);(三)一小片随机访问存储器(RAM);或(四)一个移位寄存器。LUT可以按需组合形成更大的逻辑函数、存储器和移位寄存器。
  • 触发器(Flip-flop,FF)——一个实现1位寄存的时序电路,带有复位功能。FF的一种用处是实现锁存。
  • 开关矩阵(Switch Matrix)——每个CLB旁都有一个开关矩阵,实现灵活的布线功能来(一)连接CLB内的单元;或(二)把一个CLB与PL内的其他资源连接起来。
  • 进位逻辑(Carry Logic)——算术电路需要在相邻的片之间传递信号,这就是通过进位逻辑来实现的。进位逻辑吧布线和复用器组成链条来连接一个垂直列上的片。
  • *输入/输出块(Input/Output Blocks,IOB)——IOB实现了PL逻辑资源之间的对接,并且提供物理设备“焊盘”来连接外部电路。每个IOB可以处理一位的输入或输出信号。IOB通常位于芯片的周边。
    在这里插入图片描述
2.2.2 特殊资源:DSP48E1和块RAM

在这里插入图片描述

  1. RAM:满足密集存储;
  2. DSP48E1:用于高速算术。
  3. 这两个资源都按列安排列集成在逻辑阵列中,嵌入在逻辑部分中,而且往往彼此靠近(因为密集计算和在内存中存储数据往往是紧密联系的运算)。
  4. 块RAM可以实现RAM、ROM和先进先出(First In First Out,FIFO)缓冲器,同时还支持纠错编码(Error Correction Coding,ECC)。
  5. 每个块RAM可以存储最多36KB的信息,并且可以被配置为一个36KB的RAM或两个独立的18KB的RAM。RAM还可以被“重塑”来包含更多更小的单元(比如4096个单元x9位,或8192x4位),或是另外做成更少更长的单元(如1024单元x36位,512x72位)。
  6. 使用块RAM就意味着能在芯片内优化的专用存储单元内,用很小的物理空间储存大量的数据。另一种方法是分布式RAM(Distributed RAM),这是用逻辑部分里的LUT来搭建的。
  7. 逻辑部分里的LUT可以用来实现任意长度的算术运算,但是最适合的是做短字长的算术运算(长字长的算术电路会在逻辑片中占据较大的空间,这样的布局和布线因素会使得时钟频率是次优的)。DSP48E1是专门用于实现对字长长信号的高速算术运算的逻辑片。
2.2.3通用输入/输出
  1. Zynq上的通用输入/输出功能(IOB)合起来被称作SelectIO资源,它们被组织成50个IOB一组。每个IOB有一个焊盘,是与外部世界连接来做单个信号的输入或输出的。
  2. I/O组被分类位高性能(High Performance,HP)或高范围(High Range,HR),支持各种I/O标准和电压。
  3. 每个IOB还包含一额IOSERDES资源,可以做并行和串行数据的可编程转换(串行化和反串行化),数据可以是2位到8位。
2.2.4 通信接口
  1. Zynq芯片里含有潜入在逻辑部分里的GTX收发器和高速通信接口块。
  2. GTX收发器是以“四元组”形式实现的,就是说一组有四个独立的通道,每个通道包括一个那个通道专用的锁相环(Phase Locked Loop,PLL)、一个发送器和一个接收器。
  3. 要使用这写GTX块,需要通过一个Wizard工具的支持,它能自动创建所需的接口的核。从用户的角度看,就是把一个块引入系统,选择所需的协议核硬件选项,然后设置参数就可以了。
2.2.5 其他可编程逻辑扩展接口
  • 模拟-数字转换 —— PL还具有其他的硬IP部件:XADC块。对XADC的控制是用位于PS内的PS-XADC接口控制块来实现的,而且PS-XADC控制块本身可以由APU上所执行的软件来编程。
  • 时钟——PL接收来自PS的四个独立的时钟输入,另外还能产生和分发它自己的与PS无关的时钟信号。
  • 编程和调试——在PL部分实现了一组JTAG端口实现对PL的配置和调试。
2.3 处理器系统与可编程逻辑的接口
2.3.1 AXI标准
  1. AXI表示的是高级可扩展接口(Advanced eXtensible Interface),当前的版本是AXI4,它是ARM AMBA 3.0开放标准的一部分。
  2. 三类AXI4:
  • AXI4——用于存储映射链接,它支持最高的性能:通过一簇高达256个数据字(或“数据拍(data beats)”)的数据传输来给定一个地址。
  • AXI4-Lite——一种简化了的链接,只支持每次连接传输一个数据(非批量)。AXI4-Lite也是存储映射的:这种协议下每次传输一个地址和单个数据。
  • AXI4-Stream——用于高速流数据,支持批量传输无限大小的数据。没有地址机制,这种总线类型最适合源和目的地之间的直接数据流(非存储器映射)。
  1. *“存储映射”*的解释:
    如果一个协议是存储映射的,那么在主机所发出的会话(无论读或写)中就会标明一个地址,这个地址是对应于系统存储空间中的一个地址。对于近支持每次会话单个数据传输的AXI4-Lite而言,数据就是写入那个指定的地址,或从那个地址读出;而在AXI4批量的情况下,地址表明的是要传输的第一个数据字的地址,而从机端必须计算随后的数据字的地址。
2.3.2 AXI互联和接口
  1. 在PS和PL之间的主要连接是通过一组9个AXI接口,每个接口有多个通道组成。
  • 互联(Interconnect)——互联实际上是一个开关,管理并直接传递所连接的AXI接口之间的通信。
  • 接口(Interface)——用于在系统内的主机和从机之间传递数据、地址和握手信号的点对点连接。
    在这里插入图片描述
  1. 主机是控制总线并发起会话的,从机是做响应的。M表示PS是主机,S表示PS是从机。
    在这里插入图片描述
  • 通用AXI(General Purpose AXI)——一条32位数据总线,适合PL和PS之间的中低速通信。
  • 加速器一致性端口(Accelerator Coherency Port)——在PL和APU内的SCU之间的单个异步连接,总线宽带位64位。这个端口用来实现APU cache和PL的单元之间的一致性。
  • 高性能端口(High Performance Ports)——四个高性能AXI接口,带有FIFO缓冲来提供“批量”读写操作,并支持PL和PS中存储器单元的高速率通信。
2.3.3 EMIO接口
  1. 从PS出来,有几种连接可以经由PL到外部接口上,这被称作扩展的MIO(Extended MIO),即EMIO。
    在这里插入图片描述
2.3.4 其他PS-PL信号
  1. 跨越PS-PL边界的其他信号包括看门狗定时器、重启信号、中断和DMA接口信号。
2.4 安全
2.4.1 安全引导
  1. 当芯片上电或重启的时候,PS的第一个和从外部存储器中引导,然后才会去配置PL。通过限制引导方法位单一来源,就确保了不可能在PL已经配置时候再有人工的方法来转装载恶意的软件,同时再处理器已经初始化之后也没办法再装载而已的映像到PL中去。
2.4.2 硬件支持

Zynq芯片和安全有关的一些特性:

  • ARM TrustZone支持
  • AES-256加密(BBRAM保存键码和eFUSE键码保存)
  • 安全认证和启动(PS及PL)
  • HMAC位流认证
  • FSBL RSA-2048认证
  • 禁止强硬回读
  • JTAG 禁止/监视
  • SEU检查器
2.4.3 运行时刻安全
  1. 运行时刻安全可以被分为三个保护领域:
  • 处理器系统到可编程逻辑——防止运行在Zynq PS上的软件访问基于硬件的IP和PL里运行的从机。Zynq芯片有两个办法来实现这个防护:(一)一种Zynq特有的ARM TrustZone 技术的实现和(二)基于对于从主机来的AXI端口会话和对应从机地址的监视。
  • 处理器系统到处理器系统——前代的嵌入式系统,是融合多个独立的子系统而构成的,每一个子系统进而又是由专门的硬件、操作系统和软件所组成的。
    *内存管理单元(Memory Management Unit,MMU)安全——通过以安全的方式来配置MMU的页表(Page Table),就限制了未经授权的软件应用和硬件驱动程序访问特定的内存区域、设备、配置寄存器和IP核,从而提升了系统安全。
  • 可编程逻辑到处理器系统或可编程逻辑——Zynq PL的主要优势之一就是能轻易地实例化出多个可以表现为AXI主机的IP包。
  1. Zynq-7000 和ARM Trust Zone技术
    TrustZone架构使得嵌入式系统内受信任的计算成为可能,它建立了一个硬件架构,能在系统设计的整个过程种建立起安全架构。
2.5 Zynq-7000 系列成员

在这里插入图片描述
对于通用的Zynq系列成员来说,较小的芯片是基于Xilinx的Artix-7 FPGA逻辑部分的,而较大的芯片是基于Kintex-7逻辑部分的。

2.6 本章回顾
2.7 架构参考指南

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章