JP7051024B2 - 復号方法、復号装置、制御回路およびプログラム記憶媒体 - Google Patents

復号方法、復号装置、制御回路およびプログラム記憶媒体 Download PDF

Info

Publication number
JP7051024B2
JP7051024B2 JP2021572484A JP2021572484A JP7051024B2 JP 7051024 B2 JP7051024 B2 JP 7051024B2 JP 2021572484 A JP2021572484 A JP 2021572484A JP 2021572484 A JP2021572484 A JP 2021572484A JP 7051024 B2 JP7051024 B2 JP 7051024B2
Authority
JP
Japan
Prior art keywords
row
column
storage unit
unit
shift
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2021572484A
Other languages
English (en)
Other versions
JPWO2021171506A1 (ja
Inventor
隆彦 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2021171506A1 publication Critical patent/JPWO2021171506A1/ja
Application granted granted Critical
Publication of JP7051024B2 publication Critical patent/JP7051024B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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/1134Full parallel processing, i.e. all bit nodes or check nodes are 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/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/1105Decoding
    • H03M13/1145Pipelined decoding at code word level, e.g. multiple code words being decoded simultaneously
    • 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/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • Greenhouses (AREA)

Description

本開示は、低密度パリティ検査符号(LDPC(Low-Density Parity-Check)符号)を復号する復号方法、復号装置、制御回路およびプログラム記憶媒体に関する。
LDPC符号の検査行列が、P×P(Pは2以上の整数)の小行列に分割でき、かつ小行列がそれぞれ単位行列、準単位行列、シフト行列、和行列および0行列のうちいずれかで表される場合に、当該LDPC符号の復号装置は、行演算処理および列演算処理をそれぞれP並列で実施することができる。ここで、準単位行列は、単位行列を構成する値が1の要素のうち1つ以上の要素が0になった行列であり、シフト行列は、単位行列または準単位行列をサイクリックシフトした行列であり、和行列は、単位行列、準単位行列およびシフト行列のうちの2以上の行列の和である。検査行列における小行列がそれぞれ単位行列、準単位行列、シフト行列、和行列および0行列のうちいずれかで表されるLDPC符号は、QC(Quasi-Cyclic:疑似巡回)-LDPCとも呼ばれる。
特許文献1には、チェックノード計算器およびバリアブルノード計算器をそれぞれP個備えることで、行演算処理および列演算処理をそれぞれP並列で行う復号装置が開示されている。特許文献1に記載の復号装置は、チェックノードおよびバリアブルノード間を接続するブランチの値をそれぞれに対応するFIFO(First In First Out)メモリに保持する。そして、特許文献1の復号装置は、対応するFIFOメモリに保持されている値を1つずつ読み出してセレクタを介して各チェックノード計算器へ入力することにより、P並列で行演算処理を行い、対応するFIFOメモリに保持されている値を1つずつ読み出してセレクタを介して各バリアブルノード計算器へ入力することにより、P並列で列演算処理を行う。行演算処理を行う際にデータが読み出されるFIFOメモリは(N-K)/P個並列に設けられ、各FIFOメモリの深さは、検査行列のP行ごとの行重みに対応する深さである。なお、Nは符号長であり、KはLDPC符号の1符号語に対応する情報データのデータ長である。また、列演算処理を行う際にデータが読み出されるFIFOメモリはN/P個並列に設けられ、各FIFOメモリの深さは、検査行列のP列ごとの列重みに対応する深さである。
特許第4224777号公報
上記特許文献1に記載の技術では、行演算処理において、各FIFOメモリに保持されている値が1ずつ読み出されてセレクタに供給されることが、FIFOメモリごとに順番に行われる。列演算処理においても同様に、各FIFOメモリに保持されている値が1ずつ読み出されてセレクタに供給されることが、FIFOメモリごとに順番に行われる。このため、特許文献1に記載の復号装置では、行重みが大きな場合、または符号長が長い場合には、1回の行演算処理におけるFIFOメモリからの読み出し回数が多くなる。同様に、列重みが大きな場合、または符号長が長い場合には、1回の列演算処理におけるFIFOメモリからの読み出し回数が多くなる。したがって、特許文献1に記載の復号装置は、復号処理に時間を要することになり、高速伝送には適していないという問題がある。
本開示は、上記に鑑みてなされたものであって、LDPC符号の復号処理に要する時間を抑制することができる復号方法を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本開示は、Pを2以上の整数とするとき検査行列がP行P列の小行列に分割可能な低密度パリティ検査符号の符号語を受信し受信データを記憶部する記憶部と、検査行列の列重みに応じた数の記憶領域を有する中間値記憶部とを備える復号装置、が実行する復号方法であって、受信データを記憶部からPワード単位で読み出し、検査行列のP列単位の列重みに基づいて読み出したデータを複製し、複製したデータを中間値記憶部の対応する記憶領域へ書き込む格納ステップ、を含む。復号方法は、さらに、検査行列を行方向に分割した行ブロックごとに、中間値記憶部の当該行ブロックに対応する行重みの数の記憶領域からデータを読み出す選択ステップと、選択ステップで読み出された行重みの数のデータを、読み出し元の記憶領域に対応する検査行列における値が1の要素の位置に応じてそれぞれシフトさせる第1シフトステップと、を含む。復号方法は、さらに、第1シフトステップによりシフトされた後の行重みの数のデータを用いて、ワード単位で並列に、行演算処理を行う並列行演算ステップと、並列行演算ステップにより得られる行重みの数の演算結果を、第1シフトステップにおいて施されたシフトを元に戻すようにシフトさせる第2シフトステップと、を含む。復号方法は、さらに、第2シフトステップによってシフトされた後の行重みの数の演算結果を用いて中間値記憶部の対応する記憶領域の値を更新する第1更新ステップと、選択ステップ、第1シフトステップ、並列行演算ステップ、第2シフトステップおよび第1更新ステップを全ての行ブロックに関して実行させる第1制御ステップと、第1制御ステップの実行の後に中間値記憶部の記憶領域に記憶されている値を用いて、列演算処理を行う列演算処理ステップと、を含む。
本開示にかかる復号方法は、LDPC符号の復号処理に要する時間を抑制することができるという効果を奏する。
実施の形態1にかかる復号装置の機能構成例を示す図 実施の形態1の復号装置の復号処理手順の一例を示すフローチャート 実施の形態1の復号装置における行演算処理手順の一例を示すフローチャート 実施の形態1の復号装置における列演算処理手順の一例を示すフローチャート 実施の形態1の復号装置を専用ハードウェアにより実現する場合の処理回路の構成例を示す図 実施の形態1の復号装置を制御回路により実現する場合の制御回路の構成例を示す図 実施の形態2にかかる復号装置の機能構成例を示す図
以下に、実施の形態にかかる復号方法、復号装置、制御回路およびプログラム記憶媒体を図面に基づいて詳細に説明する。なお、この実施の形態に限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかる復号装置の機能構成例を示す図である。本実施の形態の復号装置100は、図示しない符号化器によって生成された低密度パリティ検査符号(LDPC符号)の符号語を受信し受信データである受信語を復号する。なお、この受信は、他の装置から受信する場合だけでなく、同一装置内の他の構成要素から受信データを受信することも含む。図1に示すように、本実施の形態の復号装置100は、記憶部1、中間値記憶部2、制御部3、テーブル記憶部4、選択部5、第1シフト部6、P並列行演算部7、第2シフト部8およびP並列列演算部9を備える。
本実施の形態の復号装置100は、例えば、無線通信または有線通信を行う通信装置に搭載される。例えば、復号装置100は信号を受信する通信装置である受信装置に搭載され、この受信装置では、送信装置から、送信装置において生成されたLDPC符号の符号語を含む信号を受信してデジタル信号に変換し、デジタル信号である受信信号自体または受信信号に対して軟判定結果を出力する軟判定復調などの処理を行った結果を、受信軟判定データとして、復号装置100へ入力する。以下、この受信軟判定データを受信データとも呼ぶ。なお、復号装置100が搭載される装置は通信装置に限定されず、誤り訂正処理を行う装置であればどのような装置に搭載されてもよい。
本実施の形態では、LDPC符号の検査行列が、P×PすなわちP行P列の小行列に分割可能であるとする。また、かつがそれぞれ単位行列、準単位行列、シフト行列、和行列および0行列のうちいずれかで表されるとする。Pは、2以上の整数である。
図1に示した復号装置100を構成する各部の機能について説明する。記憶部1は、復号装置100へ入力される受信軟判定データを記憶する。中間値記憶部2は、複数の記憶領域である複数のレジスタファイルを備える。複数のレジスタファイルは、同時にアクセス可能な複数の記憶領域の一例である。アクセス詳細には、後述するように、中間値記憶部2は、例えば、検査行列の列重みに応じた数のレジスタファイルを備える。各レジスタファイルには、記憶部1に記憶されている受信軟判定データが初期値として記憶され、記憶されたデータは、復号処理の過程で更新される。制御部3は、復号装置100の動作を制御する。なお、復号装置100には、LDPC符号の符号化で用いられた検査行列があらかじめ設定されるか、または通知されるとし、制御部3は、検査行列、または検査行列を示す情報を保持している。なお、検査行列、または検査行列を示す情報は、テーブル記憶部4に格納されていてもよい。
テーブル記憶部4は、制御部3が各処理を制御するために用いるテーブルを記憶している。このテーブルは、制御部3により書き込まれる。テーブルは、例えば、行演算処理と列演算処理とのうちどちらを実行中であるかを示す情報、選択部5が中間値記憶部2から読み出すデータを示す情報、第1シフト部6および第2シフト部8のシフト処理におけるシフト段数を示す情報などを含む。
選択部5は、テーブル記憶部4のテーブルに基づいて、行演算処理の実行中には、検査行列を行方向に分割した行ブロックごとに、中間値記憶部2の複数のレジスタファイルから、行ブロックに対応するP行単位の行重みの数のレジスタファイルを選択し、選択したレジスタファイルからデータを読み出して、第1シフト部6へ出力する。選択部5は、テーブル記憶部4のテーブルに基づいて、列演算処理の実行中には、中間値記憶部2の複数のレジスタファイルから、P列単位の列重みに応じたデータを選択して読み出して、第1シフト部6へ出力する。
第1シフト部6は、選択部5により読み出された行重みの数のデータを、読み出し元のレジスタファイルに対応する、検査行列における値が1の要素の位置に応じてそれぞれシフトさせる。例えば、第1シフト部6は、複数のバレルシフタを備える。選択部5から出力された各データはそれぞれバレルシフタに入力される。各バレルシフタは、テーブル記憶部4のテーブルに基づいて、テーブルで示された段数のローテードシフトを実施し、ローテードシフト後のデータをP並列行演算部7へ入力する。
P並列行演算部7は、第1シフト部6によりシフトされた後の行重みの数のデータを用いて、ワード単位で並列に、行演算処理を行う並列行演算部である。具体的には、P並列行演算部7は、LDPC符号の復号アルゴリズムに従った行演算処理を、P並列で実施し、行演算処理により得られる複数のデータを第2シフト部8へ出力する。
第2シフト部8は、P並列行演算部7により得られる行重みの数の演算結果を、第1シフト部6において施されたシフトを元に戻すようにシフトさせる。第2シフト部8は、複数のバレルシフタを備える。P並列行演算部7から出力された各データはそれぞれバレルシフタに入力される。第2シフト部8の複数のバレルシフタは、第1シフト部6のバレルシフタにより施されたシフトをもとに戻すようにローテードシフトを実施する。中間値記憶部2の複数のレジスタファイル内のデータは、第2シフト部8の複数のバレルシフタによりローテードシフトされたデータに更新される。
P並列列演算部9は、行演算処理の後に、中間値記憶部2のレジスタファイルに記憶されている値を用いて、列演算処理を行う並列列演算部である。詳細には、P並列列演算部9は、中間値記憶部2のレジスタファイルから読み出されたデータの加算処理を、P並列で実施する。P並列列演算部9は、繰り返しの最後の処理では、加算処理の結果を復号結果として出力する。P並列列演算部9は、繰り返しが継続する場合には、加算処理の結果から自分自身の値を減算し、減算結果で中間値記憶部2の複数のレジスタファイル内のデータを更新する。
次に、本実施の形態の復号装置100が実行する復号方法について説明する。図2は、本実施の形態の復号装置100の復号処理手順の一例を示すフローチャートである。図2に示すように、復号装置100は、受信軟判定データを、Pワードごとに1アドレスに対応させて記憶部1に格納する(ステップS1)。詳細には、制御部3が、受信軟判定データを、Pワードごとに記憶部1の1アドレスに対応させて記憶部1に記憶させる。ここでワードは、受信軟判定データにおけるデータ量の単位であり、例えば、送信ビット1ビットに対応する受信LLR(Log Likelihood Ratio)(複数ビット)に相当する。したがって、1ワードをW(Wは1以上の整数)ビットとすると、1アドレスに対応するデータはP×Wビットである。
LDPC符号の検査行列の列数をNとすると、LDPC符号の符号長はNワードである。上述したとおり、本実施の形態では、LDPC符号は、P×Pの小行列に分割可能である。したがって、検査行列の列数Nおよび行数はいずれもPの倍数である。検査行列の列数NはPのB倍であるとし、検査行列の行数(N-K)は、PのB倍であるとする。BおよびBはそれぞれ2以上の整数である。以下では、B=8であり、B=5である例を挙げて説明するが、BおよびBはそれぞれこの値に限定されない。
ステップS1では、1符号長に対応する受信軟判定データが、Pワードごとに区切られて、各Pワード分の受信軟判定データは、それぞれ異なるアドレスに対応する領域に格納される。例えば、B=8の場合、Pワードごとの受信軟判定データは、アドレス#0からアドレス#7までの8つのアドレスにそれぞれ対応する記憶部1の8つの領域にそれぞれ格納される。なお、各データに対応するアドレス値はこの例に限定されない。
次に、復号装置100は、P列単位の列重みに基づいて、記憶部1に記憶されている各アドレスのデータをコピーして中間値記憶部2に格納する(ステップS2)。すなわち、ステップS2は、受信データを記憶部1からPワード単位で読み出し、検査行列のP列単位の列重みに基づいて読み出したデータを複製し、複製したデータを中間値記憶部2の対応するレジスタファイルへ書き込む格納ステップである。詳細には、制御部3が、記憶部1に記憶されている各アドレスに対応するデータを、アドレスごとに読み出し、当該アドレスに対応する、検査行列のP列単位の列重みに基づいてコピーし、コピーした各データを、中間値記憶部2のそれぞれ異なるレジスタファイルへ格納する。N=8Pの場合、P列単位の列重みは、8つの値で示される。すなわち、制御部3は、受信データが記憶部1からPワード単位で読み出され、検査行列のP列単位の列重みに基づいて読み出されたデータが複製され、複製されたデータが中間値記憶部2の対応するレジスタファイルへ書き込まれるよう制御する。
ここで、アドレス#0~#7のそれぞれに対応する、P列単位の列重みを{8,3,3,3,2,2,2,2}とする。このとき、制御部3は、記憶部1のアドレス#0の領域に記憶されているPワードのデータを中間値記憶部2の0番目から7番目の8つのレジスタファイルにそれぞれ書き込まれるように記憶部1および中間値記憶部2を制御する。また、制御部3は、記憶部1のアドレス#1に格納されているデータが、中間値記憶部2の8番目から10番目のレジスタファイルに書き込まれるように制御する。同様に、制御部3は、記憶部1のアドレス#2に格納されているデータが、中間値記憶部2の11番目から13番目のレジスタファイルに書き込まれるように制御し、記憶部1のアドレス#3に格納されているデータが、中間値記憶部2の14番目から16番目のレジスタファイルに書き込まれるように制御する。また、制御部3は、記憶部1のアドレス#4に格納されているデータが、中間値記憶部2の17番目および18番目のレジスタファイルに書き込まれるように制御し、記憶部1のアドレス#5に格納されているデータが、中間値記憶部2の19番目および20番目のレジスタファイルに書き込まれるように制御する。さらに、制御部3は、記憶部1のアドレス#6に格納されているデータが、中間値記憶部2の21番目および22番目のレジスタファイルに書き込まれるように制御し、記憶部1のアドレス#7に格納されているデータが、中間値記憶部2の23番目および24番目のレジスタファイルに書き込まれるように制御する。このように、中間値記憶部2の0番目から24番目の合計25個のレジスタファイルにデータが書き込まれる。したがって、中間値記憶部2は、少なくとも、列重みの合計値に相当する25個のレジスタファイルを備える。
次に、制御部3は、復号における繰り返しの回数を示す変数であるiを1に設定し(ステップS3)、行演算処理(ステップS4)および列演算処理(ステップS5)を実施する。行演算処理および列演算処理の詳細については後述する。制御部3は、iが、復号における繰り返しの最大回数であるR以上であるか否かを判断し(ステップS6)、iがR未満の場合(ステップS6 No)、i=i+1とし(ステップS7)、ステップS4からの処理を繰り返す。iがR以上である場合(ステップS6 Yes)、復号装置100は、復号結果を出力し(ステップS8)、処理を終了する。
次に、上記ステップS4の行演算処理について説明する。図3は、本実施の形態の復号装置100における行演算処理手順の一例を示すフローチャートである。本実施の形態では、1回分の行演算処理をB個のブロックにわけて実施する。このブロックは、検査行列N行をP行ごとに分けたことに対応している。
復号装置100の制御部3は、図3に示すように、まず、ブロック(行ブロック)を示す変数jを1に設定する(ステップS11)。復号装置100は、行方向のj番目のブロックである第jブロックに対応するmR,j個のレジスタファイルを選択し、選択したレジスタファイルのレジスタから読み出す(ステップS12)。mR,jは、行方向の第jブロックの、P行単位の行重みである。ステップS12では、詳細には、復号装置100の制御部3は、テーブル記憶部4のテーブルに、行演算処理中であることを示す情報と、25個のレジスタファイルのうち第jブロックの処理において選択されるべきmR,j個のレジスタファイルを示す情報(レジスタ選択情報)とを格納する。選択部5は、テーブルのレジスタ選択情報に基づいて、第jブロックに対応するmR,j個のレジスタファイルを選択し、選択したレジスタファイルのレジスタからデータを読み出す。なお、この25個のレジスタファイルは、検査行列において値が1の要素となる要素にそれぞれ対応している。このため、検査行列における値が1の要素の位置とレジスタファイルの番号とをあらかじめ対応付けておけば、各ブロックの処理のおいてどのレジスタファイルを選択すべきか、すなわちレジスタ選択情報が定まる。
なお、レジスタ選択情報がテーブルに書き込まれる代わりに、テーブル記憶部4のテーブルに全ブロックに対応するレジスタ選択情報をブロックごとにあらかじめ格納しておき、さらに、制御部3が何番目のブロックの処理中であるかを示す情報、すなわちjをテーブルに書き込むことにより、選択部5が、これらの情報から、第jブロックに対応するレジスタ選択情報を抽出してもよい。したがって、第jブロックの行重みをmR,jとすると、テーブルには、mR,1からmR,BRまでのB個の行重みが格納される。mR,BRにおける下付きのBRは、Bを示す。
ステップS12の後、選択部5は、読み出したデータを第1シフト部6へ入力し、第1シフト部6が、mR,j個のデータに、設定されたシフト段数分ローテードシフト処理を実施する(ステップS13)。例えば、行重みを{6,5,5,5,4}とすると、第1ブロックでは25個のレジスタファイルのうち6個のレジスタファイルからそれぞれデータが読みだされ、6個のデータが第1シフト部6の6個のバレルシフトへそれぞれ入力される。6個のバレルシフトは、それぞれが、テーブル記憶部4のテーブルで指定された段数ローテードシフトを実施する。第2から第4ブロックの処理では、25個のレジスタファイルのうち5個のレジスタファイルからそれぞれデータが読みだされ、5個のデータが第1シフト部6の5個のバレルシフトへそれぞれ入力される。第5ブロックの処理では、25個のレジスタファイルのうち4個のレジスタファイルからそれぞれデータが読みだされ、4個のデータが第1シフト部6の4個のバレルシフタへそれぞれ入力される。各バレスシフタにおけるシフト量すなわちシフト段数は、各レジスタファイルに対応する検査行列における対応する位置に応じて決定される。第ブロックの処理では、mR,j個のバレルシフタがローテードシフト処理が用いられるため、mR,jを簡略化のためmと記載すると、シフト量k,…,kがテーブル記憶部4のテーブルに格納される。
ステップS12は、検査行列を行方向に分割した行ブロックごとに、中間値記憶部2の当該行ブロックに対応する行重みの数のレジスタファイルからデータを読み出す選択ステップである。また、ステップS13は、読み出された行重みの数のデータを、読み出し元のレジスタファイルに対応する検査行列における値が1の要素の位置に応じてそれぞれシフトさせる第1ステップである。
ステップS13の後、第1シフト部6はmR,j個のデータのそれぞれに関して、Pワードをワードごとに分割する(ステップS14)。分割されたデータはP並列化されて、P並列行演算部7へ入力され、P並列行演算部7はP並列行演算を実施する(ステップS15)。P並列の各演算部への入力データはmR,j個である。すなわち、P並列行演算部7には、mR,j個のデータが一度に入力される。
P並列行演算部7が実施する行演算処理は、LPDC符号の復号アルゴリズムに基づいて行われる。この復号アルゴリズムとしては、例えば、min-sumアルゴリズム、オフセットmin-sumアルゴリズムなど、一般的に用いられているアルゴリズムを用いることができる。P並列行演算部7は、行演算処理のmR,j個の処理結果を、第2シフト部8のmR,j個のバレルシフタへそれぞれ入力する。
第2シフト部8は、mR,j個の行演算結果に、ステップS13のシフトを戻すようにローテードシフト処理を実施する(ステップS16)。具体的には、第2シフト部8のバレルシフタは、第1シフト部6のバレルシフタがシフトさせた段数をSとすると(P-S)段のローテードシフトを実施する。
第2シフト部8は、制御部3の制御に基づいて、ローテードシフト後のデータで中間値記憶部2のレジスタファイルの値を更新する(ステップS17)。詳細には、第2シフト部8は、mR,j個のデータを中間値記憶部2へ入力し、中間値記憶部2は、制御部3の制御に基づいて、入力されたmR,j個のデータで、選択部5がステップS12で選択して読み出したmR,j個のレジスタファイルのそれぞれの値を更新する。すなわち、制御部3は、第2シフト部8によってシフトされた後の行重みの数の演算結果を用いて中間値記憶部2の対応するレジスタファイルの値を更新するよう制御する。ステップS15は、並列行演算ステップであり、ステップS16は、並列行演算ステップにより得られる行重みの数の演算結果を、第1シフト部6において施されたシフトを元に戻すようにシフトさせるである第2シフトステップである。ステップS17は、第2シフトステップによってシフトされた後の行重みの数の演算結果を用いて中間値記憶部2の対応するレジスタファイルの値を更新する第1更新ステップである。
次に、制御部3は、jがB以上であるか否かを判断する(ステップS18)。jがB未満の場合(ステップS18 No)、j=j+1とし(ステップS19)、ステップS12から処理を再び実施するよう制御する。すなわち、制御部3は、選択ステップ、第1シフトステップ、並列行演算ステップ、第2シフトステップおよび第1更新ステップを全ての行ブロックに関して実行させる第1制御ステップを実行する。jがB以上である場合(ステップS18 Yes)、制御部3は、行演算処理を終了する。
次に、上記ステップS5の列演算処理について説明する。図4は、本実施の形態の復号装置100における列演算処理手順の一例を示すフローチャートである。本実施の形態では、1回分の列演算処理をB個のブロックにわけて実施する。このブロックは、検査行列N列をP列ごとに分けたことに対応している。
復号装置100の制御部3は、図4に示すように、まず、ブロック(列ブロック)を示す変数jを1に設定する(ステップS21)。復号装置100は、列方向のj番目のブロックである第jブロックに対応するmC,j個のレジスタファイルを選択し、選択したレジスタファイルのレジスタから読み出し、記憶部1から対応する受信軟判定データを読み出す(ステップS22)。mC,jは、列方向の第jブロックの、列重み(ブロック列重み)であり、具体的にはP列単位の列重みである。ステップS22では、詳細には、復号装置100の制御部3は、テーブル記憶部4のテーブルに、列演算処理中であることを示す情報と、25個のレジスタファイルのうち第jブロックの処理において選択されるべきmC,j個のレジスタファイルを示す情報(レジスタ選択情報)とを格納する。選択部5は、テーブルのレジスタ選択情報に基づいて、第jブロックに対応するmC,j個のレジスタファイルを選択し、選択したレジスタファイルのレジスタからデータを読み出す。ステップS22は、検査行列を列方向に分割した列ブロックごとに、中間値記憶部2の当該列ブロックに対応するブロック列重みの数のレジスタファイルから、データを読み出す読み出しステップである。また、制御部3の制御により、P並列列演算部9には、記憶部1から受信軟判定データのうち第jブロックに対応するアドレス#(j-1)に格納されたデータが読み出されてP並列化されP並列列演算部9に入力される。
選択部5は、mC,j個のデータのそれぞれに関して、Pワードをワードごとに分割する(ステップS23)。分割されたデータはP並列化されてP並列列演算部9へ入力される。P並列列演算部9は、選択部5から入力されたデータと、記憶部1から入力されたデータとに基づいて、P並列列演算すなわちP並列加算処理を実施する(ステップS24)。詳細には、P並列列演算部9は、受信軟判定データをYとし、中間値記憶部2から入力されたデータの数をMとし、中間値記憶部2から読み出されたデータをそれぞれX~XM-1とするとき、Y+X+X+・・・+XM-1をXSUMとして算出し、XSUMからX,X,・・・,XM-1をそれぞれ減算した値を、P組生成する。ステップS24は、読み出しステップで読み出されたブロック列重みの数のデータと受信データとを用いて、ワード単位で並列に、列演算処理を行う並列列演算ステップである。
復号装置100は、iがR以上か否かを判断し(ステップS25)、iがR以上の場合(ステップS25 Yes)、P並列の各演算における加算結果を保持する(ステップS29)。詳細には、制御部3が、iがR以上であるか否かを判断し、判断結果をテーブル記憶部4のテーブルへ格納し、P並列列演算部9は、テーブルからこの判断結果を読み出すことにより、iがR以上か否かを把握する。iがR以上である場合、加算結果を保持する。さらに、復号装置100は、jがB以上か否かを判断し(ステップS30)、jがBc以上の場合(ステップS30 Yes)、保持している各ブロックに対応する加算結果に基づいて復号結果を生成して、復号結果を出力し(ステップS32)、列演算処理を終了する。詳細には、制御部3が、jがB以上か否かを判断し、jがB以上の場合、判断結果をテーブル記憶部4のテーブルへjがB以上であることを示す情報を書き込む。P並列列演算部9は、テーブルからこの情報を読み出すことにより、jがB以上であることを把握し、jがB以上である場合に、復号結果を生成して出力する。
jがB未満の場合(ステップS30 No)、復号装置100の制御部3は、j=j+1とし(ステップS31)、ステップS22からの処理を繰り返すように制御する。また、ステップS25で、iがR未満である場合(ステップS25 No)、復号装置100は、加算結果から対応するデータすなわち自分自身のデータを減算して中間値記憶部2のレジスタファイルの値を更新する(ステップS26)。詳細には、制御部3が、iがR以上であるか否かを判断し、判断結果をテーブル記憶部4のテーブルへ格納し、P並列列演算部9は、テーブルからこの判断結果を読み出すことにより、iがR未満であることを把握する。P並列列演算部9は、iがR未満である場合、加算結果から自分自身のデータを減算して、中間値記憶部2のレジスタファイルのうち対応するレジスタファイルの値を更新する。ステップS26は、並列列演算ステップにより得られるブロック列重みの数の演算結果を用いて中間値記憶部2の対応するレジスタファイルの値を更新する第2更新ステップである。
ステップS26の後、ステップS30と同様に、jがB以上か否かの判断が行われ(ステップS27)、jがB以上の場合(ステップS27 Yes)、復号装置100は、列演算処理を終了する。jがB未満の場合(ステップS27 No)、復号装置100の制御部3は、j=j+1とし(ステップS28)、ステップS22からの処理を繰り返すように制御する。このように、制御部3は、読み出しステップ、並列列演算ステップおよび第2更新ステップを全ての列ブロックに関して実行させる第2制御ステップを実行させる。
なお、以上の説明では、制御部3がテーブル記憶部4のテーブルを介して各部へ情報を伝達しているが、これらのうち1つ以上が制御部3から直接各部へ通知されてもよい。
以上の処理により、行演算計算および列演算計算に要する処理ステップ数が、FIFOメモリを用いる従来技術と比較して大幅に削減される。このため、本実施の形態の復号装置100は、高速の伝送速度にも対応したLDPC符号の復号を実現できる。
また、上記の例では、行演算処理、列演算処理に関しては検査行列の行および列の先頭から順に行重みまたは列重みをもとにレジスタファイルを選択して計算をおこなっているが、計算の順序に関しては、先頭から順に限定されずどのような順序で計算を行ってもよい。上記例と異なる順序で計算を行った場合も上記の例と同様の効果が得られる。
次に、復号装置100のハードウェア構成について説明する。復号装置100の記憶部1、中間値記憶部2、制御部3、テーブル記憶部4、選択部5、第1シフト部6、P並列行演算部7、第2シフト部8およびP並列列演算部9は、処理回路により実現される。処理回路は、専用ハードウェアであってもよいし、プロセッサを備える制御回路であってもよい。図5は、本実施の形態の復号装置100を専用ハードウェアにより実現する場合の処理回路の構成例を示す図である。
図5に示した処理回路10は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、メモリまたはこれらを組み合わせたものが該当する。記憶部1、中間値記憶部2、制御部3、テーブル記憶部4、選択部5、第1シフト部6、P並列行演算部7、第2シフト部8およびP並列列演算部9の機能それぞれを異なる処理回路で実現してもよいし、これらの2つ以上の機能をまとめて処理回路10で実現してもよい。
図6は、本実施の形態の復号装置100を制御回路により実現する場合の制御回路の構成例を示す図である。図6に示すように、制御回路は、プロセッサ11およびメモリ12を備える。プロセッサ11は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)などであり、メモリ12は、RAM(Random Access Memory),ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、およびEEPROM(登録商標)(Electrically Erasable Programmable Read Only Memory)などの、不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、DVD(Digital Versatile Disc)などである。
復号装置100が制御回路により実現される場合、復号装置100の各部の機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェア、ファームウェアはプログラムとして記述され、メモリ12に格納されたプログラムがプロセッサ11により読み出されて実行させることにより、復号装置100の各部の機能が実現される。このプログラムは、記憶媒体すなわちプログラム記憶媒体によって提供されてもよいし、伝送媒体によって提供されてもよい。このプログラムは、復号装置100の実行する各処理ステップをコンピュータである復号装置100に実行させるものであるとも言える。復号装置100が通信装置に搭載される場合、この制御回路は、通信装置を制御するための制御回路であって、復号装置100の実行する各処理ステップを通信装置に実行させる。また、この場合、プログラム記憶媒体は、復号装置100の搭載される通信装置の実行する各処理ステップを通信装置に実行させることにより通信装置を制御するプログラムを記憶する。
また、復号装置100を構成する各部のうち、一部が専用ハードウェアである処理回路により実現され、残部が制御回路により実現されてもよい。このように、処理回路は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせによって、上述の各機能を実現することができる。例えば、P並列行演算部7およびP並列列演算部9が専用のハードウェアとしての処理回路により実現され、その他の各部については制御回路によって実現されるといったように、専用ハードウェアである処理回路と制御回路との組み合わせにより復号装置100が実現されてもよい。
本実施の形態の復号装置100は、複数のレジスタファイルを備える中間値記憶部2を備え、複数のレジスタファイルにPワードごとの受信軟判定データを格納し、複数のレジスタファイルから、行重みに基づいて選択されたデータが、第1シフト部6の複数のバレルシフタへ入力される。そして、複数のバレルシフタによりシフトされたデータが並列化されてP並列行演算部7に入力され、P並列行演算部7の演算結果が第2シフト部8の複数のバレルシフタへ入力される。第2シフト部8の複数のバレルシフタに入力されたデータは第2シフト部8の複数のバレルシフタによって第1シフト部6によるシフトが戻され、第2シフト部8の複数のバレルシフタから出力されるデータで中間値記憶部2のレジスタファイルの値を更新するようにした。このため、復号装置100は、行演算計算に要する処理ステップ数を、FIFOメモリを用いる従来技術と比較して大幅に削減できる。
さらに、本実施の形態の復号装置100では、複数のレジスタファイルから列重みに基づいて選択されたデータと、受信軟判定データとがP並列列演算部9に入力され、P並列列演算部9の演算結果で中間値記憶部2のレジスタファイルの値が更新される。このため、復号装置100は、列演算計算に要する処理ステップ数を、FIFOメモリを用いる従来技術と比較して大幅に削減できる。したがって、本実施の形態の復号装置100は、高速の伝送速度にも対応したLDPC符号の復号を実現できる。
実施の形態2.
図7は、実施の形態2にかかる復号装置の機能構成例を示す図である。本実施の形態の復号装置100aは、実施の形態1の復号装置100に、入力切り替え部13および出力切り替え部14が追加されている。また、本実施の形態の復号装置100aは、記憶部1の代わりに記憶部1-a,1-bを備える。換言すると、本実施の形態では、記憶部は、第1記憶部である記憶部1-aと第2記憶部である記憶部1-bとを備える。これら以外の本実施の形態の復号装置100aの構成は、実施の形態1の復号装置100と同様である。実施の形態1と同様の機能を有する構成要素は実施の形態1と同一の符号を付して重複する説明を省略する。以下、実施の形態1と異なる点を主に説明する。
本実施の形態の復号装置100aの動作について説明する。記憶部1-a,1-bは、それぞれが実施の形態1の記憶部1と同様の構成である。本実施の形態では、入力切り替え部13に受信軟判定データが入力され、入力切り替え部13が、制御部3からの制御に基づいて、受信軟判定データの格納先を、1符号単位で、記憶部1-aと記憶部1-bとの間で切替える。例えば、制御部3は、はじめの1符号分の軟判定データは、記憶部1-aに書き込まれるように入力切り替え部13へ指示する。次に、1符号分の受信軟判定データがすべて入力されると、制御部3は入力切り替え部13へデータの出力先すなわち格納先の記憶部の切り替えを指示し、これにより、受信軟判定データは記憶部1-bへ書き込まれるようになる。記憶部1-aへの書き込み手順、および記憶部1-bへの書き込み手順については、それぞれ実施の形態1と同様である。
制御部3は、記憶部1-aへの1符号分の書込みが終了すると、出力切り替え部14へ、記憶部1-aに記憶されたデータを読み出すように指示する。これにより、復号装置100aでは、受信軟判定データが記憶部1-bに書き込まれている間、既に記憶部1-aに格納されている受信軟判定データを読み出して復号処理を行うことができる。同様に、記憶部1-bへの1符号分の受信軟判定データの書き込みが終了すると、入力切り替え部13へデータの出力先を記憶部1-aへ切り替えるよう指示するとともに、出力切り替え部14へ、記憶部1-bに記憶されたデータを読み出すように指示する。これにより、復号装置100aでは、受信軟判定データが記憶部1-aに書き込まれている間、既に記憶部1-bに格納されている受信軟判定データを読み出して復号処理を行うことができる。復号処理については実施の形態1と同様である。
以上のように、本実施の形態の復号装置100aが実行する復号方法は、記憶部1-aへ1符号分の受信データを書き込む第1書込みステップと、記憶部1-aへの1符号分の受信データの書き込みが終了すると受信データの書き込み先を記憶部1-bへ切り替える切り替えステップと、を含む。さらに、この復号方法は、記憶部1-bに受信データが書き込まれている間に、記憶部1-aに格納された受信データを用いて、実施の形態1で述べた復号処理を実行する。
本実施の形態の復号装置100aを構成する各部は、実施の形態1の復号装置100と同様に、専用のハードウェアである処理回路により実現されてもよいし、実施の形態1で述べた制御回路により実現されてもよく、これらの組み合わせにより実現されてもよい。
以上のように、本実施の形態の復号装置100aは、2つの記憶部である記憶部1-a,1-bを備え、受信軟判定データの格納先をこれら2つの間で切替える。これにより、受信軟判定データの書き込みと書込み中の符号の前の符号に対応する受信軟判定データの復号処理と同時に実施することができる。したがって、本実施の形態の復号装置100aは、実施の形態1と同様の効果が得られるとともに、実施の形態1の復号装置100より処理の高速化を図ることができる。
実施の形態3.
次に、実施の形態3の復号装置の動作について説明する。本実施の形態の復号装置の構成は、実施の形態1の復号装置100、または実施の形態2の復号装置100aと同様である。以下では、本実施の形態の復号装置が実施の形態1の復号装置100と同様の構成を有する例について説明する。
実施の形態1では、行演算処理において、中間値記憶部2の複数のレジスタファイルから、検査行列のP行単位の行重みに対応する個数のレジスタファイルが読み出される例を説明した。すなわち、実施の形態1では、検査行列の(N-K)行が、P行単位で(N-K)/P個のブロックに分割され、ブロックごとに、対応するレジスタファイルからデータが読み出されていた。本実施の形態では、行方向のブロックをP行分に固定せず、(P×X)行を1ブロックとする。Xは1以上の整数である。このように、検査行列を行方向に分割した複数の行ブロックの対応する行数は、それぞれX×P行分であり、行ブロックごとにXが定められる。
例えば、第1ブロックはP行、第2ブロックおよび第2ブロックはそれぞれ2P行に対応させる。例えば、P行単位の行重みが{6,5,5,5,4}であるとすると、第1ブロックの行重み(ブロック行重み)は6であり、第2ブロックの行重みは10であり、第3ブロックの行重みは9である。このように各ブロックを定義し、これに基づいて、各ブロックに対応して選択すべきレジスタファイルをテーブルとして定義しておく。これにより、図3のステップS12では、第1ブロックの処理では6個のレジスタファイルが選択され、第2ブロックの処理では10個のレジスタファイルが選択され、第3ブロックの処理では9個のレジスタファイルが選択されることになる。この場合、Bは3である。したがって、1回の行演算処理が、3つのブロックに分割されて実施されることになる。
以上のように、行方向のブロック(行ブロック)の分割方法が実施の形態1と異なり、これに伴って同じ検査行列を用いた場合でも、各ブロックに対応する行重みの値が実施の形態1と異なる場合があるが、この点を除き本実施の形態における行演算処理は実施の形態1と同様である。
本実施の形態では、実施の形態1に比べて行演算処理を分割するブロックの数を少なくすることができ、復号処理に要する処理ステップ数を少なくすることができる。このため、本実施の形態では、実施の形態1に比べて復号処理をより高速化することができる。なお、ここでは、実施の形態1の復号装置100が、ブロックの分割方法を実施の形態1と変更する例を説明したが、実施の形態2の復号装置100aの復号処理においても同様にブロックの分割方法を変えて、すなわち(P×X)行を1ブロックとして上記の動作を行うことも可能である。この場合、実施の形態2の復号装置100aに比べてより復号処理をより高速化することができる。
実施の形態4.
次に、実施の形態4の復号装置の動作について説明する。本実施の形態の復号装置の構成は、実施の形態1の復号装置100、または実施の形態2の復号装置100aと同様である。以下では、本実施の形態の復号装置が実施の形態1の復号装置100と同様の構成を有する例について説明する。
実施の形態1では、列演算処理において、中間値記憶部2の複数のレジスタファイルから、検査行列のP列単位の列重みに対応する個数のレジスタファイルからデータを読み出される例を説明した。すなわち、検査行列のN列が、P列単位でN/P個のブロックに分割され、ブロックごとに、対応するレジスタファイルからデータが読み出されていた。本実施の形態では、列方向のブロックをP列分に固定せず、(P×X)列を1ブロックとする。Xは1以上の整数である。このように、検査行列を列方向に分割した複数の列ブロックの対応する列数は、それぞれX×P列分であり、列ブロックごとにXが定められる。
例えば、第1ブロック~第4ブロックのそれぞれを2P列に対応させる。例えば、P列単位の列重みが{8,3,3,3,2,2,2,2}であるとすると、第1ブロックの列重み(ブロック列重み)は11であり、第2ブロックの列重みは6であり、第3ブロックの列重みは4であり、第4ブロックの列重みは4である。このように各ブロックを定義し、これに基づいて、各ブロックに対応して選択すべきレジスタファイルをテーブルとして定義しておく。これにより、図4のステップS22では、第1ブロックの処理では11個のレジスタファイルが選択され、第2ブロックの処理では6個のレジスタファイルが選択され、第3ブロックおよび第4ブロックの処理では、それぞれ4個のレジスタファイルが選択されることになる。この場合、Bは4である。したがって、1回の列演算処理が、4つのブロックに分割されて実施されることになる。
また、記憶部1からは、先頭アドレスから順に分割されたブロックごとにアドレスを2ずつインクリメントさせて、2アドレス分のデータを読み出してP並列列演算部9に入力する。以上のように、列方向のブロックの分割方法が実施の形態1と異なり、これに伴って同じ検査行列を用いた場合でも、各ブロックに対応する列重みの値が実施の形態1と異なる場合があるが、この点を除き本実施の形態における列演算処理は実施の形態1と同様である。
本実施の形態では、実施の形態1に比べて列演算処理を分割するブロックの数を少なくすることができ、復号処理に要する処理ステップ数を少なくすることができる。このため、本実施の形態では、実施の形態1に比べて復号処理をより高速化することができる。なお、ここでは、実施の形態1の復号装置100が、ブロックの分割方法を実施の形態1と変更する例を説明したが、実施の形態2の復号装置100aの復号処理においても同様にブロックの分割方法を変えて、すなわち(P×X)列を1ブロックとして上記の動作を行うことも可能である。この場合、実施の形態2の復号装置100aに比べてより復号処理をより高速化することができる。
また、実施の形態3で述べた復号装置に、さらに本実施の形態の行方向のブロックの分割方法を適用してもよい。これにより、行演算処理と列演算処理の両方を実施の形態1または実施の形態2に比べて高速化することができる。
以上の実施の形態に示した構成は、一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、実施の形態同士を組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
1,1-a,1-b 記憶部、2 中間値記憶部、3 制御部、4 テーブル記憶部、5 選択部、6 第1シフト部、7 P並列行演算部、8 第2シフト部、9 P並列列演算部、10 処理回路、11 プロセッサ、12 メモリ、13 入力切り替え部、14 出力切り替え部、100,100a 復号装置。

