引 言
H.264标准作为新一代视频编码标准,是面向多比特率的视频编码标准,也称JVT/AVC标准,既可用于高码率的HDTV和数字存储系统,也可用于低码率的实时通信系统。在相同的图像质量情况下,H.264比H.263和MPEG一4可以节省20%~50%的码率。就其基本档次而言,编码器的复杂度是H.263的10倍左右。H.264良好的网络亲和性和优异的压缩性能使其成为视频应用的首选,但其巨大的运算量成为许多应用的瓶颈。笔者基于NiosII设计了一种低码率实时应用的编码系统。该系统充分利用FPGA的并行设计结构,对视频数据采用高压缩比的H.264标准编码,能很好地满足低码率实时编码的要求。
1 H.264编码系统结构设计
根据H.264/AVC编码器原理及结构,同时考虑到现有硬件资源的限制以及该设计的应用需求,设计了图1所示的H.264/AVC编码系统结构。
摄像头摄入的视频图像首先经过视频采集模块处理,并将当前帧的图像数据存入SRAM。然后,以宏块MB(macroblock)为单元,从SRAM中读取原始图像,并根据MB所在图像帧内的位置,读取重建帧中的参考像素进行帧内预测,并将预测宏块与当前宏块像素做差即可得到预测残差。接下来,对残差图像进行整数DCT变换或Had—amard变换,并对变换输出进行量化。量化输出的残差图像一方面通过反变换和反量化处理生成重建图像供帧内预测作为参考,另一方面经过重排序、熵编码处理得到最终的图像压缩码流输出。
根据H.264/AVC标准,将所设计的整个编码系统从结构上划分为图像采集、帧内预测、变换量化、熵编码等几个主要部分。各个模块之间通过流水线的方式进行处理,可以有效地提高硬件的执行效率。
2 基于Cyclone II FPGA的H.264编码器的实现
系统采用SOPC的设计方式,主要由视频采集模块、NiosII处理器系统组成。采用Altera公司的DE2开发板为开发平台,将视频采集、NiosII处理器集成到一个SOPC系统中。其中NiosII处理器系统要承担图像采集控制、图像的H.264压缩编码工作。为了保证实时性,在充分分析H.264软件算法运行时间后,采用自定义模块对H.264编码器关键算法进行硬件加速。
2.1 视频采集模块
视频采集是视频图像处理、传输的前提,采集到的数字视频图像好坏将直接影响到视频处理的结果。图2给出了图像处理系统的视频采集结构。
ADI公司的多制式视频解码芯片ADV7181B对采集的视频图像进行模数转换。ADV7181B可以自动检测诸如NTSC、PAL和SEC0M制式的基带视频信号,并将其转换为基于4:2:2取样的16/8位兼容的CCIR601/CCIR656格式的数字视频信号;具有6路模拟视频输入端口,且采用单一的27 MHz晶振时钟输入;用户可以通过两线的I2C接口对ADV7181B的工作模式进行配置。 [page]
系统上电时,首先使用I2C模块对ADV7181B的内部寄存器进行配置。由于摄像头输出的是PAL制式的模拟视频信号,因此需要相应地将ADV7181B配置为PAL制式的模拟视频信号输入,并将其转换为CCIR656格式的数字视频信号。ADV7181B将转换得到的实时数字视频图像的亮度信号、色度信号(TD_DAT)以及行、场同步信号(TD_HS/VS)同时输入到FPGA芯片中,通过图像采集模块提取需要的数字图像信息,并将其转存至AlteraDE2开发板提供的具有512 KB存储容量的SRAM中,用于缓存待处理图像帧。
下面介绍图像采集模块的设计与实现方法。
根据上面对视频采集部分硬件结构的分析,设计了图3所示的视频采集模块结构框图。可以看出,图像采集模块主要包含图像提取、色度取样率变换、Y/Cb/Cr图像分量分离以及图像缓存SRAM读写控制等单元。
其中图像提取子模块在H.264/AVC编码模块的视频采集控制信息的控制下,从ADV7181B转换输出的PAL制数字视频图像中提取需要的图像数据。摄像头采集的实际图像大小为768×576像素的隔行扫描视频输入信号,其中基数场和偶数场在时间上先后输入。由于系统处理的图像大小为320×240像素,因此需要对输入的数字视频进行截取,以满足系统的处理要求。
考虑到在一帧图像中的顶场与底场数据差异不大,因此在对图像进行截取时,仅对底场中间240行的连续320个相邻像素点进行提取,以输出320×240像素的视频图像数据。其具体提取流程如图4所示。
H.264/AVC支持对色度取样为4:2:O格式的逐行或隔行扫描数字图像进行处理,因此需要对提取的数字图像进行色度取样率变换。通过对相邻奇数行和偶数行的色度图像分量进行简单的平均,可实现由4:4:4向4:2:O的色度取样率变换,如图5所示。
经过取样率变换后的图像数据需要根据Y/Cb/Cr图像类型在SRAM中分片区缓存,以方便后续的H_264的编码处理。图6给出了实际图像的色度分量在取样率变换前后的效果。
综合现有的硬件资源、实时性与实现难度等因素,设计中仅采用了帧内预测方式,编码器包括帧内预测模块、变换量化模块和CAVLC熵编码模块。处理时以宏块(16×16)为单位,亮度和色度块分别进行帧内预测、变换量化和反变换反量化,然后进行CAVLC熵编码,图像的亮色比为Y:U:V=4:2:O。 [page]
H.264编码器设计前期先用VC++在PC机上实现,后期移植到FPGA上用自定义硬件模块实现,二者所需时间如表1所列。可以看出,用硬件实现H.264压缩编码一帧图像只需约16 ms,较PC机实现有很大提高,而且硬件模块占用的资源不到50%,性价比较高。
由于自定义帧内预测硬件模块较软件实现对系统性能提高较大,这里重点分析帧内预测模块硬件结构设计。
根据H.264帧内预测算法,帧内预测模块是在非率失真优化模式下设计的。它通过接口模块从SDRAM中读入一个MB(16×16)的亮度和色度图像数据,在亮度和色度预测模块中对当前MB进行预测和预测模式选择,输出预测残差及最佳预测模式;同时将预测结果与经过反DCT变换和反量化之后的残差值相加,经重构模块补偿重构后写回SDRAM。主要结构如图7所示,整个模块分为4个子模块:接口模块、亮度预测、色度预测和图像重构模块。
接口模块中设计了4个RAM,用于存放读入的原始图像和用于预测的参考图像数据:RAM0存放亮度预测像素,深度32,地址0~15存放上侧预测参考像素,地址16~31存放左侧预测参考像素;RAMl存放当前宏块亮度原始值,深度为256;RAM2存放色度预测参考像素,深度32,地址0~7存放上侧Cb预测参考像素,地址8~15存放左侧Cb预测参考像素,地址16~23存放上侧cr预测参考像素,地址24~31存放左侧Cr预测参考像素;RAM3存放当前宏块色度原始值,深度为128。
亮度预测模块的内部结构如图8所示。
①模式选择模块根据当前宏块的预测参考像素可用信息(avail)指定当前宏块按一定顺序做预测,如avail=“11”表示上侧和左侧预测参考像素均可用,则对当前宏块顺序做DC、HOR、VERT、PLANE四种方式预测。在残差处理模块中,采用了2个RAM顺序保存各种预测模式的预测残差,所以在模式选择模块里会比较当前预测模式的代价函数和前一种预测模式代价函数的大小。如果当前预测模式的代价函数较小,则说明当前预测模式较优,在做下一种模式预测时将预测残差指定保存在上次较差预测模式的残差RAM中。当前宏块的可用预测模式都预测结束后,模式选择模块根据每一种模式预测代价函数决定出最优预测模式,并指出该预测模式对应残差处理模块中存放的RAM,将相应的残差输入到整数变换模块。
②预测模块包含了DC、HOR、VERT、PLANE四种预测模式的实现实体,根据模式选择模块决定的预测模式从接口模块读取预测参考像素和原始像素值,预测后残差输出到残差处理模块,预测值输出到补偿重构模块保存。
③残差处理模块采用2个存放残差的RAM,每个宏块可先并行做2种预测,残差分别保存到2个RAM中,选择其中较佳预测模式,再做下一种预测模式与前面所选较佳预测模式比较,直到完成所有预测模式选择出最佳预测模式。
④预测代价模块是计算每一种预测模式的预测代价,以4×4块为单位作hadamard变换,将变换后每个4×4块DC系数再做一次hadamard变换,将所有变换结果进行绝对值累加就是对应的预测代价。
色度预测模块结构基本和亮度预测相同,只是由于色度有Cb、Cr两个分量,残差在RAM中的存放方式略有差别;同一个宏块的色度预测和亮度预测是并行执行的,由于要处理的色度数据比亮度少一半,笔者在后面的整数变换中采用先处理色度,再处理亮度的方法,使得流水更加紧凑,减少等待时间,提高整个模块的运行速度。
3 结 论
笔者设计的基于NiosII的低码率实时H.264视频编码系统,在系统时钟频率100 MHz时,压缩一帧320×240的彩色图像需16.283 ms,在量化参数选择30时,图像压缩比达到2%,实时监控图像帧率25帧/s。系统具有资源占用较少,低成本,低码率,高清视频质量的特点,具有较好的发展前景。
图9为集成开发环境下综合仿真后系统的资源占用情况。
关键字:NiosII 低码率 H.264视频编码器
引用地址:基于NiosII的 低码率实时H.264视频编码器
H.264标准作为新一代视频编码标准,是面向多比特率的视频编码标准,也称JVT/AVC标准,既可用于高码率的HDTV和数字存储系统,也可用于低码率的实时通信系统。在相同的图像质量情况下,H.264比H.263和MPEG一4可以节省20%~50%的码率。就其基本档次而言,编码器的复杂度是H.263的10倍左右。H.264良好的网络亲和性和优异的压缩性能使其成为视频应用的首选,但其巨大的运算量成为许多应用的瓶颈。笔者基于NiosII设计了一种低码率实时应用的编码系统。该系统充分利用FPGA的并行设计结构,对视频数据采用高压缩比的H.264标准编码,能很好地满足低码率实时编码的要求。
1 H.264编码系统结构设计
根据H.264/AVC编码器原理及结构,同时考虑到现有硬件资源的限制以及该设计的应用需求,设计了图1所示的H.264/AVC编码系统结构。
摄像头摄入的视频图像首先经过视频采集模块处理,并将当前帧的图像数据存入SRAM。然后,以宏块MB(macroblock)为单元,从SRAM中读取原始图像,并根据MB所在图像帧内的位置,读取重建帧中的参考像素进行帧内预测,并将预测宏块与当前宏块像素做差即可得到预测残差。接下来,对残差图像进行整数DCT变换或Had—amard变换,并对变换输出进行量化。量化输出的残差图像一方面通过反变换和反量化处理生成重建图像供帧内预测作为参考,另一方面经过重排序、熵编码处理得到最终的图像压缩码流输出。
根据H.264/AVC标准,将所设计的整个编码系统从结构上划分为图像采集、帧内预测、变换量化、熵编码等几个主要部分。各个模块之间通过流水线的方式进行处理,可以有效地提高硬件的执行效率。
2 基于Cyclone II FPGA的H.264编码器的实现
系统采用SOPC的设计方式,主要由视频采集模块、NiosII处理器系统组成。采用Altera公司的DE2开发板为开发平台,将视频采集、NiosII处理器集成到一个SOPC系统中。其中NiosII处理器系统要承担图像采集控制、图像的H.264压缩编码工作。为了保证实时性,在充分分析H.264软件算法运行时间后,采用自定义模块对H.264编码器关键算法进行硬件加速。
2.1 视频采集模块
视频采集是视频图像处理、传输的前提,采集到的数字视频图像好坏将直接影响到视频处理的结果。图2给出了图像处理系统的视频采集结构。
ADI公司的多制式视频解码芯片ADV7181B对采集的视频图像进行模数转换。ADV7181B可以自动检测诸如NTSC、PAL和SEC0M制式的基带视频信号,并将其转换为基于4:2:2取样的16/8位兼容的CCIR601/CCIR656格式的数字视频信号;具有6路模拟视频输入端口,且采用单一的27 MHz晶振时钟输入;用户可以通过两线的I2C接口对ADV7181B的工作模式进行配置。 [page]
系统上电时,首先使用I2C模块对ADV7181B的内部寄存器进行配置。由于摄像头输出的是PAL制式的模拟视频信号,因此需要相应地将ADV7181B配置为PAL制式的模拟视频信号输入,并将其转换为CCIR656格式的数字视频信号。ADV7181B将转换得到的实时数字视频图像的亮度信号、色度信号(TD_DAT)以及行、场同步信号(TD_HS/VS)同时输入到FPGA芯片中,通过图像采集模块提取需要的数字图像信息,并将其转存至AlteraDE2开发板提供的具有512 KB存储容量的SRAM中,用于缓存待处理图像帧。
下面介绍图像采集模块的设计与实现方法。
根据上面对视频采集部分硬件结构的分析,设计了图3所示的视频采集模块结构框图。可以看出,图像采集模块主要包含图像提取、色度取样率变换、Y/Cb/Cr图像分量分离以及图像缓存SRAM读写控制等单元。
其中图像提取子模块在H.264/AVC编码模块的视频采集控制信息的控制下,从ADV7181B转换输出的PAL制数字视频图像中提取需要的图像数据。摄像头采集的实际图像大小为768×576像素的隔行扫描视频输入信号,其中基数场和偶数场在时间上先后输入。由于系统处理的图像大小为320×240像素,因此需要对输入的数字视频进行截取,以满足系统的处理要求。
考虑到在一帧图像中的顶场与底场数据差异不大,因此在对图像进行截取时,仅对底场中间240行的连续320个相邻像素点进行提取,以输出320×240像素的视频图像数据。其具体提取流程如图4所示。
H.264/AVC支持对色度取样为4:2:O格式的逐行或隔行扫描数字图像进行处理,因此需要对提取的数字图像进行色度取样率变换。通过对相邻奇数行和偶数行的色度图像分量进行简单的平均,可实现由4:4:4向4:2:O的色度取样率变换,如图5所示。
经过取样率变换后的图像数据需要根据Y/Cb/Cr图像类型在SRAM中分片区缓存,以方便后续的H_264的编码处理。图6给出了实际图像的色度分量在取样率变换前后的效果。
2.2 H.264编码器核心模块
综合现有的硬件资源、实时性与实现难度等因素,设计中仅采用了帧内预测方式,编码器包括帧内预测模块、变换量化模块和CAVLC熵编码模块。处理时以宏块(16×16)为单位,亮度和色度块分别进行帧内预测、变换量化和反变换反量化,然后进行CAVLC熵编码,图像的亮色比为Y:U:V=4:2:O。 [page]
H.264编码器设计前期先用VC++在PC机上实现,后期移植到FPGA上用自定义硬件模块实现,二者所需时间如表1所列。可以看出,用硬件实现H.264压缩编码一帧图像只需约16 ms,较PC机实现有很大提高,而且硬件模块占用的资源不到50%,性价比较高。
由于自定义帧内预测硬件模块较软件实现对系统性能提高较大,这里重点分析帧内预测模块硬件结构设计。
根据H.264帧内预测算法,帧内预测模块是在非率失真优化模式下设计的。它通过接口模块从SDRAM中读入一个MB(16×16)的亮度和色度图像数据,在亮度和色度预测模块中对当前MB进行预测和预测模式选择,输出预测残差及最佳预测模式;同时将预测结果与经过反DCT变换和反量化之后的残差值相加,经重构模块补偿重构后写回SDRAM。主要结构如图7所示,整个模块分为4个子模块:接口模块、亮度预测、色度预测和图像重构模块。
接口模块中设计了4个RAM,用于存放读入的原始图像和用于预测的参考图像数据:RAM0存放亮度预测像素,深度32,地址0~15存放上侧预测参考像素,地址16~31存放左侧预测参考像素;RAMl存放当前宏块亮度原始值,深度为256;RAM2存放色度预测参考像素,深度32,地址0~7存放上侧Cb预测参考像素,地址8~15存放左侧Cb预测参考像素,地址16~23存放上侧cr预测参考像素,地址24~31存放左侧Cr预测参考像素;RAM3存放当前宏块色度原始值,深度为128。
亮度预测模块的内部结构如图8所示。
①模式选择模块根据当前宏块的预测参考像素可用信息(avail)指定当前宏块按一定顺序做预测,如avail=“11”表示上侧和左侧预测参考像素均可用,则对当前宏块顺序做DC、HOR、VERT、PLANE四种方式预测。在残差处理模块中,采用了2个RAM顺序保存各种预测模式的预测残差,所以在模式选择模块里会比较当前预测模式的代价函数和前一种预测模式代价函数的大小。如果当前预测模式的代价函数较小,则说明当前预测模式较优,在做下一种模式预测时将预测残差指定保存在上次较差预测模式的残差RAM中。当前宏块的可用预测模式都预测结束后,模式选择模块根据每一种模式预测代价函数决定出最优预测模式,并指出该预测模式对应残差处理模块中存放的RAM,将相应的残差输入到整数变换模块。
②预测模块包含了DC、HOR、VERT、PLANE四种预测模式的实现实体,根据模式选择模块决定的预测模式从接口模块读取预测参考像素和原始像素值,预测后残差输出到残差处理模块,预测值输出到补偿重构模块保存。
③残差处理模块采用2个存放残差的RAM,每个宏块可先并行做2种预测,残差分别保存到2个RAM中,选择其中较佳预测模式,再做下一种预测模式与前面所选较佳预测模式比较,直到完成所有预测模式选择出最佳预测模式。
④预测代价模块是计算每一种预测模式的预测代价,以4×4块为单位作hadamard变换,将变换后每个4×4块DC系数再做一次hadamard变换,将所有变换结果进行绝对值累加就是对应的预测代价。
色度预测模块结构基本和亮度预测相同,只是由于色度有Cb、Cr两个分量,残差在RAM中的存放方式略有差别;同一个宏块的色度预测和亮度预测是并行执行的,由于要处理的色度数据比亮度少一半,笔者在后面的整数变换中采用先处理色度,再处理亮度的方法,使得流水更加紧凑,减少等待时间,提高整个模块的运行速度。
3 结 论
笔者设计的基于NiosII的低码率实时H.264视频编码系统,在系统时钟频率100 MHz时,压缩一帧320×240的彩色图像需16.283 ms,在量化参数选择30时,图像压缩比达到2%,实时监控图像帧率25帧/s。系统具有资源占用较少,低成本,低码率,高清视频质量的特点,具有较好的发展前景。
图9为集成开发环境下综合仿真后系统的资源占用情况。
上一篇:CMMB移动电视芯片SC6600V及其应用方案分析
下一篇:一种基于SoC应用的Rail-to-Rail运算放大器IP核
推荐阅读最新更新时间:2024-05-02 22:54
基于SOPC技术的多通道实时温度采集系统
温度是表征物体冷热程度的物理量,是工业生产中常见和最基本的参数之一,在生产过程中常常需要对温度进行监控。传统的温度采集系统,通常采用 单 片机或数字信号处理器DSP作为微控制器,控制模数转换器ADC及其他外围设备的工作;但是,基于单片机或DSP的高速多路温度采集系统都有一定的不足。由于单片机运行的时钟频率较低,并且单片机是基于顺序语言的,各种功能都要靠软件的运行来实现,因此随着程序量的增加,如果程序的健壮性不好,会出现“程序跑飞”和“复位”现象。DSP的运算速度快,处理复杂的乘加运算有一定的优势,但是很难完成外围设备的复杂硬件逻辑控制。因而单片机或DSP很难满足在复杂的工业现场进行多路温度采集时对实时性和同步性的要求。鉴于此,本文介
[嵌入式]
基于FPGA和NiosII的逆变焊接电源控制器
摘要:设计了基于FPGA和NioslI软核的全数字逆变焊接电源控制器,采用变参数PID和改进的I-I型双闭环电流-弧长控制策略,并应用于数字化MIG焊接电源系统中。介绍了该电源控制器各模块的功能及设计方案,分析了MIG焊接电流和弧长的控制问题,并进行了仿真和实际焊接试验。 关键词:FPGA;NioslI;变参数PID;双闭环控制;数字MIG逆变电源 1 概述 脉冲金属惰性气体保护焊(pulsed metal inert gas welding),简称MIG焊。MIG焊在工艺上具有以下优点:焊接保护作用好,焊缝金属纯净,焊接过程稳定,焊缝成形好等。目前,国内逆变焊机多采用以DSP为核心或以MCU+DSP为核心的控制结构。当需
[嵌入式]
基于DMA的大批量数据快速传输模块设计
DMA控制器作为SOPC设计中使用频率较高的IP核,可用于存储器或外设间进行批量数据传输,以提高系统数据吞吐量。然而,由于DMA控制器只支持对基于Avalon总线流传输模式的外设进行数据传输操作,对用户自定义外设不予支持。文中提出了一种基于Avalon总线流传输模式的通用DMA接口控制器设计,实现了NiosⅡ与FPGA的大批量数据快速传输,显著提高了系统的数据吞吐量。 1 Avalon—MM总线规范 Avalon总线规范是为开发SOPC环境下外设而设计的,为SOPC设计者描述这些外设的端口提供了基础。Avalon总线有多种传输模式,其中,流传输模式为从端口提供了一种机制,用于控制来自主端口的传输,流传输模式的这些特点使其特
[单片机]
基于NiosII的SOPC多处理器系统设计方法
两个或多个微处理器一起工作来完成某个任务的系统称为“多处理器系统”。传统基于单片机的多处理器系统结构复杂,可靠性差;而基于32位的嵌入式软核处理器NiosII的SOPC(可编程片上系统)多处理器系统解决方案,从根本上改变了多处理器系统的设计理念和方法。使用Altera公司的NiosII软核处理器和SOPC Builder工具,可以快速地设计和建立共享资源的多处理器系统。多处理器系统一般用于工作站和使用分载(load-sharing)的复杂算法(称为“对称多处理器SMP”)的高端PC计算。对于大部分嵌入式系统,当SMP的开销太大时,使用多个处理器执行不同的任务,实现不同的功能正引起越来越多的关注。Altera公司的FPGA为开发非对
[工业控制]
SOPC中NiosII的LCD显示驱动IP设计
引言 NioslI嵌入式处理器是A1tera公司提出的SOPC解决方案,是一种用户可随意配置和构建的32位嵌入式处理器,结合丰富的外设可快速、灵活地构建功能强大的SOPC系统。Altera公司提供了一些通用的IP核,使得用户可轻松集成属于自己的专用功能;但对于一些特定的外设,没有现成可用的IP核,如液晶模块CBGl28064等。 用户可通过自定义逻辑的方法在SOPC设计中添加自定义IP核。在实际应用中,LCD液晶显示器凭借功耗低、体积小、轻薄及控制驱动简单等特点,在智能仪器、仪表和低功耗电子产品中得到了广泛应用。本文以深圳秋田视佳实业有限公司的液晶显示模块CBGl28064为例,在基于NioslI的SOPC系统中
[嵌入式]