在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3397|回复: 9

[原创] 基于ADV7183B解码芯片的fpga数据采集模块

[复制链接]
发表于 2014-11-26 16:00:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
此次采集模块是通过xilinx公司virtex2p开发板作为主机,连接digilent公司的vedc1视频解码板(核心解码芯片adv7183b)实现的,主机通过IIC总线控制解码板工作模式,vedc1与主机数据接口为高速Hirose_FX2_100S.
adv7183b解码芯片处理NTSC,PAL和SECAM标准格式视频信号,输出视频信号可选8位或16位YCrCb数据,采样比为4:2:2.此次视频解码板输入信号为CVBS视频信号,输出为16位数据格式(高8位为Y,低8位为Cr/Cb)。
首先需要通过IIC总线控制7183B输入输出寄存器来控制其工作模式。主机通过 I2C 总线向从机发送寻址数据,并根据子地址发送配置信息到从机内相应的寄存器里,而后,从机做出应答,完成一次完整的通信并实现解码芯片的工作配置。参照adv7183b数据参数文档,获得IIC方式对器件配置时序。


未完待更!
 楼主| 发表于 2014-11-26 16:07:05 | 显示全部楼层
7183b的OF_SEL[3:0]最低位为SD_DUP_AV,当该位为0时,输出模式为8为数据格式,时基信号源为LLC1引脚输出的27MHz,数据输出口为P[15:8],数据按照CB/Y/CR/Y的顺序输出。当SD_DUP_AV为1时,输出模式为16为数据格式,时基信号源为LLC2引脚输出13.5MHZ,P【15:8】口输出Y数据,P【7:0】口交替输出CR/CB数据
 楼主| 发表于 2014-11-26 16:13:54 | 显示全部楼层
adv7183b视频采集采用ITU_R BT.656标准,其定义了5个同步信号来对视频图像内的图像数据进行精确定位,这些信号为:视频一阵图像的开始和结束信号,水平扫描同步信号,垂直扫描同步信号以及场同步信号。BT.656采用隔行扫描显示方式,细分为基数场扫描和偶数场扫描。对PAL信号来说,一共有625行数据,有效数据有576行,基数场和偶数场均有288行有效数据
 楼主| 发表于 2014-11-26 16:15:01 | 显示全部楼层
其余为空白行。当 F 由高变低时,说
明一帧图像数据传送开始,首先是 22 行(行号 1-22)空白数据,在此期间垂直扫描
同步信号为高电平(VS=1);此后为 288 行(行号 23-310)奇数场有效数据,在此期间
场信号 F 保持低电平,垂直扫描同步信号 VS 也保持低电平;接着是 25 行空白数
据(行号 311-335),在 312 行时,场同步信号变为高电平,表征数据为偶数场;随
后即为偶数场 288 行(行号 336-623)有效数据;最后为空白数据行(行号 624-625),
完成一帧视频图像的传输,紧接着下一帧的图像传输。
 楼主| 发表于 2014-11-26 16:17:12 | 显示全部楼层
帧间时序表征的是摄像头采集时,一帧图像与另一帧图像之间的时序关系和
一帧图像内的行与行间的时序关系。而对图像位置定位还需要列信息,即行内的
时序关系。一个扫描数据行总共 1728
个时钟,有效数据 1440 个时钟,空数据 280 个时钟,行数据开始标志 SAV 和结束
标志 EAV 各 4 个时钟。通过 HS 的 2 个时钟的低电平同步信号,可以准确检测出
有效数据的位置,从而实现视频数据的定位。根据帧间和帧内的时序,要实现数据的采集,首先要检测出一帧图像数据的起始位置,然后再开始数据的读取。检测图像数据的起始位置由模块 find_start 来
实现,通过对 field 信号的下降沿的检测来实现。当检测到图像数据起始位置后,
开启采集模块 pixel_controller 开始对解码板输出的信号及数据进行采集。采集模块通过行计数器reg_row_ct和列计数器reg_column_ct实现图像数据位置的定位,当 VS 信号为低电平且 HS 信号上升沿到来时,行计数加 1,最大值为 288 即有效数据的行数。而当 VS 为低电平时且 HS 为高电平时,
每个 LLC1(27MHz)上升沿到来时,列计数加 1,实际模块中采用的时钟为LLC2(13.5MHz),为 LLC1 频率的一半,所以帧内时序长度都为图 3.17 中所示的一半,最大计数值为 864。
 楼主| 发表于 2014-11-26 16:19:48 | 显示全部楼层
存储地址生成模块:由于系统需要把图像先采集下来再进行存储,摄像头
采集的图像大小为 720 pixel   576pixel,设计时,考虑到 FPGA 内部 Block Ram 资
源的局限,存储地址生成模块中增加了限定存储图像大小的功能,根据处理算法
的复杂程度,模块设计时分别使用了三种尺寸的图像,分别为:3 00 pixel   300pixel、
200 pixel   200pixel和 100 pixel   100pixel,这些存储到 Block Ram 中的图像都是位
于摄像头所采集图像的中心位置。以存储 200 pixel   200pixel大小图像为例,图像总共 200 行,
奇数场和偶数场分别有 100 行的有效数据,而奇偶场内总的有效数据行分别为 288
行,以 VS 下降沿处开始计数,中心图像的 100 行位置则为 94 行到 193 行。同理,
每行有 200 列数据,以 HS 的上升沿开始计数,中心图像的 200 列位置则为 400 列
到 599 列。
 楼主| 发表于 2014-11-26 16:23:22 | 显示全部楼层
存储地址生成模块 addr_ctr :输入引脚 rst 为该模块的
复位控制信号,odd_even 是奇偶场标志输入信号,row_ct(9:0)和 column_ct(9:0)为
采集模块的行列计数器输入信号,data_inY(7:0)与解码板的 P[15:8]相连,为图像像
素的灰度值输入引脚,在 clk_13_5MHZ 时钟源的上升沿读取的。中心图像的 200 行数据在奇偶场内都是取 94 行到 193 行的数据,而200 列的数据则为 400 列到 599 列的数据。由于采集到的图像数据是先奇数场后偶数场,此处存储就需要把奇偶场数据处理成连续存储,基/偶数场数据存储地址计算公式分别如下:
addr_w=2*200*(row_ct-94)+column_ct-400
addr_w=2*200*(row_ct-94)+200+column_ct-400
式中,row_ct 和 column_ct 为采集模块的行列计数器的计数值。
 楼主| 发表于 2014-11-26 16:24:30 | 显示全部楼层
奇数场和偶数场各 100 行的数据,每行有 200 个像素。当联合到显
示器上显示时,对于奇数场的行数据来说,奇数场的第一行数据存储地址为 1-200,
而第二行的数据存储地址为 401-600,由此可见,在奇数场内每隔一行,数据个数
相差 400 个。
发表于 2017-3-7 08:44:21 | 显示全部楼层
非常感谢
发表于 2018-7-17 19:33:09 | 显示全部楼层
回复 6# zhengjn001
多谢louzhu分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 20:20 , Processed in 0.037568 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表