Claims (9)

  1. Pを2以上の整数とするとき検査行列がP行P列の小行列に分割可能な低密度パリティ検査符号の符号語を受信し受信データを記憶部する記憶部と、前記検査行列の列重みに応じた数の記憶領域を有する中間値記憶部とを備える復号装置、が実行する復号方法であって、
    前記受信データを前記記憶部からPワード単位で読み出し、前記検査行列のP列単位の列重みに基づいて読み出したデータを複製し、複製した前記データを前記中間値記憶部の対応する前記記憶領域へ書き込む格納ステップと、
    前記検査行列を行方向に分割した行ブロックごとに、前記中間値記憶部の当該行ブロックに対応する行重みの数の前記記憶領域からデータを読み出す選択ステップと、
    前記選択ステップで読み出された前記行重みの数の前記データを、読み出し元の前記記憶領域に対応する前記検査行列における値が1の要素の位置に応じてそれぞれシフトさせる第1シフトステップと、
    前記第1シフトステップによりシフトされた後の前記行重みの数の前記データを用いて、ワード単位で並列に、行演算処理を行う並列行演算ステップと、
    前記並列行演算ステップにより得られる前記行重みの数の演算結果を、前記第1シフトステップにおいて施されたシフトを元に戻すようにシフトさせる第2シフトステップと、
    前記第2シフトステップによってシフトされた後の前記行重みの数の前記演算結果を用いて前記中間値記憶部の対応する前記記憶領域の値を更新する第1更新ステップと、
    前記選択ステップ、前記第1シフトステップ、前記並列行演算ステップ、前記第2シフトステップおよび前記第1更新ステップを全ての行ブロックに関して実行させる第1制御ステップと、
    前記第1制御ステップの実行の後に前記中間値記憶部の前記記憶領域に記憶されている値を用いて、列演算処理を行う列演算処理ステップと、
    を含むことを特徴とする復号方法。
  2. 前記検査行列を構成する複数の前記小行列のそれぞれは、単位行列と、前記単位行列の値が1の要素のうちの1個以上が0になった行列である準単位行列と、前記単位行列または前記準単位行列をサイクリックシフトした行列であるシフト行列と、前記単位行列、前記準単位行列および前記シフト行列のうちの2つ以上の和である和行列と、0行列と、のうちのいずれかであることを特徴とする請求項1に記載の復号方法。
  3. 前記列演算処理ステップは、
    前記検査行列を行方向に分割した列ブロックごとに、前記中間値記憶部の当該列ブロックに対応するブロック列重みの数の前記記憶領域から、データを読み出す読み出しステップと、
    前記読み出しステップで読み出された前記ブロック列重みの数の前記データと前記受信データとを用いて、ワード単位で並列に、列演算処理を行う並列列演算ステップと、
    前記並列列演算ステップにより得られる前記ブロック列重みの数の前記演算結果を用いて前記中間値記憶部の対応する前記記憶領域の値を更新する第2更新ステップと、
    前記読み出しステップ、前記並列列演算ステップおよび前記第2更新ステップを全ての列ブロックに関して実行させる第2制御ステップと、
    を含むことを特徴とする請求項1または2に記載の復号方法。
  4. 前記検査行列を列方向に分割した複数の前記列ブロックの対応する列数は、Xを1以上の整数とするとき、それぞれX×P列分であり、前記列ブロックごとにXが定められることを特徴する請求項3に記載の復号方法。
  5. 前記検査行列を行方向に分割した複数の前記行ブロックの対応する行数は、Xを1以上の整数とするとき、それぞれX×P行分であり、前記行ブロックごとにXが定められることを特徴する請求項1から4のいずれか1つに記載の復号方法。
  6. 前記記憶部は第1記憶部と第2記憶部を備え、
    前記復号方法は、
    前記第1記憶部へ1符号分の前記受信データを書き込む第1書込みステップと、
    前記第1記憶部への1符号分の前記受信データの書き込みが終了すると前記受信データの書き込み先を前記第2記憶部へ切り替える切り替えステップと、
    前記第2記憶部に前記受信データが書き込まれている間に、前記第1記憶部に格納された前記受信データを用いて復号処理を実行することを特徴とする請求項1から5のいずれか1つに記載の復号方法。
  7. Pを2以上の整数とするとき検査行列がP行P列の小行列に分割可能な低密度パリティ検査符号の符号語を受信し受信データを記憶部する記憶部と、
    前記検査行列の列重みに応じた数の記憶領域を有する中間値記憶部と、
    前記検査行列を行方向に分割した行ブロックごとに、前記中間値記憶部の当該行ブロックに対応する行重みの数の前記記憶領域からデータを読み出す選択部と、
    前記選択部により読み出された前記行重みの数の前記データを、読み出し元の前記記憶領域に対応する前記検査行列における値が1の要素の位置に応じてそれぞれシフトさせる第1シフト部と、
    前記第1シフト部によりシフトされた後の前記行重みの数の前記データを用いて、ワード単位で並列に、行演算処理を行う並列行演算部と、
    前記並列行演算部により得られる前記行重みの数の演算結果を、前記第1シフト部において施されたシフトを元に戻すようにシフトさせる第2シフト部と、
    を備え、
    前記受信データが前記記憶部からPワード単位で読み出され、前記検査行列のP列単位の列重みに基づいて読み出されたデータが複製され、複製された前記データが前記中間値記憶部の対応する前記記憶領域へ書き込まれるよう制御し、前記第2シフト部によってシフトされた後の前記行重みの数の前記演算結果を用いて前記中間値記憶部の対応する前記記憶領域の値を更新するよう制御する制御部と、
    前記行演算処理の後に、前記中間値記憶部の前記記憶領域に記憶されている値を用いて、列演算処理を行う列演算処理部と、
    を備えることを特徴とする復号装置。
  8. Pを2以上の整数とするとき検査行列がP行P列の小行列に分割可能な低密度パリティ検査符号の符号語を受信し受信データを記憶部する記憶部と、前記検査行列の列重みに応じた数の記憶領域を有する中間値記憶部とを備える通信装置を制御するための制御回路であって、
    前記受信データを前記記憶部からPワード単位で読み出し、前記検査行列のP列単位の列重みに基づいて読み出したデータを複製し、複製した前記データを前記中間値記憶部の対応する前記記憶領域へ書き込む格納ステップと、
    前記検査行列を行方向に分割した行ブロックごとに、前記中間値記憶部の当該行ブロックに対応する行重みの数の前記記憶領域からデータを読み出す選択ステップと、
    前記選択ステップで読み出された前記行重みの数の前記データを、読み出し元の前記記憶領域に対応する前記検査行列における値が1の要素の位置に応じてそれぞれシフトさせる第1シフトステップと、
    前記第1シフトステップによりシフトされた後の前記行重みの数の前記データを用いて、ワード単位で並列に、行演算処理を行う並列行演算ステップと、
    前記並列行演算ステップにより得られる前記行重みの数の演算結果を、前記第1シフトステップにおいて施されたシフトを元に戻すようにシフトさせる第2シフトステップと、
    前記第2シフトステップによってシフトされた後の前記行重みの数の前記演算結果を用いて前記中間値記憶部の対応する前記記憶領域の値を更新する第1更新ステップと、
    前記選択ステップ、前記第1シフトステップ、前記並列行演算ステップ、前記第2シフトステップおよび前記第1更新ステップを全ての行ブロックに関して実行させる第1制御ステップと、
    前記第1制御ステップの実行の後に前記中間値記憶部の前記記憶領域に記憶されている値を用いて、列演算処理を行う列演算処理ステップと、
    を通信装置に実行させることを特徴とする制御回路。
  9. Pを2以上の整数とするとき検査行列がP行P列の小行列に分割可能な低密度パリティ検査符号の符号語を受信し受信データを記憶部する記憶部と、前記検査行列の列重みに応じた数の記憶領域を有する中間値記憶部とを備える通信装置を制御するためのプログラムを記憶するプログラム記憶媒体であって、
    前記プログラムは、
    前記受信データを前記記憶部からPワード単位で読み出し、前記検査行列のP列単位の列重みに基づいて読み出したデータを複製し、複製した前記データを前記中間値記憶部の対応する前記記憶領域へ書き込む格納ステップと、
    前記検査行列を行方向に分割した行ブロックごとに、前記中間値記憶部の当該行ブロックに対応する行重みの数の前記記憶領域からデータを読み出す選択ステップと、
    前記選択ステップで読み出された前記行重みの数の前記データを、読み出し元の前記記憶領域に対応する前記検査行列における値が1の要素の位置に応じてそれぞれシフトさせる第1シフトステップと、
    前記第1シフトステップによりシフトされた後の前記行重みの数の前記データを用いて、ワード単位で並列に、行演算処理を行う並列行演算ステップと、
    前記並列行演算ステップにより得られる前記行重みの数の演算結果を、前記第1シフトステップにおいて施されたシフトを元に戻すようにシフトさせる第2シフトステップと、
    前記第2シフトステップによってシフトされた後の前記行重みの数の前記演算結果を用いて前記中間値記憶部の対応する前記記憶領域の値を更新する第1更新ステップと、
    前記選択ステップ、前記第1シフトステップ、前記並列行演算ステップ、前記第2シフトステップおよび前記第1更新ステップを全ての行ブロックに関して実行させる第1制御ステップと、
    前記第1制御ステップの実行の後に前記中間値記憶部の前記記憶領域に記憶されている値を用いて、列演算処理を行う列演算処理ステップと、
    を通信装置に実行させることを特徴とするプログラム記憶媒体。
JP2021572484A 2020-02-27 2020-02-27 復号方法、復号装置、制御回路およびプログラム記憶媒体 Active JP7051024B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/008111 WO2021171506A1 (ja) 2020-02-27 2020-02-27 復号方法、復号装置、制御回路およびプログラム記憶媒体

Publications (2)

Publication Number Publication Date
JPWO2021171506A1 JPWO2021171506A1 (ja) 2021-09-02
JP7051024B2 true JP7051024B2 (ja) 2022-04-08

Family

ID=77492079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021572484A Active JP7051024B2 (ja) 2020-02-27 2020-02-27 復号方法、復号装置、制御回路およびプログラム記憶媒体

Country Status (3)

Country Link
US (1) US20220329261A1 (ja)
JP (1) JP7051024B2 (ja)
WO (1) WO2021171506A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024004047A1 (ja) 2022-06-28 2024-01-04 三菱電機株式会社 復号装置、制御回路、記憶媒体および検査行列生成方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009100422A (ja) 2007-10-19 2009-05-07 Sony Corp 受信装置および方法、並びにプログラム
US20100275088A1 (en) 2009-04-22 2010-10-28 Agere Systems Inc. Low-latency decoder
US20180157551A1 (en) 2016-12-01 2018-06-07 Western Digital Technologies, Inc. Ecc decoder with selective component disabling based on decoding message resolution

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
WO2006011744A2 (en) * 2004-07-27 2006-02-02 Lg Electronics Inc. Method of encoding and decoding using low density parity check code
US8359522B2 (en) * 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
JP2009100222A (ja) * 2007-10-16 2009-05-07 Toshiba Corp 低密度パリティ検査符号の復号装置およびその方法
JP5320964B2 (ja) * 2008-10-08 2013-10-23 ソニー株式会社 サイクリックシフト装置、サイクリックシフト方法、ldpc復号装置、テレビジョン受像機、及び、受信システム
US9459956B2 (en) * 2013-07-19 2016-10-04 Seagate Technology Llc Data decoder with trapping set flip bit mapper
US10530392B2 (en) * 2017-07-31 2020-01-07 Codelucida, Inc. Vertical layered finite alphabet iterative decoding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009100422A (ja) 2007-10-19 2009-05-07 Sony Corp 受信装置および方法、並びにプログラム
US20100275088A1 (en) 2009-04-22 2010-10-28 Agere Systems Inc. Low-latency decoder
US20180157551A1 (en) 2016-12-01 2018-06-07 Western Digital Technologies, Inc. Ecc decoder with selective component disabling based on decoding message resolution

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZTE, ZTE MICROELECTRONICS,Complexity, throughput and latency considerations on LDPC codes for eMBB,3GPP TSG RAN WG1 #88 R1-1701599,2017年02月07日,pp.1-12

