许多市场领域(包括视频广播、军事、医学影像、基站)都得益于使用高密度FIFO器件方案的使用,其具有可编程的特点。并且比SDRAM + FPGA的体系结构可以显著节省成本和改进视频质量,使用系统级编程,可以使高密度FIFO设计更简单,成本更低。 在这篇**中,我们将首先介绍几个视频应用,了解其数据路径及需要处理的数据性质。下一步,我们将尽力估计在视频处理通道中操作数据的复杂性。然后会介绍可编程高密度FIFO和其能力,以及它如何能更有效率的替代当前传统的使用SDRAM和FPGA实现帧缓存的方案 视频应用概述: 图1显示了IPTV的系统框图。输入传输流可以是任何编码形式如DVB -ASI,MPEG2或SDI,他们通过用多格式解码器(multi-format CODEC)传输,转换成(即解码或重解码)成H.264传输流。经编码的传输流用通道信息封装并通过以太网发送。在接收路径,到来的传输流在显示之前要进行解码和后处理,例如降噪、颜色增强,缩放,去隔行等。 图2显示了一个用于电影制作和摄影棚的HD(高清)专业相机的系统框图。捕获到的图像经过一个图像处理器,进行色彩处理、亮度提高、数码缩放、帧速率转变等等。图像处理单元通常使用一个基于FPGA的设计,由于大部分的图像处理是专有的,会经常发生变化。应用处理器管理与其它设备的通讯以及压缩并存储捕获到的内容到海量存储(HDD)。应用处理器也有一个图形引擎来进行屏幕显示(OSD),它和进来的视频混合后显示。 从上述例子中,我们可以看到数据处理包括两种类型: 1) 帧同步: 在一些任务中需要帧同步(例如,通过以太网传输和接收时,当码流速度不断变化而解码器需要一个恒速的传输流)。虽然存储器对同步的要求似乎很小,但当涉及到多个码流时它可能很显著。这种同步可以由一个异步FIFO实现。 2) 帧存储: 帧存储在这些地方需要:任何暂时的处理如帧率转换,数码变焦(缩放),或执行去隔行。储存的帧数量随着需要的临时信息数目增加而增加。当视频数据按照本来的顺序时,帧缓存也必须是“先进先出”。 通过上面的讨论,我们可以说,所有的储存和同步都可以使用FIFO实现。那么理想的FIFO应该是多大的呢?一个典型的1080p 帧,10位 4:2:2格式将需要存储器大小为39.55M位(每行像素数*每帧行数*每像素比特数= 1920*1080*20)。预计总容量可以通过需要存储的帧数乘以这个数字。典型的视频处理算法需要存储2到3帧,这意味着总容量要达到120M位。由于不可能有如此大的基于片上SRAM的FIFO存储器,一般的方法是使用一个DRAM来缓存这个数据。 高密度FIFO -传统的实施和及其复杂性。 帧缓存就是高密度FIFO,传统上使用外部DDR SDRAM实现。举例说明一个典型的视频处理应用和这些FIFO如何实现。 图3显示了一个典型情况的数据路径,有4种不同来源的视频流需要显示在同一个显示器上。四个以1080p60(24位RGB)分辨率捕捉视频的高清相机使用一个cameralink接口连接到系统上。色彩空间转换 (从RGB到YCbCr)及色度采样降低(从4:4:4到4:2:2)后,横向和纵向帧按比例减少,并储存在DDR2 SDRAM里。存储的帧可以按要求读回和定位,结果帧和融合帧然后提高采样速度和色彩空间转换为通过LVDS连接来驱动面板。 |