简介
最近开始接触一些比较高端的芯片,例如:MCIMX6Y2CVM08AB、FPGA、ZYNQ等最近几年很流行的芯片,后面由于一些需要我选择开始学习ZYNQ-7000系列的芯片。也拿到了一块开发板芯片是xc7z010也就是ZYNQ7010系列的芯片。
ZYNQ简介
芯片
ZYNQ7000是赛灵思公司开发的一块全新的全可编程片上系统,它将处理器的软件和可编程性与FPGA的硬件可编程性进行完美整合,以提供无语伦比的系统性能、灵活性与可扩展性。
结构图
从上到下看,可以发现ZYNQ其实可以分为四层结构。
1)第一部分Application Processing Unit(APU),这部分主要就是ARM的芯片以及一些简单的接口和存储器。
2)第二部分Processing System(PS),处理系统,这部分主要就是一些外设和控制器主要是为APU提供外设接口和缓存器。
3)第三部分AXI Interfaces,这部分主要就是通信关于PS端和PL端的通信接口。
4)第四部分Programmable Logic(PL),可编程逻辑这部分就是FPGA。
PS结构图
APU部分
双核的ARM Cortex-A9 CPU ,两片A9芯片
FPU浮点单元,用来进行浮点运算。
NEON用来实现单指令多数据引擎,用法FFT的计算。
MMU存储管理单元,实现物理地址到虚拟地址的映射。
I-Cache:指令Cache
D-Cache:数据Cache ,两者简称一级缓存
512 KB L2 Cache & Controller 二级缓存,注意二级缓存是两个处理器共用的,需要注意空间的分配和使用。
OCM :片上存储器(也有一个OCM的互联模块)
Snoop Controller :帮助CPU访问OCM和二级缓存
GIC:接收外部中断的
PS-Soc
SOC简介
SOC中文全称片上系统,与板上系统相比,SoC的解决方案成本更低,能在不同的系统单元之间实现更快更安全的数据传输,具有更高的整体系统速度、更低的功耗、更小的物理尺寸和更好的可靠性。
Central Interconnect:中央互联,控制开启和关闭(管理各个模块的通信)
Programmable Logic to Memory Interconnect:PL到存储器的互联(管理存PL访问存储器的通信)。
①:表示可以连接动态存储器(DDR)
②:表示可以连接静态存储器
动态存储器和静态存储器的区别在于是否需要刷新
PL和PS通信
PL和PS通信部分主要分为两大类
1)功能性接口,包括AXI交互,EMIO接口,中断,DMA控制、时钟和调式接口。
2)配置信号,包括处理器配置访问端口(PCAP),单个事件中断(SEU)和程序
EMIO
EMIO就是在PL端扩展引脚,这里是将PL端作为设备进行使用。
XADC
集成的ADC接口可以直接访问PL的ADC硬核,这个ADC是PL端内部自带的主要用来测量第三层的温度变化,也可以用来测量外接的两端电压。
注:XADC测量外部电压时只支持0v~1V电源
DMA Sync
可以实现PS到PL的直接存储访问
IRQ
PL产生中断PS响应中断
GP接口
通用接口
ACP接口
加速器移植接口,也是PL作为主机而PS作为从机
HP接口
高性能接口相对于GP而言,需要注意PL是主机而PS是从机。
通信
PS端到PL端的通信协议使用的是AXI总线协议,它是AMBA总线协议的一个分支总线协议。
高级微控制器总线架构,其包括
1)APB总线协议
2)AHB总线协议
3)AXI总线协议
4)ATB总线协议
注意:这里请不要纠结防止陷进去浪费时间后期的学习会解答你现在的疑问
总结
从整体框架可以看出,其实ZYNQ最出众的一点就是灵活的通信方式。PL端可以作为外设与PS端连接,PL端也可以独立采集数据并发送给PS端。后期可以发现PL端可以使用软件来实现一些外设的基本功能,例如串口通信、IIC通信等一些通信协议。当然我们最常用的就是将PL端作为外设使用,例如当PS端的IIC接口用完时,可以在PL端扩展几个IIC接口。
这里只需要知道几点就可以:
1)ZYNQ是ARM+FPGA集成的一块新的芯片
2)ZYNQ从架构上分为PS端和PL端
3)PS端和PL端的通信使用的是AXI总线协议
4)PS端的引脚功能不是固定的,需要通过映射才能开启对应的外设功能