CN108155969A - 一种针对变长编码数据的解码电路 - Google Patents

一种针对变长编码数据的解码电路 Download PDF

Info

Publication number
CN108155969A
CN108155969A CN201611110867.8A CN201611110867A CN108155969A CN 108155969 A CN108155969 A CN 108155969A CN 201611110867 A CN201611110867 A CN 201611110867A CN 108155969 A CN108155969 A CN 108155969A
Authority
CN
China
Prior art keywords
decoding
result
selecting unit
variable
initial position
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201611110867.8A
Other languages
English (en)
Other versions
CN108155969B (zh
Inventor
姚颂
方绍峡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Beijing Insight Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Insight Technology Co Ltd filed Critical Beijing Insight Technology Co Ltd
Priority to CN201611110867.8A priority Critical patent/CN108155969B/zh
Publication of CN108155969A publication Critical patent/CN108155969A/zh
Application granted granted Critical
Publication of CN108155969B publication Critical patent/CN108155969B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种针对变长编码数据的解码电路,变长编码数据包括多个变长编码,且其最长编码的码字位宽为N,解码电路包括:第一行缓存和第二行缓存,依次缓存变长编码数据中2W个相继数位的值,W≥N;P个译码本单元,第i个译码本单元对2W个相继数位中第i个至第i+N‑1个数位进行解码,确定从第i位开始的一个变长编码所对应的初步译码结果,0≤i<P;M个译码结果选择单元,依次编号为0至M‑1,每个译码结果选择单元接收P个初步译码结果,并基于本轮译码起始位置分别选择一个译码本单元的初步译码结果,作为各自的译码结果,本轮译码起始位置表示本轮译码操作所针对的变长编码数据在第一行缓存中的起始位置。基于本发明可以实现对变长编码数据的并行化解码。

Description

一种针对变长编码数据的解码电路
技术领域
本发明涉及数据解码领域,特别是涉及一种针对变长编码数据的解码电路。
背景技术
变长编码给出现概率大的符号赋予较短的码字,出现概率小的符号赋予较长的码字,从而达到压缩信息冗余的目的。编码与解码过程完全可逆,因此是一种无失真的压缩编码方法。霍夫曼编码是变长编码中最重要的编码方法之一,在JPEG图像压缩、文件压缩等均扮演了重要角色。
在深度学习领域,霍夫曼编码亦可发挥重要作用。深度学习算法中网络系数数百万甚至数亿个,占用大量存储资源与带宽资源,在硬件运算中是主要瓶颈,而采用变长编码可达到数倍甚至数十倍的压缩比,可显著提高算法性能。
但是随之带来的问题是,计算过程需要实时解压,对解码速度要求非常高。现有的传统变长编码解码技术采用的均是单时钟周期解码出单个数据,解码效率较低。
因此,需要一种新的解码方案,以提高解码效率。
发明内容
本发明主要目的是提供一种针对变长编码数据的解码电路,其能够在单时钟周期解码多个数据,以提高解码效率。
根据本发明的一个方面,提供了一种针对变长编码数据的解码电路,所述变长编码数据包括多个变长编码,且其最长编码的码字位宽为N,包括:第一行缓存和第二行缓存,其数据位宽均为W,依次缓存所述变长编码数据中2W个相继数位的值,第一缓存的W个数位依次编号为0至W-1,第二缓存的W个数位依次编号为W至2W-1,其中,W≥N;P个译码本单元,依次编号为0至P-1,其中第i个译码本单元对所述2W个相继数位中第i个至第i+N-1个数位进行解码,确定从第i位开始的一个变长编码所对应的初步译码结果,其中,0≤i<P;M个译码结果选择单元,依次编号为0至M-1,每个译码结果选择单元接收所述P个初步译码结果,并基于本轮译码起始位置分别选择一个译码本单元的初步译码结果,作为各自的译码结果,所述本轮译码起始位置表示本轮译码操作所针对的变长编码数据在所述第一行缓存中的起始位置,其中,且i、P、M、N均是正整数。
在本发明的一个实施例中,译码结果选择单元选择为其指定的译码起始位置所对应的译码本单元的初步译码结果,其中,为第0个译码结果选择单元指定的译码起始位置是在上一轮译码操作中确定的本轮译码起始位置,为第j+1个译码结果选择单元指定的译码起始位置是为第j个译码结果选择单元所选择的初步译码结果对应的变长编码在所述第一行缓存中的结束位置的下一个位置,其中,0≤j<M-1。
在本发明的一个实施例中,第i个译码本单元以第i个数位为起始数位来识别变长编码,对所识别的变长编码进行译码以得到所述初步译码结果,并输出所述初步译码结果和所述变长编码的长度,第j个译码结果选择单元基于为其指定的译码起始位置和其所选择的初步译码结果所对应的变长编码的长度,确定第j+1个译码结果选择单元的译码起始位置,并发送给第j+1个译码结果选择单元。
在本发明的一个实施例中,在第k个译码结果选择单元所选择的初步译码结果对应的变长编码的起始位置在所述第一行缓存,而其结束位置在第二行缓存的情况下,所述第k个译码结果选择单元发出跨行信号,其中,0≤k<M。
在本发明的一个实施例中,该解码电路还可以包括译码结果整合单元,接收M个译码结果选择单元所选择的译码结果,整合本轮译码结果集合,并确定下一轮译码起始位置。
在本发明的一个实施例中,译码结果整合单元还可以包括:译码结果获取模块,用于从M个译码结果选择单元获取本轮译码结果集合;以及下一轮起始地址确定模块,用于确定下一轮起始地址,其中,在M个译码结果选择单元均没有发出跨行指令的情况下,译码结果获取模块获取M个译码结果选择单元所选择的译码结果,作为本轮译码结果集合,并且下一轮起始地址确定模块基于为最后一个译码结果选择单元指定的译码起始位置及其所对应的变长编码的长度,确定下一轮起始地址;在第k个译码结果选择单元发出了跨行指令的情况下,译码结果获取模块获取第0个至第k个译码结果选择单元所选择的译码结果,作为本轮译码结果集合,并且下一轮起始地址确定模块基于为第k个译码结果选择单元指定的译码起始位置及其所对应的变长编码的长度,确定下一轮起始位置。
在本发明的一个实施例中,译码结果整合单元还可以包括:跨行使能模块,在第k个译码结果选择单元发出了跨行指令的情况下,向第一行缓存和第二行缓存发出跨行指令,响应于跨行指令,将第二行缓存中的数据转移到第一行缓存中,并且在第二行缓存中写入后续变长编码数据。
在本发明的一个实施例中,该解码电路还可以包括先入先出队列,用于从外部存储器输入变长编码数据,并且响应于跨行指令,向第二行缓存提供变长编码数据。
在本发明的一个实施例中,该解码电路还可以包括输出寄存器,用于寄存译码结果集合、跨行指令、下一轮起始地址,以向外输出译码结果,向第一行缓存、第二行缓存以及先入先出队列发送跨行指令,并向第0个译码结果选择单元发送下一轮译码起始地址。
在本发明的一个实施例中,每个译码本单元还输出标识其是否成功识别出变长编码的译码有效性标识,每个译码结果选择单元向译码结果整合单元输出其所选择的译码本单元输出的译码有效性标识,译码结果整合单元还包括:译码错误检查模块,基于译码有效性标识检查本轮译码操作是否出错,并在确定译码操作出错的情况下,经由输出寄存器发出译码错误信号。
综上,本发明采取“投机机制”,按照顺序依次以每个数位为起始数位,使用相应的译码本单元对该起始数位前向N个数位范围(包括该起始数位,数位范围也可以大于N)的编码数据进行解码。若译码本单元未找到匹配编码,则表明“投机失败”,输出无效信号,若找到匹配码本,则表明“投机成功”,可以输出包含变长编码长度、解码值、解码成功标识的初步解码结果,以此实现对变长编码数据的并行解码。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1是示出了根据本发明一实施例的解码方法的示意图。
图2是示出了根据本发明一实施例的解码电路的示意性方框图。
图3是示出了根据本发明另一实施例的解码电路的示意性方框图。
图4是示出了根据本发明另一实施例的解码电路的示意性方框图。
图5是示出了根据本发明一实施例的基于跨行指令更新行缓存的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本发明主要提出了一种针对变长编码的解码电路,为了便于更好地理解本发明,首先就本发明的发明机理进行简要说明。
如背景技术部分及本领域技术人员所公知,变长编码是一种根据数据出现的概率进行编码的方法,其主要编码思想是对出现概率大的数据赋予较短的码字位宽(即编码所包含的数位个数,下同),通过改变码字位宽达到压缩信息冗余的目的。
在对变长编码数据进行解码时,由于不同的数据可能被编码成不同的码字位宽,在前一个数据未被解码时,后一个数据的编码起始位置不能确定,使得无法对变长编码数据进行并行解码。因此,现有的解码方法需要逐个对其进行解码,解码效率很低。
针对这种问题,本发明人在深入研究后发现,可以采取“投机”的方法来实现对变长编码数据的并行解码。具体地,以图1为例,对于由一定数位构成的变长编码数据,可以采取“投机”的方法,假设每个数位(例如数位1、2、3、4……)均为编码起始位置,以每个数位为编码起始位置对该数位向前的n个数位范围(包括编码起始位置)并行执行解码处理(参见图中解码处理1、2、3、4)。
其中,解码成功则表示“投机成功”,假设的起始数位确为编码起始位置,解码失败则表示“投机失败”,假设的起始数位为错误的编码起始位置。对于“投机成功”的解码处理来说,可以确定其所对应的n个数位范围内的编码起始位置和变长编码的长度,基于该编码起始位置和变长编码可以确定下一个编码起始位置。
由此,对于多个并行解码处理中最后一个“投机成功”的解码处理来说,可以根据该解码处理的解码结果,确定编码起始位置以及变长编码长度,由此可以进一步确定后续待解码的变长编码数据中的下一个编码起始位置。这样就可以以确定的下一个编码起始位置为初始位置继续对后续的变长编码数据并行执行多个解码处理,以此类推,可以实现对变长编码数据的并行化解码,大大提高解码效率。
基于这种思路,本发明提出了一种针对变长编码数据的解码电路。图2是示出了根据本发明一实施例的解码电路的功能框图。本发明的解码电路可以用来对变长编码数据(例如霍夫曼编码数据)进行解码,为了便于描述,变长编码数据的最长编码的码字位宽可以设为N,这里的N以及下文将要述及的符号i、P、M均是正整数。
参见图2,本实施例的解码电路包括第一行缓存11、第二行缓存12、P个译码本单元以及M个译码结果选择单元。
第一行缓存11和第二行缓存12用于缓存变长编码数据。其中,第一行缓存和第二行缓存的数据位宽均为W,依次缓存变长编码数据中2W个相继数位的值。为了便于描述,这里设第一行缓存的W个数位依次编号为0至W-1,第二行缓存的W个数位依次编号为W至2W-1。这里如果W小于N,那么,就有可能有一个变长编码开始于第一行的最后一个,到第二行缓存结束,该变长编码都还没有结束,这样就不能实现解码了。因此需要保证W≥N,以使得每行缓存至少包含一个完整的编码数据。
P个译码本单元构成译码本阵列,译码本阵列中的译码本单元可以并行执行译码操作。如图2所示,可以将P个译码本单元依次编号为dec-0至dec-(P-1)。
译码单元dec-i可以对第一行缓存和第二行缓存中的2W个相继数位中第i个至第i+N-1个数位进行解码,确定从第i位开始的从第i+N-1位结束的一个变长编码所对应的初步译码结果,其中,0≤i<P。
也就是说,译码本单元dec-0可以对第0个至第N-1个数位进行解码,译码本单元dec-1可以对第1个至第N个数位进行解码,译码本单元dec-2可以对第2个至第N+1个数位进行解码,以此类推。其中,变长编码的最长位宽是N,所以译码本单元一次译码的对象最多是N位宽。或者说,译码本单元的译码能力是基于变长编码的最长位宽设定的。
这里,译码本单元的个数P可以小于或等于第一行缓存11和第二行缓存12的数据位宽W。
译码本单元所确定的初步译码结果为假设当前数位为起始数位,在前向(包括该起始数位)M个数位范围内的译码结果。若译码本单元未找到匹配编码,则表明该起始数位并非正确的编码起始位置,则输出无效信号,若找到匹配编码,则表明该起始数位为正确的编码起始位置,此时则可以输出匹配编码的编码长度(在有多个匹配编码的情况下,可以输出多个匹配编码的长度)、解码后的数据(在有多个匹配编码的情况下,可以输出多个解码数据)以及解码成功标识等信息。
由此,本发明采取“投机机制”,按照顺序依次以每个数位为起始数位,使用相应的译码本单元对该起始数位前向N个数位范围(包括该起始数位,数位范围也可以大于N)的编码数据进行解码。若译码本单元未找到匹配编码,则表明“投机失败”,输出无效信号,若找到匹配码本,则表明“投机成功”,可以输出包含变长编码长度、解码值、解码成功标识的初步解码结果。
这里需要说明的是,对于“投机成功”的N个数位范围,如果其中存在多个变长编码,译码本单元可以优选地仅对第一个变长编码进行解码。这是因为如果前面的一个译码本单元译出了第二个变长编码,而且其也开始于第一行缓存,那么后面也会有一个译码本单元会译出这个代码,造成解码数据的重复。由此,每个译码本单元可以被配置为在每轮译码操作中仅能够识别第一个变长编码。
其中,P个译码本单元可以执行多轮译码操作,对于每轮译码操作来说,可以根据本轮最后一个译码成功的译码本单元的初步译码结果,得到下一轮译码操作的起始数位,由此就可以使用译码本阵列中的P个译码本单元以所确定的下一轮译码起始数位开始继续对后续的变长编码数据并行地执行译码操作。这里,确定下一轮译码操作的起始数位的具体原理及实现将在下文说明,这里暂不赘述。
需要说明的是,在确定下一轮译码操作的起始数位位于第二行缓存中时,第一行缓存中的变长编码数据已经解码完成,此时,可以暂停下一轮译码操作,将第二行缓存中的变长编码数据写入第一行缓存,并在第二行缓存中写入新的变长编码数据,然后再开始下一轮的译码操作。这样,可以及时写入新的变长编码数据,使得译码本阵列中的译码本单元均可以并行进行译码操作。
其中,译码本单元可以优选地被配置为仅以第一行缓存11中的数位为起始数位执行译码操作,在其所对应的起始数位位于第二行缓存12中时,停止译码操作。
M个译码结果选择单元构成选择单元阵列(也可以称为涟漪阵列),如图2所示,可以将M个译码结果选择单元编号为sel-0至sel-(M-1)。选择单元阵列中的每个译码结果选择单元可以接收来自P个译码本单元的P个初步译码结果,并基于本轮译码起始位置分别选择一个译码本单元的初步译码结果,作为各自的译码结果。其中,本轮译码起始位置表示本轮译码操作所针对的变长编码数据在第一行缓存中的起始位置。
P个译码本单元可以执行多轮译码操作,对于每轮译码操作所得到的P个初步译码结果,每个译码结果选择单元可以优选地从中选取译码成功的初步译码结果。
这里,可以为每个译码结果选择单元指定一个译码起始位置,这样,译码结果选择单元就可以选择为其指定的译码起始位置所对应的初步译码结果。其中,这里所指定的译码起始位置优选地是“投机成功”的起始位置。
具体来说,对于译码结果选择单元sel-0来说,为其制定的译码起始位置可以是在上一轮译码操作中确定的本轮译码起始位置。也就是说,可以将上一轮识别的最后一个变长编码的结束位置的下一个数位确定为本轮译码起始位置,或者说,还可以根据最后一个变长编码的起始位置+编码长度来确定本轮译码起始位置。
在确定了译码结果选择单元sel-0所对应的译码起始位置后,就可以将基于译码结果选择单元sel-0所选择的初步译码结果所对应的变长编码在第一行缓存中的结束位置的下一个位置指定为译码结果选择单元1的译码起始位置,以此类推,就可以得到每个译码结果选择单元的译码起始位置。
由此,为第j+1个译码结果选择单元指定的译码起始位置是为第j个译码结果选择单元所选择的初步译码结果对应的变长编码在第一行缓存中的结束位置的下一个位置,其中,0≤j<M-1。
也就是说,第j个译码结果选择单元可以基于为其指定的译码起始位置和其所选择的初步译码结果所对应的变长编码的长度,确定第j+1个译码结果选择单元的译码起始位置,并发送给第j+1个译码结果选择单元。其中,确定第j+1个译码结果选择单元的译码起始位置的公式可以记为Sj+1=Sj+Lj,Sj为第j个译码结果选择单元的译码起始位置,Lj为第j个译码结果选择单元所选择的初步译码结果所对应的变长编码的长度。
这样,对于每轮译码操作得当的P个初步译码结果,M个译码结果选择单元均可以从中选出“投机成功(即译码成功)”的初步译码结果,通过后续对译码结果选择单元选择的初步译码结果进行整合就可以得到解码数据。
以上以一个译码结果选择单元选取一个初步译码结果为例进行了说明,应该知道,对于每轮译码操作下的P个初步译码结果来说,在译码结果选择单元的数量M小于译码成功的初步译码结果的数量时,每个译码结果选择单元还可以选择多个初步译码结果。也就是说,M个译码结果选择单元可以循环执行多轮选取操作,此时,可以将译码本单元dec-(P-1)所选择的初步译码结果对应的变长编码在第一行缓存中的结束位置的下一个位置确定为译码本单元dec-0的下一个译码起始位置。
正如前文所述,为了更好地实现译码本阵列中的P个译码本单元可以并行地执行多轮译码操作,还可以进行“跨行”检测。
这里,可以在第k个译码结果选择单元所选择的初步译码结果对应的变长编码的起始位置在第一行缓存,而其结束位置在第二行缓存的情况下,第k个译码结果选择单元发出跨行信号,其中,0≤k<M。此时,第k+1至第M-1个译码结果选择单元可以不再选择译码结果(因为其起始地址已到下一行,而译码本单元没有从下一行开始译码的)。
图3示出了根据本发明另一实施例的解码电路的功能框图。
参见图3,本实施例的解码电路除了包括图2所示的全部功能模块外,还可以包括译码结果整合单元13。其中,关于第一行缓存11、第二行缓存12、P个译码本单元以及M个译码结果选择单元可以参见上文结合图2的相关描述,这里不再赘述。
译码结果整合单元13可以接收M个译码结果选择单元所选择的译码结果,整合本轮译码结果集合,并确定下一轮译码起始位置。
简要来说,译码结果整合单元13可以对接收到的M个译码结果选择单元所选择的译码结果进行整合,以得到本轮译码操作所得到的解码数据,并且可以根据本轮译码结果集合中最后一个译码成功的初步译码结果所对应的变长编码的长度和译码起始位置,确定下一轮译码起始位置。
如图3所示,译码结果整合单元13可以包括译码结果获取模块131和下一轮起始地址确定模块133。
译码结果获取模块131可以从M个译码结果选择单元获取本轮译码结果集合,下一轮起始地址确定模块133可以确定下一轮起始地址。
其中,在M个译码结果选择单元均没有发出跨行指令的情况下,译码结果获取模块131获取M个译码结果选择单元所选择的译码结果,作为本轮译码结果集合,并且下一轮起始地址确定模块133基于为最后一个译码结果选择单元指定的译码起始位置及其所对应的变长编码的长度,确定下一轮起始地址。即下一轮起始位置Snext=SM+LM,其中,SM是为最后一个译码结果选择单元指定的译码起始位置,LM是对应的变长编码的长度。
在第k个译码结果选择单元发出了跨行指令的情况下,译码结果获取模块131可以获取第0个至第k个译码结果选择单元所选择的译码结果,作为本轮译码结果集合,并且下一轮起始地址确定模块133基于为第k个译码结果选择单元指定的译码起始位置及其所对应的变长编码的长度,确定下一轮起始位置。在跨行时,可以将第二行缓存12中的数位转移到第一行缓存11中,因此所确定的下一轮起始位置Snext=Sk+Lk–W,其中,Sk是为第k译码结果选择单元指定的译码起始位置,Lk是对应的变长编码的长度。
在确定了下一轮译码起始位置后,就可以由译码本阵列中的译码本单元继续并行执行下一轮的译码操作。
参见图3,译码结果整合单元13还可以包括跨行使能模块135。在第k个译码结果选择单元发出了跨行指令的情况下,跨行使能模块135可以向第一行缓存11和第二行缓存12发出跨行指令,响应于跨行指令,可以将第二行缓存12中的数据转移到第一行缓存11中,并且在第二行缓存12中写入后续变长编码数据。
由此,作为本发明的一个可选实施例,解码电路还可以包括先入先出队列,用于从外部存储器输入变长编码数据,并且响应于跨行指令,向第二行缓存提供变长编码数据。
如图3所示,解码电路还可以包括输出寄存器14。输出寄存器4可以寄存译码结果集合、跨行指令、下一轮起始地址,以向外输出译码结果,向第一行缓存、第二行缓存以及先入先出队列发送跨行指令,并向译码结果选择单元sel-0发送下一轮译码起始地址。
其中,每个译码本单元还可以输出标识其是否成功识别出变长编码的译码有效性标识,每个译码结果选择单元向译码结果整合单元输出其所选择的译码本单元输出的译码有效性标识。如图3所示,译码结果整合单元13还可以包括译码错误检查模块137。译码错误检查模块137可以基于译码有效性标识检查本轮译码操作是否出错,并在确定译码操作出错的情况下,经由输出寄存器14发出译码错误信号。这里,如果某个译码结果选择单元所选择的译码本单元没有识别出变长编码,则说明译码过程出错。
图4是示出了根据本发明一实施例的解码电路的功能模块之间的信号传输示意图。
图5是示出了根据本发明一实施例的基于跨行指令更新行缓存的示意图。
参见图4、图5,译码本阵列16可以并行地以第一行缓存11中的数位为起始数位执行译码操作,选择阵列17可以从译码本阵列16中选取译码成功的初步译码结果,并交由译码结果整合单元13进行整合。整合得到的译码结果集合、跨行指令、下一轮起始地址均可以由输出寄存器14存储。输出寄存器14可以向先入先出队列15发送跨行指令。先入先出队列15中可以从外部输入变长编码数据。响应于跨行指令,第二行缓存12中的数据可以转移到第一行缓存11中,并可以由先入先出队列15将新的变长编码数据写入第二行缓存12。这样,译码本阵列16可以对更新后的缓存中的变长编码数据继续并行地进行译码操作。
上文中已经参考附图详细描述了根据本发明的解码电路。综上,本发明的解码电路可以实现对变长编码的并行化解码,例如可以对霍夫曼编码进行并行化解码。由此,本发明可以被配置为一种多发射霍夫曼解码电路。其中,本发明的解码电路中的译码本单元的个数第一行缓存、第二行缓存的数据位宽以及译码结果选择单元的个数均可以根据实际情况进行设定。由此本发明的解码电路的并行化的运行能力可以根据实际需要进行设置,电路扩展与裁剪容易。
此外,根据本发明的解码电路的解码机理还可以实现为一种计算机程序,该计算机程序包括用于实现本发明的解码电路中各功能模块的操作的计算机程序代码指令。或者,根据本发明还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的上述方法中限定的上述功能的计算机程序。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (10)

1.一种针对变长编码数据的解码电路,所述变长编码数据包括多个变长编码,且其最长编码的码字位宽为N,包括:
第一行缓存和第二行缓存,其数据位宽均为W,依次缓存所述变长编码数据中2W个相继数位的值,第一缓存的W个数位依次编号为0至W-1,第二缓存的W个数位依次编号为W至2W-1,其中,W≥N;
P个译码本单元,依次编号为0至P-1,其中第i个译码本单元对所述2W个相继数位中第i个至第i+N-1个数位进行解码,确定从第i位开始的一个变长编码所对应的初步译码结果,其中,0≤i<P;
M个译码结果选择单元,依次编号为0至M-1,每个译码结果选择单元接收所述P个初步译码结果,并基于本轮译码起始位置分别选择一个译码本单元的初步译码结果,作为各自的译码结果,所述本轮译码起始位置表示本轮译码操作所针对的变长编码数据在所述第一行缓存中的起始位置,其中,且i、P、M、N均是正整数。
2.根据权利要求1所述的解码电路,其中,
所述译码结果选择单元选择为其指定的译码起始位置所对应的译码本单元的初步译码结果,
其中,为第0个译码结果选择单元指定的译码起始位置是在上一轮译码操作中确定的本轮译码起始位置,
为第j+1个译码结果选择单元指定的译码起始位置是为第j个译码结果选择单元所选择的初步译码结果对应的变长编码在所述第一行缓存中的结束位置的下一个位置,其中,0≤j<M-1。
3.根据权利要求2所述的解码电路,其中,
第i个译码本单元以第i个数位为起始数位来识别变长编码,对所识别的变长编码进行译码以得到所述初步译码结果,并输出所述初步译码结果和所述变长编码的长度,
第j个译码结果选择单元基于为其指定的译码起始位置和其所选择的初步译码结果所对应的变长编码的长度,确定第j+1个译码结果选择单元的译码起始位置,并发送给第j+1个译码结果选择单元。
4.根据权利要求3所述的解码电路,其中,
在第k个译码结果选择单元所选择的初步译码结果对应的变长编码的起始位置在所述第一行缓存,而其结束位置在第二行缓存的情况下,所述第k个译码结果选择单元发出跨行信号,其中,0≤k<M。
5.根据权利要求4所述的解码电路,还包括:
译码结果整合单元,接收所述M个译码结果选择单元所选择的译码结果,整合本轮译码结果集合,并确定下一轮译码起始位置。
6.根据权利要求5所述的解码电路,其中,所述译码结果整合单元包括:
译码结果获取模块,用于从所述M个译码结果选择单元获取本轮译码结果集合;以及
下一轮起始地址确定模块,用于确定下一轮起始地址,
其中,在所述M个译码结果选择单元均没有发出跨行指令的情况下,所述译码结果获取模块获取所述M个译码结果选择单元所选择的译码结果,作为本轮译码结果集合,并且所述下一轮起始地址确定模块基于为最后一个译码结果选择单元指定的译码起始位置及其所对应的变长编码的长度,确定下一轮起始地址;
在第k个译码结果选择单元发出了跨行指令的情况下,所述译码结果获取模块获取第0个至第k个译码结果选择单元所选择的译码结果,作为本轮译码结果集合,并且所述下一轮起始地址确定模块基于为所述第k个译码结果选择单元指定的译码起始位置及其所对应的变长编码的长度,确定下一轮起始位置。
7.根据权利要求6所述的解码电路,其中,所述译码结果整合单元还包括:
跨行使能模块,在第k个译码结果选择单元发出了跨行指令的情况下,向所述第一行缓存和所述第二行缓存发出跨行指令,响应于所述跨行指令,将所述第二行缓存中的数据转移到所述第一行缓存中,并且在所述第二行缓存中写入后续变长编码数据。
8.根据权利要求7所述的解码电路,还包括:
先入先出队列,用于从外部存储器输入变长编码数据,并且响应于所述跨行指令,向所述第二行缓存提供所述变长编码数据。
9.根据权利要求8所述的解码电路,还包括:
输出寄存器,用于寄存所述译码结果集合、所述跨行指令、所述下一轮起始地址,以向外输出译码结果,向所述第一行缓存、所述第二行缓存以及所述先入先出队列发送所述跨行指令,并向第0个译码结果选择单元发送所述下一轮译码起始地址。
10.根据权利要求9所述的解码电路,其中,
每个所述译码本单元还输出标识其是否成功识别出变长编码的译码有效性标识,
每个译码结果选择单元向所述译码结果整合单元输出其所选择的译码本单元输出的译码有效性标识,
所述译码结果整合单元还包括:
译码错误检查模块,基于所述译码有效性标识检查本轮译码操作是否出错,并在确定译码操作出错的情况下,经由所述输出寄存器发出译码错误信号。
CN201611110867.8A 2016-12-02 2016-12-02 一种针对变长编码数据的解码电路 Active CN108155969B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611110867.8A CN108155969B (zh) 2016-12-02 2016-12-02 一种针对变长编码数据的解码电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611110867.8A CN108155969B (zh) 2016-12-02 2016-12-02 一种针对变长编码数据的解码电路

Publications (2)

Publication Number Publication Date
CN108155969A true CN108155969A (zh) 2018-06-12
CN108155969B CN108155969B (zh) 2021-02-19

Family

ID=62468290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611110867.8A Active CN108155969B (zh) 2016-12-02 2016-12-02 一种针对变长编码数据的解码电路

Country Status (1)

Country Link
CN (1) CN108155969B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1889366A (zh) * 2006-07-13 2007-01-03 浙江大学 哈夫曼解码方法
EP2154897A2 (en) * 2008-08-15 2010-02-17 Fujitsu Limited Video coding apparatus and method
CN104349165A (zh) * 2014-09-16 2015-02-11 上海通途半导体科技有限公司 高性能变长编解码方法及装置
US20160255365A1 (en) * 2013-07-08 2016-09-01 Renesas Electronics Corporation Video encoder and operation method thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1889366A (zh) * 2006-07-13 2007-01-03 浙江大学 哈夫曼解码方法
EP2154897A2 (en) * 2008-08-15 2010-02-17 Fujitsu Limited Video coding apparatus and method
US20160255365A1 (en) * 2013-07-08 2016-09-01 Renesas Electronics Corporation Video encoder and operation method thereof
CN104349165A (zh) * 2014-09-16 2015-02-11 上海通途半导体科技有限公司 高性能变长编解码方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HAKBEOM JANG: ""Practical Speculative Parallelization of Variable-Length Decompression Algorithms"", 《LCTES’13》 *
司马苗等: ""高吞吐率可变长码解码器的设计与实现"", 《上海交通大学学报》 *

Also Published As

Publication number Publication date
CN108155969B (zh) 2021-02-19

Similar Documents

Publication Publication Date Title
CN106797446B (zh) 基于存储器的历史搜索
US9454552B2 (en) Entropy coding and decoding using polar codes
RU2629440C2 (ru) Устройство и способ для ускорения операций сжатия и распаковки
CN102244518A (zh) 并行解压缩的硬件实现的系统及方法
CN107565971B (zh) 一种数据压缩方法及装置
CN100525450C (zh) 一种实现霍夫曼译码的方法和装置
CN109889205B (zh) 编码方法及系统、解码方法及系统、编解码方法及系统
WO2007149358A1 (en) Data compression
JP7321208B2 (ja) ポーラ符号のレートマッチング方法及び装置
CN110784225A (zh) 数据压缩、解压方法及相关装置、电子设备、系统
CN103746706B (zh) 基于双游程交替编码的测试数据压缩与解压缩方法
CN104038233A (zh) 基于相邻位异或运算的测试数据压缩与解压缩方法
CN106849956A (zh) 压缩方法、解压缩方法、装置和数据处理系统
CN103078646B (zh) 字典查询压缩、解压缩方法及其装置
CN104243095A (zh) 一种卷积码与线性分组码的码字类型盲识别方法
CN103746704B (zh) 基于双游程交替编码的芯片测试数据传输方法
CN108155969A (zh) 一种针对变长编码数据的解码电路
CN110073604A (zh) 用于硬件解压缩引擎的多码元、多格式、并行码元解码器
US9455742B2 (en) Compression ratio for a compression engine
CN102298782B (zh) 用于无损视频压缩的参数估计的系统、方法
CN111900999B (zh) 一种面向卫星非连续通信的高性能极化编码方法及编码器
CN102751994B (zh) 一种基于两个有限群符号的短码长分组码译码器装置
CN110096624B (zh) 一种编解码方法、装置、计算机设备及存储介质
RU153302U1 (ru) Кодирующее устройство
CN112839230A (zh) 图像数据压缩装置及图像数据解压缩装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180608

Address after: 100083, 17 floor, four building four, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant after: Beijing deep Intelligent Technology Co., Ltd.

Address before: 100083, 8 floor, 807 building, four building, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: Beijing insight Technology Co., Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190926

Address after: 2100 San Jose Rojack Avenue, California, USA

Applicant after: XILINX INC

Address before: 100083, 17 floor, four building four, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: Beijing Shenjian Intelligent Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant