APP下载

数据压缩技术在通信中的应用

2022-11-24

无线互联科技 2022年16期
关键词:压缩算法二叉树字符

汤 敏

(江苏第二师范学院 物理与信息工程学院,江苏 南京 210000)

0 引言

在计算机文件中,会重复出现某些符号,相较于其他符号,这些符号的出现频率较高或者字符在各个数据块可预见的位置中出现,这些都属于冗余部分,采用数据编码的方式可将冗余部分去除、减少,也就是进行压缩。冗余度压缩具有可逆性,所以也被称为无失真压缩、无损压缩。数据之间存在相关性,相邻数据的相关性更加明显。例如,图片中的背景色彩均匀、电视信号相邻两帧的数据变化并不大,但呈现出的影响有很大不同,诸如此类都可以体现出数据之间的相关性。本研究采用变换方式将相关性去掉,达到压缩的效果。

1 数据压缩技术的发展

1.1 早期发展

计算机中常用的数据压缩主要发挥节省空间和减少带宽占用的作用。该技术的研究早在18世纪就已经开始,“实数舍入为十进制数”就是数据压缩的基础理论。19世纪对数据压缩进行了初次尝试,也就是莫尔斯代码的出现。1939年,西方学者Dudey[1]研究制作了声码器,对声音频谱进行能量划分,使其成为数目有限的频带,在各个频带中传输对应能级,以此达到压缩的效果,但此时的研究还比较片面。在20世纪40年代才开始对数据压缩进行系统性地研究,信息论逐渐有了雏形。早期,信息论研究以“已知消息中各个符号出现频率”为主,尝试对编码进行架构,降低信息占用的空间。在数字计算机还没有研发前就已经有很多相关研究,对当前的数字压缩技术有很大的影响。

1.2 衍生算法

以各类研究结果、理论分析为基础,衍生出了各种算法,如霍夫曼编码等,在现代技术研究中依旧有很大的应用价值。数据压缩技术主要有两个研究方向:一是建立信源和数据模型,以此为基础探索衡量数据压缩质量和性能的技术指标;二是从工程技术研究的角度着手,构建可以发挥数据压缩技术优势的系统,为工程应用提供服务,分析数据压缩系统,了解具体的性能指标。简而言之,就是从理论和实践两方面进行研究,但不论是哪一种,都是信息论研究中的重要组成部分,以信息熵研究为主,深入分析压缩比、编码方法,利用具体的方法编码源数据,使数据流占据更少的空间。随着计算机技术的发展,数据压缩技术可以为信息存储、传输提供技术支持,所以研究愈加深入和广泛。随着技术的发展和研究的深入,数字图像信号、语音信号等信号技术在各个领域中广泛应用。由于图像信息会占用大量存储空间,但该通信方式为非话业务的主要内容,所以要在图像通信中广泛应用数据压缩技术,解决通信问题。

2 LZSSB算法在数字信号处理器中的应用

2.1 数字信号处理器的选择

2.1.1 DSP应用优势

与普通的科学计算相比,数字信号处理有其独特性,注重运算处理的实时性,为实现处理要求,研发了数字信号处理器(DSP)。DSP不仅具备微处理器的高速运算能力和控制功能,还可以更好地实现数字信号实时处理的目标,改动了处理器的结构,调整了指令系统和流程。DSP的数据总线与程序总线相互分离,采用哈弗和改进哈弗结构,相较于传统结构形式,其指令执行速度更高。DSP主要运用流水技术,各个指令利用片内多个功能单元执行,具体包括获取指令、译码、取数等步骤环节,可以提升时钟频率,使各个指令的执行时间减少[2-4]。片内有很多条总线,取指令、数据存储操作可以同步进行,采用辅助寄存器可以同时完成寻址任务,在寻址访问后对内容进行自动修改,并且指向后续要访问的地址。针对需要乘法累加运算的情况,DSP普遍配备独立的乘法器、加法器。在相同时,钟周期中可以完成两种运算,既可以相乘,也可以累加。ADSP2106X等新型DSP在乘和加的基础上,还可以进行减的运算,运算速度有了明显的提升。很多DSP配备DMA通道控制器,同时采用串行通信口,与片内多总线结构形成良好的配合关系,极大地提升了数据块的传送速度。中断处理器、定时控制器便于构成小规模系统,具有软件和硬件的等待功能,可以匹配各类存储器接口。

2.1.2 DSP与MPU,MCU的区别

DSP,MPU,MCU有明显的使用区别。DSP的性能比较高,具有数值运算密集型的特点,满足实时处理的要求;MPU在计算机中的应用比较广泛;MCU主要对处理过程进行控制[5]。DSP的功能性较强,可以实时进行数字信号处理,在实际应用的过程中,可以对周期的乘和加的操作下达单独指令。DSP采用比较独特的寻址方式,在其他操作执行的同时也可以修改地址寄存器的指针,既可以循环寻址,也可以进行位反序寻址,具有较强的功能性。在FIR滤波器中采用循环寻址的功能,可以将数据移动数量减少,在FFT中采用紧凑的存放旋转因子表[6-7]。

2.1.3 位反序功能

为了使FFT快速完成,可以采用位反序功能。存储器接口根据实时处理的需求设计,在单指令时间内可以访问多次存储器或访问I/O设备。采用专门的指令控制,具有无附加开销的循环功能,可以对指令进行延迟跳转。指令字采用指令集和较长的专门指令,一个指令字可以对多个功能单元进行控制和操作。在小型化设计中,可以采用单片系统,具有明显的应用优势。DSP的功耗比较低,通常在0.5~4 W。如果采用低功耗的设计模式,则功耗只有0.1 W,可以采用电池供电的方式,便于应用在嵌入式系统中。MPU的功耗相对较高,Power PC等功耗甚至超过20 W。

通过对比可以看出,DSP有更高的运算速度,处理速度明显高于MPU,甚至达到10倍以上,并且可以无间断地实时输入和输出数据。DSP具有结构单一的特点,采用汇编语言编程,可以预测任务完成时间,与结构和指令比较复杂的MPU相比,DSP的性能明显跟高。例如,FIR滤波器应用DSP。FIR输入一个数据对应各阶段的滤波器系数都需要进行乘和加,不仅要进行取值和取数,还要采取专门的数据移动操作。DSP应用之后,可以在单周期中完成各个操作[8]。

2.2 数字信号处理器的应用

2.2.1 bit位转换

压缩算法的处理单元普遍为8 bit,在输出的过程中,每次输出都是8 bit。ADSP21065L芯片的片内存储器可以设置的访问形式有三种,分别是16位、32位和48位。因此不单纯采用8位访问的方式,要变换存储器中的数据,确保数据与压缩算法相符。如果采用32位字符,则每次输入/输出都是32 bit,通过改进算法适应DSP芯片,减小匹配长度,达到降低压缩率的效果。

例如,输入信息流:ABCDEFGABCDEEFGABC。设置4个缓冲区在编码算法中,如果in_buffer1[]为1K,则in_buffer2[]为4K;out_buffer1[]为1K,则out_buffer2[]为4K。在读取in_buffer1[]的1K数据时,将in_buffer1[]的数据向in_buffer2[]转入。在转移数据的过程中,需要在in_buffer1[]读取数据,如果读出in_buffer1[0],则数据为32位,可以将该数据低8位在in_buffer2[0]中存储,次低8位则在in_buffer2[1]中存储,次高位在in_buffer2[2]中存入,高位在in_buffer2[3]中存入,以此类推。选择8位处理单元作为压缩编码,已经编码的数据向out_buffer2[]流放,缓冲区中低8位数据有效。在填满缓冲区的情况下,应该向out_buffer1[]转入数据,out_buffer2[0]低8位放入out_buffer1[0]的低8位,可以结合输入原理和过程进行类推分析。在解压处理的过程中,原理和流程基本相似。

2.2.2 处理数据流结束标志

在比较C语言算法的过程中,将文件中的数据读取,再进行处理。采用EOF(-1)判断文件结束是否可行,在读入字符为-1的情况下,表示读入的并不是正常字符,也就是文件结束符。在对二进制文件进行处理的过程中,将某字节中的二进制数据值读入,结果如果是-1,同时为EOF值,则读入的有用数据会依据“文件结束”的情况来处理。如果采用其他判断方式,使用函数feof对文件是否结束进行判断,能够有效解决此类问题。如果已经结束,则feof(fp)的值为1(真);反之为0(假)。在压缩的过程中,可以通过函数计算的方式进行判断分析,确定数据是否完成处理,断定程序是否已经终止。

2.2.3 字典处理

字典更新可以采用2种方式:(1)在数据处理的过程中对字典进行更新,同时改变二叉树,直到完成所有数据流处理;(2)缓冲区的数据处理完成之后,全部重新建立字典、二叉树,以此来降低压缩率,但可能会改变某些程序,造成系统开销。在比较压缩算法的过程中,可以编写LZSSB程序。字典从current_position=1开始进行逐个增加,在达到buffer_size的情况下,数值为0,那么就从0开始增加。由此可以看出,程序中通常存在计算位置模的宏,这个宏可以在0~511区间循环。在数据处理的同时更新字典,二叉树也随之变化,这个过程主要依据函数delete_tree0实现,该函数的功能比较明显。在字典中存入c字符的时候,widow[k]不是空的,而是已经存储了字符old_c,此时需要从二叉树中将节点k删除,为字符c的处理奠定基础,k的插入代表字符的更新。如果每次处理buffer_size字符结束后,都把压缩数据传输出去,同时对字典、二叉树进行重建,则以此为基础修改LZSSB程序。也就是在current_position=0的情况下开始,到达511即处理完了所有缓冲区的数据,结束程序,可以将MOD_WINDOW去掉。因为不需要在处理的同时对二叉树进行修改,可以将delete_tree()子程序去掉,相关函数也可以去掉。如果每次处理完buffer_size个字符,压缩数据都会传出,并且对字典和二叉树进行重新构建和初始化设置。例如,修改之前程序处理512个字符需要周期为65CA8(H),进行修改之后,周期会缩短到5BDOB(H)。

3 结语

综上所述,结合通信的特点对压缩算法以及改进方式进行分析,在计算机中应用模拟,对比各个算法的压缩率。虽然LZSSB算法可以满足系统对压缩率和实时性的要求,但在信息时代背景下,技术在不断的发展,人们的使用需求也日益提升,传输信息的数量会保持上涨的状态,所以必须继续研究压缩算法。不仅如此,在数据处理技术日臻完善的情况下,应该扩大处理空间,缩减系统开销,使数据压缩技术可以在通信中充分发挥作用。

猜你喜欢

压缩算法二叉树字符
CSP真题——二叉树
二叉树创建方法
字符代表几
基于参数识别的轨道电路监测数据压缩算法研究
一种USB接口字符液晶控制器设计
消失的殖民村庄和神秘字符
更正声明
一种由层次遍历和其它遍历构造二叉树的新算法
PMU数据预处理及压缩算法
论复杂二叉树的初始化算法