CN101043625B - 用于高速解压缩数字数据的装置和方法 - Google Patents
用于高速解压缩数字数据的装置和方法 Download PDFInfo
- Publication number
- CN101043625B CN101043625B CN 200710088795 CN200710088795A CN101043625B CN 101043625 B CN101043625 B CN 101043625B CN 200710088795 CN200710088795 CN 200710088795 CN 200710088795 A CN200710088795 A CN 200710088795A CN 101043625 B CN101043625 B CN 101043625B
- Authority
- CN
- China
- Prior art keywords
- bit stream
- bit
- place
- addition
- carry out
- 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.)
- Expired - Fee Related
Links
- 230000006837 decompression Effects 0.000 title claims abstract description 10
- 238000000034 method Methods 0.000 title claims description 25
- 238000003860 storage Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 abstract description 10
- 239000003550 marker Substances 0.000 description 9
- 238000013139 quantization Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000013144 data compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 241001269238 Data Species 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000011002 quantification Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
以并行和流水线方式执行压缩数据的解压缩操作,以便实时产生存储器的地址,而不是使用大的查询表。因此将这样做的逻辑电路减少到能够由现场可编程门阵列(FPGA)的适当编程而形成的地步,同时实现了处理速度的实质提高,超过提高时钟速率导致的速度提高。
Description
技术领域
一般来说,本发明涉及对压缩数据进行高速解压缩,更确切地说,对JPEG压缩的图像数据进行高速解压缩,以由打印机或显示器进行图像再现。
背景技术
以数字形式存储和传输数据正变得日益广泛,至少是因为数字信号遭受噪声干扰更少,往往能够纠错,归档存储介质更高效和经济,对数字信号进行传输和处理的电子基础设施很容易获得。不过,某些类型的数据,比如图像数据,当以数字形式存放时,表示单一图像所需要的数据字节数目往往也十分大;因此增加了容纳这种相对海量数据所需的存储介质成本或者传输时间。
作为这些问题的解决方案,近年来已经开发了众多的数据压缩技术。尤其是联合图像专家组(JPEG)已经开发出的技术已经成为图像数据压缩的工业标准。这种技术对于给定的数据压缩程度,为控制压缩数据结果尺寸提供了真正的灵活性,并且使重建后图像的保真度最大化。JPEG可以在硬件或软件中或其组合中实现。一般来说,由于JPEG压缩或解压/重建的数据处理相对复杂,所以对于某些特别苛求的应用,比如高速打印机或复印机或显示器,最初优选了特殊硬件并且保持至今,尽管JPEG当前更经常地在速度不太关键的软件中实现。不过,在速度对于从压缩数据重建图像来说很关键的情况下,专用硬件仍然是解压缩的优选。
有许多软件和硬件解决方案使用非常不同的算法管理解压缩,但是它们都导致了更多的存储器需求和更大的电路数量。首个JPEG芯片由启动的公司C-Cube在1989年生产,是他们进入MPEG硬件的跳板。C-Cube已不再提供JPEG硬件。先前提供的几种其他JPEG芯片已经完成了使命,并且无论如何不再能够满足现今对处理速度的需要。此外,因为满足所需解压处理速度的应用专用集成电路(ASIC)将需要相对大的芯片来提供足够的存储器,要设计出它们是困难而昂贵的,并且由于需要特殊解压处理速度的应用数量相对有限,当前认为这种大型ASIC在经济上不可行。不过,作为ASIC的替代,大尺寸、加速的所谓现场可编程门阵列(FPGA)最近已经面世,并且提供FPGA的成本勉强可以接受,因为它们都以可以自由编程的通用形式制作,从而适用的应用范围广泛。为了在图像数据高速解压缩应用中使用,已经研究了这种大型高时钟速度的FPGA。FPGA实质上是多种逻辑门的阵列,这些逻辑门可以有效连接在一起,以根据优选情况下非易失性存储器结构中存储的信号执行所期望的集合功能。
遗憾的是已经发现,即使以当前FPGA中可得到的提高的时钟速率,JPEG Huffman代码(以及使用其他压缩技术的对应代码)的解码处理也可能不会按所需要的速度完成。此外,在这种代码(它必然可变)的解码过程中使用的查询表通常也十分大,无法被当前可得到的又小、又经济的FPGA所容纳。
发明内容
所以,本发明的一个目的是对JPEG Huffman代码以及其他数据压缩技术对应代码的解码时提高处理速度,超过因提高时钟速率带来的处理速度的提高,并且能够在小于现今可用FPGA时钟速率的FPGA上实现。本发明的另一个目的是以容易适应许多操作系统环境的方式和硬件实现改进的JPEG解压缩。通过使用众所周知的工业组件——FPGA,它非常适合本发明的预定目的,至少部分地实现了这种目的。因为这种技术对这种一般化的FPGA设备众所周知,在此介绍的本发明可以容易地由感兴趣的人们实现和广泛采用。为了实现本发明的这些和其他目的,本发明通过实时产生Huffman表的索引(而不是从大的查询表获得它们)减少了解码JPEG Huffman代码所需的存储器容量,使之将适合于较小的(如不太贵的)现场可编程门阵列(FPGA)或者较小的ASIC模块。此外,它使解压过程流水线化,方式为以该技术将运行的最快时钟速率输出一个字节(或样点)数据。本发明解码JPEG Huffman代码时不使用大的查询表,所以本设计能够安装在FPGA上。解压器接受JPEG压缩数据,删除填充的0x00字节,然后同时查看一切可能的Huffman代码字并选择代码长度N适用的Huffman代码字。解码器同时(即并行地)产生全部十六个可能的索引进入Huffman符号表,每个可能的代码长度都对应一个。一旦已经确定了代码长度N,它就挑选该索引。从JPEG定义Huffman表标记符创建的Huffman符号表中找到该代码长度的解码后JPEGRS符号。与此同时,代码长度N用于将该代码字之后的输入压缩数据移位至确定非零量化变换系数值的“附加位”。(4位零系数运行计数和创建实际的非零变换系数所需的4位数量的附加位。)附加位的尺寸(0-11)取自Huffman表输出的低4位并且用于产生量化系数。虽然在这里参考JPEG Huffman表公开本发明,但是它也能够用于其他规范的Huffman表。1位和2位代码字的特定情况保证了在一个周期中处理1位代码,在两个周期中处理2位代码,在三个周期中处理全部其他代码(3-32位)。
标定的量化表数据具有JPEG量化表值,预标定为准备进行标定的离散余弦反变换(IDCT)的适当值。然后这种数据与量化系数相乘并通过按锯齿表存储它而使其去锯齿。然后这些去量化的变换系数用于列和行的一维(1D)离散余弦反变换(IDCT),以产生重构的图像数据。
总之,为了达到上述和其他有价值的效果而提供的方法包括以下步骤:接收输入的位流;执行比较以确定代码字长;与执行所述比较步骤并行地执行偏移量和所述位流的位数的相加;选择执行相加步骤的结果;以及执行比较的步骤完成后,丢弃所述位流的等于所述代码字的长度的位数;并且FPGA能够如此编程。
附图说明
参考附图根据本发明优选实施例的以下详细说明,将更好地理解本发明的上述和其他目的、方面和优点,其中:
图1是框图,展示了根据本发明的设备;
图2A、2B和2C显示了图1中设备一部分的细节,尤其是执行解码和系数生成的部分;
图3A、3B显示了图1中设备一部分的细节,尤其是执行代码长度选择的部分;
图4显示了图1设备中一部分的细节,尤其是执行Huffman地址生成并行实施的部分;
图5展示了进入IDCT列缓冲区的控制和输入。
具体实施方式
尽管后文将参考显示了本发明优选实施例的附图,更全面地介绍本发明,但是在以下介绍的开始应当理解,适当领域的技术人员可以修改这里介绍的本发明,同时仍然实现本发明的良好结果和有价值效果。所以,以下描述应当理解为面向适当领域技术人员的宽泛的教导公开,而不应当理解为限制本发明。
JPEG Huffman代码被设计为“规范的”Huffman码。这意味着长度大于N的代码字的N位前缀在数学上大于N位或小于N位的一切的代码字。(注意,这假设了最短的代码字以0开始的惯例,如果最短的代码字以1开始则相反。)规范Huffman码的这种特征允许从每个代码字的边界判断出每个代码字中的位数,而前者又可以从该代码的若干位判断出,即使在连续位流中未表明该代码的边界时也不例外。本发明对足以包含最大长度的代码字的许多邻近位使用并行比较而充分利用了这种特征。这就假设了比较是针对在N位寄存器中左对齐代码进行的,来自后面压缩数据的任意位填充这些较短的代码到N位长度。这种规范的格式允许从以长度为i表明代码字序数的16个值(Li)(如每个相应位长代码字的序数,其中i=1,2,...16)和包含实际符号多达256个字节的表中产生Huffman码。这种信息经由JPEG定义Huffman表(DHT)标记符发送到解码器(参见JPEG:StillImage Data Compression Standard,Pennebaker and Mitchell,VanNostrand Reinhold,New York,1993中的116-117、392-394页,其全部内容在此引用作为参考)。
随着JPEG Huffman代码字变得更长,代码倾向于具有越来越多的前导‘1’,如以上引用文本509-517页中的示范DC和AC Huffman表中所展示。注意,JPEG代码被设计为永不使用全部‘1’代码。因为标记符总是以0xFF字节开始,所以这是一种非法的代码,并且使得容易识别下一个标记符。由于JPEG代码字偶尔会产生这些0xFF字节,因此以熵编码数据中每个这样的字节都在其后填充着0x00字节。这些填充的字节需要在熵解码前删除。
与本主题发明共同所有的在先专利是Mitchell等人的美国专利U.S.Pat.6,373,412,其全部内容在此引用作为参考,它公开了快速并行JPEG Huffman解码。本发明的Huffman解码部分改进了这项在先公开。该在先公开显示了确定Huffman编码的代码长度N,通过将压缩数据的1到16位对照大于所述1到16位的下一个码长的1到16位前缀进行并行比较。本发明认识到只有每个代码的后8位才可能不为1。这就允许通过确认前导位都是1并且对于大于8位的潜在代码仅仅比较最后8位而削减比较器的尺寸。
一旦知道了代码字的尺寸,该在先公开还计算索引作为后续操作。本发明并行地计算全部16种可能的索引,以完全在可用FPGA容量内的最少硬件确定N。此外,本发明能够利用对于基线JPEG输出索引最多可能是8位的事实,并且在长度大于8时使用以8位为模的计算。在N大于8时,Huffman表中预先计算的偏移量不同于在先前提到的美国专利U.S.Pat.6,373,412中所提议的偏移量。
该在先公开进一步假设AC和DC表是独立的。本发明将在DHT标记符中发现的(如识别的)DC表中的符号加载到表的开始位置,然后它们后面紧跟着AC表中具有相同名称的若干符号。(JPEGHuffman表的编号为0、1、2、3。在基线JPEG中只允许表0和表1)。向AC预计算的偏移量加入了DC表空间。分配的空间固定为256个字节。由于对于基线Huffman AC表需要不足160字节,而且DC表最多取11字节,因此这不是严格的限制。为了处理12位的基线采样数据(如医学图像),需要计算以9位为模的偏移量,并且该表扩展到272字节。根据本发明的符号长度并行解码和索引计算能够修改。例如,在第一周期中可以只计算针对短代码长度的索引。较长的代码字可以在长度已知之后在共享的模加法器中串行地计算。假设存在着解释JPEG标记符的处理器或其他硬件。这台处理器根定义Huffman表(DHT)标记符预先计算解码Huffman编码所需要的若干常数,并且加载Huffman符号表。它还根据定义量化表(Define QuantizationTable)(DQT)标记符以锯齿的次序预先计算量化Q值,并且加载量化值的标定后版本。跟随起始扫瞄标记符后的熵编码数据被馈入FPGA内进行解码。
更确切地说,图1显示了组件(如编程为执行某功能的FPGA硬件)“表和寄存器加载控制”110,在此处完成预加载。相同的32位数据总线和控制120用于本发明的第一阶段输入压缩数据,删除JPEG熵编码数据中任何0xFF字节后跟随的填充0x00字节(130),并且向代码和系数发生器140(同样参见图2A、2B和2C)提供这种数据。代码和系数发生器140由控制状态机150控制。代码长度选择组件160(更详细地显示在图3A和图3B中)将Huffman码中的位数N馈入Huffman地址发生170(更详细地显示在图4中)。该地址指向DC和AC Huffman表180内并输出运行/尺寸(RS)字节。系数发生和存储组件190使用高位R半字节(4位),以跳过0系数的运行。低位S半字节(4位)允许S位从压缩数据中弹出。附加位编码的格式细节可以参见以上引用的由Pennebaker和Mitchell出版的JPEG书。列缓冲区192保存着四块8×8的系数,每块都排列为垂直的若干列。列IDCT和存储194对若干列进行离散余弦反变换(IDCT),并且将它们写入行缓冲区196,它包含四个块,每块64字×32位。行IDCT和最终输出块198类似于列IDCT和存储,只不过它输出最终的舍入后8位重建图象值。
图2A至图2C构成了以上讨论的图1的代码和系数发生组件140。应当承认,图2A和图2B所示组件集合功能是快速并行地简单处理数据,变为可变长度代码字已识别时能够串行移位的形式,同时永远保持十六位左对齐且可用于解码。图2C在解码操作表明以下位识别为从位流中提取附加位时如此处理。
图2A是在FPGA上能够开发的组件的简化示意图,它显示了32位压缩数据如何能够在一个周期中在半字(即双字节)边界上左对齐到HW0,且新数据在HW1中准备好以便输出(A)。32位输入字“压缩数据”加载到4字节寄存器210中并锁存。顶部两个MUX(220a、220b)将寄存器230中锁存的字节0和字节1反馈到底部两个MUX中。本领域的技术人员公知许多方式提取新输入到寄存器中的四字节,然后内寄存器的四字节能够在一个周期中按字节移位,所以输出具有四字节的压缩数据准备好进行多达十六位的移位。两个MUX(220c、220d)的输出加载到HW0或HW1中,二者都是16位寄存器。它们一起创建了32位的输出寄存器240,其中至少16位必须在根据图2B开发的组件优选情况下选定的任何时刻都未使用。
图2B展示了来自寄存器240的32位输出如何锁存在寄存器250中,它向MUX 260提供稳定的输入,MUX 260选择寄存器270的高低16位中的任一组。进入该MUX的SHIFT AMOUNT(偏移量)选择数据(下面将讲解其来历)左对齐下一个未使用的(如尚未使用的、跟随先前代码字的)压缩数据16位,以便在(B)输出。
图2C显示了来自(B)的数据如何馈入附加位选择块290,其中根据先前代码字解码产生的R/S字节的尺寸半字节SSSS选择至多12位。该数据由“LOAD COEFF”信号锁存在寄存器295中并输出为12位量化的系数数据。
从图2B的(B)输出的16位压缩数据也输入到图3A中,它的一部分详细展示在图3B中。由从处理器传送信号的AC/DC控制线选择已经预加载了加载数据的十六个DC代码长度寄存器310或十六个AC代码长度寄存器320。(根据JPEG标准,块中第一个系数将是DC系数,其余将是AC系数,但是其他约定也可以采用。)这些系数根据在数据流中期望AC系数还是DC系数选择,并且输入到(D)处的十六个比较电路340(参见图3B)并与(B)处输入的未使用的(如尚未使用的)压缩数据的下一个16位相比。如图3B所示,优选情况下将AC系数和DC系数都锁存在寄存器341中,并使用多路转换器342选择地将它们传递到比较器343。比较器343的输出是单位线,它们指明预加载的数值是否多于比较数值。如果在任何给定的比较器343中是如此,那么代码字中的位数N就大于该具体比较。比较器输出344之间从假到真的转换表明代码字的尺寸。确定这一点时使用了被比较16位的高位8位和比较电路的结果。这样做允许比较器343由更少的FPGA逻辑单元构成。同时,这种操作检测全零,允许在单一周期中解码全零代码字,因为编码的零将解码为零。从真至假的转换(如只能取其一的比较器输出“1”和输出“0”之间的转换)很容易变换为在线345上输出的N之一的代码,以及表示相同数字N的5位代码280,它反馈到以上讨论的图2B中的多路转换器285。包含N=1-16的5位N值(或输出345,取决于图4中地址选择多路转换器450的形式优选)连同选择器一起输出到图1中的Huffman地址发生块/组件170。
归纳图3A和图3B,图3B中显示了十六个比较电路以及接收其输出的代码长度选择逻辑350重复的优选形式的细节。提出了某些重要的新颖要素并应当得到注意。在初始化时寄存器加载了DC和AC比较值的交织。所以顶部1位长度比较器必须查看一位是DC还是AC代码。MUX 343在来自寄存器341的两个输入位之间选择,以创建一个输出位。最初期望加载的输入会从1为推进到16位。不过,根据图3B,即使代码字达到16位也不需要多于8位。这是由于以下事实:至多仅有低位8位可以不为全1(或全0,取决于约定)。输入到代码长度选择逻辑的高位8位用于确认代码长度选择逻辑350中高位的N-8位是全1。这样做显著地简化了得到输出280和345的解码。表1显示了多达16位时从不必预加载、识别和比较多于低8位所节省的位数。
表1比较不多于8位的节省
N位 比较 节省
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 8 1
10 8 2
11 8 3
12 8 4
13 8 5
14 8 6
15 8 7
16 8 8
合计:136 100 36
图4显示了Huffman地址发生170的并行实施。应当承认,图4的组织类似于图3B(优选情况下以一片或多片FPGA实施时简化了编程),主要的不同是采用了加法器443而不是比较器343,以及其输入是使用具体Huffman表而不是代码字边界对应的AC和DC偏移量的多路转换器442从锁存441获得。相同的16位代码数据(即压缩数据(B))输入到各个加法器443。相同的逻辑用于预加载将由加载AC或加载DC线选择的偏移量。另外一种差异是由于DC和AC表包在256字节的缓冲区中,每个偏移量是最小的5位。最大的偏移量允许AC索引跳过11个DC条目。根据代码长度选择逻辑350中确定的N值,从地址选择多路转换器450选择Huffman地址并输出。换言之,预备偏移量值并在加法器443中并行相加计算了十六个地址,根据来自代码长度选择逻辑350的输出,仅仅选择其中适于代码字长并且地址正确的一个。如果使用输出280,AND门的简单阵列将形成适宜的选择器。作为替代,如果采用输出345,多路转换器很可能是例如纵横开关的形式。对于以上连同图1讨论的IDCT列缓冲区,图5给出了其控制和输入有关的更多信息。在产生代码长度的同时,根据这个系数的k(块中可能的0-63个系数的序号)从Q表中读取量化数据,在控制逻辑和锯齿表中进行跟踪,因此在该系数完成时,量化数据也就准备好了。该系数在A乘B块510中乘以量化数据,如果它是DC项(k=0),就在520处加上DC PRFD值(即先前的DC系数)。相加的结果就是去量化的标定DC系数。它存储在DC PRED寄存器540中并且输入到Mux 530。加法器520由DC/AC选择线(图5中未显示)控制。当该系数是DC差异时,发生相加以便传递DC差异加DCPRED值。当该系数是AC时,加法器520仅仅传递来自A乘B 510的输出。对于相同的图象颜色分量,DC PRED通常是最后的DC输出。不过,在JPEG RESTART标记符代码后,重新初始化该数值。每次RST LOAD线复位DC PRED寄存器时,该寄存器预加载的数值预补偿电平漂移和舍入常数。由于使用了标定的DCT,电平漂移和舍入常数也经过标定,所以在IDCT计算后它们以正确单位表示。对于8位正向DCT的基线输入,这个复位数值是标定的DC量化值左移15。加法器520的输出是非零DC还是AC系数取决于运行计数遇到零(未显示)之时。从图1中DC和AC Huffman表180输出的RS符号的高半字设定运行计数。运行是下一个非零系数之前的零系数的数目。结果通过锯齿表的内容存储(如进入地址发生器550的k输入540内部用于进入锯齿表的索引并产生列缓冲区四个可能块缓冲区之一中的地址)。k的数值540增大Huffman数据加1的上半字。下半字在图2C中用于创建输出12位量化的系数数据。在图5中,这个数据是进入A乘B 510的COEFF输入。随着在列缓冲区中寻址每一新列,四个寄存器的当前块缓冲区加上一位,对这个块的哪些列具有数据保持跟踪。如果Huffman数据是0x00或者k大于63,那么这就是块尾,什么都不存储,k设定为零,新块开始。
擦除逻辑使用CB1:4寄存器判断要擦除列缓冲区中32个地址中的哪一些(如八列的四块)。一旦列IDCT和存储表明它已经完成了该块,擦除缓冲区控制将立即开始擦除过程。它将使用已释放块的寄存器CB1/2/3/4擦除数据,清空缓冲区并将它释放给存储逻辑以便写入新块。
读取了某列的去量化数据后,首先使用IDCT算法,比如以上引用的Pennebake和Mitchell的JPEG书中52页上图4至图8中的算法。方程中的F(N)实际上是输入,因为解压是从右向左,而压缩是从左向右。这个过程的结果存储在行缓冲区196(参见图1)中,它能够容纳四块数据。由于每个位置都存储着一块,因此没有擦除与这个缓冲区相关联。所以相同的逻辑可以用于行数据,该数据存储在增量位5-3,其中位0是最低位,所以3是二进制数字B’1000’=十进制8(即列IDCT的输出置于8的跨度因而它将准备好进行行IDCT)。然后这个逻辑用作行输出,最终输出修改为在转换到标定的量化表时仅仅提供位19:12(如在软件中,这将是右移12位;在硬件中这通过使编号11-0的12位不输出而实现),去除加到量化表的12位。注意,这假设了具体的标定约定。本领域的技术人员会了解对于其他标定约定如何去除正确数目的位。该数据根据位11进行舍入。这种数据是重建的数据,每个时钟周期提供一个字节。为了实现这一点,以上引用的Pennebake和Mitchell书中52页上图4至图8所示算法中的乘和加以寄存器和状态机的四个阶段流水线化在以上算法中。其他快速高效标定IDCT的细节可以参见“A Fast and Accurate Inverse DiscreteCosine Transform”by Hinds and Mitchell;Proceedings of the IEEEWorkshop on Signal Processing Systems;Athers,Greece,pp.87-93,November 1-3,2005,其全部内容也引用作为参考。
考虑到上述内容,可见本发明为访问Huffman表提供了实时的地址生成,无需大查找表,并且这样做时十分快捷,因为在三个时钟周期中以流水线方式与地址计算同时并行确定代码字长。一旦确定了当前代码字长,可以立即初始化为确定下一个代码字长的数据移位。另外,对于给定的代码字,由于使用多路转换器选择(第一个周期中确定的)N位代码字的索引,所以在第二个周期结束时能够输出解码后的符号,同时通过移位而丢弃N个压缩位,并对齐随后的左对齐位。一位和两位代码可以是转换器450中的特定情况,分别可以在一个或两个数值周期中完成地址确定。尤其是认识到DC diff=0以及ACBOB和AC ZRL代码,如果它们发生在一位“0”将允许一位代码在一个周期中处理,认识到AC EOB、AC ZRL和DC diff=0两位代码允许两位代码在两个周期中处理。一切其他长度的代码字在最多三个周期中处理。此外,解码后符号的低位四位是尺寸值,在该时刻(第二个周期结束时)也可用于控制重建非零变换系数所需附加位的处理。因此,本发明提供了使用可用的FPGA时不仅提供了Huffman表或根据其他压缩技术的对应表的寻址,而且通过以流水线方式执行并行操作而支持在最小数目的时钟周期中这样做,因此实现了解码过程的显著加速,比提高时钟速率来实现要好得多。
在附图和说明书中已经阐述了本发明的优选实施例,尽管使用了特定的术语,但是由此给出的描述仅仅以普通和描述性的意义来使用术语,而不是用于限制目的。虽然已经根据单一优选实施例介绍了本发明,但是本领域的技术人员将理解,本发明实施时可以具有附带权利要求书的实质和范围内的修改。
Claims (20)
1.一种包括现场可编程门阵列FPGA的压缩数据的解压缩装置,所述装置包括:
接收单元,用于接收输入的位流;
比较单元,用于执行比较以确定代码字长;
相加单元,用于与执行比较的所述比较单元并行地执行偏移量和所述位流的位数的相加;
选择单元,用于选择执行相加的所述相加单元的结果;以及
丢弃单元,用于在所述比较单元完成执行比较后,丢弃所述位流的等于所述代码字长的位数。
2.根据权利要求1的装置,其中,在所述位数的位流的最低有效位上执行所述比较,而且部分地响应所述位数的位流的高位而执行所述选择。
3.根据权利要求1的装置,其中,所述位流的所述位数在数目上等于所述代码字的最大位数。
4.根据权利要求1的装置,还包括:存储选择单元,用于存储用于与所述位流的位比较的二进制字,并且在所述二进制字之间选择。
5.根据权利要求1的装置,还包括:存储选择单元,用于存储用于与所述位流的位相加的偏移量,并且在所述偏移量之间选择。
6.根据权利要求1的装置,其中,所述选择单元的结果用于编址存储器。
7.根据权利要求6的装置,其中,所述存储器既包括DC表,也包括AC表。
8.根据权利要求7的装置,其中,对于基线JPEG解码,所述DC表和AC表限于256个或更少的条目。
9.根据权利要求1的装置,其中,所述现场可编程门阵列FPGA被编程为包括用于一位和两位代码字长的特定情况的逻辑。
10.根据权利要求1的装置,还包括选择所述位流的位作为附加位的单元。
11.一种利用现场可编程门阵列FPGA的压缩数据的解压缩方法,所述方法包括以下步骤:
接收输入的位流;
执行比较以确定代码字长;
与所述执行比较的步骤并行地执行偏移量和所述位流的位数的相加;
选择所述执行相加的步骤的结果;以及
完成所述执行比较的步骤后,丢弃所述位流的等于所述代码字长的位数。
12.根据权利要求11的方法,其中,在所述位流的所述位数的最低有效位上执行所述比较,而且部分地响所述位流的所述位数的高位而执行所述选择。
13.根据权利要求11的方法,其中,所述位流的所述位数在数目上等于所述代码字的最大位数。
14.根据权利要求11的方法,进一步包括步骤:存储用于与所述位流的位比较的二进制字,并且在所述二进制字之间选择。
15.根据权利要求11的方法,进一步包括步骤:存储用于与所述位流的位相加的偏移量,并且在所述偏移量之间选择。
16.根据权利要求11的方法,其中,所述选择执行相加步骤结果的步骤的结果用于编址存储器。
17.根据权利要求16的方法,其中,所述存储器既包括DC表,也包括AC表。
18.根据权利要求17的方法,其中,对于基线JPEG解码,所述DC表和AC表限于256个条目。
19.根据权利要求11的方法,其中,所述现场可编程门阵列FPGA被编程为包括用于一位和两位代码字长的特定情况的逻辑。
20.根据权利要求11的方法,进一步包括选择所述位流的位作为附加位的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/387,052 | 2006-03-23 | ||
US11/387,052 US7256719B2 (en) | 2005-03-23 | 2006-03-23 | Digital data decompression implemented in a field programmable array device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101043625A CN101043625A (zh) | 2007-09-26 |
CN101043625B true CN101043625B (zh) | 2010-10-20 |
Family
ID=38808780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710088795 Expired - Fee Related CN101043625B (zh) | 2006-03-23 | 2007-03-22 | 用于高速解压缩数字数据的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101043625B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5650905A (en) * | 1995-12-28 | 1997-07-22 | Philips Electronics North America Corporation | Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams |
US5757295A (en) * | 1995-12-28 | 1998-05-26 | Philips Electronics North America Corporation | Variable length decoder with enhanced throughput due to parallel processing of contiguous code words of identical type |
US6157326A (en) * | 1996-03-15 | 2000-12-05 | U.S. Philips Corporation | Method of and device for coding a digital information signal |
CN1585490A (zh) * | 2003-08-21 | 2005-02-23 | 松下电器产业株式会社 | 信号处理装置及使用它的电子设备 |
CN1728759A (zh) * | 2004-07-30 | 2006-02-01 | 夏普株式会社 | 图像数据处理电路以及包括其的图像处理装置 |
-
2007
- 2007-03-22 CN CN 200710088795 patent/CN101043625B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5650905A (en) * | 1995-12-28 | 1997-07-22 | Philips Electronics North America Corporation | Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams |
US5757295A (en) * | 1995-12-28 | 1998-05-26 | Philips Electronics North America Corporation | Variable length decoder with enhanced throughput due to parallel processing of contiguous code words of identical type |
US6157326A (en) * | 1996-03-15 | 2000-12-05 | U.S. Philips Corporation | Method of and device for coding a digital information signal |
CN1585490A (zh) * | 2003-08-21 | 2005-02-23 | 松下电器产业株式会社 | 信号处理装置及使用它的电子设备 |
CN1728759A (zh) * | 2004-07-30 | 2006-02-01 | 夏普株式会社 | 图像数据处理电路以及包括其的图像处理装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101043625A (zh) | 2007-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4122440A (en) | Method and means for arithmetic string coding | |
US6587057B2 (en) | High performance memory efficient variable-length coding decoder | |
RU2125765C1 (ru) | Способ и устройство сжатия символов, стохастический кодер (варианты) | |
EP1162847B1 (en) | Variable length decoder | |
Howard | The design and analysis of efficient lossless data compression systems | |
CN103748886A (zh) | 支持模式切换的熵编码 | |
JP5579760B2 (ja) | 係数の位置をコード化する方法及び装置 | |
RU2429531C2 (ru) | Преобразования с общими множителями | |
ES2316749T3 (es) | Procedimiento y disposicion para la codificacion y la descodificacion aritmetica de estados binarios asi como programa informatico correspondiente y medio de almacenamiento legible por ordenador correspondiente. | |
WO2002099976B1 (en) | A method and coding apparatus using low density parity check codes for data storage or data transmission | |
KR920704494A (ko) | 적합한 블럭크기로 영상을 압축하는 방법 및 시스템 | |
KR20080049019A (ko) | 구조 문서를 압축하고 해제하는 방법 및 장치 | |
CN103841424B (zh) | 随机存取存储器中压缩数据的系统及方法 | |
CN102939719A (zh) | 用于在二进制熵编码和解码中减少源的方法和设备 | |
Slattery et al. | The qx-coder | |
EP0658982B1 (en) | System for bi-level symbol coding-decoding with saved storage and method for the same | |
CN102238376B (zh) | 图像处理系统及方法 | |
CN101754020A (zh) | 用于编码的视频压缩的方法和系统 | |
RU2709656C2 (ru) | Кодер, декодер и способ, использующие модовые символы | |
WO1999059330A2 (en) | Method and apparatus for decoding jpeg symbols | |
JPH1013693A (ja) | ディジタル情報符号化装置、ディジタル情報復号化装置、ディジタル情報符号化・復号化装置、ディジタル情報符号化方法、及びディジタル情報復号化方法 | |
CN101043625B (zh) | 用于高速解压缩数字数据的装置和方法 | |
US7676527B2 (en) | Processor | |
US20060214822A1 (en) | Digital data decompression implemented in a field programmable array device | |
CN111818335A (zh) | 一种熵编码方法和装置、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101020 Termination date: 20110322 |