随着科技的日新月异,视频监控市场也得到了飞速发展。视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。近年来,随着互联网的大范围普及,以及计算机、网络以及图象处理、传输技术的飞速发展,视频监控技术也有长足的发展。视频监控已经渗透到教育、政府、娱乐场所、医院、酒店、运动场馆、城市治安等多种领域,视频监控服务器被称为继手机以后另外一个极具市场开发前景的消费电子产品。
数字网络视频监控服务器主要完成从摄像头获取的模拟信号到数字化压缩后送到网络的功能,其原理框图如图1所示。
图1数字网络视频监控服务器原理框图
由图1所示,监控器电路板主要由A/D芯片,FPGA多路转接芯片,压缩芯片,CPU等组成。其中本文要介绍的多路转接逻辑的FPGA实现位于A/D芯片和压缩芯片之间,由于FPGA内部含有PLL模块,所以跟FPGA连接的TW2804芯片的27MHz输入时钟可以由FPGA产生。
这里选用Altera的Cyclone系列的EP1C6Q240C8,其内部有90k的存储容量,6kLEBS,2个PLL,在后面的设计介绍中,将会讲到整个设计用到了64k的存储容量,1个PLL,大约4—5k左右的LEBS,所以选用此低成本的FPGA,可以完成此设计,而且基本上充分用到了内部的大多数资源,加上此芯片的引脚有240个,能满足外面的引脚连接,所以Altera的EP1C6Q240C8成为此逻辑设计中最佳的选择器件。
如图1所示,A/D芯片接受来自四个摄像头的四路模拟视频信号,这里采用Techwell公司的TW2804芯片,此芯片支持四路视频模拟信号的输入,输出是数字ITU-RBT.656格式的信号,时钟是27MHz。D1、D2、D3、D4信号的时序图如图2所示。
图2 ITU-R BT.656格式信号时序图
其中EAV和SAV分别为行尾和行头标志信号,他们中间是行与行之间的空白信号,SAV后面的VALID有效时的信号为1440bytes的d1格式的有效视频信号,总的这些信号加起来是视频信号的一行信号,一帧视频信号包括576行这样的行信号,也就是有效的这种格式的一帧输出视频信号为1440*576bytes的信号,由于每一行信号中由两个bytes来表示一个像素,所以这种d1格式一帧的像素为720*576分辨率。
FPGA转接逻辑要实现的功能是要在显示终端上同时显示四路的视频信号。也就是要显示如图3所示的视频信号。
由于要在一个显示终端上同时显示四路信号,所以原来每一路信号的720*576分辨率要转换为原来1/4的分辨率,即cif的格式,cif格式是352*288的分辨率,这样四路cif格式的信号组合成如图3所示的一个帧输出到终端显示出来。
因为在终端显示上是要求四路视频信号同步输出的,也就是不允许出现其中一路信号已经在显示器上显示出来了,但另外一路信号还没有显示出来,也就是出现画面上一部分是黑屏的情况,所以在这种情况下,需要把四路不同的视频信号先用FPGA在SDRAM中缓存起来,当每一路信号都在SDRAM中都至少存满一帧时就可以同步读出,并通过FPGA内部缓存组成如图3所示的帧格式,然后输出给压缩芯片压缩后由处理器控制输出至网络,这里的压缩芯片选的是VWEB公司的VW2010。
图3 显示终端视频信号格式
至此,FPGA要实现的功能已经非常清晰,首先把输入的四路d1格式的信号分别转换成四路cif格式的信号,然后把这四路信号分别缓存在SDRAM中,当SDRAM中每一路信号都至少存满一帧时,同步读出,读出SDRAM到FPGA中后,经过格式的重新组合,最后组成如图3所示的信号格式输出。其中数据在SDRAM中的缓存控制是最重要也是最复杂的环节。下面详细介绍此FPGA的逻辑设计与实现。
由上面的介绍可知,此FPGA主要有三方面的接口,与TW2804的输入接口,与SDRAM的缓存接口,与VW2010的输出接口。所以FPGA的内部逻辑大致可以设计为如图4所示。
图4FPGA内部逻辑结构框图
输入格式转换模块主要是完成四路信号从d1到cif格式的转换,即从原来的720*576像素的分辨率转换为352*288像素的分辨率。其转换过程是把一帧中偶数行的数据全部去掉,每一行中按像素的顺序一个隔一个的去掉,最后保留的数据就是原来1/4的数据。这个过程比较简单,通过设计两个行列计数器就能实现。其仿真图如图5所示。
图5d1到cif格式转换的简单仿真示意图
图5所示为在奇数行时数据一个空一个的有效,在一行读完后,下一行就都设为无效。
接下来是内部输入缓冲模块,此模块用来控制与SDRAM控制相连接和进行数据缓存控制的模块。其内部逻辑图如图6所示。
图6FPGA内部缓冲与内部SDRAM控制器的连接逻辑图
下面给出对此次设计以后可以扩展和改进的功能。
首先,因为这是四路的多路转换缓冲,所以直接把它们固定组合起来送至网络显示终端。如果需要支持更多路的视频信号输入进行多路转换,例如输入信号是8路或16路,那么送入网络的时候就有一个组合的问题,即在显示器上四幅图像最终显示视频输入的哪四幅。这在实际情况下也是经常出现的情况,例如在某个建筑物中安装了8个摄像头,在白天的情况下可能要监视楼道内的情况,而到晚上可能要监视楼外门口的情况,这就需要在FPGA中进行一个选择,所以,此时可以在FPGA中加入一个I2C从模块,通过此模块可以与处理器通信,在FPGA中设置一些寄存器,通过由I2C送来的不同的寄存器配置指令,就可以实现显示器上图像的实时切换。
其次,由于Cyclone系列的产品存储容量比较有限,如果要增加到16路这样的规模,输入输出缓冲的存储容量必将不够,所以此时可以考虑用Cyclone2系列的产品。
另外,如果以后要完成路数比较多的转接,可以在监控器板上多加几块TW2804和VW2010芯片,这样就需要FPGA的输入输出引脚要足够多,而EP1C6Q240C8这样的FPGA芯片有240个引脚,足够扩展需要。
总之,在这样的转接逻辑中用到Altera的Cyclone系列低成本的FPGA产品,充分利用了其现有的内部资源,而且价格也是非常的易于接受,是非常理想的选择。
本次设计项目是作者年初在龙芯产业化研发中心作客座研究生时独立负责设计并实现的,其中此次视频监控器的CPU用的是龙芯2号,此转接逻辑已成功设计完成。