一元/k阶指数哥伦布码的解码方法及解码器

申请号 CN201310163728.1 申请日 2013-05-07 公开(公告)号 CN103491370A 公开(公告)日 2014-01-01
申请人 晨星半导体股份有限公司; 发明人 王耀兴; 林郁超;
摘要 本 发明 提出一种一元/k阶指数哥伦布码的解码方法及 解码器 。本发明提供的UEGk码的解码方法首先执行一接收步骤:自一输入比特流接收N个比特并根据N更新一比特计数。若该N个比特皆为1,该接收步骤被重复。若该比特并非皆为1,该方法执行一查找步骤:根据该比特计数查找产生一第一数值。随后,根据该比特计数及一 门 槛 值,一剩余比特数M被决定。根据自该输入比特流接收的M个剩余比特,一第二数值被产生。接着,该第一数值与该第二数值被相加,以产生一索引值。
权利要求

1.一种一元/k阶指数哥伦布(Unary/kth order Exponential Golomb,UEGk)码的解码方法,包含:
(a)自一输入比特流接收N个比特并根据N更新一比特计数,其中N为一正整数;
(b)若该N个比特皆为1,重复步骤(a);
(c)若该N个比特并非皆为1,根据该比特计数查找产生一第一数值;
(d)根据该比特计数及一槛值决定一剩余比特数M;
(e)根据自该输入比特流接收的M个剩余比特产生一第二数值;以及
(f)将该第一数值与该第二数值相加,以产生一索引值。
2.如权利要求1所述的解码方法,其特征在于,该正整数N等于1。
3.如权利要求1所述的解码方法,其特征在于,该正整数N大于1;步骤(c)包含:若该N个比特并非皆为1,根据该N个比特及该比特计数查找产生该第一数值;步骤(d)包含:根据该N个比特、该比特计数及该门槛值决定该剩余比特数M。
4.如权利要求3所述的解码方法,其特征在于,N个查找表是预先提供,且步骤(c)包含:
根据该N个比特自该N个查找表中选择一目标查找表;以及
根据该比特计数搜寻该目标查找表,以产生该第一数值。
5.如权利要求1所述的解码方法,其特征在于,该正整数N等于1;该解码方法于步骤(a)之前进一步包含:
(g)自该输入比特流接收一个比特并更新该比特计数;
(h)判断该比特计数是否大于另一门槛值;以及
(i)若步骤(h)的判断结果为是,开始执行步骤(a)~步骤(f)。
6.如权利要求1所述的解码方法,其特征在于,该正整数N大于1;该解码方法于步骤(a)之前进一步包含:
(g)自该输入比特流接收N个比特并更新该比特计数;
(h)判断该N个比特是否皆为1;
(i)若步骤(h)的判断结果为是,更新该比特计数并判断该比特计数是否大于另一门槛值;
(j)若步骤(i)的判断结果为否,重复执行步骤(g)和步骤(h);以及
(k)若步骤(i)的判断结果为是,将该比特计数设定为该另一门槛值并开始执行步骤(a)~步骤(f)。
7.一种一元/k阶指数哥伦布码的解码器,包含:
一接收模,用以接收一输入比特流,并每次输出N个比特,其中N为一正整数;
一计数模块,用以计数一比特计数,每当该接收模块输出N个比特,该计数模块即根据该正整数N更新该比特计数;
一比特零检测模块,用以检测该接收模块最新输出的N个比特为0或1;
一存储模块,其中储存有一查找表;
一查找模块,若该比特零检测模块判断该接收模块最新输出的该N个比特并非皆为1,该查找模块至少根据该比特计数搜寻该查找表,以产生一第一数值;
一剩余比特决定模块,用以至少根据该比特计数及一门槛值决定一剩余比特数M,并根据自该输入比特流接收的M个剩余比特产生一第二数值;以及
一计算模块,用以将该第一数值与该第二数值相加,以产生一索引值。
8.如权利要求7所述的解码器,其特征在于,该正整数N等于1。
9.如权利要求7所述的解码器,其特征在于,该正整数N大于1;若该N个比特并非皆为1,该查找模块系根据该N个比特及该比特计数查找产生该第一数值;该剩余比特决定模块系根据该N个比特、该比特计数及该门槛值决定该剩余比特数M。
10.如权利要求9所述的解码器,其特征在于,该存储模块中储存有N个查找表,该查找模块首先根据该N个比特自该N个查找表中选择一目标查找表,再根据该比特计数搜寻该目标查找表,以产生该第一数值。
11.如权利要求7所述的解码器,其特征在于,直到该比特计数大于另一门槛值后,该查找模块、该剩余比特决定模块及该计算模块才开始运作;该解码器进一步包含:
一元解码模块,当该比特计数小于或等于该另一门槛值,该一元解码模块负责产生该索引值。
12.一种一元/k阶指数哥伦布码的解码方法,包含:
(a)自一输入比特流接收N个比特;
(b)判断步骤(a)所接收的该N个比特是否皆为1,并根据该N个比特更新一比特计数;
(c)若步骤(b)的判断结果为是,判断该比特计数是否大于一门槛值;
(d)若步骤(c)的判断结果为否,重复步骤(a)和步骤(b);
(e)若步骤(c)的判断结果为是,根据该比特更新一索引值,并且重复步骤(a)和步骤(b);
(f)若步骤(b)的判断结果为否,判断该比特计数是否大于该门槛值;
(g)若步骤(f)的判断结果为否,根据该比特计数计算一最终索引值;
(h)若步骤(f)的判断结果为是,根据该门槛值及该比特计数计算一剩余数值;以及(i)根据该索引值将该剩余数值相加,以产生该最终索引值。

