打印

基于FPGA的H.264/AVC视频解码系统验证平台的设计

[复制链接]
1595|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梅花望青竹|  楼主 | 2012-5-27 19:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘 要: FPGA验证已成为系统设计中的重要验证手段之一。详细介绍了基于FPGA的验证平台的硬件组成、工作过程及其设计过程中应该注意的问题。该验证平台主要用于对H.264/AVC解码系统进行硬件模块的验证,从而为整个视频解码系统的开发提供可靠的依据。
关键词: FPGA H.264/AVC PCB 视频解码 SoC
  H.264/AVC[1]是ITU-T VCEG和ISO/IEC MPEG共同开发的视频处理标准。作为新一代的视频编解码标准,它综合了各种先进技术并压缩了基本单元,从而在图像质量没有明显下降的情况下大大降低了压缩率。H.264/AVC相对以前的编码方法,在图像内容预测方面提高了编码效率,从而改善了图像质量, 但其算法复杂性成倍提高,为其ASIC实现设置了不少障碍。
  对于H.264/AVC视频解码系统,虽然单纯用软件也可以实现整个解码过程,但是由于整个解码系统的算法复杂度很高,里面又有大量的数**算,使得软件的计算能力差、速度慢,容易造成总线拥挤,所以单纯地依靠软件实现无法满足视频解码的要求。为了缩短整个解码的时间,提高解码系统的工作效率,有必要将软件中耗费时间和资源较多的模块用硬件来实现。虽然硬件的灵活性差、复用性差、资源消耗大,但却有着强大的计算能力和速度。如果综合考虑软硬件实现解码的特点,在时间和性能上找到一个完美的结合点,进行合理搭配协调实现整个解码系统,将是一个很好的选择。这样,整个视频解码系统就可以分为软件模块和硬件模块两部分。
  对于解码系统的硬件模块来说,在前期设计阶段可以将代码放在由PC机软件所搭建的软件环境中进行功能验证,这个阶段称为软件仿真。虽然软件仿真可以加快整个项目的开发进度,并在一定程度上确保功能的正确性,但是单纯的软件仿真还存在一些问题。一方面通过软件仿真的硬件设计还只是一个理想的硬件设计,并没有考虑到实际的物理器件特性,这会导致硬件物理实现与软件仿真的结果产生偏离;另一方面视频解码处理是一个相当复杂耗时的过程,在PC机平台上建立的软件仿真环境中对硬件设计进行功能验证,耗费的时间是相当惊人的。所以,设计符合验证要求的硬件平台便成为整个视频解码系统设计过程中的基本一环。
  本文主要介绍H.264/AVC视频解码系统的FPGA验证平台的设计过程。
1 H.264/AVC视频解码系统验证平台的组成
  本验证平台的设计要求就是要能够独立完成整个视频解码的过程,一方面可以将视频解码系统的硬件模块载入,以验证硬件模块的功能;另一方面可以载入视频解码系统的软件部分,让硬件模块和软件模块在一个平台下真正实现协同工作,以验证整个解码系统的功能,实现视频解码的全过程。
  本验证平台主要由视频解码系统硬件模块的载体、解码系统软件模块的载体、各种输入输出接口、存储设备以及电源和时钟管理单元等部分组成,如图1所示。

  由于FPGA具有规模大、设计灵活、易于转到ASIC等诸多优点,现代的硬件仿真测试平台几乎无一例外地都采用FPGA作为硬件模块的载体。用FPGA作为硬件模块的实现载体,一方面可以使设计者比较准确地把握硬件设计的物理特性;另一方面可以用FPGA器件完成解码的过程。由于不是在软件环境中完成硬件解码,而是以实际的硬件器件速度运行,解码的速度自然就会大大提高。本验证平台采用Xilinx公司的两片VirtexII6000 FPGA,它们能提供丰富的内存资源和容量以及新算法资源,增强时钟管理支持,它们的结构体系将使系统性能达到更高的层次,扩大输入输出带宽,提高时钟频率、内存速度和数据处理速度。这两片FPGA中的一片(FPGA1)装入视频解码系统的硬件模块; 另一片(FPGA2)则装入视频解码系统的软件模块和32bit RISC CPU。这样整个解码系统的软硬件模块就可以在一个平台上进行视频解码了。两块FPGA之间通过通用I/O口互连。由于平台中的各种存储器件及接口太多,仅仅依靠两片VirtexII6000的I/O口是不够分配的,所以又加入了Altera公司的两片EP2C35 FPGA,一片(FPGA3)作为DDR接口控制器,另一片(FPGA4)则作为SDRAM控制器等。另外要使解码系统的软硬件模块和外部接口进行通信,还必须有各种接口的控制模块,如音频控制器、视频控制器、PCI/USB接口控制器,RS232接口控制器,这些接口控制器的硬件实现也要放到FPGA中。
  针对视频解码系统的要求,在FPGA外围连接了SRAM、SDRAM、DDR和FLASH等存储器,它们可以满足视频处理过程中对于存储器的不同要求。SRAM可以作为视频解码系统软件模块的存储器,也可以作为片外 Cache;SDRAM容量大、速度快,用于存储大量的视频数据;DDR的工作频率最高,速度也最快,作为解码过程中视频数据的中转存储器,满足视频信号快速处理的要求;FLASH则放入RISC CPU启动时需要加载的操作系统软件和FPGA的配置信息,作为视频解码启动时所需的ROM。解码系统的软硬件模块要和这些存储器进行数据交换,需通过SDRAM控制器和DDR控制器等硬件来实现。
  电源管理单元负责产生各器件所需的不同的电压,时钟管理单元则负责产生系统运行时各种器件所需的时钟信号。
