本文设计一种用于工矿监控系统的实时视频数据采集系统,系统中由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……。
3.2 系统性能估算
为了保证系统的实时性,一行有效视频数据的存储必须在下一行数据到来之前完成。本系统中,存储一行有效视频数据以及格式调整等需要占用1 288个系统时钟。SRAM的最高时钟频率可以达到125 MHz,则存储一行视频数据所需的时间T1=1 288/125=10.304 ns。一行视频数据中的消隐期和无效数据占用448字节时间,输出的像素时钟为27 MHz,则消隐期和无效数据所占的时间为T2=448/27=16.592 ns。由于在行消隐期和无效数据所花费的时间T2大于存储一行视频数据所需的时间T1,因此完全可以在行消隐期实现一行视频数据的实时存储,满足实时数据处理的要求。
本设计在QUARTUSⅡ8.1环境下进行综合验证,其顶层设计采用原理图设计方式,各模块采用VHDL语言设计,共使用了364个LE,程序下载到FPGA芯片进行仿真验证,很好地实现了实时视频监控的功能。在本设计的基础上稍加改动即可实现可变分辨率的视频图像采集与处理系统。
上一篇:低功耗通用语音处理平台的设计实现
下一篇:基于FPGA的三线制同步串行通信控制器设计
推荐阅读最新更新时间:2024-05-02 21:18
- 睿瀚医疗万斌:“脑机接口+AI+机器人”是康复赛道的未来
- 希润医疗孟铭强:手功能软体机器人,让脑卒中患者重获新生
- 柔灵科技陈涵:将小型、柔性的脑机接口睡眠设备,做到千家万户
- 微灵医疗李骁健:脑机接口技术正在开启意识与AI融合的新纪元
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- ST有奖直播报名|介绍CAN总线特别在汽车应用及保护器件的重要性
- 有奖直播|英飞凌OBC解决方案深度详解 报名中!
- TI Sensor Menu 助力感应全世界——下载有礼!
- Microchip科技大片:触摸解决方案的一天!
- 12月6日上午10:00有奖直播:如何使用Microchip安全方案为IoT设备保驾护航
- STM32F413 Nucle-144驾到,要测评速速来!
- NI labview、CompactDAQ技术集锦
- 齐聚一堂 恩智浦教大家玩转新一代物联网应用 观看视频答题有好礼!
- EEworld独家原创视频:大话TI CC2650,邀你来看!
- 有奖直播:艾迈斯欧司朗智慧农业与植物照明