TWI419481B - 低密度奇偶檢查碼編解碼器及其方法 - Google Patents

低密度奇偶檢查碼編解碼器及其方法 Download PDF

Info

Publication number
TWI419481B
TWI419481B TW098146070A TW98146070A TWI419481B TW I419481 B TWI419481 B TW I419481B TW 098146070 A TW098146070 A TW 098146070A TW 98146070 A TW98146070 A TW 98146070A TW I419481 B TWI419481 B TW I419481B
Authority
TW
Taiwan
Prior art keywords
parity check
low density
density parity
storage device
matrix
Prior art date
Application number
TW098146070A
Other languages
English (en)
Other versions
TW201123745A (en
Inventor
Yeong Luh Ueng
Yu Lun Wang
Original Assignee
Nat Univ Tsing Hua
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nat Univ Tsing Hua filed Critical Nat Univ Tsing Hua
Priority to TW098146070A priority Critical patent/TWI419481B/zh
Priority to US12/870,226 priority patent/US8392795B2/en
Publication of TW201123745A publication Critical patent/TW201123745A/zh
Priority to US13/752,879 priority patent/US8839077B2/en
Application granted granted Critical
Publication of TWI419481B publication Critical patent/TWI419481B/zh

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • H03M13/1188Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal wherein in the part with the double-diagonal at least one column has an odd column weight equal or greater than three

Description

低密度奇偶檢查碼編解碼器及其方法
本發明相關於一種低密度奇偶檢查碼編解碼器(LDPC Codec),特別是相關於一種低複雜度(low complexity)以及多模式(multi-mode)的低密度奇偶檢查碼編解碼器;本發明另相關於該低密度奇偶檢查碼編解碼之方法。
低密度奇偶檢查碼(low-density parity-check codes,簡稱LDPC)是一種錯誤更正碼(error correction code),應用於具雜訊通道(noisy channel)傳輸信息之編解碼。LDPC碼C係由一稀疏奇偶檢查矩陣(sparse parity-check matrix)H所定義。LDPC碼因對應之奇偶檢查矩陣(parity-check matrix,簡稱PCM)H內的「1」密度低,故名為「低密度」(low-density)。此特性使其在解碼動作上可降低複雜度。由於其優異的改錯效能,次世代的通道編碼技術多採用LDPC碼,例如IEEE802.16e之無線都會區域網路(Worldwide Interoperability for Microwave Access,簡稱WiMAX)。
WiMAX標準採用準循環LDPC碼(quasi-cyclic LDPC,簡稱QC-LDPC),為區塊(block)型的錯誤更正碼。於定義一個QC-LDPC碼C,通常需要定義與其對應的奇偶檢查矩陣H。H可表示為一個大小為M×N(M by N)的矩陣,其可由一個大小為Mb×Nb的二進位基底矩陣(binary base matrix)Hb所展 開,其中M=z×Mb以及N=z×Nb,而z為一正整數,稱為展開因子(expansion factor)。於Hb矩陣中,每一個對應0(zeros)的位置皆可為一個z×z之零矩陣(zero matrix)所取代,而每一個對應1(ones)的位置皆可為一個z×z之排列矩陣(permutation matrix)所取代。該z×z之排列矩陣(permutation matrix)係將一個單位矩陣(identity matrix)循環右移(cyclically right shit)所得。第一圖顯示一個奇偶檢查矩陣H的表示法,如上所述,矩陣元素Pi,j可為一個z×z之排列矩陣(permutation matrix)或者一個z×z之零矩陣(zero matrix),其中i為Hb矩陣的列索引(row index)且j為Hb矩陣的行索引(column index)。
因每一排列矩陣由一單位矩陣循環右移而得,因此二進位基底矩陣以及由排列矩陣取代之資料可以相互結合,而形成單一較為簡潔之原型矩陣(prototype matrix)Hbm,其與基底矩陣Hb具有相同的大小,每一個基底矩陣Hb的0(zeros)由一個空白或者負值,例如-1取代,表示一個完全零所構成之零矩陣;而每一個基底矩陣Hb的1(ones),則由其循環右移的位移量所取代。該原型矩陣Hbm亦可直接展開而得奇偶檢查矩陣H。第二A圖以及第二B圖分別顯示一個原型矩陣Hbm以及一個奇偶檢查矩陣H之範例,其中第二B圖中的03x3表示一個3×3之零矩陣。
WiMAX標準包括1/2、2/3A、2/3B、3/4A、3/4B、5/6六種碼率(code rates),或者稱為類別(class);對於每一種碼率,WiMAX標準提供一原型矩陣,因此於WiMAX標準下共有六種原型矩陣。第三圖顯示WiMAX標準下,其中當z為96而 碼率為5/6時之原型矩陣Hbm,其中z為展開因子。於WiMAX標準下,每一個類別包括19種不同碼長之QC-LDPC碼,分別由24,28,32,...,96等19個不同之展開因子z所指定,其中碼長可表示為24z。因此於WiMAX共有6x19=114種不同之QC-LDPC碼。
因WiMAX標準係根據碼率來個別指定不同之原型矩陣;進一步而言,於WiMAX標準下,LDPC碼係以碼率以及碼長為參數而指定。因此,設計一種具有彈性的硬體設備,使大部份的硬體資源可在不同WiMAX模式(modes)下重複使用(re-use)且使硬體建構簡化乃是一重要的課題。
LDPC碼經常以圖式的方式表示,稱為Tanner圖;Tanner圖為一偶圖(bipartite graphs)。第四A圖以及第四B圖分別顯示一個LDPC碼以及其所對應之Tanner圖。一個PCM矩陣H的每一列相對應於一個檢查節點(check node),而其每一行則相對應於一個變數節點(variable node);第四A圖之PCM矩陣H共有9行以及6列,因此其所對應之Tanner圖第一層有9個變數節點,以圓圈內的數字表示對應之行索引;而第二層則有6個檢查節點,以方塊內的數字表示其對應之列索引。PCM矩陣H中(i,j)元素(elements)為1者代表第i個檢查節點與第j個變數節點之間存在一稜(edge)相連。
LDPC碼的錯誤更正效率與迭代(iteration)次數呈正相關,因此對於不佳之通道,必須進行較多之迭代,以期提高錯誤更正效率。為了增加部分平行(partially-parallel)解碼器的產出量(throughput),完成一次迭代的處理週期(processing cycles) 的數目或是需要獲致一個給定位元誤碼率(bit error rate,簡稱BER)所需要迭代數目必須減少。習用技藝中提出一種重疊解碼(overlapped decoding),將變數節點(variable node)以及檢查節點(check node)的運算(operations)排程(scheduling),使兩者其中的一些部分可以同步(concurrently)執行,因此可減少處理週期的數目。尚有習用雙相位信息傳遞(two phase message passing,簡稱TPMP)解碼,變數節點僅能使用上一次迭代所產生之檢查節點至變數節點(C2V)信息來進行更新。因此,需要較多之迭代次數,才可獲致一個給定的BER效能。
本發明之一目的在於提供一種低複雜度以及多模式的奇偶檢查碼編解碼器以及其方法,將編碼和解碼運算分割為基本的分層、子層和任務,並且利用低密度奇偶檢查碼的準循環結構,使不同碼率以及碼長的LDPC碼可共享硬體架構,因此可減少硬體建構上的複雜度。
本發明之另一目的在於提供一種可減少迭代數量的低密度奇偶檢查碼編解碼器以及其方法,其可使用同一次迭代所產生之信息進行其他信息之更新,因此僅需要約半數之迭代,即可獲致一個給定的BER效能。
本發明之再一目的在於提供一種具有早期終止的低密度奇偶檢查編解碼器以及其方法,其可減少解碼迭代運算次數,並與分層解碼相容,因此可使系統所消耗的功率減少。該早期終止並與本發明之編碼器共享部分的硬體資源,因此亦可降低 硬體建構之複雜度。
根據本發明一實施例之低密度奇偶檢查碼編解碼方法,其包括:對於一低密度奇偶檢查碼之一奇偶檢查矩陣以一列排列方式進行分層,使得該奇偶檢查矩陣包括複數個分層;以列為單位分割每一該些分層為複數個子層;以一無序(out-of-order)重新排列分割每一該些子層為複數個任務,而每一該些分層包括該些任務;藉以一序列(sequential)方式處理每一該分層之該些任務。因以任務為處理單元,因此可適用於WiMAX的各種類別以及不同碼長。
根據本發明一實施例之低密度奇偶檢查碼編解碼器,其包括:複數個位址產生器;一第一儲存裝置,該第一儲存裝置之存取位址係由對應之位址產生器所提供;一第一路徑網路;一第二路徑網路;以及複數個處理單元,與對應之第一儲存裝置以該第一路徑網路電性相連,用以進行一迭代解碼運算;每一該處理單元之複數個解碼運算輸出值可回饋並經由第二路徑網路儲存至該第一儲存裝置。
本發明並包括一早期終止,其利用上述迭代解碼運算中的運算值並經進一步計算,如該計算輸出值滿足一定限,則可提早停止該迭代解碼運算,因此可減少迭代處理次數,使功率耗損降低。此外,本發明更包括一編碼器,其與該早期終止共享部分的硬體,因此可簡化硬體建構。
以下的說明以及範例用以解釋本發明的細節。然,熟習 此項技藝之人士應可輕易瞭解,在本發明之實施例所涵蓋下,所述及之該些實施例應有相當的變化以及改良。因此,所述的實施例並不用以限制本發明的範圍。以下說明將本發明分為數個部份分別詳述,但本發明並未限定須如所切割部分分別實施,抑或選擇某些特定區塊組合而實施,分割說明僅為方便陳述與解釋。此外,為方便說明,以下實施例以應用於WiMAX為範例,但本發明並未限定於其實施僅得於WiMAX。
[LMPD-ICM與任務(tasks)]
考慮達成BER效能(performance)的快速收斂(fast-converge)以及多模式(multi-mode),例如適用於WiMAX所有的114種QC-LDPC碼,本發明採用一種改良的分層解碼,稱為「使用相同核心矩陣的LMPD」(LMPD using an identical core matrix,簡稱LMPD-ICM)。
根據本發明之LMPD-ICM,將一QC-LDPC碼C的PCM矩陣H的列切割為z層,並重新進行列排列(row permutation),其中第 l 層以H l ’表示,其包括PCM矩陣H的第 l 列、第z+ l 列、....、以及第(Mb-1)z+ l 列,而0≦ l <z且Mb為基底矩陣Hb之列數。上述之分層方式僅為一實施例,實務上的分層無須以上述者為限。例如,於另一實施例中,H l ’的第 l 層可包括PCM矩陣H的第( l +a0)mod(z)列、第z+( l +a1)mod(z)列、....、以及第(Mb-1)z+( l +aMb-1)mod(z)列,其中0≦ l <z,a0、a1....至aMb-1可選自非負整數,而Mb為該奇偶檢查矩陣之一基底矩陣的列數。之後,去除該矩陣H l ’之零行,則可得到第 l 層之核心矩 陣(core martix)H l 。以第二B圖舉例說明,其顯示一個PCM矩陣H,將該矩陣H經過上述之重新列排列,可得如同第五A圖所顯示三個矩陣H0’、H1’和H2’之H l ’;其中以矩陣H0’為例,其包括原PCM矩陣H之第0、3、6、9、以及12列,矩陣H1’以及H2’所包含的列數可以此類推。進一步將該矩陣H0’之零行刪除,則可得如第五B圖所顯示之核心子矩陣H0。核心子矩陣H1以及H2可依同樣方法分別由H1’以及H2’獲得。
本發明之LMPD-ICM的分層切割,其目的在於將QC-LDPC碼之PCM矩陣簡化,減少硬體的處理或儲存配置。所得之H l 為由QC-LDPC碼的碼位元(code bits)而來之較精簡型式。須說明的是,0≦ l <z,該些核心矩陣H l 為彼此之間的行排列版本(column-permutated versions)。另外,因PCM矩陣H之行順序與解碼無相關,雖進行LMPD-ICM的列排列,但PCM矩陣的簡化或重新排列對解碼並無影響。
再者對於WiMAX而言,在同一類別下的LDPC碼,其核心矩陣幾乎相同,致使WiMAX於同一類別下的19種不同LDPC碼可共享相同的路徑網路(routing network)。此一性質使本發明於建構解碼之路徑網路可加以簡化,致使所有的分層可共享相同的路徑網路(routingnetworks)。此外,由第五B圖的核心子矩陣可發現,原型矩陣之雙對角結構(dual diagonal)仍保留(B部分之最後一行與C部分),此一特性將有利於分層編碼(layered encoding)上的運用,請容後詳述。
本發明使用上述之LMPD-ICM作為解碼器之建構基礎。 第一表整理出WiMAX下之6種不同類別之相關參數,其顯示WiMAX於不同類別下,分層下之列數皆不同,也就是層尺寸(layer size)皆不相同。考慮到硬體上的重複使用性,必須將所有WiMAX的不同類別的層尺寸單一化。本發明根據不同類別的層尺寸,選擇一個最小的層尺寸作為標準,也就是4。對於層尺寸大於4的類別,利用最小層尺寸4,將分層再度切割為子層(sub-layer),致使每一類別的子層的層尺寸皆不大於4。其中對於5/6碼率,其分層之層尺寸恰為4,因此其子層等於分層。
第六圖顯示WiMAX不同類別的分層(layers)、子層(sub-layers)、任務(tasks)以及任務處理序列(processing sequence)。以1/2碼率為例,其原型矩陣Hbm為一個12×24之矩陣,將之PCM以LMPD-ICM重新進行列排列,並刪除零行,可得一個核心矩陣。進一步刪除該核心矩陣元素中為零者,可得一個約略為12×7之分層。因對1/2碼率而言,其層尺寸為12,大於所需要之標準4,因此以4為基準,將該分層再度切割為子層,令每一個子層包括4列,一個12×7之分層矩陣可分割成為三個4×7之子層矩陣。第六圖所顯示之子層、任務以及任務處理序列上的標號,表示其對應之索引號。
第一表中的列權重(row weights)為每一列所對應之行數,其中以大括號內的數字代表列權重的集合。基於第一表與第六圖,進一步觀察到WiMAX下不同類別之列權重都相近於4的倍數,因此選擇4作為子層進一步切割為任務(task)的基準。此舉可使所有不同類別的任務有相同或相似之尺寸度,因此以任務作為處理單元,使所有類別皆可重複利用單一的硬體架構(unified architecture),減少硬體架構之複雜度。
舉例說明任務之分割,再度回到第六圖的1/2碼率之子層,以4為基準可將一個4×7之子層矩陣切割為兩個4x4之任務矩陣,不足的元素可以一個臨界值(limit value)的方式填充。對於其他的WiMAX類別亦得以相同方式切割,因此可得到如同第六圖下所有類別的任務。
本發明之分層、子層、以及任務的列數代表第四B圖的Tanner圖中檢查節點之數量,而列權重(row weights)則代表連接到一個檢查節點的變數節點數量。因此,藉由簡化的任務可簡化檢查節點與變數節點的對應連接關係,而對於不同類別之 單一化任務可簡化硬體建構,使不同類別仍可重複利用單一的硬體架構(unified architecture)處理任務單元。此一部分,容後詳述。
第六圖顯示WiMAX下不同碼率之任務分割,以及該些任務之處理序列(processing sequence)。以1/2碼率為例,其第 l 層任務的處理順序為任務11、任務12、任務21、任務22、任務31以及任務32,接下來為第 l +1層的任務11,以此類推。因此,一個分層必須有6個週期(cycles)執行運算,而需要6z週期完成具有1/2碼率的LDPC碼的一次迭代,其中z為展開因子。
須解釋的是,子層切割為任務的過程須進一步考慮到硬體的配置。以第七圖舉例說明,5/6碼率且z=24之原型矩陣Hbm共有24行,對應每一行使用一個記憶體區塊(memory block)儲存對應的資料,因此共有24個記憶體區塊。
第七圖中原型矩陣之該80個非負元素(non-negative elements)被分割至五個組群(矩陣),每一個組群(矩陣)包括16個非負元素。於一個週期內,一個任務矩陣的16個值(更進一步而言為APP值,容後詳加說明)必須同時讀取完成。惟,受限於一個週期內,一個記憶體區塊僅能提供一個值,因此該16個值的存取必須同時分散於24個記憶體的不同區塊造成無序處理(out-of-order processing),如第七圖之箭頭所顯示。一般使用電腦來進行該等搜尋,第七圖同時顯示經電腦排序之碼率5/6且z=24的5個任務,標示為TASK1、TASK2、TASK3、TASK4、以及TASK5。
[對應不同展開因子(expansion factors)]
於WiMAX標準下,QC-LDPC碼除了由碼率指定(specify)外,展開因子z亦為一指定參數,展開因子可為24,28,32,....96等19種。第七圖顯示與第三圖同為WiMAX下5/6碼率的PCM矩陣。惟,第七圖之展開因子z為24,而第三圖的展開因子z則為96。WiMAX標準對於相同碼率但不同碼長之LDPC碼,其於原型矩陣之(i,j)非負元素可利用下列式(1)進行轉換:
其中s(i,j,96)為5/6碼率於z=96的原型矩陣中第i行與第j列的非負元素,而z參數的值可為24,28,32....,以及96之其中之一。使用式(1),可以將第三圖轉換成第七圖之矩陣。對於其他碼率的LDPC碼亦可使用相似的方式,以進行不同碼長之間的轉換。
至此,本發明達成WiMAX下對於不同碼長之LDPC碼轉換,並可根據上述,將一個指定碼率下的PCM矩陣H分層切割,並進一步分割以簡化為任務。此舉使得WiMAX下每一個類別以及碼長有相同的任務單位,因此可利用相同的硬體架構處理簡化後的任務,俾使硬體的複雜度減少。
[解碼演算]
本發明採用「使用偏移最小和演算法之分層信息傳遞解 碼(Layered Message Passing Decoding using Offset Min-Sum Algorithm,簡稱LMPD-OMSA)」作為解碼演算,其於分層信息傳遞解碼(Layered Message Passing Decoding,簡稱LMPD)中採用偏差最小和演算法(Offset Min-Sum Algorithm)。惟,本發明之精神和原理可應用其他可能之解碼演算法,並不限定於上述者。
習用的TPMP(Two-phase Message Passing)將一次迭代的解碼計算(decoding operation)分割為檢查節點計算(check-node-operation)以及變數節點計算(variable-node-operation)兩相(phases),其中令Rij (k)表示由第i個檢查節點至第j個變數節點於第k次迭代中所產生之檢查至變數信息(check-to-variable message,簡稱C2V)。相似地,可令Qji (k)表示由第j個變數節點至第i個檢查節點於第k次迭代中所產生之變數至檢查信息(variable-to-check message,簡稱V2C)。於第k-1次迭代的檢查節點計算相(phase)中,所有Tanner圖中檢查節點的C2V信息Rij (k-1)皆計算出,並且傳遞至所對應之變數節點,供變數節點運算以計算第k次迭代中的更新V2C信息Qji (k)。因此,於習用TPMP中,第k次迭代變數節點僅能使用上一次(k-1)迭代所產生之C2V信息Rij (k-1)來進行更新。
反觀LMPD,一個PCM矩陣H的列(相當於檢查節點)分割為L組群(分層),每一個組群包含ML個列數(相當於檢查節點數量),因此L×ML=z×Mb。首先,先對所有i值和所有屬於IR(i)的j值(以j IR(i)表示),將C2V信息Rij (0)初始化為 0(zero);其中IR(i)表示與檢查節點i相連之變數節點之索引集合(index set)。之後,對第0層、第1層、...、第L-1層,以序列(sequentially)方式進行檢查節點以及變數節點運算以完成一次迭代。藉此LMPD可以使用同一次(k)迭代下所產生之C2V信息來進行V2C信息Qji (k)的更新。因此,相較於TPMP演算,LMPD僅需要約半數之迭代,即可獲致一個給定BER的效能。容後有更進一步之說明。
LMPD於第k次的迭代,在第 l 層對於變數節點以及檢查節點所進行之運算如下:
1.第 l 層之變數節點運算:
對於第 l 層與檢查節點i相關之每一變數節點j,也就是 l ×mL≦i<( l +1)×mL,對應每一個檢查節點i的Qji (k)可由下列式(2)計算:
其中λj為變數節點j之可靠度(reliability)值,而IC(j)表示相連於變數節點j之檢查節點的索引集合。
2.第 l 層之檢查節點運算:
對於第 l 層的檢查節點i,對應每一個變數節點j的Rij (k) 可根據下列式(3)計算:
其中β為一個正的定值(positive constant),且
其中sgn表示正負號函數。
於第k次迭代的最末,第j個位元(變數節點)的後驗機率(a posteriori probability,簡稱APP)值Λj (k)為:
由式(5)與式(2),可得下列式(6): 則式(6)可簡化為式(7): 綜上所述,可整理出LMPD適用於硬體建構的形式。對第 l 層變數節點運算以及檢查節點運算可分別根據式(7)以及式(3)-(4)而得。於第 l 層對第k次的迭代,Λj, l (k)值可以式(8)計算出:
若於第 l 層,一個特定的變數節點j僅與一個檢查節點i相連,則第(8)式可簡化為:
相同地,若於第 l 層,一個特定的變數節點j僅與兩個檢查節點ii以及i2相連,則第(8)式可簡化為:
[硬體架構概述(overview)]
第八圖為本發明之一實施例的硬體控制方塊圖,其顯示根據本發明之一實施例所達成之硬體建構,但並不為其所限,且第八圖僅進行功能性簡化說明,因此並未標示各方塊之確實數量。
如第八圖所顯示,本發明包括一位址 ROM(address-read-only memory)1,利用本發明對PCM矩陣的分層與任務分割(partition),以及LDPC碼的準循環結構,該位址ROM 1可簡化所儲存的資料容量,並藉位址產生器(address generator)2計算產生其他所需的位址,讀取或寫入一APP記憶體3,該APP記憶體為一儲存裝置,其包括複數個記憶體區塊。該位址ROM1係用以儲存該APP記憶體所需之初始位址(initial addresses)。基於LDPC碼的準循環結構以及分層解碼,同一類別可使用固定的連接方式(interconnections),如第八圖所顯示一第一路徑網路4,連接對應的一變數節點單元(variable node unit,簡稱VNU單元)5。於該變數節點單元5中,由APP記憶體3所讀取之一Λj, l -1 (k)值與上一次迭代計算所產生之R ij (k-1) 值,根據上列式(7)可得Qji (k)值。計算出的Qji (k)值可於一檢查節點單元(check node unit,簡稱CNU單元)6利用上述的式(3)與(4)計算出所需要之R ij (k) 值,並且存取入一R記憶體7,請容後詳細說明。再者,變數節點單元5亦利用上列式(8)計算出Λj, l (k)值,並經一第二路徑網路10寫入對應之APP記憶體3區塊。第八圖中之VNU單元5以及與CNU單元6可視為一處理單元12,以虛線表示。
本發明並包括一早期終止(early termination)8,其輸入一終止定限(termination threshold),例如第八圖所顯示以展開因子z作為該終止定限。當滿足終止條件下,可由一控制器11提早終止迭代運算次數。該早期終止8與本發明之一編碼器9共享部分的硬體資源,如第八圖所顯示,因此可減少硬體建構複雜度並降低功率損耗,亦容後詳細說明。
[位址產生器與APP記憶體]
第六圖顯示5/6碼率之任務的處理順序分別為第 l 層的任務1、任務2、任務3、任務4、任務5,之後為第 l +1層的任務1、任務2....,以此類推。基於PCM矩陣的準循環特性,第 l 層的任務1與第 l +1層的任務1將來自於相同之APP記憶體區塊,僅是位址(address)上的差異。以第七圖的任務1(TASK1)舉例說明,於第0層中TASK1的第0列,提供予VNU0的第3輸入,APP記憶體第1區塊的第6個位址的APP值須被存取,表示為6(1)。對第1層中TASK1的第0列,提供予VNU0的第3輸入,則被存取的APP值將於相同的APP記憶體區塊向右平移一個位址,也就是第1區塊的第7個位址須被存取,表示為7(1),並以此類推。
綜上所述,基於WiMAX之LDPC碼的準循環特性,如第0層的起始位址為s(j),表示來自第j個記憶體區塊(memory block)的位址s,則第 l 層的位址可通則表示為(s(j)+ l )mod(z),其中mod表示模數(module)。須瞭解到的是,當展開因子z改變時,僅有初始位址(initial address)將隨之改變,但記憶體區塊的索引號j仍維持不變。
第九圖顯示本發明於5/6碼率之一實施例的硬體方塊圖,其中左上方顯示位址產生器2以及APP記憶體3,其中的APP記憶體3為一儲存裝置,且該APP記憶體3包括複數個記憶體區塊。回到第七圖,5/6碼率且z=24之原型矩陣共有24行,每一行須使用一個記憶體區塊(memory block)儲存對應 的資料,因此第九圖所顯示之APP記憶體3包括24個記憶體區塊,標示為APP Memi,0≦i<24,每一個該APP記憶體區塊用以儲存對應PCM矩陣的一個區塊行(block column)的APP值。24個APP記憶體區塊分別對應24個位址產生器2,標示為Address Generatori,0≦i<24。經由所對應的位址產生器2以及第一路徑網路4,16個APP值Λj, l -1 (k)可以由APP記憶體3讀取。此16個APP值經由VNU單元5及CNU單元6的運算後被更新為Λj, l (k),再經由第二路徑網路10寫入APP記憶體3。
根據第六圖,對於5/6碼率而言,處理一個分層需要5個週期(cycles)執行運算,而需要5z週期完成5/6碼率的一次迭代,其中z為展開因子。因此,第九圖中的每一個位址產生器2包括五個移位暫存器21。
根據上述,基於WiMAX之LDPC碼的準循環特性,第 l 層的位址可由第0層的位址s(j)推算並表示為(s(j)+ l )mod(z),其中mod表示模數(module)。因此,參見第九圖,移位暫存器21輸出一位址x至APP記憶體3,該位址x同時經一移位功能單元22的(x+1)mod(z)計算,求得下一分層(加上1)的位址,並且回饋至五個移位暫存器21的輸入端。
另外,因處理每一個任務的延遲(latency)乃是固定,是故每一個任務的讀取以及寫入的時間差維持相同。因此,根據一個位址產生器2中的移位暫存器(shift register)一階段之讀取位址,即可計算出寫入位址。但要注意的是,當一個任務寫入APP記憶體3,其對應寫入位址比較其讀取之際已經增加三 次,因每一個任務的處理延遲為12,較處理一分層所需之週期(也就是5個暫存器)的兩倍為大,因此必須有一個(x’-3)mod(z)的功能單元來計算出正確的寫入位址。配合第九圖的位址產生器2所顯示,每一個位址產生器2包括一寫入位址功能單元23,因每一寫入位址的寫入處理延遲為12,對於一位址x’計算出(x’-3)mod(z),並以該計算位址作為APP記憶體3的寫入位址。每一個位址產生器2也包括一索引計算器(Index Calculator)24,可根據上列式(1)來計算在不同展開因子z時的初始位址。
[CNU單元以及VNU單元]
如第六圖顯示,5/6碼率的每一分層共有4列,而每一子層亦有4列,也就是分層等於子層。因每一個子層中所含的列數即為其解碼平行度,因此對於5/6碼率而言,其解碼平行度為4,其他碼率之解碼平行度如第一表所整理。5/6碼率之PCM矩陣H之列權重為20,因此每一列將與20個V2C信息以及20個C2V信息相關。每一個週期下,與同一列相關連的四個V2C信息被送入相同之CNU單元6進行處理,因5/6碼率的解碼平行度為4,因此需要四個CNU單元6來處理每一分層的四個列。
如第九圖所顯示,本發明於5/6碼率之一實施例包括四個CNU單元6,標示為CNUi且0≦i<4。於四個VNU單元5,利用相關連的APP值Λj, l -1 (k)以及C2V信息Rij (k-1)計算出總數16個的V2C信息Qji (k),並且將Qji (k)值分別送入4個CNU單 元6。每一個該CNU單元6可管線化為四個階段。於第一階段,四個V2C信息的絕對值| Qji (k)|送入一個4個輸入的比較單元,簡稱CMP4單元61。該CMP4單元61包括六個比較器(comparators)(未顯示),因四個輸入兩兩相比,故牽涉C2 4=6個比較器,用以在4個輸入值| Qji (k)|中選擇兩個最小值。
於第二階段,一個簡化的CMP4單元,簡稱S-CMP4單元62,該S-CMP4單元62僅包括三個比較器(未顯示),用以迭代地找出在四個輸入中的最小的兩個值,其中四個輸入的兩個值為由S-CMP4單元62的輸出回饋所得。因S-CMP4單元62的四個輸入值已部份排序(partially ordered),因此S-CMP4單元62的比較器數量可較上一階段減少。
於第三階段,一個正負號單元(sign unit)631根據上列式(4)來計算新的C2V信息Rij (k)的正負號。於此階段,基於式(3)的兩個最小值的偏移補償(offset compensation)同時於兩個第一減法器632中完成。本階段的輸出為壓縮之更新C2V信息Rij (k),其同時被送至一R記憶體7中對應的一壓縮C2V記憶體區塊71,並以壓縮格式儲存,之後可經一解壓縮器72解壓縮,並作為下一次迭代之使用。該R記憶體7數量相等於解碼平行度,標示為RMemi且0≦i<4。於最末一個階段,C2V計算器(calculator)64同步計算出20個C2V信息Rij (k)。該些C2V信息將被送至VNU單元5,用以更新APP值。
每一個該CNU單元6迭代地比較4個進入的V2C信息Qji (k)的大小(magnitude),以計算20個C2V信息。之後,20個更新之C2V信息Rij (k)值同時送入相對應的VNU單元5。因須 有五個週期以處理一個分層,因此需要總數5z個週期以完成一次迭代。
再度回到第九圖,其顯示本發明於5/6碼率之一實施例包括四個VNU單元5,標示為VNUi且0≦i<4,並於每一該VNU單元5,利用相關連的APP值Λj, l -1 (k)以及C2V信息Rij (k-1),根據上列式(7)於第二減法器51中,可算出總數16個的V2C信息Qji (k)。如上所述,該V2C信息Qji (k)可送入前述的4個CNU單元6;另一方面,該V2C信息Qji (k)亦送入每一VNU單元5的先進先出緩衝區500以進行所需之變數節點運算。
第十A圖顯示一個變數節點處理器(variable node processor,簡稱VNP)的硬體架構示意圖,其包括四個VNU單元5以及一個平行更新單元(parallel-update unit)510,其中該平行更新單元510是用以克服資料衝突(data hazard)。如第十A圖所顯示,每一個VNU單元5可管線化為十個階段,且第i階段以STi表示。該些階段STi用以計算出V2C信息Qji (k)、暫時儲存V2C信息、並且更新APP值。如第七圖,因5/6碼率包括五個任務矩陣,因此VNU單元5運算可分為五個任務。第十B圖顯示五個任務在VNP於5/6碼率之解碼操作時序圖(timing diagram),其中TASKi表示第i個任務,且1≦i≦5。
請參見第十A圖,與一個任務相關之APP值由APP記憶體3讀出後,經第一路徑網路4,送至VNU單元5的ST1 階段。該ST1階段由該第一減法器51所執行,根據式(7)由對應的APP值Λj, l -1 (k)減去上一次迭代之C2V信息值Rij (k-1),求得V2C信息值Qji (k)
VNU單元5的ST2至ST10階段皆於該先進先出緩衝區500內執行。於ST2階段,V2C信息值Qji (k)被送入ST3階段以及相對應之CNU單元6。其中ST2至ST9階段之暫存器(未顯示)皆係於對應之CNU單元6計算出C2V信息值Rij (k)時,暫時儲存V2C信息,容後詳述。
此外,因五個任務係以序列(sequence)方式執行,因此相同分層之五個任務必須於連續之五個階段執行。如第十B圖所示,當TASK1於ST9(相等於TASK5於ST5),更新之C2V信息Rij (k)值已可加以利用(available)。因此,與五個任務(或者一個分層)相關之APP值將根據上列式(9),平行同步更新。換言之,與TASK1、TASK2、....、TASK5相關之APP值分別於對應之ST9、ST8、....、ST5階段更新。另外,第十B圖亦顯示一個任務於不同時序所執行之操作;其中R代表由APP記憶體3讀取APP值;B代表一個緩衝階段;Q代表以APP值減去C2V值R計算出V2C值Q;W代表由第二路徑網路將APP值寫回APP記憶體3;Π1代表第一路徑網路;而FIFO代表進入VNU單元5之先進先出緩衝區500。第十B圖同時以灰階區塊顯示於該STi階段中,APP值已經更新。
如前所述,ST2至ST9階段之暫存器係暫時儲存V2C信息,直到所對應之CNU單元6計算出C2V信息Rij (k)。因此,每一該ST5至ST9階段包括一加法器52以及一多工器53,如 C2V信息值Rij (k)尚未能加以利用,則該多工器53將選擇V2C信息值Qji (k)。然,當C2V信息值Rij (k)已經被對應之CNU單元6計算出,則將根據式(9)以該加法器52將V2C信息值Qji (k)與C2V信息值Rij (k)疊加以獲得被更新的APP值Λj, l (k),此時多工器53將選擇疊加結果傳遞至下一級。最後,與每一任務相關連之更新APP值Λj, l (k)經第二路徑網路10寫回APP記憶體3。
[路徑網路(routing network)]
該第一路徑網路4包括16個多工器(multiplexors),分別作為四個VNU單元的16個輸入。因5/6碼率涉及五個任務並有五個APP記憶體3與該多工器(未顯示)相連,因此每一個該多工器為五選一(5-to-1)。舉例說明,第七圖顯示五個任務TASK1、TASK2、TASK3、TASK4以及TASK5的第一行與第一列元素分別為0(21)、0(15)、1(14)、20(12)、以及21(8),該些位址與第0個VNU單元(VNU0)的第0個輸入相關。因此多工器連接於APP記憶體3的第21區塊、第15區塊、第14區塊、第12區塊以及第8區塊。
相似於第一路徑網路4,第二路徑網路10包括24個多工器,每一個該多工器(未顯示)包括至多四個輸入,因為一個APP記憶體區塊僅最多對一個分層貢獻四個APP值。注意到,一個分層的行權重(column weight)未超過4。
本發明之路徑網路4,10建構可應用於WiMAX同一種類別下的19個不同碼,因當z改變時,APP記憶體區塊與VNU 單元5的連接方式(interconnections)並未改變。此外,須注意到第九圖中匯流排上數字表示匯流排上信息的數量。
[早期終止與編碼器]
請參見第九圖,當每一該VNU單元5更新APP值後,分別儲存於VNU單元5中,對應TASK1至TASK5的ST10至ST6階段該些APP值的正負號,分別以4個列總和計算器(row-sum calculators)81以及一個零檢查單元(zero-check unit)82,確認是否滿足奇偶檢查限制(parity-check constraints)。於該零檢查單元82中檢查,當列總和計算器81的輸出為0(zero)時,則該分層被定義為一有效分層(valid layer),並於第九圖之一累加器(accumulator)83計算有效分層的連續數量。該累加器83輸入一終止定限(termination threshold),例如相等於展開因子z。如最終連續有z個有效分層,代表每一分層之列總和計算器81的輸出值皆為0(zero),則解碼的碼字(codewords)被認定為正確,因此解碼器將提前被終止,稱為早期終止(early termination)。因z分層的規律特性(regularity inherent),每一分層可使用相同的列總和計算器81,且同一類別的LDPC碼亦可使用相同之早期終止硬體資源。須注意到的是,對於同一類別下不同展開因子z的LDPC碼,僅須調整終止定限,例如連續的有效層為展開因子z,即可以使用相同的早期終止硬體資源。本發明之早期終止功能可提早終止迭代運算次數,並與上述分層解碼相容。
關於本發明之分層編碼,以下使用第二B圖解釋說明。 該PCM矩陣H可分割為A、B、以及C三個部份,其中A部分的行對應資料位元(information bits),而B和C部分則對應奇偶位元(parity bits)。第二B圖的B部分包括兩個相同的排列矩陣(permutation matrices)(由第0列至第2列,以及第12列至第14列所構成)。一個核心矩陣的行可依照其原本在PCM矩陣H中的位置同樣地分類為如第五B圖的A,B,以及C三個部份。第五B圖的C部分以及B部分最後一行組合一雙對角結構(dual-diagonal structure),該特性可用來有效地進行編碼。
參見第五B圖,對應到一個核心矩陣H0的16個位元vj,j=0,1,...,15滿足由H0’所給定的五個奇偶檢查方程式。如hij表示於核心矩陣H0的(i,j)元素,則:
把五個奇偶檢查方程式相加,可以得到:
基於第五B圖中B部分與C部分之雙對角結構,式(12)左手邊的第三項為0(zero),而式(12)左手邊的第二項為v10,而v10為所欲求得者,因此式(12)可簡化為:
注意到式(13)的右手邊僅涉及信息位元(message bits)。因此,奇偶位元v10可根據式(13)而得。換言之,對於編碼所欲求之奇偶位元,可僅基於信息位元而計算出。對其他z-1個分層(或者核心矩陣)可重複相同的程序,則第二B圖中所有對應PCM矩陣的B部分皆可求得。因核心矩陣的第十位元v10與第11位元v11來自於相同APP記憶體區塊行(B部份),因此在v10求得後,v11亦可隨之求得。之後,涉及一個核心H0矩陣該分層之C部分的其他四個奇偶位元亦可由下列式(14)-(15)所定義之複數個奇偶方程式而得:
其中m=0,1。
對其他z-1分層重複相同的程序,對應PCM矩陣C部分之所有奇偶位元皆可求得。據此,根據分層或者子層,編碼欲求之奇偶位元藉由信息位元可完全計算出。
參見第九圖,上述使用於早期終止8之列總和計算器81亦使用於本發明之該編碼器9。經由強制令相對於奇偶位元之正負號位元輸入為0,列總和計算器的結果即成為Σ9 j=0 vj hij。所得之該些值被送入一奇偶位元計算器(parity-bit calculator)91,並根據式(13)至式(15)求得奇偶位元v10、v11、....v15。奇偶位元計算器91的輸出經該第二路徑網路10儲存於 APP記憶體3。
本發明之一實施例的編碼器9所使用之路徑網路4,10、位址產生器2、以及APP記憶體3皆與解碼運算共享,因此編碼器9的費用耗損可以減少。此外,該編碼器9與早期終止8亦共享部分之硬體資源,因此可減少硬體建構複雜度。
[多碼率(multi-rate)之應用]
為使本發明之硬體應用擴至WiMAX下不同類別(碼率)的使用,第十一A圖顯示一個多模式(multi-mode)位址產生器20。根據第六圖,於WiMAX的六個不同類別下,每一分層的最大處理週期為8,因此第十一A圖顯示8個移位暫存器201。再者,對於多碼率之應用,必須考慮到每一類別對讀取以及寫入有不同之時間差以及位置。舉例說明,對於5/6碼率,因管線化延遲(pipeline latency)較每一分層處理週期數量的兩倍為大,因此參見第九圖,其寫入位址功能單元23之(x’-y)mod(z)中的y值等於3。然對於其他的類別,因延遲較每一分層處理週期數量的兩倍為小,因此該些類別的y值則須設定為2。爰此,如第十一A圖所顯示,該多模式位址產生器20額外包括三個多工器205,用以根據不同類別,選擇適當的暫存器201位址輸出以回饋至一移位功能單元202,以及輸入適當之y值以及適當的暫存器201位址輸出至一寫入位址功能單元203。此外,第十一A圖亦包括一位址多工器206,該位址多工器206可選擇由一索引計算器204計算出之不同展開因子的初始位址,或由該移位功能單元202而來的下一分層之位址。
對於CNU單元6以及VNU單元5,不同類別的差異性在於子層的任務數量。舉例說明,於1/2碼率解碼時,CNU單元6以及VNU單元5的運算每兩個週期重複一次,因每一子層包括兩個任務。第十一B圖顯示一個多模式VNU單元50,其僅顯示ST4至ST9。於多模式VNU單元50,ST5至ST9的五個階段係用以更新APP值。於該5/6碼率之解碼時,該些階段將全數使用,且對於任務TASK1、TASK2、TASK3、TASK4、以及TASK5,分別於ST9、ST8、....、ST5更新APP值。然而,以1/2碼率為例,運算牽涉到一個子層被分割的兩個任務,APP值將於ST8和ST9被更新,因此由ST4階段的輸出直接傳送(forward)至ST8階段的輸入。換言之,於1/2碼率,ST5、ST6、以及ST7階段被跳過(bypass),以減少管線化延遲。因此,於第十一B圖,其包括複數個多工器501,用以因應於不同碼率而選擇須被跳過的階段(STi)。
第十一C圖顯示本發明之一實施例的多模式列總和計算器90。用於5/6解碼時,任務TASK1位於ST10階段時驅動該多模式列總和計算器90,由VNU單元5最後五個階段而來的20個APP值正負號位元送入多模式列總和計算器90。該列總和計算器90包括複數個第一階段互斥或XOR單元901以及一第二階段互斥或XOR單元902,計算出該列所有APP值正負號之一最終互斥或計算值。因為每一類別之子層的任務數目不相同,該些第一階段互斥或XOR單元901的某部分可被忽略。因此,如第十一C圖所顯示,該多模式列總和計算器90可包括複數個多工器903,根據不同類別,將ST6、ST7、 ST8階段,輸入0(zero)使其不作用(disable)。
[效能分析]
根據本發明之一實施例所提供之硬體架構,一個具有早期終止功能的多模式(multi-mode)LDPC碼編解碼器使用一90nm且包含9個金屬層的CMOS製程建構。其中APP值以及V2C信息以7位元量化,而C2V位元則量化為5位元。第十二圖顯示本發明之一實施例所提出碼長長度為2304解碼器之BER結果。圖中同時顯示浮點(floating-point)BER以及固定點(fixed-point)BER,分別以FLO實線段以及FIX虛線段表示;而A與B代表碼率之類型(type)。
舉例說明,比較於Liu等人於IEEE J.Solid-State Circuit,vol.43,no.3,pp.684-694,March 2009所提出之”An LDPC decoder chip based on self-routing network for IEEE802.163 applications”,其使用phase overlapped MPD當迭代數目Nit=20時於Eb/No=2.2dB可獲致一10-5的BER值,其中Eb/No為SNR值。根據本發明之一實施例,當Nit=12時,所提出之1/2碼率之解碼器可以於Eb/No=2.15dB獲致相同之BER值。因此,根據本發明所採用之LMPD-ICM解碼,比較於TPMP,可以大幅地降低迭代的數目獲致相同之BER。
此外,本發明所提出之早期終止可減少所需要的迭代以及運算,因此可減少功率消耗。下列第二表整理出當z=96於獲致10-5的BER下特定SNR值的功率消耗。其顯示不同類別 下因使用硬體的不同區域,因此其功率消耗並不相同。惟,根據本發明之一實施例之早期終止功能,所有碼率之功率消耗皆大幅減少。
本發明雖已以一實施例揭露如上文,然其並非用以限定者。任何熟習此項技藝者,在不脫離本發明之精神以及範圍內,當可進行各種實質上相等的變動以及潤飾,因此本發明之保護範圍當以後附之申請專利範圍所界定者為準。
1‧‧‧位址ROM
2‧‧‧位址產生器
20‧‧‧多模式位址產生器
21,201‧‧‧移位暫存器
22,202‧‧‧移位功能單元
23,203‧‧‧寫入位址功能單元
24,204‧‧‧索引計算器
205‧‧‧多工器
206‧‧‧位址多工器
3‧‧‧APP記憶體
4‧‧‧第一路徑網路
5‧‧‧VNU單元
50‧‧‧多模式VNU單元
51‧‧‧減法器
500‧‧‧先進先出緩衝區
510‧‧‧平行更新單元
501‧‧‧多工器
52‧‧‧加法器
53‧‧‧多工器
6‧‧‧CNU單元
61‧‧‧CMP4單元
62‧‧‧S-CMP4單元
631‧‧‧正負號單元
632‧‧‧減法器
64‧‧‧C2V計算器
7‧‧‧R記憶體
71‧‧‧壓縮C2V記憶體區塊
72‧‧‧解壓縮器
8‧‧‧早期終止
81‧‧‧列總和計算器
82‧‧‧零檢查器
83‧‧‧累加器
9‧‧‧編碼器
91‧‧‧奇偶位元計算器
90‧‧‧多模式列總和計算器
901‧‧‧第一階段互斥或XOR單元
902‧‧‧第二階段互斥或XOR單元
903‧‧‧多工器
10‧‧‧第二路徑網路
11‧‧‧控制器
12‧‧‧處理單元
x,x’‧‧‧位址
STi‧‧‧第i階段
z‧‧‧展開因子
TASKi‧‧‧第i任務
C2V‧‧‧檢查節點至變數節點信息
V2C‧‧‧變數節點至檢查節點信息
為使本發明之上述和其他目的、特徵、優點與實施例可容易了解,所附圖式之詳細說明如下:第一圖顯示一個類循環(quasi-cyclic)奇偶檢查矩陣H的 表示法;第二A圖以及第二B圖分別顯示一個原型矩陣Hbm以及一個PCM矩陣H之範例;第三圖顯示WiMAX標準下,其中當z為96而碼率為5/6時之原型矩陣,其中z為展開因子;第四A圖與第四B圖分別顯示一個LDPC碼以及其所對應之Tanner圖;第五A圖顯示經LMPD-ICM重新排列第二B圖所表示之PCM所得之三個子矩陣H0’、H1’和H2’;第五B圖顯示對應第五A圖H0’之核心矩陣H0;第六圖顯示WiMAX不同類別的分層(layers)、子層(sub-layers)、任務(tasks)以及其任務處理序列(processing sequence);第七圖顯示WiMAX下5/6碼率且z為24之原型矩陣以及經電腦搜尋之五個對應任務;第八圖顯示本發明之一實施例的硬體控制方塊圖;第九圖顯示本發明於5/6碼率之一實施例的硬體方塊圖;第十A圖顯示一個變數節點處理器(variable node processor,簡稱VNP)的硬體架構示意圖;第十B圖顯示五個任務在VNP於5/6碼率的解碼操作時序圖(timing diagram);第十一A圖顯示本發明之一實施例的多模式(multi-mode)位址產生器;第十一B圖顯示本發明之一實施例的多模式VNU單元; 第十一C圖顯示本發明之一實施例的多模式列總和計算器;以及第十二圖顯示本發明之一實施例所提出碼長長度為2304解碼器之BER結果。

Claims (18)

  1. 一種低密度奇偶檢查碼編解碼方法,包括:(a)對於一低密度奇偶檢查碼之一奇偶檢查矩陣以一列排列方式進行分層,使得該奇偶檢查矩陣包括複數個分層;(b)以列為單位分割每一該些分層為複數個子層;(c)以行為單位分割每一該些子層為複數個任務,而每一該些分層包括該些任務;以及(d)以一序列(sequential)方式迭代處理每一該些分層之該些任務。
  2. 如申請專利範圍第1項所述之低密度奇偶檢查碼編解碼方法,其中(a)步驟所述之列排列方式係指分層後的第 l 層包括該奇偶檢查矩陣之第( l +a0)mod(z)列、第z+( l +a1)mod(z)列、....、以及第(Mb-1)z+( l +aMb-1)mod(z)列,其中0≦ l <z,a0、a1....至aMb-1可選自非負整數,且Mb為該奇偶檢查矩陣之一基底矩陣的列數。
  3. 如申請專利範圍第1項所述之低密度奇偶檢查碼編解碼方法,其中於(d)步驟中,該迭代處理的第k次迭代係同步包括以下步驟:(d1)根據第 l 層的每一該些任務相對應之複數個檢查節點以及複數個變數節點,並以複數個第 l -1層且第k次迭代的APP值以及複數個第k-1次迭代的檢查節點至變數節點(C2V)信息,計算出複數個第k次迭代之變數節點至檢查節點(V2C)信息; (d2)計算複數個第 l 層且第k次迭代的更新之APP值;以及(d3)以該些第k次迭代之變數節點至檢查節點信息計算出複數個更新之第k次迭代的檢查節點至變數節點信息。
  4. 如申請專利範圍第3項所述之低密度奇偶檢查碼編解碼方法,其中可於(d1)步驟之中間,以該些更新之第k次迭代的檢查節點至變數節點信息取代該些第k-1次迭代的檢查節點至變數節點信息,計算出該些第k次迭代之變數節點至檢查節點信息。
  5. 如申請專利範圍第3項所述之低密度奇偶檢查碼編解碼方法,更包括:(e1)根據(d2)步驟,對於第k次迭代的每一該些子層之該些更新APP值的正負號計算出一數值;以及(e2)如該些子層之該些數值為零之一連續次數相等於一定限,則停止(d)步驟之迭代處理。
  6. 如申請專利範圍第1項所述之低密度奇偶檢查碼編解碼方法,其中根據(a)步驟,以該奇偶檢查矩陣之複數個信息位元,對於每一該些分層計算出相對應之複數個奇偶位元。
  7. 如申請專利範圍第1項所述之低密度奇偶檢查碼編解碼方法,其中根據(b)步驟,以該奇偶檢查矩陣之複數個信息位元,對於每一該些子層計算出相對應之複數個奇偶位元。
  8. 如申請專利範圍第1項至第7項其中任一項所述之低密度奇偶檢查碼編解碼方法,其中該低密度奇偶檢查碼係為符合WiMAX標準之一準循環低密度奇偶檢查碼。
  9. 一種低密度奇偶檢查碼編解碼器,用於處理一低密度奇偶檢 查碼之一奇偶檢查矩陣之編解碼運算,其包括:(a)複數個位址產生器;(b)一第一儲存裝置,該第一儲存裝置之複數個存取位址係由對應之位址產生器所提供;(c)一第一路徑網路;(d)一第二路徑網路;(e)複數個處理單元,與該第一儲存裝置以該第一路徑網路電性相連,用以進行一迭代解碼運算;每一該些處理單元之複數個解碼運算輸出值可回饋並經由該第二路徑儲存至該第一儲存裝置,且每一該些處理單元包括一VNU單元以及一CNU單元;該些VNU單元用以進行複數個變數節點對檢查節點信息以及複數個APP值之運算,而該些CNU單元則用以進行複數個檢查節點對變數節點信息之運算;以及(f)一早期終止;其中該些VNU單元之該些APP值的正負號經一計算後作為該早期終止之一數值;如該數值之滿足於一終止條件,則停止該迭代解碼運算。
  10. 如申請專利範圍第9項所述之低密度奇偶檢查碼編解碼器,其中該早期終止包括對應該些VNU單元之複數個列總和計算器、一零檢查器以及一累加器;該些列總和計算器用以計算出該數值,並將該數值輸入該零檢查器與0(zero)進行比較;如該數值連續為0(zero)次數與一定限相等,則停止該迭代解碼運算。
  11. 如申請專利範圍第10項所述之低密度奇偶檢查碼編解碼 器,其更包括一編碼器,以進行一分層編碼運算或子層編碼運算。
  12. 如申請專利範圍第11項所述之低密度奇偶檢查碼編解碼器,其中該編碼器包括早期終止之該些列總和計算器以及一奇偶位元計算器,並以該列總和計算器之輸出作為該奇偶位元計算器之輸入,藉以進行該分層編碼運算或子層編碼運算。
  13. 如申請專利範圍第12項所述之低密度奇偶檢查碼編解碼器,其中該位址產生器、該些VNU單元、以及該些列總和計算器皆包括複數個多工器;該些多工器係以複數個碼率作為選擇輸入值,致使該低密度奇偶檢查碼編解碼器可根據該些碼率之其一而致能。
  14. 一種低密度奇偶檢查碼編解碼器,用於處理一低密度奇偶檢查碼之一奇偶檢查矩陣之編解碼運算,其包括:(a)複數個位址產生器;(b)一第一儲存裝置,該第一儲存裝置之複數個存取位址係由對應之位址產生器所提供;(c)一第一路徑網路;(d)一第二路徑網路;以及(e)複數個處理單元,與該第一儲存裝置以該第一路徑網路電性相連,用以進行一迭代解碼運算;每一該些處理單元之複數個解碼運算輸出值可回饋並經由該第二路徑儲存至該第一儲存裝置,且每一該些處理單元包括一VNU單元以及一CNU單元;該些VNU單元用以進行複數個變數節點對檢查節點信息以及複數個APP值之運算,而該些CNU單元則用 以進行複數個檢查節點對變數節點信息之運算;其中該先進先出緩衝區係作為等待該些VNU單元對應之CNU單元計算出該些檢查節點對變數節點信息的一時序緩衝區域。
  15. 一種低密度奇偶檢查碼編解碼器,用於處理一低密度奇偶檢查碼之一奇偶檢查矩陣之編解碼運算,其包括:(a)複數個位址產生器;(b)一第一儲存裝置,該第一儲存裝置之複數個存取位址係由對應之位址產生器所提供;(c)一第一路徑網路;(d)一第二路徑網路;以及(e)複數個處理單元,與該第一儲存裝置以該第一路徑網路電性相連,用以進行一迭代解碼運算;每一該些處理單元之複數個解碼運算輸出值可回饋並經由該第二路徑儲存至該第一儲存裝置,且每一該些處理單元包括一VNU單元以及一CNU單元;該些VNU單元用以進行複數個變數節點對檢查節點信息以及複數個APP值之運算,而該些CNU單元則用以進行複數個檢查節點對變數節點信息之運算;其中每一該些CNU單元包括複數個比較單元,用以於複數個輸入中比較出複數個極值。
  16. 一種低密度奇偶檢查碼編解碼器,用於處理一低密度奇偶檢查碼之一奇偶檢查矩陣之編解碼運算,其包括:(a)複數個位址產生器;(b)一第一儲存裝置,該第一儲存裝置之複數個存取位址係由 對應之位址產生器所提供;(c)一第一路徑網路;(d)一第二路徑網路;(e)複數個處理單元,與該第一儲存裝置以該第一路徑網路電性相連,用以進行一迭代解碼運算;每一該些處理單元之複數個解碼運算輸出值可回饋並經由該第二路徑儲存至該第一儲存裝置;以及(f)一第二儲存裝置,用以儲存該第一儲存裝置所需之複數個初始位址;其中該位址產生器以該些初始位址作為輸入,藉以計算出該第一儲存裝置所需之該些存取位址。
  17. 一種低密度奇偶檢查碼編解碼器,用於處理一低密度奇偶檢查碼之一奇偶檢查矩陣之編解碼運算,其包括:(a)複數個位址產生器;(b)一第一儲存裝置,該第一儲存裝置之複數個存取位址係由對應之位址產生器所提供;(c)一第一路徑網路;(d)一第二路徑網路;以及(e)複數個處理單元,與該第一儲存裝置以該第一路徑網路電性相連,用以進行一迭代解碼運算;每一該些處理單元之複數個解碼運算輸出值可回饋並經由該第二路徑儲存至該第一儲存裝置;其中每一該位址產生器包括複數個移位暫存器,以及一移位功能單元。
  18. 如申請專利範圍第9項至第17項其中任一項所述之低密度奇偶檢查碼編解碼器,其中該低密度奇偶檢查碼係為符合WiMAX標準之一準循環低密度奇偶檢查碼。
TW098146070A 2009-12-31 2009-12-31 低密度奇偶檢查碼編解碼器及其方法 TWI419481B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW098146070A TWI419481B (zh) 2009-12-31 2009-12-31 低密度奇偶檢查碼編解碼器及其方法
US12/870,226 US8392795B2 (en) 2009-12-31 2010-08-27 Low density parity check codec and method of the same
US13/752,879 US8839077B2 (en) 2009-12-31 2013-01-29 Low density parity check codec

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW098146070A TWI419481B (zh) 2009-12-31 2009-12-31 低密度奇偶檢查碼編解碼器及其方法

Publications (2)

Publication Number Publication Date
TW201123745A TW201123745A (en) 2011-07-01
TWI419481B true TWI419481B (zh) 2013-12-11

Family

ID=44188967

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098146070A TWI419481B (zh) 2009-12-31 2009-12-31 低密度奇偶檢查碼編解碼器及其方法

Country Status (2)

Country Link
US (2) US8392795B2 (zh)
TW (1) TWI419481B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI580197B (zh) * 2016-04-27 2017-04-21 國立清華大學 低密度奇偶檢查碼之編解碼方法
TWI602188B (zh) * 2017-01-03 2017-10-11 慧榮科技股份有限公司 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器
TWI651730B (zh) * 2017-01-03 2019-02-21 慧榮科技股份有限公司 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI425519B (zh) * 2009-12-09 2014-02-01 Nat Chip Implementation Ct Nat Applied Res Lab 低複雜度低密度同位元檢查碼解碼器之記憶體配置方法及其解碼器結構
US9230596B2 (en) * 2012-03-22 2016-01-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for variable rate coding in a data processing system
KR20140041071A (ko) * 2012-09-27 2014-04-04 한국전자통신연구원 Ldpc 부호화 장치 및 방법
US9116822B2 (en) * 2012-12-07 2015-08-25 Micron Technology, Inc. Stopping criteria for layered iterative error correction
US9619317B1 (en) 2012-12-18 2017-04-11 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US20140223255A1 (en) * 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
TWI533620B (zh) * 2013-03-15 2016-05-11 國立清華大學 減少硬體緩衝器之低密度奇偶檢查碼階層式解碼架構
TWI540844B (zh) * 2013-03-27 2016-07-01 國立清華大學 雙重準循環低密度同位校驗碼
EP2992429B1 (en) * 2013-04-30 2022-03-09 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9048867B2 (en) * 2013-05-21 2015-06-02 Lsi Corporation Shift register-based layered low density parity check decoder
US20150254130A1 (en) * 2013-12-03 2015-09-10 Kabushiki Kaisha Toshiba Error correction decoder
JP6192804B2 (ja) * 2014-03-05 2017-09-06 三菱電機株式会社 データ圧縮装置およびデータ圧縮方法
US9529671B2 (en) * 2014-06-17 2016-12-27 Arm Limited Error detection in stored data values
US9595977B2 (en) 2014-09-29 2017-03-14 Apple Inc. LDPC decoder with efficient circular shifters
KR102287623B1 (ko) * 2015-02-16 2021-08-10 한국전자통신연구원 길이가 64800이며, 부호율이 4/15인 ldpc 부호어 및 1024-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
KR102285940B1 (ko) 2015-05-29 2021-08-05 에스케이하이닉스 주식회사 데이터 처리 회로, 데이터 처리 회로를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
US10396827B2 (en) 2015-09-25 2019-08-27 SK Hynix Inc. Data storage device
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
US10419024B2 (en) 2017-05-26 2019-09-17 SK Hynix Inc. Early termination of low-density parity-check (LDPC) decoding
US11177835B2 (en) 2015-09-25 2021-11-16 SK Hynix Inc. Data storage device
US9785502B2 (en) * 2015-10-27 2017-10-10 Sandisk Technologies Llc Pipelined decoder with syndrome feedback path
US10700708B2 (en) * 2015-11-05 2020-06-30 Shenzhen Epostar Electronics Limited Co. Permutation network designing method, and permutation circuit of QC-LDPC decoder
US20170222659A1 (en) * 2016-02-02 2017-08-03 Silicon Motion Inc. Power improvement for ldpc
CN107370490B (zh) * 2016-05-13 2023-07-14 中兴通讯股份有限公司 结构化ldpc的编码、译码方法及装置
US10128869B2 (en) 2016-05-17 2018-11-13 Apple Inc. Efficient convergence in iterative decoding
KR102626162B1 (ko) * 2016-06-14 2024-01-18 삼성전자주식회사 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
US10312937B2 (en) * 2016-11-02 2019-06-04 Qualcomm Incorporated Early termination technique for LDPC decoder architecture
US10348329B2 (en) * 2017-02-13 2019-07-09 Qualcomm Incorporated Low density parity check (LDPC) circular buffer rate matching
CN109286401A (zh) * 2017-07-20 2019-01-29 晨星半导体股份有限公司 准循环低密度奇偶校验码的解码电路及其方法
CN109995379B (zh) * 2017-12-29 2021-07-16 华为技术有限公司 处理信息的方法和装置
US20190326931A1 (en) * 2018-04-24 2019-10-24 Avago Technologies General Ip (Singapore) Pte. Ltd Low-density parity check decoders and methods thereof
US10354717B1 (en) * 2018-05-10 2019-07-16 Micron Technology, Inc. Reduced shifter memory system
EP4128542A1 (en) * 2020-03-23 2023-02-08 Telefonaktiebolaget Lm Ericsson (Publ) Accelerating bit error correction in layered ldpc decoding
US11265015B2 (en) * 2020-05-15 2022-03-01 SK Hynix Inc. Out-of-order processing for bit-flipping decoders in non-volatile memory devices
CN115037310B (zh) * 2022-05-17 2024-04-26 北京航空航天大学 一种基于随机计算的5g ldpc译码器性能优化方法及架构

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200739334A (en) * 2006-01-20 2007-10-16 Marvell World Trade Ltd Flash memory with coding and signal processing
US7395490B2 (en) * 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7617433B2 (en) * 2006-01-03 2009-11-10 Broadcom Corporation Implementation of LDPC (low density parity check) decoder by sweeping through sub-matrices
US20090282316A1 (en) * 2008-05-07 2009-11-12 Texas Instruments Incorporated Memory Access in Low-Density Parity Check Decoders

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107511B2 (en) * 2002-08-15 2006-09-12 Broadcom Corporation Low density parity check (LDPC) code decoder using min*, min**, max* or max** and their respective inverses
KR100891782B1 (ko) * 2002-06-11 2009-04-07 삼성전자주식회사 고속 데이터 전송 시스템에서 순방향 오류 정정 장치 및방법
US7251769B2 (en) * 2004-03-17 2007-07-31 Lucent Technologies Inc. Methods and apparatus for communication using generalized low density parity check codes
KR100594818B1 (ko) * 2004-04-13 2006-07-03 한국전자통신연구원 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법
US7562280B2 (en) * 2004-09-10 2009-07-14 The Directv Group, Inc. Code design and implementation improvements for low density parity check codes for wireless routers using 802.11N protocol
US7627805B2 (en) * 2005-06-08 2009-12-01 Cimarron Mittelsteadt Data coding with an efficient LDPC encoder
US7716553B2 (en) * 2005-07-13 2010-05-11 Leanics Corporation System and method for designing RS-based LDPC code decoder
US8359522B2 (en) * 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
US8341488B2 (en) * 2008-08-04 2012-12-25 Broadcom Corporation Accumulating LDPC (low density parity check) decoder

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395490B2 (en) * 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7617433B2 (en) * 2006-01-03 2009-11-10 Broadcom Corporation Implementation of LDPC (low density parity check) decoder by sweeping through sub-matrices
TW200739334A (en) * 2006-01-20 2007-10-16 Marvell World Trade Ltd Flash memory with coding and signal processing
US20090282316A1 (en) * 2008-05-07 2009-11-12 Texas Instruments Incorporated Memory Access in Low-Density Parity Check Decoders

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI580197B (zh) * 2016-04-27 2017-04-21 國立清華大學 低密度奇偶檢查碼之編解碼方法
TWI602188B (zh) * 2017-01-03 2017-10-11 慧榮科技股份有限公司 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器
CN108268337A (zh) * 2017-01-03 2018-07-10 慧荣科技股份有限公司 于记忆装置中进行数据管理的方法、记忆装置及其控制器
TWI651730B (zh) * 2017-01-03 2019-02-21 慧榮科技股份有限公司 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器
US10860422B2 (en) 2017-01-03 2020-12-08 Silicon Motion, Inc. Method for performing data management in memory device, associated memory device and controller thereof
CN108268337B (zh) * 2017-01-03 2021-07-27 慧荣科技股份有限公司 于记忆装置中进行数据管理的方法、记忆装置及其控制器

Also Published As

Publication number Publication date
US20130139031A1 (en) 2013-05-30
US20110161770A1 (en) 2011-06-30
TW201123745A (en) 2011-07-01
US8392795B2 (en) 2013-03-05
US8839077B2 (en) 2014-09-16

Similar Documents

Publication Publication Date Title
TWI419481B (zh) 低密度奇偶檢查碼編解碼器及其方法
US11368168B2 (en) Low density parity check decoder
Zhang et al. Reduced-latency SC polar decoder architectures
JP2544895B2 (ja) 分散デ―タ処理システム
US7373581B2 (en) Device, program, and method for decoding LDPC codes
US8352847B2 (en) Matrix vector multiplication for error-correction encoding and the like
KR100502609B1 (ko) Ldpc 코드를 이용한 부호화기 및 부호화 방법
CN111162797B (zh) 一种速率兼容的5g ldpc码的编码装置及编码方法
JP4282558B2 (ja) 低密度パリティチェック符号復号器及び方法
JP4320418B2 (ja) 復号装置および受信装置
JP2006339799A (ja) イレギュラー低密度パリティチェック符号復号器及び方法
Theodoropoulos et al. Efficient architectures for multigigabit CCSDS LDPC encoders
CN111384970B (zh) 一种译码方法、装置及通信设备
WO2010053152A1 (ja) 復号装置、この復号装置を有するデータ通信装置およびデータ記憶装置
Zhao et al. DVB-T2 LDPC decoder with perfect conflict resolution
CN102347774A (zh) 低密度奇偶检查码编解码方法
CN111313912A (zh) 一种ldpc码编码器及编码方法
WO2022116799A1 (zh) 一种具有单置换网络的分层半并行ldpc译码器系统
JP5510447B2 (ja) 復号装置および復号方法
CN112583420A (zh) 一种数据处理方法和译码器
CN117411492A (zh) 一种基于编码分布式快速哈达玛变换的多元ldpc码译码方法
KR101126359B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
De Agostino The Uncompress Application on Distributed Communications Systems

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees