徐宏亮
2012.07.27
系统采用AD9883a芯片将摄像头视频信号数字化;然后利用FPGA芯片进行信号处理,增加行列场有效信号;最后,采用ADV7123芯片将数字信号转为模拟信号,在本地的显示器输出。 1. 系统总体设计
图1所示为视频采集系统框图。
图1 VGA视频采集系统框图
1)VGA输入模块。将RGB模拟信号或YUV信号及行同步信号(Hsync)、场同步信号(Vsync)输入给A/D转换模块。
2)A/D转换模块。首先根据行、场同步信号确定采样的行频和场频,接着由行频和内部寄存器确定像素同步时钟,然后通过配置AD9883芯片内部的锁相环(PLL)产生同步时钟。该模块可将输入的VGA模拟信号转换为8bit×3路的数字视频信号,并通过一系列寄存器调整图像的采样效果。 3) FPGA转换控制模块。一方面FPGA通过I2C总线向AD9883a的寄存器写入控制信息;另一方面根据输入的行场同步信号生成行场有效信号。 内部还有color bar,YUV2RGB, 串口三个模块。 4)D/A输出显示模块。该模块采用ADV7123芯片将8bit×3路RGB数字信号还原为模拟信号,并结合行、场同步信号构成VGA信号,供本地计算机显示输出。
2. A/D转换模块
本系统的A/D转换器采用AD9883a,该芯片专门用于采集模拟R,G,B信号,将其数字化显示或作为中间转换器件使用。该芯片具有采样精度为8bit×3路通道,最高采样率为140MSPS/s,300MB的模拟带宽,支持最高分辨率为SXGA(1280x1024),刷新率为75Hz的视频信号。基于AD9883a的电路可为高清电视提供良好的接口,或作为高性能视频设备的前端扫描转换器,它的内部结构如图3所示,主要包括A/D转换电路、时钟产生电路、同步信号产生电路、I2C总线接口四个部分。
图2 AD9883的内部结构图
AD9883a内部的寄存器通过I2C总线完全可编程,芯片按照寄存器设定的模式进行工作。如AD9883水泥胶砂振动台支持多种VGA格式,但不能自动检测实现自适应,需要通过I2C接口进行寄存器配置,指定芯片采集的视频格式。
AD9883内部共25个寄存器,其中00H和14H为只读寄存器,15~18H为测试用寄存器,01H~13H为功能寄存器。 本系统采用的摄像头是索尼的H700,摄入视频格式是1080i/50。根据视频格式,编织管FPGA芯片对主要功能寄存器的配置如表1所示,具体见程序:
功能 | 寄存器 | 配置值 |
锁相环分频控制 | 01H | A4H |
02H | F0H |
时钟产生器控制 | 03H | 90H |
04H | 80H |
箝位控制 | 05H | 50H |
增益和偏置控制 | 08H | C0H |
09H | 80H |
0aH | 80H |
0bH | 7EH |
0cH | 7EH |
0dH | 7EH |
| | |
3.FPGA设计
FPGA以AD9883输出的像素时钟PCLK作为全局同步时钟,频率为74.25Mhz。
3.1 IIC总线master无心磨床自动上料机的设计
I2C,即Inter-Integrated Circuit,是一个双线双向串行总线,提供了一种设备之间的数据交换的简单而有效的方法。这种总线最适合多设备之间需要临时的短距离通信的场合。IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。
I2C 总线上数据的传输速率有三种模式:
✓ 标准模式:100kbit/s
✓ 快速模式:400kbit/s
✓ 高速模式:3.4Mbit/s
本系统用的是标准模式。
3.1.1 iic总线协议
通常标准的iic通信包括4部分:
1) 开始信号
2) Slave地址
3) 数据传输
4) 结束信号
3.1.2 IIC模块的结构
IIC模块由控制单元和数据通道单元两部分组成。控制单元的状态机根据外部控制信号和数据通道的状态信号产生控制信号,组织、协调和同步数据通道单元的的操作。数据通道单元的i2c master byte模块根据控制信号产生所需的SCL、SDA信号。结构框图如下:
焦微微
图3 iic模块结构图
控制单元使用一段式状态机进行定义,如图4所示。有限状态机的几个状态定义如下:
`define ST_IDLE 7'b000_0000; // 起始状态
`define ST_ADDR_W 7'b000_0001; // slave地址(用于写操作)
`define ST_BSADDR 7'b000_0010; // 基地址
`define ST_WRITE 7'b000_0100; // 写数据到寄存器
`define ST_ADDR_R 7'b000_1000; // slave地址(用于读操作)
`define ST_READ 7'b001_0000; // 从寄存器读数据
`define ST_READ1 7'b010_0000; // 读取最后一位数据
`define ST_STOP 7'b100_0000; // 结束信号
IIC模块在start信号有效后,开始向AD9883a写数据,从01H写到15H; 之后进入读取模式,读取01H到15H的寄存器数据,以检查数据是否写入和AD9883a目前状态。
图4 IIC通信状态机
i2c master byte模块通过把一byte数据操作分解为8个bit操作,通过把对应命令送到Bit command controller实现。具体流程如下:
3.2行场有效信号
hvref根据输入视频格式,产生行场有效信号。当视频输入信号时1080i时,参数配置如下:
parameter ROW_NUM 1920 //行有效数
parameter COL_NUM 540 //列有效数
parameter hre_st 159 //行有效起始计数
parameter vre_st 16 //列有效起始计数
parameter htotal 2640 //总行数
parameter vtotal 562 //总列数
3.3其他模块
1. color bar模块可以生成代替ad9883a输入的彩条信号,用于测试;
2. YUV2RGB模块,当AD9883a输入为YUV信号时,可以转化为RGB信号;真空海绵吸盘
3. Uart ctrl模块,用于将读取的AD9883a寄存器信号传输到pc机,方便调试。
4.D/A输出显示设计
本设计采用ADV7123作为视频转换芯片,将数字视频信号转换为VGA模拟信号,供本地计算机显示输出。ADV7123具有三路高速、10位输入的视频DA转换器,具有330Mhz的最大采样速度,与多种高精度的显示系统兼容,可充分满足本系统的转换需求。ADV7123芯片产生三路模拟输出后,结合FPGA传来的行、场同步信号完成视频的显示。
5. 小结
通过对摄像头视频采集系统的设计,加深了对iic总线的了解,认识到了dft对设计程序调试和板级测试时解决遇到问题的重要性。另外,通过这次设计,也加强了自己的编程能力和调试经验。
【参考文献】
[1] Analog Devices.AD9883A/AD9883A Data sheet[EB/OL].2007. www.analog/static /imported- files/data_sheets/ AD9883A.pdf.