说明书全文

一元/k阶指数哥伦布码的解码方法及解码器

技术领域

[0001] 本发明涉及解码技术,尤其是涉及适用于一元/k阶指数哥伦布码的解码技术。

背景技术

[0002] 一元/k阶指数哥伦布(Unary/kth order Exponential Golomb,UEGk)码兼具一元th编码(unary coding)压缩率较高的优点和k阶指数哥伦布编码(k order exponential Golomb coding)长度较短的优点,因此被H.264、MPEG-4AVC等多种视频规范采用。
[0003] UEGk码的详细编码方式可参见美国第6,982,663号专利。UEGk解码器负责将一串连续送达的0/1比特流(bit stream)转换为多个索引值(index或codeword)。对应于每一个索引值的UEGk码可能包含三个部分(以下称A部分、B部分、C部分),亦可能仅包含为一元编码的A部分。编码型态为一元编码的A部分的最大长度为可变的,而编码型态为k阶指数哥伦布编码的B、C两部分的长度差有关,亦为一可调整的定值,这两个数值皆为解码器预先设定。
[0004] 图1以列表方式呈现索引值0~11的UEGk码各自对应的A、B、C部分内容范例。于此范例中,A部分的最大长度为四个比特,且B、C两部分的比特数相同,代表采用1阶(k=1)指数哥伦布编码。实务上,解码器可根据已知的A部分最大长度判断A部分的范围,并根据第一次出现比特0的位置判断A部分或B部分在哪里结束。以图1为例,若输入序列为{111111000111...},由于最先输入的前四个比特不包含0,解码器首先可判定输入序列中的前四个比特(1111)为目前待解码的索引值的A部分。随后,根据第一个出现的0的位置(输入序列中的第七个比特),解码器可找到B部分的结尾,进而判定B部分的内容为
110且长度为三比特。由于此范例中的B、C两部分长度相同,解码器可判定C部分的内容为随后的三个比特001。综合所述信息,目前待解码的索引值所对应的UEGk码为输入序列中的前十个比特(1111110001),而后续比特系对应于下一个索引值。
[0005] 美国第6,982,663号专利中所披露的解码方法为分别找出一索引值的A部分、B部分、C部分,再分别将这三个部分代表的数值相加。以上述UEGk码1111110001为例,现有技术中的做法是先分别计算出A部分代表的数值为4(=1+1+1+1)、B部分代表的数值为1 2 0
6(=2+2)、C部分代表的数值为1(=2)。接着,将4、6、1相加,便得出索引值为11。这种做
1 2 n
法的缺点在于,B部分的计算量会随B部分长度增加(2+2+...+2)。B部分较长时,计算复杂度会随之增加,导致降低处理效能或超出系统的容忍时脉。一般来说,利用高阶制程加快处理时脉或许是可行的方法,但会增加耗电与成本。因此本发明发明将就此一问题提出解决方案。

发明内容

