专利名称:序列式解码方法与解码装置的制作方法
技术领域:
本发明是有关于一种解码方法,且特别是有关于一种序列式解码方法。
背景技术:
在通讯系统中,为了使得欲传输的数据能够更为可靠地经由通道传达到接收端,数据在基频信号处理时会使用信道编码,而目前的信道编码通常包括两种以上的编码。图1为现有技术中的传送端的信道编码方块图。
请参照图1,一消息序列b先经过外部编码器110编码为第一码字v,在经过内部编码器120编码为第二码字u,并经过调变单元130调变后,才能够传输至通道中。上述的外部编码器可利用错误检测码(Error Detection Code)来实现,其中错误检测码例如为循环冗余校验码(Cyclic Redundancy Check,CRC)或奇偶检验码(Parity Check Code)等等。上述的内部编码器可利用错误校正码(Error Correction Code)来实现,其中错误校正码例如为包括格码(Trellis code),格码透过一格子图(trellis diagram)来进行编码与解码,而常见的格码可为卷积码(Convolution Code)。
相对应于传送端,经由信道的接收信号r在接收端也必须经过解调、内部解码与外部解码的处理,才能够得到一最终输出码字(codeword)b(若在没有错误发生的状况下,最终输出码字b即为消息序列b)。
在现有技术中,已有美国专利公告第5208816号所提出的「Generalized Viterbi Decoding Algorithms」以及NambirajanSeshadri与Carl-erik W.Sundberg在1994年电机电子工程师协会(IEEE,Institute of Electrical and Electronic Engineers)的通讯会刊(Transactions on communications)第42卷第2、3、4期(VOL.50,NO.2/3/4)中发表名称为“List Viterbi Decoding Algorithm withApplication”的论文,利用维特比解码(viterbi decoding)与格子图在接收端解码出最终输出码字
。其中,维特比解码又细分为并行(Parallel)维特比解码与串行(Serial)维特比解码。图2为现有技术中的接收端并行维特比解码的方块图,图3为现有技术中的接收端串行维特比解码的方块图。
请先参照图2,接收信号r经过解调单元210后,解调出第一输出码字
至内部解码器220,而内部解码器220透过格子图找出与第一输出码字
相似的L个路径,并输出所对应的L个第二输出码字
,
,K
至外部解码器230,其中最大相似度(maximum likelihood)路径所对应的第二输出码字为
,具有第二相似度路径所对应的码字为
。以此类推,第二输出码字依照相似度分为
,
,K
,其中相似度以一计量值(metric)来计算。而外部解码器230接收到L个第二输出码字
,
,K
后,将依序判断第二输出码字中的冗余位(redundant bits)是否正确,并由第二输出码字
,
,K
解码出最终输出码字
。
请参照图3,接收信号r经过解调单元310后,解调出第一输出码字
至内部解码器320,而内部解码器320将透过格子图找出最大相似度路径,并输出最大相似度路径所对应的第二输出码字
至外部解码器330。而外部解码器330将判断第二输出码字
中的冗余位是否正确。若判断为正确时,外部解码器330将由第二输出码字
解码出最终输出码字
。反之,若判断为错误时,外部解码器330将要求内部解码器320再次输出一第二输出码字
。而内部解码器320在透过格子图找出第二相似度路径,并输出第二相似度路径所对应的第二输出码字
至外部解码器330。以此模式将可配合内部解码器320与外部解码器330解码出最终输出码字
。
然而,以并行维特比解码而言,在解码的过程中,必须在格子图中每个时序(level)的每个状态(state)上储存与计算所延伸出的继承路径(successor path)计量值,才能够找出L条相似的路径。因此,在实际应用上,并行维特比解码必须花费庞大的运算量,才能够输出L个第二输出码字。另外,不论信道状况的好坏,并行维特比解码都必须计算格子图中所有节点的继承路径计量值并维持输出L个第二输出码字至外部解码器,因此,就算在信道质量良好的状态下,并行维特比解码也无法降低其庞大的运算量。
就串行维特比解码而言,虽然一次仅须输出一个第二输出码字,但是在实际应用时,仍然必须花费庞大的计算量,来计算并储存所有节点所延伸出的继承路径计量值。并且在尚未找出最佳码字前,每当外部解码器判断出第二输出码字错误时,内部解码必须要重新由格子图的起始点出发,并重新在每一状态上决策出一条生存路径,才能够再输出另一第二输出码字。因此,若以硬件实现串行维特比解码,内部解码器必须花费大量的内存空间来储存格子图中所有路径的计量值,以重复提供不同的第二输出码字。
发明内容
本发明的目的就是在提供一种序列式解码方法,利用开放堆栈所储存的多个路径,产生多组最小计量值路径所对应的码字,以降低解码的运算量与复杂度,并减少解码的时间。
本发明的再一目的是提供一种解码装置,利用内部解码器中的开放堆栈,依序产生多组最小计量值路径所对应的码字,并输出至外部解码器,以减少内存的使用,并降低硬件成本,又能够节省解码时的运算量。
本发明提出一种序列式解码方法,此解码方法包括步骤(a)中提供一解码图,其中解码图表示编码时所经过的多个路径与多个节点,多个路径配置于多个节点之间,且每一路径分别对应一码字;步骤(b)中,放入解码图的起始点(original node)至一开放堆栈(open stack);步骤(c)中,根据一接收信号,计算开放堆栈中的一最小计量值(metric)路径的一结束点(end node)所延伸出的多个继承路径(successor path)的计量值;在步骤(d)中,删除开放堆栈中的最小计量值路径;在步骤(e)中,放入继承路径至开放堆栈;在步骤(f)中判断开放堆栈中的最小计量值路径是否到达解码图的终点(terminal node),若否,则重复步骤(c)~(f),若是,则输出最小计量值路径所对应的码字;在步骤(g)中,当开放堆栈中的最小计量值路径所对应的码字错误时,则删除开放堆栈中的最小计量值路径,并重复步骤(c)~(g)。
依照本发明的优选实施例所述,上述的序列式解码方法,其中步骤(g)包括判断最小计量值路径所对应的码字中的一冗余位(redundant bits)是否正确;若最小计量值路径所对应的码字中的冗余位错误时,则删除开放堆栈中的最小计量值路径,并重复步骤(c)~(g);若最小计量值路径所对应的码字中的冗余位正确时,则最小计量值路径所对应的码字为一最佳码字。
依照本发明的优选实施例所述,上述的序列式解码方法,其中开放堆栈用以存放多个路径,而这些路径所对应的码字具有成为最佳码字的可能性。
依照本发明的优选实施例所述,上述的序列式解码方法,其中起始点的计量值为零。
依照本发明的优选实施例所述,上述的序列式解码方法,其中解码图中的每一节点具有一计数值。
依照本发明的优选实施例所述,上述的序列式解码方法,其中于步骤(b)之前更包括将解码图中的每一节点的计数值设定为零以及设定一最大输出个数。
依照本发明的优选实施例所述,上述的序列式解码方法,其中步骤(d)更包括在步骤(d1)中,累加一特定值至该最小计量路径值的前述结束点的计数值,其中特定值为1;在步骤(d2)中,判断前述结束点的计数值为大于等于最大输出个数时,则将前述结束点放入一封闭堆栈,进入步骤(d3),否则,则进入步骤(d3);在步骤(d3)中,删除开放堆栈中的最小计量值路径。
依照本发明的优选实施例所述,上述的序列式解码方法,其中步骤(e)更包括当继承路径其中之一特定路径进入到封闭堆栈所储存的任一节点时,排除此特定路径;当继承路径其中之一与开放堆栈中的路径交会时,排除计量值较大的路径;放入剩余的继承路径至开放堆栈;依照计量值的大小,排列开放堆栈所储存的路径。
依照本发明的优选实施例所述,上述的序列式解码方法,其中接收信号透过一外部编码与一内部编码而得。
依照本发明的优选实施例所述,上述的序列式解码方法,其中内部编码用以将k个数据位编码为n个位码字,解码图的路径所对应第j个码字表示为xj,而xj∈{0,1},解码图的时序表示为l,而计量值为其中k、n为自然数,j、l为整数,φj为一对数可能性比值,且φj为实数,φj值为log[Pr(uj|0)/Pr(uj|1)],而uj为第j个接收信号,Pr(uj|0)表示当传送0时接收到uj的机率,Pr(uj|1)表示当传送1时接收到uj的机率。
依照本发明的优选实施例所述,上述的序列式解码方法,其中内部编码用以将k个数据位编码为n个位码字,解码图的路径所对应第j个码字表示为xj,而xj∈{0,1},解码图的时序表示为l,而计量值为其中k、n为自然数,j、l为整数,φj为一对数可能性比值,且φj为实数,其值为ln[Pr(uj|0)/Pr(uj|1)],而uj为第j个接收信号,Pr(uj|0)表示当传送0时接收到uj的机率,Pr(uj|1)表示当传送1时接收到uj的机率。yj为一硬式决策值,而当φj<0时,判断yj=1,当φj≥0时,判断yj=0。
依照本发明的优选实施例所述,上述的序列式解码方法,其中解码图包括格子图与树形图等等。
本发明再提出一种解码装置,用以将接收信号解码出一最终输出码字,接收器的解码装置包括一内部解码器与一外部解码器。此内部解码器利用一解码图,并由解码图之一起始点出发,且利用一开放堆栈储存所经过的路径,每当到达解码图的任一节点时,仅选择由开放堆栈中的最小计量值路径前进,并根据接收信号,计算所延伸出的多个继承路径的计量值,以及储存多个继承路径至开放堆栈,当开放堆栈中的最小计量值路径到达解码图的丨终点时,内部解码器将输出最小计量值路径所对应的码字。此外部解码器接收最小计量值路径所对应的码字,用以解码并判断最小计量值路径所对应的码字是否正确,并输出最终输出码字。当外部解码器判断最小计量值路径所对应的码字错误时,内部解码器排除开放堆栈中的最小计量值路径,并由开放堆栈中之一特定路径取代最小计量值路径,其中,特定路径在开放堆栈中具有次小的计量值。而内部解码器将继续由最小计量值路径的结束点出发,在最小计量值路径到达解码图的终点时,重新输出最小计量值路径所对应的码字至外部解码器,直到外部解码器判断最小计量值路径所对应的码字为正确。
依照本发明的优选实施例所述,上述的解码装置,其中接收信号透过一外部编码与一内部编码而得。内部编码包括格码,格码包括卷积码等等。而外部编码包括一错误检测码,错误检测码包括循环冗余校验码与奇偶检验码等等。
依照本发明的优选实施例所述,上述的解码装置,其中解码图表示编码时所经过的多个路径与多个节点,多个路径配置于多个节点之间,且每一路径分别对应一码字。
依照本发明的优选实施例所述,上述的解码装置,其中解码装置更包括一解调单元,耦接至内部解码器,根据接收信号,解调出一第一输出码字,并输出第一输出码字至内部解码器。
依照本发明的优选实施例所述,上述的解码装置,其中解码图包括一格子图。
本发明因采用一开放堆栈,让内部解码器所产生的码字错误时,能够利用开放堆栈所储存的多个路径,重新产生码字,以降低解码的运算量与复杂度,并减少解码的时间。
为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举优选实施例,并配合所附图式,作详细说明如下。
图1为现有技术中的传送端的信道编码方块图。
图2为现有技术中的接收端并行维特比解码的方块图。
图3为现有技术中的接收端串行维特比解码的方块图。
图4绘示为(3,1,2)卷积码的格子图。
图5为本发明优选实施例的解码装置方块图。
图6为本发明优选实施例的序列式解码的步骤流程图。
图7为本发明优选实施例的序列式解码的步骤流程图。
图8绘示为仿真消息序列长度为100,本发明实施例的序列式解码方法在不同的最大输出个数L下错误率趋势图。
图9绘示为仿真消息序列长度为100,本发明实施例的序列式解码方法与现有的并行维特比解码在不同的最大输出个数L下每输出位的平均解码复杂度的趋势图。
具体实施例方式 一般的通讯系统中,若所传输的信号在传送端时已经过两次以上的编码,在接收端的接收信号将会经过两次以上的解码步骤。而传送端的方块图例如为图1所示,而图1中的外部编码器例如利用错误检测码来实现,而错误检测码例如可为循环冗余校验码或奇偶检验码等等。上述的内部编码器可利用错误校正码来实现,错误校正码例如包括格码等等,而常见的格码为卷积码等等。
以下为了方便说明本发明,外部编码器例如使用一(x+1,x)的奇偶检验码,并假设消息序列b长度为3(也就是假设x=3),因此3位的消息序列b=(b0,b1,b2)将加入一冗余位v3成为第一码字v=(b0,b1,b2,v3),其中b0,b1,b2∈{0,1}。而当消息序列b中1的个数为奇数时,v3=1,反之,消息序列b中1的个数为偶数时,v3=0。
另外,在以下的实施例中,内部编码器例如使用一(n,k,m)的卷积码将第一码字v编码为第二码字u,并假设(n,k,m)=(3,1,2)。而长度为4的第一码字v,经过(3,1,2)卷积码编码时所使用的格子图如图4所示。图4绘示为(3,1,2)卷积码的格子图。图4中包括节点以及每一节点所对应的路径。而每一节点表示为l-s,其中l表示时序(level),且l∈{0,1,2,3,4,5,6};s表示状态,且s∈{0,1,2,3}。每一节点所出发的路径上对应输入的一码字与将输出的3位的格码。而当l=0~4时,由每一节点将有两条路径出发,由节点所出发的上面路径为输入码字为1时所走的路径(也就是上面路径所对应的码字为1)。由节点所出发的下面路径为输入码字为0时所走的路径(也就是下面路径所对应的码字为0)。因此,由起始点(origin node)(0-0)到终点(terminal node)(6-0)中,第一码字v中的每一位选择所要经过的路径,也就决定了输出的格码,也就是决定了内部编码器所输出的第二码字u。
相对应于传送端,接收端接收到的接收信号r也必须经过解调、内部解码与外部解码的处理,才能够得到一最终输出码字
图5为本发明优选实施例的解码装置方块图。请参照图5,解码装置包括解调单元510、内部解码器520与外部解码器530。其中,解调单元510将接收到接收信号r,并解调出一第一输出码字
至该内部解码器520。
内部解码器520将利用一解码图,由解码图的起始点出发,并利用一开放堆栈储存所经过的路径。每当到达一节点时,仅选择由开放堆栈中的最小计量值路径由前进,并根据第一输出码字
计算所延伸出的多个继承路径的计量值,以及储存多个继承路径至开放堆栈。当开放堆栈中的最小计量值路径(也就是具有最大相似度的路径)到达解码图的丨终点时,内部解码器将输出最小计量值路径所对应的码字,也就是图5中第二输出码字
在本实施例中,计量值表示内部解码器520所接收的第一输出码字
与解码图中的路径的相似度。而解码图表示编码时所经过的多个路径与多个节点,这些路径配置于多个节点之间,并且每一路径分别对应一码字。而在本实施例中,解码图例如为一格子图与一树形图等等,并且为了方面说明本发明,以下实施例皆例如以图4的格子图实施之。
请继续参照图5,外部解码器530耦接至内部解码器520并接收第二输出码字
用以解码并判断最小计量值路径所对应的码字是否正确,以输出最终输出码字
在本实施例中,由于假设内部编码是使用(3,1,2)的卷积码以及内部解码器520是利用图4的格子图,因此,外部解码器530所接收的第二码字
可表示为其中,
与
为无效的位,
为一冗余位。对应于图1的外部编码器110所使用的奇偶检验码,外部解码器530利用第二输出码字
中的冗余位
判断第二输出码字
是否正确。若外部解码器530判断出第二输出码字
正确时,将输出最终输出码字
其中若在没有错误产生的状况下,最终输出码字
将会等于图1中消息序列b。
反之,若外部解码器530判断出第二输出码字
错误时,将要求内部解码器520重新输出一第二输出码字
而内部解码器520将排除先前所输出的第二输出码字
也就是排除在开放堆栈中所储存的最小计量值路径。之后,内部解码器520再以储存于开放堆栈中的一特定路径取代最小计量值路径,而此特定路径例如为在开放堆栈中具有次小的计量值。并且,内部解码器520将继续由最小计量值路径的结束点(end node)出发,在最小计量值路径到达格子图的终点时,重新输出最小计量值路径所对应的码字至外部解码器530。也就是说,在外部编码器530侦测出判断出第二输出码字
错误时,内部解码器520将重新产生一第二输出码字
输出至外部解码器530,而此时所输出的第二输出码字
例如为具有第二相似度的路径,以让外部解码器530重新判断内部解码器520所输出的第二输出码字
是否正确。因此,依照上述的内部解码器520与外部解码器530相互配合的操作模式,内部解码器520将能够依照相似度的顺序,输出第二输出码字
至外部解码器530,直到外部解码器530判断第二输出码字
正确为止,以让外部解码器530解码出最终输出码字
并得到传送端所传送的消息序列b。
由上面所描述的实施例可知,相较于现有技术中的维特比解码,本发明实施例仅需要计算开放堆栈中最小路径计量值所延伸出的继承路径的计量值。另外,当外部解码器判断出内部解码器所输出的码字错误时,内部编码器还可利用储存于开放堆栈中的路径,重新产生一码字输出至外部解码器,也就是说,相较于现有技术中的串行维特比解码,本发明实施例不再需要由格子图的起始点重新寻找出最大相似度路径,因此,节省大量的内存空间,并减少了许多运算的复杂度。
值得一提的是,虽然在本实施例中已经对解码装置中描绘出了一个可能的型态,但熟知此技术者应知,各厂商对于解码装置的设计方式都不一样,因此本发明的应用当不限制于此种可能的型态。换言之,只要是能够利用先前所储存的路径重新产生出其它的码字,就已经是符合了本发明的精神所在。接下来将举出数个方法的实施例说明内部解码器如何产生第二输出码字,以便本技术领域者更能够轻易地依照本发明的构想来施行。
图6为本发明优选实施例的序列式解码的步骤流程图。请参照图6,首先,提供一解码图(步骤S610),其中,解码图表示编码时所经过的多个路径与多个节点,这些路径配置于多个节点之间,且每一路径分别对应一码字。而在本实施例中,解码图可例如以格子图与树形图实施之,且为了方便说明本发明,以下皆以图4的格子图作为举例。
初始时,将格子图的第一路径储存至一开放堆栈(open stack)中(步骤S620)。其中,第一路径只有包括一起始点(例如为图4中节点0-0),而第一路径的计量值为零。而在本实施例中,开放堆栈用以存放在解码步骤中经过或延伸的路径。
接下来,根据所接收的信号,计算开放堆栈中最小计量值路径的结束点所延伸出的多个继承路径的计量值(步骤S630)。此时,开放堆栈中最小计量值路径为第一路径,而第一路径的结束点为起始点0-0,以图4为例,由起始点0-0所延伸的路径为路径0-0→1-0与路径0-0→1-1,所以步骤S630中,将计算路径0-0→1-0与路径0-0→1-1的计量值。其中,计量值表示内部解码器520所接收的第一输出码字
与格子图中的路径的相似度。
之后,删除开放堆栈中最小计量值路径(步骤S640),并放入继承路径至开放堆栈(步骤S650)。此时,删除开放堆栈中所储存的第一路径,并将路径0-0→1-0与路径0-0→1-1放入开放堆栈。在本实施例中,继承路径放入开放堆栈的顺序例如为根据计量值由小至大放入,或是根据计量值由大至小放入,又或是没有一定的顺序。
接下来,判断开放堆栈中最小计量值路径是否到达格子图的终点(例如为图1中的节点6-0)(步骤S660)。若开放堆栈中所储存的路径里,最小计量值路径未到达格子图的终点,则回到步骤S630。此时,由于在开放堆栈中所储存的路径(例如为图1中路径0-0→1-0与路径0-0→1-1)皆未达格子图的终点,因此,将回到步骤S630,在由路径0-0→1-0或路径0-0→1-1的结束点所延伸的路径,依序由最小路径计量值出发,以到达格子图的终点。
反之,若开放堆栈中所储存的路径里,最小计量值路径已到达格子图的终点,则判断最小计量值路径所对应的码字是否正确(步骤S670)。在本实施例中,最小计量值路径所对应的码字即为图5中内部解码器520所输出的第二输出码字
而判断第二输出码字
方法则可例如是利用第二输出码字
中的冗余位
来判断第二输出码字
是否正确。
若判断出最小计量值路径所对应的码字错误时,将删除储存于开放堆栈中的最小计量值路径(步骤S680),并回到步骤S630,以再由开放堆栈中的最小计量值路径出发,并在到达格子图终点时,重新输出最小计量值路径所对应的码字。
若最小计量值路径所对应的码字正确时,则最小计量值路径所对应的码字为一最佳码字(步骤S690)。而在本实施例中,最佳码字即为开放堆栈中具有最小计量值路径所对应的码字,并且前述最佳码字又为一正确的码字。
为了使本领域中的具有通常知识者能够轻易实施本发明,以下将说明上述的计量值的计算方法。首先,将所接收的第一输出码字表示为N为第一输出码字的长度。第一输出码字经过硬式决策后,得到的序列表示为y=(y0,y1,K,yN),其中任意一个元素为 其中φj为对数可能性比值(log-likelihood ratio),其定义为 其中Pr(uj|0)表示当传送0时接收到uj的机率,Pr(uj|1)表示当传送1时接收到uj的机率,且φj为实数。
格子图中任意路径上的码字可以表示为x(l·n-1),而x(l·n-1)=(x0,x1,K,xl·n-1),其中,l表示此路径的结束点的时序,n表示每次将k个数据位编码为n个格码,而l为一非负的整数,n、k为自然数。以图4中的路径0-0→1-1→2-3为例,此路径的结束点为2-3,而结束点2-3的时序l为2,且n=3,因此,路径0-0→1-1→2-3所对应的格码为x5=111010。而计量值的计算方法有两种,第一种为 第二种为 上述二种计量值的计算方法皆表示,当路径上码字与接收信号越相似时,所计算出的计量值越小,因此,可利用计量值来判断格子图中路径上所对应的码字与第一输出码字的相似度。并且,由第(1)式与第(2)式所计算出的计量值皆为一非负(non-negative)的值,因此,此两种计量值的计算方法可应用于格子图中,并在步骤S630中,仅须计算由结束点所延伸出的路径的计量值,再累加至最小计量值路径的计量值,即可得到继承路径的计量值。
值得一提的是,由于第(2)式中没有出现yj项,因此,当使用第二种计量值的计算方法时,能够省去解码时硬式决策的步骤,也就降低了在做决策时发生错误的机率,相对地增加序列式解码的表现。举例来说,当实际传输的通道为加成性白高斯噪声信道(Additive White Gaussian Noise,AWGN),则对数可能性比值φj=C·rj,其中C为一常数,而第(2)式转变为 由第(3)式更能观察出,第二种计量值的计算方法实际应用于接收端的电路时,将可省去执行决策的电路,更加减少硬件的成本。
为了使得本领域的具有通常知识者能够更轻易实施本发明,以下将举出另一实施例更加详细说明本发明所提出的序列式解码方法。
图7为本发明优选实施例的序列式解码的步骤流程图。请参照图7,首先,提供一解码图(步骤S710),其中,解码图表示编码时所经过的多个路径与多个节点,这些路径配置于多个节点之间,且每一路径分别对应一码字。而在本实施例中,解码图可例如以格子图与树形图实施之,且为了方便说明本发明,以下皆以图4的格子图作为举例。
接下来,将格子图中的每一节点的计数值设定为零,并且设定一最大输出个数的值(步骤S715)。在本实施例中,将格子图中的每一节点分别设置一计数值,此计数值用以计数由每一节点所延伸出继承路径的次数。而最大输出个数(以下皆表示为L)用来表示每一节点能够延伸出继承路径的最多次数,在本实施例中,假设最大输出个数L=3。并且最大输出个数L又用来表示图5中的最多可输出的第二输出码字
的个数,也就是说,最多能够容许第二输出码字
错误的次数为L。当在通道环境极差的状况下,且内部解码器520依序输出的L个第二输出码字
皆被判断为错误时,解码装置将会要求传送端重新传送此笔接收信号。
请继续参考图7,将格子图的第一路径储存至一开放堆栈中(步骤S720)。其中,第一路径只有包括一起始点(例如为图4中节点0-0),而第一路径的计量值为零。而在本实施例中,开放堆栈用以存放在解码步骤中经过或延伸的路径。
接下来,根据所接收的信号,计算开放堆栈中最小计量值路径的结束点所延伸出的多个继承路径的计量值(步骤S725)。此时,开放堆栈中最小计量值路径为第一路径,而第一路径的结束点为起始点0-0,以图4为例,由起始点0-0所延伸的路径为路径0-0→1-0与路径0-0→1-1,所以在步骤S630中,将计算继承路径0-0→1-0与继承路径0-0→1-1的计量值。在本实施例中,计量值的计算方法例如为前述的第(1)式与第(2)式其中之一,但并不限定于此。
之后,将最小计量值路径的结束点的计数值加上一特定值(步骤S730)。在本实施例中,此特定值例如为1,但不限定其范围。此时,最小计量值路径的结束点即为第一路径的结束点(也就是图4中节点0-0),而在步骤S730中,将节点0-0的计数值由0累加特定值(例如为1)后转变为1。
再来将判断最小计量值路径的该结束点的计数值是否大于等于最大输出个数L(步骤S735),此时该结束点为第一路径的结束点(也就是图4中节点0-0)。若该结束点的计数值是大于等于最大输出个数时,则该结束点将被放入一封闭堆栈(步骤S740),并进入步骤S745。反之,若该结束点的计数值小于最大输出个数L,则直接进入步骤S745。此时,由于该结束点的计数值为1,并且此计数值小于最大输出个数L(在本实施例中L假设为3),因此,直接进入步骤S745。
在本实施例中,封闭堆栈用以存放多个节点,而封闭堆栈中所储存的节点将储存曾经为开放堆栈中最小计量值路径的结束点信息,其结束点信息为结束点的时序与状态。也就是说,当有任何路径的结束点与封闭堆栈中所储存的节点相同时,此路径将不会再前进。
之后,删除开放堆栈中最小计量值路径(步骤S745)。此时开放堆栈中只有第一路径,因此,删除第一路径,而使得此时的开放堆栈中没有存在任何路径。
接下来,判断多个继承路径中是否存在一特定路径进入到封闭堆栈所储存的任一节点(步骤S750)。若继承路径中存在有一特定路径时,则排除此特定路径(步骤S755),再继续进行之后步骤。若继承路径中没有存在此特定路径,则直接进行之后步骤。此时,继承路径为节点0-0→1-0的路径与节点0-0→1-1的路径,而封闭堆栈中没有任何节点,因此直接进行之后的步骤。
接下来,判断继承路径其中之一是否与储存于开放堆栈中的路径交会(步骤S760)。若继承路径其中之一与储存于开放堆栈中的路径交会时,则删除计量值较大的路径(步骤S765),并继续进行之后的步骤。若否,则直接进行之后的步骤。此时,由于开放堆栈中没有储存路径,因此直接进行之后的步骤。
之后,放入剩余的继承路径至开放堆栈(步骤S770)。此时,由于并未执行过步骤S755与步骤S765,也就并未删除任何的路径,因此,在步骤S770中,将放入节点0-0→1-0的路径与节点0-0→1-1的路径。在本实施例中,放入继承路径至开放堆栈后,可依据计量值,由小至大依序重新排列开放堆栈中所储存的全部路径,以使得在步骤S725中可以直接由开放堆栈中的最上面的路径得到最小计量值路径。并且若在放入继承路径至开放堆栈之前,开放堆栈中的路径已依照其计量值依序排列,则在执行步骤S770时,依照继承路径的计量值插入开放堆栈中已依照计量值排列的路径,就能够使得开放堆栈中所有储存的路径依照其计量值依序排列。
接下来,判断开放堆栈中最小计量值路径是否到达格子图的终点(例如为图1中的节点6-0)(步骤S780)。若开放堆栈中所储存的路径里,最小计量值路径未到达格子图的终点,则回到步骤S725。此时,由于在开放堆栈中所储存的路径(例如为图1中节点0-0→1-0的路径与节点0-0→1-1的路径)皆未达格子图的终点,因此,将回到步骤S725,再由节点0-0→1-0的路径与节点0-0→1-1的路径延生出的路径,依序由最小路径计量值出发,以到达格子图的终点。
反之,若开放堆栈中所储存的路径里,最小计量值路径已到达格子图的终点,则判断最小计量值路径所对应的码字中的一冗余位是否正确(步骤S785)。在本实施例中,最小计量值路径所对应的码字即为图5中内部解码器520所输出的第二输出码字
而判断第二输出码字
方法则可例如是利用第二输出码字
中的冗余位
来判断第二输出码字
是否正确。
若判断出最小计量值路径所对应的码字错误时,将删除储存于开放堆栈中的最小计量值路径(步骤S790),并回到步骤S725,以再由开放堆栈中的最小计量值路径出发,并在到达格子图终点时,重新输出最小计量值路径所对应的码字。
若最小计量值路径所对应的码字正确时,则最小计量值路径所对应的码字为一最佳码字(步骤S795)。而在本实施例中,最佳码字即为开放堆栈中具有最小计量值路径所对应的码字,并且最佳码字为一正确的码字。
然而,本领域具通常知识者应当可观察出,若在步骤S785中,判断出最小计量值路径所对应的码字错误时,则只需在删除开放堆栈中的最小计量值路径后,再由开放堆栈中所储存的最小计量值路径的结束点出发,并继续执行之后的步骤,就可再输出最小计量值路径所对应的码字,相较于现有技术中的序列为特比解码,本发明实施例能够不需要再回到格子图的起始点,也不需要重新在每一状态上决策出生存路径,就可再输出最小计量值路径所对应的码字(也就是说能够使得内部解码器再次输出一第二输出码字
)。因此,在实际应用时,也就相对地节省了运算的复杂度以及运算的时间。并且内部解码器也仅需要储存开放堆栈内的路径,以节省内部解码器中的内存空间。
上述实施例所提出的序列式解码方法,能够以一个程序进行仿真。而以下图8与图9将绘示出各种编码条件下的仿真图,并与现有技术中的维特比解码比较运算的复杂度,而以下的仿真所使用的传输通道皆假设为加成性白高斯噪声信道。
图8绘示为仿真消息序列长度为100,本发明实施例的序列式解码方法在不同的最大输出个数L下错误率趋势图。请参照图8,其横坐标为位能量与噪声能量比值Eb/N0,且单位为dB,纵坐标为区块错误率(Block Error Rate)。图8中的三条曲线分别以最大输出个数L=1、2与4作为模拟。而由图8可观察出当L值越大时,若在相同的Eb/N0值下,L值越大能够得到更低的区块错误率。并且,当Eb/N0=2.5时,L=1的序列式解码方法区块错误率为10-1.8,L=2的序列式解码方法区块错误率为10-2,L=4的序列式解码方法区块错误率为10-1.6。也就是说,当噪声比很大时,本发明所提出的序列式解码方法,仍然能够达到很低的区块错误率。
图9绘示为仿真消息序列长度为100,本发明实施例的序列式解码方法与习知的并行维特比解码在不同的最大输出个数L下每输出位的平均解码复杂度的趋势图。请参照图9,其横坐标为位能量与噪声能量比值Eb/N0,且单位为dB,纵坐标为每输出位的平均解码复杂度。图9中的三条虚线为使用序列式解码方法,并分别以最大输出个数L=1、2与4作为模拟。图9中的三条实线为使用并行维特比解码方法,并分别以最大输出个数L=1、2与4作为模拟。
由图9可观察出,由于并行维特比解码不论信道质量的好坏,皆输出相同个数的第二码字至外部解码器,因此,图9中的三条实线皆为一直线,也就是说,不论信道质量的好坏,并行维特比解码皆无法降低其解码的复杂度。反观本发明的序列式解码方法,其解码复杂度明显地小于并行维特比解码,并且当信道质量较好的时候,本发明的序列式解码方法的解码复杂度约节省了一半以上的复杂度。举例来说,位能量与噪声能量比值Eb/N0=4,而最大输出个数L=3时,序列式解码复杂度的平均值约为101,而并行维特比解码复杂度的平均值约为102.5,因此,并行维特比解码复杂度约为序列式解码复杂度的31倍。
综上所述,本发明实施例所提出的序列式解码方法以及解码装置,相较于现有技术中的并行维特比解码,本发明实施例只有在外部解码器判断出内部解码器所输出的码字错误时,内部编码器才利用储存于开放堆栈中的路径,重新产生一码字输出至外部解码器。因此,在信道质量良好的状况下,本发明实施例的序列式解码将能够降低庞大的运算量。
另外,本发明实施例所提出的序列式解码方法以及解码装置,相较于现有技术中的串行维特比解码,在外部解码器判断出内部解码器所输出的码字错误时,内部编码器只需利用储存于开放堆栈中的路径,重新产生并输出一第二输出码字至外部解码器。换句话说,在外部解码器判断出内部解码器所输出的码字错误时,本发明实施例所提出的序列式解码不再需要由格子图的起始点重新寻找出最大相似度路径,因此,能够减少许多运算的复杂度,并减少解码的运算时间。另外,相较于现有技术中的串行维特比解码,本发明实施例的序列式解码也不在需要庞大的内存来储存所有路径的计量值,也就相对地节省了大量的内存空间。
在实际的应用上,本发明实施例所指出的序列式解码能够轻易地以硬件的方式实施集成电路中,或是直接将本发明撰写于一软件中,且此软件例如应用于数字信号处理(Digital SignalProcessing,DSP)的平台。
虽然本发明已以优选实施例揭露如上,然其并非用以限定本发明,任何熟习此技艺者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视后附的申请专利范围所界定的为准。
权利要求
1.一种序列式解码方法,包括下列步骤
(a)提供一解码图,所述解码图表示编码时所经过的多个路径与多个节点,所述多个路径配置于所述多个节点之间,且所述每一路径分别对应一码字;
(b)放入所述解码图的丨起始点至一开放堆栈;
(c)根据一接收信号,计算所述开放堆栈中的一最小计量值路径的一结束点所延伸出的多个继承路径的计量值;
(d)删除所述开放堆栈中的所述最小计量值路径;
(e)放入所述多个继承路径至所述开放堆栈;
(f)判断所述开放堆栈中的所述最小计量值路径若到达所述解码图的一终点,输出所述最小计量值路径所对应的码字,否则,回到步骤(c);以及
(g)判断所述开放堆栈中的所述最小计量值路径所对应的码字若为错误时,则删除所述开放堆栈中的所述最小计量值路径,并回到步骤(c)。
2.如权利要求1所述的序列式解码方法,其中步骤(g)包括下列步骤
判断所述最小计量值路径所对应的码字中的一冗余位是否正确;以及
若所述最小计量值路径所对应的码字中的所述冗余位错误时,则删除所述开放堆栈中的所述最小计量值路径,并重复步骤(c)~(g);
若所述最小计量值路径所对应的码字中的所述冗余位正确时,则所述最小计量值路径所对应的码字为一最佳码字。
3.如权利要求2所述的序列式解码方法,其中所述开放堆栈用以存放所述多个路径,而所述多个路径所对应的码字具有为所述最佳码字的可能性。
4.如权利要求1所述的序列式解码方法,其中所述起始点的计量值为零。
5.如权利要求1所述的序列式解码方法,其中所述解码图中的所述多个节点分别具有相对应的一计数值。
6.如权利要求5所述的序列式解码方法,其中于步骤(b)之前更包括将所述解码图中的每一所述多个节点的计数值设定为零。
7.如权利要求5所述的序列式解码方法,其中于步骤(b)之前更包括设定一最大输出个数。
8.如权利要求7所述的序列式解码方法,其中步骤(d)更包括下列步骤
(d1)累加一特定值至所述最小计量路径值的所述结束点的计数值;
(d2)判断所述最小计量路径值的所述结束点的计数值为大于等于所述最大输出个数时,则将所述结束点放入一封闭堆栈,进入步骤(d3),否则,进入步骤(d3);以及
(d3)删除所述开放堆栈中的所述最小计量值路径。
9.如权利要求8所述的序列式解码方法,其中所述特定值为1。
10.如权利要求8所述的序列式解码方法,其中步骤(e)更包括下列步骤
当所述多个继承路径其中之一特定路径进入到所述封闭堆栈所储存的任一节点时,排除所述特定路径;
当所述多个继承路径其中之一与所述开放堆栈中的路径交会时,排除具有较大计量值的路径;以及
放入剩余的所述多个继承路径至所述开放堆栈。
11.如权利要求10所述的序列式解码方法,其中在放入剩余的所述多个继承路径至所述开放堆栈的步骤之后更包括依照计量值的大小,排列所述开放堆栈所储存的路径。
12.如权利要求1所述的序列式解码方法,其中所述接收信号透过一外部编码与一内部编码而得。
13.如权利要求12所述的序列式解码方法,其中所述内部编码为一格码。
14.如权利要求12所述的序列式解码方法,其中所述内部编码用以将k个数据位编码为n个位码字,所述解码图的路径所对应第j个码字表示为xj,而xj∈{0,1},所述解码图的时序表示为l,而计量值为其中k、n为自然数,j、l为整数,φj为一对数可能性比值,且φj为实数。
15.如权利要求14所述的序列式解码方法,其中φj为log[Pr(uj|0)/Pr(uj|1)],而uj为第j个接收信号,Pr(uj|0)表示当传送0时接收到uj的机率,Pr(uj|1)表示当传送1时接收到uj的机率。
16.如权利要求12所述的序列式解码方法,其中所述内部编码用以将k个数据位编码为n个位码字,所述解码图的路径所对应第j个码字表示为xj,而xj∈{0,1},所述解码图的时序表示为l,而计量值为其中k、n为自然数,j、l为整数,φj为一对数可能性比值,且φj为实数,而yj为一硬式决策值。
17.如权利要求16所述的序列式解码方法,其中φj为ln[Pr(uj|0)/Pr(uj|1)],而uj为第j个接收信号,Pr(uj|0)表示当传送0时接收到uj的机率,Pr(uj|1)表示当传送1时接收到uj的机率。
18.如权利要求17所述的序列式解码方法,其中当φj<0时,判断yj=1,当φj≥0时,判断yj=0。
19.一种解码装置,用以将一接收信号解码出一最终输出码字,所述解码装置包括
一内部解码器,利用一解码图,由所述解码图的一起始点出发,并利用一开放堆栈储存所经过的路径,每当到达所述解码图的任一节点时,仅选择由所述开放堆栈中的一最小计量值路径前进,并根据所述接收信号,计算所述最小计量值路径的结束点所延伸出的多个继承路径的计量值,以及储存所述多个继承路径至所述开放堆栈,当所述开放堆栈中的所述最小计量值路径到达所述解码图的丨终点时,所述内部解码器输出所述最小计量值路径所对应的码字;以及
一外部解码器,接收所述最小计量值路径所对应的码字,用以解码并判断所述最小计量值路径所对应的码字为正确时,输出所述最终输出码字;
其中,当所述外部解码器判断所述最小计量值路径所对应的码字错误时,所述内部解码器排除所述开放堆栈中的所述最小计量值路径,并由所述开放堆栈中的一特定路径取代所述最小计量值路径,其中,所述特定路径在所述开放堆栈中具有次小的计量值,而所述内部解码器将继续由所述最小计量值路径的结束点出发,在所述最小计量值路径到达所述解码图的所述终点时,重新输出所述最小计量值路径所对应的码字至所述外部解码器,直到所述外部解码器判断所述最小计量值路径所对应的码字为正确。
20.如权利要求19所述的解码装置,其中所述接收信号透过一外部编码与一内部编码而得。
21.如权利要求20所述的解码装置,其中所述内部编码为一格码。
22.如权利要求19所述的解码装置,其中所述解码图表示编码时所经过的多个路径与多个节点,所述多个路径配置于所述多个节点之间,且所述每一路径分别对应一码字。
23.如权利要求19所述的解码装置,其中所述解码装置更包括一解调单元,耦接至所述内部解码器,根据所述接收信号,解调出一第一输出码字,并输出所述第一输出码字至所述内部解码器。
全文摘要
本发明提出一种序列式解码方法与解码装置,透过一开放堆栈,让内部解码器所产生的码字错误时,能够利用开放堆栈所储存的多个路径,重新产生一组新的码字,以降低解码的复杂度。
文档编号H04L25/03GK101179544SQ200610144420
公开日2008年5月14日 申请日期2006年11月7日 优先权日2006年11月7日
发明者谢欣霖, 陈伯宁, 韩永祥 申请人:凌阳科技股份有限公司