CrazyBingo

Bingo版HDL-VIP时序约定

0
阅读(3733)

曾经Bingo写过CMOS的视频采集模块,即CMOS_RGB565_Capture模块(当然RAWYCbCr模式的采集,接口不变),已经得到了以下的一组信号:


序号

信号

说明

1

clk (clk_pixel)

视频流像素时钟(当前为24MHz

2

cmos_frame_vsync

采集后的帧有效信号

3

cmos_frame_href

采集后的行有效信号

4

cmos_frame_data

像素数据读取使能信号

(1)RGB565YCbCr的时候,2个时钟一个数据

(2)RAW8的时候,一个时钟一个数据

(3)如果灰度CMOS输入,亦一个时钟一个数据

5

cmos_frame_clken

像素数据读取使能,时钟分配同上

1.VIP_Image_Processor接口约定

从本章开始,我们全面进入HDL-VIP视频图像算法处理的开发,所有的算法模块均会包含在Video_Image_Processor模块。为了统一算法模块,以及视频流的接口,我们需要约定VIP时序,且称呼为《Bingo版的VIP时序约定》。这里先给出Video_Image_Processor模块的输入接口,如下所示:

序号

信号

说明

1

clk (clk_pixel)

视频流像素时钟(当前为24MHz

2

rst_n

全局时钟复位信号

3

per_frame_vsync

预处理输入采集后的帧有效信号

4

per_frame_href

预处理输入采集后的行有效信号

5

per_frame_data

预处理输入像素数据读取使能信号

(1)RGB565YCbCr的时候,2个时钟一个数据

(2)RAW8的时候,一个时钟一个数据

(3)如果灰度CMOS输入,亦一个时钟一个数据

6

per_frame_clken

预处理输入像素数据读取使能,时钟分配同上

注意,这里的per表示预处理的数据,当然经过视频图像算法处理过的时序,便称之为post_xxxx,如下表所示:

序号

信号

说明

1

post_frame_vsync

处理后输入采集后的帧有效信号

2

post_frame_href

处理后输入采集后的行有效信号

3

post_frame_data

处理后输入像素数据读取使能信号

(4)RGB565YCbCr的时候,2个时钟一个数据

(5)RAW8的时候,一个时钟一个数据

(6)如果灰度CMOS输入,亦一个时钟一个数据

4

post_frame_clken

处理后输入像素数据读取使能,时钟分配同上

此外,如果输入的是灰度图像,则命名为xxx_frame_Y,如果输入的是三通道RGB图像,则xxx_frame_red/green/blue,如果输入的是位图,则xxx_frame_Bit,详见下表:

序号

信号

说明

1

xxx_frame_Y

输入/输出8Bit的灰度图像数据流

2

xxx_frame_red

xxx_frame_green

xxx_frame_blue

输入/输出RGB888格式的数据流。

3

xxx_frame_Bit

输入/输出1Bit位图格式的数据流。

此外,涉及到Video_Image_Processor输入的相关控制信号,比如各种阀值等,如下定义即可:

序号

信号

说明

1

Sobel_Threshold

Sobel边缘检测外部阀值输入定义

这样,除了像素时钟与复位信号外,关于Bingo版的VIP时序约定、Video_Image_Processor的信号接口就已经有了一个统一的命名方式,且不管这个黑匣子的内容,在固定标准的模式下进行开发,更便于日后算法的优化、移植。这里给出8Bit灰度图像输入,1Bit位图输入,以及包含了一个阀值信号的Video_Image_Processor接口module,如下图所示:

`timescale 1ns/1ns module Video_Image_Processor #( parameter [9:0] IMG_HDISP = 10'd640, //640*480 parameter [9:0] IMG_VDISP = 10'd480 ) ( //global clock input clk, //cmos video pixel clock input rst_n, //global reset //Image data prepred to be processd input per_frame_vsync, //Prepared Image data vsync valid signal input per_frame_href, //Prepared Image data href vaild signal input per_frame_clken, //Prepared Image data output enable clock input [7:0] per_img_Y, //Prepared Image brightness input //Image data has been processd output post_frame_vsync, //Processed Image data vsync valid signal output post_frame_href, //Processed Image data href vaild signal output post_frame_clken, //Processed Image data output enable clock output post_img_Bit, //Processed Image Bit flag output //user interface input [7:0] Sobel_Threshold //Sobel Threshold for image edge detect );

2.VIP_Image_Processor时序约定

前面已经定制了Video_Image_Processor的接口,日后内部包含任何VIP算法模块,接口定义均与前面的约定保持一致,均以VIP_XXXX格式为准,XXXX表示功能,且保存于当前工程/src/Video_Image_Processor目录下。后续所有HDL-VIP的设计,都会遵循Bingo自己的约定。

既然接口已经标定,接下来最重要的就是约定VIP的时序。所有模块的输入输出,均遵循接下来Bingo约定的VIP时序,并且预处理输入接口的时序,与处理后输出接口的时序完全相同。这里就2种情况,进行时序的详细描述:

1)时钟速率大于像素速率,如下图所示:

这种情况,正如前面OV7725输入24MHz像素时钟,但实际拼接后像素数据的速率为12MHz,时钟速率>数据速率。此时需要额外的per_frame_clken使能时钟,并且per_frame_clk有效边沿与数据的中间对齐。总之,使能时钟必须保证后续数据在clken有效边沿读取,一行640个有效边沿(根据分辨率变化)。

2)时钟速率等于像素速率,如下图所示:



比如外部输入的是8Bit灰度数据,或者RAW阵列,此时时钟速率等于像素数据的速率,因此在行有效期间,clken信号一直有效,且保持640个有效周期(根据分辨率变化)。

post_frame_xxx,即视频输出时序,与输入时序(1)(22种情况完全相同,此处不再做累赘阐述。根据以上两种情况,在经过任何算法处理后的数据输出,均因保持固定的时序,铭记BingoVIP时序约定!






Baidu
map