基于Synopsys HAPS52开发平台的AVS 1080P高清实时 编码器实现
吉祥虎xhji@jdl.ac.cn
魏开进kjwei@jdl.ac.cn
李 源yuanli@jdl.ac.cn
祝 闯czhu@jdl.ac.cn
贾惠柱hzjia@pku.edu.cn
解晓东donxie@pku.edu.cn
数字视频编解码技术国家工程实验室
National Engineering Laboratory For Video Technology
摘要
本文介绍了基于Synopsys HAPS-52开发平台的AVS 1080P高清实时编码器的实例。HAPS-52开发平台带有2片Xilinx Viretx5 lx330 大规模FPGA芯片,板级采用模块化设计并提供丰富的外接子板具有大容量、配置灵活及可扩展的特点。设计中根据资源及 性能的需求将SoC逻辑分割到2片FPGA中。2片间高可靠的互联线充分保证了片间通讯在高频下的正确性。最终AVS 1080P高清 实时编码器在HAPS-52平台上成功运行,充分验证了算法性能及硬件设计的正确性,有效降低了开发及验证周期,为AVS 编码器 的成功流片奠定了基础。
关键词: HAPS, SoC, AVS, 视频编码器
Abstract
This paper introduces the implementation of AVS HDTV1080p real-time encoder based on Synopsys’ HAPS Solution. Based on the 2 xilinx virtex5 lx330 FPGAs, we successfully implement our large-scale SoC design on the HAPS-52 FPGA platform. The performance and functionality of our design are sufficiently verified. With HAPS’ flexible and reliable features, we effectively shorten the circle of development and verification.
Key words:HAPS, Co-emulation, IA SoC
1. 引言
数字音视频编解码标准(AVS)是中国自主制订的数宁电视、IPTV等音视频系统的基础性标准AVS标准第2部分视频(AVS 1- P2)属高
效的第二代视频编码技术,相比于第一代标准MPEG- 2 编码效率提高2~3倍,并且实现方案更为简洁。 AVS编码芯片实现视频的压缩编码与实现AVS节目解压、播放的解码芯片不同,编码芯片的复杂度比解码芯片高出数倍。其中为了提高视频压缩效率而采用的先进运动向量搜索算法、率失真优化(RDO)模式决策算法进一步提高了芯片设计及实现的难度。
新一代编码标准采用新的高复杂性技术带来的实时硬件编码器设计的难点主要集中在两个方面,即大量的计算和巨大的存储访问 带宽。随着视频分辨率的提高,尤其是高分辨率视频编码,其计算复杂度和数据吞吐需求也成倍增长,这使得高分辨率视频硬件 编码器设计的难度进一步加大。尽管VLSI技术不断发展提供更高的处理能力,但是它的发展速度跟不上视频分辨率和编码算法 复杂度的提升速度。高分辨率视频编码实现的高处理性能和高数据吞吐要求给视频产品的设计带来巨大的挑战,对于高清实况转 播、高清视频监控和摄像等实时视频编码业务带来的设计难度更大。
面对庞大的芯片设计规模及高性能的要求,为了能够缩短硬件开发及验证周期,需要开发平台能够提供较高的计算能力、可扩展 性及灵活性。所以,在该项目的研发中我们采用Synopsys 公司的HAPS-52平台,该平台采用两块Xilinx Virtex-5 LX330 FPGA 能 够满足芯片设计规模及性能需求,同时采用模块化设计的HAPS平台及提供的丰富的外围子板,让开发团队能够更专注于核心模块 的设计及验证,显著缩短了整个SoC芯片开发及验证周期。
2. AVS 高清实时编码器系统结构
2.1 SoC结构

图1高清视频实时编解码SoC平台结构图
图1是高清视频实时编解码SoC平台结构图,各个模块通过PLB/OPB系统总线连接在一起,功能如下:
1. Embedded CPU:作为所有模块的控制中心,将使各模块协同工作完成系统功能,其需要用标准总线连接,其上运行SoC系统固件;
2. AVS Video Encoder :采用标准IP接口来实现,对外接口满足AHB总线协议,在SoC系统中作为视频编码加速器完成AVS高清视频实时编码处理;
3. SRAM Ctrl:SRAM控制器,SoC 存储子系统核心模块,用来控制片外存储器的数据访问,完成微处理器的指令装载,音视频数据的存储调度或仲裁等功能。
4. Capture:通过标准SDI与I2S接口完成音视频数据的实时采集,并将采集音视频数据通过SRAM 控制器存入外存。
5. DMA:响应并完成SoC系统中设备之间的DMA请求,降低微处理器的时间片开销。
6. MUX: 音视频复用器,完成单路AVS 高清音视频传输流(TS)的复用输出
7. Peripheral:系统相关外设如UART、PCIE、SPI、EMI等,通过标准总线与其他模块交互数据;
8. System Bus:系统总线,它包括数据和控制两种总线,采用PLB/OPB总线。
2.2 AVS Encoder 结构

