摘 要:作为SoC设计的三大关键支撑技术之一,软硬件协同设计技术已经得到了越来越广泛的应用。针对H.264解码芯片的设计,本文提出了一种软硬件协同设计、仿真以及验证的系统模型。设计实践证明,软硬件协同设计有效地提高了设计效率,加快了开发进度。
关键词:软硬件协同设计;H.264;SoC
引言
H.264/AVC标准是由ISO/IEC的运动图像专家组(MPEG)和ITU-T的视频编码专家组(VCEG)共同制订的新一代图像压缩标准,它具有一系列优于MPEG4和H.263的新特性,在相同的重建图像质量下,能比H.263节约50%左右的码率。但是,在获得优越性能的同时,H.264的计算复杂度却大大增加。据估计,其编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。在这种情况下,如果用纯软件的方式进行实时解码就会显得力不从心,因此需要由软件结合硬件加速器来完成实时的编解码任务。本文提出了一种基于软硬件协同设计技术的H.264解码芯片的SoC设计方案。
软硬件协同设计理论
SoC设计主要有3个关键的支撑技术:
1. 软硬件协同设计技术:它主要是面向不同目标系统的软件和硬件的功能划分理论和设计空间搜索技术。
2. IP模块复用技术。IP是指那些集成度较高并具有完整功能的单元模块,如MPU、DSP、DRAM、Flash等模块。IP模块的再利用除了可以缩短芯片的设计时间外,还能大大降低设计和制造的成本,提高可靠性。
3. 模块以及模块界面间的综合分析和验证技术。综合分析和验证是难点,要为硬件和软件的协同描述、验证和综合提供一个自动化的集成开发环境。
图1 软硬件协同设计的基本流程
其中软硬件协同设计技术往往成为影响开发周期以及系统性能的关键因素。软硬件协同设计的基本流程如图1所示。设计初期需要对设计进行系统级建模。在经过分析后对软硬件进行适当的划分,于是系统设计分为软件设计和硬件设计两条路线。为了保证软硬件设计的协同,在设计的各个时期还要对软硬件接口进行设计。当软硬件设计完成后,就可将设计中软件和硬件部分加以集成以完成最后的设计。如果此时的设计不能完全满足设计目标,还需要将整个架构进行重新划分,进行迭代直到设计满足要求。
图2 H.264解码功能模块划分
系统软硬件划分
采用软硬件协同设计,在系统模型建立以后,就要对系统的软硬件进行划分。一部分工作需要交给嵌入式处理器用软件来完成,而剩余的部分则要用硬件来实现。在划分时,要考虑目标体系结构、软硬件实现所占用的成本等各种因素。划分完后,产生软硬件分割界面,供软硬件仿真、验证和测试使用。
H.264的解码功能模块如图2所示,整个解码的过程由码流输入单元、熵解码单元、反量化及反离散余弦变换单元、帧内预测单元、帧间预测单元、去块效应单元、内存控制单元、显示输出单元、图像信息管理单元、解码过程控制单元和内存等功能单元组成。
对高清码流进行解码时,解码器的工作频率一般为200MHz,此时对一个宏块图像的信息进行处理的时间平均只有900个时钟,实时性要求很高,因此必须将软件的工作量减小。设计中采用嵌入式处理器控制解码过程能给系统设计带来更大的灵活性,而图像信息管理只涉及针对图像级别的计算,在对一帧图像进行解码时只会计算一次,故将这两部分任务交给嵌入式处理器完成。为了保证软硬件负荷的平衡,还将码流输入和熵解码任务交给嵌入式处理器处理。图2中灰色的模块则需要用专门的硬件加速模块来完成。
图3 H.264解码器软硬件协同设计的软件仿真模型
系统的软硬件协同设计
H.264解码器软硬件协同设计的仿真平台
当系统设计的软硬件划分完成后,设计就分成软件设计和硬件设计两条路线,为了保证在软、硬件设计过程中能够随时进行联合仿真,本文建立了如图3所示的仿真模型。由图中的硬件设计部分可知,嵌入式处理器将通过片内高速总线对挂在总线上的各个硬件加速器进行控制。为了使得软硬件划分的界面更加清晰,嵌入式处理器解码时产生的数据通过连接在片内高速总线上的动态存储控制器存入DRAM中,而后各个硬件加速器通过片内高速总线将各自需要的数据从动态存储器中读出,进行相应的解码。考虑到片内高速总线的负担比较重,设计中将总线位宽设定为64bit,以提高数据传输的速度。
为了保持软件与硬件设计的协同性,在进行硬件加速模块设计的同时,软件设计也需要作相应的改动。如图3所示,在已经划分好的由嵌入式处理器完成的软件模型和将由硬件实现的软件模型之间,加入数据打包和数据解包单元。数据打包单元是为了生成软件仿真所需要的输入向量,数据解包单元用于将打包后的数据还原,作为将由硬件实现的软件模型的输入,以便模型能够生成硬件设计部分进行软仿真所需要的参照向量。
在软件仿真时期,软件与硬件的接口主要通过数据打包单元完成。各个硬件加速器解码所需的数据是从动态存储器获取的,而这些数据是由嵌入式处理器通过片内高速总线事先存入动态存储器中的。于是在数据打包单元的帮助下,软件模型就可以用打包单元模拟DRAM输出数据,而后硬件设计中就可以将这些数据加载到自己的软件仿真测试平台中,供其软件仿真使用。为了验证硬件设计的正确性,在硬件设计中还加入了测试单元。测试单元将硬件解码的数据暂存到其内部缓存中,测试平台中的解码数据检测单元就可以通过片内总线将解码后的数据读回,与软件模型生成的参照向量进行比较。于是,通过软件仿真便可以初步验证硬件设计的正确性。考虑到在硬件与软件协同仿真完成后,要通过PC对设计进行加速验证,本文在硬件设计中加入了PCI总线到片内高速总线桥接器。
H.264解码器软硬件协同设计的加速验证环节
由于解码器设计的规模比较大,硬件设计进行软件仿真的速度比较慢,而且在前期设计中软件和硬件都是通过生成的输入向量和参照向量的方式进行耦合的。为了加快仿真的速度,并为嵌入式处理器和硬件加速器的集成做进一步的准备,设计中将图3所示的仿真模型演变成了图4所示的模型。
在设计完成并通过软件仿真后,硬件设计被综合成网表文件下载到FPGA中。系统通过PCI 总线到片内总线桥接器与PC相连,PC模拟嵌入式处理器的软件工作,并通过PCI总线将控制信号以及解码数据送到FPGA内部的片内高速总线上,由硬件模块完成最终的解码任务。
为了验证设计的正确性,PC可以通过PCI总线将硬件解码后的数据从测试单元读出,与图3模型中生成的参照向量进行比较,验证解码的正确性。由于在FPGA中硬件仿真的速度远高于软件仿真,因此使验证的速度得以加快。
图4 H.264解码器软硬件协同设计的加速验证模型
H.264解码器软硬件协同设计的系统集成
通过如图4所示的验证环节后,设计的正确性以及软硬件设计的协同性得到了进一步的验证。为了方便软、硬件的集成,本文将图4中的设计模型进一步进行了修改。图5所示的设计模型为H.264解码器软硬件集成后的最终系统评估和设计验证模型。可见,在经过PC模拟嵌入式处理器行为与硬件联合进行硬件仿真后,嵌入式处理器通过片内高速总线与硬件系统进行了连接,最终完成了软硬件的集成。
图5 H.264解码器的最终系统评估和设计验证模型
此时系统仍使用PCI接口对码流进行输入,并将解码后的数据从测试单元读入PC,与图3模型中生成的参照向量进行比较,对最终设计的正确性进行验证。当验证完成后测试单元将被移除。
当然此时的设计不一定能完全满足设计要求,如果没有完全达到设计的要求,那么整个设计将从软硬件划分步骤重新进行,一次次进行迭代直到满足最终的要求。
结语
由于采用了软硬件协同设计技术,整个SoC系统的软件设计和硬件设计能够方便地进行联合仿真以及测试。在整个设计过程中,软件设计和硬件设计能够很好地协同,当软件或硬件的一方需要改动的时候,另一方能够及时地进行相应的改动。同时软件设计还能在设计的各个阶段为硬件设计提供必要的验证数据,使得软件与硬件设计能够进行快速有效的集成,从而减小了系统在开发过程中的风险,提高了系统设计的正确性,加快了开发的速度。
参考文献:
1 Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG. Proposed Draft Errata List with Revision-Marked Corrections for H.264/AVC[M], 2003.12.
2 毕厚杰. 新一代视频压缩编码标准—H.264/AVC[M]. 北京:人民邮电出版社,2005.5.
3 (美)Rochit Raj Suman. System On Chip:Design and Test. 于敦山,盛世敏,田泽译. 北京:北京航空航天大学出版社,2003
4 郭鹏飞. SoC设计中的软硬件协同设计. 中国电子站,2005.02.11