关 闭

新闻中心

EEPW首页 > 安全与国防 > 数字网络视频监控器中的多路转接逻辑的设计与实现

数字网络视频监控器中的多路转接逻辑的设计与实现

——
作者:黄喜 时间:2006-07-20 来源:天津大学电子信息工程学院 收藏

摘要:本文主要介绍在视频监控板中多路视频信号输入情况下的数据缓存、信号格式转换的设计,并用altera的cyclone器件实现的整个过程。包括简单介绍视频监控器电路板的原理,此转接逻辑在系统中的作用和地位,并详细介绍了此逻辑用fpga设计实现的过程。

随着科技的日新月异,视频监控市场也得到了飞速发展。视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。近年来,随着互联网的大范围普及,以及计算机、网络以及图象处理、传输技术的飞速发展,视频监控技术也有长足的发展。视频监控已经渗透到教育、政府、娱乐场所、医院、酒店、运动场馆、城市治安等多种领域,视频监控服务器被称为及手机以后另外一个极具市场开发前景的消费电子产品。


数字网络视频监控服务器主要完成从摄像头获取的模拟信号到数字化压缩后送到网络的功能,其原理框图如图1所示。

由图1所示,监控器电路板主要由A/D芯片,FPGA多路转接芯片,压缩芯片,CPU等组成。其中本文要介绍的多路转接逻辑的FPGA实现位于A/D芯片和压缩芯片之间,由于FPGA内部含有PLL模块,所以跟FPGA连接的TW2804芯片的27m输入时钟可以由FPGA产生。


这里选用altera的cyclone系列的EP1C6Q240C8,其内部有90k的存储容量,6kLEBS,2个PLL,在后面的设计介绍中,将会讲到整个设计用到了64k的存储容量,1个PLL,大约4—5k左右的LEBS,所以选用此低成本的FPGA,可以完成此设计,而且基本上充分用到了内部的大多数资源,加上此芯片的引脚有240个,能满足外面的引脚连接,所以altera的EP1C6Q240C8成为此逻辑设计中最佳的选择器件。


如图1所示,A/D芯片接受来自四个摄像头的四路模拟视频信号,这里采用Techwell公司的TW2804芯片,此芯片支持四路视频模拟信号的输入,输出是数字ITU-R BT.656格式的信号,时钟是27m。。D1、D2、D3、D4信号的时序图如图2所示。

图2

其中EAV和SAV分别为行尾和行头标志信号,他们中间是行与行之间的空白信号,SAV后面的VALID有效时的信号为1440bytes的d1格式的有效视频信号,总的这些信号加起来是视频信号的一行信号,一帧视频信号包括576行这样的行信号,也就是有效的这种格式的一帧输出视频信号为1440*576bytes的信号,由于每一行信号中由两个bytes来表示一个像素,所以这种d1格式一帧的像素为720*576分辨率。


FPGA转接逻辑要实现的功能是要在显示终端上同时显示四路的视频信号,也就是要显示如图3所示的视频信号。

图3

由于要在一个显示终端上同时显示四路信号,所以原来每一路信号的720*576分辨率要转换为原来1/4的分辨率,即cif的格式,cif格式是352*288的分辨率,这样四路cif格式的信号组合成如图3所示的一个帧输出到终端显示出来。


因为在终端显示上是要求四路视频信号同步输出的,也就是不允许出现其中一路信号已经在显示其上显示出来了,但另外一路信号还没有显示出来也就是出现画面上一部分是黑屏的情况,所以在这种情况下,需要把四路不同的视频信号先用FPGA在sdram中缓存起来,当每一路信号都在sdram中都至少存满一帧时就可以同步读出,并通过FPGA内部缓存组成如图3所示的帧格式,然后输出给压缩芯片压缩后由处理器控制输出至网络,这里的压缩芯片选的是VWEB公司的VW2010。


至此,FPGA要实现的功能已经非常清晰,首先把输入的四路d1格式的信号分别转换成四路cif格式的信号,然后把这四路信号分别缓存在sdram中,当sdram中每一路信号都至少存满一帧时,同步读出,读出sdram到FPGA中后,经过格式的重新组合,最后组成如图3所示的信号格式输出。其中数据在sdram中的缓存控制是最重要也是最复杂的环节。下面详细介绍此FPGA的逻辑设计与实现。


由上面的介绍可知,此FPGA主要有三方面的接口,与TW2804的输入接口,与sdram的缓存接口,与VW2010的输出接口。所以FPGA的内部逻辑大致可以设计为如图4所示。

图4

下面对各个模块分别进行介绍。
输入格式转换模块的主要是完成四路信号从d1到cif格式的转换,即从原来的720*576像素的分辨率转换为352*288像素的分辨率。其转换过程是把一帧中偶数行的数据全部去掉,把奇数行中的数据,按奇数列的顺序一个隔一个的去掉,最后保留的数据就是原来1/4的数据。这个过程比较简单,通过设计两个行列计数器就能实现。其仿真图如图5所示。 

图5

图5所示为在奇数行时数据一个空一个的有效,在一行读完后,下一行就都设为无效。


接下来是内部输入缓冲模块,此模块式用来控制与sdram控制相连接和进行数据缓存控制的模块。其内部逻辑图如图6所示。

如图6所示,此模块主要设置了四个FIFO。因为sdram只有一个数据通道,所以四路信号输入时必须先进行内部缓存才能无丢失的存储于sdram中。所以此时要把FIFO的读时钟至少设为写时钟的四倍,这样才能在FIFO没有存满时就能把每一路的信号从FIFO缓存中读出到sdram中。


 由于sdram的数据是32位的,这里把四个FIFO也设为32位,所以在四路cif格式的信号进入FIFO之前要先用四个寄存器进行8/32的转换。只要设置四个移位寄存器就可实现。


