关键词: ;视频监视;;可编程逻辑阵列
本文设计一种用于工矿监控系统的实时视频数据采集系统,系统中由CCD摄像头采集到模拟视频信号,通过视频解码芯片转换为PAL制式的数字视频信号,采用FPGA对其进行格式转换,在现场使用VGA显示器进行视频监视,在按键的控制下可以存储于硬盘等存储介质中或传输至网络中。本设计以高性能的FPGA为核心部件,与视频解码芯片、SRAM等外围器件构成整个视频数据处理系统,集采集、存储、显示功能于一体,其系统总体框图如图1所示。设计中的FPGA器件采用Altera公司的CycloneII系列EP2C8Q208C8N芯片;视频解码芯片选用Philips公司的SAA7113H作为视频数据的模数转换器件;SRAM采用高速、低功耗8 Mbit的IS61LV51216作为图像数据缓存器。 1 实时视频监视系统的结构
一个完整的成像系统不但要具备图像信号采集功能,对图像进行实时显示[1],而且要完成图像信号的分析、处理(如图像压缩等)以及图像处理结果的反馈等。基于FPGA的实时视频监视系统的结构如图2所示,主要包括IIC配置单元、数据采集及控制单元、VGA接口单元和压缩存储单元等。 2 视频信号采集和显示部分的实现
SAA7113H输出PAL制式的ITU656标准YUV(4:2:2)格式数据[2],其中Y表示亮度信号,而UV表示色差信号,并且输出像素时钟为27 MHz。信号扫描方式为隔行扫描,帧率为25帧/秒,每帧图像分为奇偶两场,每帧像素为864×625,其中有效数据为720×576。SAA7113H输出的一行视频数据格式如图3所示,每行有1 728 B,其中有效数据1 440 B,对应720个有效像素,可以看成每一个像素由2个连续的字节表示,每个像素有自己的亮度数据Y,每两个相邻像素共用一组色差数据U和V。 由于系统要求在VGA显示器上采用逐场逐行方式显示RGB格式的数据,并且要求所采集图像的大小为640×480,因此,必须对SAA7113H所采集到的原始数字视频信号进行格式转换和存储方式的处理。
2.1 IIC配置单元
视频解码芯片SAA7113H接收CCD摄像头输出的模拟视频信号,将其转换成标准的VPO数字信号。SAA7113H上电后,必须由核心控制芯片FPGA通过IIC总线对其内部的寄存器进行初始化设置,然后才能正常工作。IIC配置单元的任务就是按照IIC总线的数据传输规范对SAA7113H内部的寄存器进行初始化设置,其时钟信号由SAA7113H提供的27 MHz的像素时钟经过时钟控制单元分频得到,数据速率在100 kb/s~400 kb/s。
IIC配置单元的内部结构如图4所示,由IIC控制单元iic_all、配置数据存储器iic_rom和读地址发生器div448构成。IIC控制单元iic_all是核心控制单元,采用状态机设计,在start信号有效后使SCL高电平时拉低SDA数据线,同时控制地址发生器div448产生读地址信号送入配置数据存储器iic_rom; iic_rom采用可设置参数模块LPM_ROM,定制为数据宽度为1的只读ROM,每个存储单元按位预存SAA7113H内部寄存器的控制字;在时钟使能端clken有效时按位串行写入SDA数据线。IIC控制单元在start信号有效后的第8个时钟上升沿获取到SAA7113H的低电平应答信号后继续发送数据给SAA7113H,否则将重新回到起始状态等待。
SAA7113H完成初始化配置后,输出数字视频信号VPO[7..0]和相应的同步信号:行有效信号RTS0、奇偶场标识信号RTS1等。其中RTS0高电平表示有效数据行,低电平表示消隐行;RTS1为奇偶场标识信号,高电平表示奇场,低电平表示偶场。 2.2 数据采集及控制单元
数据采集及控制单元主要由3个模块组成:采集模块acquisition、双口RAM器件lpm_ram_dp0和帧存控制模块sto_ctl,其内部电路图如图5所示。此单元的任务就是由采集模块截取SAA7113H输出的一行数据中的640个有效像素(共1 280 B)写入双口RAM器件进行缓存,帧存控制模块将数据从双口RAM中顺序读出后送入外扩SRAM中逐行存储,同时控制2片SRAM交替读写,读出的数据送入VGA接口单元进行VGA格式转换和图像显示。 2.2.1 采集模块acqusition
采集模块接收SAA7113H的RTS0、像素时钟信号SYS_CLK和视频数据VPO[7..0],输出为一行数据中的有效数据vpo_out[7..0]、有效像素的计数值tempp[10..0]和表示行状态有效的信号line_state。
若要截取一行数据中的有效数据,首先要捕捉到有效数据的起始时刻。采集模块根据图3中视频数据流的时间参考代码SAV来获取有效数据的起始时刻。在一帧完整的图像数据中,第一场有效数据阶段的SAV为“1000XXXX”,而消隐阶段的时间参考代码中的SAV为“1010XXXX”。通过判断场有效信号rts0为1时,分析数据流中的“80 10 FF 00 00 SAV”定时参考代码,启动计数模为1 440的计数器tempp。计数值为40时置状态信号line_state为1,标志一行有效数据的开始;计数值为1 320时置line_state为0,结束一行有效数据的采集。在这个时间段内就可以截取一行中1 280 B的有效数据,继而送入双口RAM缓存。
2.2.2 双口RAM器件lpm_ram_dp0
双口RAM 器件利用FPGA内部的参数可设置模块LPM_RAM_DP定制而成,用来缓存一行的有效视频数据,而后存储在SRAM中。由于SAA7113H输出是8位的VPO数据,而片外SRAM具有16根数据线,作为连接于两者之间的数据接口,双口RAM应该有两套独立的数据端口和时钟端口,可以同时进行读写操作。在软件QUARTUSⅡ上定制LPM_RAM_DP的参数为:写数据位宽=8;写地址线宽=11;读数据位宽=16,读地址线宽=10;地址输入由时钟的上升沿锁入。双口RAM的容量为2 KB,写时钟采用系统像素时钟,读时钟采用由帧存控制模块产生的像素时钟的二分频信号rdram_clk。
2.2.3 帧存控制模块sto_ctl
帧存控制模块是FPGA芯片与片外SRAM的接口,其任务是产生片内双口RAM的读地址和片外SRAM的写地址,将每行视频数据从双口RAM中顺序读出,按照逐行存储的形式写入SRAM中。当一片SRAM写满一帧数据后,逐行送入VGA接口单元,同时切换读写操作,在另一片SRAM里连续写入下一帧视频数据。帧存控制单元的工作主要是对双口RAM的读操作、SRAM的读写操作、SRAM的乒乓控制和帧频的转换。
双口RAM的读操作由模为640的加法计数器rdram_addd完成。为了保证数据不读空,在双口RAM写使能信号有效后的第8个系统时钟,帧存控制模块向双口RAM发出读允许信号rd_ram,同时计数器工作,按照rdram_clk时钟输出双口RAM的读地址。
SRAM的读写操作主要是对SRAM访问地址的控制。SRAM芯片IS61LV51216具有19根地址线,取其中10根为行向地址线,则每行存储640个双字节的视频数据;9根为列向地址线,可存储480行的视频数据;剩余的存储空间空闲。视频数据在SRAM中存储的行向地址与双口RAM读地址之间有确定的等同关系,所以行向地址仍然采用计数器rdram_addd的计数值,列向地址由模为480的计数器cnt480产生。为了实现数据的逐行存储,奇场和偶场的行数据必须隔行交错存储,即列向地址是在RTS1=1时(即奇场)从000H按时钟加2递增至1DEH,在RTS1=0时(偶场)从001H按时钟加2递增至1DFH,这样就实现了隔行扫描到逐行存储的结构转换。
系统中采用了2片SRAM,以乒乓方式工作,一片在写入视频数据的同时,另一片读出数据送入VGA接口单元。当其中一片SRAM写完一帧数据后,帧存控制模块会产生一个转换信号,输出互补的读允许SRAM_RD和写允许信号SRAM_WR,控制2片SRAM切换工作,从而实现视频数据的实时连续处理。
帧频的转换是通过复制帧实现的。PAL制式的信号每秒25帧,VGA显示器工作场频是每秒60帧,帧频比为5:12。要转换为能够满足每秒60帧要求的视频信号,最简单的办法就是复制帧。在本设计中每5帧做一次频率放大,第一帧、第三帧传输3次,其余各帧传输2次[3]。由于RTS0信号的上升沿表示新帧的起点,所以可以利用RTS0信号触发一个序列发生器,产生对SRAM读操作次数的控制。
2.3 VGA接口单元
VGA接口单元由2个模块组成:VGA时序驱动模块,用于产生VGA正常工作所需的时序信号,包括60 Hz扫描时钟VGA_CLK、场同步信号VS和行同步信号HS;VGA信号转换模块,用于接收SRAM中的YUV信号并将其转换成RGB信号,并根据VGA的扫描时序将RGB信号通过DAC,最后送入VGA显示器。
2.3.1 VGA时序发生模块VGA_SHIXU
VGA时序发生器遵循VGA工业标准,即640 Hz×480 Hz×60 Hz模式,行同步HS和场同步VS信号的头脉冲是负脉冲,所要求的频率有:像素输出频率为25.175 MHz,行频为31469 Hz,场频为59.94 Hz。VGA水平时序中,每行包括800像素点,其中640像素点为有效显示区,160像素点为行消隐区。VGA垂直时序中,每场有525行,其中480行为有效显示行,45行为场消隐区。时序发生器接收外部输入50 MHz时钟信号,利用模为800的行点数计数器cnt800完成行扫描时序,模为525的场行数计数器cnt525完成场扫描时序。cnt800对经过PLL分频得到的25 MHz时钟进行像素计数,并在每次计数值清零前生成一个脉冲L_STATUS,cnt525对L_STATUS进行场行数计数。系统复位时,同步信号HS、VS为1,计数器全部清零;帧存控制单元的写VGA信号VGA_WR有效时,将HS、VS拉低电平,cnt800开始计数。程序中对cnt800的计数值进行判断,当为95时(行消隐前肩)将L_STATUS置1,为143时将640 B的RGB信号送入VGA显示器,计满后再次拉低HS信号和L_STATUS。当cnt525的计数值为1时(场消隐前肩)将VS置1,为35时场同步输出,允许输出HS信号。行、场消隐的逻辑与即为复合消隐信号,连同行、场同步信号便产生了VGA接口的时序信号[3]。
2.3.2 VGA信号转换模块VGA_COV
VGA信号转换模块将输入的PAL制式的YUV(4:2:2)信号转换成RGB信号。首先对数据采集单元截获的YUV(4:2:2)视频数据进行插值,得到YUV(4:4:4)视频数据(如图6所示),将一个像素点的数据YUV(如U0Y0V0)合并为独立并行的24 bit数据,进入色彩转换单元VGA_COV后再经过程序计算来进行色度空间变换,获取并行输出的RGB(8:8:8)值。色彩空间变换公式如下:
计算结果均除以1 024(即右移10位),即可得到RGB的值[4]。对输出的RGB(8:8:8)取高位获得RGB(5:6:5),通过D/A转换器送入VGA显示器。
3 仿真与性能分析
3.1 部分仿真波形
SRAM写入第一行数据的仿真波形如图7所示。当RTS1=1(奇场)时,在行有效信号有效后,模为1 440的行计数器tempp开始计数;在计数值tempp为40时,应该提取到有效数据流中A8 A9 AA AB AC AD AE……计数值为48时,视频数据开始将双字节的视频数据写入SRAM中,如A8 A9, AA AB, AC AD……。 以上就是本篇文章【实时视频数据采集的FPGA实现】的全部内容了,欢迎阅览 ! 文章地址:http://houdi.cs-ej.cn/news/155.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 成事e家移动站 http://houdi.cs-ej.cn/mobile/ , 查看更多