新四季網

低密度奇偶校驗解碼器及其解碼方法

2023-09-24 13:24:15

專利名稱:低密度奇偶校驗解碼器及其解碼方法
技術領域:
本發明涉及通信系統,更具體地,本發明涉及通信系統內信號的解碼。
背景技術:
數據通信系統已經得到多年的持續發展。最近引起重大關注的一種通信系統是使用渦輪碼(turbo code)的通信系統。另一種使用低密度奇偶校驗(LowDensity Parity Check,LDPC)碼的通信系統也備受關注。這些類別的通信系統均能實現相對較低的誤碼率(BER)。
這個領域發展的持續和主要方向是繼續努力降低通信系統內的誤碼平臺(error floor)。理想的目標是達到通信信道中的香農極限(Shannon’s limit)。香農極限可視為一通信信道中使用的數據率,具有一特定的信噪比(SNR),可實現通過該通信信道的無誤碼傳輸。換句話說,對給定的調製率和編碼率來說,香農極限是信道容量的理論界限。
LDPC編碼經常以多種方式被提及。例如,可用多種方式實現LDPC編碼的交互式軟解碼,包括基於信度傳播(Belief Propagation,BP)算法、和積(Sum-Product,SP)算法和/或消息傳送(Message-Passing,MP)算法;MP算有時又稱為和積/信度傳播組合算法。雖然已經對LDPC編碼做出了大量的關注和努力,但是不管在特定的情況下使用哪一種特殊方式的交互式解碼算法(如上列舉的三種BP、SP和MP),在通信設備內為完成這種解碼而進行的執行和處理中仍有改進的空間。例如,必須執行多種相對複雜和數字煩累的計算、數據管理和處理,以完成LDPC編碼信號的精確解碼。
LDPC碼已表明可提供出色的解碼性能,在某些情況下可達到香農極限。例如,某些LDPC解碼器已表明在理論香農極限的0.3dB(分貝)範圍內。雖然這一例子使用長度為一百萬的不規則LDPC碼來實現,它仍然證明了LDPC碼在通信系統內的應用非常有前景。
當解碼收到的信號時,在進行計算的過程中,解碼器普遍在自然對數域(即基是e的對數域)內進行運算,有時候將這簡單地稱為「對數域」。LDPC解碼器屬於這一類別。通過在對數域中的運算,將所有的乘法轉換成加法,除法轉換成減法,並完全消除指數,而不影響BER性能。
自然對數域內比較困難的計算包括計算如下所述的指數的和In(ea+eb+ec+…)使用如下所示的雅可比公式(Jacobian formula)可顯著減小這種計算的複雜性max*(a,b)=ln(ea+eb)=max(a,b)+ln(1+e-|a-b|)這種計算經常被稱為max*計算或max*運算。要注意的是,以上等式的雅可比公式簡化僅給出了兩個變量a和b的max*運算。當試圖計算更長的指數和時,這種計算可一遍遍重複。例如,為了計算In(ea+eb+ec),可以執行以下兩個max*運算max*(a.b)=ln(ea+eb)=max(a,b)+ln(1+e-|a-b|)=xmax*(a,b,c)=max*(x,c)=ln(ex+ec)=max(x,c)+ln(1+e-|x-c|)雖然LDPC碼環境內有了很大的發展,但是執行解碼所必須的大量處理和計算是極其繁重的。以上提供的計算指數和的例子便解釋了當執行這種信號的解碼時潛在的複雜性和所需的繁重計算。有時,處理要求如此繁重,使得在設計預算很緊的系統內只能禁止這一執行。
已經有一些非最佳的方法來處理所要求的繁重的計算。例如,在執行基礎max*運算時,某些解碼器完全除去對數校正因子ln(1+e-|a-b|),並只使用max(a,b)結果,其可在數位訊號處理器(DSP)內的單個指令內實現。但是,這必然會降低解碼器的性能,使計算不精確。大多數尋求計算改進的常用方法要麼在計算精確度方面抄近路,要麼不能充分降低計算的複雜度以調整其積分。一個妨礙LDPC碼的實現的因素是內在的計算複雜性以及與之相關的所要求的存儲量。
在對數域內運算的解碼器中做計算如max*運算時,仍然需要提供更有效的解決方法。
LDPC編碼信號正應用在許多新的應用領域中。一種這樣的應用領域是數字視頻廣播。數字視頻廣播組織(DVB)是一個工業領導聯盟,包括超過35個國家內的超過206家廣播公司、製造廠商、網絡運營公司、軟體開發公司、管理團體和其它實體,專門開發數位電視和數據服務全球傳送的全球統一標準。關於DVB的相關信息可以從以下網際網路地址獲得「http://www.dvb.org/」DVB-S2(即DVB-衛星第2版(DVB-Satellite Version 2))草案標準也可以通過這個網際網路地址獲得,DVB-S2草案標準可從以下網際網路地址以AdobePDF格式下載「http://www.dvb.org/documents//en302307.v1.1.1.draft.pdf」因此,DVB-S2草案標準的全部內容,即「草案ETSI EN 302307V1.1.1(2004-06),數字視頻廣播(DVB);第二代幀結構,廣播的信道編碼和調製系統,交互式服務,消息收集和其它的寬帶衛星的應用」(Draft ETSI EN 302307 V1.1.1(2004-06),Digital Video Broadcasting(DVB);Second generationframing structure,channel coding and modulation systems for Broadcasting,Interactive Services,News Gathering and other broadband satellite applicatons),在此全文引用並構成本申請公開的一部分。
此外,標準「ETSI EN 302 307 V1.1.1(2005-03),數字視頻廣播(DVB);第二代幀結構,廣播的信道編碼和調製系統,交互式服務,消息收集和其它的寬帶衛星的應用」在2005年3月被ETSI(歐洲電信標準協會)正式批准。因此該標準的全文在本申請中整體引用,並構成本申請公開的一部分。
遵從DVB-S2的系統中所使用的信號的資料在這一DVB-S2標準中有詳細的介紹。該DVB-S2標準主要集中在傳輸系統的描述和其中的子系統,包括模式適配、流適配、FEC編碼(包括BCH外編碼和LDPC內編碼)、位映射到群集(constellation)、物理層幀以及基帶整形和正交調製。
DVB-S2是DVB-S(數字視頻廣播組織提出的第一個標準)的高級版本。DVB-S2試圖提供比DVB-S更高的效率。DVB-S2計劃執行4種不同的調製QPSK(正交相移鍵控)、8PSK(相移鍵控)、16APSK(不對稱相移鍵控)以及32APSK。一般說來,QPSK和8PSK調製類型通過接近飽和的非線性衛星發射機應答器傳播應用;16APSK和32APSK調製類型主要面向需要半線性發射機應答器的專業應用。
此外,DVB-S2使用強大的基於BCH(博斯-喬赫裡-霍克文黑姆)外編碼與LDPC內編碼相結合的前向糾錯(Forward Error Correction,FEC)系統。結果是性能有時距香農極限僅0.7dB。FEC參數的選擇取決於系統要求。使用VCM(可變編碼和調製)和ACM(自適應編碼和調製),以一幀一幀為基礎,編碼率可動態改變。
接收設備包括解碼器遵循DVB-S2所必須執行的多個運算參數已由傳輸系統說明中的運算參數清楚地列出。但是,只要接收設備包括解碼器遵從DVB-S2標準中規定的這些運算參數,就允許實現方法具有較大的選擇範圍。通信信道的發射端的信號的生成已在DVB-S2標準中清楚列出,執行這種信號(在通信信道的接收端)的接收處理的方法向設計者廣泛開放。很顯然,這種接收設備的關鍵設計約束在於提供DVB-S2信號的適應性,同時提供很高的性能而只佔用相對較小的面積,並有相對較低的複雜度。
使用LDPC編碼信號的另外一個應用領域是由IEEE(電氣電子工程師協會)規定和管理的各種通信系統和應用領域。例如,LDPC編碼信號的使用在IEEE P802.3an(10GBASE-T)任務組中非常重要。IEEE P802.3an(10GBASE-T)任務組由IEEE創建,從事銅線10千兆位乙太網標準的開發和標準化,銅線10千兆位乙太網標準根據IEEE 802.3CSMA/CD乙太網協議通過雙絞線電纜實現。載波偵聽多路訪問/衝突檢測(CSMA/CD)是乙太網網絡中載波傳輸訪問的協議。IEEE 802.3an(10GBASE-T)是在4根雙絞線上運作的10Gbps乙太網的新標準。關於IEEE P802.3an(10GBASE-T)的更多公開信息從以下網際網路地址獲得「http://www.ieee802.org/3/an」.
這種應用中提供的高數據率相對接近100米電纜的最壞情況下的理論最大率。實現10Gbps操作需要接近的容量實現糾錯碼。使用常規連結碼可能帶來的潛在約束會阻礙它們在該應用中的使用。
LDPC編碼信號的典型編碼和調製通過生成一包括有符號的信號來執行,每個符號具有共同的編碼率並被映射至單調製(例如,一個單群集形狀(singular constellation shape)具有其內各群集點的一個單映射)。也就是說,這種LDPC編碼調製信號的所有符號都有相同的編碼率和相同的調製(相同的群集形狀,其群集點具有單映射)。通常,這種現有技術的設計實現來最大化硬體和處理效率,用來生成LDPC編碼信號,其內的所有符號具有單個編碼率和單個調製。
但是,在某些最近的LDPC通信系統中,LDPC編碼器的設計已經在尋求提供生成多重類型的LDPC編碼信號的能力。在這些通信系統中,任何給定的LDPC區塊中的所有符號的編碼率和調製類型都是相同的。也就是說,整個區塊有與之對應的特定的編碼率和調製類型。不過,編碼器可用來生成不同的LDPC區塊,使得第一LDPC區塊具有第一編碼率和與其相關的第一調製類型,第二LDPC區塊具有第二編碼率和與其相關的第二調製類型。
用來解碼這種信號的解碼器必須能夠兼容它所接收的各種LDPC區塊類型。目前,現有技術中的LDPC解碼器設計需要相對較大的面積,並有相對較高的複雜度。因而現有技術中需要提供一種能兼容這些信號同時又能提供較高的性能且只面積小、複雜度低的LDPC解碼器。

