專利名稱:具有雙向滑動窗口體系結(jié)構(gòu)的map譯碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的各種實施例適用于通信系統(tǒng),更具體地說,適用于數(shù)字通信 系統(tǒng)中對數(shù)據(jù)進行譯碼的設(shè)備和/或方法。
背景技術(shù):
在通信系統(tǒng)使用多種技術(shù)來增加信息傳輸量,而同時使傳輸差錯最小 化。在這些通信系統(tǒng)中,信息通常表示為二進制位序列或是稱為幀的位塊。 將二進制信息調(diào)制為信號波形并通過通信信道傳輸。通信信道會引入破壞 傳輸信號的噪聲和干擾。在接收機端,已接收的信號可能被破壞,而成為 被傳輸?shù)亩M制信息的估計fi。誤碼或誤幀數(shù)取決于通信信道中的噪聲和 干擾的量。
為了抵銷傳輸信道破壞的影響,在數(shù)字通信系統(tǒng)中經(jīng)常應(yīng)用糾錯編碼 來保護數(shù)字信息免受噪聲和干擾的影響,并減少誤碼/誤幀數(shù)。信道編碼通 常通過有選擇地將冗余位引入被傳輸?shù)男畔⒘髦衼硗瓿伞_@些附加信息位 允許檢測和校正接收到的數(shù)據(jù)流中的誤碼,從而提供更加可靠的傳輸。
一種類型的糾錯碼為turbo碼,其具有接近香農(nóng)限的糾錯性能。Turbo 編碼的基礎(chǔ)是在將要通過信道傳輸?shù)臄?shù)據(jù)中引入冗余。冗余數(shù)據(jù)有助于從 接收數(shù)據(jù)中恢復(fù)原始數(shù)據(jù)。turbo碼可以獲得香農(nóng)信道容量的大約1 dB之內(nèi) 的傳輸特性。
通信理論中的一種眾所周知的公理是對極大塊長度n隨機選取的代碼能夠接近香農(nóng)信道容量限。然而,對這種代碼的譯碼隨著n增加,直到某 一點,譯碼變得在物理上無法實現(xiàn)。
turbo碼的一類譯碼器為最大后驗(MAP)算法,也稱為后驗概率(APP) 算法。MAP算法通過對分塊的二元格狀樹進行前向遞歸并隨后進行反向遞 歸來對塊進行譯碼,從而得出格狀圖中每個狀態(tài)的一對狀態(tài)度量。格狀樹 的前向遞歸以前向方向?qū)K進行譯碼,從而得到信息序列的第一估計值(前
從"^獲得信息序列的第,二估計值(反向"^口態(tài)度量)、。在;專統(tǒng)口的MAP算法 實現(xiàn)中, 一個問題是,對前向狀態(tài)度量和反向狀態(tài)度量進行存儲,即使是 對于適中的約束長度和塊長度,也會占據(jù)極大的存儲空間。
傳統(tǒng)MAP算法的另一個困難在于,順序處理(即前向遞歸和反向遞歸) 無法滿足譯碼時間的約束。特別是,對塊的二進制格狀結(jié)構(gòu)進行前向遞歸 并隨后進行反向遞歸需要的時間可能比對速率敏感的應(yīng)用程序所容許時間 更長。數(shù)據(jù)塊的譯碼需要的時間可能比對速率敏感的應(yīng)用程序所期望的時 間更長。
發(fā)明內(nèi)容
在一方面, 一種譯碼器包括使用滑動窗口體系結(jié)構(gòu)將數(shù)據(jù)塊分隔成 多個子塊的塊分隔器;耦合到所述塊分隔器的第一譯碼器,用于接收所述
多個子塊,該第一譯碼器包括多個并行譯碼器,這些并行譯碼器并行確定 第一組狀態(tài)度量,該第一組狀態(tài)度量是所述多個子塊中至少二個子塊的狀
態(tài)度量;以及耦合到所述第一譯碼器的第二譯碼器,用于從所述第一譯碼 器接收所述多個子塊,以及計算第二組所述多個子塊的狀態(tài)度量。第一和 第二譯碼器可以實現(xiàn)最大后驗概率(MAP)算法,來糾正數(shù)據(jù)塊中的差錯。第 一和/或第二譯碼器可以確定i據(jù)塊的格狀結(jié)構(gòu)的前向狀態(tài)度量。第二譯碼
器還可以將從第一譯碼器接收的每個子塊分隔成多個較小的段,并在該多 個較小的段上應(yīng)用滑動窗口體系結(jié)構(gòu)計算第二組狀態(tài)度量。第二譯碼器可 包括多個并行譯碼器,其中第二譯碼器中的每個并行譯碼器對應(yīng)于第一譯 碼器中的多個并行譯碼器中的一個。每個子塊可以包括多個段,其中第二 譯碼器可設(shè)置為, 一旦第一譯碼器已計算出一個段的第一組狀態(tài)度量,則第二譯碼器計算該段的第二組狀態(tài)度量。
在另一方面, 一種用于遞歸地對編碼塊中的信息進行譯碼的方法,該 方法包括將所述編碼數(shù)據(jù)塊分隔成多個較小的子塊,每個子塊包括多個 較小的段;并行獲得兩個或更多所述子塊的前向狀態(tài)度量;以及一旦獲得 了一個段的前向狀態(tài)度量,就獲得該段的反向狀態(tài)度量。該方法還可以包 括接收具有N個時間步長格狀結(jié)構(gòu)的編碼信息塊;將編碼塊分隔成N/L個 子塊,其中L為大于零的整數(shù);以及并行計算N/L個子塊的前向狀態(tài)度量。 可替換地,該方法還可以包括存儲每個子塊第一段的第一組度量;基于 第一段的第一個和第二個狀態(tài)度量獲取第一段的似然比;以及一旦得出第 一段的似然比,就丟棄每個子塊第一段的第一組度量。
在上述的譯碼器和方法中,每個子塊可以與前一子塊重疊格狀結(jié)構(gòu)的k 個時間步長,其中,k為大于零的整數(shù)值。與第一子塊之后的每個子塊的前 k個時間歩長相關(guān)聯(lián)的度量將從第一組狀態(tài)度量中丟棄。子塊的長度可由譯 碼時間約束決定。數(shù)據(jù)塊可采用turbo碼編碼。 一旦計算出了一個段的似然 比,該段的第一組度量將從存儲設(shè)備中被丟棄。在計算數(shù)據(jù)塊中數(shù)據(jù)的似 然比過程中可以使用第一組狀態(tài)度量和第二組狀態(tài)度量。
應(yīng)該注意到,所述的譯碼器和/或方法可以由用于執(zhí)行一個或多個所述 譯碼器和/或方法的功能的處理器來實現(xiàn)。類似的,所述的譯碼器和/或方法 可以由包含指令的機器可讀介質(zhì)來實現(xiàn),其中所述指令設(shè)置為執(zhí)行譯碼器 和/或方法的一個或多個功能。
圖1為示出了可實現(xiàn)本發(fā)明的一個或多個特性的示例性通信系統(tǒng)的方 框圖。
圖2為示出了用于執(zhí)行數(shù)據(jù)譯碼的示例性接收設(shè)備的方框圖。
圖3為示出了根據(jù)本發(fā)明的一個特征,具有滑動窗口體系結(jié)構(gòu)并在前
向譯碼器上并行譯碼的示例性譯碼器的方框圖。
圖4為示出了信息塊如何在前向譯碼器的滑動窗口體系結(jié)構(gòu)中分隔成
較小的子塊。
圖5為示出了具有多個并行譯碼器的示例性譯碼器結(jié)構(gòu)的框圖。圖6為示出了由前向和反向譯碼器對數(shù)據(jù)塊分隔和處理的示例性表格。 圖7為示出了在前向和反向譯碼路徑上采用滑動窗口實現(xiàn)遞歸譯碼的
示例性方法的流程圖。
圖8為示出了在兩級譯碼器中,分隔接收到的數(shù)據(jù)塊的示例性方法的
流程圖。
圖9示出了另一種示例性譯碼裝置。
具體實施例方式
下面,將給出具體的細(xì)節(jié)描述,從而提供對實施例的深入理解。然而, 本領(lǐng)域的普通技術(shù)人員可以理解,這些實施例可以在沒有這些具體細(xì)節(jié)的 情況下實施。例如,可在框圖中示出電路,目的在于避免由于不必要的細(xì) 節(jié)而使實施例不易理解。
還注意到,可將各實施例表示為以流程圖、流圖、結(jié)構(gòu)圖或是方框圖 形式描述的過程。盡管流程圖可能將操作描述為順序過程,很多操作可以 以并行或并發(fā)的方式進行。另外,操作的順序可以重新安排。當(dāng)一個過程 的操作完成時,該過程終止。過程(process)可以對應(yīng)于方法、功能、過程 (procedure)、子例程、子程序等等。當(dāng)一個過程對應(yīng)一個函數(shù)時,該過程的 終止對應(yīng)于該函數(shù)返回到調(diào)用函數(shù)或主函數(shù)。
此外,存儲介質(zhì)可以表示用于存儲數(shù)據(jù)的一個或多個器件,包括只讀 存儲器(ROM)、隨機存取存儲器(RAM)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃速 存儲器器件和/或其他用于存儲信息的機器可讀介質(zhì)。術(shù)語"機器可讀介質(zhì)" 包括,但不僅限于便攜式或固定存儲設(shè)備、光存儲設(shè)備、無線信道、以 及各種其他能夠存儲、包含或輸送指令和/或數(shù)據(jù)的介質(zhì)。
另外,各實施例可由硬件、軟件、固件、中間件或者他們的組合實現(xiàn)。 當(dāng)在軟件、固件、中間件或微碼中實現(xiàn)時,可將運行必要任務(wù)的程序代碼 或代碼段存儲在諸如存儲介質(zhì)或其他存儲模塊的機器可讀介質(zhì)中。處理器 可執(zhí)行必要的任務(wù)。代碼段可表示過程、函數(shù)、子程序、程序、例程、子 例程、模塊、軟件包、類或者是指令、數(shù)據(jù)結(jié)構(gòu)或程序語句的組合。 一個 代碼段可通過傳遞和/或接收信息、數(shù)據(jù)、實參、參數(shù)或存儲器內(nèi)容與另一 代碼段或硬件電路相耦合。信息、實參、參數(shù)、數(shù)據(jù)等等可經(jīng)由適當(dāng)?shù)姆绞絺鬟f、轉(zhuǎn)發(fā)或傳輸,所述適當(dāng)?shù)姆绞桨ù鎯ζ鞴蚕?、消息傳遞、令牌 傳遞以及網(wǎng)絡(luò)傳輸?shù)鹊取?br>
一般地,本文公開了一種MAP譯碼器或以MAP譯碼器作為組成部分 (例如,遞歸前向和反向譯碼器)的turbo譯碼器,所述MAP譯碼器或turbo 譯碼器具有雙向滑動窗口。進入前向譯碼器中的數(shù)據(jù)塊被細(xì)分為子塊,并
且對子塊的前向遞歸操作是并行進行的。這種方法認(rèn)識到計算前向狀態(tài)度 量的前向遞歸不需要從格狀結(jié)構(gòu)的第一時間步長開始。而取代之的是,將 滑動窗口體系結(jié)構(gòu)應(yīng)用于前向狀態(tài)度量計算。這樣可以減少前向狀態(tài)度量 (通過傳統(tǒng)算法)的存儲空間,并且,由于前向狀態(tài)度量是并行計算的,所以 也將減少譯碼時間。
另外,在反向譯碼器上,甚至可將來自前向譯碼器的子塊進一步細(xì)分。 還可將用于反向狀態(tài)度量計算的滑動窗口體系結(jié)構(gòu)應(yīng)用于子塊的每一個(或 前向滑動窗口),從而減少用于前向狀態(tài)度量的存儲。
圖1為示出了可實現(xiàn)本發(fā)明的一個或多個特性的示例性通信系統(tǒng)的方 框圖。該通信系統(tǒng)包括第一設(shè)備102,第一設(shè)備102對信息進行編碼來通過 通信信道104將信息傳輸?shù)降诙O(shè)備106,第二設(shè)備106對該信息進行譯碼。 第一設(shè)備102包括接收數(shù)據(jù)并采用糾錯碼對其進行編碼的編碼器108。然后, 將編碼數(shù)據(jù)發(fā)送至調(diào)制器110,調(diào)制器110將信息調(diào)制到載波信號上,然后 由發(fā)射機112發(fā)射。通信信道可以是任何將編碼信息輸送到接收方第二設(shè) 備106的介質(zhì),包括有線、無線、無線電、衛(wèi)星或它們的結(jié)合。第二設(shè)備 106包括接收機114和解調(diào)器116,解調(diào)器116解調(diào)所接收信號,并將分組、 幀或數(shù)據(jù)塊提供給譯碼器118。譯碼器118對信息進行譯碼,從而提供數(shù)據(jù) 輸出。譯碼器118可設(shè)置為實現(xiàn)最大后驗(MAP)算法,也稱為后驗概率(APP) 算法。
圖2為示出了用于對數(shù)據(jù)進行解碼的示例性接收設(shè)備202的方框圖。 接收設(shè)備202包括通信接口 204,其從通信信道接收載有信息的信號。隨后, 通信接口 204將所接收載有信息的信號發(fā)送到用于對所接收信號中的信息 進行譯碼的處理系統(tǒng)206。
處理系統(tǒng)206的功能是作為MAP譯碼器或以MAP譯碼器作為組成部 分(例如遞歸前向和反向譯碼器)的turbo譯碼器,并且該處理系統(tǒng)在譯碼器的兩個前向和反向遞歸路徑上都實現(xiàn)滑動窗口。從通信接口 204接收的信 息被細(xì)分為較小的塊(即子塊)并在兩個或更多個的子塊上并行執(zhí)行前向遞 歸功能。為了這個目的,處理系統(tǒng)206可包括一個或多個處理器,專用集 成電路(ASIC)和/或用于并行運行的譯碼器件。前向譯碼器計算子塊從開頭 到末端的狀態(tài)度量,而反向譯碼器計算子塊從末端到開頭的度量。存儲器 設(shè)備208可與處理系統(tǒng)206相耦合,用來存儲在譯碼過程中生成的前向和/ 或反向狀態(tài)度量。
一個附加特性提供了,處理系統(tǒng)206也可用于實現(xiàn)具有滑動窗口體系 結(jié)構(gòu)的反向譯碼器,用于細(xì)分了的較小塊中每一塊的反向狀態(tài)度量的計算。 當(dāng)實現(xiàn)反向譯碼器時,來自前向譯碼器的細(xì)分了的較小的塊可更進一步細(xì) 分,同時,將滑動窗口體系結(jié)構(gòu)并行應(yīng)用于前向狀態(tài)度量計算器的各個子 塊的每一個。從而,所公開的特性減少了用于前向和/或反向狀態(tài)度量的存 儲,并由于在前向和/或反向譯碼器上的并行譯碼,進一步減少了譯碼時間。
在一些實現(xiàn)中,甚至在前向狀態(tài)計算在子塊上完成之前,將用于反向 狀態(tài)度量計算的滑動窗口體系結(jié)構(gòu)應(yīng)用于前向狀態(tài)度量計算器的子塊。艮P, 用于反向狀態(tài)度量計算的滑動窗口體系結(jié)構(gòu)意味著,反向狀態(tài)度量計算在 子塊的段上執(zhí)行,因為所述段的前向狀態(tài)度量計算已完成。從而,對一個 子塊的各段的反向狀態(tài)度量計算會在對該子塊的其他段的前向狀態(tài)度量計 算還在進行時發(fā)生。這加快了整個計算過程,因為不需要等到對一個子塊 的所有前向狀態(tài)計算全部完成。在一些實現(xiàn)方式中,對一個段的前向度量 先進行計算,然后進行對同一段的反向狀態(tài)度量的計算。在其他實現(xiàn)方式 中,對一個段或一個子塊的反向狀態(tài)度量先進行計算,然后進行對該子塊 或段的前向狀態(tài)度量的計算。在又一些其他實現(xiàn)方式中,對一個段的前向 和反向度量的計算近似同時地進行。盡管一些例子只說明了這些順序中的 一個,而沒有說明其他的順序,可以理解,本發(fā)明可應(yīng)用于不背離本發(fā)明 的任何結(jié)構(gòu)中。
隨后,使用前向和反向狀態(tài)度量來計算子塊的似然比(例如,對數(shù)似然 比)。在一個實現(xiàn)中,將當(dāng)前這組前向狀態(tài)度量和計算出的對數(shù)似然比存儲 在存儲器208中。這里,由于對數(shù)似然比是與反向狀態(tài)度量一同計算出的, 所以不需要存儲反向狀態(tài)度量。圖3為示出了具有滑動窗口體系結(jié)構(gòu)并在前向譯碼器上并行譯碼的示 例性譯碼器300的方框圖。譯碼器300可作為實現(xiàn)MAP算法的譯碼器來運 行。譯碼器300包括從通信信道接收二進制信息的幀緩沖器302。將接收的 二進制信息作為數(shù)據(jù)塊發(fā)送給前向譯碼器304。將數(shù)據(jù)塊(例如,窗口)細(xì)分 為較小的數(shù)據(jù)塊(例如,子塊或滑動窗口),隨后較小的數(shù)據(jù)塊由前向譯碼器 304并行處理。g卩,前向譯碼器304執(zhí)行子塊的二元格狀結(jié)構(gòu)的前向遞歸。 通過格狀結(jié)構(gòu)的每條路徑表示唯一的時間狀態(tài)的二元序列,其中每個時間 狀態(tài)分配一個概率。所述概率表明特定的二元時間狀態(tài)為l或O的可能性。 這些概率作為前向狀態(tài)度量來存儲。隨后,反向譯碼器306以反方向遍歷 格狀結(jié)構(gòu),并生成另一組概率作為反向狀態(tài)度量。隨后,似然比計算器308 基于前向狀態(tài)度量和反向狀態(tài)度量來計算對數(shù)似然比或后驗概率(APP)。
前向狀態(tài)度量計算是一個遞歸函數(shù),其基于先前各時間步長的前向狀 態(tài)度量。幵始于在時間步長t的對于所有可能狀態(tài)具有相等概率的未知狀 態(tài),經(jīng)過k個時間步長的前向狀態(tài)度量計算(其中k取決于代碼的約束長度) 產(chǎn)生在時間步長t+k的前向狀態(tài)度量的良好近似。隨后,可始于時間步長t+k 的近似來計算下面的前向狀態(tài)度量。由于可以在始于格狀結(jié)構(gòu)中的任意點 來建立對前向狀態(tài)度量的良好近似,所以,可以將滑動窗口體系結(jié)構(gòu)應(yīng)用 于前向狀態(tài)度量計算中,并且并行處理用于前向狀態(tài)度量計算的所有滑動
圖4為示出了編碼信息塊402、 404和406如何在前向譯碼器的滑動窗 口體系結(jié)構(gòu)中分隔成較小的子塊408、 410和412。前向譯碼器的滑動窗口 的長度L是基于譯碼時間約束來選擇的。譯碼時間約束基于應(yīng)用的數(shù)據(jù)速 率。應(yīng)用的數(shù)據(jù)速率越高,譯碼要求就越快,也就意味著滑動窗口具有較 小的長度L。
將格狀結(jié)構(gòu)中具有N個時間步長的塊404分隔成N/L個子塊408、 410 和412。該N/L個子塊408、 410和412的前向狀態(tài)度量是并行計算的。第 一子塊408長度為L。其開始于(塊B的)第一時間步長并始于全零狀態(tài)(已 知狀態(tài))。其他子塊410和412長度為L+K,每個子塊與前一個子塊重疊格 狀結(jié)構(gòu)的k個時間步長。例如,在子塊1 408之后的子塊2 410包括自子塊 1 408的最后k個時間步長。第n個子塊(其中n > 1)始于第((n-l)L+l-k)個時間步長并具有相等可能性的狀態(tài)。通過"提前"k個時間步長開始第n個子 塊,可以得到該子塊在k+t時間步長的前向狀態(tài)度量的良好近似(其中t為 大于或等于零的整數(shù))。隨后除第一窗口以外的所有滑動窗口中的前k個時 間步長的前向狀態(tài)度量被丟棄。
為了進行反向狀態(tài)度量計算,可將子塊進一步細(xì)分為較小的子塊或段 414、 416和418。隨后,在段414、 416和418上進行反向狀態(tài)度量計算。 為了加快格狀結(jié)構(gòu)的整個對數(shù)似然比的計算,甚至可以在相對應(yīng)的整個子 塊的前向狀態(tài)度量計算完成之前就開始對這些段的反向狀態(tài)度量計算。從 而一旦對對應(yīng)于一個段的子塊的一部分的前向狀態(tài)度量計算已完成,就可 以在該段上開始反向狀態(tài)度量計算。注意到,在其他實現(xiàn)中,在不背離本 發(fā)明的情況下,可以在前向狀態(tài)度量計算之前或近似同時地進行反向狀態(tài) 度量計算。
圖5為示出了具有多個并行譯碼器的示例性譯碼器結(jié)構(gòu)的框圖。幀緩 沖器502從通信信道接收二進制數(shù)據(jù)或符號。塊分隔器504將數(shù)據(jù)塊分隔 成多個較小的數(shù)據(jù)子塊。在一個實現(xiàn)中,采用滑動窗口體系結(jié)構(gòu)將數(shù)據(jù)塊 分隔成多個前向狀態(tài)度量(FSM)子塊,每個FSM子塊與前一個FSM子塊重 疊k個時間步長。隨后,將多個FSM子塊轉(zhuǎn)送至具有多個并行譯碼器(例如 處理器、ASIC等等)510、 512和514的前向譯碼器506。通過并行生成前向 狀態(tài)度量,前向譯碼器506在更短的時間內(nèi)生成度量。
來自前向譯碼器506的FSM子塊可被進一步分隔成較小的子塊和段(例 如圖4中的段414、 416和418)。反向狀態(tài)度量計算在這些較小的段上進行。 反向譯碼器508包括多個反向狀態(tài)度量(RSM)段譯碼器516、 518和520, 它們?yōu)閬碜韵鄬?yīng)的FSM子塊譯碼器510、 512和514的子塊的段生成反 向狀態(tài)度量。然而,必須注意,對反向狀態(tài)度量的計算是獨立于前向狀態(tài) 度量的。前向譯碼器是從一個子塊或段的開頭到末端來計算度量,而反向 譯碼器是從該子塊的末端到開頭來計算度量的。前向和反向譯碼器506和 508相互獨立地執(zhí)行各自的計算,這兩種譯碼器都使用所接收的數(shù)據(jù)和共同 的格狀結(jié)構(gòu)。為了加快整個似然比的計算,由RSM段譯碼器516、 518和/ 或520進行的反向狀態(tài)度量計算甚至可以在由FSM子塊譯碼器510、 512 和/或514對對應(yīng)子塊的前向狀態(tài)度量計算完成之前就開始。從而, 一旦對于與一個段對應(yīng)的子塊的一部分的前向狀態(tài)度量計算完成,就可以在該段 上開始反向狀態(tài)度量計算。
存儲設(shè)備522可以與前向譯碼器506相耦合,從而存儲前向狀態(tài)度量, 并將所述度量傳送到似然比計算器524。似然比計算器524基于從反向譯碼 器508接收的所存儲的前向狀態(tài)度量和反向狀態(tài)度量來計算似然比。在一 個實現(xiàn)中,當(dāng)前組前向狀態(tài)度量和計算出的似然比存儲在存儲器208 (圖2) 中。并不需要存儲反向狀態(tài)度量,因為似然比是與反向狀態(tài)度量一同計算 出的。
在一些實現(xiàn)中,前向譯碼器506和反向譯碼器508可同時(或接近同時) 對子塊進行譯碼。即,反向譯碼器508并不等待到代碼的一個段由前向譯 碼器506進行譯碼之后。在這樣的實現(xiàn)中,前向和反向度量均可存儲在存 儲器中用于計算似然比。例如,子塊的前一半的前向度量可與該子塊的另 一半的反向度量一起存儲。隨后,由于該子塊的前向和反向狀態(tài)度量已計 算完成,可以計算似然比。
圖6為示出了由前向和反向譯碼器對數(shù)據(jù)塊進行分隔和處理的示例性 表格。通常,數(shù)據(jù)塊被分隔成FSM子塊,并被并行處理以進行前向狀態(tài)度 量計算,并且,每個子塊可進一步被分隔成較小的RSM子塊或段,用于反 向狀態(tài)度量計算。在這一實例中,F(xiàn)SM子塊的長度為6XW,而RSM段的 長度為W。前向狀態(tài)度量計算器(FSMC)開始于時間TO。 一旦算出前W個 前向狀態(tài)度量,F(xiàn)SMC在時間Tl計算段2X W(從W到2W-1)的前向狀態(tài)度 量。大約在時間T1,反向狀態(tài)度量計算器(RSMC)計算來自第一段W的反 向度量(以倒序從W-l到0計算)。在下一個時間周期T2, FSMC移動到下 一段3XW (從2W到3W-1),而RSMC移動到段2XW (以倒序從2W-1到 W計算)。該過程一直持續(xù),直到完成一個FSM子塊的前向和反向狀態(tài)度 量。
在RSMC計算每段的反向狀態(tài)度量時,同一段的對數(shù)似然比(LLR)(或 其他的似然比)也被計算并在存儲器中存儲。注意到,根據(jù)一些實施例,用 于存儲前向狀態(tài)度量的存儲器的量通過存儲較小數(shù)量的前向狀態(tài)度量而減 少了。例如,當(dāng)前段(例如,2XW)和前一段(例如,W)的前向狀態(tài)度量(例 如,Ao,2^)被存儲。開始于時間T1,前一段(例如,W)的前向狀態(tài)度量(例如,Ao,w-,)用于計算LLR。該過程一直持續(xù)直到整個子塊的LLR被計算。 在一個段的LLR被計算后,可以丟棄前一段的前向狀態(tài)度量。注意到,通 過在子塊的前向狀態(tài)度量完成以前處理各段的反向狀態(tài)度量,任意一次存 儲的前向狀態(tài)度量的數(shù)量(例如,兩個段的度量)都更少了。
圖7為示出了在前向和反向譯碼路徑上采用滑動窗口實現(xiàn)遞歸譯碼的 示例性方法的流程圖。注意到,在各種實現(xiàn)中,本方法可應(yīng)用于使用MAP 或?qū)?shù)MAP譯碼器的不同的譯碼算法中,包括具有兩個或更多順序或并行 譯碼階段(例如內(nèi)部或外部譯碼器,等等)的譯碼算法。從通信信道接收數(shù)據(jù) 塊(例如,比特、符號等的序列)(702)。將數(shù)據(jù)塊分隔成較小的子塊(706)。 在一些實現(xiàn)中,在第一子塊之后,每個后續(xù)子塊都與前一子塊重疊格狀結(jié) 構(gòu)的k個時間步長。在兩個或更多個子塊上并行執(zhí)行前向譯碼(708),以獲 得每個子塊的前向狀態(tài)度量。當(dāng)組合時,每個子塊的前向狀態(tài)度量彌補了 數(shù)據(jù)塊的格狀結(jié)構(gòu)的前向狀態(tài)度量。在各種實現(xiàn)中,前向譯碼是在數(shù)據(jù)塊 的所有子塊中進行的。對每個子塊,前向狀態(tài)度量(例如,格狀結(jié)構(gòu)的每個 時間步長的概率)可被任選地存儲(710)。
在一些實現(xiàn)中,可進一步將子塊分隔成較小的段(712),以由后續(xù)的譯 碼階段進行處理。反向譯碼(例如沿格狀結(jié)構(gòu)的后向路徑)在兩個或更多個段 上并行進行(714),從而獲得每個段的反向狀態(tài)度量。注意到, 一些實現(xiàn)可 以通過將反向譯碼712和714與前向譯碼并行進行,來減少譯碼時間和/或 節(jié)省存儲空間。特別是,當(dāng)獲得了子塊各段的前向狀態(tài)度量時,可以開始 對該子塊的那些段的反向譯碼。從而,就不需要等到對整個子塊的前向狀
態(tài)度量完成后,再開始反向譯碼。在其他實現(xiàn)中,可順序地進行前向譯碼 和反向譯碼。
似然比基于前向和反向狀態(tài)度量來計算(716)。似然比可作為最初被發(fā) 送數(shù)據(jù)的估計來輸出(718)。
在各種實現(xiàn)中,可近似同時或順序地(例如,反向狀態(tài)度量緊隨前向狀 態(tài)度量,或者相反)計算一個子塊或子塊的一個段的前向狀態(tài)度量和反向狀 態(tài)度量。
盡管一些實例可能只說明了這些順序中的一種,而沒有介紹其他的, 但可以理解,在不背離本發(fā)明的情況下,本發(fā)明可應(yīng)用于這些結(jié)構(gòu)的任何一種。
圖8為示出了在兩級譯碼器中,分隔接收到的數(shù)據(jù)塊的示例性方法的
流程圖。基于譯碼時間約束選擇子塊(例如,滑動窗口)的長度L (802)。約 束譯碼時間基于應(yīng)用數(shù)據(jù)速率。應(yīng)用數(shù)據(jù)速率越高,譯碼就要求越快,意 味著滑動窗口具有越小的長度L。在各種實現(xiàn)中,長度L可以以比特、符 號或格狀結(jié)構(gòu)時間步長來衡量。在各種實現(xiàn)中,長度L和/或時間約束可在 運行過程中,可由用戶配置地,或者在通信器件/系統(tǒng)的硬件和/或軟件設(shè)計 時,來動態(tài)確定。
將數(shù)據(jù)塊分隔成兩個或更多個較小的長度為L的子塊(804)。該塊的格 狀結(jié)構(gòu)中可以具有N個時間步長,并將其分隔成N/L個子塊。隨后,確定 其是否為第一子塊(806)。通常,第一子塊從零狀態(tài)(已知狀態(tài))開始。如果其 不是第一子塊,貝U將子塊的最后k個時間步長加到下一個子塊(808)。從而, 除了第一子塊,所有的后續(xù)子塊的長度均為L+K,其每個子塊都與前一個 子塊重疊格狀結(jié)構(gòu)的k個時間步長。隨后,并行確定(計算)兩個或更多個子 塊(例如,兩個或全部的子塊或滑動窗口)的前向狀態(tài)度量(810)。隨后丟棄第 一子塊之后每個子塊中的前k個時間步長的前向狀態(tài)度量(812)。在一任選 步驟中,隨后可將子塊分隔成兩個或更多個較小的段(814)。隨后,確定(計 算)兩個或更多個段的反向狀態(tài)度量(816)?;谇跋蚝头聪驙顟B(tài)度量計算似 然比(818)。
根據(jù)一些實現(xiàn), 一個段的反向狀態(tài)度量的計算是在確定對應(yīng)的子塊的 其他部分的前向狀態(tài)度量時進行的。例如,前向和反向度量可按照與圖6 中說明的相似的順序計算。
注意到,這一算法的存儲器使用量是只將滑動窗口體系結(jié)構(gòu)應(yīng)用到反 向狀態(tài)度量計算的存儲器使用量的N/L倍。另外,由于將數(shù)據(jù)塊分隔成子 塊,并且在前向譯碼路徑上的并行處理,譯碼時間減小為N/L。
因此,MAP譯碼器或以MAP譯碼器作為組成部分的turbo譯碼器可配 置雙向滑動窗口?;瑒哟翱隗w系結(jié)構(gòu)可應(yīng)用于具有N個時間步長的格狀結(jié) 構(gòu)的編碼數(shù)據(jù)塊的前向狀態(tài)度量(FSM)計算。將數(shù)據(jù)塊分隔成較小的子塊, 而且,并行進行子塊的兩個或更多個的前向遞歸,從而獲得FSM。每個子 塊與前一個子塊重疊k個時間步長,其中k為大于零的整數(shù)值。這提供了對FSM在子塊時間步長k+t的良好的近似。除了第一子塊,與每個子塊前 k個時間歩長相關(guān)聯(lián)的FSM被丟棄。還進行每個子塊的反向遞歸,從而獲 得子塊的反向狀態(tài)度量(RSM)。隨后,基于FSM和RSM計算似然比。
本文描述的裝置、方法和算法特別適合于應(yīng)用turbo碼或巻積碼的高數(shù) 據(jù)速率系統(tǒng)。對于譯碼速率過低而無法達到所期望數(shù)據(jù)速率的系統(tǒng)也是一 個很好的解決方案。通過添加更多的并行譯碼器,可提高有效數(shù)據(jù)速率。
根據(jù)各種實現(xiàn),圖l、 2、 3、 4、 5和域6的裝置可以與圖7和域8中 描述的一個或多個方法一起實現(xiàn)。
在不背離本發(fā)明的情況下,圖1、 2、 3、 4、 5、 6、 7和/或8中說明的 一個或多個部件、步驟和/或功能可重新排列或合并為單個部件、步驟或功 能,或者以一些部件、步驟或功能來實施。在不背離本發(fā)明的情況下,也 可以添加另外的元件、部件、步驟和/或功能。圖l、 2、 3、 4、 5和/或6中 說明的裝置、設(shè)備和/或部件可設(shè)置為執(zhí)行本文描述的一個或多個方法、特 性或步驟。
應(yīng)該注意到,上述實施例僅僅是例子,并不應(yīng)理解為對本發(fā)明的限制。 例如,譯碼器可包括用于將編碼數(shù)據(jù)塊分隔成多個子塊的模塊,該編碼 數(shù)據(jù)塊具有N個時間步長的格狀結(jié)構(gòu),其中N為大于零的整數(shù);用于遞歸 地并行獲得兩個或多個子塊的前向狀態(tài)度量的模塊;以及用于遞歸地并行
獲得兩個或多個子塊的反向狀態(tài)度量的模塊。這里,用于分隔的模塊可包
括圖9的裝置900中所示的分隔器模塊910。如裝置900中所示,用于遞歸 得出前向狀態(tài)度量的模塊可包括前向狀態(tài)度量模塊920,以及用于遞歸得出 反向狀態(tài)度量的模塊可包括反向狀態(tài)度量模塊930。
可替換地,裝置900的一個或多個部件可由用于控制和/或執(zhí)行一個或 多個部件的功能的處理器來實現(xiàn)。類似地,裝置900的一個或多個部件可 由包含有用于執(zhí)行一個或多個部件功能的指令的機器可讀介質(zhì)來實現(xiàn)。
因此,對各實施例的描述是要為說明性的,并不是要對權(quán)利要求的范 圍進行限制。所以,本教導(dǎo)可容易地應(yīng)用于其他類型的裝置中,并且多種 替換、修改和變形對本領(lǐng)域的技術(shù)人員是顯而易見的。
權(quán)利要求
1、一種譯碼器,包括塊分隔器,用于使用滑動窗口體系結(jié)構(gòu)將數(shù)據(jù)塊分隔成多個子塊;第一譯碼器,所述第一譯碼器與所述塊分隔器相耦合以接收所述多個子塊,所述第一譯碼器包括多個并行譯碼器,所述并行譯碼器并行確定所述多個子塊的至少兩個的第一組狀態(tài)度量;以及第二譯碼器,所述第二譯碼器與所述第一譯碼器相耦合以從所述第一譯碼器接收所述多個子塊,并計算所述多個子塊的第二組狀態(tài)度量。
2、 根據(jù)權(quán)利要求1所述的譯碼器,其中所述第一譯碼器和第二譯碼器 實現(xiàn)最大后驗概率(MAP)算法以糾正所述數(shù)據(jù)塊中的差錯。
3、 根據(jù)權(quán)利要求1所述的譯碼器,其中所述第一譯碼器確定所述數(shù)據(jù) 塊的格狀結(jié)構(gòu)的前向狀態(tài)度量。
4、 根據(jù)權(quán)利要求3所述的譯碼器,其中所述每個子塊與前一個子塊重 疊所述格狀結(jié)構(gòu)的k個時間步長,其中k為大于零的整數(shù)值。
5、 根據(jù)權(quán)利要求4所述的譯碼器,其中從所述第一組狀態(tài)度量中丟棄 與第一子塊之后的每個子塊的前k個時間步長相關(guān)聯(lián)的所述度量。
6、 根據(jù)權(quán)利要求3所述的譯碼器,其中所述第二譯碼器確定所述數(shù)據(jù) 塊的所述格狀結(jié)構(gòu)的反向狀態(tài)度量。
7、 根據(jù)權(quán)利要求1所述的譯碼器,其中所述子塊的長度由譯碼時間約 束來確定。
8、 根據(jù)權(quán)利要求1所述的譯碼器,其中所述子塊的數(shù)量確定所述第一 譯碼器中的并行譯碼器的數(shù)量。
9、 根據(jù)權(quán)利要求1所述的譯碼器,其中所述數(shù)據(jù)塊采用turbo碼進行 編碼。
10、 根據(jù)權(quán)利要求1所述的譯碼器,其中所述第一譯碼器中的所述并 行譯碼器是計算每個子塊的前向狀態(tài)度量的遞歸譯碼器。
11、 根據(jù)權(quán)利要求1所述的譯碼器,其中所述第二譯碼器進一步將從 所述第一譯碼器接收的每個子塊分隔成多個較小的段,并在所述多個較小 的段上使用滑動窗口體系結(jié)構(gòu)計算所述第二組狀態(tài)度量。
12、 根據(jù)權(quán)利要求1所述的譯碼器,還包括存儲所述第一組狀態(tài)度量的存儲設(shè)備。
13、 根據(jù)權(quán)利要求12所述的譯碼器,其中每個子塊包括多個段,在任 何一次當(dāng)前段和前一段的所述第一組度量被存儲在所述存儲設(shè)備中。
14、 根據(jù)權(quán)利要求13所述的譯碼器,其中一旦計算出一個段的似然比, 就從所述存儲設(shè)備中丟棄該段的所述第一組度量。
15、 根據(jù)權(quán)利要求1所述的譯碼器,其中在計算所述數(shù)據(jù)塊中數(shù)據(jù)的 似然比的過程中使用所述第一組狀態(tài)度量和所述第二組狀態(tài)度量。
16、 根據(jù)權(quán)利要求1所述的譯碼器,其中所述第二譯碼器包括多個并 行譯碼器,所述第二譯碼器中的每個并行譯碼器對應(yīng)于所述第一譯碼器中 的所述多個并行譯碼器中的一個。
17、 根據(jù)權(quán)利要求1所述的譯碼器,其中每個子塊包括多個段,所述 第二譯碼器用于, 一旦所述第一譯碼器計算出一個段的所述第一組狀態(tài)度 量,所述第二譯碼器就計算該段的所述第二組狀態(tài)度量。
18、 一種遞歸地對編碼塊中的信息進行譯碼的方法,該方法包括 將所述編碼數(shù)據(jù)塊分隔成多個較小的子塊,每個子塊包括多個較小的段;并行獲取所述子塊的兩個或更多個的前向狀態(tài)度量;以及 一旦獲取了一個段的前向狀態(tài)度量,就獲取該段的反向狀態(tài)度量。
19、 根據(jù)權(quán)利要求18所述的方法,其中子塊開始于具有已知二元狀態(tài) 的第一吋間步長。
20、 根據(jù)權(quán)利要求18所述的方法,其中在分隔所述編碼塊過程中采用 了滑動窗口體系結(jié)構(gòu),使得每個子塊與前一子塊重疊所述編碼塊的格狀結(jié) 構(gòu)的k個時間步長,其中k為大于零的整數(shù)值。
21、 根據(jù)權(quán)利要求20所述的方法,還包括-丟棄與第一子塊之后的每個子塊的前k個時間步長相關(guān)聯(lián)的所述前向 狀態(tài)度量。
22、 根據(jù)權(quán)利要求18所述的方法,還包括 接收具有N個時間步長的格狀結(jié)構(gòu)的所述編碼信息塊; 將所述編碼塊分隔成N/L個子塊,其中L為大于零的整數(shù);以及 并行計算所述N/L個子塊的前向狀態(tài)度量。
23、 根據(jù)權(quán)利要求18所述的方法,還包括 基于第一組和第二組狀態(tài)度量獲取所述數(shù)據(jù)塊中數(shù)據(jù)的似然比。
24、 根據(jù)權(quán)利要求18所述的方法,其中在獲取一子塊的所述前向狀態(tài) 度量中,開始步為未知狀態(tài),該未知狀態(tài)具有相等可能的各狀態(tài)度量。
25、 根據(jù)權(quán)利要求18所述的方法,還包括存儲每個子塊的第一段的第一組度量;基于所述第一段的第一和第二狀態(tài)度量獲取所述第一段的似然比;以及一旦獲取了所述第一段的似然比,就丟棄每個子塊的所述第一段的所 述第一組度量。
26、 一種譯碼器,包括用于將編碼數(shù)據(jù)塊分隔成多個子塊的模塊,所述編碼數(shù)據(jù)塊具有N個時間步長的格狀結(jié)構(gòu),其中N為大于零的整數(shù);用于遞歸地并行獲取所述子塊的兩個或更多個的前向狀態(tài)度量的模塊;以及用于遞歸地并行獲取所述子塊的兩個或更多個的反向狀態(tài)度量的模塊。
27、 根據(jù)權(quán)利要求26所述的譯碼器,其中每個子塊與前一子塊重疊所 述編碼塊的所述格狀結(jié)構(gòu)的k個時間步長,其中k為大于零的整數(shù)值,并 且丟棄與第一子塊之后的每個子塊的前k個時間步長相關(guān)聯(lián)的所述前向狀態(tài)度量。
28、 根據(jù)權(quán)利要求26所述的譯碼器,其中每個子塊包括多個段, 一旦 獲取了一個段的所述前向狀態(tài)度量,就獲取該段的所述反向狀態(tài)度量。
29、 權(quán)利要求26所述的譯碼器,還包括用于基于所述前向和反向狀態(tài)度量獲取似然比的模塊。
30、 一種處理設(shè)備,用于控制接收具有N個時間步長的格狀結(jié)構(gòu)狀態(tài)的編碼數(shù)據(jù)塊,其中N為大于 2的正整數(shù);以及通過以下方式對所述編碼數(shù)據(jù)塊進行遞歸譯碼將所述編碼塊分隔成多個子塊,以及并行獲取所述子塊的兩個或更多個的前向狀態(tài)度量。
31、 根據(jù)權(quán)利要求30所述的處理設(shè)備,其中所述遞歸譯碼還包括獲取所述子塊的兩個或更多個的反向狀態(tài)度量。
32、 根據(jù)權(quán)利要求31所述的處理設(shè)備,其中所述每個子塊包括多個段, 一旦獲取了一個段的前向狀態(tài)度量,就獲取該段的反向狀態(tài)度量。
33、 根據(jù)權(quán)利要求30所述的處理設(shè)備,其中第一子塊之后的每個子塊 都與前一子塊重疊所述格狀結(jié)構(gòu)的k個時間步長,其中k為大于零的整數(shù) 值,并且,其中所述處理設(shè)備還用于丟棄與第一子塊之后的每個子塊的所述前k個時間步長相關(guān)聯(lián)的所述 前向狀態(tài)度量,其中k為大于零的整數(shù)。
34、 一種包括用于對編碼塊中的信息進行遞歸譯碼的指令的機器可讀介質(zhì),所述指令用于將所述編碼數(shù)據(jù)塊分隔成多個較小的子塊,每個子塊包括多個較小的段;并行獲取所述子塊的兩個或更多個的前向狀態(tài)度量;以及 一旦獲取了一個段的前向狀態(tài)度量,就獲取該段的反向狀態(tài)度量。
全文摘要
一種MAP譯碼器,或者具有MAP譯碼器作為其組成部分的turbo譯碼器,其配置了雙向滑動窗口。將滑動窗口體系結(jié)構(gòu)應(yīng)用于具有N個時間步長格狀結(jié)構(gòu)的編碼數(shù)據(jù)塊的前向狀態(tài)度量(FSM)計算。將數(shù)據(jù)塊分隔成較小的子塊,并且并行執(zhí)行對兩個或更多個子塊的前向遞歸,從而獲得FSM。每個子塊都與前一子塊重疊k個時間步長,其中k為大于零的整數(shù)值。這提供了在子塊k+t時間步長的FSM的良好近似。丟棄與除第一子塊以外的每個子塊的前k個時間步長相關(guān)聯(lián)的FSM。還執(zhí)行對每個子塊的反向遞歸,以獲取該子塊的反向狀態(tài)度量(RSM)。隨后基于FSM和RSM計算似然比。
文檔編號H03M13/00GK101411071SQ200780010773
公開日2009年4月15日 申請日期2007年1月29日 優(yōu)先權(quán)日2006年1月27日
發(fā)明者I·J·費爾南德斯-科爾巴頓, J·德洛斯皮諾斯龐特, P·陳 申請人:高通股份有限公司