如何使用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进行嵌入式系统设计带来了非常多优势。


探讨高输出电流应用时的注意事项 其1
联想等公司以泰国洪水为由涨价
辨别伪劣电池应注意的几个方面
人工智能技术你需要知道的5个关键词
石油巨头埃克森美孚跨界布局锂矿
如何使用ZYNQ进行嵌入式系统设计
运动控制器关于电流环、速度环、位置环的优化
5G毫米波中继器如何使用?
曝苹果iPhone13 Pro/Max将搭载LTPO OLED屏幕
如何改善锂离子电池的极端快速充电性能呢
具有电流限制的多重转换冗余电源系统
微软win10将关闭“摇动最小化”功能
松下柳建国谈阿尔法洗衣机:真材实料,高端C位
Facebook AI研究团队描述了一个能够从现实世界视频中提取可控角色的系统
预计:2020年底10nm以下的产能将占IC行业总晶圆产能的10%
沁恒股份数码管显示驱动及I/O 扩展芯片:CH422概述
基于边缘网关的远程监控/数据采集/远程锁机方案
玉米芯怎么提炼石墨烯_玉米芯提炼石墨烯可靠吗
AI保姆带娃,请告诉我这不是真的
电机车无人驾驶系统在金川三矿区实现井下应用