(57)【要約】【課題】装置の小型化を図る。【解決手段】M個の入力データを対象としてサイクリックシフトを行うバレルシフタ６１を有するサイクリックシフト装置３３において、M個より小のN個の入力データから構成されるパラレルデータを、N未満のシフト量kだけサイクリックシフトする場合、選択回路６２は、1ないしN-k番目の出力データ#1ないし#N-kとして、バレルシフタ６１が出力する1ないしN-k番目のシフトデータ#1ないし#N-kを選択して出力し、N-k+1ないしN番目の出力データ#N-k+1ないし#Nとして、バレルシフタ６１が出力するN-k+1+(M-N)ないしN+(M-N)番目のシフトデータ#M-k+1ないし#Mを選択して出力する。本発明は、サイクリックシフトを行う場合に適用できる。【選択図】図８
2010093541.tif 000002
【特許請求の範囲】
【請求項１】
M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、
前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路と
を備え、
前記M個より小のN個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、
前記選択回路は、
1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、
N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する
サイクリックシフト装置。
【請求項２】
前記選択回路は、
2ないしNの範囲の整数であるnについて、n番目、又は、n+(M-N)番目の前記シフトデータを選択し、n番目の前記出力データとして出力するN-1個のセレクタを有し、
前記バレルシフタが、M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、
1番目の前記シフトデータを、1番目の前記出力データとして出力し、
n番目、又は、n+(M-N)番目の前記シフトデータを選択するn-1番目の前記セレクタにおいて、n番目の前記シフトデータを、n番目の前記出力データとして選択して出力し、
N+1ないしM番目の前記シフトデータを、N+1ないしM番目の前記出力データとして出力し、
前記バレルシフタが、N個の前記入力データから構成される前記パラレルデータを、前記シフト量kだけサイクリックシフトする場合、
1番目の前記シフトデータを、1番目の前記出力データとして出力し、
1ないしN-k-1番目の前記セレクタにおいて、n番目の前記シフトデータを、n番目の前記出力データとして選択して出力し、
N-kないしN-1番目の前記セレクタにおいて、n+(M-N)番目の前記シフトデータを、n番目の前記出力データとして選択して出力する
請求項１に記載のサイクリックシフト装置。
【請求項３】
M個の前記入力データから構成される前記パラレルデータ、及び、N個の前記入力データから構成される前記パラレルデータのうちのいずれのサイクリックシフトを行うのかを表す選択信号と、前記シフト量kとに基づいて、前記セレクタによる前記シフトデータの選択を制御する選択制御回路をさらに備える
請求項２に記載のサイクリックシフト装置。
【請求項４】
前記M個は、374個であり、
前記N個は、360個である
請求項１に記載のサイクリックシフト装置。
【請求項５】
前記Nは、2以上M未満の範囲の、複数であるT個の整数値N1,N2,・・・,NTをとり、
前記T個の整数値N1,N2,・・・,NTの、降順でt番目の整数値を、Ntと表すとき、
前記選択回路は、
2ないしN1の範囲の整数であるnについて、n,n+(M-N1),n+(M-N2),・・・,n+(M-NT-1)、又は、n+(M-NT)番目の前記シフトデータを選択し、n番目の前記出力データとして出力するN1-1個のT+1入力1出力のセレクタを有し、
前記バレルシフタが、M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、
1番目の前記シフトデータを、1番目の前記出力データとして出力し、
n,n+(M-N1),n+(M-N2),・・・,n+(M-NT-1)、又は、n+(M-NT)番目の前記シフトデータを選択するn-1番目の前記セレクタにおいて、n番目の前記シフトデータを、n番目の前記出力データとして選択して出力し、
N1+1ないしM番目の前記シフトデータを、N1+1ないしM番目の前記出力データとして出力し、
前記バレルシフタが、Nt個の前記入力データから構成される前記パラレルデータを、前記Nt未満の前記シフト量kだけサイクリックシフトする場合、
1番目の前記シフトデータを、1番目の前記出力データとして出力し、
1ないしNt-k-1番目の前記セレクタにおいて、n番目の前記シフトデータを、n番目の前記出力データとして選択して出力し、
Nt-kないしNt-1番目の前記セレクタにおいて、n+(M-Nt)番目の前記シフトデータを、n番目の前記出力データとして選択して出力する
請求項１に記載のサイクリックシフト装置。
【請求項６】
M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、
前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路と
を備えるサイクリックシフト装置が、前記M個より小のN個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、
前記選択回路が、
1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、
N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する
サイクリックシフト方法。
【請求項７】
LDPC(Low Density Parity Check)符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、
前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段と
を備え、
前記サイクリックシフト手段は、
M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、
前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路と
を備え、
前記Qが、前記Mに等しく、
前記演算手段が、前記M個の前記メッセージを出力し、
前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、
前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、
前記Qが、前記Mより小のNに等しく、
前記演算手段が、前記N個の前記メッセージを出力し、
前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、
前記選択回路は、
1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、
N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する
LDPC復号装置。
【請求項８】
番組のデータを、少なくともLDPC(Low Density Parity Check)符号化することで得られるLDPC符号を含む送信データを取得する取得手段と、
前記送信データに含まれるLDPC符号を復号するLDPC復号手段と
を含み、
前記LDPC復号手段は、
前記LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、
前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段と
を備え、
前記サイクリックシフト手段は、
M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、
前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路と
を備え、
前記Qが、前記Mに等しく、
前記演算手段が、前記M個の前記メッセージを出力し、
前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、
前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、
前記Qが、前記Mより小のNに等しく、
前記演算手段が、前記N個の前記メッセージを出力し、
前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、
前記選択回路は、
1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、
N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する
テレビジョン受像機。
【請求項９】
伝送路を介して取得した信号に対して、前記伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施す伝送路復号処理部と、
前記伝送路復号処理が施された信号に対して、圧縮された情報を元の情報に伸張する処理を少なくとも含む情報源復号処理を施す情報源復号処理部と
を含み、
前記伝送路を介して取得した信号は、情報を圧縮する圧縮符号化と、前記伝送路で生じる誤りを訂正するための誤り訂正符号化とを、少なくとも行うことで得られた信号であり、
前記誤り訂正符号化は、LDPC(Low Density Parity Check)符号化を含み、
前記伝送路復号処理部は、
LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、
前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段と
を備え、
前記サイクリックシフト手段は、
M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、
前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路と
を備え、
前記Qが、前記Mに等しく、
前記演算手段が、前記M個の前記メッセージを出力し、
前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、
前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、
前記Qが、前記Mより小のNに等しく、
前記演算手段が、前記N個の前記メッセージを出力し、
前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、
前記選択回路は、
1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、
N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する
受信システム。
【請求項１０】
伝送路を介して取得した信号に対して、前記伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施す伝送路復号処理部と、
前記伝送路復号処理が施された信号に基づいて、画像又は音声を出力する出力部と
を含み、
前記伝送路を介して取得した信号は、前記伝送路で生じる誤りを訂正するための誤り訂正符号化を、少なくとも行うことで得られた信号であり、
前記誤り訂正符号化は、LDPC(Low Density Parity Check)符号化を含み、
前記伝送路復号処理部は、
LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、
前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段と
を備え、
前記サイクリックシフト手段は、
M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、
前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路と
を備え、
前記Qが、前記Mに等しく、
前記演算手段が、前記M個の前記メッセージを出力し、
前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、
前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、
前記Qが、前記Mより小のNに等しく、
前記演算手段が、前記N個の前記メッセージを出力し、
前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、
前記選択回路は、
1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、
N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する
受信システム。
【請求項１１】
伝送路を介して取得した信号に対して、前記伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施す伝送路復号処理部と、
前記伝送路復号処理が施された信号を記録する記録部と
を含み、
前記伝送路を介して取得した信号は、前記伝送路で生じる誤りを訂正するための誤り訂正符号化を、少なくとも行うことで得られた信号であり、
前記誤り訂正符号化は、LDPC(Low Density Parity Check)符号化を含み、
前記伝送路復号処理部は、
LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、
前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段と
を備え、
前記サイクリックシフト手段は、
M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、
前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路と
を備え、
前記Qが、前記Mに等しく、
前記演算手段が、前記M個の前記メッセージを出力し、
前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、
前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、
前記Qが、前記Mより小のNに等しく、
前記演算手段が、前記N個の前記メッセージを出力し、
前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、
前記選択回路は、
1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、
N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する
受信システム。
【請求項１２】
伝送路を介して、信号を取得する取得手段と、
前記伝送路を介して取得した信号に対して、前記伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施す伝送路復号処理部と
を含み、
前記伝送路を介して取得した信号は、前記伝送路で生じる誤りを訂正するための誤り訂正符号化を、少なくとも行うことで得られた信号であり、
前記誤り訂正符号化は、LDPC(Low Density Parity Check)符号化を含み、
前記伝送路復号処理部は、
LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、
前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段と
を備え、
前記サイクリックシフト手段は、
M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、
前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路と
を備え、
前記Qが、前記Mに等しく、
前記演算手段が、前記M個の前記メッセージを出力し、
前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、
前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、
前記Qが、前記Mより小のNに等しく、
前記演算手段が、前記N個の前記メッセージを出力し、
前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、
前記選択回路は、
1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、
N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する
受信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サイクリックシフト装置、サイクリックシフト方法、LDPC復号装置、テレビジョン受像機、及び、受信システムに関し、特に、装置の小型化を図ることができるようにするサイクリックシフト装置、サイクリックシフト方法、LDPC復号装置、テレビジョン受像機、及び、受信システムに関する。
【背景技術】
【０００２】
複数のデータから構成されるパラレルデータをサイクリックにシフトするサイクリックシフト（ローテーション）を行うハードウェアであるサイクリックシフト装置としては、バレルシフタがある。
【０００３】
ここで、サイクリックシフトの対象となるパラレルデータを構成するデータを、入力データといい、バレルシフタが、パラレルデータを構成する複数の入力データをサイクリックシフトして出力するデータを、シフトデータという。
【０００４】
例えば、所定の整数であるM単位のサイクリックシフトを行うバレルシフタでは、M個の入力データ#1,2,・・・,#Mとしてのパラレルデータが、外部等から指定されたシフト量kだけサイクリックシフトされ、そのサイクリックシフトの結果として、M個のシフトデータ#1,2,・・・,#Mが出力される。
【０００５】
すなわち、いま、バレルシフタにおいて、入力データ#1,2,・・・,#Mの先頭の方向に、サイクリックシフトが行われるとすると、シフト量kのサイクリックシフトによれば、入力データ#k+1,・・・,#M,1,2,・・・,#kが、シフトデータ#1,2,・・・,#Mとして出力される。
【０００６】
以上のようなサイクリックシフトは、例えば、LDPC(Low Density Parity Check)符号の復号（例えば、特許文献１を参照）や、可変長復号等で必要となる。
【０００７】
また、入力データ#mが１ビットである場合、サイクリックシフトによれば、Mビットのデータを対象とした乗算その他のビット演算を行うことができる。
【０００８】
【特許文献１】特開2004-343170号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述したように、M個の入力データ#1ないし#Mのサイクリックシフトを行う場合には、M単位のサイクリックシフトを行うバレルシフタ（以下、M単位のバレルシフタともいう）が必要となる。
【００１０】
したがって、M個とは異なる値のN個の入力データ#1,2,・・・,#Nのサイクリックシフトを行う場合には、N単位のバレルシフタが必要となる。
【００１１】
以上のように、M個の入力データ#1ないし#Mのサイクリックシフト（以下、M単位のサイクリックシフトともいう）と、N個の入力データ#1ないし#Nのサイクリックシフトとを行う場合には、別個のバレルシフタが必要となる。したがって、M個の入力データ#1ないし#Mのサイクリックシフトと、N個の入力データ#1ないし#Nのサイクリックシフトとの両方を行うには、サイクリックシフト装置を、M単位のバレルシフタと、N単位のバレルシフタとで構成する必要があり、装置が大型化する。
【００１２】
本発明は、このような状況に鑑みてなされたものであり、装置の小型化を図ることができるようにするものである。
【課題を解決するための手段】
【００１３】
本発明の第１の側面のサイクリックシフト装置、又は、サイクリックシフト方法は、サイクリックシフト装置が、M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路とを備え、前記M個より小のN個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、前記選択回路が、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力するサイクリックシフト装置、又は、サイクリックシフト方法である。
【００１４】
以上のような第１の側面においては、バレルシフタが、M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力し、選択回路が、前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する。前記M個より小のN個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合には、前記選択回路が、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する。
【００１５】
本発明の第２の側面のLDPC復号装置は、LDPC(Low Density Parity Check)符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段とを備え、前記サイクリックシフト手段は、M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路とを備え、前記Qが、前記Mに等しく、前記演算手段が、前記M個の前記メッセージを出力し、前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、前記Qが、前記Mより小のNに等しく、前記演算手段が、前記N個の前記メッセージを出力し、前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、前記選択回路は、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力するLDPC復号装置である。
【００１６】
本発明の第３の側面のテレビジョン受像機は、番組のデータを、少なくともLDPC(Low Density Parity Check)符号化することで得られるLDPC符号を含む送信データを取得する取得手段と、前記送信データに含まれるLDPC符号を復号するLDPC復号手段とを含み、前記LDPC復号手段は、前記LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段とを備え、前記サイクリックシフト手段は、M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路とを備え、前記Qが、前記Mに等しく、前記演算手段が、前記M個の前記メッセージを出力し、前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、前記Qが、前記Mより小のNに等しく、前記演算手段が、前記N個の前記メッセージを出力し、前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、前記選択回路は、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力するテレビジョン受像機である。
【００１７】
本発明の第４の側面の受信システムは、伝送路を介して取得した信号に対して、前記伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施す伝送路復号処理部と、前記伝送路復号処理が施された信号に対して、圧縮された情報を元の情報に伸張する処理を少なくとも含む情報源復号処理を施す情報源復号処理部とを含み、前記伝送路を介して取得した信号は、情報を圧縮する圧縮符号化と、前記伝送路で生じる誤りを訂正するための誤り訂正符号化とを、少なくとも行うことで得られた信号であり、前記誤り訂正符号化は、LDPC(Low Density Parity Check)符号化を含み、前記伝送路復号処理部は、LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段とを備え、前記サイクリックシフト手段は、M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路とを備え、前記Qが、前記Mに等しく、前記演算手段が、前記M個の前記メッセージを出力し、前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、前記Qが、前記Mより小のNに等しく、前記演算手段が、前記N個の前記メッセージを出力し、前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、前記選択回路は、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する受信システムである。
【００１８】
本発明の第５の側面の受信システムは、伝送路を介して取得した信号に対して、前記伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施す伝送路復号処理部と、前記伝送路復号処理が施された信号に基づいて、画像又は音声を出力する出力部とを含み、前記伝送路を介して取得した信号は、前記伝送路で生じる誤りを訂正するための誤り訂正符号化を、少なくとも行うことで得られた信号であり、前記誤り訂正符号化は、LDPC(Low Density Parity Check)符号化を含み、前記伝送路復号処理部は、LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段とを備え、前記サイクリックシフト手段は、M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路とを備え、前記Qが、前記Mに等しく、前記演算手段が、前記M個の前記メッセージを出力し、前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、前記Qが、前記Mより小のNに等しく、前記演算手段が、前記N個の前記メッセージを出力し、前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、前記選択回路は、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する受信システムである。
【００１９】
本発明の第６の側面の受信システムは、伝送路を介して取得した信号に対して、前記伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施す伝送路復号処理部と、前記伝送路復号処理が施された信号を記録する記録部とを含み、前記伝送路を介して取得した信号は、前記伝送路で生じる誤りを訂正するための誤り訂正符号化を、少なくとも行うことで得られた信号であり、前記誤り訂正符号化は、LDPC(Low Density Parity Check)符号化を含み、前記伝送路復号処理部は、LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段とを備え、前記サイクリックシフト手段は、M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路とを備え、前記Qが、前記Mに等しく、前記演算手段が、前記M個の前記メッセージを出力し、前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、前記Qが、前記Mより小のNに等しく、前記演算手段が、前記N個の前記メッセージを出力し、前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、前記選択回路は、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する受信システムである。
【００２０】
本発明の第７の側面の受信システムは、伝送路を介して、信号を取得する取得手段と、前記伝送路を介して取得した信号に対して、前記伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施す伝送路復号処理部とを含み、前記伝送路を介して取得した信号は、前記伝送路で生じる誤りを訂正するための誤り訂正符号化を、少なくとも行うことで得られた信号であり、前記誤り訂正符号化は、LDPC(Low Density Parity Check)符号化を含み、前記伝送路復号処理部は、LDPC符号の復号のためのチェックノードの演算、及び、バリアブルノードの演算を、複数であるQ個のノードについて同時に行う、前記Q個以上のM個の演算手段と、前記Q個のチェックノードの演算、及び、前記Q個のバリアブルノードの演算のうちの一方の演算の結果得られる前記Q個の枝に対応する前記Q個の前記メッセージを、次に行われる他方の演算のためにサイクリックにシフトするサイクリックシフト手段とを備え、前記サイクリックシフト手段は、M個の入力データから構成されるパラレルデータをサイクリックにシフトするM個単位のサイクリックシフトを行い、M個のシフトデータを出力するバレルシフタと、前記バレルシフタが出力する前記M個のシフトデータを、前記M個の入力データをサイクリックシフトしたM個の出力データとして選択する選択回路とを備え、前記Qが、前記Mに等しく、前記演算手段が、前記M個の前記メッセージを出力し、前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合、前記選択回路は、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータを選択して出力し、前記Qが、前記Mより小のNに等しく、前記演算手段が、前記N個の前記メッセージを出力し、前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合、前記選択回路は、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータを選択して出力し、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータを選択して出力する受信システムである。
【００２１】
以上のような第２ないし７の側面においては、前記Qが、前記Mに等しく、前記演算手段が、前記M個の前記メッセージを出力し、前記M個の前記メッセージを、前記M個の前記入力データとして、前記M個の前記入力データから構成される前記パラレルデータをサイクリックシフトする場合には、前記選択回路において、1ないしM番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしM番目の前記シフトデータが選択されて出力される。また、前記Qが、前記Mより小のNに等しく、前記演算手段が、前記N個の前記メッセージを出力し、前記N個の前記メッセージを、前記N個の前記入力データとして、前記N個の前記入力データから構成される前記パラレルデータを、前記N未満のシフト量kだけサイクリックシフトする場合には、前記選択回路において、1ないしN-k番目の前記出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭から1ないしN-k番目の前記シフトデータが選択されて出力され、N-k+1ないしN番目の出力データとして、前記バレルシフタが行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目の前記シフトデータが選択されて出力される。
【発明の効果】
【００２２】
本発明の第１ないし第７の側面によれば、装置の小型化を図ることができる。
【発明を実施するための最良の形態】
【００２３】
図１は、本発明を適用したTV（テレビジョン受像機）の一実施の形態の構成例を示すブロック図である。
【００２４】
図１において、TVは、取得部１１、復調部１２、デマルチプレクサ１３、デコーダ１４、及び、表示部１５等から構成される。
【００２５】
取得部１１は、番組のデータを、少なくともLDPC(Low Density Parity Check)符号化することで得られるLDPC符号を含む送信データを取得し、復調部１２に供給する。
【００２６】
すなわち、図示せぬ放送局や、webサーバにおいて、送信データが送信されるようになっており、取得部１１は、その送信データを取得する。
【００２７】
ここで、送信データが、例えば、放送局から、地上波や、衛星波、CATV(Cable Television)網等を介して放送されてくる場合には、取得部１１は、チューナやSTB(Set Top Box)等で構成される。また、送信データが、例えば、webサーバから、IPTV(Internet Protocol Television)のようにマルチキャストで送信されてくる場合には、取得部１１は、例えば、NIC(Network Interface Card)等のネットワークI/F(Inter face)で構成される。
【００２８】
復調部１２は、取得部１１からの送信データに対して、復調等の必要な処理を施す。ここで、送信データには、上述したように、番組のデータを、少なくともLDPC符号化することで得られるLDPC符号が含まれるため、復調部１２で行われる必要な処理には、LDPC符号を復号する処理が含まれる。
【００２９】
復調部１２は、取得部１１からの送信データに対して、復調等の必要な処理を施すことで、例えば、TS(Transport Stream)を得て、そのTSを、デマルチプレクサ１３に供給する。
【００３０】
デマルチプレクサ１３は、復調部１２からのTSから、例えば、ユーザが選局した番組のデータとしての画像データや音声データが配置されたTSパケットを抽出し、デコーダ１４に供給する。
【００３１】
デコーダ１４は、デマルチプレクサ１３からのTSパケットに配置された画像データや音声データを、例えば、MPEG(Moving Picture Experts Group)デコードする。デコーダ１４でのMPEGデコードの結果得られる画像データは、表示部１５に供給され、音声データは、図示せぬスピーカに供給されて、対応する音声が出力される。
【００３２】
表示部１５は、例えば、液晶パネルや有機EL(Electro Luminescence)パネル等で構成され、デコーダ１４からの画像データに対応する画像を表示する。
【００３３】
次に、図２を参照して、図１の復調部１２で行われるLDPC符号の復号について説明する。
【００３４】
LDPC符号の復号（LDPC復号）は、Gallagerが確率復号(Probabilistic Decoding)と称して提案したアルゴリズムであって、バリアブルノード(variable node（メッセージノード(message node)とも呼ばれる。）)と、チェックノード(check node)とからなる、いわゆるタナーグラフ(Tanner graph)上での確率伝播(belief propagation)によるメッセージパッシングアルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノードとチェックノードを、単に、ノードともいう。
【００３５】
いま、１符号長のLDPC符号の各符号の受信値を、u0iと、チェックノードから出力されるメッセージ（チェックノードメッセージ）を、ujと、バリアブルノードから出力されるメッセージ（バリアブルノードメッセージ）を、viと表す。
【００３６】
なお、受信値u0i、並びに、メッセージuj及びviは、値の"0"（又は、"1"）らしさを、対数尤度比(log likelihood ratio)で表現する実数値である。
【００３７】
また、受信値u0i、及び、バリアブルノードメッセージviのサフィックスiは、LDPC符号の検査行列（LDPC符号を定義する検査行列）の列を表すパラメータである。さらに、チェックノードメッセージujのサフィックスjは、LDPC符号の検査行列の行を表すパラメータである。
【００３８】
LDPC復号では、受信値u0iと、チェックノードメッセージujとを用い、式（１）に示すバリアブルノードの演算（バリアブルノード演算）を行うことによって、バリアブルノードメッセージviが求められる。さらに、式（１）で求められたバリアブルノードメッセージviを用いて、式（２）に示すチェックノードの演算（チェックノード演算）を行うことによって、チェックノードメッセージujが求められる。
【００３９】
【数１】
2010093541.tif 000003
・・・（１）
【００４０】
【数２】
2010093541.tif 000004
・・・（２）
【００４１】
ここで、式（１）のバリアブルノード演算に用いられるチェックノードメッセージujは、１符号長のLDPC符号のLDPC復号の開始時に、"0"に初期化される。
【００４２】
また、式（１）と式（２）におけるdvとdcは、それぞれ、検査行列の縦方向（列方向）と横方向（行方向）の、枝に相当する"1"の個数（重み）を示す任意に選択可能とされるパラメータであり、例えば、(3,6)符号の場合には、dv=3，dc=6となる。
【００４３】
さらに、式（１）のバリバブルノード演算においては、メッセージ（バリアブルノードメッセージ）を出力しようとする枝(edge)から入力されたメッセージ（チェックノードメッセージ）を、和演算（式（１）のΣ）の対象としては用いないことから、和演算の範囲が、１ないしdv-1となっている。
【００４４】
同様に、式（２）のチェックノード演算においては、メッセージ（チェックノードメッセージ）を出力しようとする枝から入力されたメッセージ（バリアブルノードメッセージ）を、積演算（式（２）のΠ）の対象としては用いないことから、積演算の範囲が、１ないしdc-1となっている。
【００４５】
式（２）に示すチェックノード演算は、２入力v1，v2に対して１出力を返す式（３）に示す関数R(v1,v2)のテーブルを予め作成しておき、これを式（４）に示すように連続的（再帰的）に用いることによって行うことができる。
【００４６】
【数３】
2010093541.tif 000005
・・・（３）
【００４７】
【数４】
2010093541.tif 000006
・・・（４）
【００４８】
LDPC復号では、式（１）のバリアブルノード演算と、式（２）（式（４））のチェックノード演算とを繰り返し行う繰り返し復号が行われ、繰り返しの回数が、例えば、あらかじめ定められた所定の回数となると、式（５）に示す演算を行うことによって、最終的に出力する復号結果としてのメッセージvが求められる。
【００４９】
【数５】
2010093541.tif 000007
・・・（５）
【００５０】
ここで、式（５）の演算は、式（１）のバリアブルノード演算とは異なり、バリアブルノードに接続している全ての枝からのチェックノードメッセージujを用いて行われる。
【００５１】
図２Ａは、(3,6)LDPC符号（符号化率1/2、符号長12）の検査行列(parity check matrix)の例を示している。
【００５２】
LDPC符号の検査行列は、タナーグラフを用いて表すことができる。
【００５３】
図２Ｂは、図２Ａの検査行列Hのタナーグラフを示している。
【００５４】
図２Ｂにおいて、プラス印（"+"）は、チェックノードを表し、イコール印（"="）は、バリアブルノードを表す。
【００５５】
チェックノードとバリアブルノードは、それぞれ、検査行列Hの行と列に対応する。チェックノードとバリアブルノードとの間の結線は、枝(edge)であり、検査行列Hの"1"に相当する。
【００５６】
すなわち、検査行列Hの第ｊ行第ｉ列のコンポーネントが１である場合には、図２Ｂにおいて、上からｉ番目のバリアブルノード（"="のノード）と、上からｊ番目のチェックノード（"+"のノード）とが、枝により接続される。枝は、バリアブルノードに対応する符号ビットが、チェックノードに対応する拘束条件を持つことを表す。
【００５７】
LDPC復号のアルゴリズムの１つであるサムプロダクトアルゴリズム(Sum Product Algorithm)では、上述したように、バリアブルノード演算とチェックノード演算とが繰り返し行われる。
【００５８】
図２Ｃは、バリアブルノードでのバリアブルノードメッセージの求め方を説明する図である。
【００５９】
バリアブルノードでは、そのバリアブルノードに繋がっている、ある枝に対応するバリアブルノードメッセージviが、そのバリアブルノードに繋がっている残りの枝からのチェックノードメッセージu1及びu2と、受信値u0iとを用い、式（１）に従って求められる。他の枝に対応するバリアブルノードメッセージも同様に求められる。
【００６０】
図２Ｄは、チェックノードでのチェックノードメッセージの求め方を説明する図である。
【００６１】
チェックノード演算を表す式（２）は、式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)の関係を用いて、式（６）に書き直すことができる。但し、sign(x)は、x≧0のとき1となり、x＜0のとき-1となる。
【００６２】
【数６】
2010093541.tif 000008
・・・（６）
【００６３】
x≧0において、φ(x)=ln(tanh(x/2))と定義すると、φ-1(x)=2tanh-1(e-x)であるから、式（６）は、式（７）で表される。
【００６４】
【数７】
2010093541.tif 000009
・・・（７）
【００６５】
チェックノードでは、そのチェックノードに繋がっている、ある枝に対応するチェックノードメッセージujが、そのチェックノードに繋がっている残りの枝からのバリアブルノードメッセージv1,v2,v3,v4,v5を用い、式（７）に従って求められる。他の枝に対応するチェックノードメッセージも同様に求められる。
【００６６】
なお、関数φ(x)は、φ(x)=ln((ex+1)/(ex-1))とも表すことができ、x＞0において、φ(x)=φ-1(x)である。関数φ(x)及びφ-1(x)をハードウェアに実装する際には、LUT(Look Up Table)を用いて実装される場合があるが、関数φ(x)及びφ-1(x)のLUTは、同一のLUTとなる。
【００６７】
ところで、サムプロダクトアルゴリズムによるLDPC復号を行うLDPC復号装置の実装方法として、メッセージ（チェックノードメッセージ、バリバブルノードメッセージ）の演算を、１個のノードずつ順次行うフルシリアルデコーディング(full serial decoding)を採用した場合、メッセージの演算を行う演算器が１つで済むので、装置の小型化を図ることができる。
【００６８】
しかしながら、フルシリアルデコーディングでは、メッセージの演算が、１個のノードずつ行われるため、すべてのノードのメッセージを求めるのに時間を要する。
【００６９】
サムプロダクトアルゴリズムでは、バリアブルノード演算とチェックノード演算との繰り返し（繰り返し復号）が行われるほど、LDPC復号の精度（誤り訂正の性能）が向上する。したがって、すべてのノードのメッセージを求めるのに時間を要すると、繰り返し復号の回数が少なくなり、LDPC復号の精度が劣化することになる。
【００７０】
なお、メッセージの演算を行う演算器を、複数用意し、その複数の演算器をシリアルに接続することで、繰り返し復号の回数を多くする方法がある。しかしながら、この方法では、LDPC復号装置が大規模化する。
【００７１】
また、LDPC復号装置を大規模化せずに、繰り返し復号の回数を多くするには、メッセージの演算を高速に行う方法がある。
【００７２】
しかしながら、この方法では、繰り返し復号の回数をある程度多くするのに、極めて高速な周波数のクロックで動作する演算器が必要となる。
【００７３】
一方、サムプロダクトアルゴリズムによるLDPC復号を行うLDPC復号装置の実装方法として、メッセージの演算を、すべてのノードについて同時（並列）に行うフルパラレルデコーディング(full parallel decoding)を採用した場合、すべてのノードのメッセージを短時間で求めることができる。したがって、繰り返し復号の回数を多くして、LDPC復号の精度を向上させることができる。
【００７４】
しかしながら、フルパラレルデコーディングでは、符号長等に比例する数の演算器が必要となり、LDPC復号装置が大規模化する。
【００７５】
そこで、適度な周波数のクロックで動作する演算器を用い、適度な装置規模で、繰り返し復号の回数が多いLDPC復号を行うLDPC復号装置が、例えば、前述の特許文献１に記載されている。
【００７６】
特許文献１に記載のLDPC復号装置では、ノードの演算（チェックノード演算、及び、バリアブルノード演算）が、ノードすべてについてではない、複数であるQ個のノードについて同時に行われる。ここで、同時に演算を行うノードの数であるQを、以下、演算単位ともいう。
【００７７】
図１の復調部１２は、ノードの演算を、Q個のノードについて同時に行うLDPC復号装置を内蔵している。
【００７８】
図３は、図１の復調部１２が内蔵するLDPC復号装置の構成例を示している。
【００７９】
図３において、LDPC復号装置は、記憶装置３１、演算装置３２、サイクリックシフト装置３３、及び、制御装置３４から構成され、取得部１１（図１）からの送信データに含まれるLDPC符号のLDPC復号を行う。
【００８０】
記憶装置３１は、例えば、RAM(Random Access Memory)等の半導体メモリで構成される。記憶装置３１には、取得部１１からの送信データに含まれるLDPC符号の受信値が供給されるとともに、サイクリックシフト装置３３から、メッセージ（バリアブルノードメッセージ、チェックノードメッセージ）が供給される。
【００８１】
記憶装置３１は、そこに供給されるLDPC符号の受信値、及び、メッセージを一時記憶する。
【００８２】
記憶装置３１に記憶されたLDPC符号の受信値、及び、メッセージは、必要に応じて読み出され、演算装置３２に供給される。
【００８３】
演算装置３２は、Q個以上のM個の演算器３２1ないし３２Mを有し、１個の演算器３２mは、記憶装置３１からのメッセージ等を用いて、１個のノードについてのメッセージを求めるノード演算（チェックノード演算、バリアブルノード演算）を行う。
【００８４】
演算装置３２では、M個の演算器３２1ないし３２Mのうちの、Q個の演算器３２1ないし３２Qによって、チェックノード演算、又は、バリアブルノード演算が、Q個のノードについて同時に行われる。
【００８５】
演算装置３２において、Q個のノードについて、同時に、チェックノード演算、又は、バリアブルノード演算が行われると、Q個の枝に対応するQ個のメッセージ（チェックノードメッセージ、又は、バリアブルノードメッセージ）が得られる。
【００８６】
このQ個のメッセージは、１個のパラレルデータとして、演算装置３２からサイクリックシフト装置３３に供給される。
【００８７】
ここで、演算装置３２では、チェックノード演算と、バリアブルノード演算とが交互に行われる。
【００８８】
サイクリックシフト装置３３は、演算装置３２において、Q個のチェックノードのチェックノード演算、及び、Q個のバリアブルノードのバリアブルノード演算のうちの一方のノード演算の結果得られる、Q個の枝に対応するQ個のメッセージから構成されるパラレルデータを、次に行われる他方のノード演算のためにサイクリックシフトする。そして、サイクリックシフト装置３３は、サイクリックシフト後のパラレルデータを構成するQ個のメッセージを、記憶装置３１に供給して記憶させる。
【００８９】
制御装置３４は、図３のLDPC復号装置を構成する、記憶装置３１、演算装置３２、及び、サイクリックシフト装置３３を制御する。
【００９０】
すなわち、制御装置３４は、記憶装置３１に対するメッセージ等の読み書きをするアドレスを指定する制御等を行う。また、制御装置３４は、演算装置３２（の演算器３２m）が行うべきノード演算（チェックノード演算やバリアブルノード演算等）を指定する制御等を行う。さらに、制御装置３４は、サイクリックシフト装置３３がサイクリックシフトを行うシフト量を指定する制御等を行う。
【００９１】
以上のように構成されるLDPC復号装置では、取得部１１からの送信データに含まれる１符号長のLDPC符号の受信値が、記憶装置３１に供給されると、記憶装置３１は、そこに供給される１符号長のLDPC符号の受信値を記憶する。
【００９２】
記憶装置３１に１符号長のLDPC符号の受信値が記憶されると、記憶装置３１に記憶されたLDPC符号の受信値と、チェックノードメッセージ（１符号長のLDPC符号のLDPC復号の開始時は、初期値である0等になっている）とが、適宜読み出され、演算装置３２に供給される。
【００９３】
演算装置３２では、Q個の演算器３２1ないし３２Qによって、記憶装置３１からの受信値とチェックノードメッセージとを用いて、式（１）のバリアブルノード演算が、Q個のバリアブルノードについて同時に行われる。
【００９４】
演算装置３２において、Q個のバリアブルノードについて、同時に、バリアブルノード演算が行われることにより得られるQ個のバリアブルノードメッセージは、演算装置３２からサイクリックシフト装置３３に供給される。
【００９５】
サイクリックシフト装置３３は、演算装置３２からのQ個のバリアブルノードメッセージを、１個のパラレルデータとして、そのパラレルデータを、次に行われるチェックノード演算のためにサイクリックシフトする。そして、サイクリックシフト装置３３は、サイクリックシフト後のパラレルデータを構成するQ個のバリアブルノードメッセージを、記憶装置３１に供給して記憶させる。
【００９６】
以上のように、Q個ずつのバリアブルノードについて、バリアブルノード演算が行われることにより、すべてのバリアブルノード（LDPC符号の検査行列の列数のバリアブルノード）について、バリアブルノードメッセージが求められ、記憶装置３１に記憶されると、記憶装置３１から、バリアブルノードメッセージが、適宜読み出され、演算装置３２に供給される。
【００９７】
演算装置３２では、Q個の演算器３２1ないし３２Qによって、記憶装置３１からのバリアブルノードメッセージを用いて、式（７）のチェックノード演算が、Q個のチェックノードについて同時に行われる。
【００９８】
演算装置３２において、Q個のチェックノードについて、同時に、チェックノード演算が行われることにより得られるQ個のチェックノードメッセージは、演算装置３２からサイクリックシフト装置３３に供給される。
【００９９】
サイクリックシフト装置３３は、演算装置３２からのQ個のチェックノードメッセージを、１個のパラレルデータとして、そのパラレルデータを、次に行われるバリアブルノード演算のためにサイクリックシフトする。そして、サイクリックシフト装置３３は、サイクリックシフト後のパラレルデータを構成するQ個のチェックノードメッセージを、記憶装置３１に供給して記憶させる。
【０１００】
以上のように、Q個ずつのチェックノードについて、チェックノード演算が行われることにより、すべてのチェックノード（LDPC符号の検査行列の行数のチェックノード）について、チェックノードメッセージが求められ、記憶装置３１に記憶されると、記憶装置３１から、記憶装置３１に記憶されたLDPC符号の受信値と、チェックノードメッセージとが、適宜読み出され、演算装置３２に供給される。
【０１０１】
そして、以下、上述した場合と同様にして、バリアブルノード演算と、チェックノード演算とが、交互に繰り返される。
【０１０２】
LDPC復号装置では、次の１符号長のLDPC符号の受信値が、取得部１１（図１）から供給されるまでの間に、上述した、バリアブルノード演算とチェックノード演算とを交互に繰り返す繰り返し復号が、所定の回数だけ行われる。
【０１０３】
そして、繰り返し復号が所定の回数だけ行われると、演算装置３２では、記憶装置３１に記憶されたLDPC符号の受信値と、チェックノードメッセージとを用いて、式（５）の演算が行われる。そして、演算装置３２では、式（５）の演算の演算結果を、例えば、硬判定した判定結果が、記憶装置３１に記憶された１符号長のLDPC符号の復号結果として出力される。
【０１０４】
その後は、LDPC復号装置において、次の１符号長のLDPC符号の受信値が、取得部１１（図１）から供給されるのを待って、同様の処理が繰り返される。
【０１０５】
次に、図４は、図３のLDPC復号装置がLDPC復号の対象とするLDPC符号の検査行列Hの例を示している。
【０１０６】
なお、図４の検査行列Hは、演算装置３２（図３）が同時にメッセージを求めるノードの個数Qを、５個とした場合の、行×列が３０×９０の検査行列の例であり、Q×Q、すなわち、５×５の行列の単位で間隔を空けてある。
【０１０７】
また、図４の検査行列Hでは、"0"を、ピリオド（"."）で表現している。
【０１０８】
図４において、検査行列Hは、５×５の単位行列、その単位行列の１のうち１個以上が０になった行列（以下、適宜、準単位行列という）、単位行列又は準単位行列を（行方向若しくは列方向に）サイクリックシフト(cyclic shift)した行列（以下、適宜、シフト行列という）、単位行列、準単位行列、又はシフト行列のうちの２以上(複数)の和（以下、適宜、和行列という）、５×５の０行列の組合わせで表されている。なお、図４の検査行列HのLDPC符号は、符号化率が2/3で、符号長が90のLDPC符号である。
【０１０９】
いま、上述の、単位行列、準単位行列、シフト行列、和行列、０行列を構成行列と呼ぶこととすると、図４の検査行列Hは、構成行列で構成される。
【０１１０】
図３のLDPC復号装置は、以上のような構成行列で構成される検査行列HのLDPC符号を、LDPC復号の対象とする。したがって、取得部１１（図１）が取得する送信データに含まれるLDPC符号は、構成行列で構成される検査行列HのLDPC符号である。
【０１１１】
図３のLDPC復号装置では、５個ずつのノードについて、メッセージが同時に求められることで、図４の検査行列HのLDPC符号が復号される。
【０１１２】
すなわち、例えば、いま、検査行列Hの第１列（左から１列目）ないし第５列に対応する５個のバリアブルノードnv#1ないしnv#5に注目すると、演算装置３２の演算器３２1では、バリアブルノードnv#1について、第１列の"1"に対応する枝からのチェックノードメッセージを用いて、第１列の"1"に対応する枝へのバリアブルノードメッセージが求められる。
【０１１３】
同時に、他の演算器３２2ないし演算器３２5の各演算器３２qでは、バリアブルノードnv#qについて、第q列の"1"に対応する枝からのチェックノードメッセージを用いて、第q列の"1"に対応する枝へのバリアブルノードメッセージが求められる。
【０１１４】
より具体的には、検査行列Hの第ｊ行第ｉ列を、(j,i)と表すこととすると、演算器３２1ないし３２5では、まず、検査行列Hの(1,1)から(5,5)の５×５の単位行列（構成行列）Aの５個の"1"に対応する枝への５個のバリアブルノードメッセージが同時に求められる。そして、その５個のバリアブルノードメッセージが、サイクリックシフト装置３３を介して、記憶装置３１に供給され、１ワードとして記憶される。
【０１１５】
次に、演算器３２1ないし３２5では、検査行列Hの(6,1)から(10,5)の５×５の和行列（構成行列）Bの"1"に対応する枝へのバリアブルノードメッセージが同時に求められる。
【０１１６】
ここで、演算装置３２では、重みが２以上の構成行列については、その構成行列を、重みが１であるQ×Q（ここでは、５×５）の単位行列、準単位行列、又は、単位行列若しくは準単位行列をサイクリックシフトしたシフト行列のうちの複数の和の形で表現したときの、その重みが１の単位行列、準単位行列、又はシフト行列ごとに、メッセージが求められる。
【０１１７】
和行列Bは、重みが２で、５×５の単位行列を右に１個だけサイクリックシフトした第１のシフト行列と、右に２個だけサイクリックシフトした第２のシフト行列との和になっている。
【０１１８】
このため、演算装置３２では、和行列Bについては、演算器３２1ないし３２5において、まず、和行列Bを構成する第１のシフト行列の５個の"1"に対応する枝への５個のバリアブルノードメッセージが同時に求められる。そして、その５個のバリアブルノードメッセージが、サイクリックシフト装置３３を介して、記憶装置３１に供給され、１ワードとして記憶される。
【０１１９】
その後、演算器３２1ないし３２5では、和行列Bを構成する第２のシフト行列の５個の"1"に対応する枝への５個のバリアブルノードメッセージが同時に求められる。そして、その５個のバリアブルノードメッセージが、サイクリックシフト装置３３を介して、記憶装置３１に供給され、１ワードとして記憶される。
【０１２０】
以下、同様に、図３のLDPC復号装置では、検査行列Hの５列の単位で、検査行列Hの"1"に対応する枝へのバリアブルノードメッセージが、５個ずつ同時に求められ、その５個のバリアブルノードメッセージが、１ワードとして、記憶装置３１に記憶される。
【０１２１】
以上のようにして、検査行列Hの最後の５列（検査行列Hの右端の５列）に対応するバリアブルノードまでについて、各列の"1"に対応する枝へのバリアブルノードメッセージが求められると、図３のLDPC復号装置では、そのバリアブルノードメッセージを用いて、検査行列Hの５行の単位で、検査行列Hの"1"に対応する枝へのチェックノードメッセージが、５個ずつ同時に求められ、その５個のチェックメッセージが、１ワードとして、記憶装置３１に記憶される。
【０１２２】
すなわち、例えば、いま、検査行列Hの第１行（上から１行目）ないし第５行に対応する５個のチェックノードnu#1ないしnu#5に注目すると、演算装置３２の演算器３２1では、チェックノードnu#1について、第１行の"1"に対応する枝からのバリアブルノードメッセージを用いて、第１行の"1"に対応する枝へのチェックノードメッセージが求められる。
【０１２３】
同時に、他の演算器３２2ないし演算器３２5の各演算器３２qでは、チェックノードnu#qについて、第q行の"1"に対応する枝からのバリアブルノードメッセージを用いて、第q行の"1"に対応する枝へのチェックノードメッセージが求められる。
【０１２４】
より具体的には、演算器３２1ないし３２5では、まず、検査行列Hの(1,1)から(5,5)の５×５の単位行列Aの５個の"1"に対応する枝への５個のチェックノードメッセージが同時に求められる。そして、その５個のバリアブルノードメッセージが、サイクリックシフト装置３３を介して、記憶装置３１に供給され、１ワードとして記憶される。
【０１２５】
次に、演算器３２1ないし３２5では、検査行列Hの(1,21)から(5,25)のシフト行列（構成行列）Cの"1"に対応する枝へのチェックノードメッセージが同時に求められる。ここで、シフト行列Cは、５×５の単位行列を右方向に３個だけサイクリックシフトした行列である。
【０１２６】
以下、同様に、図３のLDPC復号装置では、検査行列Hの５行の単位で、検査行列Hの"1"に対応する枝へのチェックノードメッセージが、５個ずつ同時に求められ、その５個のチェックノードメッセージが、１ワードとして、記憶装置３１に記憶される。
【０１２７】
以上のようにして、検査行列Hの最後の５行（検査行列Hの下端の５行）に対応するチェックノードまでについて、各行の"1"に対応する枝へのチェックノードメッセージが求められると、図３のLDPC復号装置では、そのチェックノードメッセージを用いて、上述したように、バリアブルノードメッセージが求められ、以下、同様の処理が、所定の回数（あらかじめ定められた、繰り返し復号の回数）だけ繰り返される。
【０１２８】
ここで、αをβで除算したときの剰余γを、式γ=α mod βと表すこととすると、i番目のノード（第ｉ行に対応するチェックノード、第ｉ列に対応するバリアブルノード）のノード演算は、式q=(i mod Q)+1で表されるqをサフィックスとする演算器３２qで行われる。
【０１２９】
図３のLDPC復号装置において、演算装置３２では、以上のように、検査行列Hを構成するQ×Qの構成行列の単位で、メッセージが同時に求められ、すなわち、構成行列の"1"に対応する枝へのQ個のメッセージが同時に求められる。そして、その同時に求められたQ個のメッセージが、１ワードとして、記憶装置３１に記憶される。
【０１３０】
記憶装置３１に１ワードとして記憶されるQ個のメッセージは、メッセージを求める次のノード演算で用いられるため、検査行列Hの"1"に基づいてサイクリックシフトしておく必要があり、図３のLDPC復号装置には、演算装置３２で求められたQ個のメッセージを、パラレルデータとしてサイクリックシフトしてから、記憶装置３１に供給するサイクリックシフト装置３３が設けられている。
【０１３１】
図５を参照して、サイクリックシフトが必要な理由を説明する。
【０１３２】
図５は、図４の検査行列Hについての、バリアブルノード演算とチェックノード演算とを説明する図である。
【０１３３】
いま、図４の検査行列Hの(1,1)から(5,5)の５×５の構成行列Aの行に対応するチェックノードnu#1ないしnu#5、その構成行列Aの列に対応するバリアブルノードnv#1ないしnv#5、及び、検査行列Hにおいて、構成行列Aと同一の行にある、(1,21)から(5,25)の５×５の構成行列Cの列に対応するバリアブルノードnv#21ないしnv#25に注目する。
【０１３４】
ここで、チェックノードnu#jは、検査行列Hの第j行に対応するチェックノードであり、バリアブルノードnv#iは、検査行列の第i列に対応するバリアブルノードである。
【０１３５】
チェックノードnu#jのチェックノード演算、及び、バリアブルノードnv#iのバリアブルノード演算は、演算装置３２（図３）の演算器３２qで行われる。但し、qは、チェックノード演算については、式q=(j mod 5)+1で表され、バリアブルノード演算については、式q=(i mod 5)+1で表される。
【０１３６】
例えば、いま、演算器３２1ないし３２5において、検査行列Hの第１行ないし第５行に対応する５個のチェックノードnu#1ないしnu#5のチェックノード演算が行われ、第１行ないし第５行の"1"に対応する枝へのチェックノードメッセージが求められたとする。
【０１３７】
ここで、第j行第i列の"1"に対応する枝へのチェックノードメッセージを、uj,iと表す。
【０１３８】
構成行列Aは、単位行列であり、その"1"に対応する枝へのチェックノードメッセージは、u1,1,u2,2,u3,3,u4,4、及びu5,5で表される。
【０１３９】
また、構成行列Cは、単位行列を右に３個だけサイクリックシフトしたシフト行列であり、その"1"に対応する枝へのチェックノードメッセージは、u1,24,u2,25,u3,21,u4,22、及びu5,23で表される
【０１４０】
構成行列A及びCだけに注目すると、演算器３２1は、チェックノードnu#1のチェックノード演算を行って、構成行列Aの第１行の"1"に対応する枝へのチェックノードメッセージu1,1と、構成行列Cの第１行の"1"に対応する枝へのチェックノードメッセージu1,24とを求める。
【０１４１】
演算器３２2は、チェックノードnu#2のチェックノード演算を行って、構成行列Aの第２行の"1"に対応する枝へのチェックノードメッセージu2,2と、構成行列Cの第２行の"1"に対応する枝へのチェックノードメッセージu2,25とを求める。
【０１４２】
演算器３２3は、チェックノードnu#3のチェックノード演算を行って、構成行列Aの第３行の"1"に対応する枝へのチェックノードメッセージu3,3と、構成行列Cの第３行の"1"に対応する枝へのチェックノードメッセージu3,21とを求める。
【０１４３】
演算器３２4は、チェックノードnu#4のチェックノード演算を行って、構成行列Aの第４行の"1"に対応する枝へのチェックノードメッセージu4,4と、構成行列Cの第４行の"1"に対応する枝へのチェックノードメッセージu4,22とを求める。
【０１４４】
演算器３２5は、チェックノードnu#5のチェックノード演算を行って、構成行列Aの第５行の"1"に対応する枝へのチェックノードメッセージu5,5と、構成行列Cの第５行の"1"に対応する枝へのチェックノードメッセージu5,23とを求める。
【０１４５】
演算装置３２（図３）において、構成行列Aの"1"に対応する枝へのチェックノードメッセージu1,1，u2,2，u3,3，u4,4、及びu5,5は、演算器３２1ないし３２5によって同時に求められ、上述したように、１ワードとして、サイクリックシフト装置３３(図３）を介して、記憶装置３１に記憶される。
【０１４６】
同様に、演算装置３２では、構成行列Cの"1"に対応する枝へのチェックノードメッセージu1,24，u2,25，u3,21，u4,22、及びu5,23が、演算器３２1ないし３２5によって同時に求められ、上述したように、１ワードとして、サイクリックシフト装置３３を介して、記憶装置３１に記憶される。
【０１４７】
ここで、５個のチェックノードメッセージu1,1，u2,2，u3,3，u4,4、及びu5,5の並びを、(u1,1，u2,2，u3,3，u4,4，u5,5)と表す。この場合、５個のチェックノードメッセージu1,24，u2,25，u3,21，u4,22、及びu5,23の並びは、(u1,24，u2,25，u3,21，u4,22，u5,23)と表される。
【０１４８】
検査行列Hの"1"に対応する枝へのチェックノードメッセージのすべてが求められると、その後は、バリアブルノードメッセージを求めるバリアブルノード演算が行われる。
【０１４９】
すなわち、いま、検査行列Hの、構成行列Aが含まれる第１列ないし第５列に注目すると、演算器３２1は、検査行列Hの第１列の"1"に対応する枝からのチェックノードメッセージを用いて、バリアブルノードnv#1のバリアブルノード演算を行う。
【０１５０】
同様に、演算器３２2は、検査行列Hの第２列の"1"に対応する枝からのチェックノードメッセージを用いて、バリアブルノードnv#2のバリアブルノード演算を行う。
【０１５１】
演算器３２3は、検査行列Hの第３列の"1"に対応する枝からのチェックノードメッセージを用いて、バリアブルノードnv#3のバリアブルノード演算を行う。
【０１５２】
演算器３２4は、検査行列Hの第４列の"1"に対応する枝からのチェックノードメッセージを用いて、バリアブルノードnv#4のバリアブルノード演算を行う。
【０１５３】
演算器３２5は、検査行列Hの第５列の"1"に対応する枝からのチェックノードメッセージを用いて、バリアブルノードnv#5のバリアブルノード演算を行う。
【０１５４】
以上のように、サフィックスqが式q=(i mod 5)+1で表される演算器３２qでは、検査行列Hの第i列の"1"に対応する枝からのチェックノードメッセージを用いてバリアブルノード演算を行う。
【０１５５】
バリアブルノード演算に用いられるチェックノードメッセージは、上述したように、５個のチェックノードメッセージを１ワードとして、記憶装置３１に記憶される。
【０１５６】
１ワードとしてのチェックノードメッセージの並びを、(U1，U2，U3，U4，U5)と表し、演算器３２qが、１ワードとしてのチェックノードメッセージの並び(U1，U2，U3，U4，U5)のうちの、q番目のチェックノードメッセージUqを用いて、バリアブルノード演算を行うこととすると、単位行列となっている構成行列Aの"1"に対応する枝への５個のチェックノードメッセージの並び(u1,1，u2,2，u3,3，u4,4，u5,5)では、図５に示すように、演算器３２qでのバリアブルノード演算に用いられるチェックノードメッセージが、q番目に配置されているので、演算器３２qでは、１ワードとしてのチェックノードメッセージの並び(u1,1，u2,2，u3,3，u4,4，u5,5)のうちのq番目のチェックノードを用いて、バリアブルノード演算を行うことができる。
【０１５７】
一方、単位行列を右方向に３個だけサイクリックシフトしたシフト行列となっている構成行列Cの"1"に対応する枝への５個のチェックノードメッセージの並び(u1,24，u2,25，u3,21，u4,22，u5,23)では、図５に示すように、演算器３２qでのバリアブルノード演算に用いられるチェックノードメッセージが、q番目から、右方向（チェックノードメッセージの並び(u1,24，u2,25，u3,21，u4,22，u5,23)の最後の方向）に３個だけサイクリックシフトした位置に配置されている。
【０１５８】
したがって、演算器３２qが、１ワードとしてのチェックノードメッセージの並び(U1，U2，U3，U4，U5)のうちの、q番目のチェックノードメッセージUqを用いて、バリアブルノード演算を行うには、そのバリアブルノード演算の前に、構成行列Cの"1"に対応する枝への５個のチェックノードメッセージの並び(u1,24，u2,25，u3,21，u4,22，u5,23)を、左方向（チェックノードメッセージの並び(u1,24，u2,25，u3,21，u4,22，u5,23)の先頭の方向）に、３個だけサイクリックシフトし、５個のチェックノードメッセージの並び(u3,21，u4,22，u5,23，u1,24，u2,25)にしておく必要がある。
【０１５９】
このように、演算器３２qが、１ワードとしてのメッセージ（バリアブルノードメッセージ、チェックノードメッセージ）の並びのうちの、q番目のメッセージを用いて、ノード演算（チェックノード演算、バリアブルノード演算）を行うことができるように、サイクリックシフト装置３３では、構成行列の"1"（検査行列Hの"1"でもある）に基づいて、演算器３２1ないし３２5で同時に求められる、１ワードとしての５個のメッセージの並びをサイクリックシフトする。
【０１６０】
ところで、LDPC符号を採用するディジタル放送の規格としては、例えば、DVB(Digital Video Broadcasting)-S2や、国内の次世代BS(Broadcasting Satellite)放送の規格（以下、高度化BSともいう）等がある。
【０１６１】
図６は、DVB-S2、及び高度化BSで規定されているLDPC符号と、それぞれのLDPC符号を復号するLDPC復号装置の実装の例を示している。
【０１６２】
DVB-S2、及び、高度化BSにおいて採用されているLDPC符号の検査行列のうちの、情報ビットに対応する部分（以下、情報行列ともいう）は、巡回構造になっている。
【０１６３】
巡回構造とは、ある列が、他の列をサイクリックシフトしたものと一致している構造をいい、例えば、P列ごとに、そのP列の各行の"1"の位置が、そのP列の最初（左端）の列を、パリティ長をPで除算して得られる値に比例する値だけ、列方向にサイクリックシフトした位置になっている構造も含まれる。以下、適宜、巡回構造におけるP列を、巡回構造の単位の列数という。
【０１６４】
ここで、DVB-S2、及び、高度化BSにおいて採用されているLDPC符号の検査行列は、行や列の置換を必要に応じて行うことで、P×Pの構成行列で構成される行列とすることができる。
【０１６５】
また、演算装置３２（図３）において同時に求められるメッセージの数（演算単位）Q個としては、例えば、巡回構造の単位の列数Pを採用することができる。
【０１６６】
巡回構造の単位の列数Pとしては、DVB-S2では、360が規定されており、高度化BSでは、374が規定されている。
【０１６７】
したがって、演算単位Qとして、巡回構造の単位の列数Pを採用する場合には、演算装置３２では、DVB-S2のLDPC復号装置では、360個のメッセージが同時に求められ、高度化BSのLDPC復号装置では、374個のメッセージが同時に求められる。
【０１６８】
演算装置３２で同時に求められたメッセージは、サイクリックシフト装置３３を介して、記憶装置３１（図３）に供給され、１ワードとして記憶される。
【０１６９】
したがって、１個のメッセージのビット数として、例えば、5ビットを採用すると、DVB-S2のLDPC復号装置では、記憶装置３１の１ワードを、1800ビット（＝5［ビット］×Q(=P=360)）とする必要がある。一方、高度化BSのLDPC復号装置では、記憶装置３１の１ワードを、1870ビット（＝5［ビット］×Q(=P=374)）とする必要がある。
【０１７０】
また、DVB-S2では、検査行列の枝数（"1"の数）の最大値（最大の枝数）が、P×792-1個（360×792-1個）になっており、高度化BSでは、検査行列の枝数の最大値が、P×435-1個（374×435-1個）になっている。
【０１７１】
１ワードは、Q(=P)個のメッセージ分のデータであるので、最大の枝数を有する検査行列のLDPC符号が採用された場合、DVB-S2のLDPC復号装置では、一通りのノード演算（チェックノード演算、又はバリアブルノード演算）で得られる全メッセージのワード数は、792ワードとなる。
【０１７２】
すなわち、DVB-S2のLDPC復号装置では、記憶装置３１において、ノード演算で得られるメッセージを記憶するためのワード数として、792ワードが必要となる。
【０１７３】
一方、高度化BSのLDPC復号装置では、最大の枝数を有する検査行列のLDPC符号が採用された場合に、一通りのノード演算で得られる全メッセージのワード数は、435ワードとなる。
【０１７４】
したがって、高度化BSのLDPC復号装置では、記憶装置３１において、ノード演算で得られるメッセージを記憶するためのワード数として、435ワードが必要となる。
【０１７５】
記憶装置３１（図３）では、ノード演算で得られるメッセージの他、復号の対象となる１符号長分のLDPC符号の受信値を記憶する必要がある。
【０１７６】
DVB-S2では、LDPC符号の最大の符号長として、64800ビットが規定されており、高度化BSでは、LDPC符号の最大の符号長として、44880ビットが規定されている。
【０１７７】
したがって、DVB-S2のLDPC復号装置では、１符号長分のLDPC符号の受信値を記憶するためのワード数として、180ワード（＝64800［ビット］×5［ビット］／1800［ビット／ワード］）が必要となる。
【０１７８】
また、高度化BSのLDPC復号装置では、１符号長分のLDPC符号の受信値を記憶するためのワード数として、120ワード（＝44880［ビット］×5［ビット］／1870［ビット／ワード］）が必要となる。
【０１７９】
以上から、DVB-S2のLDPC復号装置では、記憶装置３１のワード数として、ノード演算で得られるメッセージを記憶するための792ワードと、LDPC符号の受信値を記憶するための180ワードとの、合計で972ワードが必要となり、１ワードのビット数は、1800ビットとなる。
【０１８０】
一方、高度化BSのLDPC復号装置では、記憶装置３１のワード数として、ノード演算で得られるメッセージを記憶するための435ワードと、LDPC符号の受信値を記憶するための120ワードとの、合計で555ワードが必要となり、１ワードのビット数は、1870ビットとなる。
【０１８１】
図３のLDPC復号装置を、DVB-S2用と、高度化BS用との両用とする実装を行う場合、記憶装置３１、及び、演算装置３２は、DVB-S2と高度化BSとのそれぞれのLDPC復号装置に必要とされる仕様のうちの、大きい（多い）方に合わせて、LDPC復号装置を構成すればよい。
【０１８２】
したがって、記憶装置３１は、１ワードを1870ビットとして、972ワードを記憶することができるメモリ等で構成すればよい。また、演算装置３２は、374個のメッセージを同時に求めることができるように、図３におけるMを374として、374個の演算器３２1ないし３２374で構成すればよい。
【０１８３】
一方、サイクリックシフト装置３３では、高度化BSについては、374個のメッセージのサイクリックシフトを行う必要があり、DVB-S2については、360個のメッセージのサイクリックシフトを行う必要がある。
【０１８４】
そして、374個のメッセージのサイクリックシフトを行うには、374単位のバレルシフタが必要であり、360個のメッセージのサイクリックシフトを行うには、360単位のバレルシフタが必要である。
【０１８５】
すなわち、図７は、図３のLDPC復号装置が、DVB-S2用と高度化BS用との両用である場合の、サイクリックシフト装置３３の構成例を示している。
【０１８６】
図７において、サイクリックシフト装置３３は、バレルシフタ５１及び５２と、セレクタ５３とから構成されている。
【０１８７】
バレルシフタ５１には、演算装置３２（図３）から、高度化BSのLDPC符号について同時に求められる374個のメッセージとしての入力データ#1ないし#374が、１個のパラレルデータとして供給される。さらに、バレルシフタ５１には、制御装置３４（図３）から、サイクリックシフトのシフト量kを表す制御信号が供給される。
【０１８８】
バレルシフタ５１は、374単位のバレルシフタであり、演算装置３２から供給される入力データ#1ないし#374を、制御装置３４から供給される制御信号が表す、0ないし374未満の範囲のシフト量kだけサイクリックシフトする。そして、バレルシフタ５１は、そのサイクリックシフト後の入力データ#1+k,#2+k,・・・,#374,#1,#2,・・・,#kを、シフトデータ#1,#2,・・・,#374として、セレクタ５３に供給する。
【０１８９】
バレルシフタ５２には、演算装置３２（図３）から、DVB-S2のLDPC符号について同時に求められる360個のメッセージとしての入力データ#1ないし#360が、１個のパラレルデータとして供給される。さらに、バレルシフタ５２には、制御装置３４（図３）から、サイクリックシフトのシフト量kを表す制御信号が供給される。
【０１９０】
バレルシフタ５２は、360単位のバレルシフタであり、演算装置３２から供給される入力データ#1ないし#360を、制御装置３４から供給される制御信号が表す、0ないし360未満の範囲のシフト量kだけサイクリックシフトする。そして、バレルシフタ５２は、そのサイクリックシフト後の入力データ#1+k,#2+k,・・・,#360,#1,#2,・・・,#kを、シフトデータ#1,#2,・・・,#360として、セレクタ５３に供給する。
【０１９１】
セレクタ５３には、バレルシフタ５１からのシフトデータ#1ないし#374、及び、バレルシフタ５２からのシフトデータ#1ないし#360が供給される他、制御装置３４（図３）から、高度化BS及びDVB-S2のLDPC符号の復号のうちのいずれか一方の選択を表す選択信号（これは、サイクリックシフト装置３３において、M(=374)個の入力データ#1ないし#Mから構成されるパラレルデータ、及び、N(=360)個の入力データ#1ないし#Nから構成されるパラレルデータのうちのいずれのサイクリックシフトを行うのかを表す選択信号でもある）としての制御信号が供給される。
【０１９２】
すなわち、制御装置３４は、高度化BSのLDPC符号の復号を行う場合には、高度化BSのLDPC符号の復号の選択を表す選択信号を、セレクタ５３に供給する。また、制御装置３４は、DVB-S2のLDPC符号の復号を行う場合には、DVB-S2のLDPC符号の復号の選択を表す選択信号を、セレクタ５３に供給する。
【０１９３】
セレクタ５３は、制御装置３４からの選択信号が、高度化BSのLDPC符号の復号の選択を表している場合、バレルシフタ５１から供給されるシフトデータ#1ないし#374を選択し、サイクリックシフト装置３３でのサイクリックシフトの結果である出力データ#1ないし#374として出力する。この出力データ#1ないし#374は、記憶装置３１（図３）に、１ワードとして供給されて記憶される。
【０１９４】
また、セレクタ５３は、制御装置３４からの選択信号が、DVB-S2のLDPC符号の復号の選択を表している場合、バレルシフタ５２から供給されるシフトデータ#1ないし#360を選択し、サイクリックシフト装置３３でのサイクリックシフトの結果である出力データ#1ないし#360として出力する。この出力データ#1ないし#360は、記憶装置３１（図３）に、１ワードとして供給されて記憶される。
【０１９５】
以上のように、サイクリックシフト装置３３を、２個のバレルシフタ５１及び５２を設けて構成する場合には、サイクリックシフト装置３３、ひいては、図３のLDPC復号装置が大型化する。
【０１９６】
そこで、図８は、図３のLDPC復号装置を、DVB-S2用と高度化BS用との両用として構成する場合の、サイクリックシフト装置３３の他の構成例を示している。
【０１９７】
図８では、サイクリックシフト装置３３は、１個のバレルシフタ６１と、選択回路６２、及び、選択制御回路６３とから構成される。
【０１９８】
バレルシフタ６１には、制御装置３４（図３）から、シフト量kを表す制御信号が供給される。さらに、バレルシフタ６１には、M個の入力データ#1ないし#Mからなるパラレルデータが、演算装置３２から供給される。
【０１９９】
バレルシフタ６１は、M単位のバレルシフタであり、演算装置３２から供給される入力データ#1ないし#Mを、制御装置３４から供給される制御信号が表す、0ないしM未満の範囲のシフト量kだけサイクリックシフトする。そして、バレルシフタ６１は、そのサイクリックシフト後の入力データ#1+k,#2+k,・・・,#M,#1,#2,・・・,#kを、シフトデータ#1,#2,・・・,#Mとして、選択回路６２に供給する。
【０２００】
なお、log2M以上の最小の整数をKと表すこととすると、シフト量kは、Kビットで表される。
【０２０１】
また、演算単位Qとして、例えば、上述したように、巡回構造の単位の列数Pを採用する場合には、値Mとしては、演算単位Qである巡回構造の単位の列数Pとしての374及び360のうちの、大きい方、すなわち、374が採用される。
【０２０２】
高度化BSのLDPC復号では、演算装置３２において、374(=M)個のメッセージが同時に求められ、その374個のメッセージが、入力データ#1ないし#Mとして、バレルシフタ６１に供給される。
【０２０３】
そして、バレルシフタ６１では、入力データ#1ないし#Mが、制御装置３４からのシフト量kだけサイクリックシフトされる。
【０２０４】
ここで、高度化BSのLDPC復号では、シフト量kは、0ないしM(=374)未満の範囲の整数である。
【０２０５】
一方、DVB-S2のLDPC復号では、演算装置３２において、374(=M)より小のN(<M)個である360個のメッセージが同時に求められ、その360個のメッセージが、入力データ#1ないし#Mのうちの、入力データ#1ないし#Nとして、バレルシフタ６１に供給される。
【０２０６】
さらに、この場合、バレルシフタ６１には、入力データ#N+1,#N+2,・・・,M（ここでは、入力データ#361,#362,・・・#374）として、例えば、不定のデータ（無効なデータ）が供給される。
【０２０７】
そして、バレルシフタ６１では、入力データ#1ないし#Mが、制御装置３４からのシフト量kだけサイクリックシフトされる。
【０２０８】
ここで、DVB-S2のLDPC復号では、シフト量kは、0ないしN(=360)未満の範囲の整数である。
【０２０９】
また、DVB-S2のLDPC復号では、上述したように、バレルシフタ６１に供給される入力データ#1ないし#Mのうちの、最後のM-N個の入力データ#N+1ないしMは、無効なデータであり、バレルシフタ６１では、そのような無効な入力データ#N+1ないしMを含む、M個の入力データ#1ないし#Mがサイクリックシフトされることで、そのM個の入力データ#1ないし#Mに含まれる、演算装置３２で同時に求められたN個のメッセージとしての入力データ#1ないし#Nがサイクリックシフトされる。
【０２１０】
選択回路６２は、選択制御回路６３からの、N-1ビットの選択制御信号に従い、例えば、バレルシフタ６１から供給される（バレルシフタ６１が出力する）シフトデータ#1ないし#Mの全部を、M個の入力データ#1ないし#Mを１個のパラレルデータとしたサイクリックシフトの結果であるM個の出力データ#1ないし#Mとして選択して出力する。
【０２１１】
また、選択回路６２は、選択制御回路６３からの、N-1ビットの選択制御信号に従い、例えば、バレルシフタ６１から供給されるシフトデータ#1ないし#MのうちのN個を、N個の入力データ#1ないし#Nを１個のパラレルデータとしたサイクリックシフトの結果であるN個の出力データ#1ないし#Nとして選択して出力する。
【０２１２】
すなわち、高度化BSのLDPC復号では、選択回路６２において、演算装置３２で同時に求められるM(=374)個のメッセージを入力データ#1ないし#Mとして、シフト量kだけサイクリックシフトをした結果を、M個の出力データ#1ないし#Mとして出力する必要がある。
【０２１３】
この場合、選択回路６２は、選択制御回路６３からの、N-1ビットの選択制御信号に従い、バレルシフタ６１からのシフトデータ#1ないし#Mを、M個の出力データ#1ないし#Mとして選択して出力する。
【０２１４】
一方、DVB-S2のLDPC復号では、選択回路６２において、演算器装置３２で同時に求められる、M個より小のN(=360)個のメッセージを入力データ#1ないし#Nとして、シフト量kだけサイクリックシフトをした結果を、N個の出力データ#1ないし#Nとして出力する必要がある。
【０２１５】
この場合、選択回路６２は、選択制御回路６３からの、N-1ビットの選択制御信号に従い、1ないしN-k番目の出力データとして、バレルシフタ６１が行うサイクリックシフトの方向の先頭から1ないしN-k番目のシフトデータ#1ないし#N-kを選択して出力する。さらに、選択回路６２は、N-k+1ないしN番目の出力データ#N-k+1ないし#Nとして、バレルシフタ６１が行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目のシフトデータ#N-k+1+(M-N)ないし#N+(M-N)を選択して出力する。
【０２１６】
なお、ここでは、上述したように、バレルシフタ６１は、入力データ#1ないし#Mを、シフト量kだけサイクリックシフトし、そのサイクリックシフト後の入力データ#1+k,#2+k,・・・,#M,#1,#2,・・・,#kを、シフトデータ#1ないし#Mとする。
【０２１７】
したがって、ここでは、バレルシフタ６１が行うサイクリックシフトの方向とは、入力データ#1ないし#Mの先頭の方向（入力データ#1ないし#Mの並びの、入力データ#Mから入力データ#1に向かう方向）である。
【０２１８】
選択制御回路６３には、制御装置３４（図３）から、シフト量kを表す制御信号と、高度化BS又はDVB-S2のLDPC符号の復号の選択を表す選択信号が供給される。
【０２１９】
選択制御回路６３は、制御装置３４（図３）からの選択信号、さらには、シフト量kに基づき、後述するようにして、N-1ビットの選択制御信号を生成し、選択回路６２に供給する。
【０２２０】
次に、図９は、図８のバレルシフタ６１の構成例を示すブロック図である。
【０２２１】
なお、図９では、説明を簡単にするために、値Mを、８としてあり、したがって、図９のバレルシフタ６１は、８単位のバレルシフタである。
【０２２２】
バレルシフタ６１は、M個の、2入力１出力のセレクタを、K（Kは、上述したように、log2M以上の最小の整数）段だけ配置して構成される。
【０２２３】
いまの場合、値Mが８であるから、値Kは３であり、したがって、バレルシフタ６１は、１段目の８個のセレクタ７１1ないし７１8、２段目の８個のセレクタ７２1ないし７２8、及び、３段目の８個のセレクタ７３1ないし７３8から構成される。
【０２２４】
１段目のセレクタ７１1ないし７１8には、８(=M)単位のサイクリックシフトの対象となる入力データ#1ないし#8が供給される。
【０２２５】
すなわち、１段目のセレクタ７１hの一方の入力端子には、入力データ#hが供給される。また、１段目のセレクタ７１hの他方の入力端子には、入力データ#h'が供給される。
【０２２６】
ここで、入力データ#h'は、入力データ#hから、サイクリックシフトの方向とは、１(=20)個だけ逆方向にある入力データであり、値h'は、式h'=((h+1) mod M)で表される。
【０２２７】
１段目のセレクタ７１hには、さらに、３(=K)ビットで表されるシフト量kの１ビット目（LSB(Least Significant Bit)から１ビット目）が供給される。
【０２２８】
セレクタ７１hは、シフト量kの１ビット目が"0"である場合には、一方の入力端子に供給される入力データ#hを選択し、第１の選択データ#hとして出力する。
【０２２９】
また、セレクタ７１hは、シフト量kの１ビット目が"1"である場合には、他方の入力端子に供給される入力データ#h'を選択し、第１の選択データ#hとして出力する。
【０２３０】
１段目のセレクタ７１1ないし７１8が出力する第１の選択データ#hは、２段目のセレクタ７２1ないし７２8に供給される。
【０２３１】
すなわち、２段目のセレクタ７２iの一方の入力端子には、１段目のセレクタ７１iから、第１の選択データ#iが供給される。また、２段目のセレクタ７２iの他方の入力端子には、１段目のセレクタ７１i'から、第１の選択データ#i'が供給される。
【０２３２】
ここで、第１の選択データ#i'は、第１の選択データ#iから、サイクリックシフトの方向とは、２(=21)個だけ逆方向にある入力データであり、値i'は、式i'=((i+2) mod M)で表される。
【０２３３】
２段目のセレクタ７２iには、さらに、３(=K)ビットで表されるシフト量kの２ビット目が供給される。
【０２３４】
セレクタ７２iは、シフト量kの２ビット目が"0"である場合には、一方の入力端子に供給される第１の選択データ#iを選択し、第２の選択データ#iとして出力する。
【０２３５】
また、セレクタ７２iは、シフト量kの２ビット目が"1"である場合には、他方の入力端子に供給される第１の選択データ#i'を選択し、第２の選択データ#iとして出力する。
【０２３６】
２段目のセレクタ７２1ないし７２8が出力する第２の選択データ#iは、３段目のセレクタ７３1ないし７３8に供給される。
【０２３７】
すなわち、３段目のセレクタ７３jの一方の入力端子には、２段目のセレクタ７２jから、第２の選択データ#jが供給される。また、３段目のセレクタ７３jの他方の入力端子には、２段目のセレクタ７２j'から、第２の選択データ#j'が供給される。
【０２３８】
ここで、第２の選択データ#j'は、第２の選択データ#jから、サイクリックシフトの方向とは、４(=22)個だけ逆方向にある入力データであり、値j'は、式j'=((j+4) mod M)で表される。
【０２３９】
３段目のセレクタ７３jには、さらに、３(=K)ビットで表されるシフト量kの３ビット目が供給される。
【０２４０】
セレクタ７３jは、シフト量kの３ビット目が"0"である場合には、一方の入力端子に供給される第２の選択データ#jを選択し、シフトデータ#jとして出力する。
【０２４１】
また、セレクタ７３jは、シフト量kの３ビット目が"1"である場合には、他方の入力端子に供給される第２の選択データ#j'を選択し、シフトデータ#jとして出力する。
【０２４２】
次に、図８において、例えば、Mを８とするとともに、Nを６として、選択回路６２が行う処理について説明する。
【０２４３】
８(=M)単位のバレルシフタ６１に対して、８個の入力データ#1ないし#8を供給し、その８個の入力データ#1ないし#8のサイクリックシフトを行う場合には、バレルシフタ６１が出力する８個のシフトデータ#1ないし#8を、そのまま、出力データ#1ないし#8として出力すればよい。
【０２４４】
一方、８(=M)単位のバレルシフタ６１に対して、６(=N)個の入力データ#1ないし#6を供給し、その６個の入力データ#1ないし#6のサイクリックシフトを行う場合には、バレルシフタ６１が出力する８個のシフトデータ#1ないし#8には、２(=M-N)個の無効なデータが含まれるため、その無効なデータに対処する必要がある。
【０２４５】
図１０は、８単位のバレルシフタ６１において行われる、６個の入力データ#1ないし#6のサイクリックシフトの一例を示している。
【０２４６】
図１０では、８単位のバレルシフタ６１において、６(=N)個の入力データ#1ないし#6を、先頭の方向に、３(=k)個だけサイクリックシフトしようとしている。
【０２４７】
しかしながら、バレルシフタ６１は、８個の入力データ#1ないし#8を対象としたサイクリックシフトを行う８単位のバレルシフタであるため、６個の入力データ#1ないし#6に、入力データ#7及び#8それぞれとしての無効なデータx及びyを加えた８個の入力データ#1ないし#8のサイクリックシフトが行われる。
【０２４８】
すなわち、図１０では、バレルシフタ６１において、入力データ#1,#2,・・・,#6,x,yの並びが、３個だけサイクリックシフトされる。したがって、バレルシフタ６１の出力（シフトデータ#1ないし#8）は、入力データ#4(=k+1),#5,#6(=N),x,y,#1,#2,#3(=k)の並びとなる。
【０２４９】
６個の入力データ#1ないし#6を（先頭（左）の方向に）３個だけサイクリックシフトした結果は、入力データ#4,#5,#6,#1,#2,#3であるから、選択回路６２では、バレルシフタ６１が出力する入力データ#4,#5,#6,x,y,#1,#2,#3のうちの、サイクリックシフトの方向の先頭から３(=N-k)個の入力データ#4,#5,#6を、そのまま、出力データ#1,#2,#3として選択し、その後は、２(=M-N)個だけ下にシフトした位置にある３(=k)個の入力データ#1,#2,#3を、出力データ#4,#5,#6として選択することで、６個の入力データ#1ないし#6を３個だけサイクリックシフトした入力データ#4,#5,#6,#1,#2,#3の並びを、６個の出力データ#1ないし#6として得ることができる。
【０２５０】
図１１は、８単位のバレルシフタ６１において行われる、６個の入力データ#1ないし#6のサイクリックシフトの他の一例を示している。
【０２５１】
図１１では、８単位のバレルシフタ６１において、６個の入力データ#1ないし#6を、５(=k)個だけサイクリックシフトしようとしている。
【０２５２】
しかしながら、図１１では、図１０の場合と同様に、バレルシフタ６１において、入力データ#1,#2,・・・,#6,x,yの並びが、５個だけサイクリックシフトされるので、バレルシフタ６１の出力（シフトデータ#1ないし#8）は、入力データ#6(=k+1),x,y,#1,#2,#3,#4,#5(=k)の並びとなる。
【０２５３】
６個の入力データ#1ないし#6を５個だけサイクリックシフトした結果は、入力データ#6,#1,#2,#3,#4,#5であるから、選択回路６２では、バレルシフタ６１が出力する入力データ#6,x,y,#1,#2,#3,#4,#5のうちの、サイクリックシフトの方向の先頭から１(=N-k)個の入力データ#6を、そのまま、出力データ#1として選択し、その後は、２(=M-N)個だけ下にシフトした位置にある５(=k)個の入力データ#1,#2,#3,#4,#5を、出力データ#2,#3,#4,#5,#6として選択することで、６個の入力データ#1ないし#6を５個だけサイクリックシフトした入力データ#6,#1,#2,#3,#4,#5の並びを、６個の出力データ#1ないし#6として得ることができる。
【０２５４】
以上から、M単位のバレルシフタ６１において、Mより小のN個の入力データ#1ないし#Nの、k個のサイクリックシフトを行う場合には、選択回路６２において、M単位のバレルシフタ６１が出力するM個のシフトデータ#1ないし#Mのうちの、サイクリックシフトの方向の先頭からN-k個のシフトデータ#1ないし#N-kを、そのまま、出力データ#1ないし#N-kとして選択し、その後は、M-N個だけ下（後ろ）にあるk個のシフトデータ#N-k+(M-N)+1,・・・,#Mを、出力データ#N-k+1ないし#Nとして選択することで、N個の入力データ#1ないし#Nをk個だけサイクリックシフトした、正しい結果を得ることができる。
【０２５５】
図１２は、図８の選択回路６２の構成例を示している。
【０２５６】
上述したように、選択回路６２は、M単位のバレルシフタ６１が出力するM個のシフトデータ#1ないし#Mのうちの、サイクリックシフトの方向の先頭からN-k個のシフトデータ#1ないし#N-kを、そのまま、出力データ#1ないし#N-kとして選択し、その後は、M-N個だけ下（後ろ）にあるk個のシフトデータ#N-k+(M-N)+1,・・・,#Mを、出力データ#N-k+1ないし#Nとして選択することが可能となるように、N-1個の、２入力１出力のセレクタ８１2ないし８１Nから構成される。
【０２５７】
セレクタ８１nにおいては、その一方の入力端子に、バレルシフタ６１（図８）が出力するシフトデータ#nが供給され、他方の入力端子に、シフトデータ#nから、M-N個だけ後ろのシフトデータ#n+(M-N)が供給される。
【０２５８】
セレクタ８１nは、2ないしNの範囲の整数であるnについて、一方の入力端子に供給されるシフトデータ#n（n番目のシフトデータ）、又は、他方の入力端子に供給されるシフトデータ#n+(M-N)（n+(M-N)番目のシフトデータ）を選択し、出力データ#n（n番目の出力データ）として出力する。
【０２５９】
すなわち、セレクタ８１nには、バレルシフタ６１（図８）が出力するシフトデータ#n及び#n+(M-N)の他、選択制御回路６３（図８）からのN-1ビットの選択制御信号b2,b3,・・・,bNのうちの第n-1ビット（先頭からn-1ビット目のビット）bnが供給される。
【０２６０】
セレクタ８１nは、選択制御回路６３からの選択制御信号の第n-1ビットbnが"0"である場合、一方の入力端子に供給されるシフトデータ#nを選択し、出力データ#nとして出力する。
【０２６１】
また、セレクタ８１nは、選択制御回路６３からの選択制御信号の第n-1ビットbnが"1"である場合、他方の入力端子に供給されるシフトデータ#n+(M-N)を選択し、出力データ#nとして出力する。
【０２６２】
以上のように、N-1個のセレクタ８１2ないし８１Nを有する選択回路６２では、バレルシフタ６１（図８）が、M個の入力データ#1ないし#Mから構成されるパラレルデータをサイクリックシフトし、そのサイクリックシフトの結果、M個のシフトデータ#1ないし#Mを出力する場合には、1番目のシフトデータ#1を、1番目の出力データ#1として出力し、セレクタ８１nにおいて、n番目のシフトデータ#nを、n番目の出力データ#nとして選択して出力し、N+1ないしM番目のシフトデータ#N+1ないし#Mを、N+1ないしM番目の出力データ#N+1ないし#Mとして出力する。
【０２６３】
一方、バレルシフタ６１（図８）が、Mより小のN個の入力データ#1ないし#Nから構成されるパラレルデータをサイクリックシフトし、そのサイクリックシフトの結果、M個のシフトデータ#1ないし#Mを出力する場合には、選択回路６２では、1番目のシフトデータ#1を、1番目の出力データ#1として出力し、1ないしN-k-1番目のセレクタ８１2ないし８１N-kにおいて、n番目のシフトデータ#nを、n番目の出力データ#nとして選択して出力し、N-kないしN-1番目のセレクタ８１N-k+1ないし８１Nにおいて、n+(M-N)番目のシフトデータ#n+(M-N)を、n番目の出力データ#nとして選択して出力する。
【０２６４】
選択制御回路６３は、制御装置３４（図３）から供給される選択信号、及び、シフト量kに基づいて、選択回路６２を、上述のように動作させるためのN-1ビットの選択制御信号b2ないしbNを生成して、選択回路６２に供給することで、選択回路６２のセレクタ８１2ないし８１Nによるシフトデータの選択を制御する。
【０２６５】
すなわち、制御装置３４からの選択信号が、高度化BSのLDPC符号の復号の選択を表しており、サイクリックシフト装置３３において、M(=374)個の入力データ#1ないし#Mから構成されるパラレルデータのサイクリックシフトを行う場合、選択制御回路６３は、値がすべて"0"の選択制御信号b2ないしbNを生成し、選択回路６２に供給する。
【０２６６】
また、制御装置３４からの選択信号が、DVB-S2のLDPC符号の復号の選択を表しており、サイクリックシフト装置３３において、N(=360)個の入力データ#1ないし#Nから構成されるパラレルデータのサイクリックシフトを行う場合、選択制御回路６３は、制御装置３４からのシフト量kを、選択制御信号b2ないしbNに変換するための変換テーブルを参照して、選択制御信号b2ないしbNを生成し、選択回路６２に供給する。
【０２６７】
すなわち、図１３は、変換テーブルを模式的に示している。
【０２６８】
図１３の変換テーブルによれば、シフト量kに対して、下位kビットbM-k+1ないしbMが、"1"で、上位N-k-1ビットb2ないしbN-kが、"0"になっている選択制御信号b2ないしbNが生成される。
【０２６９】
図１４は、Mが８で、Nが６の場合の選択回路６２の構成例を示しており、図１５は、選択制御回路６３で用いられる変換テーブルを示している。
【０２７０】
Mが８で、Nが６の場合には、選択回路６２は、５(=N-1)個のセレクタ８１2ないし８１6から構成される。
【０２７１】
セレクタ８１nにおいては、その一方の入力端子に、バレルシフタ６１（図８）が出力するシフトデータ#nが供給され、他方の入力端子に、シフトデータ#nから、２(=M-N)個だけ後ろのシフトデータ#n+2が供給される。
【０２７２】
さらに、セレクタ８１nには、選択制御回路６３（図８）からの５(=N-1)ビットの選択制御信号b2,b3,b4,b5,b6のうちの第n-1ビット（先頭からn-1ビット目のビット）bnが供給される。
【０２７３】
セレクタ８１nは、選択制御回路６３からの選択制御信号の第n-1ビットbnが"0"である場合、一方の入力端子に供給されるシフトデータ#nを選択し、出力データ#nとして出力する。
【０２７４】
また、セレクタ８１nは、選択制御回路６３からの選択制御信号の第n-1ビットbnが"1"である場合、他方の入力端子に供給されるシフトデータ#n+2を選択し、出力データ#nとして出力する。
【０２７５】
なお、選択回路６２では、バレルシフタ６１からのシフトデータ#1、及び、#N+1,#N+2,・・・,#Mは、そのまま、出力データ#1、及び、#N+1,#N+2,・・・,#Mとして出力されるようになっている。
【０２７６】
すなわち、図１４では、選択回路６２において、シフトデータ#1,#7,#8は、そのまま、出力データ#1,#7,#8として出力される。
【０２７７】
選択制御回路６３（図８）は、バレルシフタ６１（図８）が、８(=M)個の入力データ#1ないし#8から構成されるパラレルデータをサイクリックシフトし、そのサイクリックシフトの結果、８個のシフトデータ#1ないし#8を出力する場合には、値がすべて"0"の選択制御信号b2ないしb6を生成し、選択回路６２に供給する。
【０２７８】
この場合、選択回路６２では、バレルシフタ６１からのシフトデータ#1が、出力データ#1として出力される。また、選択回路６２では、セレクタ８１2ないし８１6において、選択制御信号b2ないしb6に従い、バレルシフタ６１からのシフトデータ#2ないし#6が、出力データ#2ないし#6として、それぞれ選択されて出力される。さらに、選択回路６２では、バレルシフタ６１からのシフトデータ#7,#8が、出力データ#7,#8として、それぞれ出力される。
【０２７９】
一方、バレルシフタ６１（図８）が、８(=M)より小の６(=N)個の入力データ#1ないし#6から構成されるパラレルデータをサイクリックシフトし、そのサイクリックシフトの結果、８個のシフトデータ#1ないし#8（但し、そのうちの２(=M-N)個のシフトデータは、無効なデータになっている）を出力する場合には、選択制御回路６３は、６個の入力データ#1ないし#6をサイクリックシフトするシフト量kに基づき、図１３で説明した変換テーブルを参照し、選択制御信号b2ないしb6を生成して、選択回路６２に供給する。
【０２８０】
図１５は、Nが6である場合の変換テーブルを示している。
【０２８１】
シフト量kが、例えば、図１０で説明したように、3である場合、選択制御回路６３は、図１５の変換テーブルを参照して、選択制御信号b2ないしb6として、0,0,1,1,1を生成し、選択回路６２に供給する。
【０２８２】
この場合、選択回路６２では、バレルシフタ６１からのシフトデータ#1,#7,#8が、出力データ#1,#7,#8として、それぞれ出力される。但し、最後のM-N個の出力データである出力データ#7,#8は、サイクリックシフトの結果として扱われず、破棄される。
【０２８３】
また、選択回路６２では、セレクタ８１2及び８１3において、値が"0"の選択制御信号b2及びb3に従い、バレルシフタ６１からのシフトデータ#2及び#3が、出力データ#2及び#3として、それぞれ選択されて出力される。
【０２８４】
さらに、選択回路６２では、セレクタ８１4ないし８１6において、値が"1"の選択制御信号b4ないしb6に従い、バレルシフタ６１からのシフトデータ#6ないし#8が、出力データ#4及び#6として、それぞれ選択されて出力される。
【０２８５】
以上のように、選択回路６２では、バレルシフタ６１からのシフトデータ#1,#2,#3,#6ないし#8が、出力データ#1ないし#6として、それぞれ出力される。
【０２８６】
シフト量kが、3である場合、図１０で説明したように、入力データ#1ないし#6に対して、バレルシフタ６１が出力するシフトデータ#1ないし#8は、入力データ#4,#5,#6,x,y,#1,#2,#3の並びとなる。
【０２８７】
したがって、上述したように、選択回路６２において、バレルシフタ６１からのシフトデータ#1,#2,#3,#6ないし#8が、出力データ#1ないし#6として、それぞれ出力されることにより、その出力データ#1ないし#6は、入力データ#1ないし#6をシフト量k=3だけサイクリックシフトした入力データ#4,#5,#6,#1,#2,#3の並びとなる。
【０２８８】
また、シフト量kが、例えば、図１１で説明したように、5である場合、選択制御回路６３は、図１５の変換テーブルを参照して、選択制御信号b2ないしb6として、1,1,1,1,1を生成し、選択回路６２に供給する。
【０２８９】
この場合、選択回路６２では、バレルシフタ６１からのシフトデータ#1,#7,#8が、出力データ#1,#7,#8として、それぞれ出力される。
【０２９０】
また、選択回路６２では、セレクタ８１2ないし８１6において、値が"1"の選択制御信号b2ないしb6に従い、バレルシフタ６１からのシフトデータ#4ないし#8が、出力データ#2及び#6として、それぞれ選択されて出力される。
【０２９１】
以上のように、選択回路６２では、バレルシフタ６１からのシフトデータ#1,#4ないし#8が、出力データ#1ないし#6として、それぞれ出力される。
【０２９２】
シフト量kが、5である場合、図１１で説明したように、入力データ#1ないし#6に対して、バレルシフタ６１が出力するシフトデータ#1ないし#8は、入力データ#6,x,y,#1,#2,#3,#4,#5の並びとなる。
【０２９３】
したがって、上述したように、選択回路６２において、バレルシフタ６１からのシフトデータ#1,#4ないし#8が、出力データ#1ないし#6として、それぞれ出力されることにより、その出力データ#1ないし#6は、入力データ#1ないし#6をシフト量k=5だけサイクリックシフトした入力データ#6,#1,#2,#3,#4,#5の並びとなる。
【０２９４】
次に、図１６を参照して、図８のサイクリックシフト装置３３の処理（サイクリックシフト処理）について説明する。
【０２９５】
M単位のバレルシフタ６１は、演算装置３２（図３）から、同時に求められるQ個のメッセージが供給されるのを待って、そのQ個のメッセージを、複数の入力データとして受信する。そして、バレルシフタ６１は、ステップＳ５１において、複数の入力データからなるパラレルデータを、制御装置３４から供給されるシフト量kだけサイクリックシフトし、その結果得られるM個のシフトデータ#1ないし#Mを、選択回路６２に出力して、処理は、ステップＳ５２に進む。
【０２９６】
ステップＳ５２では、選択制御回路６３が、制御装置３４から供給される選択信号に基づき、バレルシフタ６１でサイクリックシフトされたパラレルデータを構成する入力データの数が、M個であるか、又は、Mより小のN個であるかを判定する。
【０２９７】
ステップＳ５２において、バレルシフタ６１でサイクリックシフトされたパラレルデータを構成する入力データの数が、M個であると判定された場合、処理は、ステップＳ５３に進み、選択制御回路６３は、バレルシフタ６１が出力する1ないしM番目のシフトデータ#1ないし#Mを、そのまま、1ないしM番目の出力データ#1ないし#Mとしてそれぞれ選択するように、選択回路６３によるシフトデータ#1ないし#Mの選択を制御する。
【０２９８】
すなわち、選択制御回路６３は、値がすべて"0"の選択制御信号b2ないしbNを生成し、選択回路６２に供給する。
【０２９９】
その後、処理は、ステップＳ５３からステップＳ５４に進み、選択回路６２は、選択制御回路６３からの選択制御信号b2ないしbNに従い、バレルシフタ６１からのシフトデータ#m(m=1,2,・・・,M)を、出力データ#mとしてそれぞれ選択して出力し、サイクリックシフト処理を終了する。
【０３００】
また、ステップＳ５２において、バレルシフタ６１でサイクリックシフトされたパラレルデータを構成する入力データの数が、Mより小のN個であると判定された場合、処理は、ステップＳ５５に進み、選択制御回路６３は、バレルシフタ６１が出力する1ないしM番目のシフトデータ#1ないし#Mのうちの、1ないしN-k番目のN-k個のシフトデータ#1ないし#N-kを、そのまま、1ないしN-k番目の出力データ#1ないし#N-kとしてそれぞれ選択し、かつ、最後からk個のシフトデータ#M-k+1ないし#Mを、出力データN-k+1ないし#Nとしてそれぞれ選択するように、選択回路６３によるシフトデータ#1ないし#Mの選択を制御する。
【０３０１】
すなわち、選択制御回路６３は、制御装置３４（図３）から供給されるシフト量kに対して、図１３の変換テーブルに従い、下位kビットが"1"で、残りの上位ビットが"0"の選択制御信号b2ないしbNを生成し、選択回路６２に供給する。
【０３０２】
その後、処理は、ステップＳ５５からステップＳ５６に進み、選択回路６２は、選択制御回路６３からの選択制御信号b2ないしbNに従い、バレルシフタ６１からのシフトデータ#1ないし#Mのうちの、シフトデータ#1ないし#N-kを、出力データ#1ないし#N-kとして、それぞれ選択して出力し、かつ、シフトデータ#M-k+1ないし#Mを、出力データN-k+1ないし#Nとして、それぞれ選択して出力し、サイクリックシフト処理を終了する。
【０３０３】
以上のように、M単位のバレルシフタ６１を有するサイクリックシフト装置３３において、M個より小のN個の入力データから構成されるパラレルデータを、N未満のシフト量kだけサイクリックシフトする場合に、選択回路６２において、1ないしN-k番目の出力データ#1ないし#N-kとして、バレルシフタ６１が行うサイクリックシフトの方向の先頭から1ないしN-k番目のシフトデータ#1ないし#N-kを選択して出力し、N-k+1ないしN番目の出力データ#N-k+1ないし#Nとして、バレルシフタ６１が行うサイクリックシフトの方向の先頭からN-k+1+(M-N)ないしN+(M-N)番目のシフトデータ#M-k+1ないし#Mを選択して出力するので、M単位のバレルシフタ６１を利用して、M個の入力データのサイクリックシフトの他、Mより小のN個の入力データのサイクリックシフトを行うことができる。
【０３０４】
したがって、M単位のバレルシフタ６１の他に、N単位のバレルシフタを設けずに、M個の入力データのサイクリックシフトと、Mより小のN個の入力データのサイクリックシフトとの両方を行うことができる。
【０３０５】
その結果、M個の入力データのサイクリックシフトと、Mより小のN個の入力データのサイクリックシフトとを行う必要がある場合に、多数のセレクタを必要とするバレルシフタを２個設けずに済むので（１個のバレルシフタで済むので）、装置を小型に構成することができる。
【０３０６】
なお、図３のLDPC復号装置を、DVB-S2用と高度化BS用との両用とする場合、値Mは、DVB-S2の巡回構造の単位の列数Pに等しい演算単位Qである360と、高度化BSの巡回構造の単位の列数Pに等しい演算単位Qである374とのうちの、大きい方に等しい374となり、値Nは、小さい方に等しい360となる。
【０３０７】
そして、図１のTVにおいて、DVB-S2の送信データを受信する場合には、制御装置３４（図３）は、DVB-S2のLDPC符号の復号の選択（バレルシフタ６１において、360(=N)個の入力データから構成されるパラレルデータのサイクリックシフトを行うこと）を表す選択信号を生成し、サイクリックシフト装置３３に供給する。
【０３０８】
さらに、制御装置３４は、DVB-S2のLDPC符号の検査行列を構成するQ×Q(=P×P=N×N)の構成行列に基づき、図５で説明したように、シフト量kを決定して、サイクリックシフト装置３３に供給する。
【０３０９】
一方、図１のTVにおいて、高度化BSの送信データを受信する場合には、制御装置３４（図３）は、高度化BSのLDPC符号の復号の選択（バレルシフタ６１において、374(=M)個の入力データから構成されるパラレルデータのサイクリックシフトを行うこと）を表す選択信号を生成し、サイクリックシフト装置３３に供給する。
【０３１０】
さらに、制御装置３４は、高度化BSのLDPC符号の検査行列を構成するQ×Q(=P×P=M×M)の構成行列に基づき、図５で説明したように、シフト量kを決定して、サイクリックシフト装置３３に供給する。
【０３１１】
なお、上述の実施の形態では、MとNを、374と360や、8と6としたが、MとNは、これらの値に限定されるものではない。但し、バレルシフタ６１（図８）として、M単位のバレルシフタを採用する場合、Nは、Mより小の値である必要がある。
【０３１２】
図１７は、図３のサイクリックシフト装置３３のさらに他の構成例を示している。
【０３１３】
なお、図中、図８の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
【０３１４】
すなわち、図１７のサイクリックシフト装置３３は、バレルシフタ６１を有する点で、図８の場合と一致するが、選択回路６２、及び、選択制御回路６３に代えて、選択回路１０２、及び、選択制御回路１０３が設けられている点で、図８の場合と相違する。
【０３１５】
図８では、Mより小のNを、１個の整数値としたが、Nとしては、複数であるT個の整数値を採用することができる。
【０３１６】
いま、Nとして採用するT個の整数値を、N1,N2,・・・,NTと表すこととする。なお、Ntは、N1ないしNTのうちの、降順でt番目の整数値であり、2以上M未満の範囲の値である。
【０３１７】
図１７のサイクリックシフト装置３３では、M単位のサイクリックシフトと、N1ないしNT単位それぞれのサイクリックシフトとの、合計で、T+1種類の単位のサイクリックシフトを行うことができる。
【０３１８】
バレルシフタ６１には、制御装置３４（図３）から、M未満（0以上）のシフト量kを表す制御信号が供給される。さらに、バレルシフタ６１には、M個の入力データ#1ないし#Mからなるパラレルデータが、演算装置３２から供給される。
【０３１９】
バレルシフタ６１は、M単位のバレルシフタであり、演算装置３２から供給される入力データ#1ないし#Mを、制御装置３４から供給される制御信号が表す、0ないしM未満の範囲のシフト量kだけサイクリックシフトする。そして、バレルシフタ６１は、そのサイクリックシフト後の入力データ#1+k,#2+k,・・・,#M,#1,#2,・・・,#kを、シフトデータ#1,#2,・・・,#Mとして、選択回路１０２に供給する。
【０３２０】
なお、図１７のサイクリックシフト装置３３において、Nt単位のサイクリックシフトを行う場合には、バレルシフタ６１に供給されるM個の入力データ#1ないし#Mのうちの、サイクリックシフトを行いたい入力データ#1ないし#Nt以外、つまり、入力データ#Nt+1,#Nt+2,・・・,Mは、無効なデータである。
【０３２１】
また、図１７のサイクリックシフト装置３３において、Nt単位のサイクリックシフトを行う場合、シフト量kは、Nt未満（0以上）の整数値である。
【０３２２】
選択回路１０２は、選択制御回路１０３からの選択制御信号に従い、例えば、バレルシフタ６１から供給される（バレルシフタ６１が出力する）シフトデータ#1ないし#Mの全部を、M個の入力データ#1ないし#Mを１個のパラレルデータとしたサイクリックシフトの結果であるM個の出力データ#1ないし#Mとして選択して出力する。
【０３２３】
また、選択回路１０２は、選択制御回路１０３からの選択制御信号に従い、バレルシフタ６１から供給されるシフトデータ#1ないし#MのうちのNt個を、Nt個の入力データ#1ないし#Ntを１個のパラレルデータとしたサイクリックシフト（Nt単位のサイクリックシフト）の結果であるNt個の出力データ#1ないし#Ntとして選択して出力する。
【０３２４】
すなわち、図１７のサイクリックシフト装置３３において、M単位のサイクリックシフトを行う場合（M単位のサイクリックシフトを行った結果を得たい場合）、選択回路１０２は、選択制御回路１０３からの選択制御信号に従い、バレルシフタ６１からのシフトデータ#1ないし#Mを、M個の出力データ#1ないし#Mとして選択して出力する。
【０３２５】
また、図１７のサイクリックシフト装置３３において、Nt単位のサイクリックシフトを行う場合（Nt単位のサイクリックシフトを行った結果を得たい場合）、選択回路１０２は、選択制御回路１０３からの選択制御信号に従い、1ないしNt-k番目の出力データとして、バレルシフタ６１が行うサイクリックシフトの方向の先頭から1ないしNt-k番目のシフトデータ#1ないし#Nt-kを選択して出力する。さらに、選択回路１０２は、Nt-k+1ないしN番目の出力データ#Nt-k+1ないし#Ntとして、バレルシフタ６１が行うサイクリックシフトの方向の先頭からNt-k+1+(M-Nt)ないしNt+(M-Nt)番目のシフトデータ#Nt-k+1+(M-Nt)ないし#Nt+(M-Nt)を選択して出力する。
【０３２６】
選択制御回路１０３には、制御装置３４（図３）から、シフト量kを表す制御信号と、何単位（M単位、又は、N1,N2,・・・,NT-1、若しくはNT単位のうちのいずれか）のサイクリックシフトを行うかを表す選択信号が供給される。
【０３２７】
選択制御回路１０３は、制御装置３４（図３）からの選択信号、さらには、シフト量kに基づき、後述するようにして、選択制御信号を生成し、選択回路１０２に供給する。
【０３２８】
図１８は、図１７の選択回路１０２の構成例を示している。
【０３２９】
選択回路１０２は、M単位のバレルシフタ６１が出力するM個のシフトデータ#1ないし#Mのうちの、サイクリックシフトの方向の先頭からNt-k個のシフトデータ#1ないし#Nt-kを、そのまま、出力データ#1ないし#Nt-kとして選択し、その後は、M-Nt個だけ下（後ろ）にあるk個のシフトデータ#Nt-k+(M-Nt)+1,・・・,#Mを、出力データ#Nt-k+1ないし#Ntとして選択することが可能となるように、N1-1個の、T+1入力１出力のセレクタ１１１＿２ないし１１１＿Ｎ1から構成される。
【０３３０】
セレクタ１１１＿ｎにおいては（n=2,3,・・・,N1）、そのT+1個の入力端子のうちの1番目の入力端子#0に、バレルシフタ６１（図１７）が出力するシフトデータ#nが供給される。さらに、2ないしT+1番目の入力端子#1ないし#Tのうちの、t+1番目の入力端子#tに、シフトデータ#nから、M-Nt個だけ後ろのシフトデータ#n+(M-Nt)が供給される。
【０３３１】
但し、シフトデータ#nから、M-Nt個だけ後ろのシフトデータ#n+(M-Nt)が存在しない場合、t+1番目の入力端子#tには、データは供給されない（無効なデータが供給される）。
【０３３２】
すなわち、例えば、セレクタ１１１＿ＮT＋１については、シフトデータ#NT+1から、M-NT個だけ後ろのシフトデータ#NT+1+(M-NT)は存在しないので（NT+1+(M-NT）＞Mとなるので）、そのT+1番目の入力端子#Tには、データは供給されない。
【０３３３】
また、例えば、セレクタ１１１＿Ｎ1については、シフトデータ#N1から、M-N1個だけ後ろのシフトデータ#N1+(M-N1)は存在するが、tが2ないしTの範囲については、シフトデータ#N1から、M-Nt個だけ後ろのシフトデータ#N1+(M-Nt)は存在しないので（N1+(M-Nt)＞Mとなるので）、その３ないしT+1番目の入力端子#2ないし#Tには、データは供給されない。
【０３３４】
セレクタ１１１＿ｎは、2ないしNtの範囲の整数であるnについて、1番目の入力端子#0に供給されるシフトデータ#n（n番目のシフトデータ）、又は、t+1番目の入力端子#tに供給されるシフトデータ#n+(M-Nt)（n+(M-Nt)番目のシフトデータ）を選択し、出力データ#n（n番目の出力データ）として出力する。
【０３３５】
すなわち、セレクタ１１１＿ｎには、バレルシフタ６１（図１７）が出力するシフトデータ#n、及び#n+(M-N1)，#n+(M-N2)，・・・，#n+(M-NT)の他、選択制御回路１０３（図１７）からの選択制御信号c_2,c_3,・・・,c_N1のうちの（先頭から）n-1番目c_nが供給される。
【０３３６】
セレクタ１１１＿ｎは、選択制御回路１０３からの選択制御信号のn-1番目c_nが"0"である場合、1番目の入力端子#0に供給されるシフトデータ#nを選択し、出力データ#nとして出力する。
【０３３７】
また、セレクタ１１１＿ｎは、選択制御回路１０３からの選択制御信号のn-1番目c_nがtである場合、t+1番目の入力端子#tに供給されるシフトデータ#n+(M-Nt)を選択し、出力データ#nとして出力する。
【０３３８】
以上のように、Nt-1個のセレクタ１１１＿２ないし１１１＿Ｎ1を有する選択回路１０２では、バレルシフタ６１（図１７）が、M個の入力データ#1ないし#Mから構成されるパラレルデータをサイクリックシフトし、そのサイクリックシフトの結果、M個のシフトデータ#1ないし#Mを出力する場合には、1番目のシフトデータ#1を、1番目の出力データ#1として出力し、セレクタ１１１＿ｎにおいて、n番目のシフトデータ#nを、n番目の出力データ#nとして選択して出力し、N1+1ないしM番目のシフトデータ#N1+1ないし#Mを、N1+1ないしM番目の出力データ#N1+1ないし#Mとして出力する。
【０３３９】
一方、バレルシフタ６１（図１７）が、Mより小のNt個の入力データ#1ないし#Ntから構成されるパラレルデータをサイクリックシフトし、そのサイクリックシフトの結果、M個のシフトデータ#1ないし#Mを出力する場合には、選択回路１０２では、1番目のシフトデータ#1を、1番目の出力データ#1として出力し、1ないしNt-k-1番目のセレクタ１１１＿２ないし１１１＿Ｎt−ｋにおいて、n番目のシフトデータ#nを、n番目の出力データ#nとして選択して出力し、Nt-kないしNt-1番目のセレクタ１１１＿Ｎt−ｋ＋１ないし１１１＿Ｎtにおいて、n+(M-Nt)番目のシフトデータ#n+(M-Nt)を、n番目の出力データ#nとして選択して出力する。
【０３４０】
選択制御回路１０３は、制御装置３４（図３）から供給される選択信号、及び、シフト量kに基づいて、選択回路１０２を、上述のように動作させるための選択制御信号c_2ないしc_N1を生成して、選択回路１０２に供給することで、選択回路１０２のセレクタ１１１＿２ないし１１１＿Ｎ1によるシフトデータの選択を制御する。
【０３４１】
すなわち、図１７のサイクリックシフト装置３３については、制御装置３４は、M単位、又は、N1,N2,・・・,NT-1、若しくはNT単位のうちのいずれかのサイクリックシフトを表す選択信号が供給される。
【０３４２】
制御装置３４からの選択信号が、M単位のサイクリックシフトを表している場合、選択制御回路１０３は、値がすべて"0"の選択制御信号c_2ないしc_N1を生成し、選択回路１０２に供給する。
【０３４３】
また、制御装置３４からの選択信号が、Nt単位のサイクリックシフトを表している場合、選択制御回路１０３は、制御装置３４からのシフト量kを、選択制御信号c_2ないしc_N1に変換するための変換テーブルを参照して、選択制御信号c_2ないしc_N1を生成し、選択回路１０２に供給する。
【０３４４】
選択制御回路１０３が参照する変換テーブルについては、後述する。
【０３４５】
図１９は、Mが８で、Nが、3(=T)個の整数値N1=6，N2=5、及びN3=4をとり得る場合の選択回路１０２の構成例を示している。
【０３４６】
Mが８で、N1が６の場合には、選択回路１０２は、5(=N1-1)個のセレクタ１１１＿２ないし１１１＿６から構成される。
【０３４７】
セレクタ１１１＿ｎは、4(=T+1)つの入力端子#0ないし#3を有する。そして、1番目の入力端子#0には、バレルシフタ６１（図１７）が出力するシフトデータ#nが供給され、t+1番目の入力端子#tには、シフトデータ#nから、M-Nt個だけ後ろのシフトデータ#n+(M-Nt)が供給される。
【０３４８】
すなわち、セレクタ１１１＿２については、1番目の入力端子#0に、シフトデータ#2が、2番目の入力端子#1に、シフトデータ#4が、3番目の入力端子#2に、シフトデータ#5が、4番目の入力端子#3に、シフトデータ#6が、それぞれ供給される。
【０３４９】
セレクタ１１１＿３については、1番目の入力端子#0に、シフトデータ#3が、2番目の入力端子#1に、シフトデータ#5が、3番目の入力端子#2に、シフトデータ#6が、4番目の入力端子#3に、シフトデータ#7が、それぞれ供給される。
【０３５０】
セレクタ１１１＿４については、1番目の入力端子#0に、シフトデータ#4が、2番目の入力端子#1に、シフトデータ#6が、3番目の入力端子#2に、シフトデータ#7が、4番目の入力端子#3に、シフトデータ#8が、それぞれ供給される。
【０３５１】
セレクタ１１１＿５については、1番目の入力端子#0に、シフトデータ#5が、2番目の入力端子#1に、シフトデータ#7が、3番目の入力端子#2に、シフトデータ#8が、それぞれ供給される。なお、セレクタ１１１＿５については、4番目の入力端子#3には、データは供給されない。
【０３５２】
セレクタ１１１＿６については、1番目の入力端子#0に、シフトデータ#6が、2番目の入力端子#1に、シフトデータ#8が、それぞれ供給される。なお、セレクタ１１１＿５については、3番目の入力端子#2、及び、4番目の入力端子#3には、データは供給されない。
【０３５３】
さらに、セレクタ１１１＿ｎには、選択制御回路１０３（図１７）からの選択制御信号c_2,c_3,c_4,c_5,c_6のうちのn-1番目（先頭からn-1番目）c_nが供給される。
【０３５４】
セレクタ１１１＿ｎは、選択制御回路１０３からの選択制御信号のn-1番目c_nが"0"である場合、1番目の入力端子#0に供給されるシフトデータ#nを選択し、出力データ#nとして出力する。
【０３５５】
また、セレクタ１１１＿ｎは、選択制御回路１０３からの選択制御信号のn-1番目c_nがtである場合、t+1番目の入力端子#tに供給されるシフトデータ#n+(M-Nt)を選択し、出力データ#nとして出力する。
【０３５６】
なお、選択回路１０２では、バレルシフタ６１からのシフトデータ#1、及び、#N1+1,#N1+2,・・・,#Mは、そのまま、出力データ#1、及び、#N1+1,#N1+2,・・・,#Mとして出力されるようになっている。
【０３５７】
すなわち、図１９では、選択回路１０２において、シフトデータ#1,#7,#8は、そのまま、出力データ#1,#7,#8として出力される。
【０３５８】
選択制御回路１０３（図１７）は、バレルシフタ６１（図１７）が、8(=M)個の入力データ#1ないし#8から構成されるパラレルデータをサイクリックシフトし、そのサイクリックシフトの結果、8個のシフトデータ#1ないし#8を出力する場合には、値がすべて"0"の選択制御信号c_2ないしc_6を生成し、選択回路１０２に供給する。
【０３５９】
この場合、選択回路１０２では、バレルシフタ６１からのシフトデータ#1が、出力データ#1として出力される。また、選択回路１０２では、セレクタ１１１＿２ないし１１１＿６において、選択制御信号c_2ないしc_6に従い、バレルシフタ６１からのシフトデータ#2ないし#6が、出力データ#2ないし#6として、それぞれ選択されて出力される。さらに、選択回路１０２では、バレルシフタ６１からのシフトデータ#7,#8が、出力データ#7,#8として、それぞれ出力される。
【０３６０】
一方、バレルシフタ６１（図１７）が、8(=M)より小のNt個（ここでは、N1=6，N2=5、及びN3=4のうちのいずれか）の入力データ#1ないし#Ntから構成されるパラレルデータをサイクリックシフトし、そのサイクリックシフトの結果、8個のシフトデータ#1ないし#8（但し、そのうちのM-Nt個のシフトデータは、無効なデータになっている）を出力する場合には、選択制御回路１０３は、Nt個の入力データ#1ないし#Ntをサイクリックシフトするシフト量kに基づき、変換テーブルを参照して、選択制御信号c_2ないしc_6を生成して、選択回路１０２に供給する。
【０３６１】
図２０は、選択回路１０２が図１９に示したように構成される場合に、選択制御回路１０３が参照する変換テーブルを示している。
【０３６２】
図２０に示すように、横軸を、選択制御信号c_nとするとともに、縦軸を、シフト量kとするテーブルとして、変換テーブルを構成する場合、Nt単位のサイクリックシフトを行うときに参照される変換テーブルは、横×縦が、（Nt-1)×Ntの行列（行×列が、Nt行×（Nt-1)列の行列）であって、対角線上の成分を含む左上側の三角形の部分の成分が0で、右下側の三角形の部分の成分がtの行列となる。
【０３６３】
すなわち、図２０Ａは、N1単位、すなわち、6(=N1)単位のサイクリックシフトを行う場合の変換テーブルを示している。
【０３６４】
図２０Ａの変換テーブルによれば、シフト量kが、例えば、図１０で説明したように、3である場合、選択制御回路１０３は、選択制御信号c_2ないしc_6として、0,0,1,1,1を生成し、選択回路１０２に供給する。
【０３６５】
この場合、選択回路１０２では、バレルシフタ６１からのシフトデータ#1,#7,#8が、出力データ#1,#7,#8として、それぞれ出力される。但し、最後のM-N1個の出力データである出力データ#7,#8は、サイクリックシフトの結果として扱われず、例えば、破棄される。なお、出力データ#7,#8は、そのまま出力しても良い。
【０３６６】
また、選択回路１０２では、セレクタ１１１＿２及び１１１＿３において、値が"0"の選択制御信号c_2及びc_3に従い、バレルシフタ６１からのシフトデータ#2及び#3が、出力データ#2及び#3として、それぞれ選択されて出力される。
【０３６７】
さらに、選択回路１０２では、セレクタ１１１＿４ないし１１１＿６において、値が"1"の選択制御信号c_4ないしc_6に従い、バレルシフタ６１からのシフトデータ#6ないし#8が、出力データ#4及び#6として、それぞれ選択されて出力される。
【０３６８】
以上のように、選択回路１０２では、バレルシフタ６１からのシフトデータ#1,#2,#3,#6ないし#8が、出力データ#1ないし#6として、それぞれ出力される。
【０３６９】
シフト量kが、3である場合、図１０で説明したように、入力データ#1ないし#6に対して、バレルシフタ６１が出力するシフトデータ#1ないし#8は、入力データ#4,#5,#6,x,y,#1,#2,#3の並びとなる。
【０３７０】
したがって、上述したように、選択回路１０２において、バレルシフタ６１からのシフトデータ#1,#2,#3,#6ないし#8が、出力データ#1ないし#6として、それぞれ出力されることにより、その出力データ#1ないし#6は、入力データ#1ないし#6をシフト量k=3だけサイクリックシフトした入力データ#4,#5,#6,#1,#2,#3の並びとなる。
【０３７１】
図２０Ｂは、N2単位、すなわち、5(=N2)単位のサイクリックシフトを行う場合の変換テーブルを示している。
【０３７２】
図２０Ｂの変換テーブルによれば、シフト量kが、例えば、3である場合、選択制御回路１０３は、選択制御信号c_2ないしc_5として、0,2,2,2を生成し、選択回路１０２に供給する。
【０３７３】
この場合、選択回路１０２では、バレルシフタ６１からのシフトデータ#1,が、出力データ#1として出力される。
【０３７４】
また、選択回路１０２では、セレクタ１１１＿２において、値が"0"の選択制御信号c_2に従い、バレルシフタ６１からのシフトデータ#2が、出力データ#2として選択されて出力される。
【０３７５】
さらに、選択回路１０２では、セレクタ１１１＿３ないし１１１＿５において、値が"2"の選択制御信号c_3ないしc_5に従い、バレルシフタ６１からのシフトデータ#6ないし#8が、出力データ#3及び#5として、それぞれ選択されて出力される。
【０３７６】
以上のように、選択回路１０２では、バレルシフタ６１からのシフトデータ#1,#2,#6ないし#8が、出力データ#1ないし#5として、それぞれ出力される。
【０３７７】
シフト量kが、3である場合、入力データ#1ないし#5に対して、バレルシフタ６１が出力するシフトデータ#1ないし#8は、入力データ#4,#5,×,×,×,#1,#2,#3の並びとなる。ここで、バツ印（×印）は、無効なデータを表す。
【０３７８】
したがって、上述したように、選択回路１０２において、バレルシフタ６１からのシフトデータ#1,#2,#6ないし#8が、出力データ#1ないし#5として、それぞれ出力されることにより、その出力データ#1ないし#5は、入力データ#1ないし#5をシフト量k=3だけサイクリックシフトした入力データ#4,#5,#1,#2,#3の並びとなる。
【０３７９】
なお、この場合、出力データ#6ないし#8は、無効なデータであり、選択回路１０２において、例えば、破棄される。但し、出力データ#6ないし#8は、そのまま出力しても良い。
【０３８０】
図２０Ｃは、N3単位、すなわち、4(=N3)単位のサイクリックシフトを行う場合の変換テーブルを示している。
【０３８１】
図２０Ｃの変換テーブルによれば、シフト量kが、例えば、3である場合、選択制御回路１０３は、選択制御信号c_2ないしc_4として、3,3,3を生成し、選択回路１０２に供給する。
【０３８２】
この場合、選択回路１０２では、バレルシフタ６１からのシフトデータ#1,が、出力データ#1として出力される。
【０３８３】
また、選択回路１０２では、セレクタ１１１＿２ないし１１１＿４において、値が"3"の選択制御信号c_2ないしc_4に従い、バレルシフタ６１からのシフトデータ#6ないし#8が、出力データ#2及び#4として、それぞれ選択されて出力される。
【０３８４】
以上のように、選択回路１０２では、バレルシフタ６１からのシフトデータ#1,#6ないし#8が、出力データ#1ないし#4として、それぞれ出力される。
【０３８５】
シフト量kが、3である場合、入力データ#1ないし#4に対して、バレルシフタ６１が出力するシフトデータ#1ないし#8は、入力データ#4,×,×,×,×,#1,#2,#3の並びとなる。
【０３８６】
したがって、上述したように、選択回路１０２において、バレルシフタ６１からのシフトデータ#1,#6ないし#8が、出力データ#1ないし#4として、それぞれ出力されることにより、その出力データ#1ないし#4は、入力データ#1ないし#4をシフト量k=3だけサイクリックシフトした入力データ#4,#1,#2,#3の並びとなる。
【０３８７】
なお、この場合、出力データ#5ないし#8は、無効なデータであり、選択回路１０２において、例えば、破棄される。但し、出力データ#5ないし#8は、そのまま出力しても良い。
【０３８８】
以上のように、M単位のバレルシフタ６１を有するサイクリックシフト装置３３において、M個より小のNt個の入力データから構成されるパラレルデータを、Nt未満のシフト量kだけサイクリックシフトする場合に、選択回路１０２において、1ないしNt-k番目の出力データ#1ないし#Nt-kとして、バレルシフタ６１が行うサイクリックシフトの方向の先頭から1ないしNt-k番目のシフトデータ#1ないし#Nt-kを選択して出力し、Nt-k+1ないしNt番目の出力データ#Nt-k+1ないし#Ntとして、バレルシフタ６１が行うサイクリックシフトの方向の先頭からNt-k+1+(M-Nt)ないしNt+(M-Nt)番目のシフトデータ#M-k+1ないし#Mを選択して出力するので、M単位のバレルシフタ６１を利用して、M個の入力データのサイクリックシフトの他、Mより小のNt個の入力データのサイクリックシフト、すなわち、N1,N2,・・・,NT-1、及びNT単位のサイクリックシフトを行うことができる。
【０３８９】
したがって、M単位のバレルシフタ６１の他に、バレルシフタを設けることなく、M単位と、そのM未満（2以上）のT種類の単位との、合計で、T+1種類の単位のサイクリックシフトを行うことができ、サイクリックシフト装置３３を小型に構成することができる。
【０３９０】
以上のように、Mより小のNとして、複数であるT個の整数値N1,N2,・・・,NTを採用することにより、図３のLDPC復号装置を、３種類以上の放送方式に共用することができる。
【０３９１】
すなわち、上述したように、DVB-S2では、巡回構造の単位の列数Pが360であり、高度化BSでは、巡回構造の単位の列数Pが374である。
【０３９２】
また、例えば、中国の地上ディジタル放送の規格であるDTMB(Digital Terrestrial Multimedia Broadcast)では、巡回構造の単位の列数Pとして、127が採用されている。
【０３９３】
さらに、将来策定される新たな放送規格では（又は、既存の放送規格の変更により）、巡回構造の単位の列数Pとして、例えば、256等の、374や、360，127とは異なる値が採用されることがあり得る。
【０３９４】
したがって、例えば、Nとして、３個の整数値N1,N2,N3を採用し、Mを374とするとともに、N1,N2,N3を、それぞれ、360,256,127とすることにより、図３のLDPC復号装置は、DVB-S2、高度化BS、DTMB、及び、新たな放送規格の、４つの放送方式（規格）に共用することができる。
【０３９５】
次に、上述の場合には、図３のLDPC復号装置の演算単位Qとして、巡回構造の単位の列数Pを採用したが、演算単位Qとしては、その他、例えば、巡回構造の単位の列数Pの、1及びP以外の約数P'を採用することができる。
【０３９６】
すなわち、検査行列が、P×Pの構成行列で構成される場合に、そのP×Pの構成行列は、行や列の置換を必要に応じて行うことで、Pの約数であるP'×P'の構成行列に、いわば分割することができる。
【０３９７】
したがって、演算単位Qとして、巡回構造の単位の列数Pの約数P'を採用した場合も、演算単位Qとして、巡回構造の単位の列数Pを採用した場合と同様に、LDPC符号の復号を行うことができる。
【０３９８】
図２１は、P×Pの構成行列と、その構成行列を分割したP'×P'の構成行列とを示している。
【０３９９】
すなわち、図２１Ａは、P×Pの構成行列としての6×6の構成行列を示している。
【０４００】
図２１Ａの構成行列は、6×6の単位行列を、１列だけ右にサイクリックシフトしたシフト行列になっている。
【０４０１】
図２１Ｂは、図２１Ａの6×6の構成行列を、6の約数である3×3の、4個の構成行列に分割した状態を示している。
【０４０２】
図２１Ａの6×6の構成行列は、その第１行(１行目）を第１行に、第３行を第２行に、第５行を第３行に、第２行を第４行に、第４行を第５行に、第６行を第６行に、それぞれ置換する行置換を行うとともに、第１列（１列目）を第１列に、第３列を第２列に、第５列を第３列に、第２列を第４列に、第４列を第５列に、第６列を第６列に、それぞれ置換する列置換を行うことで、図２１Ｂに示すように、3×3の、4個の構成行列に分割することができる。
【０４０３】
図２１Ｃは、図２１Ａの6×6の構成行列を、6の約数である2×2の、9個の構成行列に分割した状態を示している。
【０４０４】
図２１Ａの6×6の構成行列は、その第１行を第１行に、第４行を第２行に、第２行を第３行に、第５行を第４行に、第３行を第５行に、第６行を第６行に、それぞれ置換する行置換を行うとともに、第１列を第１列に、第４列を第２列に、第２列を第３列に、第５列を第４列に、第３列を第５列に、第６列を第６列に、それぞれ置換する列置換を行うことで、図２１Ｃに示すように、2×2の、9個の構成行列に分割することができる。
【０４０５】
以上のような構成行列の分割によれば、演算単位Qとして、巡回構造の単位の列数Pの約数P'を採用することができ、図３のLDPC符号化装置のさらなる小型化を図るとともに、効率化を図ることができる。
【０４０６】
すなわち、例えば、中国の地上ディジタル放送の規格であるDTMBでは、上述したように、巡回構造の単位の列数Pとして、127が採用されている。
【０４０７】
いま、図３のLDPC復号装置を、DVB-S2とDTMBとで共用することとし、演算単位Qとして、巡回構造の単位の列数Pを採用することとすると、DVB-S2についての演算単位Qは、360(=P)となり、DTMBについての演算単位Qは、127(=P)となる。
【０４０８】
この場合、図８のサイクリックシフト装置３３では、Mが360となり、Nが127となる。
【０４０９】
Mが360である場合、log2M以上の最小の整数Kは、9であり、したがって、バレルシフタ６１としては、360(=M)個の、2入力１出力のセレクタを、9(=K)段だけ配置したバレルシフタが必要となる。
【０４１０】
しかしながら、127単位のサイクリックシフトでは、9段のセレクタのうちの、1段目から7段目（log2N以上の最小の整数）までのセレクタしか必要としない（使用しない）。
【０４１１】
したがって、Mが360で、Nが127である場合に、9段のセレクタを配置したバレルシフタを、バレルシフタ６１として採用しなければならないのは、効率的でないし、サイクリックシフト装置３３も大型化する。
【０４１２】
そこで、DVB-S2についての演算単位Qとして、巡回構造の単位の列数P(=360)の約数P'である、例えば、180を採用することにより、バレルシフタ６１として、少ない段数のセレクタを配置したバレルシフタを採用することができ、その結果、図８のサイクリックシフト装置３３（ひいては、図３のLDPC復号装置）の小型化、及び効率化を図ることができる。
【０４１３】
すなわち、DVB-S2についての演算単位Qとして、巡回構造の単位の列数P(=360)の約数P'である180を採用した場合には、Mが180となり、Nが127となる。
【０４１４】
Mが180である場合、log2M以上の最小の整数Kは、8であり、バレルシフタ６１は、180(=M)個の、2入力１出力のセレクタを、8(=K)段だけ配置したバレルシフタとなる。
【０４１５】
したがって、Mが180である場合には、Mが360である場合に比較して、バレルシフタ６１を小型に構成することができ、さらに、効率的に使用することができる。
【０４１６】
なお、Nとして、T個の整数値N1ないしNTを採用する場合も、演算単位Qとして、巡回構造の単位の列数Pの約数P'を、必要に応じて採用することができる。
【０４１７】
すなわち、図３のLDPC復号装置を、例えば、DVB-S2、高度化BS、DTMB、及び、新たな放送規格の、４つの放送方式に共用する場合には、DVB-S2については、演算単位Qとして、巡回構造の単位の列数P(=360)の約数P'である、例えば、180を、高度化BSについては、演算単位Qとして、巡回構造の単位の列数P(=374)の約数P'である、例えば、187を、DTMBについては、演算単位Qとして、巡回構造の単位の列数Pである127を、新たな放送規格については、巡回構造の単位の列数P(=256)の約数P'である、例えば、128を、それぞれ採用することができる。
【０４１８】
そして、Mを187とするとともに、N1,N2,N3を、それぞれ、180,128,127とすることにより、図３のLDPC復号装置は、DVB-S2、高度化BS、DTMB、及び、新たな放送規格の、４つの放送方式に共用することができる。
【０４１９】
以上のように、MとN（Nt)とは、値が近い方が、バレルシフタ６１を、効率的に使用することができる。
【０４２０】
次に、図２２は、本発明を適用した受信システムの第１実施の形態の構成例を示すブロック図である。
【０４２１】
図２２において、受信システムは、取得部２０１、伝送路復号処理部２０２、及び、情報源復号処理部２０３から構成される。
【０４２２】
取得部２０１は、例えば、図１の取得部１１と同様に構成され、例えば、地上ディジタル放送、衛星ディジタル放送、CATV網、インターネットその他のネットワーク等の、図示せぬ伝送路を介して、信号を取得し、伝送路復号処理部２０２に供給する。
【０４２３】
伝送路復号処理部２０２は、取得部２０１が伝送路を介して取得した信号に対して、伝送路で生じる誤りを訂正する処理を少なくとも含む伝送路復号処理を施し、その結果得られる信号を、情報源復号処理部２０３に供給する。
【０４２４】
すなわち、取得部２０１が伝送路を介して取得した信号は、伝送路で生じる誤りを訂正するための誤り訂正符号化を、少なくとも行うことで得られた信号であり、伝送路復号処理部２０２は、そのような信号に対して、例えば、誤り訂正処理等の伝送路復号処理を施す。
【０４２５】
ここで、誤り訂正符号化としては、例えば、LDPC符号化や、リードソロモン符号化等がある。ここでは、誤り訂正符号化として、少なくとも、LDPC符号化が行われている。
【０４２６】
また、伝送路復号処理には、変調信号の復調等が含まれることがある。
【０４２７】
情報源復号処理部２０３は、伝送路復号処理が施された信号に対して、圧縮された情報を元の情報に伸張する処理を少なくとも含む情報源復号処理を施す。
【０４２８】
すなわち、取得部２０１が伝送路を介して取得した信号には、情報としての画像や音声等のデータ量を少なくするために、情報を圧縮する圧縮符号化が施されていることがあり、その場合、情報源復号処理部２０３は、伝送路復号処理が施された信号に対して、圧縮された情報を元の情報に伸張する処理(伸張処理）等の情報源復号処理を施す。
【０４２９】
なお、取得部２０１が伝送路を介して取得した信号に、圧縮符号化が施されていない場合には、情報源復号処理部２０３では、圧縮された情報を元の情報に伸張する処理は行われない。
【０４３０】
ここで、伸張処理としては、例えば、MPEGデコード等がある。また、伝送路復号処理には、伸張処理の他、デスクランブル等が含まれることがある。
【０４３１】
以上のように構成される受信システムでは、取得部２０１において、例えば、画像や音声等のデータに対して、MPEG符号化等の圧縮符号化が施され、さらに、LDPC符号化等の誤り訂正符号化が施された信号が、伝送路を介して取得され、伝送路復号処理部２０２に供給される。
【０４３２】
伝送路復号処理部２０２では、取得部２０１からの信号に対して、図１の復調部１２と同様の処理が、伝送路復号処理として施され、その結果得られる信号が、情報源復号処理部２０３に供給される。
【０４３３】
情報源復号処理部２０３では、伝送路復号処理部２０２からの信号に対して、図１のデコーダ１４と同様の処理が、情報源復号処理として施され、その結果得られる画像、又は音声が出力される。
【０４３４】
以上のような図２２の受信システムは、例えば、ディジタル放送としてのテレビジョン放送を受信するテレビチューナ等に適用することができる。
【０４３５】
なお、取得部２０１、伝送路復号処理部２０２、及び、情報源復号処理部２０３は、それぞれ、１つの独立した装置（ハードウェア（IC(Integrated Circuit)等））、又はソフトウエアモジュール）として構成することが可能である。
【０４３６】
また、取得部２０１、伝送路復号処理部２０２、及び、情報源復号処理部２０３については、取得部２０１と伝送路復号処理部２０２とのセットや、伝送路復号処理部２０２と情報源復号処理部２０３とのセット、取得部２０１、伝送路復号処理部２０２、及び、情報源復号処理部２０３のセットを、１つの独立した装置として構成することが可能である。
【０４３７】
図２３は、本発明を適用した受信システムの第２実施の形態の構成例を示すブロック図である。
【０４３８】
なお、図中、図２２の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
【０４３９】
図２３の受信システムは、取得部２０１、伝送路復号処理部２０２、及び、情報源復号処理部２０３を有する点で、図２２の場合と共通し、出力部２１１が新たに設けられている点で、図２２の場合と相違する。
【０４４０】
出力部２１１は、例えば、画像を表示する表示装置や、音声を出力するスピーカであり、情報源復号処理部２０３から出力される信号としての画像や音声等を出力する。すなわち、出力部２１１は、画像を表示し、あるいは、音声を出力する。
【０４４１】
以上のような図２３の受信システムは、例えば、ディジタル放送としてのテレビジョン放送を受信するTVや、ラジオ放送を受信するラジオ受信機等に適用することができる。
【０４４２】
なお、取得部２０１において取得された信号に、圧縮符号化が施されていない場合には、伝送路復号処理部２０２が出力する信号が、出力部２１１に供給される。
【０４４３】
図２４は、本発明を適用した受信システムの第３実施の形態の構成例を示すブロック図である。
【０４４４】
なお、図中、図２２の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
【０４４５】
図２４の受信システムは、取得部２０１、及び、伝送路復号処理部２０２を有する点で、図２２の場合と共通する。
【０４４６】
但し、図２４の受信システムは、情報源復号処理部２０３が設けられておらず、記録部２２１が新たに設けられている点で、図２２の場合と相違する。
【０４４７】
記録部２２１は、伝送路復号処理部２０２が出力する信号（例えば、MPEGのTSのTSパケット）を、光ディスクや、ハードディスク（磁気ディスク）、フラッシュメモリ等の記録（記憶）媒体に記録する（記憶させる）。
【０４４８】
以上のような図２４の受信システムは、テレビジョン放送を録画するレコーダ等に適用することができる。
【０４４９】
なお、図２４において、受信システムは、情報源復号処理部２０３を設けて構成し、情報源復号処理部２０３で、情報源復号処理が施された後の信号、すなわち、デコードによって得られる画像や音声を、記録部２２１で記録することができる。
【０４５０】
以上、本発明を、LDPC復号を行うLDPC復号装置に適用した場合について説明したが、本発明は、その他、例えば、可変長復号を行う装置、その他のサイクリックシフトを必要とする装置に適用可能である。
【０４５１】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０４５２】
【図１】本発明を適用したTVの一実施の形態の構成例を示すブロック図である。
【図２】LDPC復号を説明する図である。
【図３】復調部１２が内蔵するLDPC復号装置の構成例を示すブロック図である。
【図４】LDPC符号の検査行列の例を示す図である。
【図５】ノード演算で求められたメッセージのサイクリックシフトが必要な理由を説明する図である。
【図６】DVB-S2と、高度化BSの仕様を説明する図である。
【図７】サイクリックシフト装置３３の第１の構成例を示すブロック図である。
【図８】サイクリックシフト装置３３の第２の構成例を示すブロック図である。
【図９】バレルシフタ６１の構成例を示すブロック図である。
【図１０】８単位のバレルシフタ６１において行われる、６個の入力データ#1ないし#6のサイクリックシフトの例を示す図である。
【図１１】８単位のバレルシフタ６１において行われる、６個の入力データ#1ないし#6のサイクリックシフトの他の例を示す図である。
【図１２】選択回路６２の構成例を示すブロック図である。
【図１３】変換テーブルを示す図である。
【図１４】Mが8で、Nが6である場合の選択回路６２の構成例を示すブロック図である。
【図１５】Nが6である場合の変換テーブルを示す図である。
【図１６】サイクリックシフト装置３３が行うサイクリックシフト処理を説明するフローチャートである。
【図１７】サイクリックシフト装置３３の第３の構成例を示すブロック図である。
【図１８】選択回路１０２の構成例を示すブロック図である。
【図１９】Mが8で、N1,N2,N3がそれぞれ6,5,4である場合の選択回路１０２の構成例を示すブロック図である。
【図２０】Nが6で、N1,N2,N3がそれぞれ6,5,4である場合の変換テーブルを示す図である。
【図２１】P×Pの構成行列と、その構成行列を分割したP'×P'の構成行列とを示す図である。
【図２２】本発明を適用した受信システムの第１実施の形態の構成例を示すブロック図である。
【図２３】本発明を適用した受信システムの第２実施の形態の構成例を示すブロック図である。
【図２４】本発明を適用した受信システムの第３実施の形態の構成例を示すブロック図である。
【符号の説明】
【０４５３】
１１  取得部，  １２  復調部，  １３  デマルチプレクサ，  １４  デコーダ，  １５  表示部，  ３１  記憶装置，  ３２  演算装置，  ３２1ないし３２M  演算器，  ３３  サイクリックシフト装置，  ３４  制御装置，  ５１，５２  バレルシフタ，  ５３  セレクタ，  ６１  バレルシフタ，  ６２  選択回路，  ６３  選択制御回路，  ７１1ないし７１8，７２1ないし７２8，７３1ないし７３8，８１2ないし８１N  セレクタ，  １０２  選択回路，  １０３  選択制御回路，  １１１＿２ないし１１１＿Ｎ1  セレクタ，  ２０１  取得部，  ２０１  伝送路復号処理部，  ２０３  情報源復号処理部，  ２１１  出力部，  ２２１  記録部
【図１】
2010093541.tif 000010
【図２】
2010093541.tif 000011
【図３】
2010093541.tif 000012
【図４】
2010093541.tif 000013
【図５】
2010093541.tif 000014
【図６】
2010093541.tif 000015
【図７】
2010093541.tif 000016
【図８】
2010093541.tif 000017
【図９】
2010093541.tif 000018
【図１０】
2010093541.tif 000019
【図１１】
2010093541.tif 000020
【図１２】
2010093541.tif 000021
【図１３】
2010093541.tif 000022
【図１４】
2010093541.tif 000023
【図１５】
2010093541.tif 000024
【図１６】
2010093541.tif 000025
【図１７】
2010093541.tif 000026
【図１８】
2010093541.tif 000027
【図１９】
2010093541.tif 000028
【図２０】
2010093541.tif 000029
【図２１】
2010093541.tif 000030
【図２２】
2010093541.tif 000031
【図２３】
2010093541.tif 000032
【図２４】
2010093541.tif 000033