基于SOPC的MPEG-4视频播放器
显示的即为两者对应关系。
AC系数的反量化要用到两个加权矩阵,分别用于内部子块和非内部子块。用户也可以使用自定义的量化矩阵。
如果用QDCT表示输入已量化的AC系数,用DCT表示反量化后的AC系数,那么AC系数的IQ变换公式如下:
式中,quantiser_scale为0~112之间的两组数值,分别对应不同的比特流控制状态。但是在本系统采用的XviD Codec版本中,比特流控制功能并没有得到实现,所以这里quantiser_scale的取值固定。
反量化得到的结果通过饱和化,使其限制在[-2048,+2047]之间。
IQ在FPGA上按照图3的框图进行硬件实现。
图3 反量化的硬件实现结构
2.1.2 反离散余弦变换
IDCT是DCT的逆过程,用于还原DCT系数矩阵。
IDCT过程可由下面的公式描述:
上式可视为一个2个8元向量的点积:
将8元的输入向量[X0, X1, X2, X3, X4, X5, X6, X7]分成奇元素[X1,X3, X5,X7]和偶元素[X0,X2,X4,X6],8×8矩阵则用2个4×4矩阵来代替,奇元素和偶元素分别与这2个矩阵v和u相乘,生成2个4×4向量p和q,通过加减向量p和q,可得到输出向量x。
算法可以表示成下面的公式:
基于8×8矩阵的IDCT算法,在FPGA上按照图4所示的结构加以硬件实现。
图4 反离散余弦变换的硬件实现结构
2.1.3 运动补偿
运动补偿是一种大量、单调的运算。为了能实现运动补偿,采用了多级、多个运算单元并行流水运算的方式,如图5所示。
图5 运动补偿的硬件实现结构
运动补偿模块的控制很复杂。实际设计时将它分成几个子模块:补偿控制、补偿地址产生、差分数据提供以及补偿运算。这几个子模块直接采用硬件逻辑设计,运行时无需NiosII处理器干预。其中补偿控制是完成整个运动补偿的控制,提供输入控制信号、输出控制信号、缓存控制信号、预测数据和差分数据等;补偿地址产生用于生成预测数据在帧缓存中的地址及补偿结果的写地址;差分数据负责接收IDCT的结果,通过缓存在适当时机提供补偿使用;补偿运算则完成最终预测数据的计算。
2.1.4 YUV-RGB转换
根据YUV到RGB色彩空间的转换关系,对每个乘积项都预先做出结果,存放在ROM当中。对每一个YUV分量的输入,由硬件逻辑产生存取地址,并进行加法运算,从而得到对应的结果。其实现结构如图6所示。
图6 YUV-RGB转换实现结构
2.2 系统软件工作流程
本系统的软件工作流程如图7所示。
图7 软件流程图
结语
该系统采用基于Altera FPGA嵌入式软核的SOPC平台实现,具有较低的硬件成本,IP核的大量使用,良好的系统扩展性的特点。
参考文献
1 彭澄廉.挑战SOC-基于Nios的SOPC设计与实践.北京:清华大学出版社,2004
2 邵丹,韩家伟.YUV-RGB之间的转换.长春大学学报,2004,14(4)
3 ChenC H Smith W H, S C F ralick. A Fast Computational Algorithm for the Discrete Cosine Transfrom. IEEE Trans.Circuit and System,1991,25(9):1004~1009
4 Yil Suk Yang, et al. A Serial Input/Output Circuit with 8 bit and 16 bit Selection Modes. ETRI J, 2002, 24(16):462~464
5 Park S M, et al. A SingleChip Video/Audio Codec for Low Bit Rate Application. ETRI J, 2000, 22(1):20~29
6 http://www.altera.com/
MPEG 相关文章:
- 大规模IPTV点播系统解决方案(08-18)
- 数字音视频编解码技术标准AVS(08-19)
- MPEG压缩软件测试(08-19)
- 数字电视与数字电视编码技术的发展简介(08-19)
- H.264 FRExt技术及其应用(08-28)
- IPTV编解码标准综述(08-26)