从ZYNQ芯片架构谈谈其为何如此诱人

关注、星标嵌入式客栈,精彩及时送达

[导读] 基于ZYNQ实现复杂嵌入式系统非常便利,其应用领域也越来越广泛,本文来从对ZYNQ芯片架构的理解来谈谈个人体会。

俯瞰zynq

ZYNQ主要由两大部分组成:

  • 处理系统PS(Processing System):上图左上部分即是PS部分,包括:

    • 同构双核ARM Cortex A9的对称多处理器 (Symmetric  Multi-Processing,SMP)

    • 丰富的外设,2×SPI,2×I2C,2×CAN,2×UART,2×SDIO,2×USB,2×GigE,GPIO

    • 静态存储控制器:Quad-SPI,NAND,NOR

    • 动态存储控制器:DDR3,DDR2,LPDDR2

  • 可编程逻辑PL(Programmable logic):兼容赛灵思7系列FPGA

    • 基于Artix™的芯片:Z-7010以及Z-7020

    • 基于Kintex™的芯片:Z-7030以及Z-7045

ZYNQ处理系统端PS所有的外设都连接在AMBA(Advanced Microcontroller Bus Architecture)总线,而基于FPGA设计的IP则可以通过AXI接口挂载在AMBA总线上,从而实现内部各组件的互联互通。这里涉及到两个概念:

  • AMBA总线,熟悉ARM架构的朋友应该都大致了解, AMBA是ARM公司的注册商标。是一种用于片上系统(SoC)设计中功能块的连接和管理的开放标准片上互连规范。它促进了具有总线结构及多控制器或组件的多核处理器设计开发。自成立以来,AMBA已广为应用,远远超出了微控制器设备领域。如今,AMBA已广泛用于各种ASIC和SoC部件,包括在现代便携式移动设备中使用的应用处理器。

  • 高级可扩展接口AXI(Advanced eXtensible Interface):是ARM公司AMBA 3.0 和AMBA 4.0规范的一部分,是并行高性能,同步,高频,多主机,多从机通讯接口,主要设计用于片上通讯。为啥说AXI是AMBA的一部分,看看下面两个图就可以比较清晰的了解。

ZYNQ的高度灵活性

灵活的PS端IO复用

  • Multiplexed I/O (MIO):PS端外设IO复用,这是什么概念呢?前面介绍了ZYNQ主要分PS/PL两大组成模块,PS端前面介绍的外设如USB/CAN/GPIO/UART等都必要需要引脚与外界打交道,这里所谓的复用与常见的单片机、处理器里引脚复用的概念一样。但是(这里划重点),ZYNQ具有高达54个PS引脚支持MIO,MIO具有非常高的灵活度以达到灵活配置,这给硬件设计、PCB布板带来了极大的便利!,MIO的配置利用vivado软件可以实现灵活配置,如下图所示。

硬件工程师往往发现对一个复杂的系统的布局布线,常常会很困难,也常因为不合理的布局布线而陷入EMC深坑。ZYNQ的IO引脚高度灵活性,无疑在电路设计方面提供极大的方便,可实现非常灵活的PCB布局布线。从而在EMC性能改善方面带来了很大便利。

灵活的PS-PL互连接口

  • Extended Multiplexed I/O (EMIO) :扩展MIO,如果想通过PS来访问PL又不想浪费AXI总线时,就可以通过EMIO接口来访问PL。54个I/O中,其中一部分只能用于MIO,大部分可以用于MIO或EMIO,少量引脚只能通过EMIO访问。

