基于FPGA的JPEG-LS的多路并行译码

时间:2011-09-02

  JPEG-LS无损和近无损压缩算法已经在医疗和遥感图像领域得到了广泛应用。在现有的硬件译码中大都采用流水线处理方式 1.由于FPGA具有系统结构和逻辑单元灵活、集成度高、开发周期短、可适用于较大规模的电路等优点,因此本设计中采用FPGA作为硬件开发平台,对图片的译码采用多路并行的方。 2.为了节省系统资源,本设计采用四路并行译码。由于处理的图像信息量比较大,在图片处理过程中需要对数据进行缓存,而在芯片内部的RAM无法满足要求的情况下,采用外挂RAM对从检测模块和解码模块出来的图片信息进行缓存 3.本多路并行译码系统主要由检测模块、译码模块和码流分配模块组成。

  一  检测模块

  检测模块用来对图片信息的头文件进行处理。每一种图像压缩算法,其头文件都有固定的一种格式。在检测模块中,接收到头文件信息后首先检测标识号是否正确。为了正确提取头文件中的图像信息,设计中设置一个计数器对输入的时钟进行计数。如果标识号正确,则进入下一个状态并且计数器开始计数;若错误则停留在当前状态检测下一个标识号,计数器保持为0。标识好并正确后去除标识号信息,从头文件后面的信息中在不同的状态根据计数器的不同分别提取出图像的高、宽、等信息。头文件信息提取完之后,根据码流长度的值判断选择对数据进行缓存。当码流长度依次递减为0时,状态选择跳转为初状态,等待下一幅图片的输入。

  二 译码模块

  译码模块是对压缩后的图片信息进行恢复。JPEG-LS的编码方法是一种利用Glomb编码和上下文建模的编码方法。

  建模建立在上下文的基础上。在上下文建模时,每个样本值都是以周围几个像素的值为条件的,要确定一个概率分布用来编码当前样本值。若样本为x,如所示,上下文是由图中a、b、c、d 4个位置的重建样本值来确定的。图像数据的扫描顺序是按从左到右从上到下进行。通过对4个重建样本值计算出3个梯度值D1、D2、D3,然后根据3个梯度值决定对x位置的样本值采用游长编码还是采用常规编码。当梯度值D1、D2、D3全为0时或者全部小于近无损压缩控制的压缩比控因子(NEAR)值时选择游长编码,否则选择常规编码。

    常规编码主要是一个对预测值、预测误差的编码过程和一个变量更新过程。在上下文建模之后是预测过程。预测值是由如所示的a、b、c、d位置的样本重建值对x位置的样本值的一个预测。预测误差则是预测值与实际值之间的差值。预测误差后则根据上下文对其修正补偿在预测过程中的系统偏差。对近无损压缩而言,要对预测误差进行量化。

  在游长编码中,如果a、b、c、d位置的样本重建值的梯度值均为0,或者样本重建值之间梯度值在近无损压缩控制因子的范围之内,则上下文建模选择游长编码。游长编码过程不需要对样本预测值和预测误差编码,编码器从x位置开始对连续出现样本值相同的样本均用a位置的样本值来重建,直到样本值之间的梯度值不满足要求,或者到本行结束时,结束游长编码。

  图像的解码过程和编码过程大致相同,即根据上下文之间重建样本值的关系来确定x位置的样本值,采用同样的方式选择是常规译码还是游长译码

  三 码流分配模块

  3.1 码流分配方案

  码流分配模块为多路并行算法的关键,也是本设计的顶层模块,负责对输入码流[5]的走向进行调配。在本设计中采用4个外挂的RAM存储解码过程中的码流数据。为了节省FPGA系统资源,本设计采用4路并行的方式,如所示。首先码流通过检测模块对图像的头文件进行处理,将处理后的结果顺序缓存到RAM1和RAM2中。当缓存RAM写满之后,RAM中的数据送入4个译码模块dec1、dec2、dec3、dec4开始译码。译码后的数据顺序缓存到RAM3和RAM4中,然后显示器循环调用RAM3和RAM4中的数据进行显示。

  设计中将每个RAM的地址空间划分为四个部分,分别存放一帧数据中4幅图像的数据。在译码部分提取数据时也可根据RAM中存放图片的位置对应提取出所要译码图片的信息。为了提高设计的整体性能和效率,设计中对检测模块和译码模块采用不同频率的时钟,在检测模块采用50 MHz的时钟,译码模块则采用90 MHz的时钟。由于对RAM读写时钟采用不同的频率,保证了时序控制上有严格的要求。在个缓存周期中,从检测模块出来的数据采用乒乓操作的方法[4]首先存储到RAM1的4个空间中。在第二个缓存周期,如果RAM1存储满、RAM2为空,则检测输出选择信号将切换到RAM2上,开始对RAM2进行写操作,同时译码模块输入选择信号切换到RAM1并对RAM1中的4幅图像的数据采用流水线方式4路并行译码。在第三个缓存周期中,如果RAM1译码完成、RAM2写满,则先将RAM1复位,再将检测输出选择信号选择RAM1,并对RAM1进行写操作,译码输入选择信号选择RAM2,开始对RAM2中的4幅图像译码。对RAM3和RAM4的读写也采用相同的乒乓操作方式。在第三个缓存周期,译码输出选择RAM3,并对RAM3开始写操作,当RAM3写满、RAM4为空时,进入第四个缓存周期,译码输出选择对RAM4写操作,屏幕显示调用RAM3中的数据。到下一个操作时序时,RAM3中的数据读完、RAM4存储满,则对RAM3复位,译码输出选择RAM3,屏幕显示调用RAM4中的数据。如此实现图片的不间断输出。

  3.2 乒乓操作并行控制的VHDL实现及仿真

  设计中的乒乓操作主要体现在对RAM1和RAM2的读写时序控制上。对RAM1和RAM2的写操作采用50 MHz的时钟,而读操作则采用90 MHz的时钟。本设计在Modeltech_6.3a仿真工具下做时序和功能仿真。测试文件采用10位压缩后的码流作为译码的输入,选择16数据线的RAM作为缓冲储存器。

  设计中,用来控制RAM1写信号的为码流输入判断信号fram,当fram信号为1时则为有码流输入;data_valid用来控制是否为有效数据;fram_flag1作为判断一帧数据的4幅图像在RAM1中是否存储完成的标志;fram_flag2作为判断一帧数据的4幅图像在RAM2中是否存储完成的标志。如果一帧数据的4幅图像在RAM1写完则fram_flag1为1。同样如果在RAM2中存储完成则fram_flag2为1;ram1_ready为判断RAM1是否准备好接收数据的标志。当ram1_ready为1时表示已经复位完成,准备接收数据;ram2_ready则为判断RAM2是否准备好接收数据的标志;read_empty1为RAM1读空信号;read_empty1_delay为read_empty1的一个时钟的延迟信号;ram1_2为RAM1和RAM2之间的切换信号。ram1_2为0时表示选择RAM1,为1时表示选择RAM2;ram1_strm、ram2_strm为RAM中的输入码流信息;cnt1为以8为码流计数,当其为奇数时RAM地址+1,当其为偶数时RAM地址不变。

  在50 MHz时钟的上升沿,如果read_empty1=1、read_empty1_delay=0,则ram1_ready=1。所示为RAM1写操作时各写操作控制信号的波形图。

    设计中用来控制RAM读操作的信号有write_full1,它是判断RAM1是否写满的标志。复位时,write_full1为0,当一帧输入码流存储到RAM1中后, write_full1为1。RAM2的满标志用write_full2信号来判断。dec_end1为RAM1中信息译码结束标志,RAM1中信息译码结束时dec_end1为1,复位时dec_end1为0。dec_end1_delay为dec_end1的一个时钟延迟信号。dec_end2和dec_end2_delay分别为RAM2译码结束标志和对译码标志的一个延时。dec_permit为RAM1、RAM2的译码允许标志。ram1_rd、ram2_rd分别为RAM1、RAM2的读信号。dec_start1、dec_start2分别为RAM1和RAM2开始译码的标志位。

  当dec_end1_delay=0、dec_end1=1时,dec_permit=1。当dec_end2_delay=0、dec_end2=1时,dec_permit=0。

  当write_full1=1、dec_end1=0、dec_permit=0时,RAM1的译码开始标志位为1,表示开始对RAM1的译码。当write_full2=1、dec_end2=1、dec_permit=1时,RAM2的译码开始标志位为1,表示开始对RAM2的译码。

                                         

    本设计采用译码的方式,芯片的面积利用率为90%,虽然占用的逻辑单元数量比较多,但是译码速度却有很大提高,充分体现出面积和速度之间的关系。设计是在ISE7.1的软件环境下进行综合的。译码部分使用逻辑单元数目为4 414个,占所用逻辑单元总数的17%,使用片内RAM为11个,占片内RAM总数的3%,综合频率达到了135.485 MHz。采用90 MHz的时钟译码,使得译码图像输出帧之间相隔约9 ms,真正实现了图片译码的实时传输。在测试阶段采用多幅遥感图像对多路译码器进行了测试,实验结果表明,在采用多路并行译码的情况下,能够实现快速、准确的传输。本设计具有很好的可移植性,能够应用到图片处理的许多领域中。

 


  
上一篇:分析基于ARM 的红外光汽车速度管理系统
下一篇:基于VHDL密码控制系统的设计和仿真

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料