亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

在具有單個或多個發(fā)射器的通信系統(tǒng)的多級糾錯碼生成器和解碼器的制作方法

文檔序號:7608432閱讀:279來源:國知局
專利名稱:在具有單個或多個發(fā)射器的通信系統(tǒng)的多級糾錯碼生成器和解碼器的制作方法
相關(guān)申請的交叉引用本申請要求2003年10月6日提交的名為“Error-Correcting Raptor Codes”(糾錯Raptor碼)的共同待決的美國臨時專利申請第60/509,355的優(yōu)先權(quán),該申請?zhí)幱谒心康耐ㄟ^引用結(jié)合于此,如同在本文中完全陳述一樣。
本公開內(nèi)容涉及以下共同轉(zhuǎn)讓的申請/專利轉(zhuǎn)讓給Michael G.Luby的名為“Information Additive Code Generator and Decoder for Communication Systems”(用于通信系統(tǒng)的信息加性碼生成器和解碼器)的美國專利第6,307,487號(后文稱為“Luby I”);轉(zhuǎn)讓給M.Amin Shokrollahi等人的名為“Multi-Stage Code Generatorand Decoder for Communication Systems”(用于通信系統(tǒng)的多級代碼生成器和解碼器)的美國專利第____號[美國專利申請第10/032,156號,2001年12月21日提交](后文稱為“Schokrollahi I”);以及轉(zhuǎn)讓給M.Amin Schokrollahi等人的名為“Systematic Encoding and Decoding of Chain Reaction Codes”(連鎖反應(yīng)碼的系統(tǒng)編碼和解碼)的美國專利第____號[美國專利申請第10/677,624號,2003年10月1日提交](后文稱為“SED-CRC”)。這些申請/專利各自的公開內(nèi)容處于所有目的通過引用結(jié)合于此,如同在本文中完全陳述一樣。
背景技術(shù)
通過通信信道在發(fā)送者和接收者之間的數(shù)據(jù)傳輸是眾多文獻的主題。較佳地,但不是排它地,接收者希望接收由發(fā)送者以某一級別的確定性通過信道發(fā)射的數(shù)據(jù)的完全副本。當(dāng)信道沒有理想的保真度時(這覆蓋了所有的物理可實現(xiàn)系統(tǒng)的大部分),一個問題是如何處理傳輸中的數(shù)據(jù)丟失或錯亂。丟失的數(shù)據(jù)(消除)通常比破壞的數(shù)據(jù)(差錯)更易于處理,因為接收者無法總是能夠告知何時錯誤地接收到了破壞的數(shù)據(jù)。開發(fā)了許多糾錯代碼來檢測和/或糾正消除和/或差錯。通常,使用的特定代碼是基于關(guān)于用于傳輸數(shù)據(jù)的信道的失真度以及所傳輸?shù)臄?shù)據(jù)的特性的某些信息來選擇的。例如,當(dāng)已知信道具有長時間的失真時,猝發(fā)差錯碼可能適用于該應(yīng)用。當(dāng)僅預(yù)期到短的、不頻繁的差錯時,簡單的奇偶碼可能是最佳的。
多個發(fā)送者和多個接收者之間通過通信信道的數(shù)據(jù)傳輸也是眾多文獻的主題。通常,來自多個發(fā)送者的數(shù)據(jù)發(fā)射要求多個發(fā)送者之間的協(xié)調(diào),以允許發(fā)送者最小化重復(fù)的工作。在典型的向一個接收者發(fā)送數(shù)據(jù)的多個發(fā)送者系統(tǒng)中,如果發(fā)送者未協(xié)調(diào)它們將發(fā)射什么數(shù)據(jù)以及何時發(fā)射,而是僅僅發(fā)射文件的片段,則接收者很可能接收到許多無用的重復(fù)片段。類似地,當(dāng)不同的接收者在不同的時間點加入來自一個發(fā)送者的傳輸時,問題是如何確保接收者從發(fā)送者接收到的所有數(shù)據(jù)都是有用的。例如,假定發(fā)送者希望發(fā)射文件,且連續(xù)地發(fā)射關(guān)于同一文件的數(shù)據(jù)。如果發(fā)送者僅僅發(fā)送原始文件的片段并重復(fù),且某些片段丟失,則接收者在接收到文件中的每一片段的一個副本之前可能接收到許多無用的重復(fù)片段。類似地,如果多次錯誤地接收到一個片段,則傳達給接收者的信息量遠少于接收到的錯亂數(shù)據(jù)的累積信息。這通常導(dǎo)致傳輸系統(tǒng)的不合需要的低效率。
通常,要通過通信信道發(fā)射的數(shù)據(jù)被劃分成大小相等的輸入碼元。輸入碼元的“大小”可以按比特來測量,而無論輸入碼元是否實際上被劃分成比特流,其中當(dāng)輸入碼元是從2M個碼元的字符表或?qū)φ麛?shù)M除2M個碼元之外的其它字符表中選擇時,輸入碼元的大小為M。
編碼系統(tǒng)可從輸入碼元中產(chǎn)生輸出碼元。輸出碼元是來自輸入碼元字符表的元素。輸出碼元字符表可以具有與輸入碼元字符表相同或不同的字符。一旦創(chuàng)建了輸出碼元,它們被發(fā)射到接收者。
傳輸?shù)娜蝿?wù)可包括輸出碼元的后處理,以產(chǎn)生對特定類型的傳輸合適的碼元。例如,當(dāng)傳輸包括將數(shù)據(jù)從無線提供者發(fā)送到無線接收者時,可將若干輸出碼元集中在一起以形成幀,且每一幀可被轉(zhuǎn)換成波信號,其中振幅或相位與該幀有關(guān)。將幀轉(zhuǎn)換成波的操作通常稱為調(diào)制,且調(diào)制還取決于波信號的信息是儲存在其相位還是振幅中而被進一步稱為調(diào)相或調(diào)幅。當(dāng)今,這一類型的調(diào)制傳輸在許多應(yīng)用中使用,諸如無線傳輸、衛(wèi)星傳輸、電纜調(diào)制解調(diào)器、數(shù)字用戶線(DSL)等等。
如果傳輸允許預(yù)期接收者即使在面對傳輸過程中的差錯和/或刪除時也能夠恢復(fù)原始數(shù)據(jù)的正確副本,則該傳輸被稱為是可靠的。刪除的信息的恢復(fù)是許多文獻的主題,且在這一情況下設(shè)計出了非常有效的編碼方法。
被提議來解決傳輸問題的一種解決方案是使用前向糾錯(FEC)碼,諸如Reed-Solomon碼、Tornado碼或更一般的LDPC(低密度奇偶校驗)碼、或Turbo碼來提高可靠性。采用LDPC編碼,從內(nèi)容而非僅僅構(gòu)成內(nèi)容的輸入碼元來生成發(fā)送的輸出碼元。諸如Reed-Solomon、LDPC或Turbo碼等等傳統(tǒng)的糾錯碼對固定長度的內(nèi)容生成固定數(shù)量的輸出碼元。例如,對于K個輸入碼元,可能生成N個輸出碼元。這N個輸出碼元可包括K個原始輸入碼元和N-K個冗余碼元。如果存儲允許,則發(fā)送者可對每一數(shù)據(jù)片段僅計算輸出碼元集一次,并使用傳送帶協(xié)議來發(fā)射輸出碼元。
某些FEC碼的一個問題是它們需要過多的計算能力或存儲器來操作。另一問題是輸出碼元的數(shù)量常常必須在編碼過程之前確定。如果碼元的誤碼率被估計過高,則這會導(dǎo)致低效率,而如果對誤碼率估計不足,則會導(dǎo)致故障。結(jié)果,傳統(tǒng)的FEC方案通常需要估計它們所工作的通信信道的可靠性的機制。例如,在無線傳輸系統(tǒng)中,發(fā)送者和接收者可能需要探測通信信道,以獲得對噪聲的估計以及因此獲得對信道可靠性的估計。在這一情況下,必須很經(jīng)常重復(fù)這一探測,因為由于通信信道質(zhì)量的快速且瞬時的變化,實際的噪聲是一個移動目標。
對于傳統(tǒng)的FEC碼,可生成的可能輸出碼元的數(shù)量與內(nèi)容被劃分成的輸入碼元的數(shù)量在同一數(shù)量級。通常,但不排它地,大多數(shù)或所有這些輸出碼元是在發(fā)送步驟之前的預(yù)處理步驟中生成的。這些輸出碼元具有這樣的屬性所有輸入碼元可從輸出碼元的任一子集中重新生成,該子集總計上具有與原始內(nèi)容相同的信息量。
如上所述,眾多糾錯碼的一個問題是它們需要過度的計算能力或存儲器來操作。近來為通信應(yīng)用所開發(fā)的一種在對計算能力和存儲器的使用上略微高效的編碼方案是LDPC編碼方案。LDPC碼類似于Reed-Solomon碼,在于輸入數(shù)據(jù)是由K個輸入碼元表示的,且用于確定N個輸出碼元,其中N在編碼過程開始之前是固定的。用LPDC碼來編碼一般要比用Reed-Solomon碼編碼快得多,因為創(chuàng)建N個LDPC輸出碼元的算術(shù)運算的平均數(shù)與N成正比(在幾十個匯編碼乘以N的數(shù)量級上),且解碼整個數(shù)據(jù)所需的算術(shù)運算的總數(shù)也與N成正比。
LDPC碼具有優(yōu)于Reed-Solomon碼的速度優(yōu)點。然而,LDPC和Reed-Solomon碼都具有若干缺點。首先,輸出碼元數(shù)N必須在編碼過程之前確定。如果碼元的誤碼率被過度估計,則這會導(dǎo)致低效率,且如果誤碼率被估計不足,則這會導(dǎo)致故障。這是因為LDPC解碼器需要接收某一數(shù)量的輸出碼元來解碼和恢復(fù)原始數(shù)據(jù),且如果刪除碼元的數(shù)目大于該碼所規(guī)定的數(shù)目,則不能恢復(fù)原始數(shù)據(jù)。這一限制一般對于許多通信問題都是可接受的,只要正確地選擇碼率,但是這要求以信道的碼元接收的誤碼率來進行事先的猜測。
LDPC碼的另一缺點是它們要求編碼器和解碼器以某一方式對圖結(jié)構(gòu)達成一致。LDPC碼要求在構(gòu)造該圖的解碼器處的預(yù)處理級,這是實質(zhì)上降低解碼速度的過程。此外,圖對于數(shù)據(jù)大小是專用的,因此需要對每一便用的數(shù)據(jù)大小生成一個新圖。此外,LDPC碼需要的圖有時候構(gòu)造起來是復(fù)雜的,且對不同大小的數(shù)據(jù)要求不同的自定義參數(shù)設(shè)置,來獲得最佳性能。這些圖的大小可以很大,且可能要求大量的存儲器以在發(fā)送者和接收者兩者中儲存。
另外,LDPC碼相對于固定的圖和輸入數(shù)據(jù)生成完全相同的輸出碼元值。這些輸出碼元可以包括K個原始輸入碼元和N-K個冗余碼元。此外,大于K的較小的倍數(shù),諸如K的3或4倍的N的值是不實用的。由此,從一個以上發(fā)送者獲得使用同一圖從相同的輸入數(shù)據(jù)生成的輸出碼元的接收者很可能接收到大量的重復(fù)輸出碼元,這并沒有增加任何信息。這是因為1)N個輸出碼元事先已固定,2)每次當(dāng)發(fā)送碼元時從每一發(fā)送器發(fā)射了相同的N個輸出碼元,3)接收器接收到相同的N個碼元,以及4)N實際上不能超過K的較小倍數(shù)。實際上,如果從多個發(fā)送器接收到了未協(xié)調(diào)的輸出碼元,則一些輸出碼元已被接收的概率在1/sqrt(N)的數(shù)量級上,其中sqrt(N)表示N的平方根。當(dāng)K在N的數(shù)量級上,且需要K個輸出碼元時,當(dāng)接收到更多輸出碼元時,下一接收到的輸出碼元越來越不可能增加信息,如果可能的輸出碼元數(shù)遠大于要被接收來解調(diào)數(shù)據(jù)所需的輸出碼元數(shù),則情況不是如此。
即使來自不同發(fā)送器的輸出碼元可能以不同的方式被破壞,但它們傳達給系統(tǒng)的信息的總量不是其各自信息量的總和。例如,假定碼元是一個比特長,且接收器從兩個不同的源(諸如兩個衛(wèi)星)接收到相同的LDPC碼比特,且這兩個比特具有被破壞的概率p。還假定這兩個比特之一被接收為0,而另一個被接收為1。則這兩個比特一起未給出關(guān)于原始LDCP比特的任何信息,因為比特為0或1的狀態(tài)每一個都具有50%的概率。然而,每一個別的比特給出了關(guān)于原始比特的信息,但是這一信息不是加性的。
因此,需要的是這樣一種簡單的糾錯碼,它在發(fā)送者或接收者處不需要過多的計算能力或存儲器,且可用于在具有一個或多個發(fā)送者和/或一個或多個接收者的系統(tǒng)中有效地分發(fā)數(shù)據(jù),而無需在發(fā)送者和接收者之間協(xié)調(diào)。
發(fā)明簡述在依照本發(fā)明的通信系統(tǒng)的一個實施例中,編碼器使用輸入數(shù)據(jù)文件來產(chǎn)生多個冗余碼元,其中輸入文件是有序的多個輸入碼元,其每一個選自一輸入字符表,且冗余碼元來自冗余碼元的字符表。對于給定的鍵,從包括輸入碼元和冗余碼元的一組合碼元集中生成輸出碼元,其中鍵是從鍵字符表中選樣的,且榆出碼元是從輸出字符表中選擇的。具有鍵I的輸出碼元是通過以下步驟生成的對要生成的輸出碼元確定權(quán)重W(I),其中權(quán)重W是在多個鍵上的至少兩個值之間交化的正整數(shù);選擇依照I的函數(shù)選擇與輸出碼元相關(guān)聯(lián)的輸入碼元的W(I);并且從所選擇的W(I)輸入碼元的預(yù)定值函數(shù)F(I)生成輸出碼元的值B(I)。在某些情況下,鍵在編碼器的狀態(tài)中是隱式的。輸出碼元一般彼此獨立,且在需要時可生成實際上無限個數(shù)的輸出碼元(服從I的解)。輸出碼元是信息加性的,使得即使已接收到許多碼元,接收的輸出碼元也可能提供用于解調(diào)的附加信息。輸出碼元使得所接收的輸出碼元的集合能夠提供概率信息來支持糾錯。
在依照本發(fā)明的實施例的解碼器中,即使解碼器僅接收到所發(fā)射的輸出碼元的任意一部分,以及即使大量所接收到的輸出碼元是有差錯的,解碼器也可正確地解調(diào)輸入碼元。輸入數(shù)據(jù)可從其累積信息等于或略微大于構(gòu)成該文件的輸入碼元的個數(shù)的任何輸出碼元集中解調(diào)輸入數(shù)據(jù)。
在一個特定的解碼實施例中,在接收輸出碼元之前或?qū)嶋H上與其同時,解碼器從所接收的輸出碼元計算校驗碼元,其中每一校驗碼元與一個或多個輸入碼元和冗余碼元相關(guān)聯(lián),且其中,校驗碼元的權(quán)重是來自與其相關(guān)聯(lián)的多個輸入碼元以及冗余碼元的碼元數(shù),且解碼器將碼元的權(quán)重和相關(guān)聯(lián)碼元的位置儲存在表中。對于每一接收的輸出碼元,在生成校驗碼元和儲存之后,解碼器執(zhí)行各種步驟,包括1)計算或估計所接收的輸入碼元中的信息量,并更新信息內(nèi)容的活動累計,2)對輸出碼元標識鍵I和接收的輸出碼元值B(I),3)從與輸出碼元相關(guān)聯(lián)的多個輸入碼元和冗余碼元中確定輸出碼元的權(quán)重W(I)以及與W(I)相關(guān)聯(lián)的碼元的位置,以及4)儲存權(quán)重W(I)和位置。對于恢復(fù)過程,重復(fù)執(zhí)行各步驟,直到恢復(fù)了所有輸入碼元、直到預(yù)定的輪數(shù)完成、或直到滿足其它終止條件,這些步驟包括對每一輸入碼元生成所確定的輸入碼元的所有或部分可能值的概率分布,其中概率分布表示具有特定可能值的輸入碼元的概率。在每一輪基于所計算的前一輪的概率更新概率分布。該過程可被重復(fù),直到對所有的輸入碼元,眾多可能值之一比其它值更有可能,或者該過程可被重復(fù)預(yù)定的輪數(shù),或滿足其它準則。更新可考慮已解碼的碼元、附加輸入碼元和校驗碼元。
依照本發(fā)明的又一實施例,提供了一種包含在載波中的計算機數(shù)據(jù)信號。該計算機數(shù)據(jù)信號可用于糾錯,并包括多個輸出碼元,其中多個輸出碼元表示從包括有序的輸入碼元集和冗余碼元的組合的碼元集中生成的碼元,其中冗余碼元是從輸入碼元生成的,其中可能的輸出碼元數(shù)遠大于組合的碼元集中的碼元數(shù),其中從組合的碼元集中的一個以上碼元并從組合的碼元集中少于所有的碼元中生成至少一個輸出碼元,并使得數(shù)據(jù)信號的接收者可從任何預(yù)定數(shù)量的輸出碼元中生成達期望的準確性程度的有序輸入碼元集。
通過本發(fā)明實現(xiàn)了眾多好處。例如,在一個具體實施例中,減少了編碼用于通過信道傳輸?shù)臄?shù)據(jù)的計算開銷。在另一具體實施例中,減少了解碼這些數(shù)據(jù)的計算開銷。取決于實施例,可實現(xiàn)這些好處中的一個或多個。這些和其它好處貫穿本說明書更詳細提供,且在下文中更具體描述。
對此處所公開的本發(fā)明的特征和優(yōu)點的進一步理解可通過參考說明書的剩余部分和附圖來實現(xiàn)。
附圖簡述