图2 Top Level Architecture of Video Encoder Hardware
1. MCU控制
主要包括slice以上控制,包括系统参数配置(图象大小,编码 方式,编码参数),GOP结构,slice以上码率控制等等,受控 对象是系统层控制。
2. MB_Controller
主要控制MB级流水线的各级的启动停止,协调MB级流水线各个模块之间的正常流水作业。
3. 图象采集输入
主要完成RGB->YUV格式转换,并作必要降采样4:2:2->4: 0:0, 并完成行连续输入到宏块连续地址转换和映射,将数据输入到YUV行缓存,乒乓结构的行缓存满后,请求SDRAM写原始输入数据。
4. DDR SDRAM接口模块
负责各个SDRAM访问客户的数据在各个bank内部物理地址的分配和组织,接收所有可能访问客户的访问请求,并按照一定响应 有限级分别响应这些访问请求,根据各个访问客户的MB位置,产 生出相应的逻辑地址,并根据逻辑地址转换到相应的物理地址。
5. 原始像素/搜索窗像素获取控制
假设IME正在处理第n个MB。
本模块主要为原始宏块,亮度/色度搜索窗数据读取产生 SDRAM读请求控制和地址信息。包括第n+1个MB的原始像素 读取,亮度搜索窗像素更新,以及第n个MB IME完成两层搜 索,得到了预测中心MV后,为第n个MB的色度局部小窗的读 取提供访问控制。
6. 分层IME全搜索
主要完成前/后向(B帧中)和两个参考帧(P帧)的整像素运动 估计,搜索窗口256×192,采用三层搜索的算法,前两层主要是 为了搜索一个中心MV,最后一层搜索将以这个中心MV为中心一 个局部小窗口(大小可以在系统层进行控制)内进行可变大小块 整像素搜索,最后得到各种可变大小块的整像素MV。在IME中 只分别做前/后向整像素搜索,symmetric模式在FME中搜索。
7. 亚像素运动估计/插值
主要完成各种可变大小块的1/2插值,1/2精度运动搜索,1/4像 素插值,1/4精度运动搜索,对于所有可变大小块模式,在前向 /后向/对称双向(f/b/s)中选择一种最优的预测方向,并将各种 可变大小块模式的1/4精度运动预测MB存储到预测像素缓冲区, 同时输出各种模式的运动矢量到MD模块。Direct/skip模式虽然 不需要运动搜索,但是1/2、1/4精度插值需要借用这个模块。
8. RDO MD (DPCM/EC)
为了实现基于RDO的模式选择,本模块中包括DPCM回路 (DCT,Q,IQ,IDCT),根据重构的residue和原始的residue 计算失真SSD;同时还包括EC回路(游程编码,码表切换, codenum计算),这个回路计算出编码消耗的比特数,计算出 最后的代码函数,在各种模式之间选择出最优的宏块编码模式。
9. Intra预测 (IP)
根据AVS标准协议,预测各个亮度,色度块各种模式的帧内预 测块,将预测好的块分别存储到Pred. Pels. Buf1~6(I帧情况 下),以及Pred. Pels. Buf7(P/B帧情况下)中,并提供预测 准备好信号,以及各种模式是否存在的信号给MD模块。
10. 去块效应滤波
根据AVS协议完成环路滤波,将处理好的MB存储到重构MB缓存。
11. 熵编码
实际上大部分熵编码任务已经在MD中完成,这里需要根据AVS 语法协议,生成符合标准协议的输出码流,保存到码流缓冲区,然后存储到SDRAM中。
12. 码流重组
由于采用了zigzag MB编码顺序,编码产生的码流并不是最后需要的能正确解码的码流,所以需要按照解码MB顺序,对码流进行重组。
13. 运动矢量预测 (MVP)
本模块为IME,FME运动估计的各种可变大小块分割模式下的 所有块计算出预测MV,以实现基于率失真优化的运动估计。并为MD选择好的最优MB模式预测最后的预测MV,以保证写码流正确。同时需要计算direct, symmetric等模式的运动矢量。
3. HAPS52平台实现
3.1 系统分割
由于设计对资源和速度的需求, 把整个SoC系统分配到了平台上的2片FPGA中,如图3所示。其中第一片主要完成编码器色度部分处理、系统控制及SoC外等部分功能, 第二片完成了编码器 亮度编码的处理. 通过两片间的互联线将FPGA1 中的OPB总线接入FPGA2中实现MCU对FPGA2中完成亮度处理的各模块的 访问。视频编码流水线的宏块级同步由两片中的MB Controller 模块完成。两片FPGA外部各有1块外部存储模块以满足编码器对存储带宽的需求。