2 H.264/AVC视频解码系统验证平台的工作过程
  本文所设计的验证平台既可以和PC机配合完成视频解码过程,也可以直接从外部获得码流独立完成整个视频解码过程。因此,验证平台既采用了PCI接口,也采用了USB接口。 PCI接口可以使验证平台直接插到PC机主板的插槽中,使验证平台通过PCI总线与PC机协同工作。此时,视频解码的硬件模块放到验证平台的FPGA里面,软件模块放在PC机中。这样,视频解码系统利用PC机中的CPU进行控制,软件模块和硬件模块的通信均通过PCI接口进行。验证平台上电以后,通过FLASH进行复位配置,以25Hz或者是30Hz的频率发PCI中断请求数据。中断信号通过PC机及其设备驱动程序唤醒中断线程,该线程从PC机硬盘里面读出一帧待解码的AVC数据,经过PC机里面的解码系统的软件模块进行半解码,然后将半解码数据传给驱动程序,驱动程序把数据传给PC机的PCI总线硬件电路,接着验证平台的PCI接口控制器完成数据的接收,把接收到的数据送到FPGA解码系统中的硬件模块。硬件模块一边从输入端口接收PCI控制器发送过来的半解码视频数据并进行解码,一边把解码得到的数据通过PCI控制器传送到PCI端口上。PC机采集到这个数据值后立刻将它与参考数据进行比较,以判断当前硬件解码器解码工作正确与否。如果解码错误,则通过PCI接口发送命令通知硬件解码工作停止,并在PC机屏幕上打印出解码失败的具体帧和宏块位置。这样就可以利用PC机和验证平台对整个视频解码系统的硬件模块和软件模块进行验证,提高了工作效率。之所以用PCI接口是因为解压以后的高清码流需要很高的带宽,即使是USB2.0这种高速接口也不能达到如此高的传输带宽。而PCI总线由于通用性好、传输带宽高、编程比较方便,使之成为传输高清码流总线的不二之选。这里采用PCI总线中规格最高的64bit、66MHz模式,可以达到峰值为528MBps的传输率,不仅可以满足HDTV,甚至可以满足更高的带宽需求。
  USB接口可以让整个验证平**立进行视频解码,此时FPGA中既放入了解码系统的硬件模块,也放入了解码系统的软件模块,RISC CPU完成PC机上CPU的功能,控制系统软硬件模块的运行。待解码的AVC码流数据通过USB接口送给验证平台上的视频解码系统,RISC CPU协调放在FPGA中的H.264/AVC解码系统硬件模块和软件模块以完成解码。软件模块和硬件模块的通信通过两块FPGA之间的通用I/O口进行。AVC数据经过解码,转换成可以播放的YUV格式的视频数据,再经过视频控制器做一些后处理和视频格式转换的工作,然后将YUV视频数据传输给DVI和VGA接口芯片,最后在HDTV上将这些视频信号显示出来。中间产生的数据主要放在SDRAM中,处理完成的YUV文件则放入两组DDR中。之所以用两组DDR,是为了可以在系统解码的同时,从DDR中将处理完成的视频数据从DDR中取出来送给DVI和VGA接口芯片,并在HDTV上显示。在从一组DDR中取数据的同时,解码系统可以将处理完成的视频数据放入另一组DDR中。这样,有两组高频率的DDR组成视频数据的中转站,就实现了解码和显示的并行执行,从而加快了解码系统的工作速度,保证了视频的流畅。
