1、ZYNQ 开篇简介

目录

一、ZYNQ简介  

二. PS 和 PL 互联技术   

三、ZYNQ 芯片开发流程的简介 

四、学习 ZYNQ 要具备哪些技能 


一、ZYNQ简介  

      Zynq 系列的亮点在于 FPGA 里包含了完整的 ARM 处理子系统(PS),每一颗 Zynq 系列的
处理器都包含了 Cortex-A9 处理器,整个处理器的搭建都以处理器为中心,  而且处理器子系统
中集成了内存控制器和大量的外设,  使 Cortex-A9 的核在 Zynq-7000 中完全独立于可编程逻辑
单元,也就是说如果暂时没有用到可编程逻辑单元部分(PL),  ARM 处理器的子系统也可以独
立工作,这与以前的 FPGA 有本质区别,其是以处理器为中心的。 

        Zynq 就是两大功能块,PS  部分和  PL 部分,  说白了,就是 ARM 的 SOC 部分,和 FPGA
部分。其中,PS 集成了两个 ARM Cortex™-A9 处理器,AMBA®互连,内部存储器,外部存储器
接口和外设。这些外设主要包括 USB 总线接口,以太网接口,SD/SDIO 接口,I2C 总线接口,
CAN 总线接口,UART 接口,GPIO 等。 

  图1、     ZYNQ 芯片的总体框图 

PS:  处理系统  (Processing System) ,    就是与 FPGA 无关的 ARM 的 SOC 的部分。 
PL:  可编程逻辑  (Progarmmable Logic),  就是 FPGA 部分。 

PL部分是与7系列一样的,在DS190文档中可以看到对应的7系列产品。

图2 Zynq 型号相当于纯逻辑FPGA型号

二. PS 和 PL 互联技术   

        在 ZYNQ 芯片内部用硬件实现了 AXI 总线协议,包括 9 个物理接口,分别为 AXI-GP0~AXI-
GP3,AXI-HP0~AXI-HP3,AXI-ACP 接口。 

        AXI_ACP 接口,是 ARM 多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理 DMA 之类的不带缓存的 AXI 外设,PS 端是 Slave 接口。 

        AXI_HP 接口,是高性能/带宽的 AXI3.0 标准的接口,总共有四个,PL 模块作为主设备连
接。主要用于 PL 访问 PS 上的存储器(DDR 和 On-Chip RAM) 

        AXI_GP 接口,是通用的 AXI 接口,总共有四个,包括两个 32 位主设备接口和两个 32 位从设备接口。 

图3 PS PL互连的接口

        由上图可以看到,只有两个 AXI-GP 是 Master Port,即主机接口,其余 7 个口都是 Slave Port(从机接口)。主机接口具有发起读写的权限,ARM 可以利用两个 AXI-GP 主机接口主动访问 PL 逻辑,其实就是把 PL 映射到某个地址,读写 PL 寄存器如同在读写自己的存储器。其余从机接口就属于被动接口,接受来自 PL 的读写。 

        另外这 9 个 AXI 接口性能也是不同的。GP 接口是 32 位的低性能接口,理论带宽600MB/s,而 HP 和 ACP 接口为 64 位高性能接口,理论带宽 1200MB/s。有人会问,为什么高性能接口不做成主机接口呢?这样可以由 ARM 发起高速数据传输。答案是高性能接口根本不需要 ARM CPU 来负责数据搬移,真正的搬运工是位于 PL 中的 DMA 控制器。 

        位于 PS 端的 ARM 直接有硬件支持 AXI 接口,而 PL 则需要使用逻辑实现相应的 AXI 协议。
Xilinx 在 Vivado 开发环境里提供现成 IP 如 AXI-DMA,AXI-GPIO,AXI-Dataover, AXI-Stream 都实现了相应的接口,使用时直接从 Vivado 的 IP 列表中添加即可实现相应的功能。下图为 Vivado 下的各种 DMA IP: 

图 4 Axi DMA 

下面为几个常用的 AXI 接口 IP 的功能介绍: 

AXI-DMA:实现从 PS 内存到 PL 高速传输高速通道 AXI-HP<—->AXI-Stream 的转换 
AXI-FIFO-MM2S:实现从 PS 内存到 PL 通用传输通道 AXI-GP<—–>AXI-Stream 的转换 
AXI-Datamover:实现从 PS 内存到 PL 高速传输高速通道 AXI-HP<—->AXI-Stream 的转换,只不过这次是完全由 PL 控制的,PS 是完全被动的。 
AXI-VDMA:实现从 PS 内存到 PL 高速传输高速通道 AXI-HP<—->AXI-Stream 的转换,只不过是专门针对视频、图像等二维数据的。 
AXI-CDMA:这个是由 PL 完成的将数据从内存的一个位置搬移到另一个位置,无需 CPU 来插手。 

        关于如何使用这些 IP,我们会在后面的章节中举例讲到。有时,用户需要开发自己定义的