如上图,比如I2C0则可以通过EMIO映射到PL端的引脚输出,这无疑又增加了更多的灵活性!

  • PS-PL接口HP0-HP3:如上架构图中AXI high-performance slave ports (HP0-HP3) 实现了PS-PL的接口

    • 可配置的32位或64位数据宽度

    • 只能访问片上存储器OCM(On chip memory)和DDR

    • AXI FIFO接口(AFI)利用1KB FIFOs来缓冲大数据传输

  • PS-PL接口GP0-GP1:如上架构图中AXI general-purpose ports

    • 两个PS主接口连接到PL的两个从设备

    • 32位数据宽度

  • 一个连接到CPU内存的64位加速器一致端口(ACP)AXI从接口,ACP 是 SCU (一致性控制单元)上的一个 64 位从机接口,实现从 PL 到 PS 的异步 cache 一致性接入点。ACP 是可以被很多 PL 主机所访问的,用以实现和 APU 处理器相同的方式访问存储子系统。这能达到提升整体性能、改善功耗和简化软件的效果。ACP 接口的表现和标准的 AXI 从机接口是一样的,支持大多数标准读和写的操作而不需要在 PL 部件中加入额外的一致性操作。

  • DMA, 中断, 事件信号:

    • 处理器事件总线信号事件信息到CPU

    • PL外设IP中断到PS通用中断控制器(GIC)

    • 四个DMA通道RDY/ACK信号

  • 扩展多路复用I/O (EMIO)允许PS外设端口访问PL逻辑和设备I/O引脚。

  • 时钟以及复位信号:

    • 四个PS时钟带使能控制连接到PL

    • 四个PS复位信号连接到PL

灵活的时钟系统

  • PS时钟源:

    • PS端具有4个外部时钟源引脚

    • PS端具有3个PLL时钟模块

    • PS端具有4个时钟源可输出到PL

  • PL端具有7个时钟源

    • PL端时钟源域相对PS端不同

    • PL端时钟可灵活来自PL端外部引脚,因为FPGA的硬可编程性,完全灵活配置

    • 也可使用PS端的4个时钟源

  • 注意

    • PL和PS之间的时钟同步是由PS端处理

    • PL不能提供时钟给PS使用

丰富的IP库

Zynq 是一种SoC,具有大量的标准 IP,这些部件不再需要重新设计而直接可用。以这样的方式提升了设计抽象层级,加上重用预先测试和验证过的部件,开发将被加速,而成本则可以降低。就像常说的:“ 为什么要重新发明轮子呢?”。

Vivado内置了大量的IP可供使用,比如数学计算IP,信号处理IP、图像视频处理IP,通信互连(以太网、DDS、调制、软件无线电、错误校验)、处理器IP(MicroBlaze等)、甚至人工智能算法IP。

比如信号处理IP,由于采用FPGA硬逻辑实现信号处理无需CPU计算,对于实现复杂的信号运算(比如实现一个非常高阶的FIR滤波、多点FFT计算)具有非常大优势。

双ARM硬核处理器

如架构图,ZYNQ内置了双ARM Cortex-A9硬核,对软件设计提供了极大的灵活性,在该处理器上可运行Linux,Android等复杂的操作系统,相比常规FPGA嵌软核IP的做法具有更强大的运算处理能力,你可能会说其处理器的运算能力相比时下的其他ARM芯片或稍有不足,但基本能满足常规的医疗、工业领域等嵌入式系统应用需求。

PL/PS的有机结合

通过前面的简要分析介绍,不难发现PL可编程硬件逻辑及处理器单元的结合做的非常好。

  • PL端:可设计出高灵活的外设系统,同时可编程硬件逻辑电路,可实现真正的硬并行处理、硬实时系统

  • PS端:PL端与PS的有机结合,有可实现对这种高灵活、硬并行、硬实时处理系统实现集中软件管理

试想,如果一个系统需要实现硬实时、硬并行,复杂外设互连系统:

  • 或许会采用多微控制器(比如单片机)+处理器方案,微处理器实现实时需求,处理器运行Linux实现上层业务逻辑的方式。

  • 或者采用FPGA+处理器来实现。

这两种方案技术复杂度都非常高,硬件电路PCB设计比较复杂,软件开发以及维护也会增加复杂度。而ZYNQ则可以很好的解决此类系统设计需求,真正做到system on chip,这也是SOC的一个很好的体现。

总结一下

ZYNQ这种高度灵活性,丰富的外设,丰富的IP库,以及vivado强大易用的开发环境,对使用ZYNQ进行嵌入式系统设计带来了非常多优势。

本文辛苦原创,如喜欢请点赞/在看/分享支持,不胜感激!

END

往期精彩推荐,点击即可阅读

▲Linux内核中I2C总线及设备长啥样? 

▲学Linux驱动:应先了解总线驱动模型

▲看思维导图:一文带你学Verilog HDL语言

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
文档共60页。主要向初学者提供了Zynq开发的技术方向,针对不同应用给出了基本的参考文档;同时对Zynq双核AMP加载方式做了详细描述,对Zynq的fsbl启动流程做了简单介绍。章节如下: Zynq User Guide 1 介绍 4 2 快速上手指南 4 3 多核开发教程 4 3.1 AMP开发说明 6 3.1.1 快速生成amp工程 6 3.1.2 Generating Boot File 8 3.1.3 烧写程序 9 3.1.4 启动 10 3.1.5 调试 10 3.1.6 总结 11 3.2 SMP开发说明 11 4 ZC706启动代码分析 11 4.1 启动代码 12 4.2 FSBL流程(FOR AMP) 13 4.3 CPU0启动CPU1流程 14 5 程序在线烧写方案及流程 14 5.1 程序烧写需求 14 5.2 提出该需求的原因 14 5.3 程序烧写方案 14 5.3.1 BOOT.BIN组成 14 5.3.2 BOOT.BIN生成方法 15 5.4 FSBL.BIN和APP.BIN等的生成 15 5.5 制作*BIN及烧写的具体步骤 15 5.5.1 制作*bin流程 15 5.5.2 BOOT.bin制作过程 15 5.5.3 FSBL.bin和APP.bin等的生成过程 22 5.6 烧写BOOT.BIN步骤 26 5.6.1 通过SDK工具烧写步骤 26 5.6.2 通过上位机烧写软件的烧写步骤 29 5.6.3 通过串口调试助手烧写步骤 29 6 Zynq Qspi控制器 30 6.1 基本特性 30 6.2 I/O接口 31 6.3 QSPI控制器模式 33 6.3.1 I/O模式 33 6.3.2 线性地址(linear address)模式 33 6.3.3 传统(legacy)SPI模式 34 6.4 QSPI 例程 34 6.5 QSPI控制器支持访问32MB方法 35 6.5.1 Bank地址寄存器(Bank address register) 35 6.5.2 扩展地址模式(Extended address mode) 35 6.5.3 使用新写命令(New commands) 35 6.6 QSPI FLASH选择 35 6.7 作为BOOT器件考虑 35 7 µC/OS系统启动指南 36 7.1 INTRODUCTION 36 7.1.1 Software Requirements 36 7.1.2 Hardware Requirements 36 7.2 HARDWARE DESIGN 37 7.2.1 Step 1. Invoke the Vivado IDE and Create a project 37 7.2.2 Step 2. Create an IP Integrator Design 39 7.2.3 Step 3. Add and setup the Zynq processor system IP block 39 7.2.4 Step 4. Customize the Zynq block for our design 41 7.2.5 Step 5. Add the soft peripherals 45 7.2.6 Step 6. Generate HDL Design Files 47 7.2.7 Step 7. Synthesis, Implement and Generate Bitstream 48 7.3 SOFTWARE DESIGN 49 7.3.1 Step 1. Installation of the µC/OS Repository 49 7.3.2 Step 2. Generate the µC/OS BSP 50 7.3.3 Step 3. Build and Debug the Demonstration Project 54 7.3.4 Step 4. Program the AXI Timer 0 with the ucos_axitimer Driver 55 7.3.5 Step 5. Program the AXI Timer 1 with the Xilinx tmrctr Driver 58 7.4 CONCLUSION 59 8 Linux系统启动指南 59

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值