3 H.264/AVC视频解码系统验证平台的设计原则及其注意事项
  验证平台能否稳定地工作,不仅取决于验证平台架构设计的合理与否,而且还与平台硬件各部分搭建的合理与否有关,另外验证平台的PCB实现的好坏也直接决定了整个验证平台的成败。
  整个验证平台的原理图和PCB图的设计采用Cadence PSD软件。由于这个软件在设计重用方面的优势,使得它在复杂系统的设计中得到普遍使用。由于整个验证平台所需要的元器件比较多,互连关系复杂,因此采用top-down的设计思路,先画出各个主要器件的整体框架,然后再分别完成每个器件的原理图设计,最后根据不同元件的PCB要求完成PCB图的设计。
  在此根据设计过程中遇到的问题,简要介绍一下本验证平台的原理图和PCB图设计中的几点原则及其注意事项:
  (1)电源方面:验证平台中的各个器件对于电源电压基本上都有不同的要求,VirtexII 6000需要的电压有3.3V和1.5V, Altera Ep2c35[2]需要的电压有3.3V和1.2V,FPGA3和DDR相连的两块BANK需要的参考电压是1.25V。PCI接口部分需要的电压有3.3V和5V,由于PCI是从主板获得电压,因此给PCI部分分配了专用的电源通道VCC3_3B和VCC5B。为了给各个器件提供稳定的电源电压,电源模块采用了性能优良的PT6982器件。在PCB布线时,应尽量增大电源线和地线宽度。本平台信号线宽为:0.1524mm,电源线宽为0.5~1mm,采用大面积铜层作电源线和地线。3.3V电压分布范围广,基本上覆盖了整个板子,所以专门将电源层设定为VCC3_3,提供3.3V电压。为了给PCI部分的3.3V电源专门供电,将电源层划分成VCC3_3和VCC3_3B两部分。
  (2)FPGA方面:由于采用的四块FPGA的封装形式都是FBGA,所以在进行原理图设计时就要考虑PCB布线的问题。应尽量把FPGA的I/O口分配在四周,而且要考虑所连接器件的封装形式,使FPGA的I/O口与外围器件的管脚之间的连线不要交叉。
  (3)存储器件方面:DDR[3]和SDRAM的工作频率较高,考虑DDR的PCB布线时,应要求DDR的数据线、地址线和控制线的长度误差在一定范围之内;另外,由于Altera Ep2c35连接DDR的BANK中的参考电压要求必须是1.25V,所以在Altera Ep2c35中将四个BANK(5、6、7、8)的I/O口全部分配给了DDR。在PCB设计中,由于DDR的工作频率最高(达到130MHz以上),所以必须严格控制布线阻抗和线长以及线之间的长度差等。通常,地址线和控制线之间要求等长,数据线之间也要等长,因此要采用蛇行线对其进行等长处理。为了防止驻波,还应在每个DDR的数据线上加入终端电阻。SDRAM的工作频率虽然没有DDR的高,但为了保证平台更稳定的工作,对其也应进行等长处理。由于四块SDRAM占用的面积较大,所以应将两块SDRAM放在BOTTOM层,这样的重叠便于进行等长处理,而且对于并联的地址线之间的互连也提供了方便。
  (4)外围接口方面:这里重点说明一下PCI接口的注意事项。PCI[4]接口对于PCB布线的特殊要求:
  · 所有32位接口信号的最大走线长度为38.1mm(1.5英寸), 对距离较短的信号线,可通过蛇行走线来弥补。
  · 时钟CLK信号走线长度为63.5mm±2.5mm(2.5英寸±0.1英寸),而且只能连到一个负载上。
  · 共享的PCI信号线的无负载特性阻抗应当牵制在60~100Ω的范围内。线上的信号速率必须在150~190PSps的范围内。
  (5)时钟模块:平台中需要时钟的器件主要有四块FPGA、PCI和DDR。在此选用CYPRESS公司的CY27EE16时钟发生器时钟模块提供时钟,。
  (6)为了防止噪声干扰,增加平台工作的稳定性,在电源线、地线之间应加上去耦电容,在模拟输入部分应采用滤波网络,从而消除来自外部的噪声干扰。
  在硬件系统设计过程中,FPGA验证已成为系统设计的基本一环。本文的H.264/AVC视频解码系统的FPGA验证平台的设计,为视频解码系统的验证提供了良好的平台,为整个项目的顺利进行铺平了道路。通过此验证平台的设计,对于视频解码系统的软硬件工作流程将会有比较深入的了解,同时也会为今后硬件系统的设计积累宝贵的经验。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

98

主题

2589

帖子

7

粉丝