基于ZYNQ的图像采集系统的学习总结

##

基于ZYNQ的图像采集系统的学习总结

最近使用基于ZYNQ7000系列的板卡做了一个摄像头的采集图像实验。该实验的大体流程就是,首先在PS端配置好摄像头信息,其次pl端利用AXI总线将摄像头采集的数据直接缓存进入PS端的DDR3sdram,最后从PL端的AXI总线读取PS端sdram的图像数据,通过屏幕进行显示。大体实验流程如下图所示:


基于ZYNQ的图像采集系统的学习总结_第1张图片
由于记录完整的实验操作步骤,写整个实验报告耗时费力,所以下面我只针对自己做实验时遇到的问题做相应的记录。

axi读(PL读PS)

该实验采用的是模块化设计,其中显示模块是之前已经写好的HDMI驱动模块,在写驱动模块时需要注意的是:第一,基于VESA标准的一系列参数的设置是否正确;第二,就是一定要考虑什么时候给显示屏第一个数;我们都知道屏幕显示是一直刷新的,所以我们需要保证,向显示屏发送第一个数据时,刚好是进入显示屏显影区的第一个像素点。不然可能出现一个问题就是,我们想要显示的第一个像素点可能会显示到显影区的不同位置,造成图像显示混乱。至于AXI读端我们只需要根据时序写出对应的电路就可以,除了一些简单的语法错误,一般不会出现什么逻辑错误。可能出现的逻辑错误最主要就看看自己设计的状态机会不会有问题。

axi写(PL写PS)

在完成了显示屏图像显示的时候,我们就可以着手设计axi写入一副图像数据的设计了。写入这一部分,首先是在PS端配置好摄像头驱动,对摄像头进行必要的复位,通过SPI对摄像头进行初始化配置,让摄像头处于工作模式。然后通过拜尔转RGB模块将数据写入axi总线,只需要写入一副图像的地址,每一次摄像头传来的数据会覆盖sdram中的数据。在这里拜尔转RGB模块应该也是现成的模块我们可以去xilinx官网下载。其次就是axi写入端的时序问题一定要注意。第一,我们什么时候写入?拜尔模块传送数据过来之时,axi写端已经初始化完成之后才能进行相对应的操作。只要把这个信号控制好,其次就是主要不要有语法的错误,一般不会出什么问题。还有就是ila的添加,在完成设计后,一定要看看是否仿真出来的时序和自己设计的时序是否符合。

你可能感兴趣的:(学习笔记)