[0006] 本发明针对UEGk码提出新的解码方法及解码器。不同于现有技术分别判断UEGk码的A部分、B部分、C部分各自对应的数值的做法。根据本发明的解码方法及解码器是利用查找的方式同时一次决定UEGk码的A部分和B部分对应的数值,随后再将该数值与对应于C部分的数值相加。
[0007] 根据本发明的一具体实施例为一种UEGk码的解码方法。该方法首先执行一接收步骤:自一输入比特流接收N个比特并根据N更新一比特计数。N为一正整数。若该N个比特皆为1,该接收步骤被重复。若该N个比特并非皆为1,该方法执行一搜寻步骤:根据该比特计数查找产生一第一数值。随后,根据该比特计数及一槛值,一剩余比特数M被决定。根据自该输入比特流接收的M个剩余比特,一第二数值被产生。接着,该第一数值与该第二数值被相加,以产生一索引值。
[0008] 根据本发明的另一具体实施例为一种UEGk码的解码器,其中包含一接收模、一计数模块、一比特零检测模块、一存储模块、一查找模块、一剩余比特决定模块及一计算模块。该接收模块用以接收一输入比特流,并且每次输出N个比特。N为一正整数。每当该接收模块输出N个比特,该计数模块即根据该正整数N更新该比特计数。该比特零检测模块系用以检测该接收模块最新输出的N个比特为0或1。该存储模块中储存有一查找表。若该比特零检测模块判断该接收模块最新输出的该N个比特并非皆为1,该查找模块根据该比特计数搜寻该查找表,以产生该第一数值。该剩余比特决定模块用以根据该比特计数及一门槛值决定一剩余比特数M。该剩余比特决定模块根据自该输入比特流接收的M个剩余比特产生一第二数值。该计算模块用以将该第一数值与该第二数值相加,以产生一索引值。附图说明
[0009] 为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明,其中:
[0010] 图1以列表方式呈现索引值0~11的UEGk码各自对应的A、B、C内容范例。
[0011] 图2为根据本发明的一具体实施例中的解码方法的流程图
[0012] 图3为适用于根据本发明的实施例的一种查找表范例。
[0013] 图4为根据本发明的另一具体实施例中的解码方法的流程图。
[0014] 图5和图6(A)~图6(C)为适用于根据本发明的实施例的另两种查找表范例。
[0015] 图7为根据本发明的另一具体实施例中的解码方法的流程图。
[0016] 图8为根据本发明的另一具体实施例中的解码方法的流程图。
[0017] 图9为适用于根据本发明的实施例的另一种查找表范例。
[0018] 图10为根据本发明的一具体实施例中的解码器的功能方块图。
[0019] 图11为根据本发明的另一具体实施例中的解码器的功能方块图。
[0020] 图12为根据本发明的另一具体实施例中的解码方法的流程图。
[0021] 图中元件标号说明:
[0022] 200:解码程序 S201~S210:流程步骤
[0023] 400:解码程序 S401~S410:流程步骤
[0024] 700:解码程序 S701~S713:流程步骤
[0025] 800:解码程序 S801~S816:流程步骤
[0026] 100、110:解码器 11、21:接收模块
[0027] 12、23:计数模块 13、22:比特零检测模块
[0028] 14:存储模块 14A:查找表
[0029] 15:查找模块 16:剩余比特决定模块
[0030] 17:计算模块 24:一元解码模块
[0031] 25:EGk解码模块 26:选择模块
[0032] S1201~S1210:流程步骤

具体实施方式