圖1是依照本發(fā)明的一個實施例的通信系統(tǒng)的框圖。
圖2是更詳細示出圖1的編碼器的框圖。
圖3是示出靜態(tài)編碼方法的一個實施例的簡化流程圖。
圖4是圖2的靜態(tài)編碼器的一個實施例的框圖。
圖5是圖2的動態(tài)編碼器的一個實施例的簡化框圖。
圖6是用于從相關(guān)聯(lián)的輸入碼元集生成輸出碼元的方法和裝置的圖示。
圖7是靜態(tài)編碼器的一個具體實施例的簡化框圖。
圖8示出了圖7所示的靜態(tài)編碼器的一個實施例的操作。
圖9是靜態(tài)編碼過程的簡化流程圖。
圖10是可由諸如圖1的解碼器等解碼器執(zhí)行的解碼過程的簡化流程圖。
圖11是替換解碼器的框圖。
圖12是示出用于解碼的一種方法的簡化流程圖。
圖13是示出用于解碼的替換方法的簡化流程圖。
圖14是示出用于解碼的又一替換方法的簡化流程圖。
圖15是示出可由圖5的動態(tài)編碼器使用的用于生成關(guān)聯(lián)列表的過程的流程圖。
圖16是更詳細示出圖15的權(quán)重選擇器的框圖。
圖17是可由諸如圖16所示的權(quán)重選擇器等權(quán)重選擇器等用于對給定輸出碼元確定權(quán)重的過程的流程圖。
發(fā)明的詳細描述在此處所描述的具體實施例中,描述了被表示為“糾錯多級編碼”(“EC-MS”)的編碼方案,之前先解釋本說明書中使用的各種術(shù)語的意義和范圍。Luby I和Shokrollahi I提供了可在依照本發(fā)明的某些實施例中使用的系統(tǒng)和方法的教導(dǎo)。然而,可以理解,這些系統(tǒng)和方法對本發(fā)明而言不是所需的,且也可使用眾多其它變化、修改和替換。EC-MS和多級編碼的某些變化可以在作為Digital Fountain Raptor碼系統(tǒng)銷售的產(chǎn)品中使用。
采用EC-MS編碼,由發(fā)送者在需要時從輸入文件生成輸出碼元。每一輸出碼元可不關(guān)注如何生成其它輸出碼元來生成。在任何時間點,發(fā)送者可停止生成輸出碼元,且對發(fā)送者何時停止或重新開始生成輸出碼元無需有任何約束。一旦被生成,這些碼元然后可被單獨或作為更大的組(“幀”)的一部分發(fā)射到其目的地,其中每一幀包含一個或多個輸出碼元。
如此處所使用的,術(shù)語“文件”指的是儲存在一個或多個源處且要作為一個單元被傳送到一個或多個目的地的任何數(shù)據(jù)。由此,來自文件服務(wù)器或計算機存儲設(shè)備的文檔、圖像以及文件都是可被傳送的“文件”的所有示例。文件可以是已知大小的(諸如儲存在硬盤上的1兆字節(jié)圖像),或者可以是未知大小的(諸如從流源的輸出所得的文件)。不管怎樣,文件是輸入碼元的序列,其中每一輸入碼元具有文件中的位置和值。
傳輸是將數(shù)據(jù)通過信道從一個或多個發(fā)送者發(fā)射到一個或多個接收者來傳送文件的過程。如果一個發(fā)送者通過理想信道連接到任何數(shù)量的接收者,則所接收的數(shù)據(jù)可以是輸入文件的精確副本,因為所有數(shù)據(jù)都將被正確接收。此處,假定信道不是理想的,這是對大多數(shù)真實信道的情況,或者假定數(shù)據(jù)從一個以上發(fā)送者發(fā)出,這是對某些系統(tǒng)的情況。在眾多信道非理想性中,所感興趣的非理想性是數(shù)據(jù)差錯和數(shù)據(jù)不完整性。
數(shù)據(jù)差錯在信道修改所發(fā)射的數(shù)據(jù)時發(fā)生。修改可由若干因素引起,諸如在衛(wèi)星傳輸情況下的大氣放電、在無線傳輸情況下的信號功率損失、光盤或其它數(shù)字存儲介質(zhì)表面的劃痕等。
數(shù)據(jù)不完整性發(fā)生在接收者直到已經(jīng)傳遞了某些數(shù)據(jù)之后才開始接收數(shù)據(jù),接收者在傳輸結(jié)束之前停止接收,或者接收者間歇地停止和再次開始接收數(shù)據(jù)的時候。作為數(shù)據(jù)不完整性的一個示例,移動衛(wèi)星發(fā)送者可能正在發(fā)射表示輸入文件的數(shù)據(jù),并在接收者處于范圍內(nèi)之前開始傳輸。一旦接收者處于范圍內(nèi),可接收數(shù)據(jù),直到衛(wèi)星移至范圍之外,此時接收者可重定向其圓盤式衛(wèi)星天線(在該時間內(nèi),它不在接收數(shù)據(jù)),以開始接收關(guān)于由移至范圍之內(nèi)的另一衛(wèi)星發(fā)射的同一輸入文件的數(shù)據(jù)。
在某些通信系統(tǒng)中,接收者接收由多個發(fā)送者或由使用多個連接的一個發(fā)送者生成的數(shù)據(jù)。例如,為加速下載,接收者可能同時連接到一個以上發(fā)送者來發(fā)射關(guān)于同一文件的數(shù)據(jù)。作為另一示例,在廣播傳輸中,可發(fā)射多個廣播數(shù)據(jù)流,以允許接收者連接到這些流中的一個或多個來將總計的傳輸速率與將它們連接到發(fā)送者的信道的帶寬進行匹配。在所有這些情況下,問題是確保所有發(fā)射的數(shù)據(jù)對接收者都是獨立地有用的,即,即使傳輸速率對于不同的流是極其不同的,且當(dāng)存在任意的模式和差錯強度時,流中的多個源數(shù)據(jù)也獨立地將其信息添加到系統(tǒng)。
一般而言,傳輸是將數(shù)據(jù)通過連接發(fā)送者和接收者的信道從發(fā)送者移至接收者的動作。信道可以是實時信道,其中信道在信道獲得數(shù)據(jù)時將數(shù)據(jù)從發(fā)送者移至接收者,或者信道可以是存儲信道,它存儲從發(fā)送者到接收者的傳送中的部分或所有數(shù)據(jù)。后者的一個示例是磁盤存儲或其它存儲設(shè)備。在該示例中,生成數(shù)據(jù)的程序或設(shè)備可以被認為是發(fā)送者,它將數(shù)據(jù)發(fā)送到存儲設(shè)備。接收者是從存儲設(shè)備中讀取數(shù)據(jù)的程序或設(shè)備。發(fā)送者用于將數(shù)據(jù)放到存儲設(shè)備的機制、存儲設(shè)備本身、以及接收者用戶從存儲設(shè)備中獲得數(shù)據(jù)的機制共同形成了信道。如果存在這些機制或存儲設(shè)備會丟失數(shù)據(jù)的機會,則該機會將被視為信道中的數(shù)據(jù)刪除。
當(dāng)發(fā)送者和接收者被數(shù)據(jù)出錯信道分開時,較佳的是不要僅僅發(fā)射輸入文件的一個精確副本,而是發(fā)射從輸入文件生成的、幫助進行差錯恢復(fù)的數(shù)據(jù)。編碼器是處理該任務(wù)的電路、設(shè)備、模塊或代碼段。查看編碼器的操作的一種方式是編碼器從輸入碼元生成輸出碼元,其中輸入碼元值的序列表示輸入文件。每一輸入碼元因此具有在輸入文件中的位置以及值。解碼器是從由接收者接收到的輸出碼元中重構(gòu)輸入碼元的電路、設(shè)備、模塊或代碼段,即使某些或大量輸入碼元是錯誤地接收的。
諸如Luby I或Shokrollahi I(示出了多級連鎖反應(yīng)碼)中描述的連鎖反應(yīng)碼是用于在各種各樣設(shè)置中恢復(fù)刪除的有效編碼方法。連鎖反應(yīng)解碼是某種形式的前向糾錯,它在存在刪除時解決了上述問題。對于連鎖反應(yīng)碼,可被生成的可能輸出碼元的池在大于輸入碼元數(shù)的數(shù)量級上(在大多數(shù)情況下,實際上是無限的),且可非??焖俚厣蓙碜愿怕食氐碾S機輸出碼元。對于連鎖反應(yīng)碼,輸出碼元可在進運中在“按需”的基礎(chǔ)上與發(fā)送步驟同時生成。
連鎖反應(yīng)碼具有內(nèi)容的所有輸入碼元可以從隨機生成的輸出碼元集的幾乎所有子集中重新生成的屬性,該隨機生成的輸出碼元的關(guān)于原始內(nèi)容的累計信息量等于或略微多于關(guān)于原始內(nèi)容的信息,對于僅略微多的等效信息,完全重新生成的概率將變得非常高。由于可生成比輸入碼元多得多的輸出碼元,在按輸入碼元的順序?qū)敵龃a元編號的隨機采樣不可能重疊,且因此是“信息加性的”。
各種連鎖反應(yīng)編碼系統(tǒng)的其它描述在2000年9月22日提交的名為“OnDemand Encoding With a Window”(采用窗口的按需編碼)的美國專利申請第09/668,452號,以及2000年10月18日提交的名為“Generating High Weight Outputsymbols Using a Basis”(使用基來生成高權(quán)重輸出碼元)的美國專利申請第09/691,735號中有描述,這些申請的每一個處于所有目的通過引用結(jié)合于此。
連鎖反應(yīng)編碼系統(tǒng)的某些實施例包括編碼器和解碼器。數(shù)據(jù)可以用塊或流的形式呈現(xiàn)給編碼器,且編碼器可在運行中從塊或流中生成輸出碼元。在某些實施例中,例如Shokrollahi I中所描述的實施例中,數(shù)據(jù)可以使用靜態(tài)編碼器被離線地預(yù)編碼成靜態(tài)輸入碼元,且可從多個原始數(shù)據(jù)碼元和靜態(tài)輸入碼元生成輸出碼元。
在連鎖反應(yīng)編碼系統(tǒng)的某些實施例中,編碼和解碼過程依賴于權(quán)重表。權(quán)重表描述了源碼元集的概率分布。即,對于1和全輸入碼元數(shù)之間的任何數(shù)W,權(quán)重表指示了唯一的概率P(W)。P(W)對于大量W值可能為0,在這一情況下,期望權(quán)重表僅包括P(W)為非0的那些權(quán)重W。
在連鎖反應(yīng)編碼系統(tǒng)的某些實施例中,輸出碼元如下生成對于每一輸出碼元,隨機地生成鍵?;谠撴I,從權(quán)重表中計算權(quán)重W。然后,選擇W源碼元的隨機或偽隨機子集。則輸出碼元將為這些源碼元的XOR(異或)。這些源碼元在后文中被稱為輸出碼元的近鄰或關(guān)聯(lián)。這一基本方案的各種修改和擴展都是可能的,且已在上述專利和專利申請中討論。
一旦生成了輸出碼元,它可連同其鍵,或者關(guān)于如何重新生成該鍵的指示,或者有助于接收者生成用于生成輸出碼元的同一鍵集的某些公共隨機性源一起被發(fā)送到預(yù)期的接收者。
在某些應(yīng)用中,可能較佳的是首先發(fā)射輸入碼元作為輸出碼元,然后通過發(fā)送從輸入碼元生成的輸出碼元來繼續(xù)傳輸。這一編碼系統(tǒng)被稱為系統(tǒng)編碼系統(tǒng),且在Shokrollahi I中公開。
EC-MS編碼不限于任何特定類型的輸入碼元,但是輸入碼元的類型通常是由應(yīng)用規(guī)定的。通常,輸入碼元的值是從對某一正整數(shù)M的2M個碼元的字符表中選擇的。在這些情況下,輸入碼元可以由來自輸入文件的M比特數(shù)據(jù)的序列來表示。M的值通常是基于對應(yīng)用的使用以及信道來確定的。例如,對于基于比特的傳輸信道,大小為1比特的碼元可能是適當(dāng)?shù)?。作為另一示例,某些通信系統(tǒng)使用調(diào)制在對信道的一次使用中發(fā)射若干比特。在這些情況下,將碼元大小置為等于在每次使用信道時發(fā)射的比特數(shù)可能是適當(dāng)?shù)?。例如,?dāng)使用四相相移鍵控(QPSK)作為調(diào)制方案時,有利的是選擇大小等于兩個比特的碼元。在使用EC-MS編碼的通用通信系統(tǒng)中,諸如輸入碼元大小等應(yīng)用專用參數(shù)(即,M,由輸入碼元編碼的比特數(shù))可以是由應(yīng)用設(shè)置的變量。
每一輸出碼元具有與其相關(guān)聯(lián)的概率分布,對于輸出碼元字符表中的任一元素,該概率分布確定了碼元在發(fā)射之前具有該值的概率。這些概率或其估計可以通過計算接收的碼元與有效碼元集的距離來提取。例如,當(dāng)若干比特被調(diào)制成一幀時,解調(diào)步驟可提供對于調(diào)制步驟如何準確的估計。在某些實現(xiàn)中,對準確度的估計是二進制值(例如,“準確”或“不準確”)。在其它實現(xiàn)中,估計可以采用三個、四個或更多值中的一個。
在下文所考慮的一個較佳實施例中,每一輸出碼元具有稱為其“鍵”的標識符。較佳地,每一輸出碼元的鍵可以由接收者容易地確定,以允許接收者將一個輸出碼元與其它輸出碼元區(qū)分開來。較佳地,一個輸出碼元的鍵與所有其它輸出碼元的鍵不同。同樣,較佳的是在傳輸中包括盡可能少的數(shù)據(jù),以使接收者能夠確定所接收的輸出碼元的鍵。在某些實施例中,輸出碼元的鍵可通過發(fā)送者和接收者之間的時鐘同步,以及通過幫助重構(gòu)各個輸出碼元的鍵的唯一共享號來確定。
在某些系統(tǒng)中,較佳的是從一個以上數(shù)據(jù)片段中形成鍵。例如,考慮包括從一個或多個發(fā)送者接收從同一輸入文件生成的一個以上數(shù)據(jù)流的接收者的系統(tǒng),其中所發(fā)射的數(shù)據(jù)是分組流,每一分組包含一個輸出碼元。在這一情況下,較佳的是鍵包括與序列號配對的唯一流標識符。
在可能時,按照輸出碼元的位置來鍵控是較佳的。位置鍵控可能對從諸如CD-ROM(光盤只讀存儲器)等存儲設(shè)備中讀取輸出碼元而言能運作良好,其中輸出碼元的鍵是其在CD-ROM上的位置(例如,音軌加上扇區(qū)加上扇區(qū)內(nèi)的位置等)。位置鍵控也可能對其中發(fā)送者和接收者具有同步的時鐘的傳輸系統(tǒng)運作良好。采用這一形式的鍵控,接收者可重新創(chuàng)建輸出碼元的鍵,而對顯式發(fā)射的鍵無需任何空間。當(dāng)然,位置鍵控要求這一位置信息是可用且可靠的。
在某些系統(tǒng)中較佳的另一形式的鍵控是隨機鍵控。在這些系統(tǒng)中,生成隨機(或偽隨機)數(shù),并將其用作每一輸出碼元的鍵。在較佳實施例中,發(fā)送者和接收者對允許重構(gòu)同一隨機鍵序列的公共數(shù)據(jù)片段達成一致。隨機鍵控的一個特性是鍵中具有相同值的部分可能較小,即使對于由不同物理位置處的不同發(fā)送者生成的鍵也是如此(假定可能鍵的范圍足夠大)。由于其實現(xiàn)的簡易性,這一形式的鍵控在某些系統(tǒng)中可具有優(yōu)于其它形式的優(yōu)點。應(yīng)當(dāng)理解,除非另外指明,否則此處所使用的“隨機”值或“隨機”數(shù)指的是真正隨機生成的數(shù)字,且包括偽隨機地生成的值或數(shù)字。
如上所述,EC-MS編碼在與其有期望的數(shù)據(jù)差錯或接收者沒有精確地在傳輸開始和結(jié)束時開始和結(jié)束接收的情況下是有用的。后一情況在此被稱為“數(shù)據(jù)不完整性”。當(dāng)使用EC-MS編碼時,這些情況不會不利地影響通信過程,因為所接收的EC-MS編碼數(shù)據(jù)高度獨立,使得它是信息加性的。如果大多數(shù)隨機輸出碼元集合足夠獨立以在很大程度上是信息加性的,這是對于此處所描述的EC-MS編碼的情況,則其累計信息內(nèi)容足夠大的任何合適數(shù)量的輸出碼元可用于恢復(fù)輸入文件。采用連鎖反應(yīng)編碼,接收者不被約束為選取任何特定的輸出碼元集,因此它可從一個發(fā)送者接收某些輸入碼元,切換到另一發(fā)送者,有差錯地接收某些碼元,或甚至丟失某些碼元,錯過給定傳輸?shù)拈_始或結(jié)束,但仍恢復(fù)輸入文件。這一加入和離開傳輸,而無需接收者—發(fā)送者協(xié)調(diào)的能力極大程度地簡化了通信過程。
系統(tǒng)綜述圖1是使用EC-MS編碼的通信系統(tǒng)100的框圖。在通信系統(tǒng)100中,輸入文件101或輸入流105被提供給輸入碼元生成器110。輸入碼元生成器110從輸入文件或流中生成一個或多個輸入碼元(IS(0),IS(1),IS(2),…),其中每一輸入碼元具有值和位置(在圖1中表示為加括號的整數(shù))。如上所述,輸入碼元的可能值,即其字符表通常是2M個碼元的字符表,使得每一輸入碼元對輸入文件的M個比特編碼。M的值一般是按照對通信系統(tǒng)100的使用來確定的,但是通用系統(tǒng)可能包括輸入碼元生成器110的碼元輸入大小,使得M可隨使用不同而不同。輸入碼元生成器110的輸出被提供給編碼器115。
靜態(tài)鍵生成器130產(chǎn)生靜態(tài)鍵S0,S1,…的流。所生成的靜態(tài)鍵的個數(shù)一般是受限制的,且取決于編碼器115的具體實施例。靜態(tài)鍵的生成隨后將更詳細描述。動態(tài)鍵生成器120對要由編碼器115生成的每一輸出碼元生成一個動態(tài)鍵。生成每一動態(tài)鍵,使得同一輸入文件的大部分動態(tài)鍵是唯一的。例如,Luby I描述了可使用的鍵生成器的實施例。動態(tài)鍵生成器120和靜態(tài)鍵生成器130的輸出被提供給編碼器15。靜態(tài)鍵生成器130的操作可取決于由隨機數(shù)生成器135生成的隨機數(shù)。
從由動態(tài)鍵生成器120提供的每一鍵I,編碼器115從由輸入碼元生成器提供的輸入碼元中生成一個值為B(I)的輸出碼元。編碼器115的操作將在下文中更詳細描述。每一輸出碼元的值是基于其鍵,在一個或多個輸入碼元以及從輸入碼元計算的可能的一個或多個冗余碼元的某一函數(shù)上生成的。產(chǎn)生具體的輸出碼元的輸入碼元和冗余碼元的集合此處被稱為輸出碼元的“關(guān)聯(lián)碼元”,或簡稱為其“關(guān)聯(lián)”。對函數(shù)(“值函數(shù)”)和關(guān)聯(lián)的選擇是依照后文更詳細描述的過程來完成的。通常,但非總是,M對于輸入碼元和輸出碼元是相同的,即,它們都對相同個數(shù)的比特編碼。
在某些實施例中,輸入碼元數(shù)K由編碼器115用于選擇關(guān)聯(lián)。如果K事先未知,諸如當(dāng)輸入是流文件的情況,則K僅僅是一個估計。值K也可能由編碼器115用于對輸入碼元和由編碼器115生成的任何中間碼元分配存儲。
編碼器115向發(fā)射模塊140提供輸出碼元。也可向發(fā)射模塊140提供來自動態(tài)鍵生成器120的每一這樣的輸出碼元的鍵。發(fā)射模塊140通過信道145向接收模塊150發(fā)射輸出碼元,并取決于所使用的鍵控方法,發(fā)射模塊140也可能發(fā)射關(guān)于所發(fā)射的輸出碼元的鍵的某些數(shù)據(jù)。信道145被假定為差錯信道,但是這對于通信系統(tǒng)100的正確操作并非是要求。模塊140、145和150可以是任何合適的硬件組件、軟件組件、物理介質(zhì)或其任何組合,只要發(fā)射模塊140適用于向信道145發(fā)射輸出碼元和任何所需的關(guān)于其鍵的數(shù)據(jù),并且接收模塊150適用于從信道145接收碼元以及關(guān)于其鍵的可能的某些數(shù)據(jù)。接收模塊150也可包含給出對所接收的輸出碼元的值在傳輸時為v的概率的估計的估計器,由此提供了每一接收的輸出碼元的可能的v的概率估計。如果用于確定關(guān)聯(lián),則值K可通過信道145發(fā)送,或者它可通過編碼器115和解碼器155的約定事先設(shè)置。
由于信道145被假定為差錯信道,且由于差錯也可以是刪除,因此通信系統(tǒng)100不假定退出接收模塊150的輸出碼元和進入發(fā)射模塊140的輸出碼元之間的一對一對應(yīng)性。實際上,當(dāng)信道145包括分組網(wǎng)絡(luò)時,通信系統(tǒng)100甚至可能無法假定任何兩個或多個分組在通過信道145傳送時被保存的相對順序。因此,輸出碼元的鍵是使用上述鍵控方案的一個或多個來確定的,且無需按照輸出碼元退出接收模塊150的順序來確定。
接收模塊150向解碼器155提供輸出碼元值B(Ia),B(Ib),B(Ic),…,以及對其概率P(Ia),P(Ib),P(Ic),…的估計,并且任一數(shù)據(jù)接收模塊150所接收的關(guān)于這些輸出碼元的鍵的內(nèi)容被提供給動態(tài)鍵生成器160。概率一般是可能輸出碼元集的概率分布。例如,當(dāng)輸出碼元表示比特時,輸出比特的概率可能等于輸出比特在傳輸之前為0的概率(它為1比特的概率則是1減去它為0比特的概率)。
動態(tài)鍵重新生成器160為接收的輸出碼元重新生成動態(tài)鍵,并將這些動態(tài)鍵提供給解碼器155。靜態(tài)鍵生成器163重新生成靜態(tài)鍵S0,S1,...,并將它們提供給解碼器155。靜態(tài)鍵生成器從隨機數(shù)生成器164接收數(shù)字,或能夠訪問在編碼和解碼過程中都使用的隨機數(shù)生成器135。如果隨機數(shù)是在同一物理設(shè)備上生成的,該訪問可以是對這一設(shè)備的訪問的形式,或者該訪問可以是對用于生成隨機數(shù)的同一算法的形式,以在隨機數(shù)生成器164中實現(xiàn)與隨機數(shù)生成器135相同的行為。解碼器155使用由動態(tài)鍵重新生成器160和靜態(tài)鍵生成器163提供的鍵,以及對應(yīng)的輸出碼元,來恢復(fù)輸入碼元(同樣是IS(0),IS(1),IS(2),…)。解碼器155將恢復(fù)的輸入碼元提供給輸入文件重新組裝器165,后者生成輸入文件101或輸入流105的副本170。
編碼器圖2是圖1所示的編碼器115的一個具體實施例的框圖。編碼器115包括靜態(tài)編碼器210、動態(tài)編碼器220、以及冗余度計算器230。靜態(tài)編碼器210接收以下輸入a)由輸入碼元生成器110提供的并儲存在輸入碼元緩沖器205中的原始輸入碼元IS(0),IS(1),…,IS(K-1);b)原始輸入碼元數(shù)K;c)由靜態(tài)鍵生成器130提供的靜態(tài)鍵S0,S1,...;以及d)冗余碼元數(shù)R。在接收到這些輸入之后,靜態(tài)編碼器205計算R個冗余碼元RE(0),RE(1),…,RE(R-1),這將在下文中描述。通常,冗余碼元具有與輸入碼元相同的大小。在一個具體實施例中,由靜態(tài)編碼器210生成的冗余碼元被儲存在輸入碼元緩沖器205中。輸入碼元緩沖器205可以僅僅是邏輯的,即文件可以物理地儲存在一個地方,且輸入碼元在碼元緩沖器205中的位置可以僅僅是這些碼元在原始文件中的位置的重命名。
動態(tài)編碼器220接收輸入碼元和冗余碼元,并生成輸出碼元,如在下文中更詳細地描述的。在其中冗余碼元被儲存在輸入碼元緩沖器205中的一個實施例中,動態(tài)編碼器220從輸入碼元緩沖器205接收輸入碼元和冗余碼元。
冗余計算器230從輸入碼元數(shù)K中計算冗余碼元數(shù)R。這一計算在下文中更詳細描述。
在其中生成輸出碼元的速度是關(guān)鍵資源的情況下,輸出文件可以使用靜態(tài)編碼器210來編碼,并在輸出碼元的傳輸開始之前被儲存在中間設(shè)備上。該設(shè)備可以是,例如在與動態(tài)編碼器220不同的物理位置處附加的存儲設(shè)備,或者它可被包括在與動態(tài)編碼器220相同的物理設(shè)備中,等等。在其中文件在用動態(tài)編碼器220編碼之前用靜態(tài)編碼器210良好地編碼的情況下,實現(xiàn)動態(tài)編碼器220的計算設(shè)備無需將資源專用于靜態(tài)編碼。由此,可將更多資源專用于動態(tài)編碼,以例如提高為輸入文件生成輸出碼元的速度,為其它文件生成輸出碼元,執(zhí)行其它任務(wù)等等。靜態(tài)編碼能否或是否應(yīng)當(dāng)在動態(tài)編碼之前執(zhí)行取決于具體的實現(xiàn)。
靜態(tài)編碼器的綜述將參考圖3和4來描述靜態(tài)編碼器210的通用操作。圖3是示出靜態(tài)編碼的方法的一個實施例的簡化流程圖。在步驟305,跟蹤已生成了多少冗余碼元的變量j被設(shè)為0。然后,在步驟310,根據(jù)輸入碼元IS(0),…,IS(K-1)的函數(shù)F0計算第一冗余碼元RE(0)。然后,在步驟315,遞增變量j。接著,在步驟320,測試是否生成了所有冗余碼元(即,j是否大于R-1?)。如果是,則該流程結(jié)束。否則,該流程前進到步驟325。在步驟325,根據(jù)輸入碼元IS(0),…,IS(K-1)以及先前生成的冗余碼元RE(0),…,RE(j-1)的函數(shù)Fj計算RE(j)。重復(fù)步驟315、320和325,直到計算了R個冗余碼元。
再次參考圖1和2,在某些實施例中,靜態(tài)編碼器210從靜態(tài)鍵生成器130接收一個或多個靜態(tài)鍵S0,S1,…。在這些實施例中,靜態(tài)編碼器210使用靜態(tài)鍵來確定部分或全部函數(shù)F0,F(xiàn)1,…,F(xiàn)j-1,例如,靜態(tài)鍵S0可用于確定函數(shù)F0,靜態(tài)鍵S1可用于確定函數(shù)F1,等等?;蛘?,靜態(tài)鍵S0,S1,…的一個或多個可用于確定函數(shù)F0,靜態(tài)鍵S0,S1,…的一個或多個可用于確定函數(shù)F1,等等。在其它實施例中,不需要任何靜態(tài)鍵,且由此,不需要靜態(tài)鍵生成器130。
現(xiàn)在參考圖2和3,在某些實施例中,由靜態(tài)編碼器210生成的冗余碼元可被儲存在輸入碼元緩沖器205中。圖4是靜態(tài)編碼器210的一個實施例的操作的簡化圖示。具體地,靜態(tài)編碼器210根據(jù)從輸入碼元緩沖器205接收到的輸入碼元IS(0),…,IS(K-1),RE(0),…,RE(j-1)的函數(shù)Fj生成冗余碼元RE(j),并將其儲存回輸入碼元緩沖器205中。函數(shù)F0,F(xiàn)1,...,F(xiàn)R-1的確切形式取決于具體應(yīng)用。通常,但非總是,函數(shù)F0,F(xiàn)1,...,F(xiàn)R-1包括部分或全部其對應(yīng)自變量的異或。如上所述,這些函數(shù)可以實際上采用或不采用圖1的靜態(tài)鍵生成器130生成的靜態(tài)鍵。例如,在以下所描述的一個具體實施例中,前幾個函數(shù)實現(xiàn)漢明碼,且不使用任何靜態(tài)鍵S0,…,S1,而其余的函數(shù)實現(xiàn)低密度奇偶校驗碼,并明確地使用靜態(tài)鍵。
動態(tài)編碼器的綜述再次參考圖2,動態(tài)編碼器200接收輸入碼元IS(0),…,IS(K-1)以及冗余碼元RE(0),…,RE(R-1),以及它要生成的每一輸出碼元的鍵I。包括原始輸入碼元和冗余碼元的集合在后文中被稱為“動態(tài)輸入碼元”集合。圖5是動態(tài)編碼器的一個實施例的簡化框圖。該編碼器類似于Luby I中描述的編碼器的實施例。Luby I描述了關(guān)于這一編碼器的操作的進一步細節(jié)。
動態(tài)編碼器500包括權(quán)重選擇器510、關(guān)聯(lián)器515、值函數(shù)選擇器520以及計算器525。如圖5所示,K+R個動態(tài)輸入碼元儲存在動態(tài)碼元緩沖器505中。在一個實施例中,動態(tài)碼元緩沖器505是圖2的輸入碼元緩沖器205。在其它實施例中,動態(tài)碼元緩沖器505與輸入碼元緩沖器205分離。動態(tài)鍵I(由圖1所示的動態(tài)鍵生成器120提供)是對權(quán)重選擇器510、關(guān)聯(lián)器515和值函數(shù)選擇器520的輸入。動態(tài)輸入碼元數(shù)K+R也被提供給這三個組件510、515和520。計算器525被耦合以從權(quán)重選擇器510、關(guān)聯(lián)器515和值函數(shù)選擇器520接收輸出,并從動態(tài)碼元緩沖器505接收碼元。計算器525生成輸出碼元值。應(yīng)當(dāng)理解,可使用與圖5所示的元件等效的其它安排,且這僅僅是依照本發(fā)明的編碼器的一個示例。例如,Luby I和Shokrollahi I描述了可在依照本發(fā)明的其它實施例中使用的其它編碼器。
在操作中,K+R個動態(tài)輸入碼元從靜態(tài)編碼器210接收,并被儲存在動態(tài)輸入碼元緩沖器505中。如上所述,每一動態(tài)輸入碼元具有位置(例如,輸入碼元的位置可以是其在輸入文件中的原始位置)和值。動態(tài)輸入碼元無需按照其各自的順序被儲存在動態(tài)輸入碼元緩沖器505中,只要所儲存的動態(tài)輸入碼元的位置可被確定。
使用鍵I和動態(tài)輸入碼元數(shù)K+R,權(quán)重選擇器510確定要成為具有鍵I的輸出碼元的“關(guān)聯(lián)”的動態(tài)輸入碼元數(shù)W(I)。使用鍵I、權(quán)重W(I)以及動態(tài)輸入碼元數(shù)K+R,關(guān)聯(lián)器515確定與輸出碼元相關(guān)聯(lián)的動態(tài)輸入碼元的位置的列表AL(I)。應(yīng)當(dāng)理解,如果關(guān)聯(lián)器515可在不事先知道W(I)的情況下生成AL(I),則無需單獨或顯式地計算W(I)。一旦生成了AL(I),可容易地確定W(I),因為它是AL(I)中的關(guān)聯(lián)數(shù)。
關(guān)聯(lián)器515是接收鍵I、數(shù)字N和數(shù)字t作為輸入,并產(chǎn)生0到N-1之間的整數(shù)的列表X(0),…,X(t-1)的映射器。較佳地,這些整數(shù)是不同的,且在其范圍內(nèi)均勻分布。例如,在圖5中的動態(tài)編碼器500的情況下,N等于K+R,t等于W(I),而AL(I)是列表X(0),…,X(t-1)。
由關(guān)聯(lián)器515給出的映射可采用各種形式。它能夠訪問真正隨機或偽隨機比特的源,以使得其輸出是隨機的。然而,應(yīng)當(dāng)選擇它以使編碼器和解碼器兩者對相同的鍵I、相同的N和相同的t產(chǎn)生相同的輸出。為滿足這一要求,可由編碼器和解碼器以鍵I為種子生成偽隨機序列。替代偽隨機序列,真正隨機的序列可用于計算輸出,但是為使其有用,用于生成輸出的隨機序列需要被傳遞到解碼器。
再次參考圖5,一旦I、W(I)和AL(I)已知,輸出碼元的值B(I)是由計算器525基于值函數(shù)VF(I)計算的。合適的值函數(shù)的一個特性是它允許從輸出碼元值B(I)并從由AL(I)指示的其它W(I)-1個關(guān)聯(lián)的值確定由AL(I)指示的關(guān)聯(lián)的值。這一步驟中使用的一個較佳的值函數(shù)是XOR值函數(shù),因為它滿足該特性,可被容易地計算和容易地反轉(zhuǎn)。然而,可改為使用其它合適的值函數(shù)。例如,Luby I描述了可被使用的其它合適的值函數(shù)。
如果使用,則值函數(shù)選擇器520從鍵I并從K+R中確定值函數(shù)VF(I)。在一個變化中,值函數(shù)VF(I)對所有的I是相同的值函數(shù)VF。在該變化中,不需要值函數(shù)選擇器520,且可用值函數(shù)VF來配置計算器525。例如,值函數(shù)可能對所有的I都是XOR(異或),即,輸出碼元值是所有其關(guān)聯(lián)的值的XOR(異或)。
對于每一鍵I,權(quán)重選擇器510從I和K+R中確定權(quán)重W(I)。在一個變化中,權(quán)重選擇器510通過使用鍵I選擇W(I)來首先生成隨機查找數(shù),然后使用該數(shù)字在儲存在權(quán)重選擇器510中的或可由其訪問的分布表中查找W(I)的值。對于如何形成和訪問這一分布表的更詳細描述在下文中提供。一旦權(quán)重選擇器510確定了W(I),則該值被提供給關(guān)聯(lián)器515,并被提供給計算器525。
使用列表AL(I)、權(quán)重W(I)和由值函數(shù)選擇器520提供的值函數(shù)VF(I)或預(yù)先選擇的值函數(shù)VF,計算器525訪問動態(tài)輸入碼元緩沖器505中由AL(I)引用的W(I)個動態(tài)輸入碼元,以對當(dāng)前輸出碼元計算值B(I)。用于計算AL(I)的過程的一個示例在下文中描述,但是可改為使用另一合適的過程。較佳地,該過程給予每一輸入碼元被選作為給定輸出碼元的關(guān)聯(lián)的大致均等的機會,且以如果解碼器尚不具有對其可用的AL(I)則它可復(fù)制AL(I)的方式來完成選擇。
動態(tài)編碼器500然后輸出B(I)。實際上,動態(tài)編碼器500執(zhí)行圖6中所示的動作,即,根據(jù)選中輸入碼元的某一值函數(shù)生成輸出碼元值B(I)。在所示的示例中,值函數(shù)是XOR,輸出碼元的權(quán)重W(I)為3,且相關(guān)聯(lián)的動態(tài)輸入碼元(關(guān)聯(lián))位于0、2和K+R-2處,并具有各自的值IS(0)、IS(2)和RE(R-2)。由此,對于該I的值,輸出碼元計算如下B(I)=IS(0)IS(2)RE(R-2)其中,使用了值函數(shù)XOR,應(yīng)當(dāng)理解,冗余碼元具有與原始碼元IS(0),…,IS(K-1)相同的比特數(shù),且這些進而具有與輸出碼元相同的比特數(shù)。
所生成的輸出碼元然后如上所述地發(fā)射和接收。此處,假定某些輸出碼元可能丟失,或被打亂次序,或由一個或多個編碼器生成。然而,假定所接收的輸出碼元是以其鍵的指示以及其值B(I)準確的某種保證來接收的。如圖1所示,這些所接收的輸出碼元,連同由動態(tài)鍵重新生成器160從其指示中重構(gòu)的其對應(yīng)的鍵、值K和R、以及由靜態(tài)鍵生成器163重新生成的靜態(tài)鍵S0,S1,…是對解碼器155的輸入。解碼器155也可能接收和使用指示值B(I)如同被發(fā)射的概率那樣的概率的指示。
靜態(tài)編碼器靜態(tài)編碼器的主要功能是以在面對差錯時可能恢復(fù)原始數(shù)據(jù)的方式向原始數(shù)據(jù)添加冗余信息。這一冗余信息可協(xié)助解碼器恢復(fù)動態(tài)編碼器無法恢復(fù)的輸入碼元。在典型的應(yīng)用中,靜態(tài)編碼器應(yīng)當(dāng)在面對刪除時保證恢復(fù)到期望的準確性程度所需的冗余碼元數(shù)的方面是有效的,和/或在編碼過程和/或解碼過程的計算開銷方面是有效的。例如,對于給定的目標誤碼率p,在它應(yīng)用中它是由動態(tài)編碼器的性能來規(guī)定的,目的是使得冗余碼元數(shù)R盡可能小,而同時保證如果最多在數(shù)據(jù)中的p部分發(fā)生差錯,能夠快速地恢復(fù)原始數(shù)據(jù)。
滿足這些要求的一類代碼是LDPC代碼,這對本領(lǐng)域技術(shù)人員是公知的。盡管這些代碼可在許多情況下恢復(fù)原始數(shù)據(jù),但存在其中它們恢復(fù)了除少量原始輸入碼元之外的所有東西的不常見的情況。由此,在某些實施例中,在LDPC編碼之前,首先使用如果存在少量差錯可恢復(fù)原始數(shù)據(jù)的代碼來編碼輸入數(shù)據(jù)。這一第一編碼生成了第一多個冗余碼元。在該第一編碼之后,多個原始碼元和第一多個冗余碼元使用LDPC編碼器來編碼。用于第一層編碼的一個示例是BCH碼,它對本領(lǐng)域的技術(shù)人員是公知的??梢岳斫?,也可使用其它類型的編碼,諸如使用兩層或兩層以上的編碼方案。
圖7是依照本發(fā)明的靜態(tài)編碼器的一個具體實施例的簡化框圖。靜態(tài)編碼器600包括參數(shù)計算器605、BCH編碼器610以及低密度奇偶校驗(LDPC)編碼器620。參數(shù)計算器605接收輸入碼元數(shù)K以及要生成的冗余碼元數(shù)R,并生成參數(shù)D和E。D是要由BCH編碼器610生成的冗余碼元數(shù)的指示,E是要由LDPC編碼器620生成的冗余碼元數(shù)的指示。參數(shù)D被提供給BCH編碼器620,而參數(shù)被提供給LDPC編碼器620。
BCH編碼器610被耦合以從輸入碼元緩沖器中接收輸入碼元IS(0),…,IS(K-1)、輸入碼元數(shù)K以及參數(shù)D。作為響應(yīng),BCH編碼器610依照BCH碼生成D+1個冗余碼元HA(0),HA(1),…,HA(D)。在一個實施例中,輸入碼元緩沖器625是圖2的輸入碼元緩沖器205。BCH編碼過程將D+1個冗余碼元添加到原始的K個輸入碼元,其中D可取決于應(yīng)用。編碼器610可以用糾錯和糾刪除碼領(lǐng)域中的技術(shù)人員已知的任何數(shù)量的方式來實現(xiàn)。
LDPC編碼器620被耦合以接收輸入碼元IS(0),…,IS(K-1)、輸入碼元和BCH編碼的冗余碼元的個數(shù)K+D+1、參數(shù)E以及靜態(tài)鍵S0,S1,…。作為響應(yīng),LDPC編碼器620依照LDPC碼生成E個冗余碼元。由LDPC編碼器計算的冗余碼元數(shù)E等于R-D-1,其中R是冗余碼元數(shù)。如本領(lǐng)域技術(shù)人員已知的,存在使用LDPC碼編碼信息的各種方式。LDPC碼可以由包括一組消息節(jié)點、一組校驗和將消息節(jié)點連接到校驗節(jié)點的邊的圖結(jié)構(gòu)來表示。該組有效LDPC碼字是消息節(jié)點的設(shè)置的集合,使得對每一校驗節(jié)點,相鄰消息節(jié)點的XOR為0。在某些應(yīng)用中,較佳的是消息節(jié)點都具有相同的階數(shù),即,都被連接到相同數(shù)量的校驗節(jié)點,因為這簡化了編碼器的實現(xiàn),并使得解碼器的差錯概率的計算更簡單。LDPC編碼器620可用糾錯和消除糾正碼領(lǐng)域的技術(shù)人員已知的任何數(shù)量的方式來實現(xiàn)。
圖8示出了采用圖7所示的靜態(tài)編碼器的本發(fā)明的一個實施例的操作。具體地,BCH編碼器610從輸入碼元緩沖器625(或圖2中的205)接收輸入碼元,并生成D+1個BCH編碼的冗余碼元,它們被儲存在輸入碼元緩沖器625中。然后,LDPC編碼器620從輸入碼元緩沖器625接收輸入碼元和D+1個BCH編碼的冗余碼元,并生成E個LDPC編碼的冗余碼元,它們被儲存在輸入碼元緩沖器625中。
如上所述,在某些實施例中,LDPC編碼器620接收由圖1的靜態(tài)鍵生成器130生成的靜態(tài)鍵S0,S1,…。在一個實施例中,靜態(tài)鍵生成器130是在接收到種子之后生成隨機查找數(shù)序列(靜態(tài)鍵S0,S1,...)的隨機數(shù)生成器。種子可采取各種形式。例如,它可以是真正隨機數(shù)生成器的值。作為另一示例,種子可以是以確定性的方式從CPU時鐘獲得的串。不論種子是什么,它都應(yīng)當(dāng)被傳遞到解碼器,使得可由解碼器生成相同的靜態(tài)鍵序列。因此,在許多應(yīng)用中,有利的是具有不是太大的種子。在許多應(yīng)用中,種子可以是32位整數(shù)或64位整數(shù)。
再次參考圖1,在某些特定應(yīng)用中,要通過信道145發(fā)射的文件或流相當(dāng)小。例如,輸入文件可以是短音頻消息或包括幾萬字節(jié)的網(wǎng)頁內(nèi)容,或是幾千或更少比特的集合。上述靜態(tài)編碼器的特定實施例在這些情形下可能不是最優(yōu)的。例如,某些上述實施例可能導(dǎo)致對存儲器和處理器速度的低效使用,且因此會降低數(shù)據(jù)重構(gòu)的速度。同樣,某些上述實施例可能要求更大的接收開銷以在由系統(tǒng)用戶設(shè)置的可靠性參數(shù)內(nèi)重構(gòu)數(shù)據(jù)。另外,某些上述實施例可能導(dǎo)致重構(gòu)比所需要的更不可靠的數(shù)據(jù)。
據(jù)發(fā)現(xiàn),當(dāng)輸入碼元數(shù)增加時,解碼器的故障概率也增加。也發(fā)現(xiàn),這很大程度是由于如果原始內(nèi)容的大小相對較小,則編碼過程未創(chuàng)建關(guān)于原始內(nèi)容的足夠信息。因此,描述了編碼器的另一實施例,它生成傳達關(guān)于原始碼元的更多信息的冗余碼元。
圖9是依照本發(fā)明的一個實施例用于編碼的過程的簡化流程圖。
如此處所示出的,在步驟805,變量i被初始化為0。變量i跟蹤已經(jīng)生成的冗余碼元數(shù)。在步驟810,計算數(shù)字t,作為大于或等于K/2的最小奇整數(shù)。在步驟815,基于K、t和靜態(tài)鍵Si生成值P1,P2,…,Pt。值P1,P2,…,Pt指示將用于生成冗余碼元的輸入碼元的位置。在一個特定實施例中,諸如圖5的關(guān)聯(lián)器515等關(guān)聯(lián)器用于生成P1,P2,…,Pt。具體地,值t可作為W(I)輸入提供,值K可作為K+R輸入提供,靜態(tài)鍵Si可作為鍵I輸入提供。應(yīng)當(dāng)注意,許多不同的t值將產(chǎn)生類似的編碼效果,且因此該特定選擇僅是一個示例。
在步驟820,RE(i)的值被計算為值IS(P1),IS(P2),…,IS(Pt)的XOR。在步驟825,將變量i遞增1,以準備下一冗余碼元的計算,且在步驟830,確定是否計算了所有的冗余碼元。如果否,則該流程返回到步驟815。
解碼器圖10是示出依照本發(fā)明的解碼過程的簡化框圖,它可以由諸如圖1的解碼器155等解碼器來實現(xiàn)。
該過程在各級中解碼動態(tài)輸入碼元。在步驟905,解碼器設(shè)置所接收的輸出碼元的關(guān)聯(lián)的列表。這意味著對于每一輸出碼元,解碼器計算一組相關(guān)聯(lián)的動態(tài)輸入碼元,并將該信息儲存在某一表中。為此,解碼器能夠訪問對應(yīng)于所接收的輸出碼元的鍵,以及輸入碼元數(shù)K和冗余靜態(tài)碼元數(shù)R。在步驟910,解碼器將校驗碼元列表連同其關(guān)聯(lián)一起添加到輸出碼元的關(guān)聯(lián)的表。在本發(fā)明的較佳實施例中,校驗碼元表示動態(tài)輸入碼元之間的依賴性。例如,如果一個校驗碼元的關(guān)聯(lián)是索引為10、19和32的動態(tài)輸入碼元,則這意味著對應(yīng)的動態(tài)輸入碼元的XOR等于固定值。在本發(fā)明的較佳實施例中,該值為0,但是這不是必需的。
在步驟915,該過程初始化校驗碼元的值以及輸出碼元的值。在該步驟中,初始化意味著將可能輸出碼元值和校驗碼元值的集合的概率分布分別與每一個別的輸出和校驗碼元相關(guān)聯(lián)。該概率分布可以用一個較小的精度給出,以提高以下步驟的計算效率。所分配的概率也可以對大多數(shù)輸出或校驗碼元字符表的值為0。例如,在本發(fā)明的較佳實施例中,當(dāng)校驗碼元的值為0時,對應(yīng)的概率分布對0分配值1,且將0值分配給校驗碼元字符表的任何其它元素。
步驟920和930迭代地更新動態(tài)輸入碼元的概率。對于該任務(wù)有若干已知的算法,諸如信任傳播算法(belief-propagation algorithm)及某種變體,例如最小求和(min-sum)算法,或量化信任傳播算法。一般而言,在這些算法中,輸出或校驗碼元與動態(tài)輸入碼元之間的每一連接攜帶兩個概率分布,它們在每一輪中被更新。這些概率分布被看做在該算法期間來回傳遞的消息。在算法的第一輪中,校驗和輸出碼元將其自己的概率分布傳遞到其相關(guān)聯(lián)的動態(tài)輸入碼元。這指定了輸入和校驗碼元與動態(tài)輸入碼元之間的連接上的一組消息。在下一輪中,每一動態(tài)輸入碼元基于它沿所有其它連接接收到的消息,對每一這樣的連接計算第二消息。之后,每一校驗或輸出碼元基于它從所有其它連接等接收到的消息,在每一連接上更新第一組值。在每一輪的結(jié)束,動態(tài)輸出碼元基于進入的概率分布計算對其值的最佳猜測,并確定它們是否對其值有合理的確定(步驟930)。如果所有的動態(tài)輸入碼元都獲得了關(guān)于其值的預(yù)定級別的確定性,則該過程終止。
這一消息傳遞過程的若干修改是可能的。例如,如果在該過程的一次或多次迭代期間,并非所有的動態(tài)輸入碼元都獲得了關(guān)于其值的足夠的確定性,則這些值可以由解碼器設(shè)置,相關(guān)聯(lián)的輸出和校驗碼元的概率分布相應(yīng)地改變,且可從解碼過程中移除那些動態(tài)輸入碼元。在某些情況下,這一過程可導(dǎo)致對計算資源的實質(zhì)上的節(jié)省。另一可能的修改是單獨考慮動態(tài)輸出碼元和校驗碼元,并在解碼的不同級中使用它們。在某些實施例中,這一時分可能是有用的,且允許使用靜態(tài)碼元來恢復(fù)剩余的差錯,這些差錯在處理了所有動態(tài)輸出碼元之后仍保留。例如,解碼器可通過僅考慮動態(tài)輸出碼元,且不更新校驗和輸入碼元之間的連接的值來啟動。這些連接上的值可以在重復(fù)了該過程規(guī)定的迭代次數(shù)之后才更新,或在解碼器達到了穩(wěn)定狀態(tài)之后或依照某一其它準則來更新。
現(xiàn)在提出上述解碼器的一個特定實施例。在該實施例中,輸出碼元字符表是由0和1構(gòu)成的二進制字符表。由此,該字符表上的概率分布可以由單個非負實數(shù)p來描述,p被假定為獲得1的概率。在相關(guān)聯(lián)的動態(tài)輸入碼元和輸出及校驗碼元之間傳遞的消息可以是任意的實數(shù),按照按照表示數(shù)的兩個特定的消息Inf和-Inf來增加,使得-Inf小于任何其它數(shù),而Inf大于任何其它數(shù)。在這一情況下,每一輸出碼元是與描述該輸出碼元在傳輸之前為1的概率的相關(guān)聯(lián)的數(shù)字一起接收的。步驟915對每一輸出碼元初始化這些值,并且另外將校驗碼元的值初始化為0(意味著校驗碼元的值以1的概率為0)。
這一情況下的更新規(guī)則如下在第一輪中,每一輸出或校驗碼元將其初始值發(fā)送給其相關(guān)聯(lián)的動態(tài)輸入碼元。從這點開始,每一動態(tài)輸入碼元向其相關(guān)聯(lián)的輸出或校驗碼元S發(fā)送以下值對于除S以外的所有相關(guān)聯(lián)的碼元,動態(tài)輸入碼元接收概率p,計算ln(p/(1-p)),將這些數(shù)字相加以獲得數(shù)字t,并向S發(fā)送1(exp(t)+1),其中l(wèi)n(x)是x的自然對數(shù),而exp(x)是x的指數(shù)函數(shù)。在下一輪中,每一輸出或校驗碼元向其相關(guān)聯(lián)的動態(tài)輸入碼元I發(fā)送以下值計算從除I之外的所有相關(guān)聯(lián)的動態(tài)輸入碼元傳入的所有數(shù)字,并對每一這樣的數(shù)字計算1-2*a,將這些數(shù)字相乘,并將結(jié)果乘以1-2*z以獲得數(shù)字b,其中z是碼元的初始值,并向I發(fā)送(1-b)/2。
上述過程使用了公知的信任傳播算法,因此無需在此更詳細描述。可改為使用其它變化。
圖11中例示了解碼器155的一個不同的實施例。它包括動態(tài)解碼器1005和靜態(tài)解碼器1010。動態(tài)解碼器1005從圖1中的接收模塊150接收輸出碼元B(Ia),B(Ib),…,并從動態(tài)鍵生成器160接收動態(tài)鍵Ia,Ib,Ic,…。在接收到這些數(shù)據(jù)之后,動態(tài)解碼器1005試圖重構(gòu)輸入碼元IS(0),…,IS(K-1)以及冗余碼元RE(0),…,RE(R-1)。重構(gòu)可以通過采用例如信任傳播算法或任一其變體,用與對通用解碼器所描述的相同的方式進行。本發(fā)明的某些實施例的一個優(yōu)點是動態(tài)解碼器1005無需完成所有輸入碼元的解碼。相反,靜態(tài)解碼器1010可用于解碼動態(tài)解碼器1005不能恢復(fù)的輸入碼元。這在解碼器以上述方式使用時分策略時特別有用。
對應(yīng)于動態(tài)解碼器1005所獲得的輸入碼元和冗余碼元的概率分布被儲存在重構(gòu)緩沖器1015中。在完成了動態(tài)解碼之后,靜態(tài)解碼器1010試圖恢復(fù)動態(tài)解碼器1005未恢復(fù)的任何輸入碼元(如果有)。具體地,靜態(tài)解碼器1010從重構(gòu)緩沖器1015接收輸入碼元和冗余碼元。另外,靜態(tài)解碼器1010從靜態(tài)鍵生成器163(圖1)接收靜態(tài)鍵S0,S1,S2,…(如果使用)。再次參考圖1,在一個具體實施例中,可通過通過通信信道145向驅(qū)動靜態(tài)鍵生成器163的隨機數(shù)生成器164傳遞由隨機數(shù)生成器135使用的公共種子來重新生成靜態(tài)鍵。
所恢復(fù)的輸入碼元被提供給輸入文件重新組裝器165。靜態(tài)解碼器可遵循與此處所描述的其它解碼器相同的原理。然而,在本發(fā)明的某些實施例中,較佳的是對靜態(tài)解碼器使用更快速的解碼算法,諸如本領(lǐng)域的技術(shù)人員已知的位翻轉(zhuǎn)(bit-flipping)解碼器。在某些情況下,例如當(dāng)靜態(tài)編碼包括諸如BCH碼的等傳統(tǒng)碼時,靜態(tài)解碼過程可包括兩個不同的解碼器,一個用于LDPC碼(如果使用了該碼),另一個用于BCH碼。用于LDPC碼的解碼器可以是信任傳播解碼器或任何其變體,或者它可以是任何其它有效的解碼算法,諸如位翻轉(zhuǎn)算法。用于BCH碼的解碼器可以是采用本領(lǐng)域的技術(shù)人員已知的Berlekamp Massey算法的標準解碼器,或者它也可以是信任傳播解碼器。
圖12是示出依照本發(fā)明用于解碼的方法的一個實施例的簡化流程圖。在步驟1105,由解碼器接收Q個輸出碼元。Q的值可以取決于輸入碼元數(shù)和使用的具體動態(tài)編碼器。該值可以由接收模塊,諸如接收模塊150來轉(zhuǎn)發(fā),其運作將在下文中詳細描述。Q的值也可取決于解碼器可恢復(fù)輸入碼元可達到的期望的準確性程度。例如,如果期望解碼器可以用高概率恢復(fù)所有的輸入碼元,則Q應(yīng)當(dāng)被選為大于輸入碼元數(shù)。具體地,在某些應(yīng)用中,當(dāng)輸入碼元數(shù)較大時,Q可以比原始輸入碼元數(shù)大3%不到。在其它應(yīng)用中,當(dāng)輸入碼元數(shù)較小時,Q可以比輸入碼元數(shù)大10%。如果不能解碼所有的輸入碼元對解碼器而言是可接受的,則Q可以小于輸入碼元數(shù)。很清楚,總體解碼系統(tǒng)的一個目的通常是盡可能地減少數(shù)Q,而同時維持對于解碼過程成功的良好概率保證。
在步驟1110,諸如動態(tài)解碼器1005等動態(tài)解碼器從Q個接收到的輸出碼元中重新生成輸入碼元和冗余碼元??梢岳斫?,步驟1105和1110實質(zhì)上可以同時執(zhí)行。例如,動態(tài)解碼器可在解碼器接收Q個輸出碼元之前開始重新生成輸入碼元和冗余碼元。
在動態(tài)解碼器處理了Q個輸出碼元之后,它確定是否恢復(fù)輸入碼元達到了期望的準確性程度。期望的準確性程度可以是,例如所有輸入碼元,或小于所有輸入碼元某一數(shù)字、百分比等,或者如果使用了信任傳播或任何其它軟決策方法,則是對特定動態(tài)輸入碼元的某一可接受的概率。如果是,則該流程結(jié)束。如果否,則該工流程前進到步驟1120。在步驟1120,諸如靜態(tài)解碼器1010等靜態(tài)解碼器試圖恢復(fù)動態(tài)解碼器無法恢復(fù)的任何輸入碼元。在靜態(tài)編碼器處理了由動態(tài)編碼器恢復(fù)的輸入碼元和冗余碼元之后,該流程結(jié)束。
圖13是示出依照本發(fā)明的各方面用于解碼的方法的另一實施例的簡化流程圖。該實施例類似于相對于圖12所描述的實施例,并包括公共的步驟1105、1110、1115和1125。但是,在步驟1125之后,該流程圖前進到步驟1130,其中確定輸入碼元是否被恢復(fù)達到期望的準確性程度。如果是,則該流程結(jié)束。如果否,則該流程前進到步驟1135。在步驟1135,接收一個或多個附加輸出碼元。然后,該流程返回到步驟1110,使得動態(tài)解碼器和/或靜態(tài)解碼器可試圖恢復(fù)剩余的未恢復(fù)的輸入碼元。
圖14是示出依照本發(fā)明用于解碼的方法的又一實施例的簡化流程圖。該實施例涉及上述時分過程。在步驟1155,解碼器接收輸出碼元,且在步驟1160,動態(tài)解碼器從所接收的輸出碼元中重新生成輸入碼元和冗余碼元。然后,在步驟1165,確定是否應(yīng)當(dāng)結(jié)束動態(tài)解碼。該確定可以基于所處理的輸出碼元數(shù)、所恢復(fù)的輸入碼元數(shù)、恢復(fù)附加輸入碼元的當(dāng)前速率、處理輸出碼元所花費的時間等的一個或多個。可以理解,步驟1155、1160和1165實質(zhì)上可以同時執(zhí)行。例如,動態(tài)解碼器可在解碼器繼續(xù)接收輸出碼元時開始重新生成輸入碼元和冗余碼元。另外,對是否停止動態(tài)解碼過程的評估可以在接收輸出碼元的同時和/或在動態(tài)解碼器處理輸出碼元的同時周期性地執(zhí)行。
在步驟1165,如果確定不要停止動態(tài)解碼,則該流程返回到步驟1155。但是,如果在步驟1165確定要結(jié)束動態(tài)解碼,則該流程前進到步驟1170。在步驟1170,確定是否恢復(fù)了輸入碼元達到期望的準確性程度。如果是,則該流程結(jié)束。如果否,則該流程前進到步驟1175。在步驟1175,靜態(tài)解碼器試圖恢復(fù)動態(tài)解碼器未能恢復(fù)的任何輸入碼元。在靜態(tài)編碼器處理了由動態(tài)編碼器恢復(fù)的輸入碼元和冗余碼元之后,該流程結(jié)束。
接收模塊參考圖1,接收模塊150的主要任務(wù)是從信道接收輸出碼元,對碼元計算概率分布,并將該信息連同輸出碼元的鍵一起轉(zhuǎn)發(fā)到解碼器。在某些實施例中,接收模塊還計算對接收到的輸出碼元所包含的關(guān)于未知輸入碼元的信息量的估計,并且它可使用該估計以在輸出碼元的累計信息足以恢復(fù)輸入碼元時停止對其它輸出碼元的接收。這一估計可以是非常粗略的(例如,僅僅是值是“正確”還是“不正確”的指示),或是非常精細的(例如,碼元的值是來自輸入字符表的給定值的概率)。估計本身可能是有差錯的,尤其是當(dāng)估計非常粗略的時候。
實際上,概率分布可以基于表示輸出碼元的通信信號的力度和強度來估計。例如,這一數(shù)據(jù)可從解調(diào)技術(shù)中獲得。作為一個示例,假定每一輸出碼元由兩個比特構(gòu)成,它們使用四相相移鍵控(QPSK)方法來解調(diào),并且進入載波的相位被估算為z。然后,可在傳輸之前對輸出碼元的值的概率分布,其中四個值中的任一個的概率與對應(yīng)的QPSK星座圖與接收到的相位z的距離或距離的某一函數(shù)成正比。該概率分布也可以結(jié)合考慮到信號的強度或其它物理特征的項。
盡管最簡單的可能是令每一輸出碼元包括在載波上調(diào)制的一個碼元,諸如對QPSK調(diào)制方案中的兩個比特編碼每一輸出碼元,然而本發(fā)明不必限于這些情況。例如,一個輸出碼元可以對兩個或多個調(diào)制碼元編碼,諸如每一輸出碼元包括四個QPSK調(diào)制碼元。在該示例中,每一輸出碼元對8個比特編碼,并且可具有多達63個值的概率分布(假定可由所接收的輸出碼元編碼的64可能的比特序列,少1是因為它可被計算為其它63個值的總和減1)。
一旦獲得了概率分布,輸出碼元中的信息量的估計可被計算為概率分布的二進制熵。換言之,如果分布在傳輸之前向輸入碼元的m個可能的配置分配概率p1,p2,…,pm,則碼元中對應(yīng)的信息量等于1+p1*log(p1)+P2*log(p2)+…+pm*log(pm),其中l(wèi)og(x)是x的二進制對數(shù)。如上所述,接收模塊可添加每一進入輸出碼元中的信息量,以獲得對輸出碼元所傳遞的關(guān)于輸入碼元的總信息量的估計。
關(guān)聯(lián)器實現(xiàn)再次參考圖5,示出了關(guān)聯(lián)器515的一個實施例,且該關(guān)聯(lián)器類似于Luby I中所描述的那些關(guān)聯(lián)器。由此,當(dāng)N是K+R時,N輸入處的值應(yīng)當(dāng)是質(zhì)數(shù)。在操作中,當(dāng)該實施例用于計算AL(I)時,調(diào)整輸入大小K+R,使得它為質(zhì)數(shù)。在較佳實施例中,選擇冗余碼元數(shù)足夠大,使得K+R為質(zhì)數(shù)。在某些應(yīng)用中,N輸入為質(zhì)數(shù)的條件是相當(dāng)有限制的。
圖15示出了用于實現(xiàn)對其N無需是質(zhì)數(shù)的關(guān)聯(lián)器的方法。首先,在步驟1805,變量k被初始化為0。然后,在步驟1810,生成隨機整數(shù)Y。在一個具體實施例中,輸出碼元的鍵I用作隨機數(shù)生成器的種子。然后,在步驟1815,將整數(shù)Y對N取模,以產(chǎn)生0和N-1之間的數(shù)字。在步驟1820,對照先前生成的其它數(shù)字Y測試候選數(shù)字Y(X(0),X(1),…)。如果數(shù)字Y先前已被生成,則該流程返回到步驟1810。否則,在步驟1825,它被包括在列表X(0),X(1),…中。然后,在步驟1830,確定是否生成了W(I)個數(shù)字。如果否,則該流程返回到步驟1810。圖15所示的流程的結(jié)果是W(I)個數(shù)字的列表X(0),X(1),…,X(W(I)-1),其中列表中的每一數(shù)字X是0和N-1之間的唯一整數(shù)。然后,在步驟1835,列表AL(I)被設(shè)為數(shù)字X(0),X(1),…,X(W(I)-1)。
權(quán)重選擇器實現(xiàn)編碼器/解碼器的性能和效率取決于由圖2所示的動態(tài)編碼器220生成的輸出碼元的權(quán)重的分布,且某些分布比其它的要好。具體地,對描述所收集的輸出碼元數(shù)與輸入碼元數(shù)K相比的超出的參數(shù)A的選擇主要是受權(quán)重分布的選擇的影響。權(quán)重選擇的操作方面在下文中討論,之后是對某些重要權(quán)重分布的描述。圖16的框圖和圖17的流程圖用于示出這些概念。
圖5所示的權(quán)重選擇器510的任務(wù)如下在接收到鍵I以及長度K+R之后,權(quán)重選擇器輸出范圍0到K+R-1之間的整數(shù)W(I),稱為權(quán)重。與理想地隨機均勻生成整數(shù)的關(guān)聯(lián)器515不同,期望權(quán)重選擇器515的輸出不是均勻的,而是有利于某些權(quán)重偏斜,如以下所描述的。
如圖16所示,權(quán)重選擇器510包括兩個WT_INIT 1905和WT_CALC 1910,以及兩張表WT_RBITS 1915和WT_DISTRIB 1920。進程WT_INT 1905只需在傳入第一個鍵以初始化表WT_DISTRIB 1920時被調(diào)用一次。對WT_DISTRIB 1920的設(shè)計是系統(tǒng)的一個重要方面,且在稍候更詳細地考慮。在每次調(diào)用來基于鍵I產(chǎn)生權(quán)重W(I)時調(diào)用進程WT_CALC 1910。如圖17的流程圖中所示,WT_CALC 1910使用鍵I和儲存在表WT_RBITS 1915中的隨機比特來生成隨機數(shù)T(2005)。然后,T的值用于選擇表WT_DISTRIB 1920中的行號N。
如圖16所示,WT_DISTRIB 1920的RANGE(范圍)列中的條目是在值MAX_VAL處結(jié)束的遞增的正整數(shù)序列,而WT列是在值MAX_WT處結(jié)束的遞增的正整數(shù)序列。T的可能值的集合是0和MAX_VAL-1之間的整數(shù)。期望的特性是T有同等的可能性是可能值范圍中的任何值。N的值是通過搜索RANGE列,直到找到滿足RANGE(N-1)≤T≤RANGE(N)的N(2010)。一旦找到了N,將W(I)的值設(shè)為WT(N),即表WT_DISTRIB的WT列的第N個條目,并且這是返回的權(quán)重(2015,2020)。在圖16中,對于所示的示例表,如果T等于38,500,則找到N為4,且因此將W(I)設(shè)為WT(4)=8。
選擇權(quán)重分布用于解碼過程的主要的較佳優(yōu)化參數(shù)使得輸入文件可如下完全重構(gòu)a)使用盡可能少的輸出碼元,b)使用盡可能少的操作,以及c)以盡可能多的可靠性。通常,所有這些優(yōu)化選擇可通過對輸出碼元選擇正確的權(quán)重分布(即,所有I上的分布W(I)),以及輸出碼元上的關(guān)聯(lián)的分布(即,所有I上的AL(I)的成員資格)來滿足。應(yīng)當(dāng)強調(diào),盡管可不考慮權(quán)重分布和關(guān)聯(lián)選擇上的分布來應(yīng)用解碼過程,但較佳實施例將使用特別為幾乎最優(yōu)的性能特別選擇的權(quán)重分布和關(guān)聯(lián)選擇上的分布。事實上,許多分布都表現(xiàn)良好,因為選擇的分布中的小變化僅僅導(dǎo)致性能中的小變化。
一個較佳實施例中用于確定分布的一種方法使用了本領(lǐng)域的技術(shù)人員熟悉的密度評估的技術(shù)。用于設(shè)計權(quán)重分布的另一種方法使用了高斯逼近,且設(shè)計問題可被轉(zhuǎn)換成使用線性規(guī)劃方法可解的問題。這一方法可由生成權(quán)重分布的組件用于本發(fā)明。
現(xiàn)在將描述一個這樣的權(quán)重分布。權(quán)重分布作為表1所示的形式的表給出,其中P1是具有權(quán)重W1的輸出碼元的概率,P2是具有權(quán)重W2的輸出碼元的概率,等等,目其中P1,P2,…的和為1。
表1權(quán)重概率W1 P1W2 P2W3 P3… …采用這一分布,圖16的表WT_DISTRIB 1920將具有表2所示的形式。
表2行號權(quán)重范圍0 W1 MAX_VAL*P11 W2 MAX_VAL*P22 W3 MAX_VAL*P3… … …
測試的一個樣本分布具有表3所示的形式。
表3權(quán)重概率1 0.010002 0.424943 0.251954 0.035765 0.1232110 0.0902739 0.0477240 0.01894表3的分布(由于舍入不等于1.00000)在實踐中表現(xiàn)相當(dāng)良好。例如,從長度為1000的輸入大小上的10000次運行中,解碼器僅在4次運行中無法解碼輸入碼元。在這一情況下使用的靜態(tài)碼是具有消息階數(shù)等于4,且校驗階數(shù)是二項分布的LDPC碼。靜態(tài)碼的速率是0.97。所收集的輸出碼元數(shù)除以最優(yōu)輸出碼元數(shù)等于1.2;這轉(zhuǎn)換成20%的接收開銷。
一個較佳實施例中用于確定分布的另一方法是使用Luby I或Shokrollahi I中所描述的相同或相似的階數(shù)分布。盡管這些分布是為其中僅預(yù)期到刪除的傳輸信道來優(yōu)化的,而不是對差錯或錯亂的數(shù)據(jù)而優(yōu)化的,但它們?nèi)栽谀M中展示了良好的性能。例如,表4中給出的分布允許在其中輸入字符表包括兩個比特且破壞是由均值為0及標準差為σ的高斯隨機變量引起的信道上,對超過65535的K值,對范圍在0-2的σ,且以少于10%的開銷,用至少為1-10(-6)的概率完全糾正了K個輸入比特。
表4權(quán)重概率1 0.0082 0.4943 0.1664 0.0735 0.0838 0.056
9 0.03719 0.05665 0.02566 0.003EC-MS碼的系統(tǒng)編碼SED-CRC的教導(dǎo)可用于為EC-MS碼設(shè)計系統(tǒng)編碼器。此處,首先使用系統(tǒng)鍵序列來解碼輸入碼元,以生成中間輸入碼元序列。接著,向該中間輸入碼元序列應(yīng)用多級碼,以生成輸出碼元,其中某一些構(gòu)成原始輸入碼元。在下一步中,使用此處所描述的方法來解調(diào)接收到的輸出碼元,以恢復(fù)中間輸入碼元序列。之后,再次使用系統(tǒng)鍵來編碼該序列以獲得輸入碼元序列。
在某些實施例中,使用了類似諸如Shokrollahi I中所描述的多級編碼器,但在比特而非分組上工作的編碼器。在某些其它實施例中,諸如Luby I中所示的單級碼可能與接收器中的概率分布累積相組合。
現(xiàn)在已相對于具體實施例描述了本發(fā)明,且應(yīng)當(dāng)理解,本發(fā)明旨在覆蓋落入所附權(quán)利要求書的范圍內(nèi)的所有修改和等效技術(shù)方案。
權(quán)利要求
1.一種通過通信信道接收從源發(fā)射的數(shù)據(jù)的方法,其中,所述數(shù)據(jù)是作為多個輸出碼元發(fā)射的,且是從組合的輸入碼元和冗余碼元集合中的至少一個碼元生成的,其中,至少一個輸出碼元是從所述組合的集合中的一個以上碼元以及所述組合的集合中少于全部碼元中生成的,其中,所述組合的集合中的給定碼元集的可能有效輸出碼元數(shù)對于任何預(yù)期大小的輸入文件,實際上相對于所述輸入文件中的輸入碼元數(shù)是無限的,其中,所述輸入碼元來自一有序輸入碼元集,且其中,所述冗余碼元是從所述輸入碼元生成的,所述方法包括從所述通信信道接收輸出碼元,其中,所述通信信道可能具有引入的差錯和/或刪除;在接收到所述輸出碼元的至少一個子集之后,至少確定對輸出碼元概率分布的估計,其中,輸出碼元概率分布表示給定接收到的輸出碼元時,發(fā)射特定的輸出碼元的概率;從所述輸出碼元概率分布的估計中確定輸入碼元概率分布,其中,輸入碼元概率分布表示已被編碼的特定的輸入碼元形成所接收的輸出碼元的概率;從所接收的輸出碼元重新生成所述組合的集合中的碼元的至少一個子集,所述組合的集合中的碼元的子集包括多個重新生成的輸入碼元和多個重新生成的冗余碼元;以及在接收到所述輸出碼元的至少一個子集之后,從所述輸出碼元重新生成所述組合的集合中的碼元的至少一個子集,所述組合的集合中的碼元的子集包括多個重新生成的輸入碼元和多個重新生成的冗余碼元,其中,所述重新生成步驟使用所述輸入碼元概率分布。
2.如權(quán)利要求1所述的方法,其特征在于,還包括對于所接收的輸出碼元,確定與所接收的輸出碼元相關(guān)聯(lián)的信息質(zhì)量;累積與多個接收的輸出碼元相關(guān)聯(lián)的總信息量;以及當(dāng)所述累積的總信息質(zhì)量相對于所述有序輸入碼元集的信息內(nèi)容量滿足預(yù)定義準則時,觸發(fā)一個或多個重新生成步驟。
3.如權(quán)利要求2所述的方法,其特征在于,所述預(yù)定義準則包括所累積的總信息等于所述有序輸入碼元集的信息內(nèi)容量加上小的附加信息量的準則。
4.如權(quán)利要求3所述的方法,其特征在于,所述小附加信息量是所述有序輸入碼元集的信息內(nèi)容量的一個百分比。
5.如權(quán)利要求4所述的方法,其特征在于,所述百分比小于10%。
6.如權(quán)利要求4所述的方法,其特征在于,所述百分比小于5%。
7.如權(quán)利要求1所述的方法,其特征在于,輸出碼元概率分布的每一個是兩個概率的每一個上的概率分布,可被表示為單個概率。
8.如權(quán)利要求1所述的方法,其特征在于,輸出碼元概率分布包括在一個解碼階段中具有粗略量化,而在另一解碼階段具有精細量化的概率值。
9.如權(quán)利要求1所述的方法,其特征在于,輸出碼元概率分布包括其每一個采用兩個值中的一個的概率值,所述兩個值中的一個表示高概率,而另一個表示低概率。
10.如權(quán)利要求1所述的方法,其特征在于,輸出碼元概率分布包括具有粗略量化的概率值。
11.如權(quán)利要求1所述的方法,其特征在于,輸出碼元概率分布表示輸出碼元的每一比特的概率,指示該比特在傳輸時是1或0的概率。
12.如權(quán)利要求1所述的方法,其特征在于,輸出碼元概率分布表示在輸出碼元所有比特上的概率,指示輸出碼元傳輸時每一可能的值的概率。
13.如權(quán)利要求1所述的方法,其特征在于,輸出碼元概率分布表示在用于傳遞輸出碼元的數(shù)據(jù)碼元值上的概率。
14.如權(quán)利要求1所述的方法,其特征在于,所述概率分布作為當(dāng)估計的概率為0時不包括可能發(fā)射的比特或碼元的條目的數(shù)據(jù)結(jié)構(gòu)而存儲。
15.如權(quán)利要求1所述的方法,其特征在于,每一輸出碼元與從鍵字符表中選擇的鍵I相關(guān)聯(lián),且鍵字符表中的可能鍵的個數(shù)對于任何預(yù)期大小的輸入文件,相對于所述輸入文件中的輸入碼元數(shù)實際上是無限的。
16.如權(quán)利要求1所述的方法,其特征在于,所述冗余碼元包括第一多個冗余碼元和第二多個冗余碼元,其中,所述重新生成至少某些未重新生成的輸入碼元的步驟包括從所述第一多個冗余碼元的重新生成的冗余碼元和所述多個重新生成的輸入碼元中重新生成所述未重新生成的輸入碼元和所述第二多個冗余碼元中未重新生成的冗余碼元中的至少一個;以及如果所述從所述第一多個冗余碼元中重新生成的冗余碼元以及所述多個重新生成的輸入碼元中重新生成的步驟未重新生成輸入碼元達到期望的準確性程度,則從所述第二多個冗余碼元的冗余碼元以及所述多個解碼的輸入碼元中重新生成至少一個未重新生成的輸入碼元。
17.如權(quán)利要求16所述的方法,其特征在于,所述未重新生成的輸入碼元和所述第二多個冗余碼元的未重新生成的冗余碼元中的某一些是使用LDPC解碼器重新生成的;且其中,所述某些輸入碼元是使用漢明解碼器從所述第二多個冗余碼元的冗余碼元中重新生成的。
18.如權(quán)利要求16所述的方法,其特征在于,所述期望的準確性是完全恢復(fù)所述輸入碼元。
19.如權(quán)利要求16所述的方法,其特征在于,所述期望的準確性是以高概率完全恢復(fù)所述輸入碼元。
20.如權(quán)利要求1所述的方法,其特征在于,重新生成至少某些未重新生成的輸入碼元包括重新生成所有輸入碼元。
21.如權(quán)利要求1所述的方法,其特征在于,重新生成至少某些未重新生成的輸入碼元包括重新生成少于所有輸入碼元。
22.如權(quán)利要求1所述的方法,其特征在于,糾錯是通過對給定輸入碼元跟蹤對一個以上概率的概率估計,然后選擇最高概率估計來完成的。
23.如權(quán)利要求1所述的方法,其特征在于,概率分布包括基于信道噪聲的概率估計,使得更肯定的概率是從通信信道中的低信噪比得出的。
24.如權(quán)利要求1所述的方法,其特征在于,概率分布包括基于接收到的信號和該接收到的信號的可能值之間的距離的函數(shù)的概率估計。
25.如權(quán)利要求1所述的方法,其特征在于,接收到的輸入碼元中的信息量的估計可被計算為所述接收到的輸出碼元在可能發(fā)射的輸出碼元上的概率分布的二進制熵。
全文摘要
一種通信系統(tǒng)包括產(chǎn)生多個冗余碼元的編碼器。對于給定的鍵,從包括輸入碼元和冗余碼元的組合的碼元集中生成輸出碼元。輸出碼元一般彼此獨立,且若需要可生成實際上無限數(shù)目的輸出碼元(服從所使用的鍵的解)。輸出碼元是信息加性的,使得接收到的輸出碼元即使在已經(jīng)接收到許多碼元時也提供了用于解碼的附加信息。輸出碼元使得接收到的輸出碼元的集合能夠提供概率信息以支持糾錯。解碼器從所接收到的輸出中計算校驗碼元,其中每一校驗碼元與一個或多個輸入碼元和冗余碼元相關(guān)聯(lián)。對于每一接收到的輸出碼元,解碼器更新估計的信息內(nèi)容的累計,且在一輪或多輪中對每一輸入碼元生成輸入碼元的所有或部分可能值的概率分布。該過程可被重復(fù),直到對所有輸出碼元,眾多可能值之一比其它可能值概率更大,或者可重復(fù)該過程預(yù)定的輪數(shù),或者滿足其它的準則。更新可考慮已經(jīng)解碼的碼元、附加的輸出碼元和校驗碼元。
文檔編號H04L1/00GK1954501SQ200480029083
公開日2007年4月25日 申請日期2004年10月6日 優(yōu)先權(quán)日2003年10月6日
發(fā)明者M·A·肖克羅拉希 申請人:數(shù)字方敦股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1