锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【软件架构文档之SOC篇】

时间:2023-11-28 04:07:02 interface传感器mb

软件架构文档

  • 软件系统设计SOC介绍
    • 总线连接图
    • SOC启动图
    • PS和PL的互联技术
    • ZYNQ芯片开发过程
    • ZYNQ固化程序流程

软件系统设计SOC介绍

ZYNQ 5EV 包含APU4(arm cortex A53),RPU2(arm cortex R5),OCM(内部存储器),PMU, Perepherals,GPU,CSU.
在这里插入图片描述
其中PS系统部分的主要参数如下:
① ARM四核Cortex-A53处理器,速度高达1.2GHz,每个CPU32KB 1级指令和数据缓存MB 2级缓存CPU共享。
② ARM 双核Cortex-R5处理器的速度高达600MHz,每个CPU 32Kb 1级指令和数据缓存,128K内存紧密耦合。
③ 图像视频处理器Mail-400 MP2,速度高达600MHz,64KB 2级缓存。
④ 支持32/64的外部存储接口bit DDR4/3/3L、LPDDR4/3接口。
⑤ 静态存储器接口,支持NAND,2xQuad-SPI FLASH。
⑥ 支持高速连接接口PCIe Gen ,USB3.0,Sata 3.1,DisplayPort,Ethernet.
⑦ 普通连接接口,USB2.0,SDIO,UART,CAN,I2C,SPI,GPIO.
⑧ 电源管理:支持 Full/Low/PL/Battery四部分电源的划分。
⑨ 加密算法:支持RSA,AES和SHA。
⑩ 系统监控:10位1Mbps 的AD对温度和电压进行监测。
其中PL逻辑部分的主要参数如下:
① 逻辑单元
触发器
③ 查找表
④ Block Ram
⑤ 时钟管理单元
⑥ DSP Silces
⑦ 图像编解码单元
⑧ PCIE3.0
⑨ GTH

总线连接图

SOC内部总线具有监控和隔离功能.

SOC启动图

上电先完成PMU与CSU硬件启动,然后完成FSBL软件启动,FSBL可运行在A0核或者R0核。

PS和PL的互联技术

ZYNQ作为高性能ARM Cortex-A53 高性能的系列处理器FPGA在单芯片内紧密结合的产品,为了实现ARM处理器和FPGA高速性能处理器与FPGA互联通道。因此,如何设计高效PL与PS数据交互通道是ZYNQ芯片设计的重中之重,也是产品设计成败的关键之一。

