zynq稳像系统设计

zynq应该流行有些年了,一直没有机会去接触。这里放在前面,说句官话,感谢这次大赛,让我有机会接触一个新的领域。
想做稳像,是因为当时眼一亮,看到有提供双轴陀螺仪扩展模块的,而自己前公司的其他项目组中有在做稳像平台的,所以就决定试一下。一方面,了解一下z7开发的难度;一方面看看陀螺仪传感器ic的效果。但是种种原因,最后没有拿到扩展模块,陀螺仪作罢,做了些FPGA稳像的相关设计,往简单来说,就是ps arm侧提供图像上下左右平移的参数,pl fpga侧则负责在图像采显过程中对显示的图像做相应的平移操作。
整个设计的框架如下图所示:
框图
在上面的的框图,陀螺仪的数据直接由zynq的ps端arm获取。ps侧的arm对接收的数据解析后最终变成图像数据平移的x/y参数,这个数据最终给到pl侧,即框图的中绿色部分。
绿色部分的模块接收摄像头解析出来的图像数据,同时依照arm送过来的平移参数,将数据存入ddr3中,即完成了平移存储的操作。
最后是显示,pl侧通过axi总线从ddr3中获取图像数据,还原为hdmi格式送给后面的显示器。
整个设计在实施过程中,去掉了最左侧的传感器,图像平移数据直接由ps侧的arm给出。在设计中,套用大赛提供的图像回环显示例程。将原来工程中的摄像头采集至ddr3中的模块(pldma_rgbin)直接用绿框的模块(video_shift)替换,同时实现图像采集和平移。
下面两幅图是最终的显示效果图
上下移动
左右移动
图片效果不是很好,感兴趣的人可以通过网盘看一下演示视频,相关代码也一并给出。
视频 https://pan.baidu.com/s/1qYsPQiS
代码 https://pan.baidu.com/s/1qYsPQiS
由于时间比较仓促,为简单起见,设计时,图像存储和显示采用的是同一块ddr缓存,图像显示过程中,会略微有些撕裂的感觉;并且在显示过程中,偶尔会看到图像有左右晃动的现象,美中不足,有待后续优化。

附件大小
kuang_tu_.png29.02 KB
tu_1.jpg85.75 KB
tu_2.jpg69.02 KB