变长码有序译码法及其可编程电路的制作方法

文档序号:7534830阅读:497来源:国知局
专利名称:变长码有序译码法及其可编程电路的制作方法
技术领域
本发明涉及一种变长码译码方法及其可编程电路。
现代数据通信技术是信息化社会必需的一种工具,而且人们对通信传输速率的要求也越来越高。信源编码通过数据压缩编码可以提高通信传输速率,因而被广泛应用于语音、图象、文字、数据等通信领域,这种用于数据压缩目的的信源编码的代码是变长码,对于变长码的译码要提高其译码速度,首先必须提高识别变长码字的速度。目前国内外广泛采用的变长码译码法大都是基于树形搜索译码法,近期,我国《发明专利公报》中公开了一种公开号为CN1043413A,发明名称为“通用变长码编译码方法和可编程电路”的发明,其中也涉及一种变长码比较译码法。上述这些变长码的译码法,都需要对码流中的码元进行逐个识别来译码,因此限制了译码速度的提高,难以满足更高速数据通信的要求。
为了克服上述不足,本发明的目的是提供一种变长码有序译码法及其可编程电路,它是直接对整个码字进行识别来译码,完全摆脱了现有技术中逐个识别码元的译码方法,从而能大幅度地提高译码速度。本发明适用范围广,算法简单,用电路实现灵活容易,适合于制作通用可编程变长码译码集成电路,用软件或软、硬件相结合实现则具有编程简单、灵活、平均运行指令数少等优点。
本发明的目的是通过下述技术方案来实现的。
对于一个变长码体系,构造一个与码字相关的有序表,在译码过程中,把码流中以待译码字为首的码元串看成一个数,通过确定其与有序表中一个有序集合的元素之间的大小顺序关系来识别被译码。有序表是这样构成的在各个码字后添加若干个零构成相同位数lm位(lm不小于最大码长)的数,再将这些数按从小到大(或从大到小)的顺序进行排列组成一个有序集合,然后将各消息单元和码长按照所对应的有序集合中的元素顺序进行排列,这就构成了有序表。码字识别过程是从待译码流的首部取lm个码元作为一个lm位数,确定若将该数插入有序表中的有序集合并使该集合仍然有序时应插在哪一个元素之后(或之前,不要实际插入),则这个元素所对应的代码就是待译码流的第一个代码,然后从待译码流首部删去已被译出码的码元,将剩余码流作为一个新的待译码流,重复上述过程,即可译出第二个、第三个码等等,直到待译码流被全部译完为止。上述有序译码法可以通过一种可编程电路图8来实现,如图8所示,该电路是由删除电路1、码宇识别电路2、控制电路5和存贮器组成的,存贮器是由消息单元存贮器3和码长存贮器4组成。删除电路是具有删除待译码流首部已被译出码的码元并取出剩余待译码流前lm个码元的功能的电路,码字识别电路就是具有识别码字功能的电路,存贮器是用来存贮消息单元(或消息单元所在地址)和码长的,控制电路则协调各部分电路之间的工作过程。待译码流以lm个码元为一组并行输入删除电路,删除电路将待译码流的前lm个码元并行输出给码字识别电路,码字识别电路识别出该lm个码元的第一个码后,将对应消息单元和码长在存贮器中的地址输入给存贮器,对应消息单元就从存贮器输出,对应码长则进给删除电路,删除电路完成删除操作后,再将剩余待译码流的前lm个码元送入码字识别电路,继续进行译码,当删除电路中剩余待译码元不多于lm个时,就从待译码流中取入下一组lm个码元来补充。
以下将通过具体实施例对本发明作进一步的详细描述。设有信源X,

其中x1,x2,…,xn表示信源的消息单元,P(x)是x出现的概率,符号集S={s1,s2,…,sR},其中s1,s2,…,SR是用来构成代码的符号。通常S由多进制R(R≥2)进制数字构成,并相应地被称为R进制信源编码。例如在二进制信源编码中S={0,1},在三进制信源编码中S={0,1,2}等等。但是,在S中必有元素“0,”并假定SR是其中最大元素。在给定R的情况下,应用某种编码算法(例如霍夫曼编码法,香农编码法等等),找出各个消息单元的代码,构成代码集C={c1,c2,…,cn},其中每一个代码c都是由S中R进制的若干个数字组成的长短不一的“数字串”,即为变长码,并满足字首码条件,或者说,具有非延长码特性。假设,

