基于Avalon总线的图像解压缩IP核设计
扫描二维码
随时随地手机看文章
摘 要: 介绍了基于Avalon总线的静态图像压缩标准JPEG基本模式解码器软IP核的设计和实现。IP核采用流水线和模块化的设计方法,分别设计各个模块完成其独立的功能,然后将这些模块组成一个顶层模块,采用Avalon总线接口,利用SOPC Builder工具将IP核集成到系统中。该IP核极大地提高了解码速度,具有可移植性,可以方便地集成到手机、数码相机等数字产品中。
关键词: JPEG; 解压缩; IP; Avalon
随着我国物联网筹备和建设的推进,高速图像处理技术的应用领域不断扩大,对图像处理的要求也越来越高。由于未经压缩图像的数据量非常庞大,对存储空间和通信带宽的需求是无限的,这就要求对图像进行压缩处理。JPEG图像压缩标准凭着其高压缩率和灵活的应用形式得到了广泛的应用。
Avalon总线是Altera公司开发的用于Nios嵌入式处理器的参数化接口总线,由一组预定义的信号组成,是一种相对简单的总线结构,主要用于连接片内存储器和外设,以构成SOPC系统。本文在研究JPEG算法的基础上,设计了一种基于Avalon总线的图像解压缩IP核,以提高图像解码的速度,满足实时性要求。
1 JPEG解压缩原理
JPEG(Joint Photographic Expert Group)是第一个适用于连续色调、多灰度、彩色或黑白静止图像的国际标准[1]。JPEG解码的目的是将编码后的压缩数据转换成适合于显示器显示的RGB信号。其解码流程如图1所示。
解码流程的主要功能模块包括:(1)头文件解析;(2)熵解码,包括直流系数解码、交流系数解码和差分解码; (3)反量化与反Z变换(扫描);(4)IDCT变换;(5)颜色空间转换。将每个模块用Verilog HDL语言进行设计[2],编译后,利用Modelsim软件对其进行功能仿真和时序仿真,最终完成各个单元的设计和IP核的实现。
1.1 头文件解析单元
在JPEG解码模块启动后,头码流解析单元首先读入JPEG文件的包头,根据JPEG文件数据的存储方式依次检测数据流中包含的各种段的标识符,把要解码的文件信息从数据流中解析出来并存储到相应的存储单元,为后面压缩数据的解码做准备。
头码流解析单元由头码流解析状态机和一系列存储单元组成。状态机主要有Idle空闲状态、ReadMarker读取标志位状态和ReadSegment读取段内信息三个状态。该单元模块初始状态为Idle状态,当外部发出解码开始信号时,模块跳转到ReadMarker状态,读完标识符后,模块进入ReadSegment状态。在这个状态下,模块对每个标志段内的信息进行解析,并对其中的重要信息如当前图像的宽度、高度以及解码需要的量化表和解码表存储到相应的存储单元。当所有的标记段解码完成后,模块又跳转到Idle(空闲)状态。其状态转移图如图2所示。
头文件解析单元模块的输入输出信号分别为:复位信号(rst)、系统时钟(clk)、输入数据有效(DataInEnabe),输入数据(DataIn)、状态机状态(state),读取段内信息时的状态(process)。该模块在Modelsim仿真软件下的顶层仿真如图3所示。由仿真图可知,该单元可以每2个时钟处理1 B的数据。