[0033] 根据本发明的一具体实施例为一种解码方法,其流程图如图2所示。每次要开始寻找一个新的索引值时,该方法包含:步骤S201将一比特计数(bit count)P重置为零,但不限为零。步骤S202为自输入比特流接收一个比特。步骤S203则是将比特计数P的数值加1。随后,步骤S204为判断在步骤S202中所接收的该比特是否为1。如果步骤S204的判断结果为是,步骤S202~步骤S204会被重复执行。相对地,如果步骤S204的判断结果为否,步骤S205会被执行,亦即根据比特计数P查找产生一第一数值。图3为适用于本实施例的一查找表范例。接着,步骤S206为自比特计数P减去一门槛值,以决定一剩余比特数M,在本范例中该门槛值设定为A部分最大长度。接着,步骤S207为判断剩余比特数M是否大于零。若步骤S207的判断结果为是,步骤S208会被执行,亦即根据自输入比特流接收的M个剩余比特产生一第二数值。随后的步骤S209为将步骤S205产生的第一数值与步骤S208产生的第二数值相加,以产生一索引值。相对地,若步骤S207的判断结果为否,步骤S210会被执行,令该索引值等于第一数值。
[0034] 以输入比特流为{11111110100011...}的情况来说明解码流程200。由于该输入比特流中的前七个比特皆为1,步骤S202~步骤S204会被重复执行八次。直到第八个比特0被接收,此时比特计数P累积至8后,步骤S205才首次被执行。根据图3中的查找表,比特计数P为8系对应于第一数值为18。累积至8的比特计数P代表了目前这个UEGk码的A部分和B部分的总长度为八比特。当A部分的最大长度为四比特,且B部分和C部分长度相等(k=1)。步骤S206中所采用的门槛值即为A部分的最大长度。在步骤S206中,可计算出对应于C部分的剩余比特数M等于4(=8-4)。因此,步骤S208为根据对应于C部分的四个比特,也就是输入比特流中的第九~第十二个比特(1000),判断以二进位制表示的比特码1000代表十进位制的数值8,得到第二数值为8。在步骤S209中,第一数值为18和第二数值8被相加,产生索引值26。
[0035] 以上UEGk解码系以A部分的最大长度为四个比特,且B、C两部分的比特数相同为例。然而,本发明所属技术领域中普通技术人员可理解,本发明的范畴不以此假设为限。举例而言,若A部分的最大长度为五个比特,则该门槛值可相对应地调整为五。或者,若已知B、C两部分的长度不同,可根据其长度差异(即k值)相对应地改变该门槛值,使步骤S206计算出的剩余比特数M等于C部分的长度。换言之,门槛值与A部分比特长度及B、C两部分比特长度差异有关,比特计数P与A+B部分比特长度有关,以及剩余比特数M与C部分比特长度相关即可。根据上述不同设定,建立查找表、查找第一数值、确认C部分比特长度及产生第二数值,不限于图2的实施例。
[0036] 由以上说明可看出,不同于先前技术分别判断UEGk码的A部分、B部分、C部分各自对应的数值的做法,解码流程200系利用搜寻查找表同时一次决定UEGk码的A部分和B部分对应的数值(亦即第一数值),不同于先前计数分别决定A部分及B部分对应的数值。随后再将第一数值与对应于C部分的第二数值相加。本发明发明利用比特计数P查找第一数值,可解决当B部分长度较长时,计算复杂度大幅增加的问题。须说明的是,若剩余比特数M小于零,表示目前这个UEGk码仅包含A部分,不包含B部分和C部分。因此,步骤S205产生的第一数值在步骤S210中即被决定为等于该UEGk码的索引值。
[0037] 根据本发明的另一具体实施例亦为一种解码方法,其流程图如图4所示。于此实施例中,每次要开始寻找一个新的索引值时,该方法包含:步骤S401将一比特计数P重置为零,但不限为零。步骤S402为自输入比特流接收N个比特,其中N为大于1的一整数(例如2、3、4...)。步骤S403为将比特计数P的数值加N。随后,步骤S404为判断在步骤S402中所接收的该N个比特是否皆为1。如果步骤S404的判断结果为是,步骤S402~步骤S404会被重复执行。相对地,若步骤S404的判断结果为否,步骤S405会被执行,亦即根据该N个比特和比特计数P查找产生一第一数值。图5为适用于本实施例的一查找表范例,细节容后详述。接着,步骤S406为根据该N个比特、比特计数P及一门槛值决定一剩余比特数M。接着,步骤S407为判断剩余比特数M是否大于零。若步骤S407的判断结果为是,步骤S408会被执行,亦即根据M个剩余比特产生一第二数值。随后的步骤S409为将步骤S405产生的第一数值与步骤S408产生的第二数值相加,以产生一索引值。相对地,若步骤S407的判断结果为否,步骤S410会被执行,亦即令该索引值等于第一数值。
[0038] 以输入比特流为{11111110100011...}且N等于3为例说明解码流程400。由于该比特流中的前七个比特为1,步骤S402~步骤S404会被重复执行三次。直到第三次执行步骤S402时接收三个比特101且比特计数P累积至9后,步骤S405才首次被执行。在图5呈现的查找表中,中间的索引栏位为最后一次接收的三个比特的内容,其中符号X代表不予以考虑。根据图5中的查找表,比特计数P为9且最后一次接收的三个比特的内容为10X系对应于第一数值为18。累积至9的比特计数P代表目前这个UEGk码的A部分和B部分的总长度在七比特到九比特之间。假设A部分的最大长度为四比特,且B部分和C部分等长。步骤S406中所采用的门槛值即为A部分的最大长度。根据最后一次接收的三个比特101可看出B部分在该输入比特流的第八个比特(而非第九个比特)结束,而三个比特101中的最末比特1是属于C部分。在步骤S406中,可计算出对应于C部分的比特数M等于4(=9-1-4)。步骤S408为根据对应于C部分的四个比特1000判断此UEGk码的C部分对应于数值8,产生第二数值为8。在步骤S409中,第一数值为18和第二数值8被相加,产生索引值26。
[0039] 若比特数M小于或等于零,表示目前这个UEGk码仅包含A部分,不包含B部分和C部分。因此,步骤S405产生的第一数值在步骤S410中即被决定为等于该UEGk码的索引值。与图2范例相同,虽然本实施例系以A部分的最大长度为四个比特,且B、C两部分的比特数相同来说明,但不以此设定为限。此外,整数N亦不以3为限。
[0040] 于另一实施例中,图5中的查找表可被拆开,分割为图6(A)~图6(C)呈现的三个查找表。图6(A)呈现的查找表系对应于该三个比特为0XX的情况。图6(B)呈现的查找表系对应于该三个比特为10X的情况,而图6(C)呈现的查找表系对应于该三个比特为110的情况。步骤S405可包含两个子步骤:(1)根据最后接收的N个比特自N个查找表中选择一目标查找表,以及(2)根据比特计数P搜寻该目标查找表,以产生第一数值。
[0041] 须说明的是,图3、图5以及图6(A)~图6(C)呈现的查找表系根据UEGk码的设定(例如A部分的最大长度、k值设定及N值)的所产生。
[0042] 根据本发明的另一具体实施例亦为一种解码方法,其流程图如图7所示。于此实施例中,每次要开始寻找一个新的索引值时,该方法包含:步骤S701将比特计数P重置为零,但不限为零。步骤S702为自输入比特流接收一个比特。步骤S703则是将比特计数P的数值加1。随后,步骤S704为判断比特计数P是否大于一第一门槛值。如果步骤S704的判断结果为否,步骤S705会被执行,亦即判断该比特是否为1。如果步骤S705的判断结果为是,步骤S702~步骤S704会被重复执行。相对地,若步骤S705的判断结果为否,步骤S706会被执行,亦即令索引值等于比特计数P减1。
[0043] 如果步骤S704的判断结果为是,步骤S707~步骤S713会被执行。步骤S707为判断目前接收的该比特是否为1。如果步骤S707的判断结果为是,步骤S712~步骤S713会被执行,亦即自输入比特流接收一个比特后将比特计数P的数值加1。随后,步骤S707会被再次执行。直到步骤S707的判断结果为否,步骤S708~步骤S711才被执行。步骤S708为根据比特计数P查找产生一第一数值。图3呈现的查找表范例亦适用于此实施例。步骤S709为自比特计数P减去一第二门槛值,以决定一剩余比特数M。步骤S710为根据该M个剩余比特产生一第二数值。步骤S711则是将该第一数值与该第二数值相加,以产生一索引值。
[0044] 在上面这个实施例中,第一门槛值及第二门槛值皆为待解码的UEGk码的A部分的最大长度。目前输入的比特的顺序小于或等于第一门槛值时(代表目前待解码的UEGk码仅包含A部分),是由步骤S702~步骤S706构成的前段子程序负责处理。一旦输入的比特的顺序大于第一门槛值后(代表目前待解码的UEGk码包含有A、B、C部分),便转由步骤S707~步骤S713构成的后段子程序负责处理。以第一门槛值和第二门槛值皆等于4的情况为例,当目前待解码的UEGk码所对应的索引值落在0~3之间,会是由步骤S706产生其索引值。相对地,当目前待解码的UEGk码所对应的索引值大于3,会是由步骤S711产生其索引值。实务上,配合这个实施例的查找表可以省略图3的查找表中对应于P为1~4的栏位内容。
[0045] 以第一门槛值和第二门槛值皆等于4的情况来说明解码流程700。若输入比特流为{111011...},步骤S702~步骤S705会被重复执行四次。直到第四次执行步骤S705后,步骤S705的判断结果始为否。随后,在步骤S706中,索引值被计算出等于3。
[0046] 若输入比特流为{11111110100011...},步骤S702~步骤S705会被重复执行四次。直到步骤S702~步骤S704被第五次执行后,步骤S704的判断结果始为是。此时的比特计数P等于5,比特计数P大于第一门槛值。接着,步骤S707、步骤S712和步骤S713被重复执行三次。直到接收输入比特流中的第八个比特后,步骤S707的判断结果始为否。此时的比特计数P等于8。根据图3中的查找表,比特计数P为8系对应于第一数值为18。累积至8的比特计数P代表了目前这个UEGk码的A部分和B部分的总长度为八比特。假设B部分和C部分等长。在步骤S709中,可计算出对应于C部分的剩余比特数M等于4(=8-4)。因此,步骤S710为根据对应于C部分的四个比特,亦即输入比特流中的第九~第十二个比特(1000),判断以二进位制表示的比特码1000代表十进位制数值8,产生第二数值为8。在步骤S711中,第一数值为18和第二数值8被相加,产生索引值26。
[0047] 根据本发明的另一具体实施例亦为一种解码方法,其流程图如图8所示。于此实施例中,每次要开始寻找一个新的索引值时,该方法执行步骤S801,为将比特计数P重置为第一初始值I1。步骤S802为自输入比特流接收N个比特(N为大于1的整数)。步骤S803是判断该N个比特是否皆为1。如果步骤S803的判断结果为是,步骤S804会被执行,亦即将比特计数P的数值加N。接着,步骤S805为判断比特计数P是否大于一第一门槛值。如果若步骤S805的判断结果为否,该解码流程会再回到步骤S802。另一方面,若步骤S803的判断结果为否且该N个比特中首次出现零的比特为第i个比特(i为范围在1~N间的一整数指标),步骤S807会被执行,亦即将比特计数P的数值加i。随后,步骤S808亦为判断判断比特计数P是否大于第一门槛值,第一门槛值通常设定为A部分最大长度加上第一初始值I1。如果步骤S808的判断结果为否,则在步骤S809中,索引值被设定为等于[P-I1-1]。
[0048] 如果步骤S805或步骤S808的判断结果为是,步骤S806会被执行,亦即将比特计数P设定为第二初始值I2,该第二初始值I2通常设定为A部分最大长度。接着,步骤S810为继续自输入比特流接收N个比特,步骤S811则是将比特计数P的数值加N。步骤S812为判断该N个比特是否皆为1。如果步骤S812的判断结果为是,步骤S810~步骤S812被重复执行。相对地,若步骤S812的判断结果为否,步骤S813被执行,亦即根据该N个比特和比特计数P查找产生一第一数值。图9为适用于本实施例的一查找表范例,建立比特计数P、最后N个比特和第一数值间的关系表。接着,步骤S814为根据该N个比特、比特计数P及一第二门槛值决定一剩余比特数M,该第二门槛值搭配该第二初始值亦设定为A部分最大长度。步骤S815为根据M个剩余比特产生一第二数值。随后的步骤S816为将步骤S813产生的第一数值与步骤S815产生的第二数值相加,以产生一索引值。
[0049] 相似地,在上面这个实施例中,输入的比特的顺序小于或等于第一门槛值时(代表目前待解码的UEGk码仅包含A部分),是由步骤S802~步骤S809构成的前段子程序负责处理。一旦输入的比特的顺序大于第一门槛值后(代表目前待解码的UEGk码包含有A、B、C部分),便转由步骤S810~步骤S816构成的后段子程序负责处理。以第一门槛值和第二门槛值皆等于四的情况为例,当目前待解码的UEGk码所对应的索引值落在0~3之间,会是由步骤S809产生其索引值。相对地,当目前待解码的UEGk码所对应的索引值大于3,会是由步骤S816产生其索引值。实务上,图9中的查找表亦可被拆分为三个对应于不同比特状况的子查找表。
[0050] 当A部分最大长度等于4,并设定第一门槛值和第二门槛值为4、第一初始值I1为0、第二初始值I2为4、每次接收比特N为3的情况来说明解码流程800。若输入比特流为{111011...},首次执行步骤S802时所接收的三个比特为111。因此,步骤S803首次的判断结果为是。接着,由于比特计数P等于3,步骤S805首次的判断结果会是否。第二次执行步骤S802时所接收的三个比特为011。因此,步骤S803第二次的判断结果为否。接着,由于0出现在011中的第一个比特,在步骤S807中,比特计数P会被设定为4,因而造成步骤S808的判断结果为否。随后,在步骤S809中,索引值被设定为3(=4-0-1)。
[0051] 若输入比特流为{11111110100011...},步骤S802~步骤S805会被重复执行两次。在第二次执行步骤S804之后,比特计数P等于6,因此随后的步骤S805的判断结果为是。在步骤S806中,比特计数P被重新设定为第二初始值4。须说明的是,步骤S810被首次执行时,由于A部分最大长度等于4,自输入比特流中的第五个比特开始,继续接收三个比特,也就是接收输入比特流中的第五~第七个比特111。因此,步骤S812的首次判断结果为是,使得步骤S810被再次执行。第二次执行步骤S810时所接收的三个比特为010,会使得比特计数P变为10且第二次执行的步骤S812的判断结果为否。随后,根据图9中的查找表,比特计数P为10且最后一次接收的三个比特的内容为010系对应于第一数值为18。因此,步骤S813会查找出第一数值为18。在步骤S814中,累积至10的比特计数P代表目前这个UEGk码的A部分和B部分的总长度在8比特到10比特之间。假设B部分和C部分等长。根据最后一次接收的三个比特010可推估出B部分在该输入比特流的第八个比特结束,据以调整比特计数P成8,并计算出对应于B部分和C部分各自的比特数M等于
4(=8-4)。步骤S815为根据对应于C部分的四个比特1000判断此UEGk码的C部分对应于数值8。在步骤S816中,第一数值为18和第二数值8被相加,产生索引值26。
[0052] 若输入比特流为{11110011...},则步骤S803第二次被执行后的判断结果为否。此时的比特计数P等于3。接着,在步骤S807中,由于最后接收的三个比特100中的0首次出现在其中的第二个比特(i=2),比特计数P会被设定为5(=3+2)。因此,步骤S808的判断结果将为是,使得比特计数P随后在步骤S806中被重新设定为第二初始值4。如上所述,步骤S810被首次执行时,由于A部分最大长度等于4,自输入比特流中的第五个比特开始,继续接收三个比特,也就是接收输入比特流中的第五~第七个比特001。在步骤S811中,比特计数P被设定为7。由于步骤S812的判断结果为否,步骤S813会被执行。根据图9中的查找表,比特计数P为7且最后一次接收的三个比特的内容为001系对应于第一数值为
4。因此,步骤S813会查找出第一数值为4。在步骤S814中,假设B部分和C部分等长,根据最后一次接收的三个比特001可推估出B部分在该输入比特流的第五个比特结束,据以调整比特计数P成5,并计算出对应于B部分和C部分各自的比特数M等于1(=5-4)。步骤S815为根据对应于C部分的单一个比特0判断此UEGk码的C部分对应于数值0。在步骤S816中,第一数值为4和第二数值0被相加,产生索引值4。
[0053] 根据本发明的另一具体实施例为一种UEGk解码器,其功能方块图如图10所示。解码器100包含接收模块11、计数模块12、比特零检测模块13、存储模块14、查找模块15、剩余比特决定模块16及计算模块17。实务上,解码器100可被用以执行先前介绍过的解码流程200,亦可被用以执行图4呈现的解码流程400,分述如下。
[0054] 当解码器100系用以执行解码流程200时,接收模块11接收一输入比特流。每当比特零检测模块13接收一个比特,计数模块12便更新一比特计数(例如将比特计数加1)。比特零检测模块13同时用以检测从接收模块11最新接收的比特为0或1。存储模块14中储存有一查找表14A。查找表14A的内容与该比特计数及一第一数值相关。若比特零检测模块13判断最新接收的该比特为0,查找模块15根据该比特计数搜寻查找表14A,以产生第一数值。剩余比特决定模块16系用以根据该比特计数及一门槛值决定一剩余比特数M。若剩余比特数M大于零,剩余比特决定模块16从接收模块11自该输入比特流接收的对应的M个剩余比特产生一第二数值。若剩余比特数M小于或等于零,剩余比特决定模块16令该第二数值等于零。计算模块17系用以将该第一数值与该第二数值相加,以产生一索引值。本发明所属技术领域中普通技术人员可理解,先前在介绍解码流程200时描述的实施型态皆可应用至解码器100,其细节不再赘述。
[0055] 另一方面,当解码器100系用以执行解码流程400时,接收模块11接收一输入比特流。每次比特零检测模块13自输入比特流接收N个比特(N为大于1的整数),计数模块12即更新一比特计数(例如将比特计数加N)。在这个情况下,比特零检测模块13系用以检测接收模块11最新接收的N个比特为0或1。存储模块14中储存的查找表14A与该比特计数、最新接收的N个比特及一第一数值相关。若比特零检测模块13判断最新接收的该N个比特并非皆为1,查找模块15即根据该N个比特及该比特计数搜寻查找表14A,以产生该第一数值。剩余比特决定模块16负责根据该N个比特、该比特计数及一门槛值决定一剩余比特数M。若该剩余比特数M大于零,剩余比特决定模块16根据M个剩余比特产生一第二数值。若该剩余比特数M小于或等于零,剩余比特决定模块16令该第二数值等于零。相似地,计算模块17系用以将该第一数值与该第二数值相加,以产生一索引值。本发明所属技术领域中普通技术人员可理解,先前在介绍解码流程400时描述的实施型态(例如采用三个子查找表)皆可应用至解码器100,其细节不再赘述。
[0056] 根据本发明的另一具体实施例为一种UEGk解码器,其功能方块图如图11所示。解码器110包含接收模块21、比特零检测模块22、计数模块23、一元解码模块24、k阶指数哥伦布(EGk)解码模块25以及选择模块26。实务上,解码器110可被用以执行图7所呈现的解码流程700,亦可被用以执行图8所呈现的解码流程800,分述如下。
[0057] 当解码器110系用以执行解码流程700时,接收模块21用于接收一输入比特流。每次比特零检测模块22从接收模块21最新接收的一比特为0或1,计数模块23即相对应地更新该比特计数。当最新接收的一比特为0,且该比特计数小于等于一第一门槛值时,一元解码模块24根据该比特计数产生一索引值,并经由选择模块26输出。当最新接收的一比特为0,且该比特计数大于该第一门槛值时,EGk解码模块25根据该比特计数查找产生一第一数值,以及根据该比特计数及一第二门槛值决定一剩余比特数M。EGk解码模块25根据自该输入比特流接收的M个剩余比特产生一第二数值后,将该第一数值与该第二数值相加,以产生该索引值,并经由选择模块26输出。选择模块26系用以根据该比特计数决定应自一元解码模块24或EGk解码模块25输出该索引值。本发明所属技术领域中普通技术人员可理解,先前在介绍解码流程700时描述的实施型态皆可应用至解码器110,其细节不再赘述。
[0058] 另一方面,当解码器110系用以执行解码流程800时,接收模块21接收一输入比特流。每次比特零检测模块22自输入比特流接收N个比特,其中N为大于1的一整数。比特零检测模块22用以检测最新接收的N个比特为0或1。若该N个比特包含0且该N个比特中首次出现0的比特为第i个比特,计数模块23将该比特计数的数值加上i,其中i为范围在1到N间的一整数指标。若该N个比特皆为1,计数模块23将该比特计数的数值加上N。当该比特计数小于等于一第一门槛值时,一元解码模块24根据该比特计数产生一索引值,并经由选择模块26输出。当该比特计数大于该第一门槛值时,EGk解码模块25根据该N个比特及该比特计数查找产生一第一数值,并根据该N个比特、该比特计数及一第二门槛值决定一剩余比特数M。EGk解码模块25根据自该输入比特流接收的M个剩余比特产生一第二数值后,将该第一数值与该第二数值相加,以产生该索引值,并经由选择模块26输出。选择模块26根据该比特计数决定应自该一元解码模块24或EGk解码模块25输出该索引值。本发明所属技术领域中普通技术人员可理解,先前在介绍解码流程800时描述的实施型态皆可应用至解码器110,其细节不再赘述。
[0059] 根据本发明的另一具体实施例为一种解码方法,其流程图如图12所示。于此实施例中,每次要开始寻找一个新的索引值时,该方法包含:步骤S1201将比特计数P重置为零,但不限于零。接着,步骤S1202为自输入比特流中接收一个比特,步骤S1203则是将比特计数P加1。步骤S1204为判断最新接收的该比特是否为1。若步骤S1204的判断结果为否,步骤S1207将被执行,亦即判断目前的比特计数P是否大于一门槛值。如果步骤S1207的结果亦为否,代表UEGk码仅包含A部分,则在步骤S1210中,索引值被设定为等于P-1。相对地,若步骤S1204的判断结果为是,步骤S1205将被执行,亦即判断目前的比特计数P是否大于一门槛值。如果步骤S1205的结果为否,步骤S1202~步骤S1204会被再次执行。如果步骤S1205的结果为是,则随后执行的步骤S1206为根据已接收的所述比特计算对应于A部分和B部分的索引值,细节容后详述。如图12所示,若步骤S1207的结果为是,代表UEGk码包含A、B、C三部分,接着,步骤S1208为根据该门槛值及该比特计数计算一C部分,而步骤S1209为将目前的索引值加上该C部分,成为新的索引值。上面实施例以每次自输入比特流中接收一个比特为例,但亦可每次接收N个比特(N为正整数),本发明所属技术领域中普通技术人员应可轻易调整步骤以完成UEGk码的解码。
[0060] 实务上,该门槛值即为待解码的UEGk码的A部分的最大长度。假设该门槛值等于4,且B部分、C部分等长的情况来说明上述解码流程。若输入比特流为{111011...},步骤S1202~步骤S1205会被重复执行三次。直到第四次执行步骤S1204时,步骤S1204的判断结果始为否。随后,由于目前的比特计数P等于4,并未大于门槛值4,步骤S1207的判断结果将为否。因此,步骤S1210将被执行,并计算出索引值等于3。
[0061] 若输入比特流为{11111100011...},步骤S1205被第五次执行时的判断结果始为是。在这个情况下,根据目前等于5的比特计数可判断已连续接收五个比特1。此外,根据已知的门槛值大小,可判断目前已收到的五个比特当中,前四个比特系对应于待解码的UEGk码的A部分,第五个比特则是对应于待解码的UEGk码的B部分。因此,步骤S1206第一次1
被执行时,会计算出一索引值等于6(=4+2),算式中的4是由A部分的四个比特1所贡献,
1
而算式中的2 是由B部分的第一个比特1所贡献。接着,步骤S1202~步骤S1206会被再
2 2
次执行。此次的步骤S1206会计算出新的索引值等于10(=6+2),算式中的2 是由最新收到的比特1(也就是B部分的第二个比特1)所贡献。随后,由于输入序列中的第七的比特为0,步骤S1204的第七次判断结果为否。紧接着,由于此时的比特计数等于7,步骤S1207的判断结果亦将为是。根据目前的比特计数7,将比特计数7减去门槛值4,可得到B部分的长度为3,进而得知C部分的长度亦为3。可得C部分为该输入序列在第七个比特之后的三个比特为001。因此,步骤S1208可据此计算出C部分的数值为1。随后的步骤S1209会计算出最终的索引值等于11(=10+1)。
[0062] 虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
QQ群二维码
意见反馈