微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于面积的实现和基于速度的实现-两种YUV分离的FPGA的实现方式

基于面积的实现和基于速度的实现-两种YUV分离的FPGA的实现方式

时间:06-05 来源:互联网 点击:

0 引言

随着视频采集、压缩技术以及无线传输技术的飞速发展,基于FPGA的设计被广泛应用到各个领域,尤其在嵌入式系统。传统的视频技术解决方案(如采用CPLD+CPU的结构进行的设计)已经不能满足人们对于集成度与实时性的要求,而FPGA恰逢其时的出现,以其高度集成,并行处理和丰富的片上资源,同时随着FPGA自身性能的不断提高,各个FPGA厂商为视频处理提供了越来越多的高性能解决方案,使得FPGA在视频采集压缩以及无线传输领域的应用越来越广泛。

本文的研究是基于FPGA的实时视频无线传输系统的一部分。在进入视频压缩编码器之前,需要完成视频的采集,模/数转换,预处理,读/写SDRAM等操作,本文针对预处理过程中数字视频的分离存储进行了研究.即YUV的分离存储,并采用了两种方法实现了YUV的分离存储;一种是基于面积考虑的只用一片双端口存储器的实现;另外一种是基于速度考虑的用两片双端口处理器的实现。

1 基于FPGA的实时视频无线传输系统

本文的系统主要由视频采集、视频压缩、无线传输3大部分组成。系统结构如图1所示。在视频数据进入视频压缩编码器之前,视频需要经过CCD视频采集、TVP5146视频解码、有效数据抽取、预处理、SDRAM存储等操作。这些操作均属于视频采集前端系统。其中,CCD完成模拟视频的采集,TVP5146完成对输入模拟视频到数字视频的转换,而这里需要对TVP5146进行内部寄存器设置,设置通过I2C总线来完成。有效数据抽取模块完成对有效视频数据的抽取,1帧视频数据由625行分属于奇偶场的视频组成,而系统所需要的是1帧视频的576行有效数据中的特定像素,而这个工作就是由有效视频抽取模块完成;预处理模块则是完成数字视频的串/并转换,即8位到16位的转换以及YUV的分离,这也是本文所做的工作,下面将做详细介绍;然后将视频存储在SDRAM中,实现了为H.264编码器提供稳定的视频流供压缩;3G模块将压缩模块送出的视频流进行RTP封装,然后发送到远端接收系统。

本文所做的研究是基于YUV分离开展的,前面已经提过面积与速度是FPGA设计不变的主题。二者也是一对矛盾体,不可能同时兼顾,在系统设计中只能通过速度和面积的互换来使二者有机的统一起来。其中,基于面积的设计是利用一片双端口RAM,利用FPGA与SDRAM之间的频率差异来实现的,选定的FPGA的工作频率为48 MHz,SDRAM的工作频率为100 MHz,这样就实现了再一行视频数据的有效期完成对双端口RAM的写,然后利用一行视频数据的行消隐期,完成对双口RAM的读出操作,进而实现了YUV分离输出;而另一种实现是基于速度的实现,利用两片双端口RAM进行乒乓操作,完成了数据的无缝缓存和处理。本文通过Verilog实现了两种方法设计。通过对比仿真结果,均达到了预期结果。

2 基于面积的实现

面积通常可以通过一个工程运行所消耗的触发器(FF)和查找表(LUT)数量已经等效门数量来衡量,即所消耗的资源来衡量。本文基于面积的设计,充分考虑到用户对集成度和智能化的要求。对于集成度和智能化的提高,应该着眼于每一部分的优化,才能获得整个系统集成度和智能化的提高,因此,本文对YUV分离这个模块进行了研究优化。

该模块基于面积的设计采用一片双口RAM进行模块结构图如图2所示。有效数据抽取模块与控制器和双口RAM的输入时钟应与FPGA工作时钟保持一致。有效数据抽取为双口RAM提供写使能,每行提供的有效视频数据为704个像素,等到该模块检测到有效视频数据的时候,对双口RAM发出读使能,然后接下来利用704个CLK完成对双口RAM的写操作,等到写完毕时向SDRAM发出满信号,在SDRAM收到该信号后,产生读使能,以便对双口RAM构成的读操作。该模块的设计思想是基于FPGA与SDRAM频率差异进行设计的。一帧视频数据由625行视频组成,分奇、偶两场,每一帧都是由有效视频数据和场消隐数据组成的。其中23~310和336~623为有效视频数据,共576行。其余49行为场消隐数据,每一行同样分为行有效数据和行消隐数据。如果FPGA的工作频率与SDRAM的频率满足一定的差异(本文采用的FPGA频率为48 MHz,而SDRAM采用100 MHz的时钟频率),那么在一行视频数据的有效期完成对双口RAM的写入后,在该行视频数据的行消隐期内,可以通过输入100 MHz的时钟来完成对双口RAM的读操作。该模块完成对有效视频数据的写入需要1 408个CLK,而完成存储数据的读取需要704个CLK_R,所需时间为1 408×10-8+704×(1/48000000)。因为读/写是串行执行的,故以后每一行有效视频的写入/读出均需要相同的时间,一行数据读出完毕的仿真如图3所示。



3 基

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top