如图5所示,cif格式的信号的输入时钟是27/2m的,由于FIFO是32位的,所以FIFO的读时钟要至少设成(8/32)*(27/2)*4=13.5m。


对于这里的FIFO的数据容量,把每个FIFO都设为256个深度,这样就需要256*32=8k的容量,四个FIFO就需要8*4=32k的容量。所以在输入缓冲中用到了FPGA中32k的存储资源。


由于四路cif格式的信号是每隔704(352*2)bytes就会出现704个无效的数据,即数据是一行隔一行的有效的,而sdram需要读写两个独立的带宽,所以可以把sdram的读写周期分别设为704个bytes的长度,这样在704个有效数据到来的时候就给sdram控制器写数据,而在704个无效数据到来时,就对sdram控制器读数,这样就解决了sdram只有一个数据通道的问题。


但是,由于sdram还有自刷新周期,而且对其控制的命令是有一定延时的,所以这里把sdram对数据的读写时钟频率再提高一倍,即由上面算得的13.5m提高到27m,对于cyclone系列的FPGA来说,这样的逻辑是很容易跑到27m的时钟频率的。


数据从FIFO中读出后,就要送入到sdram控制器中,sdram控制器可以由quartus的megacore产生,也可以根据需要自己设计,这里是自己设计的,sdram控制器的输入输出接口如图7所示。 

如图7所示,sdram控制器的左面为用户接口,右面为sdram接口,用户给sdram发出请求命令(cmd),当收到回应信号(cmdack)时,sdram给用户端发送或读取数据。


这里用到的是64m的sdram,因为每一路cif格式的信号每帧数据是352*288个像素,即704*288=202752bytes,这里给每一路信号分配两帧的地址空间。由于sdram有突发数据长度(burst length)和整页(full page)两种数据操作方式,而这里因为数据比较大,所以采用了full page的方式,这种方式是在读写命令有效后,即在时钟控制下读出整页256个32bits的数据,这样读写数据的效率就可以提高很多。


因为sdram中数据的宽度是32位的,而cif格式的信号是8位的,所以只需要给每路信号分配2*704*288/4=101376的地址空间。


如图8所示为sdram控制器的读写时候的控制信号图。

a

b

图8

图8中a为对sdram写数据的命令,b为对sdram读数据的命令,由图可以看出,通过sdram控制器的转换,在接收到回应信号(cmdack)后,把读写命令分别转换成了rasn,casn,wen控制指令。其中读写指令分别对应如下。


写数据 :rasn=1 ;casn=0 ;wen=0 ;
读数据 :rasn=1 ;casn=0 ;wen=1 ;


数据从sdram读出时,应满足每一路信号都至少在sdram中存满一帧的条件。当可以同步读出时,由于还是要四路读出,所以在读出端口还要设置四个FIFO,用来缓存数据,以进行信号的组帧。


这里把四个FIFO同样设为32位宽度,256长度,所以这里总共也是用到了32k的存储容量。加上上面sdram控制器输入端用到的32k存储容量,在整个FPGA中用到了64k的存储容量,对于EP1C6Q240C8的90k存储容量来说是足够的而且利用率也是比较高的了。


输出FIFO缓存后,就要把四路信号按照每一帧如图3的格式输出,也就是第一行的前一半的704bytes输出第一路信号,后一半704个bytes输出第二路信号,然后直到第289行开始,前一半的704bytes输出第三路信号,后一半704个bytes输出第四路信号,这样最后在网络显示终端就可以在一个屏幕上看到如图3所示的四幅图像。


如图9所示为在前两行的数据输出波形图。 

由图可知,第一和第二路的输出FIFO分别在两个rden信号下控制数据的读出,而这两个rden信号就是由计数器计数至704产生的,再另外设置一个行计数器,当此计数器计数至289时,输出dout就换为第三和第四路信号的输出FIFO。


到此为止,整个FPGA的设计大致完成。下面给出对此次设计以后可以扩展和改进的功能。


首先,因为这是四路的多路转换缓冲,所以直接把它们固定组合起来送至网络显示于终端。如果需要支持更多路的视频信号输入进行多路转换,例如输入信号时8路或16路,那么送入网络的时候就有一个组合的问题,即在显示器上四幅图像最终显示视频输入的哪四幅。这在实际情况下也是经常出现的情况,例如在某个建筑物中安装了8个摄像头,在白天的情况下可能要监视楼道内的情况,而到晚上可能要监视楼外门口的情况,这就需要在FPGA中进行一个选择,所以,此时可以在FPGA中加入一个I2C从模块,通过此模块可以与处理器通信,在FPGA中设置一些寄存器,通过由I2C送来的不同的寄存器配置指令,就可以实现显示器上图像的实时切换。


其次,由于cyclone系列的产品存储容量比较有限,如果要增加到16路这样的规模,输入输出缓冲的存储容量必将不够,所以此时可以考虑用cyclone2系列的产品。


另外,如果以后要完成路数比较多的转接,可以在监控器板上多加几块TW2804和VW2010芯片,这样就需要FPGA的输入输出引脚要足够多,而EP1C6Q240C8这样的FPGA芯片有240个引脚,足够扩展需要。
总之,在这样的转接逻辑中用到altera的cyclone系列低成本的FPGA产品,充分利用了其现有的内部资源,而且价格也是非常的易于接受,是非常理想的选择。 

 

 
 
 
 
 



评论


相关推荐

技术专区

关闭