發明內容
本發明要解決的技術問題在於,針對上述現有技術的不足,提出一種解碼LDPC(低密度奇偶校驗)編碼信號的解碼器及解碼LDPC編碼信號的方法。
根據本發明的一個方面,提出一種解碼LDPC編碼信號的解碼器,所述解碼器包括一個量度發生器,用於接收對應LDPC編碼信號第一符號的第一I、Q(同相、正交)值,並從中生成第一組多個位量度(bit metric);接收對應LDPC編碼信號第二符號的第二I、Q值,並從中生成第二組多個位量度;一個量度存儲器,用於存儲所述第一組多個位量度和所述第二組多個位量度;支持雙埠存儲器管理,從而在從所述量度發生器接收所述第二組多個位量度的同時輸出所述第一組多個位量度;支持雙埠存儲器管理,從而在從所述量度發生器接收第三組多個位量度的同時輸出所述第二組多個位量度;多個位/校驗處理器,用於連續地接收所述第一組多個位量度、所述第二組多個位量度和所述第三組多個位量度;執行位節點處理,包括更新與多個位節點相關的多個邊消息,和校驗節點處理,包括更新與多個校驗節點相關的多個邊消息;一個消息傳送存儲器,用於在所述多個位/校驗處理器內經過位節點處理後,存儲所述與多個位節點相關的多個邊消息;在所述多個位/校驗處理器內經過校驗節點處理後,存儲所述與多個校驗節點相關的多個邊消息;一個桶形移位器,用於對從所述消息傳送存儲器中讀出的所述與多個位節點相關的多個邊消息進行移位;將所述移位後的與多個位節點相關的多個邊消息提供給所述多個位/校驗處理器進行隨後的校驗節點處理;對從所述消息傳送存儲器中讀出的所述與多個校驗節點相關的多個邊消息進行移位;將所述移位後的與多個校驗節點相關的多個邊消息提供給所述多個位/校驗處理器進行隨後的位節點處理。
優選地,所述解碼器進一步包括一個輸出處理器,用於從對應最近更新的與所述多個位節點相關的多個邊消息的所述多個位/校驗處理器中接收軟輸出,並隨後作出硬判決,從而生成所述LDPC編碼信號第一符號和第二符號中的至少一個的位最佳估計值。
優選地,所述解碼器進一步包括一個校正子計算功能塊,用於從與最近更新的與所述多個位節點相關的多個邊消息相對應的所述多個位/校驗處理器中接收軟輸出,並確定用於生成LDPC編碼信號的LDPC碼的多個校正子中的每一個是否等於零。
優選地,所述量度存儲器、所述多個位/校驗處理器以及所述消息傳送存儲器形成包含有多個宏塊的第一個宏塊;所述多個宏塊中的每一個宏塊還包括有對應的量度存儲器、對應的多個位/校驗處理器以及對應的消息傳送存儲器;所述桶形移位器與所述多個宏塊中的每一個宏塊內的每一個對應的消息傳送存儲器通信連接。
優選地,所述量度存儲器為桌球式存儲結構,包括兩個分開的量度存儲器。
優選地,所述量度存儲器是虛擬雙埠量度存儲器。
優選地,所述與多個位節點相關的多個邊消息以符號數值格式存儲在所述消息傳送存儲器中;所述與多個校驗節點相關的多個邊消息以2的補碼格式存儲在所述消息傳送存儲器中。
優選地,所述與多個位節點相關的多個邊消息包括對應信息位的第一組多個邊消息和對應奇偶校驗位的第二組多個邊消息;所述對應信息位的第一組多個邊消息和所述對應奇偶校驗位的第二組多個邊消息均存儲在所述消息傳送存儲器中。
優選地,所述校驗節點處理包括min**(min-double-star)處理和min**-(min-double-star-minus)處理。
優選地,所述校驗節點處理包括min(min-double-dagger)處理和min-(min-dagger-minus)處理。
優選地,所述LDPC編碼信號是可變編碼率信號;所述LDPC編碼信號的第一符號具有第一編碼率;所述LDPC編碼信號的第二符號具有第二編碼率。
優選地,所述LDPC編碼信號是可變調製信號;所述LDPC編碼信號的第一符號具有第一調製,包括有第一群集形狀(constellation shape)和對應的第一映射(mapping);所述LDPC編碼信號的第二符號具有第二調製,包括有第二群集形狀和對應的第二映射。
優選地,所述解碼器解碼LDPC編碼信號,所述LDPC編碼信號遵從DVB-S2(Digital Video Broadcasting Project-Satellite Version 2)標準和IEEEP802.3an(10GBASE-T)任務組提供的推薦規程中的至少一個。
根據本發明的一個方面,提出一種解碼LDPC編碼信號的解碼器,所述解碼器包括多個位/校驗處理器,用於接收多個位量度;執行位節點處理,包括更新與多個位節點相關的多個邊消息,和校驗節點處理,包括更新與多個校驗節點相關的多個邊消息;一個消息傳送存儲器,用於在所述多個位/校驗處理器內經過位節點處理後,存儲所述與多個位節點相關的多個邊消息;在所述多個位/校驗處理器內經過校驗節點處理後,存儲所述與多個校驗節點相關的多個邊消息;一個桶形移位器,用於對從所述消息傳送存儲器中讀出的所述與多個位節點相關的多個邊消息進行移位;將所述移位後的與多個位節點相關的多個邊消息提供給所述多個位/校驗處理器進行隨後的校驗節點處理;對從所述消息傳送存儲器中讀出的所述與多個校驗節點相關的多個邊消息進行移位;將所述移位後的與多個校驗節點相關的多個邊消息提供給所述多個位/校驗處理器進行隨後的位節點處理。
優選地,所述解碼器進一步包括一個量度發生器,接收對應LDPC編碼信號的多個符號的I、Q(同相、正交)值,並從中生成多個位量度。
優選地,所述解碼器進一步包括一個輸出處理器,用於從對應最近更新的與所述多個位節點相關的多個邊消息的所述多個位/校驗處理器中接收軟輸出,並隨後作出硬判決,從而生成所述LDPC編碼信號第一符號和第二符號中的至少一個的位最佳估計值。
優選地,所述解碼器進一步包括一個校正子計算功能塊,用於從與最近更新的與所述多個位節點相關的多個邊消息相對應的所述多個位/校驗處理器中接收軟輸出,並確定用於生成LDPC編碼信號的LDPC碼的多個校正子中的每一個是否等於零。
優選地,所述解碼器進一步包括一個量度存儲器,存儲所述多個位量度並隨後輸出所述多個位量度給所述所述多個位/校驗處理器,其中所述量度存儲器、所述多個位/校驗處理器以及所述消息傳送存儲器形成包含有多個宏塊的第一個宏塊;所述多個宏塊中的每一個宏塊還包括有對應的量度存儲器、對應的多個位/校驗處理器以及對應的消息傳送存儲器;所述桶形移位器與所述多個宏塊中的每一個宏塊內的每一個對應的消息傳送存儲器通信連接。
優選地,所述量度存儲器為桌球式存儲結構,包括兩個分開的量度存儲器。
優選地,所述量度存儲器是虛擬雙埠量度存儲器。
優選地,所述與多個位節點相關的多個邊消息以符號數值格式存儲在所述消息傳送存儲器中;所述與多個校驗節點相關的多個邊消息以2的補碼格式存儲在所述消息傳送存儲器中。
優選地,所述與多個位節點相關的多個邊消息包括對應信息位的第一組多個邊消息和對應奇偶校驗位的第二組多個邊消息;所述對應信息位的第一組多個邊消息和所述對應奇偶校驗位的第二組多個邊消息均存儲在所述消息傳送存儲器中。
優選地,所述校驗節點處理包括min**(min-double-star)處理和min**-(min-double-star-minus)處理。
優選地,所述校驗節點處理包括min(min-double-dagger)處理和min-(min-dagger-minus)處理。
優選地,所述LDPC編碼信號是可變編碼率信號;所述LDPC編碼信號的第一符號具有第一編碼率;所述LDPC編碼信號的第二符號具有第二編碼率。
優選地,所述LDPC編碼信號是可變調製信號;所述LDPC編碼信號的第一符號具有第一調製,包括有第一群集形狀(constellation shape)和對應的第一映射(mapping);所述LDPC編碼信號的第二符號具有第二調製,包括有第二群集形狀和對應的第二映射。
優選地,所述解碼器解碼LDPC編碼信號,所述LDPC編碼信號遵從DVB-S2(Digital Video Broadcasting Project-Satellite Version 2)標準和IEEEP802.3an(10GBASE-T)任務組提供的推薦規程中的至少一個。
根據本發明的一個方面,提出一種解碼LDPC編碼信號的方法,所述方法包括接收對應LDPC編碼信號第一符號的第一I、Q(同相、正交)值,並從中生成第一組多個位量度;接收對應LDPC編碼信號第二符號的第二I、Q值,並從中生成第二組多個位量度;存儲所述第一組多個位量度和所述第二組多個位量度;支持雙埠存儲器管理,從而在接收所述第二組多個位量度的同時輸出所述第一組多個位量度;支持雙埠存儲器管理,從而在接收第三組多個位量度的同時輸出所述第二組多個位量度;連續地接收所述第一組多個位量度、所述第二組多個位量度和所述第三組多個位量度;執行包括位節點處理,更新與多個位節點相關的多個邊消息,和校驗節點處理,包括更新與多個校驗節點相關的多個邊消息;經過位節點處理後,存儲所述與多個位節點相關的多個邊消息;經過校驗節點處理後,存儲所述與多個校驗節點相關的多個邊消息;將所述與多個位節點相關的多個邊消息移位至合適的配置以進行隨後的校驗節點處理;將所述與多個校驗節點相關的多個邊消息移位至合適的配置以進行隨後的位節點處理。
優選地,所述方法進一步包括接收對應最近更新的與所述多個位節點相關的多個邊消息的軟輸出,並隨後作出硬判決,從而生成所述LDPC編碼信號第一符號和第二符號中的至少一個的位最佳估計值。
優選地,所述方法進一步包括接收對應最近更新的與所述多個位節點相關的多個邊消息的軟輸出;確定用於生成LDPC編碼信號的LDPC碼的多個校正子中的每一個是否等於零。
優選地,所述與多個位節點相關的多個邊消息以符號數值格式存儲;所述與多個校驗節點相關的多個邊消息以2的補碼格式存儲。
優選地,所述與多個位節點相關的多個邊消息包括對應信息位的第一組多個邊消息和對應奇偶校驗位的第二組多個邊消息;所述方法進一步包括將所述對應信息位的第一組多個邊消息和對應奇偶校驗位的第二組多個邊消息中的每一個均存儲在一個存儲設備中。
優選地,所述校驗節點處理包括min**(min-double-star)處理和min**-(min-double-star-minus)處理。
優選地,所述校驗節點處理包括min(min-double-dagger)處理和min-(min-dagger-minus)處理。
優選地,所述LDPC編碼信號是可變編碼率信號;所述LDPC編碼信號的第一符號具有第一編碼率;所述LDPC編碼信號的第二符號具有第二編碼率。
優選地,所述LDPC編碼信號是可變調製信號;所述LDPC編碼信號的第一符號具有第一調製,包括有第一群集形狀(constellation shape)和對應的第一映射(mapping);所述LDPC編碼信號的第二符號具有第二調製,包括有第二群集形狀和對應的第二映射。
優選地,所述解碼器解碼LDPC編碼信號,所述LDPC編碼信號遵從DVB-S2(Digital Video Broadcasting Project-Satellite Version 2)標準和IEEEP802.3an(10GBASE-T)任務組提供的推薦規程中的至少一個。