图1表示消息单元集X与代码集C的对应关系表,如图1所示,为了进行译码,先构造有序表。
设lmax=max{l1,l2…,ln},取满足lm≥lmax的一个lm,构造集合D={d1,d2…,dn},其中元素di与代码ci的对应关系是对于代码其中bj(i)∈S(称bj(i)为码元),j=1,2,…li(1),有

i=1,2,…n (2)。
因为对于不同的代码c,式(1)右边的数字串不同,并具有非延长码特性,所以把集合D中的元素d看成lm位R进制数时,各元素互不相等。据此,可以将D中元素按从小到大(或从大到小,它们的译码原理相同,以下以从小到大顺序排列为例)顺序排列,得到有序集合D={d′1,d′2,…,d′n},其中d′i∈D,i=1,2,…,n,并且d′i<d′j,对于i<j,i,j∈{1,2.…,n} (3)然后,以有序集合D′为基础构造一个译码用的有序表,图2是用于变长码译码的有序表,如图2所示,代码集C′=C′1,C′2,…,C′n}是代码集C中的代码按所对应的d′的顺序重新排列而得到的,同理,对应消息单元和对应码长也是用同样的方法得到的。
利用这种有序表,变长码的有序译码法如下由于代表消息单元的码流是由代码集合中的代码不加任何间隔符号连续排列而构成,而各个代码都是R进制数字串,所以接牧到的一则消息的码流(待译码流)是一个代码串,也是有限长的R进制数字串,可以表示为 W=b1b2…bp,其中bi∈S,i=1,2,…,p(4)w能且只能被分割为代码集合中的一系列代码,而且分割是唯一的。
其译码步骤是 第—步取待译码流w中的前lm个码元作为一个lm位R进制数其前若干位必构成某代码c″。
第二步判定w′≥d′n是否成立,若是,则c″一定是d′n所对应的代码c′n;若不是,则在有序集合D′中寻找i,使得d′i≤w′<d′i+1 成立(必能找到),即可确定c″一定是d′i所对应的代码c′i。
以下用两个特性证实上述判断的正确性,在此之前,先对这两个特性加以证明。
〔特性1〕在有序集合D′中,任意给定一个元素d′i,都可以在集合D中找到一个与之相同的元素dj(因为D′与D具有相同元素,且是一一对应的),对于满足条件

j=1,2,…,n-1的lm位R进制数α,有 α<d′k,对于k>i,k∈{2,3,…,n}证明用反证法。假设α≥d′k,则

又因为k>i,由式(3)知,d′k>d′i,所以(lm-li)位设d′k=dg,则其中(lm-lg)位由式(5)和式(6)可以推知,d′k的前li位必然为即码字cj。对照式(7),可以推知,若lg=lj,则cg与cj相同,故d′k=d′i,与式(3)矛盾;若lg>li,则cg成为ci的延长,或者lg<li,则cj成为cg的延长。均与原代码集具有的非延长码特性矛盾。故α≥d′k的假设不成立。“特性1”命题正确,证毕。
[特性2]设u是在某一代码ci后任意增加若干个R进制数字而延长至总长为lm位的R进制数,那么 (1)若u<d′k,则cj不可能是d′k或D′中比d′k大的元素所对应的代码; (2)若u≥d′k,则ci不可能是D′中比d′k小的元素所对应的代码。证明根据上述假设,u可以表示为

其中j=1,2,…,(lm-li) 仍然用反证法证明“特性2”命题之(1)和(2)。
(1)假设ci是d′k或D′中比d′k大的元素所对应的代码,显然有

这与(1)中条件u<d′k矛盾,故假设不成立。“特性2”命题之(1)正确。
(2)假设ci是D′中比d′k小的元素所对应的代码,又因为

依“特性1”有u<d′k,这与(2)中条件u≥d′k矛盾,故假设不成立,“特性2”命题之(2)正确,证毕。
现在来说明译码步骤第二步中判断正确的依据。
若w′≥d′n,依“特性2”命题之(2),C″不可能是D′中比d′n小的元素所对应的代码,所以C″一定是d′n所对应的代码c′n;若d′i≤w′<d′i+1,依“特性2”命题之(1),C″不可能是d′i+1或D′中比d′i+1大的元素所对应的代码,依“特性2”命题之(2),C″也不可能是D′中比di小的元素所对应的代码,所以C″一定是d′i所对应的代码c′i。
因此译码步骤第二步的判断是正确的。
第三步判断了C″是有序集合D′中一个确定的d′所对应的代码C′,就是译出了第一个码;将相应的消息单元x′以适当方式输出(或存贮),然后将式(4)中构成C′的前l′(C′的码长)位删去,将剩余码流看成一个新的代码串或数字串w,转到第一步,继续进行译码,直至整个码流w被译完为止。
实施本发明涉及有序译码法来大幅度地提高译码速度的一个重要因素在于快速执行译码步骤的第二步,从数据结构观点来看,译码步骤第二步相当于确定将一个给定的新元素插入一个有序的线性并列表并使该表仍然有序的插入位置(不要实际插入),因此可以利用有序表的各种快速插入算法如对分查找插入算法、分段等差数列法、散列地址法等,来快速确定代码。以下用一个具体的变长码体系来说明其中几种快速插入算法在有序译码法中的应用。
设图3是一个具体的二进制变长码体系中消息单元与码字对应表。按图2形式,构造用于译码的有序表图4,其中lm取8是为了便于8位计算机处理,用硬件实现时也可取lm=6,图4中消息单元xi可以用数字方式存贮消息单元本身或消息单元所在地址。
方法一对分查找插入算法。
直接采用图4,用众所周知的对分查找插入算法确定若将待译码流中前8个码元组成的8位二进制数插入有序集合D′时应插在哪一个元素之后,再按译码步骤2即可确定代码,这时需存贮图4中有序集合D′,对应消息单元和对应码长三组数据,代码总个数为n时,识别一个码最多需搜索[log2n]+2(〔A〕表示取不大于A的最大整数)次,当最大码长较大和码字总个数较多时,译码速度的提高较为显著。对分查找插入算法的一个优点是占用内存少。
方法二分段等差数列法。
将图4中的有序集合D′中的元素扩展为分段等差数列如图5和图6所示,图5是用于分段等差数列法的有序表,图6是分段首地址指针索引表,图5中增加的元素所对应的消息单元和码长与比它小且最相近的已有元素所对应的消息单元和码长一致,利用分段等差数列法,需存贮图5中消息单元和码长及图6中分段索引地址指针和公差四组数据。当取待译码流中的前8个码元作为一个8位二进制数w′时,代码识别步骤如下 (1)取w′前4位作为一个二进制数w1,以w1为序号取图6中的分段索引地址指针w2,判断对应公差w3是否为零,若是,则w′中第一个码就是图5中序号为w2的代码,其对应消息单元和码长也相应找到。
(2)若不是,取w′中后4位作为一个二进制数,除以公差w3,得到商w4(余数舍弃),则w′中第一个码就是图5中序号为(w2+w4)的代码,其对应消息单元和码长也相应找到。
利用分段等差数列法的优点是不需搜索,只要经过一步判断和一步计算即可确定被译码,所占内存也不多。
方法三散列地址法。
这是一种用散列地址存贮法确定代码的方法。将图4中的有序集合D′中的元素加以扩展并按散列地址进行存贮,图7是用于散列地址存贮法的有序表,如图7所示,增加的元素所对应的消息单元和码长与方法二中情况一样,这时需按图7存贮消息单元和码长两组数据。当取待译码流中的前8个码元作为一个8位二进制数w′时,只要将w′右移两位(左边补零)得到w5,则w′中的第一个码就是图7中序号为w5的代码,其对应消息单元和码长也相应找到。利用散列地址存贮法是以较多的存贮量换取较高的译码速度,它既不需要搜索,也不需要计算就可确定待译码字。
由此可见,本发明涉及的有序译码法是通过构造与码字相关的有序表,使得确定被译码的过程转化为确定数的大小顺序关系的过程,从而可以利用有序表特有的性质,采用各种快速插入算法,快速地识别整个码字。
作为实施本发明涉及的变长码的有序译码法的手段之一,图8给出了可编程变长码译码电路。
在图8的译码电路中,存贮在存贮单元为定长lm位(lm不小于最大码长)的存贮器中的分组(即以lm个码元为一组)被译码流6,在控制信号发生器5发出的控制信号8的作用下,取待译码流组的前若干组先后并行输入删除电路1,删除电路1是完成译码步骤第三步,即删去码流首部已被译出码的码元并输出剩余待译码流前lm个码元的一种电路,1的状态输出送给5,当1的状态指示无需进行删除或删除操作完毕时,5产生一个控制信号,将1的输出并行输入码字识别电路2,2是完成译码步骤第二步,即识别码字并输出被识别码所对应的消息单元和码长在消息单元存贮器3与码长存贮器4(均按有序表中的顺序存贮)中的地址的一种电路,2的状态输出给5,当2的状态指示识别出一个码字时,5产生一个控制脉冲将2的输出并行输入3和4,5再输出控制脉冲13触发外部电路接收从数据总线7并行输出的存贮器3中的对应消息单元,同时使4中的对应码长并行输入删除电路1,接着1进行删除操作,如发现完成删除操作后,1中剩余码元不多于lm个,则1输出一个脉冲信号给5,5就将待译码流中下一组lm码元并行输入1,经过调整,1又输出剩余待译码流的前lm个码元到2,继续进行译码。
图8中存贮器3、4中消息单元和码长数据在译码工作之前由数据总线7送入,片选信号9,地址信号10,读写信号11以及时钟信号12都由外部电路提供。
作为构成上述可编程变长码译码电路的必要因素,图9、图10和图11、图12分别给出了删除电路1和码字识别电路2的实现方法各两种。
图9的删除电路中,待译码流从首部算起第一组和第二组lm个码元由外部控制电路通过数据总线6输入移位寄存器14和15,复位信号20通过控制信号发生器18将lm进制减法计数器17清零,14的内容是待译码流的前lm个码元,在18的控制下通过6输出;被译出码的对应码长由外部控制电路通过6输入可预置(lm+1)进制减法计数器16,启动信号19通过18,使时钟信号12送给14、15、16和减法计数器17,使之左移或计数,15的内容左移时进入14,当16减至零时输出状态信号22给18和外部电路,停止移位和计数,14的内容就是剩余待译码流的前lm码元,再在18控制下通过6输出;在移位和计数过程中,若减法计数器17从大于零减至零,即输出脉冲信号21给18和外部电路,停止移位和计数,外部控制电路将待译码流的下一组码元通过数据总线6并行输入15,并用复位信号20重新启动移位和计数。
图10的删除电路中,待译码流从首部算起第一组和第二组lm个码元通过数据总线6分别并行进入一个由(lm+1)个寄存器组成的寄存器组23中的第一个和第(lm+1)个寄存器,同时23中第i(i=2,3,…,lm)个寄存器了第一个寄存器的第i位至第(lm+1)个寄存器的第(i-1)位的内容。算术运算单元24中累加器初值为0,作为选择信号送入23,选择第一个寄存器的内容在控制信号发生器25的控制下并行输出;当代码被识别后,外部控制电路通过6将对应码长送入24与累加器中内容累加,其结果若小于lm,则输出状态信号50给外部电路,并使23中以24中累加器值为序号的寄存器的内容从6并行输出;若累加结果不小于lm,则累加器内容减去lm,并发出一个脉冲信号到控制信号发生器25,25将23中第(lm+1)个寄存器内容赋予第一个寄存器,再向外部电路发出一个脉冲信号26,外部电路将待译码流中下一组lm码元输入(lm+1)个寄存器,再将23中以累加器值为序号的寄存器内容从6输出。
图11的码宇识别电路中,待译码流的前lm个元由外部电路通过数据总线34并行输入寄存器27(存贮前若干码元)和28(存贮其余码元),27的内容输出到分段首地址指针存贮器29和分段公差存贮器30,28的内容在除法器31中除以30的输出(即公差),所得商与29的输出(即首地址)在加法器32中相加,32向外部电路发出状态信号36,同时将相加结果从数据总线35并行输出,控制信号发生器33控制上述步骤的顺序进行。存贮器29、30中首地址和公差值在译码工作之前由数据总线34送入。
图12的码字识别电路中,待译码流的前lm个码元由外部电路通过数据总线39并行输入移位寄存器37,控制信号发生器38发出控制脉冲给37,使之右移若干位,然后38发出状态信号40给外部电路,同时将37中的内容从数据总线39并行输出。
在图9、图10、图11、图12中,片选信号9,地址信号10,读写信号11和时钟信号12均由外部电路提供。
本发明可推广应用到任何变长码体系的译码。
权利要求
1.一种变长码的译码方法,其特征是对于一个变长码体系,构造一个与码字相关的有序表,把码流中以待译码字为首的码元串看成一个数,通过确定其与有序表中一个有序集合的元素之间的大小顺序关系来识别被译码,其有序表是在各个码字后添加若干个零构成相同位数lm位(lm不小于最大码长)的数,再将这些数按从小到大(或从大到小)的顺序排列组成一个有序集合D′,然后将各消息单元和码长按照所对应的有序集合D′中的元素顺序进行排列而构成的。
2.一种变长码译码电路,其特征是它是由删除电路(1),码字识别电路(2),消息单元存贮器(3),码长存贮器(4)以及控制信号发生器(5)组成,待译码流分组并行进入(1),(1)的输出送入(2),(2)的输出在(5)的控制下送给(3)和(4),(4)的内容送回到(1),(3)的内容作为结果并行输出。
3.根据权利要求1所述的译码方法,其特征是在得到有序集合D′=(d′1,d′2,…,d′n}(以从小到大顺序为例)和有序表后,进行译码的步骤如下
(1)取待译码流w中的前lm个码元作为一个lm位数其前若干位必构成某代码c″;
(2)判定w′≥d′n(D′中最大元素)是否成立,若是,则c″一定是d′n所对应的代码,若不是,则在有序集合D′中寻找i,使得d′i≤w′<di+1,成立,即可确定c″一定是d′i所对应的代码;
(3)判定了c″是有序集合D′中一个确定的d′所对应的代码后,将有序表中的对应消息单元以适当方式输出(或存贮),然后将待译码流W中构成被译出码的前l′(有序表中的对应码长)个码元删去,把剩余码流看成一个新的待译码流W,转到第一步,继续进行译码,直到整个码流被译完为止。
4、根据权利要求1和3所述的译码方法,其特征是在译码步骤(2)中,利用有序表采用对分查找插入算法来识别待译码字。
5、根据权利要求1和3所述的译码方法,其特征是在译码步骤(2)中,利用有序表采用分段等差数列法来识别待译码字。
6、根据权利要求1和3所述的译码方法,其特征是在译码步骤(2)中,利用有序表采用按散列地址存贮法来识别待译码字。
7、根据权利要求2所述的译码电路,其特征是删除电路(1)是由移位寄存器(14)和(15),可预置减法计数器(16),减法计数器(17)以及控制信号发生器(18)组成,待译码流分组并行进入(14)和(15),(14)的内容作为结果并行输出;被译出码的对应码长并行进入(16),在(18)的控制下,(15)的内容串行移入(14),同时使(16)和(17)计数,(16)的输出控制(18)产生控制信号,使(14)的内容作为结果并行输出,(17)的输出控制(18)产生控制信号,使待译码流的下一组码元并行进入(15)。
8、根据权利要求2所述的译码电路,其特征是删除电路(1)是由一个包含(lm+1)个寄存器的寄存器组(23)和具有加、减法和比较功能的算术运算单元(24)以及控制信号发生器(25)组成,待译码流分组并行进入(23),已被译出码的对应码长并行送入(24),(24)的一个输出送入(23),以选择(23)中的一个寄存器内容作为并行输出;(24)的另一个输出触发(25)产生控制信号,使待译码流的下一组码元并行进入(23)。
9、根据权利要求2所述的译码电路,其特征是码字识别电路(2)是由寄存器(27)和(28),分段等差数列的分段首地址指针存贮器(29),分段公差存贮器(30),除法器(31),加法器(32)以及控制信号发生器(33)组成的用分段等差数列法识别码字的电路,待译码流的前lm个码元分为前后两部分并行分别进入(27)和(28),(27)的内容输出到(29)和(30),(28)的内容在(31)除以(30)的输出,其商在(32)与(29)的输出相加,其结果并行输出。
10、根据权利要求2所述的译码电路,其特征是码字识别电路(2)是由移位寄存器(37)和控制信号发生器(38)组成,用散列地址存贮法识别码字的电路,待译码流的前lm个码元并行进入(37),(38)的输出控制(37)进行移位,然后(37)的内容作为结果并行输出。
全文摘要
本发明提供一种变长码有序译码法及其可编程电路,它是在一个变长码体系中构造一个与码字相关的有序表,在译码过程中,把码流中以待译码字为首的码元串看成一个数,通过确定其与有序表中有序集合的元素之间的大小顺序关系来识别被译码。本发明直接对整个码字进行识别来译码,完全摆脱了逐个识别码元的泽码方法,从而能大幅度地提高译码速度。
文档编号H03M7/42GK1053335SQ9010893
公开日1991年7月24日 申请日期1990年11月2日 优先权日1990年11月2日
发明者李翔 申请人:李翔
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1