ZYNQ简介
ZYNQ 是赛灵思公司(Xilinx)新一代全可编程片系统推出(APSoC),它可以编程处理器 性与 FPGA 为了提供无与伦比的系统性能、灵活性和可扩展性,完美整合了硬件的可编程性。
ZYNQ简介
-
Zynq-7000 系列是 Xilinx 于 2010 年 4 第一个月度可扩展处理平台
-
基于 ARM 处理器的 SoC 能满足高性能、低功耗、多核处理能力等复杂嵌入式系统的要求。
-
双核组合 ARM Cortex-A9 传统的现场可编程门阵列处理器和 (FPGA)逻辑部件
-
ZYNQ 的全称是 Zynq-7000 All Programmable SoC
一个具有一定功能的电路系统由处理器、接口、存储器、模数转换器等多个模块组成。这些功能模块可以通过单独的设备实现,然后打印电路板(PCB)上组合起来,最终形成板上系统 (System-on-a-Board)。
板上系统的示意图
片上系统(System-on-Chip)指的是在单个硅芯片就可以实现整个系统的功能
示意图如下:
-
片上系统 SoC 存储、处理、逻辑和接口等功能模块实现在芯片中 像板上的系统一样,需要使用几个不同的物理芯片来实现
-
与板上系统相比,SoC 解决方案成本较低,可以在不同的系统单元之间实现更快、更安全的数据传输,整体系统速度更高,功耗更低,物理尺寸更小,可靠性更好。
可编程片上的系统(SOPC,System-on-Progammable-Chip)它提供了一个更灵活的解决方案:在可编程和可重新配置的芯片上实现的 SoC
FPGA 为了实现包括嵌入式处理器在内的不同系统的功能,自然的灵活性可以随意重新配置。
和使用 ASIC 来实现 SoC 相比,FPGA 构建更基础、更灵活的平台,方便系统升级。
ZYNQ 它由两个主要部分组成:
- 一个由双核 ARM Cortex-A9 为核心组成的处理系统(PS,Processing System)
- 等价于一片 FPGA 可编程逻辑(PL,Programmable Logic)部分
ZYNQ 结构简化模型:
PS 包括处理器和系统存储器的固定架构; PL 完全灵活,给设计师一个 创建定制外设的空白画布。
在 ZYNQ 上,ARM Cortex-A9 它是一种可以运行的应用级处理器 Linux 可编程的操作系统 逻辑是基于 Xilinx 7 系列的 FPGA 架构。
ZYNQ 实现工业标准的架构 AXI 接口在芯片的两部分之间 连接高带宽、低延迟。
PFGA简介
ZYNQ 中集成了 ARM 处理器与 FPGA
-
开发数字集成电路
在数字集成电路中,,用以实现(和,或,非)和复合 逻辑操作(与非、异或等)。).与上述逻辑操作相对应,常用的门电路包括与门、或门、非门、异或 门等
-
FPGA的由来
数字集成电路从逻辑功能的特点进行分类,可分为通用型和专用型。
为特殊用途设计的集成电路称为特殊集成电路, 即所谓的 ASIC(Application Specific Integrated Circuit)。
可编程逻辑器件 PLD 它是作为一种通用设备生产的,但其逻辑功能是由用户编程设置的 的。
可编程逻辑器件,它们内部单元 它们之间的连接是通过写入编程数据来确定的,不同的逻辑功能可以通过写入不同的编程数据来获得。
FPGA 由许多“(Configurable Logic Block,CLB)、(I/O Block,IOB) 和(Programmable Interconnection Matrix,PIM)组成。
在 FPGA 中,CLB 被布置 可编程布线资源以阵列形式分布 CLB 与 CLB 之间,像大城市的街道一样纵横联系 连接。这些布线资源分为行互联和列互联,可以跨越整个设备或局部 CLB 互联。
FPGA 布线资源使设备中的所有逻辑资源都可以 与芯片中的其他资源进行通信
SPLD 和 CPLD 在电路中,采用与或逻辑阵列和输出逻辑单元的结构形式。
FPGA 采用完全不同的电路结构形式(查找表,LUT)
FPGA的用途
可编程器件,FPGA 任何数字设备的功能都可以实现最高性能 CPU,下至简单的 74 所有电路都可以使用 FPGA 来实现。
可编程逻辑自然为并行算法的实现提供了理想的资源。例如,在图像处理中,大量的像素点应该同时进行数学操作 FPGA 它非常适用于像素点级图像处理所需的快速并行操作。
ZYNQ PL简介
ZYNQ PL部分等价于 Xilinx 7 系列 FPGA,
简化的 FPGA 基本结构由 6 部分组成,分别是、、、、和等,
-
可编程输入/输出单元
I/O该单元是芯片与外部电路的接口部分,以满足不同电气特性下输入/输出信号的驱动和匹配要求 FPGA 目前大部分应用都比较灵活,应用也比较灵活。 FPGA 的 I/O 单元设计为可编程模式,即通过软件的灵活配置,可以适应不同的电气标准 I/O 物理特性
匹配阻抗特性、上下拉电阻、驱动电流大小等。
常见的电气标准有 LVTTL,LVCMOS,SSTL,HSTL,LVDS,LVPECL 和 PCI 等
ZYNQ 通用输入/输出功能(IOB)合起来被称作 SelectIO 它们被组织成资源 50 个 IOB 一组。每 个 IOB 单个信号的输入或输出是与外界连接的焊盘。
每个 IOB 还包含一个 IOSERDES 资源可以进行并行和串行数据的可编程转换。
-
基本可编程逻辑单元
可编程逻辑单元是可编程逻辑的主体,可根据设计灵活地改变其内部连接和配置,完成不同的逻辑功能。
FPGA 一般是基于 SRAM 工艺,其基本可编程逻辑单元几乎都是通过搜索表(LUT,Look Up Table) 和寄存器(Register)组成。Xilinx 7 系列 FPGA 内部搜索表为 6 输入,。
FPGA 内部寄存器结构相当灵活,可配置为带同步/异步复位或位置、时钟使能的触发器或锁定器,FPGA 同步时序逻辑设计依靠寄存器完成。
例如,Altera 可编程逻辑单元通常被称为可编程逻辑单元 LE(Logic Element),加一个寄存器 LUT 构成。Altera 大多数 FPGA 将 10 个 LE 有机组合形成更大的功能单元-逻辑阵列模块(LAB,Logic Array Block)。LAB 中除了 LE 还包含 LE 进位链之间,LAB 本地互联网资源控制信号,LUT 连接和控制资源,如级联链、寄存器级联链等。
Xilinx 7 系列 FPGA 可编程逻辑单元称为可编程逻辑单元 CLB(Configurable Logic Block,每个都可以配置逻辑块) CLB 它包含两个逻辑片(Slice)每个 Slice 由 4 个查找表、8 由触发器和其他逻辑组成。
CLB 它是逻辑单元的最小组成部分 PL 通过可编程互联连接到其他类似资源的二维阵列。 CLB 它包含两个逻辑片,靠近一个开关矩阵
-
嵌入式块RAM
目前大多数 FPGA 都有嵌入式块 RAM(Block RAM),FPGA 可编程嵌入内部 RAM 模块,大地拓 展了 FPGA 应用范围和灵活性。
Zynq-7000 里的块 RAM 和 Xilinx 7 系列 FPGA 里的那些块 RAM 它们是平等的,它们可以实现 RAM、ROM 和 先入先出(First In First Out,FIFO)缓冲器。每个块 RAM 储存最多 36KB 信息配置的信息 为一个 36KB 的 RAM 或两个独立的 18KB RAM。默认字宽是 位这样的配置下,每个位置 RAM 含有 2048 个 存储单元。
<>RAM 还可以被“重塑”来包含更多更小的单元(比如 4096 个单元 x9 位,或 8192x4 位),或是另外做成更少更长的单元(如1024单元 x36 位, 512x72 位)。把两个或多个块 RAM 组合起来可以形成更 大的存储容量。
除了块 RAM,还可以灵活地将 LUT 配置成 RAM,ROM,FIFO 等存储结构,这种技术被称为分布式 RAM。
根据设计需求,块RAM的数量和配置方式也是器件选型的一个重要标准。
-
丰富的布线资源
布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速 度。
FPGA 芯片内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同而划分为 4 类不同的类别:
- 第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线
- 第二类是长线资源,用以完成芯片 Bank 间的高速信号和第二全局时钟信号的布线
- 第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线
- 第四类是分布式的布线资源,用于专有时钟、复位等控制信号线
设计者不需要直接选择布线资源,**布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。**从本质上讲,布线资源的使用方法和设计的结果有直接的关系。
-
底层嵌入功能单元
底层嵌入功能单元的概念比较笼统,这里指的是那些的嵌入式功能模块,比如 PLL (Phase Locked Loop)、DLL(Delay Locked Loop)、DSP、CPU 等。
随着 FPGA 的发展,这些模块被越来越多地嵌入到 FPGA 的内部,以满足不同场合的需求
大多数 FPGA 厂商都在 FPGA 内部集成了 DLL 或者 PLL 硬件电路,用以完成时钟的高精度、低抖动的倍频、分频、占空比调整、相移等功能。目前,高端 FPGA 产品集成的 DLL 和 PLL 资源越来越丰富, 功能越来越复杂,精度越来越高。
-
内嵌专用硬核
内嵌专用硬核与前面的底层嵌入单元是有区分的,内嵌专用硬核主要指那些,。
在ZYNQ的PL 端有一个,它就是一个硬核。XADC包含两个模数转换器(ADC), 一个模拟多路复用器,片上温度和片上电压传感器等。可以利用这个模块监测芯片温度和供电电压, 也可以用来测量外部的模拟电压信号。
ZYNQ PS简介
ZYNQ 实际上是一个的系统,PL 只是它的一个外设。
Zynq-7000 系列的亮点在于它包含了完整的 ARM 处理器系统,且处理器系统中集成了内存控制器和大量的外设,使 Cortex-A9 处理器可以完全独立于可编程逻辑单元。而且实际上 在 ZYNQ 中,PL 和 PS 两部分的供电电路是独立的,这样 PS 或 PL 部分不被使用的话就可以被断电。
FPGA 可以用来搭建嵌入式处理器,像 Xilinx 的 MicroBlaze 处理器 或者 Altera 的 Nios II 处理器,像这种使用 FPGA 的可编程逻辑资源搭建的处理器称之为“软核”处理器,它的优势在于处理器的数量以及实现方式的灵活性。
ZYNQ 中集成的是一颗“硬核”处理器,它是硅芯片上专用且经过优化的硬件电路,硬核处理器的优势是它可以获得相对较高的性能。另外,ZYNQ中的硬件处理器和软核处理器并不冲突,完全可以使用 PL 的逻辑资源搭建一个 Microblaze 软核处理器,来和 ARM 硬核处理器协同工作。
Zynq 处理器系统里并非只有 ARM 处理器,还有一组相关的处理资源,形成了一个,另外还有扩展外设接口、cache 存储器、存储器接口、 互联接口和时钟发生电路等。
ZYNQ 处理器系统(PS)示意图如下
-
APU
APU 主要是由两个 ARM 处理器核组成的,每个都关联了一些可计算 的单元:
-
一个 NEONTM 媒体处理引擎(Media Processing Engine,MPE)和浮点单元(Floating Point Unit, FPU)
-
一个内存管理单元(Memory Management Unit,MMU)
-
一个一级 cache 存储器(分为指令和 数据两个部分)。
-
APU 里还有一个二级 cache 存储器,再往下还有片上存储器(On Chip Memory,OCM), 这些是两个 ARM 处理器共用的。
-
由一个一致性控制单元(Snoop Control Unit,SCU)在 ARM 核和 二级 cache 及 OCM 存储器之间形成了桥连接。
SCU 还部分负责与 PL 对接
-
-
外部接口
Zynq PS 实现了众多接口,既有 PS 和 PL 之间的,也有 PS 和外部部件之间的
PS 和外部接口之间的通信主要是通过复用的输入/输出(Multiplexed Input/Output,MIO)实现的, 它提供了可以灵活配置的 54 个引脚,这表明外部设备和引脚之间的映射是可以按需定义的。
当需要扩展超过 54 个引脚的时候可以通过扩展 MIO(Extended MIO,EMIO)来实现,EMIO 并不是 PS 和外部连 接之间的直接通路,而是。
PS 中可用的 I/O 包括标准通信接口和通用输入/输出(General Purpose Input/Output,GPIO), GPIO 可以用做各种用途,包括简单的按钮、开关和 LED
-
存储器接口
Zynq-7000 APSoC 上的存储器接口单元包括一个动态存储器控制器和几个静态存储器接口模块。
动态存储器控制器可以用于 DDR3、DDR3L、DDR2 或 LPDDR2。
静态存储器控制器支持一个 NAND 闪存接口、 一个 Quad-SPI 闪存接口、一个并行数据总线和并行 NOR 闪存接口。
-
片上存储器
片上存储器包括 256kB 的 RAM(OCM)和 128kB 的 ROM(BootROM)。
OCM 支持两个 64 位 AXI 从 机接口端口,一个端口专用于通过 APU SCU 的 CPU/ACP 访问,而另一个是由 PS 和 PL 内其他所有的总线 主机所共享的。
BootROM 是 ZYNQ 芯片上的一块非易失性存储器,它包含了 ZYNQ 所支持的配置器件的驱动。
BootROM 对于用户是不可见的,专门保留且只用于引导的过程。
-
AXI接口
ZYNQ 将高性能 ARM Cotex-A 系列处理器与高性能 FPGA 在单芯片内紧密结合,为设计带来了如减小 体积和功耗、降低设计风险,增加设计灵活性等诸多优点。
在将不同工艺特征的处理器与 FPGA 融合在一 个芯片上之后,片内处理器与 FPGA 之间的就成了 ZYNQ 芯片设计的重中之重。如果 Cotex-A9 与 FPGA 之间的数据交互成为瓶颈,那么处理器与 FPGA 结合的性能优势就不能发挥出来。
Xilinx 在 IP 核中使用 AXI 协议,AXI 的英文全称是 Advanced eXtensible Interface,即高级可扩展接口,它是 ARM 公司所提出的 AMBA(Advanced Microcontroller Bus Architecture)协议的一部分。
AXI 协议是一种高性能、高带宽、低延迟的片内总线,具有如下特点:
-
总线的地址/控制和数据通道是分离的;
-
支持不对齐的数据传输;
-
支持突发传输,突发传输过程中只需要首地址;
-
具有分离的读/写数据通道;
在数字电路中只能传输二进制数 0 和 1,因此可能需要一组信号才能高效地传输信息,这一组信号就组成了接口。
AXI4 协议支持以下三种类型的接口:
-
AXI4:高性能存储映射接口。
-
AXI4-Lite:简化版的 AXI4 接口,用于较少数据量的存储映射通信。
-
AXI4-Stream:用于高速数据流传输,非存储映射接口。
:如果一个协议是存储映射的,那么主机所发出的会话(无论读或写)就会标明一个地址。这个地址对应于系统存储空间中的一个地址,表明是针对该存储空间的读写操作。
AXI4 协议支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。
AXI-Lite 为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器。
AXI-Stream 接口则像 FIFO 一样, 数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如
在 PS 和 PL 之间的主要连接是通过一组 9 个 AXI 接口,每个接口有多个通道组成
这些形成了 PS 内 部的互联以及与 PL 的连接,如下图所示:
PS 与 PL 的 AXI 接口
-
上图给出了每个接口的简述,标出了主机和从机(按照惯例,主机是控制总线并发起会话的,而从机是做响应的)
接口命名的第一个字母表示的是 PS 的角色,也就是说,第一个字母 “M” 表示 PS 是主机,而第一个字母“S”表示 PS 是从机。
PS 和 PL 之间的 9 个 AXI 接口可以分成三种类型
- 通用 AXI(General Purpose AXI):一条 32 位数据总线,适合 PL 和 PS 之间的中低速通信。接口是透传的不带缓冲。总共有四个通用接口:两个 PS 做主机,另两个 PL 做主机。
- 加速器一致性端口(Accelerator Coherency Port):在 PL 和 APU 内的 SCU 之间的单个异步连接, 总线宽度为 64 位。这个端口用来实现 APU cache 和 PL 的单元之间的一致性。PL 是做主机的。
- 高性能端口(High Performance Ports):四个高性能 AXI 接口,带有 FIFO 缓冲来提供“批量”读写操作,并支持 PL 和 PS 中的存储器单元的高速率通信。数据宽度是 32 或 64 位,在所有四个接口中 PL 都是做主机的。
上面的每条总线都是由组成的,这些总线上的会话是根据 AXI4 总线协议进行通信的。
参考
正点原子–1_启明星ZYNQ之FPGA开发指南_V2.0