圖1是根據本發明一個實施例的通信系統的示意圖;圖2是根據本發明另一個實施例的通信系統的示意圖;圖3是根據本發明一個實施例的LDPC編碼二分圖的示意圖;圖4是根據本發明一個實施例使用位量度的LDPC解碼操作的示意圖;圖5是根據本發明另一個實施例(當執行n次迭代時)使用位量度的LDPC解碼操作的示意圖;圖6是根據本發明一個實施例的LDPC解碼的示意圖;圖7是根據本發明一個實施例的LDPC解碼的示意圖;圖8是根據本發明一個實施例的LDPC解碼的示意圖;圖9是根據本發明一個實施例的LDPC解碼的示意圖;圖10是根據本發明一個實施例的量度發生器的示意圖;圖11是根據本發明一個實施例的QPSK群集及其對應的二進位映射和其內採用的QPSK係數的示意圖;圖12是根據本發明一個實施例的8PSK群集及其對應的二進位映射和其內使用的8PSK係數的示意圖;圖13是根據本發明一個實施例的16QAM群集及其對應的十六進位映射和其內使用的16QAM係數的示意圖;圖14是根據本發明一個實施例的16APSK群集及其對應的十六進位映射和其內使用的16APSK係數的示意圖;圖15是根據本發明一個實施例的調製係數表的示意圖;圖16是根據本發明一個實施例的量度發生器的結構示意圖;圖17是根據本發明一個實施例的量度發生器的結構示意圖;圖18是根據本發明一個實施例的量度發生器的結構示意圖;圖19是根據本發明一個實施例的位節點處理的示意圖;圖20是根據本發明一個實施例的校驗節點處理的示意圖;圖21是根據本發明一個實施例的校驗節點處理的示意圖;圖22是根據本發明一個實施例的校驗節點處理的示意圖;圖23是根據本發明一個實施例的校驗節點處理的示意圖;
圖24是根據本發明一個實施例的min*處理的示意圖;圖25是根據本發明一個實施例的min*對數表的示意圖;圖26是根據本發明另一個實施例的min*處理的示意圖;圖27是根據本發明一個實施例的min*-處理的示意圖;圖28是根據本發明一個實施例的min*-對數表的示意圖;圖29是根據本發明另一個實施例的min*-處理的示意圖;圖30是根據本發明又一個實施例的min*-處理的示意圖;圖31是根據本發明一個實施例的校正子計算功能塊的示意圖;圖32是根據本發明一個實施例的LDPC解碼方法的流程圖;圖33是根據本發明一個實施例的迭代LDPC解碼方法的流程圖。
具體實施例方式
本發明提出一種執行LDPC編碼信號解碼的設備。在某些情況下,本發明提出的解碼方法和功能性可解碼和處理已生成的遵從DVB-S2(即DVB-Satellite Version 2)標準的信號。另外,本發明提出的解碼方法和功能性還可解碼和處理已成生的遵從由IEEE P802.3an(10GBASE-T)任務組提供的草案標準和推薦規程的信號。
總的來說,本發明提出的解碼方法和功能性可應用於各種執行LDPC編碼信號和/或其它類別的編碼信號的處理的設備中。有時,這些設備既可以執行LDPC編碼信號的發送處理(包括編碼),也可以執行LDPC編碼信號的接收處理(包括解碼)。在其他情況下,這些設備只能執行LDPC編碼信號的接收處理(包括解碼)。
本發明的解碼方法能適用於具有可變調製和/或可變編碼率的LDPC信號的解碼。例如,DVB-S2標準明確地描述了通過產生各種符合DVB-S2標準的LDPC信號來實現VCM(可變編碼和調製)和ACM(自適應編碼和調製)的方法。通常,這種遵從DVB-S2的信號的編碼率和調製的改變在逐幀的基礎上進行。本發明提出的解碼方法和功能性能處理和解碼編碼率和/或調製基於逐幀頻繁變化的信號。此外,本發明提出的解碼方法和功能性還能夠處理和解碼編碼率和/或調製基於逐個區塊頻繁變化的信號。例如,一個區塊可被看作是一幀內的一個符號群。在某些情況下,一幀包括多個區塊。
此外,本發明提出的解碼方法和功能性還適用於其內所有符號採用單一編碼率和/或單一調製的LDPC信號的解碼。例如,對於其所有的符號具有共同的編碼率和共同的調製(群集和映射)的LDPC信號來說,本申請中介紹的(並在以下給出更詳細的描述)的各種LDPC解碼方法都可用來解碼這種LDPC編碼信號。
圖1和圖2分別是根據本發明不同實施例的通信系統的100和200的示意圖。
如圖1所示,通信系統100包括一個通信信道199,將位於通信信道199一端的通信設備110(包括帶有編碼器114的發送器112和帶有解碼器118的接收器116)與位於通信信道199另一端的另一個通信設備120(包括帶有編碼器128的發送器126和帶有解碼器124的接收器122)通信連接。在某些實施例中,通信設備110和120均可僅包括一個發送器或一個接收器。通信信道199可通過幾種不同類型的媒介來實現(例如,利用圓盤式衛星電視天線132和134的衛星通信信道130,利用塔142與144和/或本地天線152和154的無線通信信道140,有線通信信道150,和/或利用電-光(E/O)接口162和光-電(O/E)接口164的光纖通信信道106)。另外,可以通過一種以上的媒介連接在一起從而形成通信信道199。
如圖2所示的通信系統200中,在通信信道299的發送端,信息位201提供給發送器297,發送器297可使用一個編碼器和符號映射器200(可分別視為是不同的功能塊222和224)執行對這些信息位201的編碼,從而生成一個離散值調製符號序列203,然後提供給發送驅動器230,發送驅動器230使用DAC(數模轉換器)232生成一個連續時間發送信號204,然後通過發送濾波器234,生成充分適合通信信道299的濾波後連續時間發送信號205。在通信信道299的接收端,連續時間接收信號206被提供給AFE(模擬前端)260,AFE 206包括接收濾波器262(生成濾波後連續時間接收信號207)和ADC(模數轉換器)264(生成離散時間接收信號208)。量度發生器270計算符號量度209,解碼器280使用符號量度209對離散值調製符號和編碼在其內的信息位做出最佳估算210。
前述實施例中的解碼器具有本發明的各種特徵。另外,以下的一些附圖和相關的描述將介紹支持本發明的設備、系統、功能性和/或方法的其他和特定實施例(某些實施例的介紹更加詳細)。根據本發明處理的一種特定類型的信號是LDPC編碼信號。在給出更詳細的介紹之前,先對LDPC碼進行概要描述。
圖3是LDPC碼二分圖300的示意圖。現有技術中,LDPC二分圖也被稱為Tanner圖。LDPC碼被看作是具有二進位奇偶校驗矩陣從而使矩陣的幾乎所有元素都為零值(例如,該二進位奇偶校驗矩陣稀疏)的代碼。例如,H=(hi,j)M×N被看作是區塊長度為N的LDPC碼的奇偶校驗矩陣。
奇偶校驗矩陣的第i列中1的數量表示為dv(i),奇偶校驗矩陣的第j行中的1的數量表示為dc(j)。如果對所有的i,dv(i)=dv,對所有的j,dc(j)=dc,那麼這種LDPC碼被稱為規則LDPC碼,否則被稱為不規則LDPC碼。
關於LDPC碼的介紹請參考以下兩份引用文件[1]R.Gallager,Low-Dentisy Parity-Check Codes,Cambridge,MAMITPress,1963[2]M.Luby,M.Mitzenmacher,A.Shokrollahi,D.Spielman,and V.Stemann,「Practical loss-resilient codes」,1997規則LDPC碼可表示為二分圖300,其奇偶校驗矩陣的左側節點為代碼位變量(或為解碼LDPC編碼信號的位解碼方法中的「變量節點」(或「位節點」)310),右側節點為校驗方程(或「校驗節點」320)。由H定義的LDPC碼的二分圖300可由N個變量節點(例如,N位節點)和M個校驗節點來定義。N個變量節點310中的每個變量節點都具有精確的dv(i)個邊(如邊330)連接位節點例如Vi312與一個或多個校驗節點(M個校驗節點內)。圖中所示的邊330連接位節點vi312與校驗節點cj322。該邊(如dy314所示)的數量dv被稱為變量節點i的度(degree)。類似地,M個校驗節點320中的每個校驗節點都有精確的dc(j)個邊(如dc324所示),連接該節點與一個或多個變量節點(或位節點)310。該邊的數量dc被稱為校驗節點j的度。
變量節點vi(或位節點bi)312與校驗節點cj322之間的邊330可定義為e=(i,j),但是,另一方面,假定邊e=(i,j),則該邊的節點可表示為e=(v(e),c(e))(或e=(b(e),c(e)))。假定給出變量節點vi(或位節點bi),可將從節點vi(或位節點bi)發射的一組邊定義為Ev(i)={e|v(e)=i}(或Eb(i)={e|b(e)=i})。假定給出校驗節點cj,可將從節點cj發射的一組邊定義為Ec(j)={e |c(e)=j}。接著,導出的結果是|Ev(i)|=dv(或|Eb(i)|=db)以及|Ec(j)|=dc。
一般說來,任何可用二分圖表示的代碼,其特徵都是圖形碼。要注意的是,不規則LDPC碼也可用二分圖表示。但是,不規則LDPC碼內的每組節點的度可根據某些分布進行選擇。因此,對於不規則LDPC碼的兩個不同變量節點vi1和vi2,|Ev(i1)|不等於|Ev(i2)|。對於兩個校驗節點也是這種關係。不規則LDPC碼的概念最早在上述的引用文件[2]中給出了介紹。
一般說來,通過LDPC碼的圖示,LDPC碼的參數可由分布的度來定義,如M.Luby等在上述引用文件[2]中所述,以下的引用文件中也有相關的描述[3]T.J.Richardson and R.L.Urbanke,「The capacity of low-densityparity-check code under message-passing decoding」,IEEE Trans.Inform.Theory,Vol.47,pp.599-618,Feb.2001這種分布可描述如下用λi表示從i度變量節點發射的邊的數量,ρi表示從i度校驗節點發射的邊的數量,則度分布對(λ,ρ)定義如下(x)=i=2Mvixi-1]]>和(x)=i=2Mcixi-1,]]>其中Mv和Mc分別表示變量節點和校驗節點的最大度。
雖然在此描述的多個實施例採用規則LDPC碼,但是要注意的是本發明的特徵既適用於規則LDPC碼,也適用於不規則LDPC碼。
LDPC碼的LLR(對數相似值比)解碼方法可大致描述如下當1實際被發送時,計算接收的矢量內的位實際值等於1的概率。同樣地,當0實際被發送時,計算接收的矢量內的位實際值等於0的概率。這些概率通過利用LDPC碼的奇偶校驗矩陣來計算,該奇偶校驗矩陣被用來校驗所述接收的矢量的奇偶性。LLR是所計算的兩個概率的比的對數。LLR能反映傳送信號的通信通道對矢量內的位產生不利影響的度。
LDPC碼的LLR解碼可在數學上表示如下首先C={v|v=(v0,...,vN-1),vHT=0}是LDPC碼,且發送的信號內的接收矢量y=(y0,...,yN-1)的形式為((-1)v0,...,(-1)vN-1),則該信道的量度可定義為p(yi|vi=0),p(yi|vi=1),i=0,...,N-1。然後該量度的LLR即Lmetric(i)可定義如下Lmetric(i)=lnp(yi|vi=0)p(yi|vi=1)]]>要注意的是,各個數學表達式中描述的「ln」指的是基數為e的自然對數。
對於每個變量節點vi,其LLR信息值可定義如下lnp(vi=0|yi)p(vi=1|yi)=Lmetric(i)+lnp(vi=0)p(vi=1)]]>由於變量節點vi位於LDPC代碼字內,則這些值的比值lnp(vi=0)p(vi=1)]]>可由下式代替lnp(vi=0,vHT=0|y)p(vi=1,vHT=0|y)=(i,j)Ev(i)lnp(vi=0,vhjT=0|y)p(vi=1,vhjT=0|y)]]>其中Ev(i)是如上所述定義的一組從vi開始的邊。
當執行上述的BP(信度傳播)解碼方法時,ln=p(vi=0,vhjT=0|y)p(vi=1,vhjT=0|y)]]>的值可用以下關係式替代Lcheck(i,j)=lnp(vV(e)eEc(j)\{(i,j)}=0|y)p(vv(e)eEc(j)\{(i,j)}=1|y)]]>Lcheck(i,j)是與邊(i,j)相關的校驗節點cj的外來(EXT)信息。此外,要注意的是e∈Ec(j)\{(i,j)}表示從校驗節點cj發射的所有的邊,但從校驗節點cj發射至變量節點vi的邊除外。外來信息值被計算來協助對生成接收矢量內的實際信息位值的最佳估計值。同樣在BP方法中,與邊(i,j)有關的變量節點vi的外來信息可定義如下 圖4是根據本發明一個實施例使用位量度400的LDPC解碼功能的示意圖。為了對具有m-位信號序列的LDPC編碼信號進行解碼,可以使用如圖所示的功能性(functionality)。在符號節點處接收了信號的I、Q(同相、正交)值401後,m-位符號量度發生器410計算相應的符號量度411。在該符號節點處,這些符號量度411隨後被傳遞到符號節點計算器功能塊420,功能塊420利用這些收到的符號量度411來計算對應這些符號的位量度421。然後根據LDPC碼二分圖,將這些位量度421傳遞給與符號節點相連的位節點,LDPC碼信號通過該LDPC碼二分圖產生,並通過該LDPC碼二分圖進行解碼。
之後在位節點處,位節點處理器430計算位的相應軟信息。然後,按照迭代解碼處理450,位節點處理器430從校驗節點處理器440處接收與該校驗節點相關的邊消息Medgec441,並用從符號節點計算器功能塊420接收位量度421更新與該位節點相關的邊消息Medgeb431。這些與位節點相關的邊消息Medgeb431在更新後被傳遞給校驗節點處理器440。
在校驗節點處,隨後校驗節點處理器440接收與上述位節點相關的邊消息Medgeb431(來自位節點處理器430),並相應地更新它們,從而生成與校驗節點相關的邊消息的下一個更新版本Medgec441;這一操作在功能塊442中示出。更新後的與校驗節點相關的邊消息Medgec441隨後被傳回給位節點(例如,傳回給位節點處理器430),在此使用位量度421和與位節點相關的邊消息Medgeb431的當前迭代值來計算位的軟輸出,這一操作在功能塊434中示出。其後,使用剛計算出的位的軟輸出(如軟輸出435)和與位節點相關的邊消息Medgeb431的前一值(從前一次迭代中得到的),位節點處理器430更新與位節點相關的邊消息Medgeb431;這一操作在功能塊432中示出。依據用於解碼和生成解碼信號的LDPC碼二分圖,迭代解碼處理450在位節點和校驗節點之間(即位節點處理器450和校驗節點處理器440之間)繼續。
由位節點處理器430和校驗節點處理器440執行的迭代解碼處理步驟將重複預定數量的迭代(例如,重複n次,其中n是可選的)。可選擇地,這些迭代解碼處理步驟可一直重複,直至LDPC碼的校正子全部等於零。
軟輸出435在每次解碼迭代過程中在位節點處理器430內生成。圖4所示的實施例中,軟輸出435可提供給做出硬判決的硬限幅器460,而且硬判決信息可提供給校正子計算器470以確定LDPC碼的校正子是否都等於零。當校正子不等於零時,再繼續迭代解碼處理450,適當地在位節點處理器430和校驗節點處理器440之間更新和傳遞邊消息。例如,與位節點相關的邊消息Medgeb431從位節點處理器430傳遞給校驗節點處理器440。類似地,與校驗節點相關的邊消息Medgec441從校驗節點處理器440傳遞到位節點處理器430。在某些實施例中,軟輸出435和校正子計算器470執行的校正子計算都在每個解碼迭代過程中執行。
執行完迭代解碼處理450的所有步驟後,基於位的軟輸出輸出位的最佳估計值(如位估計值471)。圖4所示的實施例的方法中,通過符號節點計算器功能塊420計算的位量度值是固定值,並在更新位節點值時被反覆使用。
圖5是根據本發明另一個實施例(當執行n次迭代時)使用位量度500的LDPC解碼操作的示意圖。該實施例中示出了當執行預定次數的解碼迭代,如n次時,如何執行圖4中所示的迭代解碼處理450。如果解碼迭代的次數已經預先知道,如在預定數量解碼迭代的實施例中,如預定次數的解碼迭代實施例,位節點處理器430可使用位量度421自身(而不是前一實施例中上述的軟輸出435)來更新其對應的與位節點相關的邊消息Medgeb431。這一處理在除最後一次迭代外的所有解碼迭代中都執行(例如,從迭代1至n-1)。但是,在最後一次迭代中,位節點處理器430計算軟輸出435。然後將軟輸出435提供給硬限幅器460,在硬限幅器460中做出位的硬判決。這一實施例中不必計算校正子,因為只執行預定數量的解碼迭代。
通常,在實際的通信設備和硬體中實現LDPC解碼功能性時,設計時關鍵需要考慮的就是如何實現硬體以使計算能儘可能快地執行,同時具有儘可能高的精確度。同樣,這種LDPC解碼功能性的硬體可在對數域內實現。該硬體實現有時還可以進行簡化,將乘法處理簡化成加法,除法處理簡化成減法。通常,執行實現LDPC解碼處理所必要的計算的難點在於校驗節點處理所必要的計算的執行很難。例如,在校驗節點處理器(或者執行校驗節點處理的位校驗處理器)內執行的計算通常要求從一組可能的值中確定最小值(或最大值)。當在實際的在對數域內執行計算的硬體中執行這些計算時,通常會以損失某些精確度的代價來確定最小值(或最大值)。也就是說,不在計算中使用某些對數校正因數,因而導致精確度的損失。即使是在對數域內執行時,某些現有技術中的解碼方法只從一定量的可能值中選擇最小值(或最大值),而不使用任何對數校正因數。因而在對數域內運算時,從一組可能值中選擇最小值(或最大值)時,必然會引入了一些不精確性。
以下將結合對輸入值「x」和輸入值「y」的操作介紹幾個上述的計算。該輸入值可視為與位節點相關的不同邊消息Medgeb。例如,輸入值「x」可視為與位節點相關的第一邊消息Medgeb(1),輸入值「y」可視為與位節點相關的第二邊消息Medgeb(2),或反之亦然。這些與位節點相關的邊消息Medgeb的校驗節點處理使用了在此給出的各種可能的實施例,用來生成對應的與校驗節點相關的更新後邊消息Medgec。
發明人已經開發出了多種執行這些計算的不同方法,能在執行校驗節點處理的同時仍然保持高的精確度。這些計算包括min*處理、min*-處理、min**處理、min**-處理。此外,以上每一種處理方法均有一個對應的最大相關函數min*處理、min*-處理、min**處理、min**-處理。此外,還可使用其它的處理方法,包括min』處理、min處理、min-處理、min處理。以下將結合對輸入值「x」和輸入值「y」的操作介紹幾個上述的計算。
min*處理和min*-處理min*(x,y)=min(x,y)-ln(1+exp(-|x-y|))min*-(x,y)=min(x,y)-ln(1-exp(-|x-y|))max*處理和max*-處理max*(x,y)=max(x,y)+ln(1+exp(-|x-y|))max*-(x,y)=max(x,y)+ln(1-exp(-|x-y|))min**處理和min**-處理min**(x,y)=min(x,y)-ln(1+exp(-|x-y|))+ln(1+exp(-(x+y)))min**-(x,y)=min(x,y)-ln(1-exp(-|x-y|))+ln(1-exp(-(x+y)))
max**處理和max**-處理max**(x,y)=max(x,y)+ln(1+exp(-|x-y|))-ln(1+exp(-(x+y)))max**-(x,y)=max(x,y)+ln(1-exp(-|x-y|))-ln(1+exp(-(x+y)))min』處理 min處理 min-處理 以下結合附圖介紹上述各種不同類別的處理的功能性和處理。關於min處理,min處理有些類似於min*處理,還帶有最小值比較處理的附加功能性。如以下的一個實施例中所示,當運算的值以符號數值格式實現時,可實現min處理內的最小值比較處理。這種符號數值格式使其能更容易從多個值中找出最小值。
本發明提供了執行上述計算的快速效率的硬體實現,可在解碼LDPC編碼信號時執行校驗節點處理。此外,以下的各種結構將解釋上述各種計算如何在解碼處理操作內執行,在哪裡執行。
圖6、圖7、圖8和圖9分別是本發明LDPC解碼功能性的不同實施例的示意圖。
如圖6所示的LDPC解碼功能性600中,接收的符號的I、Q(同相、正交)值被提供給量度發生器603(即圖中所示的MG 603)。這些I、Q值可看作是來自一個通信設備內的預處理功能塊,該預處理功能塊對從通信信道接收的連續時間信號執行初步處理。例如,該預處理可包括頻率轉換、接收濾波、數字取樣、增益調節和/或均衡。這些I、Q值與從連續時間信號中生成的離散時間信號相對應。
量度發生器603計算對應至少一個將被解碼的符號的位量度。量度發生器603執行符號量度計算並將其轉換成位量度。在某些上述的實施例中,採用兩個分開的功能塊來執行這種功能性首先從接收的I、Q值計算符號量度,然後從符號量度計算位量度。
然後位量度從量度發生器603提供給桌球存儲結構605(如圖所示的PPMS605)。桌球存儲結構605包括兩個分開的量度存儲器606和607(如圖所示的MM 606和MM 607)。當量度發生器603正將對應一個或一群符號的位量度提供給桌球存儲結構605的量度存儲器606時,較早提供的位量度從桌球存儲結構605的量度存儲器606中輸出。一般說來,在桌球存儲結構605中,當從量度存儲器607中讀取第二組位量度時,將第一組位量度寫入量度存儲器606。該第一組位量度與第一符號幀內的每個符號的位量度相對應,該第二組位量度與第二符號幀內的每個符號的位量度相對應。
然後合適的位量度從桌球存儲結構605中輸出並提供給一組位/校驗處理器610(如圖所示的BCP 610)。一組位/校驗處理器610包括多個位/校驗處理器,如BCP 611,...,和BCP 612。要注意的是,根據本發明,一個單組的處理塊,即位/檢驗處理器組610,既能執行位節點處理,也能執行校驗節點處理。也就是說,當解碼LDPC編碼信號時,可使用多個位/檢驗處理器610內完全相同的硬體來執行位節點處理和校驗節點處理。這可以通過使用桶形移位器615(如圖所示的BS 615)結合信息傳送存儲器620(如圖所示的MPM 620)來部分的實現。要注意的是,通過使用有效率尋址方案(其更多細節在下面介紹),消息傳送存儲器620可存儲兩種類型的與多個位節點相關的邊消息(即(1)對應信息位的邊消息;(2)對應奇偶校驗位的邊消息)。這一點是與現有技術的重要區別,通常現有技術中採用兩個分開的存儲結構/設備來存儲這兩種不同類型的與多個位節點相關的邊消息。但是,本發明中的單個存儲設備(即消息傳送存儲器620)可存儲這兩種類型的邊消息。
當多個位/校驗處理器610正在執行位節點處理(即,更新與位節點相關的邊消息Medgeb),且這些更新後的與位節點相關的邊消息Medgeb已經寫入消息傳送存儲器620後,接下來,桶形移位器615確保這些邊消息是以特定和受控的方式從消息傳送存儲器620中讀出的,以便其在校驗節點處理的下一個迭代中使用(即,更新與校驗節點相關的邊消息Medgec)。
桶形移位器615控制從消息傳送存儲器620中讀取與校驗節點相關的邊消息Medgec方式,以使其能夠從消息傳送存儲器620中合適地讀出,以便相同的多個位/校驗處理器610使用在隨後的校驗節點處理中(即,更新與校驗節點相關的邊消息Medgec)。在消息傳送存儲器620之後使用桶形移位器615使得使用相同的功能塊(即,多個位/節點處理器610的相同硬體)能夠執行校驗節點處理和位節點處理兩者。這使用於執行LDPC編碼信號的解碼的實際通信設備在尺寸和複雜度上有了顯著的減小。
還要注意的是,桶形移位器615還可以另一種連接通路放置在多個位/校驗處理器610和消息傳送存儲器620之間。以下將詳細介紹這種實施例。
不管桶形移位器615位於哪個位置,多個位/檢驗處理器610、桶形移位器615和消息傳送存儲器620可協作運行,以執行LDPC編碼信號的迭代解碼處理,從而使用最近更新的與位節點相關的邊消息Medgeb來生成解碼位的軟輸出。然後將對應該解碼位的軟輸出的硬判決(在上一次解碼迭代後產生或當所有的校正子等於零時產生)提供給SRAM(靜態隨機存取存儲器)660(如如所示的SRAM 660)。這些存儲在SRAM 660中的硬判決是基於被解碼信號最初接收的I、Q值的解碼位的最佳估計值。在上一次解碼迭代之前或在所有的校正子等於零之前,編碼位的軟輸出被提供給SRAM 660。
解碼位的軟輸出被提供給一組功能塊,該組功能塊通過使用最初產生LDPC編碼信號的LDPC碼的奇偶校驗協作地執行校正子校驗,以確定解碼位是否是有效代碼字的一部分。適當地輸入軟輸出然後從SRAM 660輸出後,該軟輸出傳遞通過另一個桶形移位器662(如圖所示地BS 662),隨後被傳送給校正子計算功能塊664(如圖所示的SYNCALC 664)。如果該校正子通過(即,給校正子計算功能塊664的所有輸入都等於零),則告知控制器650(如圖所示的CON 650)迭代解碼處理結束。關於控制器650的更多詳細介紹在以下給出。
此外,控制器650可被執行來根據選擇的LDPC碼651提供控制信號652。例如,LDPC解碼功能性600可用來解碼多種LDPC編碼信號,包括遵從DVB-S2的編碼信號。如遵從DVB-S2的信號的例子中,包括有VCM(可變編碼和調製)和ACM(適應性編碼和調製)功能性,LDPC編碼信號的編碼率(以及調製類型)可基於逐幀動態改變。也就是說,第一幀使用第一編碼率和第一調製類型編碼,第二幀使用第二編碼率和第二調製類型編碼。基於選擇的LDPC碼651,控制器650將合適的解碼控制信號652提供給LDPC解碼功能性600內的其它功能塊。這可以確保在量度發生器603內為接收的I、Q值計算合適的位量度。此外,根據解碼控制信號652,多個位/校驗處理器610、桶形移位器615以及消息傳送存儲器620也都可根據在通信信道的發射端產生信號的方式來協作執行對接收的信號的LDPC解碼,其中該通信信道提供連續時間信號,I、Q值最終從該連續時間信號中提取並提供給LDPC解碼功能性600以便後續的解碼。
解碼控制信號652將特定的信號類型和屬性通知給多個位/校驗處理器610、桶形移位器615和消息傳送存儲器620,以便在解碼接收的信號時使用合適的奇偶校驗矩陣。解碼控制信號652還指示桶形移位器615對與位節點相關的邊消息Medgeb(以及與校驗節點相關的邊消息Medgec-取決於何時查看LDPC解碼功能性600)執行適當程度的移位。由於桶形移位器615執行了這兩種邊消息的合適移位,與位節點相關的邊消息Medgeb(以及與校驗節點相關的邊消息Medgec)都以一種方式存儲在消息傳送存儲器620中,使得它們能夠從中取回,以便多個位/校驗節點處理器610執行迭代解碼處理中的後續步驟時使用。還要注意的是,對於信息位和奇偶校驗位來說,在多個位/校驗處理器610內的校驗節點處理之後、下一個位節點處理步驟之前,桶形移位器615不得對其執行移位。由此可見,使用桶形移位器615後可允許相同的硬體(即,多個位/校驗處理器610)來執行位節點處理和校驗節點處理兩者。例如,解碼一組X個位時,如果在進行校驗節點處理前執行移位N,則需要執行X-N的桶形移位,以在進行位節點處理之前使被移位的位回到它們的初始位置。
假設有一組特定的LDPC編碼信號將由LDPC解碼功能性600進行解碼,桶形移位器615執行的移位量可在一個ROM(只讀存儲器)設備中實現。這在解碼實際信號時能提供非常快速的運算和處理。存儲在ROM內的移位值可基於產生LDPC編碼信號的LDPC二分圖中的位節點和校驗節點之間的邊的連接性來選擇。
控制器650的使用確保了LDPC解碼功能性600可解碼各種LDPC編碼信號,遵從DVB-S2的信號便是其中的一種。但是,LDPC解碼功能性600也可用來執行其它LDPC編碼信號的解碼。另外,使用控制器650提供的功能,LDPC解碼功能600還能夠執行編碼率和/或調製(包括群集形狀和映射)基於逐塊頻繁改變的LDPC編碼信號的解碼。例如,一個區塊可視為一幀內的一個符號群。在某些情況下,一幀可包括多個區塊。遵從DVB-S2的信號一般在一幀內的所有符號具有共同的編碼率和調製(包括群集形狀和映射),且編碼率和/或調製僅基於逐幀改變。
如上所述,多個位/校驗處理器610包括一組位/校驗處理器,如BCP 611,...,和BCP 612。在多個位/校驗處理器610中實現多少個位/校驗處理器可由設計者選擇。設計者可根據多個因素來選擇使用多少個位/校驗處理器,包括被解碼的位的數量、多個位/校驗處理器610中位/校驗處理器的數量、理想的吞吐速度以及需要佔用的總面積。選擇在位/校驗處理器610內實現越多的位/校驗處理器將導致更多的並行類處理。
還要注意的是,可實現宏塊699的幾個示例(如圖所示的MB 699)來支持進一步的並行處理。在這個實施例中,宏塊699包括有桌球存儲結構605、多個位/校驗處理器610和消息傳送存儲器620。以下將介紹的其他實施例中採用了宏塊的多個示例來支持更有效的實現而耗用更小的總面積。一般說來,選擇的宏塊的總數量應確保設備的總面積儘可能最小。關於宏塊699,還要注意的是,其內不必實現桶形移位器615。在這個實施例中,桶形移位器實際上實現在宏塊699外部,用來服務於多個宏塊699。但是,桶形移位器615也可在宏塊內部實現而不脫離本發明的範圍和實質(如下述的其它實施例中將會介紹)。但是,一般說來,最好將桶形移位器615放在宏塊699的外面,因為這樣不會拖延或減慢消息傳送存儲器620(可利用RAM(只讀存儲器)來實現)的存取時間。當桶形移位器615位於宏塊699外部時,需要使用管線寄存器(pipeline register)來保證至/從消息傳送存儲器620的訪問同步。
而且,LDPC解碼功能性600的各個功能塊實現(通過使用桶形移位器615結合消息傳送存儲器620的單個功能塊)的方式,允許消息傳送存儲器620使用單個埠的存儲設備;這必然佔用比雙埠存儲設備更少的面積,同時也比雙埠存儲設備耗用更少的能量。
如上所述,使用LDPC解碼功能性600可以解碼各種不同類型的LDPC編碼信號。以下將提供一個位與字寬的具體例子,以及多個位/校驗處理器610內的位/校驗處理器的數量,以示出它們在特定情況下的關係。提供給量度發生器603的I、Q值每個為7位。量度發生器603使用7位I、Q值生成的位量度每個為6位。因此,兩個單獨的量度存儲器606和607中的每一個都運算180×360×6位的值;這需要DVB-S2區塊的長度為64,800位。
在設計能夠解碼遵從DVB-S2信號的結構時,從量度發生器630輸出的位量度需要有360×6位;也就是說,有360個不同的值,每個值為6位。這些位量度可提供給並行配置的360個單獨的位/校驗處理器。更具體地,該多個位/校驗處理器610包括BCP 611(第1個位校驗處理器),...,和BCP 612(第360個位/校驗處理器)。從該360個單獨的位/校驗處理器中輸出的邊消息為6位值。因此,360個單獨的位/校驗處理器的總輸出是360×6位;每個位/校驗處理器輸出6位的邊消息。類似地,桶形移位器615內的適當移位的邊消息也是每個6位。因此,桶形移位器的輸出也共有360×6位。同樣,解碼遵從DVB-S2的信號時,消息傳送存儲器620將傳送多達792×360×6位的值。因此有360個解碼位從SRAM 660中輸出。
還要注意的是,上述描述中的位值僅僅是實現LDPC解碼功能性600的一個可能實施例。根據本發明,對上述實施例中的各個值使用不同數量的位寬,還可以實現多個不同的實施例。
如圖7所示的實施例中LDPC解碼功能性700與圖6中的LDPC解碼功能性600的完全類似,除了使用虛擬雙埠量度存儲器705(如圖所示的PDPMM 705)代替桌球存儲結構605。虛擬雙埠量度存儲器705可支持雙埠存儲管理,即使它是一個單埠存儲設備。通過使用圖7中的虛擬雙埠量度存儲器705代替圖6中的桌球存儲結構605(包括雙埠存儲結構),與LDPC解碼功能性600相比,LDPC解碼功能性700可顯著節省空間。在圖7所示的實施例中,處理與圖6中的描述類似的遵從DVB-S2的信號時,虛擬雙埠量度存儲器705運算180×360×6位的值。
如圖8所示的實施例中LDPC解碼功能性800中,I、Q輸入、量度發生器803(如圖所示的MG 803)、控制器850以及對應的基於選擇的LDPC碼851的控制信號852與圖6所示的LDPC解碼功能性600中的非常相似。但是,與圖6中的宏塊699相比,LDPC解碼功能性800包括一個稍微修改的宏塊899(如圖所示的MB 899)。宏塊899可被複製一定的次數,以協助提供比之前的實施例更有效的LDPC解碼功能性。宏塊899包括有所有的功能性,可被複製以實現更加並行的處理結構。
圖8所示的實施例中,桶形移位器815包括在宏塊899內部。這個實施例中的桶形移位器815與前述實施例中的桶形移位器615或桶形移位器715的不同之處在於,這個實施例中的桶形移位器815僅服務於它所在的實際宏塊899內的部件。相反,桶形移位器615或桶形移位器715每個都服務於各自實施例中宏塊699和宏塊799的所有示例。因而桶形移位器815沒有桶形移位器615或桶形移位器715那麼複雜。
由於桶形移位器815的位置與桶形移位器615或桶形移位器715不同,必須小心,以確保對邊消息進行適當地移位以便多個位/校驗處理器810內的後續校驗節點處理或位節點處理。同樣,由於桶形移位器815的位置與桶形移位器615或桶形移位器715不同,需要對桶形移位器862和SARM860進行重新配置以兼容這種不同順序的處理。
一種能夠解碼遵從DVB-S2信號的設計中包括18個單獨的宏塊示例。提供給量度發生器803的I、Q值每個7位。量度發生器803使用7位的I、Q值生成的位量度是每個為6位的值。
但是,圖8中宏塊899的每個塊的實現都與圖6中的宏塊699不同。桌球存儲結構805(如圖所示的PPMS 805)包括有量度存儲器806和807(如圖所示的MM 805和MM 807),在180×120位上運算。這120個位每個都以20×6位實現;也就是說,有20個單獨的值,每個值6位。從桌球存儲結構805輸出的位量度也具有120位(即,每個為20×6位)。
提供給多個位/檢驗處理器810的這些位量度可提供給位於每個宏塊內的並行配置的20個單獨的位/校驗處理器。更具體地,多個位/校驗處理器810包括BCP 811(第1個位/校驗處理器),...,以及BCP 812(第20個位/校驗處理器)。從這20個單獨的位/校驗處理器810中,適當地邊消息以120位輸出(即,每個為20×6位)。因此,每個宏塊899內的20個單獨的位/校驗處理器共有120位的輸出(即,20×6位)。多個位/校驗處理器810的20個位/校驗處理器中的每一個均輸出6位的邊消息。類似地,桶形移位器815內適當移位後的邊消息也是120位(即,20×6位)。因此,桶形移位器815也共有120位(即,20×6位)的輸出。同樣,解碼遵從DVB-S2的信號時,消息傳送存儲器820需傳送792×120位的值。因而有120位(即,20×6位)的解碼位從SARM860中輸出。
與其它實施例一樣,要注意的是,桶形移位器815可在任何宏塊899的內部或外部實現。如果桶形移位器815在宏塊899外部實現,單個桶形移位器可運算360×6位的邊消息值。但是,當桶形移位器815在宏塊899內部實現時,那麼將會有18個單獨的桶形移位器(即,每一個宏塊899中一個),運算120位(即,20×6位)的邊消息值。
還要注意的是,宏塊899的數量可進行選擇,以使LDPC解碼功能性800的總面積儘可能小。例如,為了解碼遵從DVB-S2的信號,宏塊的數量乘以每個宏塊899的多個位/校驗處理器內的位/校驗處理器的數量應該等於360。例如,可選擇360個並行處理器來支持解碼遵從DVB-S2的信號所要求的吞吐量。為了支持更高的吞吐量,需要的並行處理器更多。
如圖9所示的實施例中LDPC解碼功能性900中,I、Q輸入、量度發生器903(如圖所示的MG 903)、控制器950以及對應的基於選擇的LDPC碼951的控制信號952與圖7所示的LDPC解碼功能性700中的非常相似。但是,與圖7中的宏塊799相比,LDPC解碼功能性900包括有稍微修改後的宏塊999(如圖所示的MB 999)。
如9所示的實施例中,桶形移位器915包括在宏塊999內部。這個實施例中的桶形移位器915與前述實施例中的桶形移位器615或桶形移位器715的不同之處在於,這個實施例中的桶形移位器915僅服務於它所在的實際宏塊999內的部件。相反,桶形移位器615或桶形移位器715每個都服務於它們各自的實施例中的宏塊699和宏塊799的所有示例。因而桶形移位器915沒有桶形移位器615或桶形移位器715那麼複雜。
由於桶形移位器915的位置與桶形移位器615或桶形移位器715不同,必須小心,以確保對邊消息進行適當地移位以便多個位/校驗處理器910內的後續校驗節點處理或位節點處理。同樣,由於桶形移位器915的位置與桶形移位器615或桶形移位器715不同,需要對桶形移位器962和SARM 960進行重新配置以兼容這種不同順序的處理。
與圖8中的實施例相似,圖9中的宏塊999可被複製預定的次數,以協助提供比之前的實施例更有效的LDPC解碼功能性。宏塊999包括有所有的功能,可被複製以實現更加並行的處理結構。
一種能夠解碼遵從DVB-S2信號的設計中包括18個單獨的宏塊示例。提供給量度發生器903的I、Q值每個7位。量度發生器903使用7位的I、Q值生成的位量度是每個為6位的值。
但是,圖9中宏塊999的每個塊的實現都與圖7中的宏塊799不同。虛擬雙埠量度存儲器905(如圖所示的PDPMM 905)在180×120位上運算。這120個位每個都以20×6位實現;也就是說,有20個單獨的值,每個值6位。從虛擬雙埠量度存儲器905輸出的位量度也具有120位(即,每個為20×6位)。
提供給多個位/檢驗處理器910的這些位量度可提供給位於每個宏塊內的並行配置的20個單獨的位/校驗處理器。更具體地,多個位/校驗處理器910包括BCP 911(第1個位/校驗處理器),...,以及BCP 912(第20個位/校驗處理器)。從這20個單獨的位/校驗處理器910中,適當地邊消息以120位輸出(即,每個為20×6位)。因此,每個宏塊999內的20個單獨的位/校驗處理器共有120位的輸出(即,20×6位)。多個位/校驗處理器910的20個位/校驗處理器中的每一個均輸出6位的邊消息。類似地,桶形移位器915內適當移位後的邊消息也是120位(即,20×6位)。因此,桶形移位器915也共有120位(即,20×6位)的輸出。同樣,解碼遵從DVB-S2的信號時,消息傳送存儲器920需傳送792×120位的值。因而有120位(即,20×6位)的解碼位從SARM960中輸出。
與其它實施例一樣,要注意的是,桶形移位器915可在任何宏塊999的內部或外部實現。如果桶形移位器915在宏塊999外部實現,單個桶形移位器可運算360×6位的邊消息值。但是,當桶形移位器915在宏塊999內部實現時,那麼將會有18個單獨的桶形移位器(即,每一個宏塊999中一個),運算120位(即,20×6位)的邊消息值。
還要注意的是,宏塊999的數量可進行選擇,以使LDPC解碼功能性900的總面積儘可能小。例如,為了解碼遵從DVB-S2的信號,宏塊的數量乘以每個宏塊999的多個位/校驗處理器910內的位/校驗處理器的數量應該等於360。例如,可選擇360個並行處理器來支持解碼遵從DVB-S2的信號所要求的吞吐量。為了支持更高的吞吐量,需要的並行處理器更多。
這裡還要注意的是,上述各個實施例中的控制器給其它的每個解碼功能塊提供同步信息。更具體地,這包括為每個對應的量度發生器、量度存儲器、多個位/校驗處理器、桶形移位器和消息傳送存儲器生成定時信號。這些定時信號提供給這些功能塊中的每一個,不管這些功能塊在特定的實施例中是怎樣實現的。如果必要,可對這些定時信號進行適當的修改,以適合給定的功能塊的實現方式。例如,根據桶形移位器是否在宏塊內部或外部實現,需要對定時信號進行不同地處理。
同樣,如上所述,上述各實施例中每個不同的LDPC解碼功能性都能夠處理和解碼不同類型的LDPC編碼信號,包括使用不同的奇偶校驗矩陣產生的LDPC編碼信號,以及具有不同的編碼率和/或調製類型且會基於逐幀甚至逐塊變化的LDPC編碼信號。例如,一個區塊可視為一幀內的一個符號群。在某些情況下,一幀可包括多個區塊。
上述各實施例中的控制器還可對每個LDPC碼使用可編程和可選擇的參數。這些可編程和可選擇的參數包括每個LDPC二分圖的位節點度和校驗節點度。此外,這些可編程和可選擇的參數還包括信息傳遞存儲器尋址和桶形移位器選擇參數。
例如,對於信息位節點,為位+1提供了校驗+q。同樣,對於奇偶校驗位節點,為位+q提供了校驗+q。通過這樣做,可確保兩者能存儲在相同的存儲設備中(例如,相同的RAM中)。這是可能的,因為奇偶校驗位節點的位+q是可容許的,因為它們是+1或+q值都沒有任何關係(注這些在輸出處理中不使用)。奇偶校驗位節點的位+q不像信息位節點,信息位節點要求按照用於輸出處理的多個並行處理引擎的順序+1。例如,實現如上所述的解碼遵從DVB-S2的信號的實施例時,可有360個並行處理引擎用於輸出處理。例如,該360個並行處理引擎將處理對應360個校驗節點(即,0,q,2q,3q,...)的360個信息位節點(例如,節點0至節點359)。對於奇偶校驗位節點,這360個處理引擎將處理360個位節點(例如,n,n+q,n+2q,n+3q,...)。這些奇偶校驗位節對應該360個校驗節點(例如,m,m+q,m+2q,m+3q,...)。通過這樣做,所有360個邊消息存儲在存儲設備的相同位置內,可在校驗節點處理和位節點處理過程中使用。不這樣做,則需要2個單獨的存儲設備(一個存儲設備存儲對應信息位節點的邊消息,另一個存儲設備存儲對應奇偶校驗位節點的邊消息)。
這種兼容不同類型的LDPC編碼信號的自適應性使得上述各種實施例中的LDPC解碼功能性都能夠解碼遵從DVB-S2的LDPC編碼信號。
圖10是根據本發明一個實施例的量度發生器功能性1000的示意圖。如圖所示,量度發生器(如圖所示的MG)接收將為之計算量度的相關符號的I、Q值。該I、Q分量是單獨分開的,並分別提供給符號量度計算器功能塊(如圖所示的SMC)內的I處理通道和Q處理通道。更具體地,接收的I分量(如圖所示的Rx_I)提供給I處理通道,接收的Q分量(如圖所示的Rx_Q)提供給Q處理通道。沿著這些各自的處理通道,確定該接收值與其對應的係數(與生成該特定符號使用的適當地調製相關)之間的差值。更具體地,在I處理通道中,從接收的I分量(即,Rx_I)中減去I係數(如圖所示的I_Coefj)。類似地,在Q處理通道中,從接收的Q分量(即,Rx_Q)中減去Q係數(如圖所示的Q_Coefj)。然後將每一個生成的差值進行平方(即,自己與自己相乘)。接下來將生成的這些平方差值相加,並使用方差因子(用VF表示,其值等於1/(2σ2),其中σ是標準偏差雜訊係數)進行調整。然後符號量度計算器功能塊輸出符號量度(如圖所示的sym_metric(i)),隨後將該符號量度提供給位量度計算器功能塊。
將這些符號量度提供給位量度計算器功能塊後,便可計算每個期望的位(bit of interest)的位量度。如圖所示為計算位m的位量度。首先,使用位值m為0的所有生成的符號量度來執行min*處理。同樣,也可以首先使用位值m為1的所有生成的符號量度來執行min*處理。一旦確定了每一個min*處理的結果後,接下來確定它們之間的差值。還要注意的是,可使用直接的min處理代替min*處理。現有技術中使用符號量度計算位量度的方法未採用min處理或min*處理。這是與現有技術的方法的重要區別,這也使性能相對於現有技術得到了更好的改善。
量度發生器執行的計算可用數學式表示。符號量度的計算sym_metric(i)按照下式執行sym_metric(i)=1/(2σ2)×[(Rx_I-I_Coefj)2+(Rx_Q-Q_Coefj)2]這一計算在圖中所示的符號量度計算器功能塊(SMC)內發生。
然後,特定位m的位量度計算如下bit_met(bit m)=min*[all sym_metric(i)with bit m=0]-min*[all sym_metric(i)with bit m=1]這一計算在圖中所示的位量度計算器功能塊(BMC)內發生。
還要注意的是,位量度計算器功能塊內執行的計算也可以僅使用與min*處理相對的min處理來執行。
如上所述,在此描述的各種解碼實施例都適用於解碼各種不同類型的LDPC編碼信號,包括其調製和/或編碼率基於逐塊頻繁變化的LDPC編碼信號。這種LDPC編碼信號包括遵從DVB-S2標準的LDPC編碼信號。
以下的4個圖示出了不同係數的使用,這些係數用來為與不同調製(即,每一個都包括有一個群集形狀和一個對應的其內群集點的映射的調製)相關的符號計算合適的量度。
圖11是根據本發明一個實施例的QPSK(正交相移鍵控)群集1100及其對應的二進位映射和其內採用的QPSK係數的示意圖。
每個群集點(constellation point)被適當標記。例如,QPSK群集圖上的群集點標記如下0群集點00,1群集點01,2群集點10,3群集點11。
圖中其它群集點的標記可類似地執行,並可在圖中示意性地示出。
這些群集點中的每一個都可以使用係數表示,從I、Q原點沿著二維圖的I、Q軸延伸。由於該群集形狀關於I、Q原點對稱,因而只需兩個係數來表示圖中的所有群集點。因為這種對稱,這兩個係數可看作是相同的值,但符號相反。因而描述QPSK形狀的群集內的所有4個點只需要兩個不同的係數值。
更具體地,群集中每個點的笛卡爾坐標形式可描述如下0群集點00→笛卡爾坐標(P_1,P_1),1群集點01→笛卡爾坐標(P_1,P_3),2群集點10→笛卡爾坐標(P_3,P_1),3群集點12→笛卡爾坐標(P_3,P_3)。
圖12是根據本發明一個實施例的8PSK(相移鍵控)群集1200及其對應的二進位映射和其內使用的8PSK係數的示意圖。
這種群集中的每個點也可以使用係數表示,從I、Q原點分別沿著二維圖的I、Q軸延伸。該8PSK群集形狀也使用4個群集點,但這4個群集點關於I、Q原點的位置比上圖中QPSK群集形狀內的要小。由此可見,與前述實施例的QPSK調製內的一樣,也可以使用某些相同的係數來描述8PSK調製內的群集點。描述8PSK形狀的群集內的所有8個點只需要4個不同的係數值。
更具體地,該群集中每個點的笛卡爾坐標可描述如下
0群集點000→笛卡爾坐標(P_1,P_1),1群集點001→笛卡爾坐標(P_0,P_0),2群集點010→笛卡爾坐標(0,P_2),3群集點011→笛卡爾坐標(P_3,P_3),4群集點100→笛卡爾坐標(0,P_0),5群集點101→笛卡爾坐標(P_1,P_3),6群集點110→笛卡爾坐標(P_3,P_1),7群集點111→笛卡爾坐標(0,P_2)。
圖13是根據本發明一個實施例的16QAM群集1300及其對應的十六進位映射和其內使用的16QAM係數的示意圖。
與上述的實施例類似,該群集中每個點也可以使用係數表示,從I、Q原點分別沿著二維圖的I、Q軸延伸。由於該16QAM調製的群集點的對稱性,因而只需4個不同的係數值便可描述該16QAM形狀的群集內的所有16個係數。
更具體地,該群集內每個點的笛卡爾坐標可描述如下0群集點0000→笛卡爾坐標(Q_1,Q_1),1群集點0001→笛卡爾坐標(Q_1,Q_2),2群集點0010→笛卡爾坐標(Q_0,Q_1),3群集點0011→笛卡爾坐標(Q_0,Q_0),4群集點0100→笛卡爾坐標(Q_3,Q_1),5群集點0101→笛卡爾坐標(Q_2,Q_1),6群集點0110→笛卡爾坐標(Q_3,Q_0),7群集點0111→笛卡爾坐標(Q_2,Q_0)。
8群集點1000→笛卡爾坐標(Q_3,Q_3),9群集點1001→笛卡爾坐標(Q_2,Q_3),A群集點1010→笛卡爾坐標(Q_3,Q_2),B群集點1011→笛卡爾坐標(Q_2,Q_2),C群集點1100→笛卡爾坐標(Q_1,Q_3),
D群集點1101→笛卡爾坐標(Q_0,Q_3),E群集點1110→笛卡爾坐標(Q_1,Q_2),F群集點0111→笛卡爾坐標(Q_0,Q_2)。
圖14是根據本發明一個實施例的16APSK群集1400及其對應的十六進位映射和其內使用的16APSK係數的示意圖。
與上述實施例類似,該群集內每個點也可以使用係數表示,從I、Q原點分別沿著二維圖的I、Q軸延伸。更具體地,該群集內每個點的笛卡爾坐標可描述如下0群集點0000→笛卡爾坐標(A_5,A_5),1群集點0001→笛卡爾坐標(A_5,A_7),2群集點0010→笛卡爾坐標(A_7,A_5),3群集點0011→笛卡爾坐標(A_7,A_7),4群集點0100→笛卡爾坐標(A_1,A_0),5群集點0101→笛卡爾坐標(A_1,A_2),6群集點0110→笛卡爾坐標(A_3,A_0),7群集點0111→笛卡爾坐標(A_3,A_2)。
8群集點1000→笛卡爾坐標(A_0,A_1),9群集點1001→笛卡爾坐標(A_0,A_3),A群集點1010→笛卡爾坐標(A_2,A_1),B群集點1011→笛卡爾坐標(A_2,A_3),C群集點1100→笛卡爾坐標(A_4,A_4),D群集點1101→笛卡爾坐標(A_4,A_6),E群集點1110→笛卡爾坐標(A_6,A_4),F群集點0111→笛卡爾坐標(A_6,A_6)。
也要注意的是,這些調製的每一種(QPSK、8PSK、16QAM以及16APSK)也可用在DVB-S2標準中。
圖15是根據本發明一個實施例的調製係數表的示意圖。這個表示出了如何基於使用的調製選擇合適的係數來計算其中相關的量度。由表可見,對於每種調製,選擇不同的值用作係數。因而可有多達8個係數(例如,對於16APSK調製),4個係數(對8PSK或16QAM調製),或者少達2個係數(例如,對於QPSK調製)。如果想要服務於另一個實施例中的其它調製,則需要選擇不同數量的係數。
通過使用這個表,可以非常有效的設計量度發生器計算功能性。更具體地,可使用單個設計來計算與任何調製相關的量度,只要選擇合適的係數(即,適合給定的調製)用於量度的計算。
例如,當計算與具有QPSK調製的一個符號相關的量度時,分別選擇Coef_1和Coef_3的值為P_1和P_3。類似地,當計算與具有8PSK調製的符號相關的量度時,Coef_0、Coef_1、Coef_2和Coef_3的值可分別選擇為P_0、P_1、P_2和P_3。對於表中描述的其它調製類型,考慮到群集形狀和對應該特定類型的調製的映射,可以採用類似的方式來選擇係數值(例如,Coef_0至Coef_7)。通過使用這種方法,係數值可基於想要的調製進行選擇,因而可以採用單個量度發生器結構來為多種調製類型執行量度計算。以下將結合附圖描述這種量度發生器結構的幾個實施例。
圖16,圖17,和圖18是根據本發明幾個實施例的量度發生器的結構示意圖。
如圖16所示的量度發生器結構1600,其功能性可分成符號量度計算器功能塊(如圖所示的SMC)和位量度計算器功能塊(如圖所示的BMC)。符號量度計算器功能塊計算多個符號量度(如圖所示的sym_metrics),位量度計算功能塊使用這多個符號量度來計算多個位量度(如圖所示的bit_metrics)。量度發生器結構1600可以是硬體,執行上述的數學計算,並具有兼容多個不同的編碼率和/或調製的能力。
根據本發明的可變編碼率功能性,為了支持多種編碼率和/或調製,使用了多個I、Q係數,接收符號的I值(Rx_I)與多個I係數(如圖所示的I_Coef_0,...以及I_Coef_7)之間的「差值」都被同時計算。類似地,接收符號的Q值(Rx_Q)與多個Q係數(如圖所示的Q_Coef_0,...以及Q_Coef_7)之間的「差值」都被同時計算。在某些實施例中這些值的精度為9位。要注意的是,這些「差值」都通過使用上述群集的對稱性來計算,其中僅做加法,不做減法,從而節省了硬體。
然後對每一個這種差值(通過執行加法以及基於群集形狀的對稱性合適選擇的係數生成)進行平方運算。在某些實施例中這些平方值的精度為18位。隨後對這些平方值進行捨入運算。因而,在某些實施例中這些值的精度四捨五入至9位。然後,這些捨入後的值被傳送給相應的寄存器(如圖所示的REG)。
在其相應的寄存器內放置預定的時間後(例如,一個時鐘周期),當從總的剩餘位數中選擇出預定數量的有效位時,每個寄存器的輸出被傳送給相應的飽和功能塊(如圖所示的SAT)。每個飽和功能塊的輸出表示為I值(即,Sq_x0,Sq_x1,...,Sq_x7),以及Q值(即,Sq_y0,Sq_y1,...,Sq_y7)。某些實施例中這些值的精度是7位。然後將這些輸出提供給平方輸出復用器(MUX),或者平方輸出MUX(如圖所示的SO MUX)。
從平方輸出MUX中選擇值,這種選擇由一個控制器(如圖所示的CON)提供的調製和/或編碼率支配。如上面的其它實施例中所描述的,該控制器可根據被解碼的LDPC編碼信號的符號的編碼率和/或調製來控制LDPC解碼功能性的某些功能塊的操作。
在平方輸出MUX中通過使用控制器提供的信號進行適當選擇後,合適的項從平方輸出MUX中輸出,並被選擇和相加。例如,項(Rx_I+I_Coef_0)^2,如圖中Sq_I0out所示,與項(Rx_Q+Q_Coef_0)^2,如圖中Sq_Q0 out所示,被相加。從平方輸出MUX中輸出的I相關輸出指示出了I軸距離,將接收信號的I分量與對應基於適當編碼率和/或調製的適當群集的群集點的預定I係數分開。
類似地,從平方輸出MUX中輸出的Q相關輸出指示出了Q軸距離,將接收信號的Q分量與對應基於適當編碼率和/或調製的適當群集的群集點的預定Q係數分開。
選擇來自平方輸出MUX的適當輸出相加獲得的相加值,接下來被傳遞給相應的寄存器(如圖中REG所示),並在寄存器中停留預定的時間段(例如,一個時鐘周期)。然後對對應的每個值進行方差因子縮放(如圖中VF 1/(2σ2)所示)並最後進行四捨五入,得到具有理想位精度的值。σ是接收的信號的標準雜訊的標準偏差。
然後,符號量度計算器功能塊(如圖中sym_metrics所示)產生的符號量度從符號量度計算器功能塊中輸出,並提供給位量度計算器功能塊。位量度計算器功能塊計算相應的位量度(如圖中bit_metrics所示)。對於符號內的每個位(bi),基於編碼率和/或調製(由控制器提供的信號所確定和控制,如圖中CON所示),位量度計算器功能塊對所有bi=1的符號量度(即,sym_metric值)執行min*處理。也就是說,位量度計算器功能塊為符號的每個位位置中位值為1的所有符號量度執行min*處理。類似地,位量度計算器功能塊對所有bi=0的符號量度(即,sym_metric值)執行min*處理。也就是說,位量度計算器功能塊為符號的每個位位置中位值為0的所有的符號量度執行min*處理。然後確定這兩個單獨的min*處理結果之間的差值,從而生成對應的位量度(如圖中bit_metrics所示)。
可選擇地,在其它的實施例中,位量度之計算器功能塊可執行直接的min處理(沒有對數校正因數)。這種情況下,可確定這兩個單獨的直接min處理結果之間的差值,從而生成對應的位量度(如圖中bit_metrics所示。)如以下描述的兩個其它可能的量度發生器結構所示,還有許多其它可能的方法來實現量度發生器功能性,而不脫離本發明的範圍和精神。每個這些不同的量度發生器結構都可支持變量編碼率和/或調製信號。
在量度發生器結構1600中,對平方輸出MUX的輸出信號執行方差因子縮放。可選擇地,信號因子縮放可在處理中更早階段執行。在某些情況下,這種方法提供了更好和更有效的實現。
如圖17所示的量度發生器結構1700,符號量度計算器功能塊(如圖中SMC所示)的運算與前述實施例中的量度發生器結構1600不同。位量度計算器功能塊(如圖中BMC所示)與前述實施例的量度發生器結構1600類似。與前述實施例的量度發生器結構1600類似,量度發生器結構1700從一個控制器(如圖中CON所示)接收編碼率和/或調製控制信號,以控制量度發生器結構1700的不同功能塊的操作。
與上述量度發生器結構1600的實施例類似,為了支持多種編碼率和/或調製,量度發生器結構1700使用了多個I、Q係數。接收信號的I值(Rx_I)和多個I係數(如圖中I_Coef_0,...以及I_Coef_7所示)之間的差值都被同時計算。類似地,接收信號的Q值(Rx_Q)和多個Q係數(如圖中Q_Coef_0,...以及Q_Coef_7所示)之間的差值都被同時計算。在某些實施例中,這些值的精度是9位。要注意的是,可通過使用上述群集的對稱性來計算所有的這些「差值」,其中可僅執行加法,不執行減法,因而節省了硬體。
然後對每一個這種「差值」(通過執行加法以及基於群集形狀的對稱性適當選擇的係數所生成)進行絕對值運算。之後,將這些值傳遞給相應的寄存器(如圖中REG所示)。在其相應的寄存器內停留預定的時間段後(例如,一個時鐘周期),接下來對每個相應寄存器的輸出進行西格馬因子縮放(如圖中SF(0.7071/σ)所示)。西格馬,σ』是接收信號的標準雜訊的標準偏差。進行西格馬縮放後,繼續對這些值進行捨入運算,並隨後傳遞給寄存器(仍如圖中REG所示)。在寄存器中停留預定的時間段後(例如,一個時鐘周期),每個輸出被傳遞給相應的絕對值和平方功能塊。然後對相應的絕對值和平方功能塊的輸出進行捨入運算,然後將之傳遞給相應的寄存器(如圖中REG所示)。每個寄存器的輸出表示為I值(即,Sq_x0,Sq_x1,...Sq_x7)以及Q值(即,Sq_y0,Sq_y1,...Sq_y7)。然後將這些輸出提供給平方輸出復用器(MUX),或平方輸出MUX(如圖中SO MUX所示)。
從平方輸出MUX中選擇值,這種選擇由一個控制器(如圖所示的CON)提供的調製和/或編碼率支配。如上面的其它實施例中所描述的,該控制器可根據被解碼的LDPC編碼信號的符號的編碼率和/或調製來控制LDPC解碼功能性的某些功能塊的操作。
在平方輸出MUX中通過使用控制器提供的信號進行適當選擇後,合適的項從平方輸出MUX中輸出,並被選擇和相加。例如,項(Rx_I+I_Coef_0)^2,如圖中Sq_I0 out所示,與項(Rx_Q+Q_Coef_0)^2,如圖中Sq_Q0 out所示,被相加。從平方輸出MUX中輸出的I相關輸出指示出了I軸距離,將接收信號的I分量與對應基於適當編碼率和/或調製的適當群集的群集點的預定I係數分開。
類似地,從平方輸出MUX中輸出的Q相關輸出指示出了Q軸距離,將接收信號的Q分量與對應基於適當編碼率和/或調製的適當群集的群集點的預定Q係數分開。
進行相加運算後,在從符號量度計算器功能塊輸出至位量度計算器功能塊之前,對這些值進行相應的捨入操作。量度發生器結構1700內的位量度計算器功能塊的運算與前述實施例中量度發生器結構1600中的位量度計算器功能塊的運算類似。
如圖18所示的量度發生器結構1800,該符號量度計算器功能塊(如圖8中SMC所示)與前述實施例的量度發生器結構1600以及前述實施例的量度發生器1700不同,位量度計算器功能塊(如圖8中BMC所示)的運算與前述實施例的量度發生器結構1600以及前述實施例的量度發生器1700類似。同樣與前述實施例的量度發生器結構1600以及前述實施例的量度發生器1700類似的,量度發生器1800從一個控制器(如圖8中CON所示)處接收編碼率和/或調製控制信號,以控制量度發生器結構1800的不同功能塊的運算。
在量度發生器結構1800的中,接收的I、Q值先進行西格馬因子縮放。接收的I、Q值傳遞給寄存器(如圖中REG所示)。在寄存器內停留預定的時間段後(例如,一個時鐘周期),對這些輸入I、Q值進行西格馬因子縮放(如圖中SF(0.7071/σ)所示)。其中西格馬,σ』是接收信號的標準雜訊的標準偏差。在進行西格馬因子縮放後,對這些值進行捨入運算,並接下來被傳遞給寄存器(如圖中REG所示)。在寄存器中停留預定的時間段後(例如,一個時鐘周期),接下來將這些縮放後的I、Q值傳遞給相應的求和塊。
與上述量度發生器結構1600的實施例以及量度發生器結構1700的實施例類似,為了支持多種編碼率和/或調製,量度發生器結構1800使用了多個縮放的I、Q係數。接收信號的I值(Rx_I)和多個I係數(如圖中I_Coef_0,...以及I_Coef_7所示)之間的差值都被同時計算。類似地,接收信號Q值(Rx_Q)和多個Q係數(如圖中Q_Coef_0,...以及Q_Coef_7所示)之間的差值都被同時計算。在某些實施例中,這些值的精度是9位。要注意的是,通過使用上述群集的對稱性來計算所有的這些「差值」,其中僅需執行加法,不執行減法,因而節省了硬體。
然後對每一個這種「差值」(通過執行加法以及基於群集形狀的對稱性適當選擇的係數所生成)進行絕對值運算。之後,將這些值傳遞給相應的寄存器(如圖中REG所示)。在其相應的寄存器內停留預定的時間段後(例如,一個時鐘周期),接下來每個相應寄存器的輸出被傳遞給相應的絕對值和平方功能塊。然後對相應的絕對值和平方功能塊的輸出進行捨入運算,然後將之傳遞給相應的寄存器(如圖中REG所示)。每個寄存器的輸出表示為I值(即,Sq_x0,Sq_x1,...Sq_x7)以及Q值(即,Sq_y0,Sq_y1,...Sq_y7)。然後將這些輸出提供給平方輸出復用器(MUX),或平方輸出MUX(如圖中SO MUX所示)。
從平方輸出MUX中選擇值,這種選擇由一個控制器(如圖所示的CON)提供的調製和/或編碼率支配。如上面的其它實施例中所描述的,該控制器可根據被解碼的LDPC編碼信號的符號的編碼率和/或調製來控制LDPC解碼功能性的某些功能塊的操作。
在平方輸出MUX中通過使用控制器提供的信號進行適當選擇後,合適的項從平方輸出MUX中輸出,並被選擇和相加。例如,項(Rx_I+I_Coef_0)^2,如圖中Sq_I0 out所示,與項(Rx_Q+Q_Coef_0)^2,如圖中Sq_Q0 out所示,被相加。從平方輸出MUX中輸出的I相關輸出指示出了I軸距離,將接收信號的I分量與對應基於適當編碼率和/或調製的適當群集的群集點的預定I係數分開。
類似地,從平方輸出MUX中輸出的Q相關輸出指示出了Q軸距離,將接收信號的Q分量與對應基於適當編碼率和/或調製的適當群集的群集點的預定Q係數分開。
進行相加運算後,在從符號量度計算器功能塊輸出至位量度計算器功能塊之前,對這些值進行相應的捨入操作。量度發生器結構1800內的位量度計算器功能塊的運算與前述實施例中量度發生器結構1600中的位量度計算器功能塊以及前述實施例中量度發生器結構1700中的位量度計算器功能塊的運算類似。
如上其它實施例所述,解碼LDPC編碼信號時執行的迭代解碼處理一般包括位節點處理和校驗節點處理,二者可選擇地執行也可以連續執行。位節點處理包括更新和計算與位節點相關的邊消息Medgeb。在第一次迭代(在其中使用了預定值)的初始化後,使用最近更新的與校驗節點相關的邊消息MedgeC來執行與位節點相關的邊消息Medgeb的更新與計算。
校驗節點處理包括更新與計算與校驗節點MedgeC相關的邊消息。使用最近更新的與位節點相關的邊消息Medgeb來執行與校驗節點相關的邊消息MedgeC的更新與計算。
在執行這些計算的過程中,硬體實現通常都在對數域(其中乘法被簡化成加法,除法被簡化成減法)中執行。以下將結合附圖詳細介紹位節點處理和校驗節點處理的各個不同實施例。
圖19是根據本發明一個實施例的位節點處理功能性1900的示意圖。與校驗節點相關的邊消息MedgeC以及位量度(如圖中bit_metrics所示)都被輸入到位節點處理功能性1900中。與校驗節點相關的邊消息MedgeC還同時提供給累加器(如圖中ACC所示)和FIFO(先進先出)功能塊。位量度也提供給累加器,在其內位量度被提供給多路復用器(如圖中累加器內的MUX所示)。在位節點處理過程中,第一次接收的與校驗節點相關的邊消息,如MedgeC(0),與位量度相加。之後,這次相加的和(例如,MedgeC(0)與位量度的和)與第二次接收的與校驗節點相關的邊消息,如,MedgeC(1),相加。在下一個時鐘周期中,第二次相加的和(例如,MedgeC(0)、MedgeC(1)與位量度的和)與第三次接收的與校驗節點相關的邊消息,如MedgeC(2)相加。通過這種方式求和,生成總和值時可節省一個時鐘周期。
兩個寄存器(一個位於累加器內和一個位於累加器外)用來提供總和值,該總和值包括所有與校驗節點相關的邊消息MedgeC以及期望的位量度(即,∑(MedgeC)+bit_metric)。這個值,∑(MedgeC)+bit_metric,可被看作是位節點處理功能性1900內的軟輸出。然後將該軟輸出提供給最重要的位輸出處理器(如圖中MSB OP所示)。
然後將FIFO的輸出提供給減法功能塊,並從FIFO的輸出(僅僅是合適順序的與校驗節點相關的邊消息MedgeC)中減去軟輸出(由累加器提供)。減法功能塊的輸出結果便是更新後的與位節點相關的邊消息Medgeb。該更新後的與位節點相關的邊消息Medgeb包括所有與校驗節點相關的邊消息MedgeC(被計算的特殊邊消息除外)與位量度的和。在後續的迭代解碼處理過程中執行校驗節點處理時,這些更新後的與位節點相關的邊消息Medgeb由符號數值格式處理器(如圖中SMFP所示)以符號數值格式輸出,以便於min**處理。符號數值格式處理器的輸出中最重要的位指示符號,剩餘的位指示實際值。與位節點相關的邊消息Medgeb以符號數值格式存儲在存儲器中。要注意的是,與校驗節點相關的邊消息Medgec以2的補碼格式存儲,以便於後續的迭代解碼處理過程中的位節點處理。
如上所述,根據本發明,可採用多種可能的手段來實現校驗節點處理功能性。
圖20、圖21、圖22和圖23是根據本發明幾個實施例的校驗節點處理功能性的示意圖。
如圖20所示的校驗節點處理功能性2000中,通過與位節點相關的邊消息Medgeb來更新與校驗節點相關的邊消息Medgec時,使用min**處理和min**-處理。最近更新的與位節點相關的邊消息Medgeb被同時提供給min**處理功能塊和FIFO(先進先出)塊。隨著後續的與位節點相關的邊消息Medgeb提供給min**處理功能塊,一個寄存器(如圖中REG所示)和一個反饋通道被操作來執行所有與位節點有關的邊消息Medgeb的min**處理。然後從另一個寄存器(如圖中REG所示)輸出的min**處理的最後結果提供給min**-處理功能塊,且適當排序後的與位節點相關的邊消息Medgeb也從FIFO中提供給該min**-處理功能塊。min**-處理功能塊的輸出便是更新後的與校驗節點相關的邊消息Medgec。
如圖21所示的校驗節點處理功能性2100中,通過與位節點相關的邊消息Medgeb來更新與校驗節點相關的邊消息Medgec時,使用了min處理和min-處理。最近更新的與位節點相關的邊消息Medgeb被同時提供給min處理功能塊和FIFO(先進先出)塊。隨著後續的與位節點相關的邊消息Medgeb提供給min處理功能塊,一個寄存器(如圖中REG所示)和一個反饋通道被操作來執行所有與位節點有關的邊消息Medgeb的min處理。然後從另一個寄存器(如圖中REG所示)輸出的min處理的最後結果提供給min-處理功能塊,且適當排序後的與位節點相關的邊消息Medgeb也從FIFO中提供給該min-處理功能塊。min-處理功能塊的輸出便是更新後的與校驗節點相關的邊消息Medgec。
要注意的是,min功能塊的功能性可看成是執行一種帶有最小值比較處理的min*處理。
以下將詳細介紹執行min處理的實施例。還要注意的是,對於每個宏塊的所有預定數量的處理器僅需要一個FIFO塊。也就是說,上述每個實施例包括多個支持LDPC解碼功能性的宏塊,這些實施例可利用校驗節點處理功能性2000或校驗節點處理功能性2100來實現,並且每個實施例中僅需要一個FIFO。在某些例子中,LDPC解碼功能性的每個宏塊中的所有20個處理器只需要一個FIFO。以下介紹的校驗節點處理功能性2200和校驗節點處理功能性2300也是如此。
如圖22所示的校驗節點處理功能性2200是實現校驗節點處理功能性2000的一種可能的方式。
從更高的角度來看,校驗節點處理功能性2200的功能性與校驗節點處理功能性2000非常類似。圖22中提供了min**處理功能塊和min**-處理功能塊的更多細節。min**處理功能塊接收與位節點相關的邊消息Medgeb作為輸入,Medgeb在圖中也表示為x。min**處理功能塊的運算包括計算兩個單獨的對數校正因子,如圖中ln(1+e-|+x+y|)和-ln(1+e-|x-y|)所示,以及確定兩個單獨的值之間的最小值(即,x和y的最小值)。確定哪個值是兩個(x或y)中的最小值由多路復用器(MUX)來執行。為此,min**處理功能塊計算x-y和x+y這兩個單獨的值。然後將這些值分別提供給其對應的塊以計算其對應的對數校正值。
min**處理功能塊的輸出是該最小值(x或y)與兩個對數校正因子的和。y值作為min**功能塊的輸出,反饋回給相同的min**功能塊進行後續的計算。
min**-處理功能塊的運算與min**處理功能塊有點類似。但是,min**-處理功能塊對min**處理功能塊的結果(其輸出示為z)以及FIFO提供的適當排序後的與位節點相關的邊消息Medgeb(如x所示)進行運算。值z可視為是所有與位節點相關的邊消息的min**處理結果(即,min**(all Medgeb))。
min**-處理功能塊的運算包括計算兩個單獨的對數校正因子,如圖中的ln(1+e-|z+x|)和-ln(1+e-|z-x|),以及確定兩個單獨值之間的最小值(即,z和x的最小值)。確定哪個值是兩個(z或x)中的最小值由多路復用器(MUX)來執行。為此,min**-處理功能塊計算z-x和z+x的這兩個值,然後將這些值分別提供給其對應的塊計算其對應的對數校正值。
從min**處理功能塊和min**-處理功能塊的輸出的最終結果便是更新後的與校驗節點相關的邊消息Medgec。要注意的是,可利用LUT(查詢表)來確定每個min**處理功能塊和min**-處理功能塊中的對數校正值,該LUT可使用一些其它類型的存儲結構來實現。為此,需在每個min**處理功能塊和min**-處理功能塊中實現兩個單獨的LUT。
如圖23所示的校驗節點處理功能性2300是實現校驗節點處理功能性2100的一種可能的方式。該圖中使用min處理和min-處理通過與位節點相關的邊消息Medgeb來更新與校驗節點相關的邊消息Medgec。
從更高的角度來看,校驗節點處理功能性2300的功能與校驗節點處理功能性2100非常類似。圖23中提供了min處理功能塊和min-處理功能塊的更多細節。
在min處理功能塊內,接收的與位節點相關的邊消息Medgeb立即進行絕對值確定運算並轉換成符號數值格式,使得所有輸入的最小值更容易找到。這個操作在數值比較功能塊(如MAG COM所示)內進行。所有與位節點相關的邊消息Medgeb的最小值(如min所示)和最大值(如max所示)。所有與位節點相關的邊消息Medgeb的最大值從數值比較功能塊中輸出,然後傳遞給min處理功能塊內的min*處理功能塊。min處理功能塊的最終輸出便是所有與位節點相關的邊消息Medgeb的min*處理結果(如Ms_all所示)以及除最小輸入值外的所有與位節點相關的邊消息Medgeb的min*處理結果(如Ms min所示)。
min-處理功能塊接收每個min*處理結果(Ms_all和Ms_min)。min-處理功能塊也從FIFO接收x的絕對值,即|x |。min-處理功能塊內的min*-處理功能塊對接收的x的絕對值即|x|以及min處理功能塊提供的所有與位節點相關的邊消息Medgeb的min*處理結果(如Ms_all所示)進行運算。min-處理功能塊內的min*-處理功能塊的結果提供給min-處理功能塊內的MUX作為一個輸入,除最小輸入值外的所有與位節點相關的邊消息Medgeb的min*處理結果(如Ms_min所示)作為另一個輸入提供給min-處理功能塊內的MUX。MUX的選擇輸出表示為min-處理功能塊內的X。兩個單獨的賦值用來從X值生成Y和其後的Z。
Y=XifX0OifX0]]>Z=YifS=0-YifS=1]]>S是FIFO提供的MSB(最高有效位)。基於上述的值Y和Z的規則和賦值,S值可幫助確定更新的與校驗節點相關的邊消息Medgec的最終值。
上述的各種執行校驗節點處理以實現校驗節點處理功能性的實施例都可以在包括有可用來解碼LDPC編碼信號的LDPC解碼功能性的通信設備內實現。
以下的實施例將介紹幾種可用於執行校驗節點處理的計算的可能的非常有效的方法。某些實施例示出了min*處理,這些設計經過稍微的修改便可適用於max*處理。這些微小的修改是為了與硬體相一致,以執行想要類型的處理所必要的計算。上面已經介紹了幾種進行校驗節點處理時採用的處理。例如,min*處理的不同實施例可很容易地用來執行max*處理。類似地,min*-處理的不同實施例也可很容易地用來執行max*-處理。
圖24是根據本發明一個實施例的min*處理功能性2400的示意圖。圖中的min*處理對兩個輸入即x和y進行運算。x和y之間的差值z被確定(即z=x-y)。每個輸入x和y還提供給MUX。x和y之間的差值MSB,即z,被用來選擇輸入x或y中哪一個是最小值(即,min(x,y))。
同樣,確定的x和y之間的差值,即z,也提供給對數校正因子計算功能塊計算-ln(l+e-|x-y|);該對數校正值表示為log_out。最終的min*處理結果為x或y中的最小值與該對數校正值(即,log_out)的和。
圖25是根據本發明一個實施例的min*對數表的示意圖。如上其它實施例所述,LUT(查詢表)可用來基於z的值快速提供預定(或預先計算)的值。該表可基於x和y之間的差值即z的不同值提供對數校正因子、log_out(二進位),還可以提供項-ln(1+e-|x-y|)的實際值以及該項的二進位賦值(log_out)。由此可見,當x和y之間的差值z相對大於一個特定的閾值(即,相對較大的正值數字)或相對小於一個特定的閾值(即,相對較大的負值數字)時,則log_out的值飽和並被設為000。本實施例中的min*對數表中的二進位log_out值的精度為3位,當然也可以採用其它的精度,而不脫離本發明的範圍和精神。表中有一個log_out的增益區,該區中的值以z的函數發生變化。例如,當z從大約+1.25變化至-1.25時,log_out的值實際上以z的函數發生改變。但是,當z大於+1.25時,log_out的值飽和。同樣,當z的值小於-1.25時,log_out的值也飽和。
由於對數校正值的這種特性,可以更有效、更快地實現min*處理,用於校驗節點處理過程中。類似地,各種值可預定(或預先計算)並存儲在使用不同類型的存儲器來實現的LUT中,以在使用LDPC解碼功能性的通信設備中提供更快的計算和處理,用於校驗節點處理中的其它計算也從中受益。
圖26是根據本發明另一個實施例的min*處理功能性2600的示意圖。圖26所示的功能性也能執行min*處理,但是採用了比前述實施例更快的方式。在某些方面,這個實施例與上面描述的實施例類似。但是,圖26中採用了兩個單獨且同時運算的對數校正因子計算功能塊。
該圖中的min*處理也對兩個輸入即x和y進行運算。x和y之間的差值z被確定(即z=x-y)。每個輸入x和y還提供給MUX。y的值是兩個其它值的和,即前次迭代中x或y的最小值(如min(x,y)k-1所示)與前次迭代中的對數校正因子(log_outk-1)的和。x和y之間的差值MSB,即z,被用來選擇輸入x或y中哪一個是本次迭代的最小值(即,min(x,y)k)。
同樣,確定的x和y之間的差值,即z,也分別提供給兩個單獨的對數校正因子計算功能塊計算-ln(1+e-|z|)和-ln(1+e+|z|);這兩個單獨的對數校正因子計算功能塊的計算結果值被提供給另一個MUX。x與y之間的差值MSB,即z,被用來選擇這兩個單獨的對數校正因子計算功能塊輸出的值中哪一個將被用作本次迭代的實際對數校正值。最終選擇的本次迭代的對數校正值表示為log_outk。最後min*處理的結果被看作是x或y中的最小值(即,min(x,y)k)與對數校正值(即,log_outk)的和。但是,在這個實施例中,這兩個值保持分開,便於執行後續的計算步驟。如果需要的話,這兩個值可選擇性地加在一起。
圖27是根據本發明一個實施例的min*-處理功能性2700的示意圖。該圖中的功能性與min*處理功能性2400有些類似。
圖中的min*-處理對兩個輸入即x和y進行運算。x和y之間的差值z被確定(即z=x-y)。每個輸入x和y還提供給MUX。x和y之間的差值MSB,即z,被用來選擇輸入x或y中哪一個是最小值(即,min(x,y))。
同樣,確定的x和y之間的差值,即z,也提供給對數校正因子計算功能塊計算-ln(1-e-|x-y|);該對數校正值表示為log_out。最終的min*-處理結果為x或y中的最小值與該對數校正值(即,log_out)的和。
圖28是根據本發明一個實施例的min*-對數表的示意圖。如上其它實施例所述,LUT(查詢表)可用來基於z的值快速提供預定(或預先計算)的值。該表可基於x和y之間的差值即z的不同值提供對數校正因子、log_out(二進位),還可以提供項-ln(1-e-|x-y|)的實際值以及該項的二進位賦值(log_out)。由此可見,當x和y之間的差值z相對大於一個特定的閾值(即,相對較大的正值數字)或相對小於一個特定的閾值(即,相對較大的負值數字)時,則log_out的值飽和並被設為00000。本實施例中的min*對數表中的二進位log_out值的精度為5位,當然也可以採用其它的精度,而不脫離本發明的範圍和精神。表中有一個log_out的增益區,該區中的值以z的函數發生變化。例如,當z從大約+1.5變化至-1.5時,log_out的值實際上以z的函數發生改變。但是,當z大於+1.5時,log_out的值飽和。同樣,當z的值小於-1.5時,log_out的值也飽和。
關於min*-處理中log_out的值,當z=0時,則可使用log_out的預定值(如二進位01000所示,並用星號*標識)。這是由於如果對數字0取自然對數(即,ln(0))時將產生非法值。因此,這種情況下將使用預定的較大值估計,如min*-對數表中所示。
由於對數校正值的這種特性,可以更有效、更快地實現min*-處理,用於校驗節點處理過程中。類似地,各種值可預定(或預先計算)並存儲在使用不同類型的存儲器來實現的LUT中,以在使用LDPC解碼功能性的通信設備中提供更快的計算和處理,用於校驗節點處理中的其它計算也從中受益。
圖29和圖30是根據本發明實施例的min*-處理功能性的的示意圖。
如圖29所示的min*-處理功能性2900,與min*處理功能性2600類似。圖29所示的功能性也能執行min*-處理,但是採用了比前述實施例更快的方式。在某些方面,這個實施例與上面描述的執行min*-處理的實施例類似。但是,本實施例採用了兩個單獨且同時運算的對數校正因子計算功能塊。
該圖中的min*-處理也對兩個輸入即x和y進行運算。x和y之間的差值z被確定(即z=x-y)。每個輸入x和y還提供給MUX。y的值是兩個其它值的和,即前次迭代中x或y的最小值(如min(x,y)k-1所示)與前次迭代中的對數校正因子(log_outk-1)的和。x和y之間的差值MSB,即z,被用來選擇輸入x或y中哪一個是本次迭代的最小值(即,min(x,y)k)。
同樣,確定的x和y之間的差值,即z,也分別提供給兩個單獨的對數校正因子計算功能塊計算-ln(1-e-|z|)和-ln(1-e+|z|);這兩個單獨的對數校正因子計算功能塊的計算結果值被提供給另一個MUX。x與y之間的差值MSB,即z,被用來選擇這兩個單獨的對數校正因子計算功能塊輸出的值中哪一個將被用作本次迭代的實際對數校正值。最終選擇的本次迭代的對數校正值表示為log_outk。最後min*-處理的結果被看作是x或y中的最小值(即,min(x,y)k)與對數校正值(即,log_outk)的和。但是,在這個實施例中,這兩個值保持分開,便於執行後續的計算步驟。
如圖30所示的min*-處理功能性3000與min*-處理功能性2900非常類似,除了接收x和y的值,從而y是前次迭代中x或y的最小值(如min(x,y)k-1所示)與前次迭代中的對數校正因子(log_outk-1)的和的合併項,也就是說,y以y=min(x,y)k-1+log_outk-1的形式接收。
上述的各個不同實施例中的位數精度(bit degree precision)可由設計者採用和選擇。雖然某些實施例中提供了位數精度,但是很明顯還可以採用其他位數精度,而不脫離本發明的範圍和精神。
圖31是根據本發明一個實施例中校正子計算功能性3100的示意圖。對於執行LDPC解碼的各種不同方法來說,將解碼位的最近估計值提供給部分校正子校驗功能塊(partial syndrome check functional block)(如PSC所示),以確定解碼位的奇偶校驗。該解碼位的最近估計值被傳遞給XOR(OR除外)邏輯門,並隨後傳遞給兩個順序連接的寄存器(如REG所示)。第一個寄存器的輸出被反饋給XOR邏輯門。然後,將確定的奇偶校驗傳遞給後續的功能塊,以確定是否所有的校正子(即,部分校正子校驗功能塊輸出的所有奇偶校驗)都等於零。當所有的校正子實際上都等於零時,則通過該解碼位,且LDPC解碼功能性使用該解碼位的最近估計值作為該位的最佳估計值。
圖32是根據本發明一個實施例的執行LDPC解碼方法3200的流程圖。在方框3220中,接收區塊1的I、Q值(例如,Rx/Ry)並生成區塊1的位量度。該方法允許並行和同時處理接收的第一區塊的I、Q值,同時執行第一區塊的位量度計算。
然後,在方框3230中,接收區塊2的I、Q值(例如,Rx/Ry),並生成區塊2的位量度。此外,如方框3230中所示,該方法同時包括迭代解碼區塊1。這時,便能在迭代解碼前一接收區塊(例如,區塊1)的同時並行和同時處理一個區塊(例如,區塊2)的接收和量度計算。
然後,在方框3240中,該方法包括接收區塊3的I、Q值(例如,Rx/Ry),並生成區塊3的位量度。此外,如方框3240中所示,該方法同時包括迭代解碼區塊2。與方框3230中所示的操作一樣,在迭代解碼前一接收區塊(例如,區塊2)的同時並行和同時處理一個區塊(例如,區塊3)的接收和量度計算。
圖33是根據本發明一個實施例的迭代LDPC解碼方法3300的流程圖。在方框3310中,該方法包括使用與校驗節點相關的邊消息Medgec執行位節點處理,進行初始化,設置為預定的值。與校驗節點相關的邊消息Medgec在某些實施例中可設置為0值。
接下來,執行迭代解碼處理操作。在迭代#13320中,該方法執行校驗節點處理和校正子計算,如方框3322所示。在迭代#13320中,該方法還執行位節點處理,如方框3324所示。
在迭代#23330中,該方法執行校驗節點處理和校正子計算,如方框3332所示。在迭代#23330中,該方法還執行位節點處理,如方框3334所示。
本發明可執行各種次數的解碼迭代,而不脫離本發明的範圍和精神。圖33中用省略號表示(即...)。
在最後的迭代3340中,該方法執行校驗節點處理和校正子計算,如方框3342所示。在最後的迭代3340中,如果校正子通過(或者達到解碼迭代的最大次數),該方法還執行位節點處理並輸出解碼數據,如方框3344所示。
要注意的是,以上介紹的方法還可以在各種合適的系統和/或設備設計(通信系統、通信發送機、通信接收機、通信收發機和/或其內的功能性)中實現,而不脫離本發明的範圍和精神。
此外,還要注意的是,以上各個實施例中介紹的各種功能性、系統和/或設備設計和方法都可以執行各種對數域內的計算(例如,log域),從而可使用加法來執行乘法運算,使用減法來執行除法運算。
根據上述結合附圖和實施例對本發明的詳細介紹,很明顯還可以對本發明作出其他修改和變更而不脫離本發明的精神和範圍。
權利要求
1.一種解碼LDPC編碼信號的解碼器,所述解碼器包括一個量度發生器,用於接收對應LDPC編碼信號第一符號的第一I、Q值,並從中生成第一組多個位量度;接收對應LDPC編碼信號第二符號的第二I、Q值,並從中生成第二組多個位量度;一個量度存儲器,用於存儲所述第一組多個位量度和所述第二組多個位量度;支持雙埠存儲器管理,從而在從所述量度發生器接收所述第二組多個位量度的同時輸出所述第一組多個位量度;支持雙埠存儲器管理,從而在從所述量度發生器接收第三組多個位量度的同時輸出所述第二組多個位量度;多個位/校驗處理器,用於連續地接收所述第一組多個位量度、所述第二組多個位量度和所述第三組多個位量度;執行位節點處理,包括更新與多個位節點相關的多個邊消息,和校驗節點處理,包括更新與多個校驗節點相關的多個邊消息;一個消息傳送存儲器,用於在所述多個位/校驗處理器內經過位節點處理後,存儲所述與多個位節點相關的多個邊消息;在所述多個位/校驗處理器內經過校驗節點處理後,存儲所述與多個校驗節點相關的多個邊消息;一個桶形移位器,用於對從所述消息傳送存儲器中讀出的所述與多個位節點相關的多個邊消息進行移位;將所述移位後的與多個位節點相關的多個邊消息提供給所述多個位/校驗處理器進行隨後的校驗節點處理;對從所述消息傳送存儲器中讀出的所述與多個校驗節點相關的多個邊消息進行移位;將所述移位後的與多個校驗節點相關的多個邊消息提供給所述多個位/校驗處理器進行隨後的位節點處理。
2.根據權利要求1所述的解碼器,其特徵在於,所述解碼器進一步包括一個輸出處理器,用於從對應最近更新的與所述多個位節點相關的多個邊消息的所述多個位/校驗處理器中接收軟輸出,並隨後作出硬判決,從而生成所述LDPC編碼信號第一符號和第二符號中的至少一個的位最佳估計值。
3.根據權利要求1所述的解碼器,其特徵在於,所述解碼器進一步包括一個校正子計算功能塊,用於從與最近更新的與所述多個位節點相關的多個邊消息相對應的所述多個位/校驗處理器中接收軟輸出,並確定用於生成LDPC編碼信號的LDPC碼的多個校正子中的每一個是否等於零。
4.根據權利要求1所述的解碼器,其特徵在於所述量度存儲器、所述多個位/校驗處理器以及所述消息傳送存儲器形成包含有多個宏塊的第一個宏塊;所述多個宏塊中的每一個宏塊還包括有對應的量度存儲器、對應的多個位/校驗處理器以及對應的消息傳送存儲器;所述桶形移位器與所述多個宏塊中的每一個宏塊內的每一個對應的消息傳送存儲器通信連接。
5.一種解碼LDPC編碼信號的解碼器,所述解碼器包括多個位/校驗處理器,用於接收多個位量度;執行位節點處理,包括更新與多個位節點相關的多個邊消息,和校驗節點處理,包括更新與多個校驗節點相關的多個邊消息;一個消息傳送存儲器,用於在所述多個位/校驗處理器內經過位節點處理後,存儲所述與多個位節點相關的多個邊消息;在所述多個位/校驗處理器內經過校驗節點處理後,存儲所述與多個校驗節點相關的多個邊消息;一個桶形移位器,用於對從所述消息傳送存儲器中讀出的所述與多個位節點相關的多個邊消息進行移位;將所述移位後的與多個位節點相關的多個邊消息提供給所述多個位/校驗處理器進行隨後的校驗節點處理;對從所述消息傳送存儲器中讀出的所述與多個校驗節點相關的多個邊消息進行移位;將所述移位後的與多個校驗節點相關的多個邊消息提供給所述多個位/校驗處理器進行隨後的位節點處理。
6.根據權利要求5所述的解碼器,其特徵在於,所述解碼器進一步包括一個量度發生器,接收對應LDPC編碼信號的多個符號的I、Q值,並從中生成多個位量度。
7.根據權利要求5所述的解碼器,其特徵在於,所述解碼器進一步包括一個輸出處理器,用於從對應最近更新的與所述多個位節點相關的多個邊消息的所述多個位/校驗處理器中接收軟輸出,並隨後作出硬判決,從而生成所述LDPC編碼信號第一符號和第二符號中的至少一個的位最佳估計值。
8.一種解碼LDPC編碼信號的方法,所述方法包括接收對應LDPC編碼信號第一符號的第一I、Q值,並從中生成第一組多個位量度;接收對應LDPC編碼信號第二符號的第二I、Q值,並從中生成第二組多個位量度;存儲所述第一組多個位量度和所述第二組多個位量度;支持雙埠存儲器管理,從而在接收所述第二組多個位量度的同時輸出所述第一組多個位量度;支持雙埠存儲器管理,從而在接收第三組多個位量度的同時輸出所述第二組多個位量度;連續地接收所述第一組多個位量度、所述第二組多個位量度和所述第三組多個位量度;執行包括位節點處理,更新與多個位節點相關的多個邊消息,和校驗節點處理,包括更新與多個校驗節點相關的多個邊消息;經過位節點處理後,存儲所述與多個位節點相關的多個邊消息;經過校驗節點處理後,存儲所述與多個校驗節點相關的多個邊消息;將所述與多個位節點相關的多個邊消息移位至合適的配置以進行隨後的校驗節點處理;將所述與多個校驗節點相關的多個邊消息移位至合適的配置以進行隨後的位節點處理。
9.根據權利要求8所述的解碼方法,其特徵在於,所述方法進一步包括接收對應最近更新的與所述多個位節點相關的多個邊消息的軟輸出,並隨後作出硬判決,從而生成所述LDPC編碼信號第一符號和第二符號中的至少一個的位最佳估計值。
10.根據權利要求8所述的解碼方法,其特徵在於,所述方法進一步包括接收對應最近更新的與所述多個位節點相關的多個邊消息的軟輸出;確定用於生成LDPC編碼信號的LDPC碼的多個校正子中的每一個是否等於零。
全文摘要
本發明公開了一種LDPC解碼器及解碼LDPC編碼信號的方法。本發明提供的解決方案比其它可能的解決方案更簡單、更小,複雜度更低。在解碼器的前端附近使用桌球存儲結構(或虛擬雙埠存儲結構)結合量度發生器,可實現並行的位/校驗節點處理。智能運算的桶形移位器與消息傳送存儲器配合,該消息傳送存儲器可存儲更新後的與校驗節點相關的邊消息以及更新後的與位節點相關的邊消息。使用有效的尋址方案可以允許在同一存儲結構中存儲兩種與位節點相關的邊消息(1)對應信息位的邊消息;(2)對應奇偶校驗位的邊消息。此外,智能設計的硬體宏塊可在解碼器設計內進行多次初始化,以支持更高的設計效率。
文檔編號H03M13/00GK1822509SQ200510108919
公開日2006年8月23日 申請日期2005年9月28日 優先權日2004年10月4日
發明者豪·西恩·特, 凱利·布賴恩·卡梅倫, 巴中·申 申請人:美國博通公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