AXI全称Advanced eXtensible Interface,是Xilinx从6系列的FPGA开始引入的界面协议主要描述了主设备与设备之间的数据传输。AMBA(Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能、高带宽、低延迟的片内总线,也用来替代以前的AHB和APB总线。
AXI协议主要描述了主设备与设备之间的数据传输方式,主设备与设备之间通过握手信号建立连接。当设备准备接收数据时,会发出READY信号。准备好主设备的数据时,会发出和维护VALID表示数据有效的信号。数据只有在VALID和READY当信号有效时,就开始传输。当这两个信号继续有效时,主设备将继续传输下一个数据。主设备可以撤销VALID或从设备中撤销信号READY信号终止传输。
ZYNQ中,支持AXI-Lite,AXI4 和AXI-stream三种总线。

AXI4-Lite:
它具有重量级轻、结构简单的特点,适用于小批量数据和简单控制场合。不支持批量传输,读写时只能读写一个字(32bit)。主要用于控制一些低速外设和外设。
AXI4:
接口和AXI-Lite几乎,只增加了一个功能,即批量传输,可以连续读写一个地址。也就是说,有数据读写burst功能。
AXI4-Stream:
这是一种连续流接口,不需要地址线(很像FIFO,一直读或写)。对于这种。IP,ARM上述内存映射无法控制(FIFO没有地址的概念),必须有一个转换装置,比如AXI-DMA将内存映射转换为流式接口的模块。

S_AXI_HP{0:3}_FPD高性能/带宽接口AXI总共有四个标准接口,PL主设备连接模块。PL访问PS上的存储器(DDR和FPDMain Switch)。
S_AXI_LPD接口,高性能端口,连接PL到LPD。低延迟访问OCM和TCM,访问PS端DDR。
S_AXI_HPC{0,1}_FPD接口,连接PL到FPD,可连接到CCI,访问L1和L2Cache,由于通过CCI,访问DDR控制器延迟较大。
M_AXI_HPM{0,1}_FPD接口,高性能总线,PS为master,连接FPD到PL,可用于CPU, DMA, PCIe等从PS将大量数据推到PL。
M_AXI_HPM0_LPD接口,低延迟接口总线,PS为master,连接LPD到PL,可直接访问PL端的BRAM,DDR也常用于配置PL终端寄存器。
只有M_AXI_HPM{0,1}_FPD和M_AXI_HPM0_LPD是Master Port,即主机接口,其余为Slave Port(从机接口)。主机接口有权启动读写,ARM可主动访问两个主机接口PL逻辑,其实就是把PL映射到某个地址,读写PL寄存器就像读写自己的存储器。其他从机接口属于被动接口PL读写,逆来顺受。在PS与PL互联网应用最常用的接口是S_AXI_HP{0:3}_FPD、M_AXI_HPM{0,1}_FPD和M_AXI_HPM0_LPD。

AXI严格地说,该协议是一个点对点的主接口协议。当多个外设需要相互交互数据时,我们需要添加一个AXI interconnect IP也就是模块AXI作用是提供一个或多个互联
矩阵AXI主设备连接到一个或多个AXI从设备的交换机制出发。
AXI Interconnect基本连接模式如下:
1.多对一的情况
2.一对多的情况
3.多读多写地址通道
4.多对多读写数据通道

ZYNQ的内部AXI接口设备通过互联矩阵互联,既保证了传输数据的效率,又保证了连接的灵活性。

ZYNQ芯片开发过程

由于ZYNQ将CPU与FPGA集成在一起,开发人员需要设计ARM还需要设计操作系统应用程序和设备驱动程序FPGA硬件逻辑设计的一部分。既要了解开发Linux还需要构建操作系统和系统框架FPGA和ARM硬件设计平台之间的系统。所以ZYNQ开发需要软件人员和硬件人员的协同设计和开发。这既是ZYNQ所谓开发"软硬件协同设计。
Vivado实现设计
套件FPGA部分设计开发、管脚和时间限制、编译和模拟,实现RTL比特流的设计过程。
Xilinx SDK(Software Development Kit),SDK是Xilinx软件开发套件(SDK),在Vivado在硬件系统的基础上,包括工具和库路径、编译选项、JTAG与闪存设置,调试器已连接到裸机板支撑包(BSP)。SDK所有的支持Xilinx IP硬核提供驱动程序。SDK支持IP硬核(FPGA我们可以使用高级C或处理器软件进行协同调试C 开发和调试语言ARM和FPGA测试硬件系统是否正常工作。
ZYNQ开发也是软件前硬件的方法。具体流程如下:

  1. 在Vivado 上新建工程 ,添加嵌入式源文件;
  2. 在Vivado 添加和配置PS和PL一些基本外设,或需要添加自定义外设; 
  3. 在Vivado里生成顶层HDL并添加约束文件。再编译生成比特流文件(*.bit);
  4. 导出硬件信息到SDK软件开发环境,在SDK一些调试软件验证硬件和软件可以在环境中编写,结合比特流文件单独调试ZYNQ系统;
  5. 在SDK里生成FSBL文件;
  6. 在sdk里通过FSBL文件,比特流文件system.bit和u-boot.elf生成一个文件BOOT.bin文件;

ZYNQ固化过程

普通的FPGA一般是从flash启动,或被动加载,ZYNQ的启动是由ARM主导,包括FPGA加载程序,ZYNQ MPSoc启动通常有三个步骤:
Pre-configuration stage:预加载阶段由PMU控制,执行PMU ROM中间的代码设置系统。PMU处理所有复位和唤醒过程。
Configuration stage :下一步最重要的一步,当BootRom(CSU ROM代码的一部分)处理FSBL到OCM之后,处理器开始执行FSBL代码,FSBL主要有以下功能:

  1. 初始化PS端配置,MIO,PLL,DDR,QSPI,SD等
  2. 如果有PL端程序,加载PL端bitstream
  3. 处理用户程序到ddr,并执行跳转执行
    Post-configuration stage:FSBL开始执行后,CSU ROM代码进入Post-configuration负责系统干预响应,CSU为验文件正确性、通过PCAP加载PL、存储管理安全密钥、解密等提供持续的硬件支持。
    第一个文件一定是BootLoader,就是fsbl.elf;第二个文件就是FPGA的配置文件,bitstream;第三个程序就是应用程序。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章