3.2 开发流程
如图4所示,本文首先对AVS视频编码算法进行分析改进, 使其适合硬件实现,并对算法的硬件结构进行C语言建模 (C-model)以初步验证算法和结构的合理性,为硬件的RTL 仿真提供测试向量。C-model采用Do_loop模式模拟硬件的并 行运算能力。并通过不同场景和不同图像分辨率的视频序列编 码测试以验证编码性能。采用如下测试方法:
1. 通过C-model编码产生码流和编码重构图像 2. 验证码流能通过AVS标准参考软件正常解码,且解码图像和编码产生的重构图像相同
3. 通过率失真(Rate-Distortion)曲线来评估C-model 编码效果
4. 基于实现的C-model,完成模块级别的RTL(Verilog)实 现,并通过C-model生成测试向量,VCS工具全部仿真通过。最终完成编码器顶层集成仿真验证。仿真真通过的RTL 代码经过Synplify工具综合及Xilinx ISE工具布局线后生成 FPGA bit文件。最终将生成的FPGA bit文件烧制到FPGA开发板中验证过。

图4 开发流程
3.3 板级实现
仿真验证后的RTL设计Synopsys的Synplify工具进行综合, 设计实现采用两片Xilinx Vertex5 LX330FPGA方案实现,片1 (FPGA1)实现对色度数据、软件(Firmware)及相关外设的处理模块,片2(FPGA2)主要实现对亮度数据的所有编码处理模块。其最坏情况的关键路径、宏块级处理速度及FPGA资源占用如表1所示:
表1 硬件模块实现情况

系统设计目标是能够支持CIF、Full DI、720P、1080i和1080P 码流的实时编码。流水线效率(吞吐)是由流水线各级模块处 时间最长的模块决定,表1数据显示是MD模块,考虑最坏情况下性能需求,我们分析1080P码流的编码性能。
• 每帧宏块数 =(1920×1088)/(16×16)= 8160;
• 每秒宏块数 = 8160×25= 204000;
• 流水线处理需要的工作频率=204000×MD模块时钟/宏块 = 204000×610 =124,440,000时钟周期。
由表中数据及上面分析可以看出目前所有模块及片2可以综合布线 到150MHz,可以支持1080p每秒30帧的实时处理,而片1可以综合布线到137MHz,可以支持1080p每秒25帧的实时处理。综上,目前FPGA综合布线频率可以支持到1080p每秒25帧的实时处理。

图5 编码器系统连接图
图5是FPGA板级系统连接图,各个模块功能如下:
1. FPGA(x2):是Synopsys HAPS-52 板上互连的两颗 FPGA,它们是系统的核心模块,其它外围模块(外设) 通过HapsTrak接口与其相连。外设的控制逻辑及其连接的 FPGA方案。
2. SDI Card:负责接收来自具有SDI输出接口的视频设备的 高清视频源,并转换成SMPTE格式的视频原始数据输入到 FPGA中进行编码。
3. SRAM Card:提供SRAM片外存储。
4. DDR SDRAM Card:提供SDRAM片外存储。
5. PCIe Card:采用Synopsys提供的PCIe子板及IP。将FPGA 与PC相连,提供系统参数配置、编码信息回传及其原始视频 数据输入等功能,同时可以作为调试接口。
6. Uart Card:提供编码信息和调试信息的输出显示功能。
7. Enthernet/USB card:编码码流数据的输出接口。
图6 展示了HAPS-52平台Virtex 5 两片FPGA板级实现方案。

图6 HAPS-52平台板级实现
4. AVS高清视频编解码演示及验证系统
综合布线后的FPGA bit文件在FPGA验证板上通过,可以正 常工作在130MHz,实现CIF(每秒30帧)、Full DI(每秒30 帧)、720P(每秒30帧)、1080i和1080P(每秒25帧)视频 的实时编码处理。同时,基于HAPS-52 FPGA验证板,开发了一个基于网络的演示及验证系统,如图7所示。它可以支持离线 视频YUV数据通过PCIe接口输入到FPGA进行AVS视频编码, 也可以接收来自摄像机等有SDI数据输出的视频采集设备数据通过SDI接口输入到FPGA进行AVS视频编码,编码码流通过 PCIe接口输出给主控PC机。主控PC机可以通过RTP协议发送 到网络,发送到网络的编码视频流经过网络流入到AVS解码器解码显示。

图7 AVS高清视频编解码演示系统
5. 总结
本文介绍了基于HAPS平台的AVS 高清实时编码器开发过程。 面对AVS视频高清实时编码芯片的高性能及高复杂性, HAPS系统以其成熟的板级设计为用户开发及验证提供了可靠的保证, 有效降低了流片的风险。同时其提供的灵活接口及丰富的子板缩短了项目的开发周期,提高了设计的可扩展性。基于HAPS 系统的设计可以在短时间内完成升级或修改以满足不同的设计 需求,节约了后续开发的时间。



