Zynq和FPGA区别------快速认识Zynq开发-CSDN博客
zynq的结构
zynq:组合了一个双核ARM Cortex-A9处理器和一个现场可编程门阵列(FPGA)逻辑部件。
PL和PS端通过AXI接口连接。
PL端
可编程输入/输出单元
基本可编程逻辑单元:查找表(LUT)和寄存器(Register)组成。查找表一般完成纯组合逻辑功能,FPGA依赖寄存器完成同步时序设计。
嵌入式块RAM(Block RAM)
布线资源:连通FPGA内部的所有单元。连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。
底层嵌入功能单元:通用程度较高的嵌入式功能模块,如PLL、DLL、DSP、CPU等。
内嵌专用硬核:通用性相对较弱,不是所有FPGA器件都包含硬核。zynq的PL端有一个数模混合模块XADC,就是一个硬核。XADC包含两个模数转换器(ADC),一个模拟多路复用器,片商温度和片上电压传感器等。可以利用该模块监测芯片温度和供电电压,也可以用来测量外部的模拟电压信号。
PS端
是以处理器为核心的系统。其中集成了内存控制器和大量的外设,使Cortex-A9处理器可以完全独立于可编程逻辑单元。
在zynq中,PS和PL端的供电电路是独立的。
使用FPGA的可编程逻辑资源搭建的处理器称之为"软核"处理器。zynq中是一颗"硬核"处理器。
可以使用PL的逻辑资源搭建一个Microblaze软核处理器,和ARM迎合处理器协同工作。
系统中除了ARM外,还有一个应用处理单元(APU),扩展外设接口、Cache存储器、存储器接口、互联接口和时钟发生电路等。
PL-PS通信
PS和PL的通信通过两个通路完成:GP(General Purpose) Ports 和HP(High Performance) Ports。
GP Ports包含两个Master和两个Slave接口,AXI协议数据位宽32bit。
HP Ports包含四个接口,均是PL为Master。有两个专用的连接到DDR Controller的接口和一个连接到OCM(On-chip Memory)的接口。
HP与GP相比,有额外的FIFIO作为Buffer,可以提高传输效率和数据吞吐量。
因此,GP主要用于寄存器的读写以及小数据量的传输;HP用于大量数据的传输,主要是Memory数据的读写。
设计思路
zynq最常用的设计思路是将主程序放在PS中,PL作为PS的外设,设计相应的逻辑功能。
将逻辑设计封装成IP,且每个IP都包含一个标准的AXI-Lite接口。
PS对于逻辑设计的控制是通过控制逻辑设计的功能寄存器,进而控制逻辑设计进行相应的操作,同时将工作情况通过状态寄存器返回给PS端。
运行zynq
zynq启动模式详解及启动过程详解_zynq fsbl-CSDN博客
FSBL
first stage boot loader
fsbl.elf是zynq启动第一阶段的加载程序。经过这一阶段,才可以运行裸奔程序或者引导操作系统的u-boot。
zynq的启动流程
(Stage 0) BootROM阶段 --> (Stage 1) FSBL阶段 --> (Stage 2) SSBL阶段
Stage 0
Stage 0:在ARM核上电后,第一时间读取BootROM中固化的程序,完成对芯片的最初始化的配置。 (Read-only Memory)
zynq由MIO[6:2]配置,其中MIO[2]配置JTAG,MIO[5:3]选择启动方式(SD、QSPI Flash等),MIO[6]是PLL使能控制。
BootROM先对SD等进行初始化,然后要通过读取MIO[6:2]的引脚配置情况,决定如何加载Stage 1需要的启动镜像。之后再将启动镜像加载到OCM(片上内存)中。
BootROM阶段不对PL进行配置。
Stage 1
Stage 1:PS初始化 --> 加载PL的bit流文件,配置PL --> 加载SSBL引导程序 / ARM的裸跑程序到DDR --> 跳转执行SSBL / 裸跑程序
初始化PS:包括DDR、MIO等。
非JTAG模式下,PL无法自行配置。
SSBL是运行操作系统时才进行加载。
Stage 2
Stage 2(可选):操作系统在启动过程中的引导程序boot loader。
对linux而言,zynq的SSBL阶段核u-boot 的作用相同。是将zynq所需要的操作系统加载到DDR内存中。
其他
AXI
ZYNQ-嵌入式系统开发学习笔记-概况篇_zynq嵌入式开发-CSDN博客
AXI接口:实现PS-PL的高速便捷交互。
【学累了,休息会~~】