CN1703090A - 高速多变长码并行解码器 - Google Patents
高速多变长码并行解码器 Download PDFInfo
- Publication number
- CN1703090A CN1703090A CN 200510011906 CN200510011906A CN1703090A CN 1703090 A CN1703090 A CN 1703090A CN 200510011906 CN200510011906 CN 200510011906 CN 200510011906 A CN200510011906 A CN 200510011906A CN 1703090 A CN1703090 A CN 1703090A
- Authority
- CN
- China
- Prior art keywords
- code
- variable length
- selector
- length
- mentioned
- 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
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
高速多变长码并行解码器,属于变长码解码技术领域,其特征在于:它采用预先计算各个有效变长码在缓存中的起始位置来选择下一个变长码,即它用加法器把各个码长检测器输出的预选码长和相应比特区域在缓存中的起始位置的值相加,得到下一个变长码在缓存中的预选起始位置,再通过它同多路选择器来确定哪一个变长码检测器输出的值为该起始位置相应的码长,所以只要构造一个连线网络分别把变长码码长集合和起始位置集合分别连于每个总线中,同一组选择器在已知一个起始位置下选择下一步变长码的起始位置,用另一组选择器根据下一个起始位置在变长码码长集合中选择相应的变长码码长。它缩短了关键路径,提高了时钟频率。
Description
技术领域
本发明涉及变长码(VLC)的解码器;特别涉及改进的VLC解码器,该改进的VLC解码器有效的缩短了多个变长码并行解码的关键路径延时,同时消除了随着缓存容量的增大关键路径延时快速增长的缺点。该VLC解码器能够提供高速的VLC解码操作,可用于高清晰度电视(HDTV)视频的解码。
背景技术
在各种视频编码中通常需要进行变长码编码(VLC),用于实现对数据的压缩。变长码编码是常用于视频图像编码的一种无损压缩技术。其主要原理是对出现概率大的数据,用码长短的数据表示。对概率出现小的数据,用码长长的数据表示,从而使得编码的平均数据量降低很多。但是图像质量没有损失。视频解码过程需要对变长码进行解码(VLD),VLD解码速度的提高有利于实现高速视频解码。
多个变长码并行解码器能够在单个时钟能对缓存中存在的变长码同时解码,得到各个变长码的码长。变长码的码长以及变长码码流中的部分信息(地址附加信息)输入地址译码器得到查找表地址,然后在查找表中找到相应的解码值,从而实现对变长码的并行解码。这种解码方法对于MPEG-2格式的视频码流平均每个时钟周期可以解码4.5个变长码。
目前的多个变长码并行解码电路通过把已解的有效变长码的码长相加,得到的值用来控制选择器选出下一个正确的变长码码长,直到缓存中所有的变长码完全解码(参见文献:Nikara,J.;Vassiliadis,S.;Takala,J.;Sima,M.;Liuha,P,”Parallelmultiple-symbol variable-length decoding,”Computer Design:VLSI in Computers andProcessors,2002.Proceedings.2002IEEE Internat ional Conference on,16-18 Sept.2002 Pages:126-131)。由于该解码器需要用到多个加法器级连,由此导致其关键路径的延时非常的大,并且随着缓存容量的增加,关键路径延时将快速增长。通常解决关键路径长的问题,是采用关键路径延时小的加法器,例如采用进位选择技术缩短电路的关键路径。这种方法没有从根本上解决关键路径长并且随着缓存容量的增大关键路径快速增长的缺点。这限制了整个解码电路钟频率的提高。
下面把现有的解码方法介绍如下:
首先确定缓存中可以存在多少个变长码,为此,我们用一个集合L={L1,L2,…,Ln}表示变长码码长的集合,其中Ln和L1分别表示最长的变长码码长和最小的变长码码长。因此最多含有
个变长码,最少含有
个变长码。用Wi表示变长码,
当时钟上升沿的时候,变长码码流送入缓存器。把缓存器中的变长码码流区分为多个比特区域,把各个比特区域中的内容并行送入相应的码长检测器。假定缓存器的容量为N比特,最长的变长码为Ln,最小的变长码为L1,则缓存器中的第0~(Ln-1)比特作为第0个比特区域,第L1~(Ln+L1-1)比特作为第1个比特区域。可以认为各个比特区域起始于缓存中的第pi比特,pi∈{0,L1,(L1+1),(L1+2),…,(N-L1)},pi为集合中的第i个元素。所以第i个比特区域为缓存中的第pi~(pi+Ln-1)比特,如果(pi+Ln-1)>(N-1),则(Pi+Ln-1)=N-1,这是由于各个比特区域局限于缓存器内部。缓存器中的有效变长码存在于这些比特区域中,对各个比特区域中的预选变长码并行解码得到预选码长,然后通过控制端在预选码长中选择有效变长码码长,这样就实现了多个变长码码长的并行解码。由于变长码起始于缓存中的第0个比特,所以在第0个比特区域中必定存在一个有效的变长码,同时由于变长码的最小码长为L1,所以第1个比特区域起始于缓存中的第L1比特,即第L1~(Ln+L1-1)比特。因为第2个变长码只可能落入这个比特区域,或者落入起始于缓存中的更高比特位的比特区域,同理最后一个比特区域为缓存中的第(N-L1)~(N-1)比特。
把各个比特区域中的内容并行送入变长码码长检测器,根据以上的内容可以得到比特区域共有(N-2(L1-1))个,所以需要(n-2(L1-1))个码长检测器检测出各个比特区域中预选变长码的预选码长Ti,这些预选码长构成一个集合T,有效变长码码长包含于这个集合,T={Ti|i=0,1,...,(N-2L1+1)}。如果第0个比特区域,通过码长检测器检测到的预选码长不为0,则这个值即为缓存中的第1个有效变长码的码长。由于知道了第1个有效变长码的码长,可以确定下一个变长码起始于在哪一个比特区域。例如第1个变长码的码长为l0,则起始于缓存中的第l0的那个比特区域包含下一个有效变长码,在这个比特区域通过码长检测器检测到的值,即为下一个有效变长码的码长。因为对各个比特区域中的内容是进行并行码长检测的,通过前面的变长码码长总和可以选择下一个有效变长码的码长。由此实现了对缓存中所有的变长码码长的并行解码。其关键路径是所有有效变长码的码长相加,同时加上一些选择器构成。这导致了关键路径的很长,同时随着缓存容量的增大,关键路径将会显著增长。
现举例说明如下:
对于一个16比特的缓存,如附图1所示。假定变长码码长的集合为L={2,3,4,5,6,7,8}。缓存中最多有8个变长码。F0~F13表示14个比特区域,F0代表缓存中的0~7比特,表示第0个比特区域,F13代表缓存中的14~15比特,表示第13个比特区域。由于变长码起始于缓存器中的第0位,所以在F0中存在着变长码W0。下一个变长码W1,只能在F1~F7中寻找了。因为W1只可能存在于这些区域。如果变长码W0的码长为2,则W1存在于F1;如果W0=8则W1变长码存在于F7中,其他情况下,W1存在于F2~F6。变长码W2的码长在F3~F13中寻找。因为如果W2存在,则W0,W1必定存在,所以变长码W2,起始于缓存中的最小位为4,在F13中也有可能存在W2。同样原理,W3在F5~F13寻找,W4在F7~F13寻找,W5在F9~F13寻找,W6在F10~F13寻找,W7在F13中寻找。所以可以通过并行解码出F0~F13中的预选码长,然后由前面的有效变长码码长相加得到的值,决定下一个有效的变长码码长。F0的内容送入码长检测得到预选码长,由于W0起始于缓存中的第0个比特,所以如果F0的预选码长不为0,则这个预选码长必为W0的有效变长码码长l0。通过l0的值可以选择W1的变长码码长l1。例如假定l0=2,则W1必在F1中,所以选择F1的预选码长,这个码长就是l1,如果这个码长不为0,则说明这个变长码存在。通过l0和l1的值相加,就可以选择得到W2的变长码码长,例如l1=2,l0+l1=4则W2存在于F3中。所以通过前面有效变长码码长的相加的值,来控制选择器的输出,得到下一个有效变长码的码长,其原理见附图2。
发明内容
本发明的目的提供一种关键路径短的,时钟频率快的高速多变长码平行解码器。
本发明的特征在于它包含:
A.变长码桶移位缓存器,在时钟上升沿时刻,在变长码码流区存储原始变长码码流。该变长码码流区分为N-2(L1-1)个比特区域,其第i个比特区域表示为该缓存器中的第pi~(pi+Ln-1)个比特,其中pi∈{0,L1,(L1+1),(L1+2),…,(N-L1)},pi为第i个比特区域在缓存中的起始比特位,当(pi+Ln-1)>(N-1),(Pi+Ln-1)=N-1,第0个比特区域为缓存中的第0~(Ln-1)比特,最后一个比特区域为缓存中的第(N-L1)~(N-1)比特,其中N为该缓存器的容量,L1为最小的变长码码长,Ln为最大的变长码码长;
B.变长码码长检测器采用组合逻辑的译码电路结构,它的个数为(N-2(L1-1))个,上述各比特区域中的内容,并行输入各个相应的变长码码长检测器;
C.加法器,它的数量比上述变长码码长检测器的数量少一个,它的作用是计算各个变长码在该缓存器中可能的起始位置,上述各个码长检测器输出是上述各个比特区域中预选变长码的预选码长Ti,这些预选码长构成一个集合T,上述有效变长码的码长就包含在集合T中,T={Ti|i=0,1,...,(N-2L1+1)},上述各加法器的一个输入依次相应为上述第1个致第(N-2L1+1)个预选码长,其另一个输入是由各数值L1,L1+i,L1+2,…,N-L1组成的数组,它们分别来自各个寄存器;
D.连线网络,它具有双总线结构,上述第2个到第N-2(L1-1)个码长检测器的所有输出与第1条总线相连,上述各个加法器的所有输出与第2条总线相连,上述各加法器的输出是除了第0个比特区域外,其余各个比特区域内中预选变长码在上述缓存中的起始位置,各个比特区域中的预选变长码的起始位置构成了集合s,s={si|si=Ti+pi,i=0,1,...,(N-2L1+1)},即第0个比特区域除外,有效变长码在缓存器中的起始位置包含在集合s中;
E.选择器组1,用于选择有效变长码的码长,它共有
个,其中
代表不大于N/L1的最大整数,每一个选择器的输入端与上述第1条总线相连,第1个选择器的选择控制端与上述用于检测第0个比特区域中预选变长码的第1个码长检测器预选码长输出相连;
F.选择器组2,用于检测第2个致第
个有效变长码在上述缓存器中的起始位置,其中
代表不大于N/L1的最大整数,其中每一个选择器的输入端与上述第2条总线相连接,该选择器组2与上述选择器组1间隔排列,但位置居后,在该选择器组2中,第1个选择器的控制端与上述第1个码长检测器输出的预选码长输出相连,各个选择器的起始位置输出端同时与下一个选择器组1中的选择器,下一个选择器组2中的选择器的控制端相连;
G.选择器组3,用于产生地址附加信息,其中的各个选择器根据与自己相应的选择器组2中的一个选择器的输出从上述缓存器并行输出的内容中选择相同位数的地址附加信息作为它的输出,上述选择器组3中除了第1个选择器的控制端和第1个码长检测器的预选码长输出相连,其它各个选择器的控制端分别与选择器组2中的所有选择器的各个有效变长码在上述缓存器中的起始位置的输出相连;
H.地址译码电路,它的各个输入端分别依次与上述选择器组1的所有有效变长码码长输出端以及选择器组3的所有地址附加信息输出合并后相连;
I.查找表电路,通常用ROM来实现,它的输入端与上述地址译码电路的译码地址输出相连,它的输出是各个变长码的解码值;
其中选择器组2中的最后一个选择器的输出是所有有效变长码的码长和,它输入上述缓存器进行桶移位等待下一个时钟的到来。
对现有技术的解码器与本发明分别用Verilog实现,并在Synopsys DC上综合,采用0.6um的CMOS工艺,其关键路径的延时数据如下表1所示。
(单位:纳秒)
表1关键路径对比表
附图说明
图1,现有解码器方法的原理性说明图。
图2,现有解码器方法的硬件框图。
图3,本发明主要部分的硬件原理框图。
图4,本发明完整的硬件原理框图。
图5,本发明实施后的硬件框图。
图6,本发明码长检测框图:a预选变长码码长检测原理图;b预选变长码起始位置框图。
具体实施方式
该发明没有采用各个码长叠加的方式实现下一个有效变长码的选择,而是采用预先计算各个有效变长码在缓存中的起始位置。首先确定变长码码长集合L={L1,L2,…,Ln},其中L1表示最短的变长码码长,Ln表示最长的变长码码长。在容量为N比特的缓存中,最多含有个变长码,最少含有
个变长码。我们用W={W0,…,WM}表示在N比特缓存中存在变长码的集合,其中
变长码Wj的码长用lj表示,在缓存中的起始位置用Sj-1表示,其中0≤Sj-1≤(N-L1)。由于Sj-1表示变长码Wj在缓存中的起始位置,所以如果Wj存在,则缓存中的第0~(Sj-1-1)比特中含有变长码W0,W1,…,Wj-1。因此
其值表示j个有效变长码码长和,这是实现关键路径缩短的重要公式,如附图4中所示,假定31代表Sj-1,则32代表Sj-1,Sj-1在Sj-2的右边。把各个码长检测器的输出和相应比特区域在缓存中起始位置的值相加,其输出结果构成了变长码在缓存中的预选起始位置。例如第i个比特区域的数据输入第i个码长检测器,si=Ti+pi,所有的si构成集合s,Sj,有效变长码在缓存中的起始位置包含于这个集合,可以通过这个集合中的值,决定有效变长码在那一个比特区域。如果预选码长Ti是有效变长码Wj的码长lj,则预选起始位置si就是变长码Wj +1在缓存中起始位置。通过这个起始位置确定哪一个变长码检测器输出的值为变长码Wj+1的码长lj+1。所以可以通过Sj在集合s中选择Sj+1,并在集合T中选择lj+1。如果某个变长码的码长lk=0,则说明这个变长码不存在。
并行解码得到有效变长码长,把变长码码长以及变长码本身的的一些信息(地址附加信息)送入地址译码器,用来生成变长码码表的地址。下表2为变长码的码表:
变长码 | 码长 | 变长码 | 码长 |
10 | 2 | 001101 | 6 |
011 | 3 | 000010 | 6 |
110 | 3 | 000100 | 6 |
0111 | 4 | 0000110 | 7 |
0100 | 4 | 0000111 | 7 |
10110 | 4 | 1111000 | 7 |
10111 | 5 | 1111001 | 7 |
000111 | 6 | -- | -- |
表2变长码码表
由变长码码表2所示,对于某一类固定长度的变长码,其最多有四个不同的变长码。从表中可以看出对于某一固定长度的变长码,其各个变长码之间存在的差别,这些差别的信息就构成了地址附加信息,作为输入地址译码器的一部分。通过变长码的码长,找到所要解码的变长码在查找表中的哪一个块,然后通过地址译码信息在块中找到所要的解码值。下表3是变长码的查找表地址生成,
变长码 | 码长 | 附加地址信息 | 地址译码输入 | 译码后地址 |
10 A1 | 010 | -- | 010 00 | 000 01 |
011 A2 | 011 | 11 | 011 11 | 000 11 |
110 A3 | 011 | 10 | 011 10 | 000 10 |
0111 B1 | 100 | 11 | 100 11 | 001 11 |
0100 B2 | 100 | 00 | 100 00 | 001 00 |
00110 C1 | 101 | 10 | 101 10 | 010 10 |
00111 C2 | 101 | 11 | 101 11 | 010 11 |
000111 D1 | 110 | 11 | 110 11 | 011 11 |
000101 D2 | 110 | 01 | 110 01 | 011 01 |
000010 D3 | 110 | 10 | 110 10 | 011 10 |
000100 D4 | 110 | 00 | 110 00 | 011 00 |
0000110 E1 | 111 | 10 | 111 10 | 100 10 |
1111000 E2 | 111 | 00 | 111 00 | 100 00 |
0000111 E3 | 111 | 11 | 111 11 | 100 11 |
1111001 E4 | 111 | 01 | 111 01 | 100 01 |
表3变长码地址生成表
从表3中可以看到,最小的地址译码输入为01000,这个数据的高三位是变长码的码长,低二位是地址附加信息。如果直接作为查找表的地址,将会大量增加存储空间。所以需要对地址进行译码,这样有利于减少地址查找表的存储单元。译码后的地址如表3中所示。
译码后的地址送入查找表,解码得到相应的值。查找表可以采用RAM,或者ROM来存储变长码的解码值数据。对于上面的例子,其查找表的存储方式如下表4所示:
地址 | 存储的值 | 地址 | 存储的值 |
00000 | A1 | 01010 | C1 |
00001 | A1 | 01011 | C2 |
00010 | A3 | 01100 | D4 |
00011 | A2 | 01101 | D2 |
00100 | B2 | 01110 | D3 |
00101 | B2 | 01111 | D1 |
00110 | B1 | 10000 | E2 |
00111 | B1 | 10001 | E4 |
01000 | C1 | 10010 | E1 |
01001 | C1 | 10011 | E3 |
表4查找表中变长码值的存储
下面根据以上内容举例说明一个缓存为N=16比特的变长码解码原理,变长码码长集合L={2,3,4,6,10},由于最短的变长码码长L1=2,所以16比特缓存中最多可能有8个有效的变长码,这8个有效变长码码长用l0,l1,…,l7来表示。变长码码表如下表5所示,表中只给出了变长码的码长。
变长码 | 码长 |
01 | 2 |
101 | 3 |
1101 | 4 |
111110 | 6 |
1111111110 | 10 |
表5变长码码长表
16比特缓存中的数据为0111 0110 0000 0000,对照表5中看出,16比特缓存中只包含两个变长码01和1101。根据各个比特区域起始于pi,pi∈{0,L1,(L1+1),(L1+2),…,(N-L1)},除了第0个比特区域,其他各个区域各自对应一个码长检测器,所以需要(N-2(L1-1))=14个码长检测器来检测,变长码的预选码长分别为T0=2,T1=4,T2=3,T3=2,T4=T5=R6=R7=T8=T9=T10=T11=T12=T13=0。变长码预选起始位置s0=2,s1=6,s2=6,s3=6,s4=5,s5=6,s6=7,s7=8,s8=9,s9=10,s10=11,s11=12,s12=13,s13=14。如附图6所示,其中Tj,sj分别为附图6中的第j个区域的预选码长,以及变长码预选起始位置。由于变长码是从缓存的第0个比特位开始,所以l0=T0=2,这是第一个变长码W0的码长,S0=s0=2是变长码W1在缓存中的起始位置。由于预选码长T1对应的变长码起始于缓存中的第2比特,附图6-a所示,所以变长码W1的有效码长码长为l1=T1=4,同时S1=s1=6,S1=6表明W2变长码起始于缓存中的第6比特,由于T5对应的变长码起始于缓存中的第6比特,所以变长码W2的码长l2=T5=0,S2=s5=6。同样由于S2=6,表明变长码的W3起始于缓存中的第6比特,W3和W2起始于缓存中的同一比特位,因此l3=T5=0,S3=s5=6。同样的方法可以得到l4=l5=l6=l7=0,S4=S5=S6=S7=6,其中S7为缓存中所有变长码码长和,所以解码结果有两个变长码W0,W1,其码长分别为l0=2,l1=4。总的变长码码长S7=6作为外部缓存移位控制,进行下一次解码。
参看附图可以更加深入了解该发明的工作原理以及电路的一些优点。附图3表示该发明的码长并行解码原理图,缓存的容量为N,最长的变长码为Ln,最小为L1,总共需要(N-2(L1-1))个码长检测器。由于码长检测器的数量与N有关,所以图中只注明了部分的码长检测器,加法器,选择器。变长码缓存器中的比特码流按各个比特区域并行输入相应的码长检测器,对于码长检测器6,输入缓存中的第0个比特区域,图中1表示缓存输出的第0~(Ln-1)比特,即第0个比特区域。对于变长码检测器7输入第1个比特区域的数据,即缓存中的第L1~(Ln+L1-1)比特,对于其余的各个变长码检测器也同样并行送入相对应的比特区域内容,最后一个码长检测器10送入缓存中的第(N-L1)~(N-1)比特,注意码长检测器输入的最大比特位不超过最大缓存容量N。各个码长检测器检测出各个比特区域中预选码长,通过图中19~23输出,由于码长检测器6的输入比特起始为缓存中的第0位,所以19的输出必为有效的变长码码长l0。l0是第一个有效变长码的码长,并且它也决定了下一个有效变长码起始于缓存中的位置,也即决定了下一个变长码在哪一个比特区域。码长检测器7的输出送入加法器15,11端送入数据L1,因为当第2个码长检测器的输出为有效的变长码码长时,缓存中第0~(L1-1)比特必为有效的变长码。所以第2个变长码码长检测器的输出加上L1得到的值,可以决定下一个有效变长码在缓存中的起始位置。同理对码长检测器16的输出加上(L1+1),其值从26输出,依次类推对最后一个码长检测器10的输出送入加法器18,14送入的值为(N-L1)。24~27得到可能的起始位置的值s1~si,如图所示。
码长检测器6的输出19,其值为第一个有效变长码码长l0,19作为选择器28的控制端,在20~23中选择一个数据,得到的变长码码长l1从34输出,在24~27中选择S1从31输出。34作为第2个有效变长码码的码长,S1表明了第3个有效变长码在缓存中的位置。所以把31输入到选择器29的控制端,选择器29的输出为变长码W2的码长l2从35输出,S2从32端输出。按照同样的原理,继续选择下一个有效变长码码长以及有效变长码起始位置,直到并行解码出所有的有效变长码码长l0~l15,其中输出33代表为有效变长码的码长和。用于控制缓存进行下一次解码,由于下一个变长码的选择是通过前一个Sj的控制来实现的,所以避免了加法器对有效变长码各个码长的叠加,从而减少了关键路径。图中的19端和34~36输出为有效变长码码长。
附图4是整个变长码解码的原理图。并行解码得到的有效变长码码长从34~36输出,各个有效变长码在缓存中起始位置从31~33输出,缓存40中的变长码从37输出。31~33,34~36,37送入图中的查找表地址译码电路38产生各个变长码在查找表中的地址,地址的产生原理如上所述。各个变长码的地址并行送入查找表39,得到各个变长码的解码值。选择器30的输出33为有效变长码码长总和,送入缓存40进行桶移位,以便在下一个时钟继续进行变长码解码。
附图5是一个缓存容量为16比特的多个变长码并行解码电路。假定其中变长码的最长码长为7,最小码长为2。变长码码表如表2所示,在时钟上升沿时刻16比特的变长码码流并行送入缓存1。图中2代表16比特并行输出的数据,即0~15比特,可以采用总线的结构。3~16代表第0~13比特区域的数据,分别送入第17~29码长检测器,图中3为缓存中的第0个比特区域,即缓存中的0~6比特,4代表2~8比特,5代表为3~9比特,依次增加,其中16为缓存中的14~15比特。码长检测器采用译码电路结构,各个码长检测器的输出为一个5比特的数据,图中30~43表示变长码检测到各个比特区域中的预选码长。31~43的值分别与图中44~56中的值相加得到预选起始位置,加法器采用5位进位链加法器,得到的值从57~69输出,其输出中包含各个有效变长码在缓存中的起始位置,也即有效变长码起始于哪一个比特区域,码长检测器17的值不需要进行加法计算。图中第44~56分别为寄存器,存储的数据分别为2~14。相加后的值从57~69中输出。70代表为图中31~43的输出值,70中的值构成集合T,71~76分别与70相同。77代表图中57~66的输出数据,77中的值构成集合s,78~83分别与77相同,图中的连线网络可以采用总线结构。70~76分别送入选择器84~90,选择器采用14选1的结构。77~83送入选择器91~97,选择器采用14选1的结构。码长检测器17的输出30,同时作为选择器84,91的选择控制端。选择器91的输出99,作为选择器85,92的选择控制端。选择器92的输出100,作为选择器86,93的控制端,如图所示,前一个选择器的输出作为后两个选择器的控制端。选择器84~90的输出为105~111,各自分别为5位数据。选择器91~96的输出为99~104,各自分别为5位数据。其中选择器97的输出为四位数据由图中131表示。131为所有变长码的码长总和,送入缓存器1,进行桶移位。30为第一个有效变长码码长输出,105~111表示第二到第八个有效变长码码长输出。99~104表示有效变长码在缓存中位置的值输出,30的值决定了第二个有效变长码在缓存中的位置,99的值决定了第三个有效变长码在缓存中的位,依次可以类推,其中104决定了第八个有效变长码在缓存中的位置,通过这些值可以控制有效变长码码长的选取。选择器112~118,以及地址译码器120构成了查找表的地址生成电路,地址译码采用组合逻辑的结构。图中2代表缓存中的16比特数据。选择器112为7选2的结构,送入缓存中的第0~6比特数据,得到2比特的数据输出。选择其113的为14选2的结构,送入缓存中的第2~15比特。选择器114为12选2的结构,送入缓存中的第4~15比特。选择器115为10选2结构,送入缓存中的6~15比特。选择116为8选2结构,送入缓存中的8~15比特。选泽器117为6选2结构,送入缓存中的10~15比特。选择器118为4选2结构,送入缓存中的12~15比特的数据。选择器112~118的输出都为两位数据,作为地址附加信息。变长码码长和地址附加信息合并一起送入地址译码器。119表示缓存器中的第14~15比特的数据。30作为选择器112的选择控制信号,99~104分别作为选择器113~118的选择控制信号。地址译码器120的功能是为了使查找表电路存储量减小。译码后的地址送入查找表电路121,获得各个变长码的解码值,从123~130输出,查找表电路采用ROM结构,其存储方式如上所述。
Claims (1)
1.一种高速多变长码并行解码器,其特征在于,它包含:
A.变长码桶移位缓存器,在时钟上升沿时刻,在变长码码流区存储原始变长码码流。该变长码码流区分为N-2(L1-1)个比特区域,其第i个比特区域表示为该缓存器中的第pi~(pi+Ln-1)个比特,其中pi∈{0,L1,L1+1,L1+2,…,N-L1),pi为第i个比特区域在缓存中的起始比特位,当(pi+Ln-1)>(N-1),(Pi+Ln-1)=N-1,第0个比特区域为缓存中的第0~(Ln-1)比特,最后一个比特区域为缓存中的第(N-L1)~(N-1)比特,其中N为该缓存器的容量,L1为最小的变长码码长,Ln为最大的变长码码长;
B.变长码码长检测器采用组合逻辑的译码电路结构,它的个数为N-2L1+2个,上述各比特区域中的内容,并行输入各个相应的变长码码长检测器;
C.加法器,它的数量比上述变长码码长检测器的数量少一个,它的作用是计算各个变长码在该缓存器中可能的起始位置,上述各个码长检测器输出是上述各个比特区域中预选变长码的预选码长Ti,这些预选码长构成一个集合T,上述有效变长码的码长就包含在集合T中,T={Ti|i=0,1,...,N-2L1+1),上述各加法器的一个输入依次相应为上述第1个致第N-2L1+1个预选码长,其另一个输入是由各数值L1,L1+i,L1+2,…,N-L1组成的数组,它们分别来自各个寄存器;
D.连线网络,它具有双总线结构,上述第2个到第N-2L1+2个码长检测器的所有输出与第1条总线相连,上述各个加法器的所有输出与第2条总线相连,上述各加法器的输出是除了第0个比特区域外,其余各个比特区域内中预选变长码在上述缓存中的起始位置,各个比特区域中的预选变长码的起始位置构成了集合s,s={si|si=Ti+pi,i=0,1,...,N-2L1+1),即第0个比特区域除外,有效变长码在缓存器中的起始位置包含在s中;
E.选择器组1,用于选择有效变长码的码长,它共有
个,其中
代表不大于N/L1的最大整数,每一个选择器的输入端与上述第1条总线相连,第1个选择器的选择控制端与上述用于检测第0个比特区域中预选变长码的第1个码长检测器预选码长输出相连;
F.选择器组2,用于检测第2个致第
个有效变长码在上述缓存器中的起始位置,其中
代表不大于N/L1的最大整数,其中每一个选择器的输入端与上述第2条总线相连接,该选择器组2与上述选择器组1间隔排列,但位置居后,在该选择器组2中,第1个选择器的控制端与上述第1个码长检测器输出的预选码长输出相连,各个选择器的起始位置输出端同时与下一个选择器组1中的选择器,下一个选择器组2中的选择器的控制端相连;
G.选择器组3,用于产生地址附加信息,其中的各个选择器根据与自己相应的选择器组2中的一个选择器的输出从上述缓存器并行输出的内容中选择相同位数的地址附加信息作为它的输出,上述选择器组3中除了第1个选择器的控制端和第1个码长检测器的预选码长输出相连,其它各个选择器的控制端分别与选择器组2中的所有选择器的各个有效变长码在上述缓存器中的起始位置的输出相连;
H.地址译码电路,它的各个输入端分别依次与上述选择器组1的所有有效变长码码长输出端以及选择器组3的所有地址附加信息输出合并后相连;
I.查找表电路,通常用ROM来实现,它的输入端与上述地址译码电路的译码地址输出相连,它的输出是各个变长码的解码值;
其中选择器组2中的最后一个选择器的输出是所有有效变长码的码长和,它输入上述缓存器进行桶移位等待下一个时钟的到来。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100119064A CN100356793C (zh) | 2005-06-09 | 2005-06-09 | 多变长码并行解码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100119064A CN100356793C (zh) | 2005-06-09 | 2005-06-09 | 多变长码并行解码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1703090A true CN1703090A (zh) | 2005-11-30 |
CN100356793C CN100356793C (zh) | 2007-12-19 |
Family
ID=35632578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100119064A Expired - Fee Related CN100356793C (zh) | 2005-06-09 | 2005-06-09 | 多变长码并行解码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100356793C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101547353B (zh) * | 2008-03-28 | 2011-09-07 | 富士通株式会社 | 可变长码解码加速装置 |
CN110018811A (zh) * | 2019-04-15 | 2019-07-16 | 北京智芯微电子科技有限公司 | Cache数据处理方法以及Cache |
WO2019227323A1 (zh) * | 2018-05-30 | 2019-12-05 | 深圳市大疆创新科技有限公司 | 变长解码方法与装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR970002483B1 (ko) * | 1993-11-29 | 1997-03-05 | 대우전자 주식회사 | 고속의 가변길이 복호화장치 |
KR0124191B1 (ko) * | 1994-01-18 | 1998-10-01 | 배순훈 | 가변길이 코드 디코딩장치 |
KR0154011B1 (ko) * | 1995-03-16 | 1998-11-16 | 배순훈 | 가변길이 복호화 장치 |
KR0154010B1 (ko) * | 1995-03-16 | 1998-11-16 | 배순훈 | 가변길이 복호화 장치 |
US6704361B2 (en) * | 1998-05-18 | 2004-03-09 | Sony Corporation | Variable length decoder for decoding digitally encoded video signals |
US6215424B1 (en) * | 1998-12-16 | 2001-04-10 | Thomson Licensing S.A. | System for variable length codeword processing suitable for video and other applications |
KR100450753B1 (ko) * | 2002-05-17 | 2004-10-01 | 한국전자통신연구원 | 프로세서와 연결된 프로그램 가능한 가변 길이 디코더 |
CN1297150C (zh) * | 2004-12-16 | 2007-01-24 | 上海交通大学 | 单时钟周期可变长熵解码装置 |
-
2005
- 2005-06-09 CN CNB2005100119064A patent/CN100356793C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101547353B (zh) * | 2008-03-28 | 2011-09-07 | 富士通株式会社 | 可变长码解码加速装置 |
WO2019227323A1 (zh) * | 2018-05-30 | 2019-12-05 | 深圳市大疆创新科技有限公司 | 变长解码方法与装置 |
CN110018811A (zh) * | 2019-04-15 | 2019-07-16 | 北京智芯微电子科技有限公司 | Cache数据处理方法以及Cache |
Also Published As
Publication number | Publication date |
---|---|
CN100356793C (zh) | 2007-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6819271B2 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
US10051285B2 (en) | Data compression using spatial decorrelation | |
US9413387B2 (en) | Data compression using entropy encoding | |
US7352299B1 (en) | Method and system for improving memory interface data integrity | |
CN1287718A (zh) | 用于通信系统的交织/解交织设备和方法 | |
CN101079641B (zh) | 二维交织设备及方法 | |
CN109347486B (zh) | 低复杂度高吞吐率的5g ldpc编码器和编码方法 | |
CN111931925A (zh) | 基于fpga的二值化神经网络的加速系统 | |
CN1703090A (zh) | 高速多变长码并行解码器 | |
CN1174555C (zh) | 可变长编码方法和装置 | |
CN1279697C (zh) | 片上系统的测试数据压缩编码解码方法及专用解码单元 | |
CN1290002C (zh) | 高速加法器 | |
CN102270110A (zh) | 一种改进的基16Booth编码器 | |
US7030787B2 (en) | Circuit and method for use in data compression | |
US8044831B2 (en) | Decoding apparatus and control method thereof | |
CN110971242A (zh) | 通用化的ldpc译码桶形移位器 | |
US10951230B1 (en) | Method and apparatus for ternary mapping | |
Xing et al. | A cycle-efficient sample-parallel EBCOT architecture for JPEG2000 encoder | |
CN1241148C (zh) | 一种jpeg2000分层截断点快速搜索方法 | |
CN112911314B (zh) | 一种熵编码器的编码方法及熵编码器 | |
CN107241602B (zh) | 一种应用于JPEG2000的Tier1接口设计方法 | |
US20240004649A1 (en) | Method and apparatus for compressing vector data, method and apparatus for decompressing vector data, and device | |
CN1293502A (zh) | 权位倒置交织器 | |
CN111275184B (zh) | 一种实现神经网络压缩的方法、系统、装置和存储介质 | |
CN1855734A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071219 Termination date: 20140609 |
|
EXPY | Termination of patent right or utility model |