当前位置:首页 > 工业控制 > 电子设计自动化

摘 要: 提出了一种基于FPGA的JPEG-LS的多路并行译码系统,运用VHDL语言实现,以提高图像的译码速度。系统主要分为检测模块、译码模块和码流分配模块三部分。在检测模块中提取和去除头文件的图像信息,译码模块则根据算法对图像数据进行恢复,码流分配模块为多路并行算法的关键,利用流水线结构的思路采用乒乓操作将码流从检测模块传送到外部RAM。在译码时采用同样的方法将数据送入多个译码模块进行译码。
关键词: 现场可编程逻辑门阵列;码流分配;多路并行;流水线;乒乓操作

JPEG-LS无损和近无损压缩算法已经在医疗和遥感图像领域得到了广泛应用。在现有的硬件译码中实现高性能的JPEG-LS译码大都采用流水线处理方式[1]。并行运算在硬件译码中的应用使得其相对于软件译码更有明显的优势。由于FPGA具有系统结构和逻辑单元灵活、集成度高、开发周期短、可适用于较大规模的电路等优点,因此本设计中采用FPGA作为硬件开发平台,对图片的译码采用多路并行的方式[2]来实现高速译码。为了节省系统资源,本设计采用四路并行译码。由于处理的图像信息量比较大,在图片处理过程中需要对数据进行缓存,而在芯片内部的RAM无法满足要求的情况下,采用外挂RAM对从检测模块和解码模块出来的图片信息进行缓存[3]。本多路并行译码系统主要由检测模块、译码模块和码流分配模块组成。
1 检测模块
 检测模块用来对图片信息的头文件进行处理。对于每一种图像压缩算法,其头文件都有固定的一种格式。在检测模块中,接收到头文件信息后首先检测标识号是否正确。为了正确提取头文件中的图像信息,设计中设置一个计数器对输入的时钟进行计数。如果标识号正确,则进入下一个状态并且计数器开始计数;若错误则停留在当前状态检测下一个标识号,计数器保持为0。标识好并正确后去除标识号信息,从头文件后面的信息中在不同的状态根据计数器的不同分别提取出图像的高、宽、精度等信息。头文件信息提取完之后,根据码流长度的值判断选择对数据进行缓存。当码流长度依次递减为0时,状态选择跳转为最初状态,等待下一幅图片的输入。
2 译码模块
译码模块是对压缩后的图片信息进行恢复。JPEG-LS的编码方法是一种利用Glomb编码和上下文建模的编码方法。
 建模建立在上下文的基础上。在上下文建模时,每个样本值都是以周围几个像素的值为条件的,要确定一个概率分布用来编码当前样本值。若样本为x,如图1所示,上下文是由图中a、b、c、d 4个位置的重建样本值来确定的。图像数据的扫描顺序是按从左到右从上到下进行。通过对4个重建样本值计算出3个梯度值D1、D2、D3,然后根据3个梯度值决定对x位置的样本值采用游长编码还是采用常规编码。当梯度值D1、D2、D3全为0时或者全部小于近无损压缩控制的压缩比控因子(NEAR)值时选择游长编码,否则选择常规编码。
常规编码主要是一个对预测值、预测误差的编码过程和一个变量更新过程。在上下文建模之后是预测过程。预测值是由如图1所示的a、b、c、d位置的样本重建值对x位置的样本值的一个预测。预测误差则是预测值与实际值之间的差值。预测误差后则根据上下文对其修正补偿在预测过程中的系统偏差。对近无损压缩而言,要对预测误差进行量化。

在游长编码中,如果a、b、c、d位置的样本重建值的梯度值均为0,或者样本重建值之间梯度值在近无损压缩控制因子的范围之内,则上下文建模选择游长编码。游长编码过程不需要对样本预测值和预测误差编码,编码器从x位置开始对连续出现样本值相同的样本均用a位置的样本值来重建,直到样本值之间的梯度值不满足要求,或者到本行结束时,结束游长编码。
图像的解码过程和编码过程大致相同,即根据上下文之间重建样本值的关系来确定x位置的样本值,采用同样的方式选择是常规译码还是游长译码。
3 码流分配模块
3.1 码流分配方案
   码流分配模块为多路并行算法的关键,也是本设计的顶层模块,负责对输入码流[5]的走向进行调配。在本设计中采用4个外挂的RAM存储解码过程中的码流数据。为了节省FPGA系统资源,本设计采用4路并行的方式,如图2所示。首先码流通过检测模块对图像的头文件进行处理,将处理后的结果顺序缓存到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。如图3所示为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的译码。
图4为RAM1读操作控制波形图。从图中可以看出,4个译码模块采用流水线的方式根据RAM的地址分别读取4幅图像的数据进行解码。

本设计采用4路并行译码的方式,芯片的面积利用率为90%,虽然占用的逻辑单元数量比较多,但是译码速度却有很大提高,充分体现出面积和速度之间的关系。设计是在ISE7.1的软件环境下进行综合的。译码部分使用逻辑单元数目为4 414个,占所用逻辑单元总数的17%,使用片内RAM为11个,占片内RAM总数的3%,综合频率达到了135.485 MHz。采用90 MHz的时钟译码,使得译码图像输出帧之间相隔约9 ms,真正实现了图片译码的实时传输。在测试阶段采用多幅遥感图像对多路译码器进行了测试,实验结果表明,在采用多路并行译码的情况下,能够实现快速、准确的传输。本设计具有很好的可移植性,能够应用到图片处理的许多领域中。
参考文献
[1] PAPADONIKOLAKIS M E, KAKAROUNTAS A P. Efficient high-performance implementation of JPEG2LS encoder[J]. Journal of Real-time Image, 2008(3):303-307.
[2] 王浩,刘文怡,韩志军.多通道同步数据采集与处理系统的设计与实现[J].通信技术,2009,42(1):297-299.
[3] 庄怀宇,吴成柯,邓家先,等.JPEG2000 T2编码快速算法及硬件实现[J].系统工程与电子技术,2004,26(12):1939-1942.
[4] 王智,罗新民.基于乒乓操作的异步FIFO设计及VHDL实现[J].电子工程师,2005,31(6):13-16.
[5] 邓家先,肖江,吴成柯,等.JPEG2000的重要性编码[J].电路与系统学报,2003,8(5):145-148.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

BIO/NIO/多路复用器

关键字: 多路 复用器

计算机网络:是把地理位置不同且具有独立功能的若干台计算机,通过通信线路和设备 相互连接起来,存在一个能为用户自动管理资源的网络操作系统,按照网络通信协议信息传输和资源共享的信息系统; 2. 通信子网:是指所有转接结点以及...

关键字: 多路 解释

LED灯作为一种新型节能和无污染光源,由于其特有的发光照明特性,在现代照明应用中发挥着革命性的作用。作为 LED 照明产业链中最为核心的部件之一,LED 驱动电源的驱动控制技术所存在的可靠性低、成本高等典型问题一直制约着...

关键字: 多路 LED 驱动电源

JPEG图像硬件解码低功耗技术方案 为了实现数据的实时处理和低功耗应用,本文提出了一种带有时钟管理机制的并行、全流水结构的JPEG解码器实现方案。 目前,我国正在筹备物联网的建设,这对于传感器技术

关键字: 图像 jpeg

当前,电视设备正逐步从模拟向数字过渡,SONY、松下、JVC等公司纷纷推出了最新的数字摄、录、编设备。在当今电视技术领域,数字记录和编辑已得到广泛的运用。     数字

关键字: 国际标准 mpeg jpeg 数字视频技术 视频压缩

本周,在拉斯维加斯举行的NAB展上,联合图像专家组(JPEG),图像压缩标准背后的国际委员会,推出了一种新的图片格式JPEG XS,这是一种被称为低能量压缩解决方案的新格式,可通过5G等网络以低

关键字: 5G jpeg 多媒体

Intel做高性能独显GPU已经不是秘密了,显卡架构确定叫做Xe,未来会涵盖从核显到游戏显卡再到加速卡在内的多种应用场景,2020年新卡正式发布。 除了多年前昙花一现的i740独显GPU,Intel多

关键字: GPU Intel 多路 显卡
关闭
关闭