DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1135|回复: 0
打印 上一主题 下一主题

[安防] 基于NiosII的视频采集与DVI成像研究及实现

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:01:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      视频采集是进行图像及图形处理的第一步,目前视频采集系统一般由FPGA和DSP组成,FPGA作为视频采集控制芯片,DSP作为图像处理与成像控制芯片[1]。随着FPGA技术的发展,片内的逻辑单元越来越多,片内的DSP资源也越来越丰富,因此可直接在FPGA片内进行图像处理。目前Altera公司的FPGA支持NiosII[2]软核,通过Avalon设备总线挂接自定义模块,编写用户控制程序。本设计通过Avalon总线读取RGB像素值进行像素处理,通过I2C总线初始化视频解码芯片和DVI视频编码芯片。NiosII是一种可配置片内外设的软核CPU,采用RISC精简指令系统,流水线处理技术,用户可自定义Avalon总线外设构成SoC系统,支持32 bit存储宽度,支持DDR2、SSRAM存储器。结合项目,采用TVP5146[3]视频解码芯片,FPGA采集解码数据并进行隔行转逐行、像素裁剪处理、像素YCrCb转RGB、RGB转灰度等处理后,采用NiosII软核配置Avalon总线DVI接口从设备外设,把储存在SSRAM中的视频数据依次送入DVI编码芯片SiI178[4],带有DVI接口的监视器接收解码并显示采集的视频数据。
  1 视频采集与DVI成像系统的组成
  视频采集与DVI成像硬件构成如图1所示。该系统由视频解码芯片、FPGA控制芯片、DVI接收编码芯片、SSRAM和Flash组成。硬件系统分为模拟视频信号解码、视频数据采集、图像处理和DVI编码显示3大部分。






  PAL-D制式一行可视像素有720个,因为采用ITU-RBT.656标准,每2个DATACLK时钟才输出一个像素,所以,一行可视像素需要1 440个DATACLK时钟。一行像素输出完毕后紧接4个行结束标志,然后进入行消隐阶段,行消隐阶段结束后,4个字符的开始标志表明一行的开始,从4个结束标志到4个开始标志,共有288个DATACLK时钟。这288个DATACLK期间的数据不用于显示,用于同步和消隐,所以对于PAL-D制式,采用ITU-RBT.656标准传输一行视频需要1 728个DATACLK时钟[7]。
  EAV和SAV分别表示一行有效视频的结束和开始,EAV/SAV序列由FF-00-00-XX表示,其中XX是状态字,表1为EAV/SAV序列字段位表。






  Idel:默认空闲状态。如果视频采集标志capture置位,则进入Wait State状态;如果capture不置位,则停留在Idel状态。
  Wait State:此时如果收到数据0xff,则进入State1,其他情况仍然循环停留。
  State1:如果此时收到数据0x00,则进入State2;收到其他数据则进入Error。
  State2:如果此时收到数据0x00,则进入New page状态,否则状态返回到Wait State。
  New page:此时视频处于消隐状态,如果收到的视频数据vpo[6:5]=01,则正在消隐,转入第一行数据接收状态First Line,否则跳回Wait State状态。
  First Line:如果收到vpo
  • =000,表明下一个数据即视频图像数据,否则返回到Wait State。
      Chroma blue:正确有效的数据,如果此时接收到vpo=0xff,则表明数据转入End Line,如果收到vpo=0x00,则转入Error状态。
      Luma blue:亮度蓝色数据,接收完转入Chroma red状态。
      Chroma red:色度红色数据,接收完转入Luma red状态。
      Luma red:亮度红色数据,接收完转入Chroma blue状态。
      End Line:如果vpo
  • =011,表示奇数场结束,偶数场将要开始,转入New line状态;如果vpo
  • =111,表示一帧数据结束,转入Idle状态;如果vpo[5:4]=01,表示一行结束,下一行将要开始,转入New line状态;否则进入Error状态。
      New Line:如果接收到的vpo[5:4]=00,表示有效数据接收,转入Chroma blue状态;否则转到End Line状态。
      Error:错误状态,ITU-RBT656规定Y=[16 235] CBCR=[16 240]范围内,越此范围就为错误状态。如果capture=1,跳转到Wait state状态,否则停留在Error状态。该系统具有自动错误恢复能力。

      3.2 图像剪裁处理
      PAL-D制式视频在ITU-RBT.656标准下,输出像素面为720×576大小,而本设计中要求输出大小为640×480像素面,所以必须使得行720像素变为640个,采用每9个像素丢弃1个像素,因为Y/Cb/Cr是交替输出的,即Cb-Y-Cr-Y传输,每个像素都有亮度数据Y,但是色度Cr和Cb是交替的。如果第1个像素是Cb和Y数据,则第8个像素即为Cr和Y数据,第9个像素为Cb和Y数据,现在丢弃第9个像素数据,先把第10个素的Cr数据和第11个像素的Cb交换,这样就保持了Cb和Cr的交替。视频中采取每6行可视像素丢弃1行,对于576行可视像素,实际丢弃96行,即变为实际可显示480行。
      3.3 图像交织与存储处理
      视频信号采集控制处理后产生行、场、帧、视频有效标志及每场视频行数、每行像素点数。本设计利用这些信号组合作为存储地址控制字写入SSRAM,每2个DATACLK为1个像素数据,4个DATACLK为2个像素数据32 bit,FPGA控制每4个DATACLK写入一次32 bit数据。
      每场视频可视行为288行,占用2进制位9 bit,奇偶场标志1 bit,每行像素有640个,存入SSRAM时按照每2个像素写入一次,故每行像素为360个写入次,设计为9 bit,总共为19 bit,正好占用完19 bit地址线。
      奇偶场标志就是上述EAV/SAV状态字中的F,电视视频中,首先传输的是偶数场,此时A9=0;其次传输的是奇数场,此时A9=1。帧控制位frame定义为1 bit,当完成一帧的传输后就使frAME<=frame+1,这样帧控制位就是0-1-0-1-0-1序列,完成一帧传输就翻转一次。帧控制位用来切换存储体,当帧控制位切换在第一片SSRAM上时,偶数场先存入到SSRAM中,然后奇数场数据嵌入到SSRAM中。
      4 图像处理和DVI编码显示
      视频采集的图像已经交替存入SSRAM中,当一帧存储完毕,该存储体就可以进行处理上传。图像处理包括Y/Cb/Cr 4:2:2格式转化为Y/Cb/Cr 4:4:4,Y/Cb/Cr转化为RGB格式,可实时RGB像素处理,像素处理后按照行、场同步信号依次送入DVI芯片。
      4.1 YCrCb转RGB处理
      首先处理的是Y/Cb/Cr 4:2:2格式转化为Y/Cb/Cr 4:4:4格式,就是对每个像素扩展其色度数据,使得每个像素为24 bit。其中8 bit为亮度数据,8 bit为Cr数据,8 bit为Cb数据。
      由YCrCb数据转换为RGB数据可按照下式:
      R=1.164×(Y-16)+1.596×(Cr-128)
      G=1.164×(Y-16)-0.813×(Cr-128)-0.392×(Cb-128)(1)
      B=1.164×(Y-16)+2.017×(Cb-128)
      实际上FPGA片内不能进行小数运算,因此把需要运算的数左移9 bit,且运用FPGA片内的乘法器宏单元完成。则式(1)变为式(2):
      R=596×Y+817×Cr-114 131
      G=596×Y-416×Cr-200×Cb+69 370(2)
      B=596×Y+1 033×Cb-141 787
      这样得到的RGB信号只需要右移9 bit就可以得到正确的8 bit数据位宽度的RGB信号,对RGB像素的处理受NiosII核控制,挂接在NiosII核上的Avalon从设备有3 bit控制信号,其值从0~7,分别对应灰度处理、像素水平线性放大插值处理、水平缩小处理、原三彩色输出和无定义。
      若进行灰度处理,则按照下式计算:
      Y=0.299×R+0.587×G+0.114×B(3)
      在计算时也需要先左移9 bit,采用3路乘法MULT_
      ADD宏单元计算,计算结果右移9 bit。如果进行水平像素放大,则采取线性插值法,其他图像处理按照相应算法进行。

      4.2 视频数据输出和DVI配置
      DVI输出刷新频率为75 Hz,输出屏幕像素为640×480,查VGA时序表得到在640×480@75 Hz时,水平像素总共为840,垂直像素总共为500,行频为37.5 kHz,点时钟频率为31.5 MHz,这个频率由FPGA片内PLL倍频得到。配置DVI芯片引脚,设置IDCK+为像素时钟31.5 MHz,IDCK-接地,DE表示有效像素数据使能,其值在有效行和有效列内为高电平,否则为低电平。行、场同步信号由在FPGA片内编写的DVI模块产生时序控制。通过I2C口配置SiI178芯片,设置其为正常工作方式,VSYNC、HSYNC为正常输入状态,输入总线为24 bit宽,IDCK+下降沿将数据打入DVI编码芯片。
      系统采用FPGA为主控芯片,通过一片FPGA完成视频解码数据的采集和图像处理,并在FPGA片内配置NiosII软核,作为初始化TVP5146和SiI178使用,在图像处理模块中挂接Avalon从设备,YCbCr转换为RGB后可以通过NiosII处理器编写C算法处理或者通过NiosII的标志信号进行处理,处理结果直接送DVI编码器。采用乒乓交织算法,保证了图像不闪烁和无锯齿现象。(中电网)
                
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
    收藏收藏 分享分享 支持支持 反对反对
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

    GMT+8, 2024-4-19 23:00 , 耗时 0.097418 秒, 18 个查询请求 , Gzip 开启.

    各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

    桂公网安备 45031202000115号

    DIY编程器群(超员):41210778 DIY编程器

    DIY编程器群1(满员):3044634 DIY编程器1

    diy编程器群2:551025008 diy编程器群2

    QQ:28000622;Email:libyoufer@sina.com

    本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

    快速回复 返回顶部 返回列表