黑金AX301开发板视频图像处理:探索

Posted Osler

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑金AX301开发板视频图像处理:探索相关的知识,希望对你有一定的参考价值。

OV7670摄像头:
SCCB协议有两线也有三线,两线为SIO_C与SIO_D,三线为SIO_E、SIO_C与SIO_D。
2线的SCCB总线只能是一个主器件对一个从器件控制,但3线SCCB接口可以对多个从器件控制,因此当只有一个从机(slave device)时用两线,有多个从机时用三线。
其中SIO_C只能由主机配置(FPGA),SIO_D是一个三态门,双向数据线,既可以由主机控制,也可以由从机控制。
在创建fifo的设置中wrfifo和rdfifo的读和写时钟需要设置为独立;增加同步清零;增加wr的read-side usedw引脚,增加rd的write-side usedw引脚。
 
vga的数据引脚需注意:顺序为r[4:0]:g[5:0]:b[4:0]
颜色太蓝,不知为何,尝试将引脚顺序修改为b[4:0]:g[5:0]:r[4:0]后,发现太红。可能是其他问题?
直接复制demo的代码是没有问题的,查看demo的引脚接法就是r[4:0]:g[5:0]:b[4:0]
对比之后查明原因,fifo的宽度应该是16bit(直接对应vga的rgb565),我设置的时候搞成了8bit
 
程序执行的输入和输出只看主程序的IO,其他IO是使用的程序内变量,或者子程序内变量:
在进行vga视频显示的图像灰度化处理时,rgb2gray部分的输入数据是lcd_rgb,输出是vgad。vgad也是主程序的输出;lcd_rgb是sdram_vga_top的输出。sdram_vga_top的作用是从sdram读取图像数据到fifo并从fifo输出给vga接口,如果没有rgb2gray部分则输出为vgad,否则输出为lcd_rgb以方便转化为灰度图再输出数据vgad给vga引脚用于显示。
 
视频的采集30hz与图像的显示帧率60hz不一致,一般是中间使用一个快速的存储机构sdram来实现匹配。
 
 
对图像做卷积,发现采集的图像是640*480*16bit的图像,要一次取3行数据,发现移位寄存器内存不够。
1.需要使用(3个bank+3个fifo)*2的方式来吗?
2.或者将fifo深度增加,然后直接读出到3个移位寄存器?这种方法看起来可行性比较高。但是,要通过fifo中间寄存器来补充3个移位寄存器,比较麻烦,还可能影响速度。
3.或者将wrfifo的数据直接存储到sdram的3个bank中,然后直接从3个bank中并行读出数据进行处理?看起来最简便。
rdfifo的作用是防止数据拖影?那么这种方式下也需要一个fifo吧,将卷积结果存放于fifo中,然后fifo数据给vga显示。
实际在bank中每次都是存储完一帧图像再进行乒乓切换的。
4.创建3个rdfifo,并行读出,然后计算卷积并送给vga显示。这个看起来才比较可行。

以上是关于黑金AX301开发板视频图像处理:探索的主要内容,如果未能解决你的问题,请参考以下文章

黑金AX7Z100 FPGA开发板移植LWIP库PS端

黑金AX7Z100 FPGA开发板移植LWIP库PS端

黑金AX310开发板 CP210x USB to UART Bridge Controller 驱动安装

黑金AX310开发板 CP210x USB to UART Bridge Controller 驱动安装

黑金AX310开发板 CP210x USB to UART Bridge Controller 驱动安装

黑金AX7Z100 FPGA开发板移植LWIP库PL端