最近在学习ZYNQ,使用PS和PL端的交互,初始阶段在看米联客SDK入门教程,同时按照邓堪文的示例搭建了基本的摄像头捕获图像后存储到DDR3然后读取出来到摄像头显示,这部分工程作为启动,可以在这基础上部署视觉相关的加速内容,在此处做下整理。
工程结构:
初始zynq配置:
设置完毕zynq核以后,先搭建读取DDR部分,即摄像头显示:
开始加入PS部分:
VDMA工程建立
1.新建vitis文件夹后,导出硬件信息到此文件夹,lunch vitis打开vitis软件,新建project。
2. 在src文件夹下新建main.c文件
3.在vivado中查看DDR3中AXI_HPO高速总线对应的地址为0x0000_0000到0x0FFF_FFFF,其中AXI_LITE总线地址是0x4300_0000到0x4300_FFFF
4.VDMA文档阅读,进行配置。
过搜索0x00找到MM2S读DDR的配置
找到说的RS
RS就是启动VDMA
5.视频缓冲区的起始地址
6.stride以字节为单位,每一行的第一个地址的字节数量。(此处800个像素点,设置为800*2个字节)
7.与上一项配置相同
8.配置有多少行(600行)
9.总配置结果
Vitis程序编写
1.Xil_Out32(VDMA_BASEADDR + 0x5c , VDMA_FRAME0 ); 配置0x4300005c时写入的VDMA_FRAME0是数据存储的地址
即:0x4300005c 所存的数据是0x1000000
而图像数据存储的位置是0x1000000开始的600*800个字节
添加摄像头作为DDR的读输入
1.PL部分添加MT9V034和video in axi 模块,添加2SMM接口。
2.摄像头输入8bit数据,对之前IP进行更改
对vitis部分更改:
主函数部分没有其他改动,添加写通道配置,其配置方法与读通道配置时一致,只是偏置地址不同。文章来源:https://www.toymoban.com/news/detail-450935.html
添加HDMI模块作为显示
添加HDMI模块作为显示接口
1)VGA时序数据
2)进行8bit输入,10bit输出编码,通过调用TMDS_ENCODER模块完成。
3)编码后数据串行输出,调用Select_io模块(调用时要在IP catalog中设置,并在添加子模块时到run/ip/中找到.v文件,加到ip_repo中,防止因为不能直接添加IP到BD中报错)
到此为止,摄像头正常启用
文章来源地址https://www.toymoban.com/news/detail-450935.html
到了这里,关于ZYNQ学习——(摄像头_VDMA_HDMI显示工程搭建)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!