Also Published As

Publication number Publication date
US20220329261A1 (en) 2022-10-13
JPWO2021171506A1 (ja) 2021-09-02
WO2021171506A1 (ja) 2021-09-02

Similar Documents

Publication Publication Date Title
US6961888B2 (en) Methods and apparatus for encoding LDPC codes
JP5112468B2 (ja) 誤り検出訂正回路、メモリコントローラ、および半導体メモリ装置
KR101198536B1 (ko) 저밀도 패리티 체크(ldpc) 코드들의 인코딩 및 디코딩
CA2536259C (en) Methods and apparatus for encoding ldpc codes
KR101504101B1 (ko) 적어도 두 개의 디코딩 매소드를 디코딩하기 위한 asip 아키텍처
US10153781B2 (en) Decoder for low-density parity-check codes
KR100789859B1 (ko) 이레귤러 저밀도 패리티 검사 부호 복호기 및 방법
KR20160122261A (ko) 구조적 ldpc의 인코딩 방법, 디코딩 방법, 인코딩 장치 및 디코딩 장치
CN111162797A (zh) 一种速率兼容的5g ldpc码的编码装置及编码方法
KR20130029080A (ko) 소거 없는 플래시 메모리의 다중 프로그래밍
WO2011109084A1 (en) Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size
WO2007018590A1 (en) Method and apparatus for block and rate independent decoding of ldpc codes
US20150012795A1 (en) Error correction decoder and error correction decoding method
US8020063B2 (en) High rate, long block length, low density parity check encoder
KR102019893B1 (ko) 저밀도 패리티 검사 부호를 지원하는 통신 시스템에서 신호 수신 장치 및 방법
JP7051024B2 (ja) 復号方法、復号装置、制御回路およびプログラム記憶媒体
CN105680877A (zh) 一种cc-qc-ldpc码的构建方法及译码装置
JP5146322B2 (ja) 復号装置、復号方法
CN111384970B (zh) 一种译码方法、装置及通信设备
JP2005045735A (ja) 符号検出装置及び方法、復号装置及び方法、並びに情報処理装置及び方法
JP2009260692A (ja) 復号装置及び復号方法
CN115694513A (zh) 一种基于移位型基图的超高吞吐率ldpc译码器
US20150254130A1 (en) Error correction decoder
TWI730582B (zh) 具有多模式的資料移位運算裝置及方法
JP5510447B2 (ja) 復号装置および復号方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211206

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20211206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220329

R150 Certificate of patent or registration of utility model

Ref document number: 7051024

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150