IP 同 PS 进行通信,这时可以利用向导生成对应的 IP。用户自定义 IP 核可以拥有 AXI4-Lite,
AXI4,AXI-Stream,PLB 和 FSL 这些接口。后两种由于 ARM 这一端不支持,所以不用。 

        ZYNQ 内部的 AXI 接口设备就是通过互联矩阵的的方式互联起来的,既保证了传输数据的
高效性,又保证了连接的灵活性。Xilinx 在 Vivado 里我们提供了实现这种互联矩阵的 IP 核
axi_interconnect,我们只要调用就可以。 

三、ZYNQ 芯片开发流程的简介 

        由于 ZYNQ 将 CPU 与 FPGA 集成在了一起,开发人员既需要设计 ARM 的操作系统应用程序和设备的驱动程序,又需要设计 FPGA 部分的硬件逻辑设计。开发中既要了解 Linux 操作系
统,系统的构架,也需要搭建一个 FPGA 和 ARM 系统之间的硬件设计平台。所以 ZYNQ 的开发
是需要软件人员和硬件硬件人员协同设计并开发的。这既是 ZYNQ 开发中所谓的”软硬件协同设
计”。 

        ZYNQ 系统的硬件系统和软件系统的设计和开发需要用到一下的开发环境和调试工具: Xilinx Vivado。 

        Vivado 设计套件实现 FPGA 部分的设计和开发,管脚和时序的约束,编译和仿真,实现
RTL 到比特流的设计流程。Vivado 并不是 ISE 设计套件的简单升级,而是一个全新的设计套件。它替代了 ISE 设计套件的所有重要工具,比如 Project Navigator、Xilinx Synthesis Technology、Implementation、CORE Generator、Constraint、Simulator、Chipscope Analyzer、FPGA Editor 等设计工具。 

        Xilinx SDK(Software Development Kit)或 vitis(新版本),  SDK 是 Xilinx 软件开发套件(SDK),在 Vivado 硬件系统的基础上,系统会自动配置一些重要参数,其中包括工具和库路径、编译器选项、JTAG 和闪存设置,调试器连接已经裸机板支持包(BSP)。SDK 也为所有支持的 Xilinx IP 硬核提供了驱动程序。SDK 支持 IP 硬核(FPGA 上)和处理器软件协同调试,我们可以使用高级 C 或 C++语言来开发和调试 ARM 和 FPGA 系统,测试硬件系统是否工作正常。SDK 软件也是 Vivado 软件自带的,无需单独安装。 

ZYNQ 的开发也是先硬件后软件的方法。具体流程如下:   
1)  在 Vivado 上新建工程,增加一个嵌入式的源文件。 
2)  在 Vivado 里添加和配置 PS 和 PL 部分基本的外设,或需要添加自定义的外设。 
3)  在 Vivado 里生成顶层 HDL 文件,并添加约束文件。再编译生成比特流文件(*.bit)。 
4)  导出硬件信息到 SDK 软件开发环境,在 SDK 环境里可以编写一些调试软件验证硬件和软件,结合比特流文件单独调试 ZYNQ 系统。 
5)  在 SDK 里生成 FSBL 文件。 
6)  在 VMware 虚拟机里生成 u-boot.elf、  bootloader  镜像。 
7)  在 SDK 里通过 FSBL 文件,  比特流文件 system.bit 和 u-boot.elf 文件生成一个 BOOT.bin文件。 
8)  在 VMware 里生成 Ubuntu 的内核镜像文件 Zimage 和 Ubuntu 的根文件系统。另外还需要要对 FPGA 自定义的 IP 编写驱动。 
9)  把 BOOT、内核、设备树、根文件系统文件放入到 SD 卡中,启动开发板电源,Linux操作系统会从 SD 卡里启动。 
 
        以上是典型的 ZYNQ 开发流程,但是 ZYNQ 也可以单独做为 ARM 来使用,这样就不需要关
系 PL 端资源,和传统的 ARM 开发没有太大区别。ZYNQ 也可以只使用 PL 部分,但是 PL 的配
置还是要 PS 来完成的,就是无法通过传统的固化 Flash 方式把只要 PL 的固件固化起来。

 

四、学习 ZYNQ 要具备哪些技能 

        学习 ZYNQ 比学习 FPGA、MCU、ARM 等传统工具开发要求更高,想学好 ZYNQ 也不是一
蹴而就的事情。 
4.1  软件开发人员  
  计算机组成原理 
  C、C++语言 
  计算机操作系统

  tcl 脚本 
  良好的英语阅读基础  

4.2  逻辑开发人员  
  计算机组成原理 
  C 语言 
  数字电路基础 
  Verilog、VHDL 语言 
  良好的英语阅读基础 

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容