目前毕设在做的内容是利用zynq实现图像融合,于是学习利用AXI VDMA 实现OV5640摄像头采集,此篇文章用于记录学习的心得体会,如有问题欢迎指出和批评。
一.整体框架
利用AXI VDMA 实现OV5640摄像头采集这一小项目已经由很多非常成熟的视频教学和代码,我观看的是购买米联科开发板附赠的米联科zynq2019系列教程中的CH23 利用AXI VDMA 实现OV5640摄像头采集(详讲)。整体的BDdesign如下图所示
可以看到涉及到的模块很多,米联科的官方教程中主要是整个流程过一下,教一下接线,大概讲一下模块的作用,模块没有详细讲解SDK中的C语言代码讲解也比较少,跟着照葫芦画瓢确实可以做出来,但是想在此基础上继续添加功能比较困难,因为很多内容其实都不太懂,所以开始接下来的一个一个模块的介绍和学习。
二.clock ip核
这个ip很基础,以前就有过多次使用,这里主要是学习一下PLL和MMCM的区别以及locked信号。
PLL(Phase Locked Loop) :为锁相回路或锁相环
MMCM(Mixed Mode Clock Manager):混合模式时钟管理器
MMCM可以理解位PLL的超集,所以用clock ip核是可以默认选择MMCMip核
LOCKED指示信号,拉高表示信号稳定,在这个系统中locked信号用作除了与axi总线传输有关的其他IP核的复位信号。
这个系统中引入该ip核是为了输出两个时钟供视频输出使用,axi总线传输有关的ip核都是用zynq中arm产生的100MHZ的时钟,也就是该ip核的输入时钟。
需要了解更多的内容可以下面参照这篇博客,讲的很全面。
https://blog.csdn.net/weixin_45239657/article/details/127161465
三.Processor System Reset v5.0 ip核
这是一个复位ip核
输入时钟和复位信号,输出多个复位信号,这些复位信号的区别主要是作用的周期数不相同,但都是同时开始复位,只是有的复位信号拉低(或拉高)的时间长,有些时间短。如果想详细了解该ip核,可以看下面这篇博客。
Xilinx IP解析之Processor System Reset v5.0_徐晓康的博客的博客-CSDN博客_proc_sys_reset
在该系统中,输入时钟为统一的100MHZ时钟,输入复位信号为zynq芯片的复位信号。输出的复位信号用到了interconnect_areset和peripheral_areset,给用于AXI数据传输的ip核axi_interconnet和axi_vdma提供复位信号。只有axi_interconnet ip核自身的复位信号接interconnect_areset,其余复位信号全部接peripheral_areset。
至此,我们解决了利用AXI VDMA 实现OV5640摄像头采集系统的时钟和复位问题。
四.AXI总线
在介绍和AXI总线有关的ip核之前,先介绍一下AXI总线,想在zynq中实现ps和pl端的通信,AXI总线是必不可缺的。由于我对AXI总线的了解也不够深入,就不妄加总结,这里放出讲解AXI总线的高赞知乎帖子,供大家参考学习。
https://zhuanlan.zhihu.com/p/145936888?utm_source
五.AXI Interconnect ip核
AXI Interconnect的作用
1.真正实现了总线通信,N Master模块与M Slave模块的通信,减少了相互间通信的复杂度
2.内部实现时钟域转换,不需要外部的过度干预
3.内部可实现FIFO等,免去了很多场景下需要FIFO,Register,位宽转换,协议转换的需求
如果想对AXI Interconnect ip核有更多了解,可参考下面这篇专栏
(AXI使用学习)AXI Interconnect简明使用方法记录 - 知乎
除此之外还遇到过AXI smart connect ip核,功能与AXI Interconnect差不多,应该是AXI Interconnect的简化升级版。