(57)【要約】【課題】回路規模を小さくでき、消費電力を低減できる可変シフタを提供する。【解決手段】  可変シフタは、複数のデータ要素を含む入力データをシフトする可変シフタであって、前記入力データまたはシフトされたデータが入力される複数のシフト部と、入力データのデータ要素数と、データ要素数より少ないパターン数を有する入力シフト量と、に応じて、シフト部毎に、複数のシフト量を含む所定のシフト量セットから１つのシフト量を選択する制御部と、を備え、シフト部は、シフト部に入力されるデータを、制御部により選択されたシフト量に応じてシフトする。【選択図】図１
2015154119.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ要素を含む入力データをシフトする可変シフタであって、
前記入力データまたはシフトされたデータが入力される複数のシフト部と、
前記入力データのデータ要素数と、前記データ要素数より少ないパターン数を有する入力シフト量と、に応じて、前記シフト部毎に、複数のシフト量を含む所定のシフト量セットから１つのシフト量を選択する制御部と、
を備え、
前記シフト部は、前記入力されるデータを、前記制御部により選択されたシフト量に応じてシフトする可変シフタ。
【請求項２】
請求項１に記載の可変シフタであって、
前記制御部は、前記入力データのデータ要素数をＭ、前記入力シフト量をｓ、選択されるシフト量をｓｎ（ｎは整数）とした場合、前記シフト部毎に、前記シフト量セットから、
ｓ＝（ｓ１＋ｓ２＋・・・＋ｓｎ）ｍｏｄＭ
を満たすシフト量を選択する可変シフタ。
【請求項３】
請求項２に記載の可変シフタであって、
前記制御部は、所定の第１のシフト量セットから１つのシフト量を第１のシフト量として選択し、所定の第２のシフト量セットから１つのシフト量を第２のシフト量として選択し、
前記複数のシフト部は、前記第１のシフト量に応じて、前記入力データをシフトする第１のシフト部と、前記第２のシフト量に応じて、前記第１のシフト部によりシフトされたデータをシフトする第２のシフト部と、を含む可変シフタ。
【請求項４】
請求項１ないし３のいずれか１項に記載の可変シフタであって、
前記制御部は、前記シフト部毎に、所定の検査行列における処理対象の領域に応じて、前記シフト量セットからシフト量を選択する可変シフタ。
【請求項５】
請求項４に記載の可変シフタであって、
前記制御部は、前記シフト部毎に、前記入力データの符号化率に応じて、前記シフト量セットからシフト量を選択する可変シフタ。
【請求項６】
請求項３に記載の可変シフタであって、
前記第１のシフト量セットは、所定量未満のシフト量を複数含み、
前記第２のシフト量セットは、前記所定量の倍数のシフト量を複数含む可変シフタ。
【請求項７】
請求項６に記載の可変シフタであって、
前記入力シフト量として、複数のパターンを含み、
複数のシフト量を含む各シフト量セットから、前記入力シフト量の全てのパターンにおいて、
ｓ＝（ｓ１＋ｓ２＋・・・＋ｓｎ）ｍｏｄＭ
を満たすために用いられないシフト量が除外された可変シフタ。
【請求項８】
請求項３に記載の可変シフタであって、
前記入力シフト量として、複数のパターンが存在し、
前記第１のシフト量セットに含まれる前記第１のシフト量の個数と前記第２のシフト量セットに含まれる前記第２のシフト量の個数との積が、前記入力シフト量のパターン数以上であり、
各シフト量セットは、前記入力シフト量の全パターンに対して、
ｓ＝（ｓ１＋ｓ２＋・・・＋ｓｎ）ｍｏｄＭ
を満たすシフト量を含む可変シフタ。
【請求項９】
線形符号を用いて符号化されたデータを復号する復号器であって、
複数の可変シフタと、
複数のデータ要素を含む入力データ又は前記可変シフタからのデータに応じて、列処理演算する列処理演算部と、
前記可変シフタからのデータに応じて、行処理演算する行処理演算部と、
を備え、
前記可変シフタは、
前記入力データまたはシフトされたデータが入力される複数のシフト部と、
前記入力データのデータ要素数と、前記データ要素数より少ないパターン数を有する入力シフト量と、に応じて、前記シフト部毎に、複数のシフト量を含む所定のシフト量セットから１つのシフト量を選択する制御部と、
を備え、
前記シフト部は、前記入力されるデータを、前記制御部により選択されたシフト量に応じてシフトする復号器。
【請求項１０】
入力データまたはシフトされたデータが入力される複数のシフト部を含み、複数のデータ要素を含む入力データをシフトする可変シフタにおけるデータシフト方法であって、
前記入力データのデータ要素数と、前記データ要素数より少ないパターン数を有する入力シフト量と、に応じて、前記シフト部毎に、複数のシフト量を含む所定のシフト量セットから１つのシフト量を選択するステップと、
前記シフト部に入力されるデータを、前記選択されたシフト量に応じてシフトするステップと、
を有するデータシフト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、可変シフタ、ＬＤＰＣ復号器、及びデータシフト方法に関する。
【背景技術】
【０００２】
シャノン限界に近いビット誤り率を実現でき、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）において復号器を実現できる誤り訂正符号化方法として、低密度パリティ検査（ＬＤＰＣ：Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ−ｃｈｅｃｋ  Ｃｏｄｅ）符号が知られている。
【０００３】
近年、複数のＬＤＰＣ符号において、符号器の構成が比較的容易であるＱＣ−ＬＤＰＣ（Ｑｕａｓｉ−Ｃｙｃｌｉｃ  ＬＤＰＣ）符号が知られている。ＱＣ−ＬＤＰＣは、多くの産業分野において活用されている。例えば、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）において使用されるＩＥＥＥ８０２．１１ｎ規格、６０ＧＨｚ帯を用いた近距離無線通信規格であるＩＥＥＥ８０２．１１ａｄ規格において、ＱＣ−ＬＤＰＣ符号が用いられる。
【０００４】
非特許文献１では、ＩＥＥＥ８０２．１１ａｄ規格の詳細について開示されている。
【０００５】
ＱＣ−ＬＤＰＣ符号化されたデータは、ＬＤＰＣ復号器により復号される。ＬＤＰＣ復号器によるＬＤＣＰ復号法として、例えば、Ｓｕｍ−Ｐｒｏｄｕｃｔ復号法、Ｍｉｎ−Ｓｕｍ復号法、Ｂｉｔ−Ｆｌｉｐｐｉｎｇ復号法、が知られている。上記復号法では、いずれも、バレルシフタによりデータをシフトし、列処理演算及び行処理演算が繰り返されることにより、復号される。例えば、高速無線通信に応用されるＬＤＰＣ復号器は、並列処理により列処理演算及び行処理演算する。
【０００６】
従来のＬＤＰＣ復号器の構成が、非特許文献２に記載されている。非特許文献２では、Ｍｉｎ−Ｓｕｍ復号法の一種であるオフセットＭｉｎ−Ｓｕｍ復号法が説明されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】ＩＥＥＥ  ８０２．１１ａｄ−２０１２  ２１.３．８項（４５２頁）
【非特許文献２】Ｍａｔｔｈｅｗ  Ｗｅｉｎｅｒ;  Ｂｏｒｉｖｏｊｅ  Ｎｉｋｏｌｉｃ;  Ｚｈｅｎｇｙａ  Ｚｈａｎｇ;  “ＬＤＰＣ  Ｄｅｃｏｄｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｈｉｇｈ−Ｄａｔａ  Ｒａｔｅ  Ｐｅｒｓｏｎａｌ−Ａｒｅａ  Ｎｅｔｗｏｒｋｓ”  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｉｒｃｕｉｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  （ＩＳＣＡＳ）,  ２０１１.  Ｐａｇｅｓ:  １７８４−１７８７
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のＬＤＰＣ復号器に用いられるバレルシフタは、多数のセレクタ回路を必要とするので、回路規模が増大し、消費電力が増大する。また、多数のセレクタを縦列に接続するので、回路の遅延が大きく、高速化が困難である。
【０００９】
本開示は、上記事情に鑑みてなされたものであり、回路規模を小さくでき、消費電力を低減できる可変シフタ、ＬＤＰＣ復号器、及びデータシフト方法を提供する。
【課題を解決するための手段】
【００１０】
本開示の可変シフタは、複数のデータ要素を含む入力データをシフトする可変シフタであって、前記入力データまたはシフトされたデータが入力される複数のシフト部と、前記入力データのデータ要素数と、前記データ要素数より少ないパターン数を有する入力シフト量と、に応じて、前記シフト部毎に、複数のシフト量を含む所定のシフト量セットから１つのシフト量を選択する制御部と、を備え、前記シフト部は、前記入力されるデータ又は前記シフトされたデータを、前記制御部により選択されたシフト量に応じてシフトする。
【発明の効果】
【００１１】
本開示によれば、回路規模を小さくでき、消費電力を低減できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態における可変シフタの構成例を示すブロック図
【図２】第１の実施形態におけるシフトの概念を示す模式図
【図３】第１の実施形態における各シフト量の関係の第１例を示す模式図
【図４】従来の可変シフタと第１の実施形態の可変シフタとの回路規模の比較例を示す模式図
【図５】第１の実施形態における各シフト量の関係の第２例を示す模式図
【図６】第１の実施形態における各シフト量の関係の第３例を示す模式図
【図７】第２の実施形態における可変シフタの構成例を示すブロック図
【図８】第２の実施形態における各シフト量の関係の一例を示す模式図
【図９】第３の実施形態におけるＬＤＰＣ復号器の構成例を示すブロック図
【図１０】第３の実施形態における可変シフタの構成例を示すブロック図
【図１１】第３の実施形態における検査行列の列番号と各シフト量との関係の第１例を示す模式図
【図１２】第３の実施形態における検査行列の列番号と各シフト量との関係の第２例を示す模式図
【図１３】第４の実施形態におけるＬＤＰＣ復号器の構成例を示すブロック図
【図１４】（Ａ）第４の実施形態における符号化率１／２での検査行列の一例を示す模式図、（Ｂ）第４の実施形態における符号化率５／８での検査行列の一例を示す模式図
【図１５】（Ａ）第４の実施形態における符号化率３／４での検査行列の一例を示す模式図、（Ｂ）第４の実施形態における符号化率１３／１６での検査行列の一例を示す模式図
【図１６】（Ａ）第４の実施形態における符号化率１／２での検査行列の列番号と各シフト量との関係の第１例を示す模式図、（Ｂ）第４の実施形態における符号化率５／８での検査行列の列番号と各シフト量との関係の第１例を示す模式図、（Ｃ）第４の実施形態における符号化率３／４での検査行列の列番号と各シフト量との関係の第１例を示す模式図、（Ｄ）第４の実施形態における符号化率１３／１６での検査行列の列番号と各シフト量との関係の第１例を示す模式図
【図１７】第４の実施形態における可変シフタの第１構成例を示すブロック図
【図１８】（Ａ）第４の実施形態における符号化率１／２での検査行列の列番号と各シフト量との関係の第２例を示す模式図、（Ｂ）第４の実施形態における符号化率５／８での検査行列の列番号と各シフト量との関係の第２例を示す模式図、（Ｃ）第４の実施形態における符号化率３／４における検査行列の列番号と各シフト量との関係の第２例を示す模式図、（Ｄ）第４の実施形態における符号化率１３／１６での検査行列の列番号と各シフト量との関係の第２例を示す模式図
【図１９】第４の実施形態における可変シフタの第２構成例を示すブロック図
【図２０】（Ａ）第４の実施形態における符号化率１／２での検査行列の列番号と各シフト量との関係の第３例を示す模式図、（Ｂ）第４の実施形態における符号化率５／８での検査行列の列番号と各シフト量との関係の第３例を示す模式図、（Ｃ）第４の実施形態における符号化率３／４での検査行列の列番号と各シフト量との関係の第３例を示す模式図、（Ｄ）第４の実施形態における符号化率１３／１６での検査行列の列番号と各シフト量との関係の第３例を示す模式図
【図２１】ＩＥＥＥ８０２．１１ａｄにおいて用いられる検査行列の一例を示す模式図
【図２２】図２１に示した検査行列の行列要素Ｐ３５を示す模式図
【図２３】従来のＬＤＰＣ復号器の回路構成を示すブロック図
【図２４】従来のバレルシフタの構成を示すブロック図
【発明を実施するための形態】
【００１３】
以下、本開示の実施形態について、図面を用いて説明する。
【００１４】
（本開示の一形態を得るに至った経緯）
図２１は、ＩＥＥＥ８０２．１１ａｄにおいて用いられる検査行列ＣＭ１０の一例を示す模式図である。検査行列ＣＭ１０は、３３６行６７２列の行列であり、検査行列ＣＭ１０の各要素は０又は１の値である。図２１では、「０」は４２行４２列の零行列を表す。「Ｐｎ（ｎ：０〜４１の整数）」は、４２行４２列の単位行列を行方向にｎ列分、巡回シフトした行列を表す。図２２は、「Ｐ３５」を示す模式図である。また、「Ｐ０」は単位行列である。
【００１５】
検査行列ＣＭ１０は、各要素が４２行４２列の行列を示すので、実際には３３６行６７２列の行列である。以降の説明では、例えば、Ｐ３５，Ｐ２９，Ｐ３７，Ｐ２５を含む部分を第一列、Ｐ１９，Ｐ３０，Ｐ３１，Ｐ２２を含む部分を第二列、と呼ぶ。従って、図２１では、第十六列まで存在する。同様に、行についても、第一行〜第四行と呼ぶ。
【００１６】
次に、従来のＬＤＰＣ復号器について説明する。ＬＤＰＣ復号器は、ＬＤＰＣ符号化されたビット系列を受信し、誤り訂正し、送信情報を推定する。送信情報は、ＬＤＰC符号器により符号化される前のデータである。
【００１７】
図２３は、従来のＬＤＰＣ復号器の回路構成を示す模式図である。ＬＤＰＣ復号器３０００は、ＱＣ−ＬＤＰＣ符号化されたデータを復号する回路である。ここで用いる検査行列も各要素が４２行４２列の行列を有する。
【００１８】
ＬＤＰＣ復号器３０００は、入力メモリ３１００と、出力メモリ３２００と、列処理演算器３３００と、４つの行処理演算器３４１０，３４２０，３４３０，３４４０と、８つのバレルシフタ３５１０，３５２０，３５３０，３５４０，３６１０，３６２０，３６３０，３６４０と、を備える。
【００１９】
入力メモリ３１００には、誤り訂正（ＬＤＰＣ復号）前の受信データが保存される。列処理演算器３３００は、４２×４（即ち１６８）個の列処理演算を並列処理する。なお、列処理演算器３３００は、出力データを並び替える場合がある。
【００２０】
行処理演算器３４１０，３４２０，３４３０，３４４０は、それぞれ４２個の行処理演算を並列処理する。出力メモリ３２００は、ＬＤＰＣ復号結果、即ちＬＤＰＣ復号器の出力データを格納する。
【００２１】
バレルシフタ３５１０，３５２０，３５３０，３５４０，３６１０，３６２０，３６３０，３６４０は、それぞれ、４２行４２列の行列となる各要素に対応するため、４２個の入力データを巡回シフトして出力する。
【００２２】
なお、ＱＣ−ＬＤＰＣ符号以外のＬＤＰＣ符号に対応する場合、バレルシフタの替わりに、検査行列に応じて、より複雑な並び替え回路が用いてもよい。
【００２３】
次に、図２４は、バレルシフタ３５１０の構成の詳細を示す模式図である。バレルシフタ３５１０は、６つの固定シフタ３５１１ａ，３５１１ｂ，３５１１ｃ，３５１１ｄ，３５１１ｅ，３５１１ｆと、６つのマルチプレクサ３５１２ａ，３５１２ｂ，３５１２ｃ，３５１２ｄ，３５１２ｅ，３５１２ｆと、を備える。
【００２４】
６つの固定シフタ３５１１ａ〜３５１１ｆは、入力される４２個のデータに対し、それぞれ「１」、「２」、「４」、「８」、「１６」、「３２」の巡回シフトを行う。なお、図面（例えば図２４）では、「シフトｎ（ｎ：整数）」は、「ｎ」の巡回シフトを示す。
【００２５】
マルチプレクサ（ＭＵＸ：Ｍｕｌｔｉｐｌｅｘｅｒ）３５１２ａ〜３５１２ｆは、それぞれ、シフトされていない４２個のデータと、シフトされた４２個のデータと、のいずれかを選択する。マルチプレクサ３５１２ａ〜３５１２ｆは、それぞれ、２入力マルチプレクサであり、４２個の２入力１出力のセレクタ回路を含む構成である。つまり、バレルシフタ３５１０は、２５２個のセレクタ回路を含む構成である。
【００２６】
バレルシフタ３５１０は、４２個の入力データに対して０〜４１のうちの任意の数によってシフトできる。
【００２７】
例えば、「１９」のシフト（「シフト１９」）を行う場合、マルチプレクサ３５１２ａ，３５１２ｂ，３５１２ｅは、シフトされた４２個のデータを選択し、他のマルチプレクサ３５１２ｃ，３５１２ｄ，３５１２ｆは、シフトされていない４２個のデータを選択する。
【００２８】
なお、図２３に示す従来のＬＤＰＣ復号器としては、８個のバレルシフタが必要となるので、２５２×８（即ち２０１６）個のセレクタ回路が必要となる。このため、従来のＬＤＰＣ復号器では、多数のセレクタ回路を必要とすることにより回路規模が増大し、消費電力が増大する。
【００２９】
以下では、回路規模を小さくできるため、消費電力が低減できる可変シフタ、ＬＤＰＣ復号器、及びデータシフト方法について説明する。
【００３０】
以下の実施形態における可変シフタは、例えば、データを指定されたシフト数分、シフトする機能を有し、ＬＤＰＣ符号器、ＬＤＰＣ復号器に用いられるシフタを含む。また、可変シフタは、例えば、上記ＬＤＰＣ以外の誤り訂正を扱う誤り訂正符号器、誤り訂正復号器、暗号化回路、又は代数的演算を行う回路、に用いられてもよい。
【００３１】
以下の実施形態におけるＬＤＰＣ復号器は、例えば、検査行列に巡回シフトを表す部分行列を含むＬＤＰＣ符号により符号化されたデータを復号する機能を有する。ＬＤＰＣ復号器は、例えば、無線通信における受信機に用いられる。ＬＤＰＣ復号器は、例えば、ディスクドライブ又はメモリ媒体の誤り訂正を行ってもよい。
【００３２】
（第１の実施形態）
図１は、第１の実施形態における可変シフタ１００の構成例を示すブロック図である。可変シフタ１００は、シフタ１１０，１２０、及び制御部１３０を含む構成である。シフタ１１０は、マルチプレクサ１１１及び固定シフタ１１２，１１３，１１４を含む。シフタ１２０は、マルチプレクサ１２１及び固定シフタ１２２，１２３，１２４，１２５を含む。
【００３３】
可変シフタ１００は、Ｍビット（例えば４２ビット）の入力データに対し、指定されたシフト量ｓ分、入力データをシフトし、シフトされたデータを出力する。「Ｍ」は、入力データのデータ要素数の一例である。シフト量ｓは、例えば、本実施形態では不図示であるが、ＬＤＰＣ復号器の一部（例えば図９の制御部１７００）により指定される。可変シフタ１００は、シフト量ｓを変更できる。
【００３４】
シフタ１１０は、制御部１３０により指定されたシフト量ｓ１を用いて、Ｍビットの入力データをシフトし、シフトされたデータを出力する。シフタ１２０は、制御部１３０により指定されたシフト量ｓ２を用いて、シフタ１１０からのＭビットのデータを再度シフトし、再度シフトされたデータを出力する。シフト量ｓ１，ｓ２は、制御部１３０により指定される。なお、図１のシフタ１１０では、シフト量ｓ１が「０」となる場合でも、シフトされたデータとして説明する。
【００３５】
シフト量ｓは、入力シフト量の一例である。シフト量ｓ１は、第１のシフト量の一例であり、シフト量ｓ２は、第２のシフト量の一例である。シフタ１１０は、第１のシフト部の一例である。シフタ１２０は、第２のシフト部の一例である。
【００３６】
固定シフタ１１２〜１１４，１２２〜１２４は、入力されるＭ個のデータに対し、それぞれ「１」、「２」、「３」、「１７」、「３２」、「３８」によって巡回シフトする。
【００３７】
マルチプレクサ１１１は、シフトされていないＭ個のデータと、３種類のシフトされたＭ個のデータと、のいずれかを選択する。３種類のシフトされたＭ個のデータは、例えば、シフト１，シフト３，シフト３８、を含む。なお、シフトされていないＭ個のデータは、シフト量０のデータと同じ意味である。なお、ここで、シフト量０、１，３，３８をシフト量ｓ１の要素と呼ぶ。
【００３８】
マルチプレクサ１２１は、４種類のシフトされたＭ個のデータのいずれかを選択する。４種類のシフトされたＭ個のデータは、例えば、シフト２，シフト１７，シフト３２、シフト３８、を含む。なお、ここで、シフト量２，１７，３２，３８をシフト量ｓ２の要素と呼ぶ。
【００３９】
図１では、マルチプレクサ１１１，１２１は、それぞれ、４入力マルチプレクサであり、Ｍ個（例えば４２個）の４入力１出力のセレクタ回路を含む構成である。
【００４０】
図２は、可変シフタ１００によるシフトの概念を示す模式図である。図２では、入力データのサイズをＭ＝２０ビット、指定されたシフト量をｓ＝７としている。入力データの０番目のデータビットｄ０は、シフトにより、図２において７個右の位置へ移動される。同様に、データビットｄ１〜ｄ１２が７個右の位置に移動される。また、データビットｄ１３〜ｄ１９の７個は、巡回して先頭位置に移動される。
【００４１】
シフト量ｓの取りうる値は、０以上Ｍ未満の整数である。従来の可変シフタ（例えば、非特許文献２のバレルシフタ）では、シフト量ｓとして、０以上Ｍ未満の任意の整数、即ちＭ通りの整数が指定される。一方、可変シフタ１００では、シフト量ｓは、０以上Ｍ未満の整数のうちＫ個（Ｋ通り）を取りうることが予め定められている。「Ｋ」は、２以上Ｍ未満の整数であり、シフト量ｓの種類（パターン数）を示す。
【００４２】
次に、制御部１３０の動作例について説明する。
【００４３】
図３は、入力データのサイズをＭ＝４２ビットとした本実施形態のシフト量ｓ，ｓ１，ｓ２の関係の第１例を示す模式図である。図３では、シフト量ｓは、図３の第１列（最も左側の列）に記載された１６通りである。
【００４４】
変数Ｋの値、および、シフト量ｓの１６通りの値は、可変シフタの用途に応じてあらかじめ定められている。図３に示した値は、前述のＩＥＥＥ８０２．１１ａｄ規格に規定されたＬＤＰＣ検査行列に基づき定めた値である。なお、図３のシフト量ｓは一例として示したものであり、可変シフタの用途に応じて、図３に示した値と異なる値を用いても良い。なお、検査行列は、図示しないＬＤＰＣ符号化装置と共有されている。
【００４５】
即ち、図３の変数Ｋの値は１６である。制御部１３０は、入力されたシフト量ｓから、例えば図３の表に従い、２つのシフト量ｓ１，ｓ２を決定する。例えば、ｓ＝２では、制御部１３０は、ｓ１＝０，ｓ２＝２と定める。
【００４６】
制御部１３０は、シフト量ｓ１，ｓ２の値として、予め定められたシフト量ｓの値に対して（式１）を満たす値を決定する。
ｓ＝（ｓ１＋ｓ２）ｍｏｄＭ      ・・・（式１）
なお、「ｍｏｄ」は、剰余演算子を示す。
ここで、シフト量ｓが１３の場合は、シフト量ｓ１が３８、シフト量ｓ２が１７であるため、（３８＋１７）ｍｏｄ４２＝１３となり、（式１）を満たす。
【００４７】
シフト量ｓ１，ｓ２の値が決定されると、制御部１３０は、シフト量ｓ１，ｓ２に従い、シフタ１１０，１２０を制御する。図３では、シフト量ｓ１の取りうる値は、（式１）より、０，１，３，３８の４通りと定めることができるため、シフタ１１０は、シフト量０，１，３，３８のいずれかについてシフト処理する。なお、図３のシフト量ｓ１の取りうる値は、複数のシフト量を含むシフト量セットの一例であり、Ｍ、変数Ｋによって定まる第１のシフト量セットの一例である。
【００４８】
マルチプレクサ１１１は、固定シフタ１１２，１１３，１１４の出力データ、及び入力データ、のうちのいずれか１つを選択して出力する。例えば、マルチプレクサ１１１は、ｓ１＝０であれば入力データを選択し、ｓ１＝１であれば固定シフタ１１２の出力を選択する。
【００４９】
同様に、図３では、シフト量ｓ２の取りうる値は、２，１７，３２，３８の４通りと定めることができる。シフト量ｓ２の取りうる値は、複数のシフト量を含むシフト量セットの一例であり、第２のシフト量セットの一例である。
【００５０】
次に、図２４に示した可変シフタ（バレルシフタ）と、本実施形態の可変シフタ１００と、を比較する。
【００５１】
図４は、図２４のバレルシフタ３５１０と、本実施形態の可変シフタ１００との、回路規模の比較例を示す模式図である。ここでは、Ｍビット且つ２入力のマルチプレクサの回路規模を「Ｘ」とし、相対回路規模を比較する。
【００５２】
バレルシフタ３５１０では、Ｍビット且つ２入力のマルチプレクサ３５１２ａ〜３５１２ｆを６段必要とするので、相対回路規模は「６Ｘ」である。一方、可変シフタ１００では、Ｍビット且つ４入力のマルチプレクサ１１１，１２１を２段必要とする。Ｍビット且つ４入力のマルチプレクサ１１１，１２１は、Ｍビット且つ２入力のマルチプレクサの２倍の回路規模であるから、本実施形態の可変シフタ１００では、相対回路規模は「４Ｘ」である。
【００５３】
以上から、バレルシフタ３５１０に比べ、可変シフタ１００は、約３３％回路規模が小さい。回路規模が小さいことにより、消費電力も小さくなる。
【００５４】
また、バレルシフタ３５１０では、マルチプレクサ３５１２ａ〜３５１２ｆが縦列に６段接続される。一方、可変シフタ１００では、マルチプレクサ１１１，１２１が、縦列に６段よりも少ない２段接続される。従って、可変シフタ１００は、バレルシフタ３５１０よりも高速に動作できる。
【００５５】
可変シフタ１００が高速に動作することにより、可変シフタ１００では、バレルシフタ３５１０よりも、ＬＳＩの動作周波数を高くでき、高い処理能力を実現できる。また、可変シフタ１００では、バレルシフタ３５１０よりも、ＬＳＩの駆動電圧を低下でき、消費電力を小さくできる。
【００５６】
このため、可変シフタ１００は、シフト量ｓに対して２つのシフト量ｓ１，ｓ２を決定する。可変シフタ１００は、シフト量ｓ１に対してシフトするシフタ１１０と、シフト量ｓ２に対してシフトするシフタ１２０、を備える。
【００５７】
可変シフタ１００によれば、予め定められたシフト量ｓ１と予め定められたシフト量ｓ２との組み合わせを制御してシフトできるので、入力されたシフト量ｓに応じてシフトできる。また、シフト量ｓの種類（変数Ｋ）を限定することで、シフト量ｓ１，ｓ２の要素の数が入力データの要素数よりも少なくすることができ、巡回シフタ回路におけるセレクタ回路の数を少なくできる。従って、可変シフタ１００の回路規模を縮小し、可変シフタ１００の消費電力を低減でき、可変シフタ１００が高速に動作できる。
【００５８】
なお、本実施形態では、シフト量ｓ１，ｓ２の値が図３に示した値であることを主に例示したが、シフト量ｓ１，ｓ２の値は、（式１）を満たす別の値でも良い。図５は、シフト量ｓ，ｓ１，ｓ２の関係の第２例を示す模式図である。
【００５９】
なお、本実施形態では、取りうるシフト量ｓの値は、図３の第１列に示す１６個であることを主に例示したが、別の値を用いても良い。また、Ｋ＝１６に限らず、２以上Ｍ未満の範囲において、Ｋの値として別の値を用いてもよい。図６は、シフト量ｓ，ｓ１，ｓ２の関係の第３例を示す模式図である。
【００６０】
なお、本実施形態では、入力データはＭビットのデータであることを主に例示したが、例えば、入力データが、Ｍ個のワードデータ、Ｍ個の尤度値、Ｍ本のデジタル信号、でもよい。
【００６１】
（第２の実施形態）
図７は、第２の実施形態における可変シフタ２００の構成例を示すブロック図である。可変シフタ２００は、シフタ２１０、シフタ２２０、シフタ２３０、及び制御部２４０を含む構成である。シフタ２１０は、マルチプレクサ２１１及び固定シフタ２１２，２１３，２１４を含む。シフタ２２０は、マルチプレクサ２２１及び固定シフタ２２２，２２３，２２４を含む。シフタ２３０は、マルチプレクサ２３１及び固定シフタ２３２，２３３を含む。
【００６２】
シフタ２１０は、制御部２４０により指定されたシフト量ｓ１を用いて、Ｍビット（例えば４２ビット）の入力データをシフトし、シフトされたデータを出力する。シフタ２２０は、制御部２４０により指定されたシフト量ｓ２を用いて、シフタ２１０からのＭビットのデータを再度シフトし、シフトされたデータを出力する。シフタ２３０は、制御部２４０により指定されたシフト量ｓ３を用いて、シフタ２２０からのＭビットのデータを再度シフトし、シフトされたデータを出力する。シフト量ｓ１，ｓ２，ｓ３は、制御部２４０により指定される。
【００６３】
固定シフタ２１２〜２１４，２２２〜２２４，２３２，２３３は、入力されるＭ個のデータに対し、それぞれシフト量「３」、「７」、「８」、「２２」、「３１」、「３９」によって巡回シフトする。
【００６４】
マルチプレクサ２１１は、３入力マルチプレクサであり、３種類のシフト処理のいずれかによりシフトされたＭ個のデータを選択する。３種類のシフト処理では、例えば、シフト量ｓ１の要素は、シフト３，シフト７，シフト３９、を含む。
【００６５】
マルチプレクサ２２１は、３入力マルチプレクサであり、３種類のシフト処理のいずれかによりシフトされたＭ個のデータを選択する。３種類のシフト処理では、例えば、シフト量ｓ２の要素は、シフト７，シフト８，シフト２２、を含む。
【００６６】
マルチプレクサ２３１は、２入力マルチプレクサであり、２種類のシフト処理のいずれかによりシフトされたＭ個のデータを選択する。２種類のシフト処理では、例えば、シフト量ｓ３の要素は、シフト３１，シフト３９、を含む。
【００６７】
図７では、マルチプレクサ２１１，２２１は、Ｍ個（例えば４２個）の３入力１出力のセレクタ回路を含んで構成される。マルチプレクサ２３１は、Ｍ個の２入力１出力のセレクタ回路を含んで構成される。
【００６８】
次に、制御部２４０の動作例について説明する。
【００６９】
図８は、本実施形態のシフト量ｓ，ｓ１，ｓ２，ｓ３の関係の第１例を示す模式図である。図８では、取りうるシフト量ｓは、図８の表の第１列に記載された１７通りである。即ち、変数Ｋの値は１７である。制御部２４０は、入力されたシフト量ｓから、例えば図８の表に従い、３つのシフト量ｓ１，ｓ２，ｓ３を決定する。例えば、ｓ＝0では、下記の（式２）に従い、制御部２４０は、ｓ１＝３、ｓ２＝８、ｓ３＝３１と定める。
【００７０】
制御部２４０は、シフト量ｓ１，ｓ２，ｓ３の各要素の値として、予め定められたシフト量ｓの値に対して（式２）を満たす値を決定する。
ｓ=（ｓ１＋ｓ２＋ｓ３）ｍｏｄＭ・・・（式２）
【００７１】
ここで、シフト量ｓが１６の場合は、シフト量ｓ１が３９、シフト量ｓ２が２２、シフト量ｓ３が３０であるため、（３９＋２２＋３９）ｍｏｄ４２＝１６となり、（式２）を満たす。
【００７２】
シフト量ｓ１，ｓ２，ｓ３の各要素の値が決定されると、制御部２４０は、シフト量ｓ１，ｓ２，ｓ３に従い、シフタ２１０，２２０，２３０を制御する。図８では、シフト量ｓ１の取りうる要素の値は、（式２）により、３，７，３９の３通りと定めることができるため、シフタ２１０は、シフト量３、７、３９のいずれかについてシフト処理すればよい。マルチプレクサ２１１は、固定シフタ２１２，２１３，２１４の出力のいずれか１つを選択して出力する。
【００７３】
同様に、図８では、シフト量ｓ２の取りうる要素の値は、（式２）により、７，８，２２の３通りと定めることができるため、シフタ２２０は、シフト量７、８、２２のいずれかについてシフト処理すればよい。
また、シフトｓ３の取りうる要素の値は、３１，３９の２通りと定めることができるため、シフタ２３０は、シフト量３１，３９のいずれかについてシフト処理すればよい。
【００７４】
このように、可変シフタ２００は、シフト量ｓに対して、３つのシフト量ｓ１，ｓ２，ｓ３を決定する。可変シフタ２００は、シフト量ｓ１に対してシフトするシフタ２１０と、シフト量ｓ２に対してシフトするシフタ２２０と、シフト量ｓ３に対してシフトするシフタ２３０と、を備える。
【００７５】
可変シフタ２００は、それぞれのシフタ２１０，２２０，２３０の取りうるシフト量ｓ１〜ｓ３を限定できるため、可変シフタ２００の回路規模と消費電力とを低減でき、高速に動作できる。
【００７６】
可変シフタ２００は、可変シフタ１００と比較すると、シフタの段数が多くなるため、遅延が大きくなるが、マルチプレクサの入力数が少なくなるので、回路規模を小さくできる。従って、可変シフタ２００は、例えば、入力データのビット数Ｍが大きい場合、シフト量の数Ｋが大きい場合、に有益である。
【００７７】
（第３の実施形態）
第３の実施形態では、可変シフタ１００又は可変シフタ２００と同様の可変シフタを含むＬＤＰ復号器について説明する。ＬＤＰＣ復号器は、ＬＤＰＣ符号を用いて符号化されたデータ（デジタル信号）を復号する。ＬＤＰＣ符号は、線形符号の一例である。
【００７８】
図９は、第３の実施形態におけるＬＤＰＣ復号器１０００の構成例を示すブロック図である。ＬＤＰＣ復号器１０００は、検査行列ＣＭ１０（図２１参照）に基づき符号化されたデータから、元のデータを復号する。例えば、ＬＤＰＣ復号器１０００は、ｍｉｎ−ｓｕｍ復号法に基づき、１時点（クロックサイクル）につき検査行列４２列分の演算を並列処理する。本実施形態では、ＬＤＰＣ復号の復号形式として、ｍｉｎ−ｓｕｍ復号法を主に例示する。
【００７９】
ＬＤＰＣ復号器１０００は、入力メモリ１１００、出力メモリ１２００、列処理演算器１３００、行処理演算器１４１０，１４２０，１４３０，１４４０、可変シフタ１５１０，１５２０，１５３０，１５４０、可変シフタ１６１０，１６２０，１６３０，１６４０、及び制御部１７００を含む構成である。
【００８０】
入力メモリ１１００は、ＬＤＰＣ復号器１０００への入力データを保持し、ＬＤＰＣ復号の動作に応じて、列処理演算器１３００に必要なデータを供給する。
【００８１】
出力メモリ１２００は、列処理演算器１３００から出力されるＬＤＰＣ復号の復号結果のデータを保持する。
【００８２】
なお、入力メモリ１１００が省略されても、データを入力できればよい。出力メモリ１２００が省略されても、データを出力できればよい。
【００８３】
列処理演算器１３００は、入力メモリ１１００から出力されるデータと、可変シフタ１５１０，１５２０，１５３０，１５４０から出力されるデータと、を用いて、ｍｉｎ−ｓｕｍ復号法に基づいて列処理演算する。列処理演算は、公知の演算であり、例えば、非特許文献２に記載された（式３）による演算に相当する。列演算処理は、変数ノード(Ｖａｒｉａｂｌｅ  Ｎｏｄｅ)処理とも呼ばれる。
【００８４】
【数１】
2015154119.tif 000003
【００８５】
行処理演算器１４１０，１４２０，１４３０，１４４０は、それぞれ、可変シフタ１６１０，１６２０，１６３０，１６４０から出力されるデータを用いて、ｍｉｎ−ｓｕｍ復号法に基づいて行処理演算する。行処理演算は、公知の演算であり、例えば、非特許文献２に記載された（式４）による演算に相当する。行処理演算は、チェックノード(Ｃｈｅｃｋ  Ｎｏｄｅ)処理とも呼ばれる。
【００８６】
【数２】
2015154119.tif 000004
【００８７】
（式３），（式４）により計算される「αｍｎ，βｍｎ」は、メッセージと呼ばれる。以下、単にデータと呼ぶ。（式４）の「β」は、オフセットＭｉｎ−Ｓｕｍ復号法において用いられるオフセット値である。（式３）のλｎは、ＬＤＰＣ復号器に入力される対数尤度比である。以下、受信データと呼ぶ。Ａ（ｍ）は、検査行列のｍ行目において、１が立っている列インデックスの集合を表す。Ｂ（ｎ）は、検査行列のｎ列目において、１が立っている行インデックスの集合を表す。
【００８８】
ＬＤＰＣ復号器１０００は、検査行列ＣＭ１０に基づき、ＬＤＰＣ符号化されたデータから元のデータを復号する。検査行列ＣＭ１０における列番号ｃは、各時点におけるＬＤＰＣ復号の処理対象を示す。例えば、検査行列ＣＭ１０における最も左側の列（Ｐ３５、Ｐ２９、Ｐ３７、Ｐ２５、の列）が第１列であり、列番号「１」である。時間経過に伴い、列番号ｃが更新され、処理対象が検査行列ＣＭ１０における右側の列に移行する。
【００８９】
一方、検査行列ＣＭ１０における同じ列番号ｃにおける異なる行は、並列処理の対象となる。例えば、可変シフタ１５１０は、検査行列ＣＭ１０の第１行（例えば最上行）を処理対象とする。可変シフタ１５２０は、検査行列ＣＭ１０の第２行を処理対象とする。可変シフタ１５３０は、検査行列ＣＭ１０の第３行を処理対象とする。可変シフタ１５３０は、検査行列ＣＭ１０の第３行を処理対象とする。
【００９０】
可変シフタ１５１０，１５２０，１５３０，１５４０は、それぞれ、行処理演算器１４１０，１４２０，１４３０，１４４０から出力されるデータに対してシフト処理する。つまり、可変シフタ１５１０，１５２０，１５３０，１５４０は、行処理演算器１４１０，１４２０，１４３０，１４４０から出力されるデータをシフトする。例えば、可変シフタ１５１０のシフト処理におけるシフト量ｓは、以下の手順によって指定される。
【００９１】
まず、制御部１７００は、図示しないタイマ（例えばＲＴＣ(Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ)）を用いて、各時点において処理すべき列番号ｃを指定する。可変シフタ１５１０は、検査行列ＣＭ１０の第１行の値と、制御部１７００が指定する列番号ｃに応じて、シフト量ｓを決定する。
【００９２】
例えば、制御部１７００が指定する列番号ｃが、図２１に示す第１列（ｃ＝１）である場合、可変シフタ１５１０は、検査行列ＣＭ１０の第1行第１列を参照して、シフト量ｓを「３５」と決定し、データのシフト処理を行う。
【００９３】
また、例えば、制御部１７００が指定する列番号ｃが、図２１に示す第５列であれば、可変シフタ１５１０は、検査行列ＣＭ１０の第1行第５列を参照して、シフト量ｓを「４０」と決定する。
【００９４】
また、例えば、制御部１７００が指定する列番号ｃが、図１１に示す第１６列であれば、可変シフタ１５１０は、検査行列ＣＭ１０の第1行第１６列が零行列を示しているので、シフト量ｓを「０」と決定し、何も動作しない、又は値０を出力する。
【００９５】
同様に、可変シフタ１５２０は、検査行列ＣＭ１０の第２行を参照して、シフト数を決定する。可変シフタ１５３０は、検査行列ＣＭ１０の第３行を参照して、シフト数を決定する。可変シフタ１５４０は、検査行列ＣＭ１０の第４行を参照して、シフト数を決定する。
【００９６】
可変シフタ１６１０，１６２０、１６３０、１６４０は、列処理演算器１３００から出力されるデータに対してシフト処理する。可変シフタ１６１０，１６２０，１６３０，１６４０は、可変シフタ１５１０，１５２０，１５３０，１５４０と同様に、それぞれ、検査行列ＣＭ１０の第１行，第２行，第３行，第４行の値と、制御部１７００が指定する列番号ｃと、に応じてシフト量ｓを決定する。
【００９７】
但し、可変シフタ１６１０，１６２０、１６３０、１６４０は、それぞれ可変シフタ１５１０、１５２０、１５３０、１５４０とは逆方向にシフトする。例えば、可変シフタ１５１０は右にシフトする、可変シフタ１６１０は左にシフトする。
【００９８】
次に、可変シフタ１５１０の構成例と動作例について詳しく説明する。
【００９９】
図１０は、可変シフタ１５１０の構成例を示すブロック図である。可変シフタ１５１０は、シフタ１５１１，１５１２、及びシフタ制御部１５１３を備える。シフタ１５１１は、固定シフタ１５１１ｂ，１５１１ｃ，１５１１ｄ、及びマルチプレクサ１５１１ａを備える。シフタ１５１２は、固定シフタ１５１２ｂ，１５１２ｃ，１５１２ｄ，１５１２ｅ、及びマルチプレクサ１５１２ａを備える。
【０１００】
シフタ１５１１は、図１のシフタ１１０と比較すると、同様の構成を有し、同様に動作し、シフト量が異なる。シフタ１５１２は、図１のシフタ１２０と比較すると、同様の構成を有し、同様に動作し、シフト量が異なる。
【０１０１】
シフタ制御部１５１３は、制御部１７００により指定された列番号ｃに応じて、２つのシフト量ｓ１，ｓ２を決定する。従って、シフタ制御部１５１３は、例えば、可変シフタ１００の制御部１３０に相当する。
【０１０２】
図１１は、シフタ制御部１５１３におけるシフト量ｓ１，ｓ２の決定規則の一例を示す模式図である。シフタ制御部１５１３は、図１１において第1列（最も左側の列）に記載された列番号ｃに対して、対応する第３例，第４列のシフト量ｓ１，ｓ２を生成する。図１１の表の第２列には、説明のために、シフト量ｓが記載されている。シフト量ｓは、検査行列ＣＭ１０を参照し、各列番号ｃに対応して制御部１７００により指定される。
【０１０３】
シフタ制御部１５１３により、第１の実施形態と同様に、先述した（式１）を満たすシフト量ｓ１，ｓ２を決定できる。従って、ＬＤＰＣ符号の検査行列ＣＭ１０の第１行に応じて、図１１の表が決定される。図１１の表により、シフタ１５１１は、シフト量ｓ１として０，１，２，１８に対応し、シフタ１５１２は、シフト量ｓ２として４，１７，２７，３９に対応することが理解できる。図１１の表に従い、可変シフタ１５１０の詳細を設計できる。
【０１０４】
同様に、可変シフタ１５２０の構成例及び動作例は、図１２の表に基づく。図１２の表は、検査行列ＣＭ１０の第２行に応じて、定められる。図１２の表により、シフタ１５２１は、シフト量ｓ１として０，１，５，３１に対応し、シフタ１５２２は、シフト量ｓ２として１９，２２，２８，４１に対応することが理解できる。図１２の表に従い、可変シフタ１５２０の詳細を設計できる。
【０１０５】
同様に、検査行列ＣＭ１０を参照し、列番号ｃに対するシフト量ｓ１，ｓ２を決定し、可変シフタ１５３０，１５４０，１６１０，１６２０，１６３０，１６４０の構成及び動作を決定できる。
【０１０６】
このため、ＬＤＰＣ復号器１０００は、２つのシフタ回路（例えばシフタ１５１１，１５１２）を縦列に接続し、ＬＤＰＣ符号の検査行列ＣＭ１０に基づき定められたシフト量ｓ１，ｓ２を用いてＬＤＰＣ復号する。
【０１０７】
ＬＤＰＣ復号器１０００によれば、検査行列ＣＭ１０の列番号ｃに応じて、２つのシフタ回路においてシフタの取りうるシフト量ｓ１，ｓ２を限定するので、巡回シフタ回路におけるセレクタ回路の数を少なくできる。従って、２つのシフタ回路の回路規模を縮小されるので、ＬＤＰＣ復号器１０００は、回路規模を縮小でき、消費電力を低減でき、高速に動作できる。
【０１０８】
本実施形態では、１つの可変シフタ１５１０，１５２０，１５３０，１５４０，１６１０，１６２０，１６３０，１６４０は、検査行列ＣＭ１０における1つの行に対応し、列番号ｃに応じてシフト量ｓ，ｓ１，ｓ２を決定することを例示した。
【０１０９】
なお、例えば、１つの可変シフタ１５１０，１５２０，１５３０，１５４０，１６１０，１６２０，１６３０，１６４０が検査行列ＣＭ１０の１つの列に対応し、行番号に応じてシフト量を決定してもよい。
【０１１０】
また、１つの可変シフタ１５１０，１５２０，１５３０，１５４０，１６１０，１６２０，１６３０，１６４０は、検査行列ＣＭ１０の１つの行又は１つの列ではなく、特定の２行又は特定の２列に対応してもよい。また、検査行列ＣＭ１０の行又は列の単位でなく、検査行列ＣＭ１０の行列要素と可変シフタとの対応を任意に定めてもよい。検査行列ＣＭ１０の列番号ｃ、行番号、及び行列要素は、検査行列における処理対象の領域の一例である。
【０１１１】
（第４の実施形態）
第４の実施形態は、第３の実施形態の変形例である。第４の実施形態では、ＬＤＰＣ復号器は、ＬＤＰＣ符号を用いて符号化されたデータ（デジタル信号）を、符号化率Ｒを考慮して復号する。
【０１１２】
図１３は、第４の実施形態におけるＬＤＰＣ復号器２０００の構成例を示すブロック図である。ＬＤＰＣ復号器２０００において、図９のＬＤＰＣ復号器１０００と同様の構成については、同一の符号を付し、重複箇所の説明を省略又は簡略化する。
【０１１３】
ＬＤＰＣ復号器２０００は、入力メモリ１１００、出力メモリ１２００、列処理演算器１３００、行処理演算器１４１０，１４２０，１４３０，１４４０、可変シフタ２５１０，２５２０，２５３０，２５４０、可変シフタ２６１０，２６２０，２６３０，２６４０、及び制御部２７００を含む構成である。
【０１１４】
ＬＤＰＣ復号器２０００とＬＤＰＣ復号器１０００との違いは、例えば以下の通りである。
【０１１５】
ＬＤＰＣ復号器１０００は、検査行列ＣＭ１０に基づいて復号処理することを説明した。ＬＤＰＣ復号器２０００は、図１４（Ａ），（Ｂ），図１５（Ａ），（Ｂ）に示す４種類の検査行列ＣＭ２１，ＣＭ２２，ＣＭ２３，ＣＭ２４のいずれか１つに基づき符号化されたデータから、元のデータを復号する。検査行列ＣＭ２１〜ＣＭ２４は、予め定められ、図示しないＬＤＰＣ符号化装置と共有されている。
【０１１６】
図１４（Ａ）は、符号化率Ｒ１／２における検査行列ＣＭ２１の一例を示す模式図である。図１４（Ｂ）は、符号化率Ｒ５／８における検査行列ＣＭ２２の一例を示す模式図である。図１５（Ａ）は、符号化率Ｒ３／４における検査行列ＣＭ２３の一例を示す模式図である。図１５（Ａ）は、符号化率Ｒ１３／１６における検査行列ＣＭ２４の一例を示す模式図である。
【０１１７】
制御部２７００は、検査行列ＣＭ２１〜ＣＭ２４のうちのどの検査行列を用いるかを、符号化率Ｒにより決定する。符号化率Ｒの情報は、ＬＤＰＣ符号器によりＬＤＰＣ符号化される場合に、符号化されたデータのヘッダに挿入される。制御部２７００は、ＬＤＰＣ符号としての入力データのヘッダから、符号化率Ｒの情報を取得する。
【０１１８】
例えば、符号化率Ｒ＝３／４である場合、ＬＤＰＣ復号器２０００は、ＬＤＰＣ復号器１０００と同じ動作をする。つまり、ＬＤＰＣ復号器１０００は、符号化率Ｒ＝３／４におけるＬＤＰＣ復号器の一例である。
【０１１９】
ＬＤＰＣ復号器１０００では、例えば、１つの行のシフト処理を１つの可変シフタが受け持ち、例えば、第１行のシフト処理を可変シフタ１５１０が受け持つ。一方、ＬＤＰＣ復号器２０００では、符号化率がＲ＝３／４以外である検査行列ＣＭ２１，ＣＭ２２、ＣＭ２４では、検査行列の行数が４行ではない。
【０１２０】
そこで、ＬＤＰＣ復号器２０００では、１つ又は２つの行を「レイヤ（ｌａｙｅｒ）」という単位として扱い、１つのレイヤのシフト処理を１つの可変シフタが受け持つ。なお、行とレイヤとの対応付けとして、図１４（Ａ），（Ｂ），図１５（Ａ），（Ｂ）に示す対応付けが知られている。
【０１２１】
例えば、可変シフタ２５１０は、レイヤ３に対してシフト処理する。可変シフタ２５２０は、レイヤ２に対してシフト処理する。可変シフタ２５３０は、レイヤ１に対してシフト処理する。可変シフタ２５４０は、レイヤ０に対してシフト処理する。
【０１２２】
次に、可変シフタ２５１０，２５２０，２５３０，２５４０の機能及び構成の第１例について説明する。可変シフタ２５１０，２５２０，２５３０，２５４０の機能及び構成は同様であってもよいが、ここでは可変シフタ２５４０を主に例示する。
【０１２３】
図１６（Ａ）〜（Ｄ）は、可変シフタ２５４０の各符号化率Ｒにおける列番号ｃ及びシフト量ｓ，ｓ１，ｓ２の関係の一例を示す模式図である。可変シフタ２５４０は、レイヤ０のシフト処理を受け持つ。可変シフタ２５４０の各符号化率Ｒにおけるシフト量ｓ，ｓ１，ｓ２は、図１６（Ａ）〜（Ｄ）では、検査行列ＣＭ２１〜ＣＭ２４に応じて定められる。
【０１２４】
例えば、符号化率Ｒ＝１／２、列番号ｃ＝１、レイヤ０では、制御部２７００は、検査行列ＣＭ２１の６行目を参照し、シフト量ｓ＝２９として指定する。図１６（Ａ）〜（Ｄ）における全てのシフト量ｓは、図１４、図１５の検査行列ＣＭ２１〜ＣＭ２４より求められ、取りうるシフト量ｓの値は、重複を除いて列挙すると、ｓ＝｛０，２，３，４，１３，１４，１５，１８，２２，２３，２４，２５，２７，２８，２９，３１，３４｝である。したがって、このとき、取りうるシフト量ｓの種類の数Ｋは、Ｋ＝１７である。なお、取りうるシフト量ｓの値は、入力シフト量のパターンの一例である。
【０１２５】
つまり、ＬＤＰＣ復号器２０００が対応する全ての符号化率に対する検査行列に対して、取りうるシフト量ｓの値の重複を除いて列挙し、取りうるシフト量ｓの種類の数Ｋを定めることができる。更に、シフト量ｓをシフト量ｓ１、ｓ２に分解することで、シフト量ｓ１、ｓ２の要素を限定することができ、巡回シフタ回路におけるセレクタ回路の数を削減することができる。
【０１２６】
図１７は、可変シフタ２５４０の構成例を示すブロック図である。可変シフタ２５４０は、シフタ２５４１，２５４２、及びシフタ制御部２５４３を含む構成である。
【０１２７】
シフタ２５４１は、マルチプレクサ２５４１ａと、４つの固定シフタ２５４１ｂ，２５４１ｃ，２５４１ｄ，２５４１eと、を含む。マルチプレクサ２５４１ａは、５入力マルチプレクサである。シフタ２５４１は、シフタ制御部２５４３により指定されるシフト量ｓ１の値に応じて、ｓ１＝｛０,２,５,１４,２２｝の５通りのいずれかを選択してシフト処理する。
【０１２８】
シフタ２５４２は、マルチプレクサ２５４２ａと、４つの固定シフタ２５４２ｂ，２５４２ｃ，２５４２ｄ，２５４２eと、を含む。マルチプレクサ２５４２ａは、５入力マルチプレクサである。シフタ２５４２は、シフタ制御部２５４３により指定されるシフト量ｓ２の値に応じて、ｓ２＝｛０,２,１３,２３,２９｝の５通りのいずれかを選択してシフト処理する。
【０１２９】
シフタ制御部２５４３は、制御部２７００からの符号化率Ｒの情報と列番号ｃの情報とを受け取る。シフタ制御部２５４３は、符号化率Ｒ及び列番号ｃに応じて、図１６（Ａ）〜（Ｄ）の表に従い、２つのシフト量ｓ１，ｓ２を決定し、マルチプレクサ２５４１ａ，２５４２ａを制御する。従って、シフタ制御部２５４３は、例えば、可変シフタ１００の制御部１３０に相当する。
【０１３０】
次に、可変シフタ２５１０，２５２０，２５３０，２５４０の機能及び構成の第２例について説明する。可変シフタ２５１０，２５２０，２５３０，２５４０の機能及び構成は同様であってもよいが、ここでは可変シフタ２５１０を主に例示する。
【０１３１】
図１８（Ａ）〜（Ｄ）は、可変シフタ２５１０の各符号化率Ｒにおける列番号ｃ及びシフト量ｓ，ｓ１，ｓ２の関係の一例を示す模式図である。可変シフタ２５１０は、レイヤ３のシフト処理を受け持つ。可変シフタ２５４０の各符号化率Ｒにおけるシフト量ｓ，ｓ１，ｓ２は、図１８（Ａ）〜（Ｄ）では、検査行列ＣＭ２１〜ＣＭ２４に応じて定められる。
【０１３２】
なお、符号化率Ｒ＝１３／１６は、図１５（Ｂ）に示すように、符号化率＝１-（行数／列数）＝１-（３／１６）＝１３／１６となるのでレイヤ３は存在しないため、可変シフタ２５１０は動作せず、データを出力しないか、値０を出力する。
【０１３３】
図１８（Ａ）〜（Ｄ）における全てのシフト量ｓを定めると、取りうるシフト量ｓの種類の数Ｋは、Ｋ＝２０である。また、取りうるシフト量ｓの値は、重複を除くと、ｓ＝｛３，５，６，７，１０，１３，１７，１８，１９，２０，２２，２８，３１，３４，３５，３６，３８,３９,４０,４１｝である。
【０１３４】
なお、他のレイヤについても、シフト量ｓを求め、重複するシフト量ｓは削除する。ＬＤＰＣ復号器１０００は、求めた重複しない全てのレイヤのシフト量ｓを記憶し、符号化率、レイヤに応じて、適宜シフト量ｓを用いて可変シフタを構成する。
【０１３５】
図１９は、可変シフタ２５１０の構成例を示すブロック図である。可変シフタ２５1０は、シフタ２５１１，２５１２、及びシフタ制御部２５１３を含む構成である。
【０１３６】
シフタ２５１１は、マルチプレクサ２５１１ａと、４つの固定シフタ２５１１ｂ，２５１１ｃ，２５１１ｄ，２５１１e，２５１１ｆと、を含む。マルチプレクサ２５１１ａは、６入力マルチプレクサである。シフタ２５４１は、シフタ制御部２５１３により指定されるシフト量ｓ１の値に応じて、ｓ１＝｛０,１,３,４,５,６｝の６通りのいずれかを選択してシフト処理する。
【０１３７】
シフタ２５１２は、マルチプレクサ２５１２ａと、４つの固定シフタ２５１２ｂ，２５１２ｃ，２５１２ｄ，２５１２e，２５１２ｆと、を含む。マルチプレクサ２５１２ａは、６入力マルチプレクサである。シフタ２５１２は、シフタ制御部２５１３により指定されるシフト量ｓ２の値に応じて、ｓ２＝｛０,７,１４,２１,２８,３５｝の６通りのいずれかを選択してシフト処理する。
【０１３８】
シフタ制御部２５１３は、制御部２７００からの符号化率Ｒの情報と列番号ｃの情報を受け取る。シフタ制御部２５１３は、符号化率Ｒ及び列番号ｃに応じて、図１８（Ａ）〜（Ｄ）の表に従い、２つのシフト量ｓ１，ｓ２を決定し、マルチプレクサ２５１１ａ，２５１２ａを制御する。従って、シフタ制御部２５１３は、例えば、可変シフタ１００の制御部１３０に相当する。
【０１３９】
このように、可変シフタ２５１０は、図１８（Ａ）〜（Ｄ）の表に基づいて、ｓ１＝｛０,１,３,４,５,６｝の６通りと、ｓ２＝｛０,７,１４,２１,２８,３５｝の６通りと、のそれぞれの組み合わせにより、２０通りのシフト量ｓのシフト処理をする。よって、可変シフタ２５１０によれば、従来のバレルシフタと比較すると、回路規模と消費電力とを小さくできる。
【０１４０】
なお、可変シフタ２６１０，２６２０、２６３０、２６４０は、列処理演算器１３００から出力されるデータに対してシフト処理する。可変シフタ２６１０，２６２０，２６３０，２６４０は、可変シフタ２５１０，２５２０，２５３０，２５４０と同様に、それぞれ、検査行列ＣＭ２１〜ＣＭ２４と、制御部２７００が指定する列番号ｃと、に応じてシフト量ｓを決定する。
【０１４１】
但し、可変シフタ２６１０，２６２０、２６３０、２６４０は、それぞれ可変シフタ２５１０、２５２０、２５３０、２５４０とは逆方向にシフトする。例えば、可変シフタ２５１０は右にシフトし、可変シフタ２６１０は左にシフトする。
【０１４２】
また、図２０（Ａ）〜（Ｄ）は、可変シフタ２５３０の各符号化率Ｒにおける列番号ｃ及びシフト量ｓ，ｓ１，ｓ２の関係の一例を示す模式図である。可変シフタ２５３０は、レイヤ２のシフト処理を受け持つ。可変シフタ２５３０の各符号化率Ｒにおけるシフト量ｓ，ｓ１，ｓ２は、図２０（Ａ）〜（Ｄ）では、図１４、図１５に示す検査行列ＣＭ２１〜ＣＭ２４に応じて定められる。
【０１４３】
次に、図１６（Ａ）〜（Ｄ）及び図１８（Ａ）〜（Ｄ）に示すシフト量ｓ1，ｓ２の導出方法の一例について、詳しく説明する。
【０１４４】
まず、第１の導出方法について説明する。図１９の可変シフタ２５１０は、例えば第１の導出方法を用いて設計される。可変シフタ２５１０の設計は、ＬＤＰＣ復号器２０００により所定のデータをＬＤＰＣ復号する前に、所定の装置により設計される。所定の装置は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を有し、ＣＰＵがＲＡＭに保持された所定のプログラムを実行してもよい。
【０１４５】
第１の導出方法では、まず、整数Ｍより小さい２以上の整数ｍが任意に選択される。ここで、整数ｍとして、例えばＭの約数又はＭの平方根に近い値が選択されると、可変シフタ２５１０の回路規模を小さくし易い。
【０１４６】
続いて、以下の（式５）により、シフト量ｓ1，ｓ2の要素が定められる。１つのシフト量ｓの値（ｓは０以上Ｍ未満とする）に対して、（式１）を満たすシフト量ｓ1，ｓ２の値は、一意に定まる。
ｓ１＝｛０以上ｍ未満の整数｝
ｓ2＝｛ｍ以上Ｍ未満のｍの倍数｝      ・・・（式５）
【０１４７】
続いて、取りうるシフト量ｓの値に対して、不要なシフト量ｓ1，ｓ２の値が除外される。
【０１４８】
例えば、可変シフタ２５１０を設計する場合、（式５）により定められた整数ｍ、シフト量ｓ１，ｓ２を、以下に示す。
ｍ＝７、ｓ1＝｛０，１，２，３，４，５，６｝、ｓ２＝｛０，７，１４，２１，２８，３５｝
【０１４９】
図１８（Ａ）〜（Ｄ）において、シフト量ｓ１として「２」が使用されないので、ｓ１＝２が除外されてもよい。シフト量ｓ１＝｛０，１，３，４，５，６｝と決定される。ｓ１＝２が除外されることにより、不要なシフト量に対応せず、固定シフタの個数を低減できるので、可変シフタの回路規模及び消費電力を小さくできる。
【０１５０】
シフト量ｓ１として「２」が使用されないことは、取りうるシフト値ｓの値を求める場合に、全ての取りうるシフト量ｓに対して、（式１）から導出されるシフト量ｓ１として、「２」が使用されないことを示す。つまり、（式５）から導出されたシフト量ｓ１の要素から、（式１）を満たすために用いられないシフト量「２」が除外される。なお、ここでは、シフト量ｓ１において使用されていないシフト量を例示したが、シフト量ｓ２において使用されていないシフト量についても同様である。
【０１５１】
第１の導出方法によれば、従来のバレルシフタと比較すると、固定シフタの段数が小さくなるので、回路規模が小さくなり、省電力化できる。また、段数が小さくなることで回路遅延を低減でき、ＬＤＰＣ復号器２０００の動作クロックを増大できる。
【０１５２】
次に、第２の導出方法について説明する。
【０１５３】
図１７の可変シフタ２５４０は、例えば第２の導出方法を用いて設計される。可変シフタ２５４０の設計は、ＬＤＰＣ復号器２０００により所定のデータをＬＤＰＣ復号する前に、所定の装置により設計される。所定の装置は、例えばＲＯＭ、ＲＡＭ、ＣＰＵを有し、ＣＰＵがＲＡＭに保持された所定の設計プログラムを実行することにより、シミュレーションを実施する。
【０１５４】
まず、第２の導出方法では、以下の（式６）を満たし、２以上Ｍ未満の整数ｍ,ｎが任意に選択される。
Ｋ≦ｍ×ｎ      ・・・（式６）
【０１５５】
続いて、０以上Ｍ未満の整数がｍ個、重複なく選択され、選択された整数がシフト量ｓ１の要素の候補として決定される。また、０以上Ｍ未満の整数がｎ個、重複なく選択され、選択された整数がシフト量ｓ２の要素の候補として決定される。なお、シフト量ｓ１の要素の候補と、シフト量ｓ２の要素の候補とは、一部が重複してもよい。なお、本段落の手順を、手順Ａとする。
【０１５６】
続いて、シフト量ｓ１の要素の候補と、シフト量ｓ２の要素の候補と、（式１）と、を用いて、取りうるシフト量ｓの全ての値に対して対応可能か否かが判定される。例えば、制御部は、シフト量ｓ１の要素の候補とシフト量ｓ２の要素の候補とを順次変更し、判定する。
【０１５７】
判定の結果、取りうるシフト量ｓの全ての値に対して対応可能な場合、対応可能な候補が、それぞれシフト量ｓ１，ｓ２の要素として決定される。判定の結果、取りうるシフト量ｓの要素の値の少なくとも一部に対して対応不可な場合、シフト量ｓ１の要素の候補とシフト量ｓ２の要素の候補とが再選択され、同様の判定が繰り返される。
【０１５８】
続いて、全ての取りうるシフト量ｓ１の要素の候補と、シフト量ｓ２の要素の候補と、を用いて判定されても、取りうるシフト量ｓの値を全て対応できる要素が存在しない場合、整数ｍ又は整数ｎの値が1つ増加され、シフト量ｓ１の要素の候補とシフト量ｓ２の要素の候補との決定が繰り返される。
【０１５９】
例えば、図１６（Ａ）〜（Ｄ）では、取りうるシフト量ｓの値は、図１４、図１５のレイヤ０に対応して定めたものであり、下記の通りである。
ｓ＝｛０，２，３，４，１３，１４，１５，１８，２２，２３，２４，２５，２７，２８，２９，３１，３４｝
【０１６０】
図１６（Ａ）〜（Ｄ）ではＫ＝１７であるから、（式６）を満たす整数ｍ，ｎとして、まず、Ｋに最も近いｍ＝４，ｎ＝５を選択する。ここで、ｍ＝４，ｎ＝５では、取りうるシフト量ｓ１，ｓ２の要素の候補が全て探索されても、取りうるシフト量ｓの全ての値に対して対応できるシフト量ｓ１，ｓ２の要素が存在しないため、次の候補の探索に移る。
【０１６１】
次に、整数ｍの値が1つ増加され、ｍ＝５，ｎ＝５として、取りうるシフト量ｓ１，ｓ２の要素の候補を探索する。探索の結果、可変シフタ２５４０におけるシフト量ｓ１，ｓ２の要素として、ｓ１＝｛０，２，５，１４，２２｝、ｓ２＝｛０，２，１３，２３，２９｝が決定される（図１６（Ａ）〜（Ｄ）参照）。
【０１６２】
つまり、上述した手順Ａに応じて導出されたシフト量ｓ１，ｓ２の要素のうち、全ての取りうるシフト量ｓに対して、（式１）を満たすシフト量ｓ１，ｓ２が決定され、シフト量ｓ１，ｓ２の要素として含まれるシフト量が決定される。
【０１６３】
第２の導出方法によれば、第１の導出方法よりも、取りうるシフト量ｓ１，ｓ２の要素の数が減少するので、固定シフタの個数を更に低減でき、更に可変シフタの回路規模及び消費電力を小さくできる。
【０１６４】
ＬＤＰＣ復号器２０００は、２つのシフタ回路（例えばシフタ２５１１，２５２１）を縦列に接続する。また、ＬＤＰＣ復号器２０００は、符号化率Ｒを考慮して、複数のＬＤＰＣ符号の検査行列ＣＭ２１〜ＣＭ２４に基づき定めたシフト量ｓ１，ｓ２に応じてシフト処理し、データを復号する。
【０１６５】
ＬＤＰＣ復号器２０００によれば、２つのシフタ回路においてシフタの取りうるシフト量ｓ１，ｓ２を限定するので、巡回シフタ回路におけるセレクタ回路の数を少なくできる。従って、２つのシフタ回路の回路規模を縮小されるので、ＬＤＰＣ復号器２０００は、回路規模を縮小でき、消費電力を低減でき、高速に動作できる。また、ＬＤＰＣ符号の符号化率Ｒが変化する場合でも、符号化率Ｒに対応して復号できる。
【０１６６】
本実施形態では、１つの可変シフタ２５１０，２５２０，２５３０，２５４０，２６１０，２６２０，２６３０，２６４０が検査行列ＣＭ２１〜ＣＭ２４の1つのレイヤに対応し、列番号ｃに応じてシフト量ｓ，ｓ１，ｓ２を決定することを例示した。
【０１６７】
なお、例えば、１つの可変シフタ２５１０，２５２０，２５３０，２５４０，２６１０，２６２０，２６３０，２６４０が複数のレイヤに対応し、検査行列ＣＭ２１の列番号ｃ及びレイヤ番号に応じて、シフト量ｓ，ｓ１，ｓ２を決定してもよい。
【０１６８】
また、複数の可変シフタが１つのレイヤに対応してもよい。例えば、検査行列ＣＭ２１〜ＣＭ２４における偶数列と奇数列とを別の可変シフタに対応させ、１つのレイヤを２つの可変シフタに対応させてもよい。検査行列ＣＭ２１における１つのレイヤ及び複数のレイヤは、検査行列における処理対象の領域の一例である。
【０１６９】
また、１つの可変シフタ２５１０，２５２０，２５３０，２５４０，２６１０，２６２０，２６３０，２６４０は、検査行列ＣＭ２１〜ＣＭ２４の１つ又は複数の列に対応してもよい。また、検査行列ＣＭ２１〜ＣＭ２４の列又はレイヤの単位でなく、検査行列ＣＭ２１〜ＣＭ２４の行列要素と可変シフタとの対応を任意に定めてもよい。
【０１７０】
なお、本開示は、上記実施形態の構成に限られるものではなく、特許請求の範囲で示した機能、または実施形態の構成が持つ機能が達成できる構成であれば、どのようなものであっても適用可能である。
【０１７１】
上記実施形態では、本開示をハードウェアで構成する場合を例にとって説明したが、本開示はハードウェアとの連携においてソフトウェアでも実現することも可能である。
【０１７２】
また、上記実施形態の説明に用いた各機能ブロックは、典型的には集積回路であるＬＳＩとして実現される。各機能ブロックは個別に１チップ化されてもよいし、一部または全てを含む１チップでもよい。ここでは、ＬＳＩとしてもよいし、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称してもよい。
【０１７３】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路または汎用プロセッサで実現してもよい。例えば、ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＬＳＩ内部の回路セルの接続、又は、設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０１７４】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックを集積化してもよい。バイオ技術の適用等が可能性としてありえる。
【０１７５】
（本開示の一態様の概要）
本開示の第１の可変シフタは、
複数のデータ要素を含む入力データをシフトする可変シフタであって、
前記入力データまたはシフトされたデータが入力される複数のシフト部と、
前記入力データのデータ要素数と、前記データ要素数より少ないパターン数を有する入力シフト量と、に応じて、前記シフト部毎に、複数のシフト量を含む所定のシフト量セットから１つのシフト量を選択する制御部と、
を備え、
前記シフト部は、前記入力されるデータを、前記制御部により選択されたシフト量に応じてシフトする。
【０１７６】
本開示の第２の可変シフタは、第１の可変シフタであって、
前記制御部は、前記入力データのデータ要素数をＭ、前記入力シフト量をｓ、選択されるシフト量をｓｎ（ｎは整数）とした場合、前記シフト部毎に、前記シフト量セットから、
ｓ＝（ｓ１＋ｓ２＋・・・＋ｓｎ）ｍｏｄＭ
を満たすシフト量を選択する。
【０１７７】
本開示の第３の可変シフタは、第１または第２の可変シフタであって、
前記制御部は、所定の第１のシフト量セットから１つのシフト量を第１のシフト量として選択し、所定の第２のシフト量セットから１つのシフト量を第２のシフト量として選択し、
前記複数のシフト部は、前記第１のシフト量に応じて、前記入力データをシフトする第１のシフト部と、前記第２のシフト量に応じて、前記第１のシフト部によりシフトされたデータをシフトする第２のシフト部と、を含む。
【０１７８】
本開示の第４の可変シフタは、第１ないし第３のいずれか１つの可変シフタであって、
前記制御部は、前記シフト部毎に、所定の検査行列における処理対象の領域に応じて、前記シフト量セットからシフト量を選択する。
【０１７９】
本開示の第５の可変シフタは、第４の可変シフタであって、
前記制御部は、前記シフト部毎に、前記入力データの符号化率に応じて、前記シフト量セットからシフト量を選択する。
【０１８０】
本開示の第６の可変シフタは、第３の可変シフタであって、
前記第１のシフト量セットは、所定量未満のシフト量を複数含み、
前記第２のシフト量セットは、前記所定量の倍数のシフト量を複数含む。
【０１８１】
本開示の第７の可変シフタは、第６の可変シフタであって、
前記入力シフト量として、複数のパターンを含み、
複数のシフト量を含む各シフト量セットから、前記入力シフト量の全てのパターンにおいて、
ｓ＝（ｓ１＋ｓ２＋・・・＋ｓｎ）ｍｏｄＭ
を満たすために用いられないシフト量が除外される。
【０１８２】
本開示の第８の可変シフタは、第３の可変シフタであって、
前記入力シフト量として、複数のパターンが存在し、
前記第１のシフト量セットに含まれる前記第１のシフト量の個数と前記第２のシフト量セットに含まれる前記第２のシフト量の個数との積が、前記入力シフト量のパターン数以上であり、
各シフト量セットは、前記入力シフト量の全パターンに対して、
ｓ＝（ｓ１＋ｓ２＋・・・＋ｓｎ）ｍｏｄＭ
を満たすシフト量を含む。
【０１８３】
本開示の復号器は、
線形符号を用いて符号化されたデータを復号する復号器であって、
複数の可変シフタと、
複数のデータ要素を含む入力データ又は前記可変シフタからのデータに応じて、列処理演算する列処理演算部と、
前記可変シフタからのデータに応じて、行処理演算する行処理演算部と、
を備え、
前記可変シフタは、
前記入力データまたはシフトされたデータが入力される複数のシフト部と、
前記入力データのデータ要素数と、前記データ要素数より少ないパターン数を有する入力シフト量と、に応じて、前記シフト部毎に、複数のシフト量を含む所定のシフト量セットから１つのシフト量を選択する制御部と、
を備え、
前記シフト部は、前記入力されるデータを、前記制御部により選択されたシフト量に応じてシフトする。
【０１８４】
本開示のデータシフト方法は、
入力データまたはシフトされたデータが入力される複数のシフト部を含み、複数のデータ要素を含む入力データをシフトする可変シフタにおけるデータシフト方法であって、
前記入力データのデータ要素数と、前記データ要素数より少ないパターン数を有する入力シフト量と、に応じて、前記シフト部毎に、複数のシフト量を含む所定のシフト量セットから１つのシフト量を選択するステップと、
前記シフト部に入力されるデータを、前記選択されたシフト量に応じてシフトするステップと、
を有する。
【産業上の利用可能性】
【０１８５】
本開示は、回路規模を小さくでき、消費電力を低減できる可変シフタ、ＬＤＰＣ復号器、及びデータシフト方法等に有用である。
【符号の説明】
【０１８６】
１００  可変シフタ
１１０，１２０  シフタ
１１１，１２１  マルチプレクサ
１１２，１１３，１１４，１２２，１２３，１２４，１２５  固定シフタ
１３０  制御部
２００  可変シフタ
２１０，２２０，２３０  シフタ
２１１，２２１，２３１  マルチプレクサ
２１２，２１３，２１４，２２２，２２３，２２４，２３２，２３３  固定シフタ
２４０  制御部
１０００  ＬＤＰＣ復号器
１１００  入力メモリ
１２００  出力メモリ
１３００  列処理演算器
１４１０，１４２０，１４３０，１４４０  行処理演算器
１５１０，１５２０，１５３０，１５４０，１６１０，１６２０，１６３０，１６４０  可変シフタ
１５１１，１５１２，１５２１，１５２２，１５３１，１５３２，１５４１，１５４２，１６１１，１６１２，１６２１，１６２２，１６３１，１６３２，１６４１，１６４２  シフタ
１５１１ａ，１５１２ａ  マルチプレクサ
１５１１ｂ，１５１１ｃ，１５１１ｄ，１５１２ｂ，１５１２ｃ，１５１２ｄ，１５１２ｅ  固定シフタ
１７００  制御部
２０００  ＬＤＰＣ復号器
２５１０，２５２０，２５３０，２５４０，２６１０，２６２０，２６３０，２６４０  可変シフタ
２５１１，２５１２，２５２１，２５２２，２５３１，２５３２，２５４１，２５４２，２６１１，２６１２，２６２１，２６２２，２６３１，２６３２，２６４１，２６４２  シフタ
２５１１ａ，２５１２ａ，２５４１ａ，２５４２ａ  マルチプレクサ
２５１１ｂ，２５１１ｃ，２５１１ｄ，２５１１ｅ，２５１１ｆ，２５１２ｂ，２５１２ｃ，２５１２ｄ，２５１２ｅ，２５１２ｆ，２５４１ｂ，２５４１ｃ，２５４１ｄ，２５４１ｅ，２５４２ｂ，２５４２ｃ、２５４２ｄ，２５４２ｅ  固定シフタ
２７００  制御部
３０００  ＬＤＰＣ復号器
３１００  入力メモリ
３２００  出力メモリ
３３００  列処理演算器
３４１０，３４２０，３４３０，３４４０  行処理演算器
３５１０，３５２０，３５３０，3５４０，３６１０，３６２０，３６３０，３６４０  バレルシフタ
３５１１ａ，３５１１ｂ，３５１１ｃ，３５１１ｄ，３５１１ｅ，３５１１ｆ  シフタ
３５１２ａ，３５１２ｂ，３５１２ｃ，３５１２ｄ，３５１２ｅ，３５１２ｆ  ２入力マルチプレクサ
【図１】
2015154119.tif 000005
【図２】
2015154119.tif 000006
【図３】
2015154119.tif 000007
【図４】
2015154119.tif 000008
【図５】
2015154119.tif 000009
【図６】
2015154119.tif 000010
【図７】
2015154119.tif 000011
【図８】
2015154119.tif 000012
【図９】
2015154119.tif 000013
【図１０】
2015154119.tif 000014
【図１１】
2015154119.tif 000015
【図１２】
2015154119.tif 000016
【図１３】
2015154119.tif 000017
【図１４】
2015154119.tif 000018
【図１５】
2015154119.tif 000019
【図１６】
2015154119.tif 000020
【図１７】
2015154119.tif 000021
【図１８】
2015154119.tif 000022
【図１９】
2015154119.tif 000023
【図２０】
2015154119.tif 000024
【図２１】
2015154119.tif 000025
【図２２】
2015154119.tif 000026
【図２３】
2015154119.tif 000027
【図２４】
2015154119.tif 000028