当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要: 提出了一种基于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.

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