(57)【要約】【課題】２次元に配置されたデータのインターリーブにおいて、演算量を抑制することができる。【解決手段】列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように制御する。処理対象の１つ前の位置の並び替え後の位置の列番号と列パラメータとの和に基づいて、第１の列番号値を算出する。１つ前の位置の並び替え後の位置の行番号と行パラメータとの和がｎより小さい第１の場合と、この和がｎ以上の第２の場合とに応じて、処理対象の位置の並び替え後の位置の行番号を出力する。第１の場合には、第１の列番号値を、処理対象の位置の並び替え後の位置の列番号として出力する。第２の場合には、第１の列番号値と補正パラメータとの和に基づいて、処理対象の位置の並び替え後の位置の列番号を出力する。出力された行番号及び列番号に基づいて、処理対象のデータを並び替える。【選択図】図１
2015053639.tif 000002
【特許請求の範囲】
【請求項１】
列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように制御し、
処理対象の１つ前の位置の並び替え後の位置の列番号と予め定められた列パラメータとの和に基づいて、第１の列番号値を算出し、
前記１つ前の位置の並び替え後の位置の行番号と予め定められた行パラメータとの和がｎより小さい第１の場合と、前記和がｎ以上の第２の場合とに応じて、処理対象の位置の並び替え後の位置の行番号を出力し、
前記第１の場合には、前記第１の列番号値を、処理対象の位置の並び替え後の位置の列番号として出力し、
前記第２の場合には、前記第１の列番号値と予め定められた補正パラメータとの和に基づいて、処理対象の位置の並び替え後の位置の列番号を出力し、
前記出力された行番号及び列番号に基づいて、処理対象のデータを並び替える
インターリーブ方法。
【請求項２】
前記１つ前の位置の並び替え後の位置の列番号と前記列パラメータとの和がｍ以上か否かに応じて、前記第１の列番号値を算出し、
前記第２の場合に、前記第１の列番号値と前記補正パラメータとの和がｍ以上か否かに応じて、処理対象の位置の並び替え後の位置の列番号を出力する
請求項１に記載のインターリーブ方法。
【請求項３】
前記１つ前の位置の並び替え後の位置の列番号Ｉ＿ｋ−１と前記列パラメータとの和がｍより小さい場合には、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和を、前記第１の列番号値として算出し、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和がｍ以上である場合には、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和からｍを減算した値を、前記第１の列番号値として算出し、
前記第１の場合には、前記１つ前の位置の並び替え後の位置の行番号Ｊ＿ｋ−１と前記行パラメータとの和を、処理対象の位置の並び替え後の位置の行番号Ｊ＿ｋとして出力し、前記第２の場合には、前記行番号Ｊ＿ｋ−１と前記行パラメータとの和からｎを減算した値を、前記行番号Ｊ＿ｋとして出力し、
前記第２の場合に、前記第１の列番号値と前記補正パラメータとの和がｍより小さいときには、前記第１の列番号値と前記補正パラメータとの和を、処理対象の位置の並び替え後の位置の列番号Ｉ＿ｋとして出力し、前記第１の列番号値と前記補正パラメータとの和がｍ以上のときには、前記第１の列番号値と前記補正パラメータとの和からｍを減算した値を、前記列番号Ｉ＿ｋとして出力する
請求項２に記載のインターリーブ方法。
【請求項４】
前記１つ前の位置の並び替え後の位置の行番号と前記行パラメータとの和がｎ以上の場合に、当該和からｎを減算した値を、処理対象の位置の並び替え後の位置の行番号として出力し、
前記補正パラメータは、当該和からｎを減算処理した場合の、当該減算処理を考慮した列番号の補正値である
請求項１に記載のインターリーブ方法。
【請求項５】
前記第１の列番号値は、前記列パラメータをｍから減算して得られた列減算値を、前記１つ前の位置の並び替え後の位置の列番号から減算することによって算出され、
前記処理対象の位置の並び替え後の位置の行番号は、前記行パラメータをｎから減算して得られた行減算値を、前記１つ前の位置の並び替え後の位置の行番号から減算することによって算出され、
前記第２の場合には、前記補正パラメータをｍから減算して得られた補正減算値を、前記第１の列番号値から減算することによって、処理対象の位置の並び替え後の位置の列番号を出力する
請求項１に記載のインターリーブ方法。
【請求項６】
ｋ行目の先頭列を処理するときに、
ｋ−１行目の先頭列の位置の並び替え後の列番号であるｋ−１行目列開始番号と予め定められた第２の列パラメータとの和に基づいて、第１の列開始番号値を算出し、
ｋ−１行目の先頭列の位置の並び替え後の行番号であるｋ−１行目行開始番号と予め定められた第２の行パラメータとの和がｎより小さい第３の場合と、前記和がｎ以上の第４の場合とに応じて、ｋ行目の先頭列の位置の並び替え後の行番号であるｋ行目行開始番号を出力し、
前記第３の場合には、前記第１の列開始番号値を、ｋ行目の先頭列の位置の並び替え後の列番号であるｋ行目列開始番号として出力し、
前記第４の場合には、前記第１の列開始番号値と前記補正パラメータとの和に基づいて、前記ｋ行目列開始番号を出力し、
前記出力されたｋ行目行開始番号及びｋ行目列開始番号に基づいて、ｋ行目の先頭列に配置されたデータを並び替える
請求項１に記載のインターリーブ方法。
【請求項７】
列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように制御する制御回路と、
処理対象の１つ前の位置の並び替え後の位置の列番号と予め定められた列パラメータとの和に基づいて、第１の列番号値を算出する第１の列演算回路と、
前記１つ前の位置の並び替え後の位置の行番号と予め定められた行パラメータとの和がｎより小さい第１の場合と、前記和がｎ以上の第２の場合とに応じて、処理対象の位置の並び替え後の位置の行番号を算出する行演算回路と、
前記第１の列番号値と予め定められた補正パラメータとの和に基づいて、第２の列番号値を算出する第２の列演算回路と、
前記第１の場合には前記第１の列番号値を、前記第２の場合には前記第２の列番号値を、処理対象の位置の並び替え後の位置の列番号として選択する選択回路と、
前記算出された行番号と前記選択された列番号とに基づいて、処理対象のデータを並び替える並び替え回路と
を有するインターリーブ装置。
【請求項８】
前記第１の列演算回路は、前記１つ前の位置の並び替え後の位置の列番号と前記列パラメータとの和がｍ以上か否かに応じて、前記第１の列番号値を算出し、
前記第２の列演算回路は、前記第２の場合に、前記第１の列番号値と前記補正パラメータとの和がｍ以上か否かに応じて、処理対象の位置の並び替え後の位置の列番号を算出する
請求項７に記載のインターリーブ装置。
【請求項９】
前記第１の列演算回路は、
前記１つ前の位置の並び替え後の位置の列番号Ｉ＿ｋ−１と前記列パラメータとの和がｍより小さい場合には、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和を、前記第１の列番号値として算出し、
前記列番号Ｉ＿ｋ−１と前記列パラメータとの和がｍ以上である場合には、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和からｍを減算した値を、第１の列番号値として算出し、
前記行演算回路は、
前記第１の場合には、前記１つ前の位置の並び替え後の位置の行番号Ｊ＿ｋ−１と前記行パラメータとの和を、処理対象の位置の並び替え後の位置の行番号Ｊ＿ｋとして出力し、
前記第２の場合には、前記行番号Ｊ＿ｋ−１と前記行パラメータとの和からｎを減算した値を、前記行番号Ｊ＿ｋとして出力し、
前記第２の列演算回路は、
前記第１の列番号値と予め定められた補正パラメータとの和がｍより小さい場合には、前記第１の列番号値と前記補正パラメータとの和を、前記第２の列番号値として算出し、
前記第１の列番号値と前記補正パラメータとの和がｍ以上の場合には、前記第１の列番号値と前記補正パラメータとの和からｍを減算した値を、前記第２の列番号値として算出する
請求項８に記載のインターリーブ装置。
【請求項１０】
前記行演算回路は、前記１つ前の位置の並び替え後の位置の行番号と予め定められた行パラメータとの和がｎ以上の場合に、当該和からｎを減算した値を、処理対象の位置の並び替え後の位置の行番号として出力し、
前記補正パラメータは、当該和からｎを減算処理した場合の、当該減算処理を考慮した列番号の補正値である
請求項７に記載のインターリーブ装置。
【請求項１１】
前記第１の列演算回路は、前記列パラメータをｍから減算して得られた列減算値を、前記１つ前の位置の並び替え後の位置の列番号から減算することによって、前記第１の列番号値を算出し、
前記行演算回路は、前記行パラメータをｎから減算して得られた行減算値を、前記１つ前の位置の並び替え後の位置の行番号から減算することによって、前記処理対象の位置の並び替え後の位置の行番号を算出し、
前記第２の列演算回路は、前記補正パラメータをｍから減算して得られた補正減算値を、前記第１の列番号値から減算することによって、前記第２の列番号値を算出する
請求項７に記載のインターリーブ装置。
【請求項１２】
ｋ行目の先頭列の位置を処理するときに処理を行う第３の列演算回路と、第４の列演算回路と、第２の行演算回路と、第２の選択回路と
をさらに有し、
前記第３の列演算回路は、ｋ−１行目の先頭列の位置の並び替え後の列番号であるｋ−１行目列開始番号と予め定められた第２の列パラメータとの和に基づいて、第１の列開始番号値を算出し、
前記第２の行演算回路は、ｋ−１行目の先頭列の位置の並び替え後の行番号であるｋ−１行目行開始番号と予め定められた第２の行パラメータとの和がｎより小さい第３の場合と、前記和がｎ以上の第４の場合とに応じて、ｋ行目の先頭列の位置の並び替え後の行番号であるｋ行目行開始番号を算出し、
前記第４の列演算回路は、前記第１の列開始番号値と前記補正パラメータとの和に基づいて、第２の列開始番号値を算出し、
前記第２の選択回路は、前記第３の場合には前記第１の列開始番号値を、前記第４の場合には前記第２の列開始番号値を、ｋ行目の先頭列の位置の並び替え後の列番号であるｋ行目列開始番号としてとして選択し、
前記並び替え回路は、前記算出されたｋ行目行開始番号と前記選択されたｋ行目列開始番号とに基づいて、ｋ行目の先頭列に配置されたデータを並び替える
請求項７に記載のインターリーブ装置。
【請求項１３】
列数ｍ、行数ｎにインターリーブされて配列されたデータ位置を、１行ごとに先頭列から最終列へと順に、インターリーブ前の元の位置に戻すように制御し、
処理対象の１つ前の位置の元の位置の行番号と予め定められた行パラメータとの和に基づいて、第１の行番号値を算出し、
前記１つ前の位置の元の位置の列番号と予め定められた列パラメータとの和がｍより小さい第１の場合と、前記和がｍ以上の第２の場合とに応じて、処理対象の位置の元の位置の列番号を出力し、
前記第１の場合には、前記第１の行番号値を、処理対象の位置の元の位置の行番号として出力し、
前記第２の場合には、前記第１の行番号値と予め定められた補正パラメータとの和に基づいて、処理対象の位置の元の位置の行番号を出力し、
前記出力された列番号及び行番号に基づいて、処理対象のデータを元の位置に並び替える
デインターリーブ方法。
【請求項１４】
前記１つ前の位置の元の位置の行番号と前記行パラメータとの和がｎ以上か否かに応じて、前記第１の行番号値を算出し、
前記第２の場合に、前記第１の行番号値と前記補正パラメータとの和がｎ以上か否かに応じて、処理対象の位置の元の位置の行番号を出力する
請求項１３に記載のデインターリーブ方法。
【請求項１５】
前記１つ前の位置の元の位置の行番号ｊ＿ｋ−１と前記行パラメータとの和がｎより小さい場合には、前記行番号ｊ＿ｋ−１と前記行パラメータとの和を、前記第１の行番号値として算出し、前記行番号ｊ＿ｋ−１と前記行パラメータとの和がｎ以上である場合には、前記行番号ｊ＿ｋ−１と前記行パラメータとの和からｎを減算した値を、前記第１の行番号値として算出し、
前記第１の場合には、前記１つ前の位置の元の位置の列番号ｉ＿ｋ−１と前記列パラメータとの和を、処理対象の位置の元の位置の列番号ｉ＿ｋとして出力し、前記第２の場合には、前記列番号ｊ＿ｋ−１と前記列パラメータとの和からｍを減算した値を、前記列番号ｉ＿ｋとして出力し、
前記第２の場合に、前記第１の行番号値と前記補正パラメータとの和がｎより小さいときには、前記第１の行番号値と前記補正パラメータとの和を、処理対象の位置の元の位置の行番号ｊ＿ｋとして出力し、前記第１の行番号値と前記補正パラメータとの和がｎ以上のときには、前記第１の行番号値と前記補正パラメータとの和からｎを減算した値を、前記行番号ｊ＿ｋとして出力する
請求項１４に記載のデインターリーブ方法。
【請求項１６】
前記１つ前の位置の元の位置の列番号と前記列パラメータとの和がｍ以上の場合に、当該和からｍを減算した値を、処理対象の位置の元の位置の列番号を出力し、
前記補正パラメータは、当該和からｍを減算処理した場合の、当該減算処理を考慮した行番号の補正値である
請求項１３に記載のデインターリーブ方法。
【請求項１７】
前記第１の行番号値は、前記行パラメータをｎから減算して得られた行減算値を、前記１つ前の位置の元の位置の行番号から減算することによって算出され、
前記処理対象の位置の元の位置の列番号は、前記列パラメータをｍから減算して得られた列減算値を、前記１つ前の位置の元の位置の列番号から減算することによって算出され、
前記第２の場合には、前記補正パラメータをｎから減算して得られた補正減算値を、前記第１の行番号値から減算することによって、処理対象の位置の元の位置の行番号を出力する
請求項１３に記載のデインターリーブ方法。
【請求項１８】
ｋ行目の先頭列を処理するときに、
ｋ−１行目の先頭列の位置の元の位置の行番号であるｋ−１行目行開始番号と予め定められた第２の行パラメータとの和に基づいて、第１の行開始番号値を算出し、
ｋ−１行目の先頭列の位置の元の位置の列番号であるｋ−１行目列開始番号と予め定められた第２の列パラメータとの和がｍより小さい第３の場合と、前記和がｍ以上の第４の場合とに応じて、ｋ行目の先頭列の位置の元の位置の列番号であるｋ行目列開始番号を出力し、
前記第３の場合には、前記第１の行開始番号値を、ｋ行目の先頭列の位置の元の位置の行番号であるｋ行目行開始番号として出力し、
前記第４の場合には、前記第１の行開始番号値と前記補正パラメータとの和に基づいて、前記ｋ行目行開始番号を出力し、
前記出力されたｋ行目行開始番号及びｋ行目列開始番号に基づいて、ｋ行目の先頭列に配置されたデータを元の位置に並び替える
請求項１３に記載のデインターリーブ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを並び替えるインターリーブ方法、インターリーブ装置、及び、並び替えたデータを元に戻すデインターリーブ方法に関する。
【背景技術】
【０００２】
デジタル通信システムでは、伝送路において生じる誤りを訂正する誤り訂正符号が用いられている。誤り訂正符号を用いる際、バースト誤りが１つのブロックに集中しないようにするため、符号の順序を入れ替えて同じブロックのデータを分散させる、インターリーブ処理が行われる。
【０００３】
非特許文献１は、デジタル通信システムの１つであるＰＬＣ（Power Line Communication：電力線通信）のＧ３規格を開示している。このＧ３規格において、２次元、つまり行方向及び列方向に配置されたＯＦＤＭ（Orthogonal Frequency-Division Multiplexing：直交周波数分割多重方式）シンボルをインターリーブするための変換式が示されている。この変換式は、剰余演算によって定義されている。
また、特許文献１は、ターボ符号のインターリーバにおいて、行内の入れ替えを行うためのベースシーケンスを求める際の演算量を減少させる技術について開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−  ７２８４３号公報
【非特許文献】
【０００５】
【非特許文献１】G3 Specifications low layers TI E2E Community
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、非特許文献１のＧ３規格に示された、２次元に配置されたデータをインターリーブするための変換式は、剰余演算によって定義されている。つまり、この変換式を用いてインターリーブを行うためには、乗算及び除算を行う必要があった。そのため、演算量が多くなる傾向にあった。
【０００７】
一方、特許文献１に示された技術では、乗算及び除算を行わないでインターリーブが行われる。しかしながら、特許文献１は、行内つまり１次元に配置されたデータの入れ替えを行うことを開示するにすぎない。つまり、２次元に配置されたデータのインターリーブにおいては、乗算及び除算を行うことにより、演算量が増大するという問題があった。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、インターリーブ方法は、列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように制御し、処理対象の１つ前の位置の並び替え後の位置の列番号と予め定められた列パラメータとの和に基づいて、第１の列番号値を算出し、前記１つ前の位置の並び替え後の位置の行番号と予め定められた行パラメータとの和がｎより小さい第１の場合と、前記和がｎ以上の第２の場合とに応じて、処理対象の位置の並び替え後の位置の行番号を出力し、前記第１の場合には、前記第１の列番号値を、処理対象の位置の並び替え後の位置の列番号として出力し、前記第２の場合には、前記第１の列番号値と予め定められた補正パラメータとの和に基づいて、処理対象の位置の並び替え後の位置の列番号を出力し、前記出力された行番号及び列番号に基づいて、処理対象のデータを並び替えるインターリーブ方法である。
【００１０】
一実施の形態によれば、インターリーブ装置は、列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように制御する制御回路と、処理対象の１つ前の位置の並び替え後の位置の列番号と予め定められた列パラメータとの和に基づいて、第１の列番号値を算出する第１の列演算回路と、前記１つ前の位置の並び替え後の位置の行番号と予め定められた行パラメータとの和がｎより小さい第１の場合と、前記和がｎ以上の第２の場合とに応じて、処理対象の位置の並び替え後の位置の行番号を算出する行演算回路と、前記第１の列番号値と予め定められた補正パラメータとの和に基づいて、第２の列番号値を算出する第２の列演算回路と、前記第１の場合には前記第１の列番号値を、前記第２の場合には前記第２の列番号値を、処理対象の位置の並び替え後の位置の列番号として選択する選択回路と、前記算出された行番号と前記選択された列番号とに基づいて、処理対象のデータを並び替える並び替え回路とを有するインターリーブ装置である。
【００１１】
一実施の形態によれば、デインターリーブ方法は、列数ｍ、行数ｎにインターリーブされて配列されたデータ位置を、１行ごとに先頭列から最終列へと順に、インターリーブ前の元の位置に戻すように制御し、処理対象の１つ前の位置の元の位置の行番号と予め定められた行パラメータとの和に基づいて、第１の行番号値を算出し、前記１つ前の位置の元の位置の列番号と予め定められた列パラメータとの和がｍより小さい第１の場合と、前記和がｍ以上の第２の場合とに応じて、処理対象の位置の元の位置の列番号を出力し、前記第１の場合には、前記第１の行番号値を、処理対象の位置の元の位置の行番号として出力し、前記第２の場合には、前記第１の行番号値と予め定められた補正パラメータとの和に基づいて、処理対象の位置の元の位置の行番号を出力し、前記出力された列番号及び行番号に基づいて、処理対象のデータを元の位置に並び替えるデインターリーブ方法である。
【００１２】
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本実施の形態としては有効である。
【発明の効果】
【００１３】
前記一実施の形態によれば、２次元に配置されたデータのインターリーブにおいて、演算量を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかるインターリーブ装置を示す図である。
【図２】実施の形態１にかかるインターリーブ装置におけるインターリーブ処理を示すフローチャートである。
【図３】実施の形態２にかかるインターリーブ装置を示す図である。
【図４】実施の形態２にかかるインターリーブ装置におけるインターリーブ処理を示すフローチャートである。
【図５】実施の形態３にかかるインターリーブ装置を示す図である。
【図６】実施の形態３にかかる剰余回路の構成を示す図である。
【図７】実施の形態３にかかる各パラメータとその導出式とを例示する図である。
【図８】実施の形態３にかかるインターリーブ装置におけるインターリーブ処理を示すフローチャートである。
【図９】実施の形態３にかかる列毎の処理を示すフローチャートである。
【図１０】実施の形態３にかかる行毎の処理を示すフローチャートである。
【図１１】実施の形態３において、８行１０列に配置されたデータのうち、０行目に配置されたデータを並び替える動作を説明するための図である。
【図１２】実施の形態３において、８行１０列に配置されたデータのうち、１行目に配置されたデータを並び替える動作を説明するための図である。
【図１３】実施の形態４にかかるインターリーブ装置を示す図である。
【図１４】実施の形態４にかかる剰余回路の構成を示す図である。
【図１５】実施の形態４にかかる各パラメータとその導出式とを例示する図である。
【図１６】実施の形態４にかかる列毎の処理を示すフローチャートである。
【図１７】実施の形態４にかかる行毎の処理を示すフローチャートである。
【図１８】実施の形態５にかかる通信システムを示す図である。
【図１９】実施の形態６にかかるデインターリーブ装置を示す図である。
【図２０】実施の形態６にかかるデインターリーブ装置におけるデインターリーブ処理を示すフローチャートである。
【図２１】実施の形態７にかかるデインターリーブ装置を示す図である。
【図２２】実施の形態７にかかるデインターリーブ装置におけるデインターリーブ処理を示すフローチャートである。
【図２３】実施の形態８にかかるデインターリーブ装置を示す図である。
【図２４】実施の形態８にかかる各パラメータとその導出式とを例示する図である。
【図２５】実施の形態８にかかるデインターリーブ装置におけるデインターリーブ処理を示すフローチャートである。
【図２６】実施の形態８にかかる列毎の処理を示すフローチャートである。
【図２７】実施の形態８にかかる行毎の処理を示すフローチャートである。
【図２８】実施の形態８において、８行１０列の２次元ブロックにインターリーブされたデータのうち、０行目に配置されたデータを並び替える（デインターリーブする）動作を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１６】
＜インターリーブ＞
まず、インターリーブ変換式について説明する。
ｉ列、ｊ行に配置されたデータの２次元の位置（インデックス）を（ｉ，ｊ）とし、そのデータの並び替え後の位置を（Ｉ，Ｊ）とする。このとき、（ｉ，ｊ）と（Ｉ，Ｊ）との関係は、ＰＬＣのＧ３規格において定義されているインターリーブの変換式を用いて、以下の式で表される。
Ｊ＝（ｎｉ×ｉ＋ｎｊ×ｊ）ｍｏｄ  ｎ  （式１）
Ｉ＝（ｍｉ×ｉ＋ｍｊ×Ｊ）ｍｏｄ  ｍ  （式２）
【００１７】
ここで、ｎは行数、ｍは列数を示す。また、ｉは、インターリーブ前の列方向の位置（列番号）であって、０≦ｉ≦ｍ−１である。また、ｊは、インターリーブ前の行方向の位置（行番号）であって、０≦ｊ≦ｎ−１である。また、Ｉは、インターリーブ後の列方向の位置（列番号）であって、０≦Ｉ≦ｍ−１である。また、Ｊは、インターリーブ後の行方向の位置（行番号）であって、０≦Ｊ≦ｎ−１である。さらに、ｍｏｄは剰余演算を示す。例えば、Ａ  ｍｏｄ  ｎは、Ａをｎで除算した余りを示す。
【００１８】
また、ｎｉ、ｎｊ、ｍｉ及びｍｊは、予め定められたパラメータである。ここで、ｎｉとｎは、互いに素となる。同様に、ｎｊとｎは、互いに素となる。また、ｍｉとｍは、互いに素となる。同様に、ｍｊとｍは、互いに素となる。言い換えると、ｎｉ及びｎｊは、それぞれｎと互いに素となるような値（整数）から選択される。同様に、ｍｉ及びｍｊは、それぞれｍと互いに素となるような値（整数）から選択される。
【００１９】
以下に説明する各実施の形態にかかるインターリーブ装置は、２次元に配置された１ブロックのデータ位置（ｉ，ｊ）を、（Ｉ，Ｊ）に変換し、変換後の位置に、元のデータを並び替える。このとき、インターリーブ装置は、１行ごとに０列目のデータから順にインターリーブを行う。つまり、インターリーブ装置は、まず０行目のデータのインターリーブ処理を、データ位置（０，０）、（１，０）、（２，０）、・・・（ｍ−１，０）の順で行う。０行目の最終列（ｍ−１，０）のデータまで処理が終了すると、インターリーブ装置は、次に、１行目のデータのインターリーブ処理を、データ位置（０，１）、（１，１）、（２，１）、・・・（ｍ−１，１）の順で行う。このようにして、インターリーブ装置は、１行ごとにインターリーブ処理を行っていく。そして、インターリーブ装置は、ｎ−１行目のインターリーブ処理を、データ位置（０，ｎ−１）、（１，ｎ−１）、（２，ｎ−１）、・・・（ｍ−１，ｎ−１）の順で行い、処理を終了する。
【００２０】
＜実施の形態１＞
図１は、実施の形態１にかかるインターリーブ装置１を示す図である。また、図２は、実施の形態１にかかるインターリーブ装置１におけるインターリーブ処理（Ｓ１０）を示すフローチャートである。
図１に示すように、インターリーブ装置１は、制御回路１０と、並び替え回路１２と、位置演算装置２とを有する。位置演算装置２は、列演算回路２２（第１の列演算回路）と、行演算回路２４と、列演算回路２６（第２の列演算回路）と、選択回路２８とを有する。
インターリーブ装置１は、これらの構成要素により、列数ｍ、行数ｎの２次元ブロックに配置されたデータ位置を、列数ｍ、行数ｎの２次元ブロックのデータ位置に並び替える際の、列毎の処理を行う。
【００２１】
図２を用いて、インターリーブ装置１の動作を説明する。
制御回路１０は、列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように、並び替え回路１２及び位置演算装置２を制御する（Ｓ１０２）。具体的には、制御回路１０は、ある行のｋ−１列目のデータについて、そのデータ位置を並び替え、次に、その行のｋ列目のデータについて、そのデータ位置を並び替えるように、並び替え回路１２及び位置演算装置２を制御する。
【００２２】
また、制御回路１０は、ある列の処理が終了するごとに、列カウンタを１つ加算する。同様に、制御回路１０は、ある行の処理が終了するごとに、行カウンタを１つ加算する。なお、以下、ｋ列目の位置にあるデータが処理対象であることを前提に説明する。つまり、ｋ−１列目の位置は、処理対象の１つ前の位置である。
【００２３】
列演算回路２２は、ｋ−１列目の並び替え後の位置の列番号Ｉ＿ｋ−１と予め定められた列パラメータとの和に基づいて、第１の列番号値を算出する（Ｓ１０４）。具体的には、例えば、列演算回路２２は、列番号Ｉ＿ｋ−１と列パラメータとの和が列数ｍより小さい場合には、列番号Ｉ＿ｋ−１と列パラメータとの和を、第１の列番号値として算出してもよい。一方、例えば、列演算回路２２は、列番号Ｉ＿ｋ−１と列パラメータとの和が列数ｍ以上である場合には、列番号Ｉ＿ｋ−１と列パラメータとの和から列数ｍを減算した値を、第１の列番号値として算出してもよい。なお、列パラメータは、ｎ、ｍ、ｎｉ、ｎｊ、ｍｉ及びｍｊから算出されてもよい。
【００２４】
行演算回路２４は、ｋ−１列目の並び替え後の位置の行番号Ｊ＿ｋ−１と予め定められた行パラメータｎｐとの和に基づいて、ｋ列目の並び替え後の位置の行番号Ｊ＿ｋを、並び替え回路１２に対して出力する（Ｓ１０６）。具体的には、行演算回路２４は、行番号Ｊ＿ｋ−１と行パラメータｎｐとの和が行数ｎより小さい第１の場合と、当該和が行数ｎ以上の第２の場合とに応じて、行番号Ｊ＿ｋを算出する。さらに具体的には、例えば、行演算回路２４は、第１の場合には、行番号Ｊ＿ｋ−１と行パラメータｎｐとの和を、行番号Ｊ＿ｋとして算出してもよい。一方、例えば、行演算回路２４は、第２の場合には、行番号Ｊ＿ｋ−１と行パラメータｎｐとの和から行数ｎを減算した値を、行番号Ｊ＿ｋとして算出してもよい。なお、行パラメータｎｐは、ｎ、ｎｉ及びｎｊから算出されてもよい。
【００２５】
行演算回路２４は、行番号Ｊ＿ｋ−１と行パラメータｎｐとの和が行数ｎ以上であるか否かを判断する（Ｓ１０８）。行番号Ｊ＿ｋ−１と行パラメータｎｐとの和が行数ｎより小さい場合、つまり第１の場合のとき（Ｓ１０８のＮＯ）、位置演算装置２は、第１の列番号値を、ｋ列目の並び替え後の位置の列番号Ｉ＿ｋとして、並び替え回路１２に対して出力する（Ｓ１１０）。具体的には、選択回路２８は、列演算回路２２からの出力値である第１の列番号値を、列番号Ｉ＿ｋとして選択し、並び替え回路１２に対して出力する。
【００２６】
一方、行番号Ｊ＿ｋ−１と行パラメータｎｐとの和が行数ｎ以上の場合、つまり第２の場合のとき（Ｓ１０８のＹＥＳ）、位置演算装置２は、第１の列番号値と予め定められた補正パラメータとの和に基づいて、列番号Ｉ＿ｋを、並び替え回路１２に対して出力する（Ｓ１１２）。具体的には、列演算回路２６は、第１の列番号値と補正パラメータとの和に基づいて、第２の列番号値を算出する。
【００２７】
さらに具体的には、例えば、列演算回路２６は、第１の列番号値と補正パラメータとの和が列数ｍより小さいときには、第１の列番号と補正パラメータとの和を、第２の列番号値として算出してもよい。一方、例えば、列演算回路２６は、第１の列番号値と補正パラメータとの和が列数ｍ以上のときには、第１の列番号値と補正パラメータとの和から列数ｍを減算した値を、第２の列番号値として算出してもよい。さらに、このとき、選択回路２８は、第２の列番号値を、列番号Ｉ＿ｋとして選択し、並び替え回路１２に対して出力する。
なお、補正パラメータは、ｎ、ｍ、ｎｉ、ｎｊ、ｍｉ及びｍｊから算出されてもよい。
【００２８】
並び替え回路１２は、行番号Ｊ＿ｋと列番号Ｉ＿ｋとに基づいて、処理対象のデータを並び替える（Ｓ１１４）。具体的には、並び替え回路１２は、並び替え前の行番号ｊ＿ｋ，列番号ｉ＿ｋの位置のデータを、行番号Ｊ＿ｋ，列番号Ｉ＿ｋの位置に並び替えてもよい。
【００２９】
実施の形態１においては、インターリーブ装置１は、処理対象のｋ列目のデータ位置を処理するときに、ｋ−１列目の並び替え後の位置（列番号Ｉ＿ｋ−１，行番号Ｊ＿ｋ−１）から、処理対象のｋ列目の並び替え後の位置（列番号Ｉ＿ｋ，行番号Ｊ＿ｋ）を算出する。その際、行番号Ｊ＿ｋ−１と行パラメータｎｐとの和が行数ｎより小さい場合（第１の場合）には、インターリーブ装置１は、第１の列番号値を、列番号Ｉ＿ｋとする。一方、行番号Ｊ＿ｋ−１と行パラメータｎｐとの和が行数ｎ以上である場合（第２の場合）には、インターリーブ装置１は、第１の列番号値と補正パラメータとの和に基づいて算出された第２の列番号値を、列番号Ｉ＿ｋとする。
【００３０】
これにより、実施の形態１においては、２次元に配置されたデータのインターリーブにおいて、乗算及び除算を行うことなく、インターリーブを行うことができる。また、乗算及び除算を行う必要がないので、２次元に配置されたデータのインターリーブにおいて、演算量を抑制することができる。
【００３１】
＜実施の形態２＞
次に、実施の形態２について説明する。実施の形態２においては、先頭列のデータをインターリーブする際の処理が、実施の形態１の処理に追加されている。
図３は、実施の形態２にかかるインターリーブ装置３を示す図である。また、図４は、実施の形態２にかかるインターリーブ装置３におけるインターリーブ処理（Ｓ１２）を示すフローチャートである。
【００３２】
図３に示すように、インターリーブ装置３は、制御回路１０と、並び替え回路１２と、位置演算装置４とを有する。位置演算装置４は、列演算回路２２（第１の列演算回路）と、行演算回路２４と、列演算回路２６（第２の列演算回路）と、選択回路２８と、選択回路３０と、選択回路３２と、列演算回路４２（第３の列演算回路）と、行演算回路４４（第２の行演算回路）と、列演算回路４６（第４の列演算回路）と、選択回路４８（第２の選択回路）とを有する。
【００３３】
インターリーブ装置３は、これらの構成要素により、列数ｍ、行数ｎの２次元ブロックに配列されたデータ位置を、列数ｍ、行数ｎの２次元ブロックのデータ位置に並び替える際の、列毎及び行毎の処理を行う。具体的には、位置演算装置４のうち、列演算回路２２、行演算回路２４、列演算回路２６、選択回路２８、選択回路３０及び選択回路３２は、列毎の処理を行う。一方、位置演算装置４のうち、列演算回路４２、行演算回路４４、列演算回路４６及び選択回路４８は、行毎の処理を行う。ここで、「行毎の処理」とは、ある行（ｋ−１行目）の最終列までのデータの処理が終了し、次の行（ｋ行目）の先頭列（０列目）について処理を行うことをいう。一方、「列毎の処理」とは、行毎の処理以外の、行の変わり目ではない位置（先頭列の次の列〜最終列）について処理を行うことをいう。ここで、制御回路１０は、列演算回路４２、行演算回路４４、列演算回路４６及び選択回路４８については、行毎の処理を行う場合にのみ、起動するように制御してもよい。
【００３４】
図４を用いて、インターリーブ装置３の動作を説明する。
インターリーブ装置３は、実施の形態１にかかるインターリーブ装置１と同様に、図２に示した処理Ｓ１０を行う。この際、制御回路１０は、選択回路３０に対し、行演算回路２４からの出力を選択するように制御する。また、制御回路１０は、選択回路３２に対し、選択回路２８からの出力を選択するように制御する。選択回路３０は、行演算回路２４からの出力を、並び替え後の位置の行番号として、並び替え回路１２に対して出力する。また、選択回路３２は、選択回路２８からの出力を、並び替え後の位置の列番号として、並び替え回路１２に対して出力する。
【００３５】
制御回路１０は、Ｓ１０の処理の後、次の処理対象がｋ行目の先頭列のデータであるか否かを判断する（Ｓ１２２）。具体的には、制御回路１０は、Ｓ１０の処理の後、カウンタ値から、ｋ−１行目の最終列のデータの処理が終了し、次の処理対象がｋ行目の先頭列のデータであるか否かを判断する。
【００３６】
次の処理対象が先頭列でない場合（Ｓ１２２のＮＯ）、Ｓ１０の処理が繰り返される。一方、次の処理対象が先頭列である場合（Ｓ１２２のＹＥＳ）、制御回路１０は、行毎の処理を開始する（Ｓ１２４）。具体的には、制御回路１０は、列演算回路４２、行演算回路４４、列演算回路４６及び選択回路４８に対して処理を行うように制御する。また、制御回路１０は、選択回路３０に対し、行演算回路４４からの出力を選択するように制御する。さらに、制御回路１０は、選択回路３２に対し、選択回路４８からの出力を選択するように制御する。
【００３７】
列演算回路４２は、ｋ−１行目の先頭列の位置の並び替え後の列番号Ｉｓ＿ｋ−１（ｋ−１行目列開始番号）と予め定められた第２の列パラメータとの和に基づいて、第１の列開始番号値を算出する（Ｓ１２６）。具体的には、例えば、列演算回路４２は、列開始番号Ｉｓ＿ｋ−１と第２の列パラメータとの和が列数ｍより小さい場合には、列開始番号Ｉｓ＿ｋ−１と第２の列パラメータとの和を、第１の列開始番号値として算出してもよい。一方、例えば、列演算回路４２は、列開始番号Ｉｓ＿ｋ−１と第２の列パラメータとの和が列数ｍ以上である場合には、列開始番号Ｉｓ＿ｋ−１と列パラメータとの和から列数ｍを減算した値を、第１の列開始番号値として算出してもよい。なお、第２の列パラメータは、ｎ、ｍ、ｎｉ、ｎｊ、ｍｉ及びｍｊから算出されてもよい。
【００３８】
位置演算装置４は、ｋ−１行目の先頭列の位置の並び替え後の行番号Ｊｓ＿ｋ−１（ｋ−１行目行開始番号）と予め定められた行パラメータｎｐ２との和に基づいて、ｋ行目の先頭列の位置の並び替え後の行番号Ｊｓ＿ｋ（ｋ行目行開始番号）を、並び替え回路１２に対して出力する（Ｓ１２８）。具体的には、行演算回路４４は、行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和に基づいて、行開始番号Ｊｓ＿ｋを算出し、選択回路３０に出力する。選択回路３０は、行演算回路４４からの出力を選択するように制御されているので、行演算回路４４からの出力値である行開始番号Ｊｓ＿ｋを選択し、並び替え回路１２に対して出力する。
【００３９】
さらに具体的には、行演算回路４４は、行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和が行数ｎより小さい第３の場合と、当該和が行数ｎ以上の第４の場合とに応じて、行開始番号Ｊｓ＿ｋを算出する。例えば、行演算回路４４は、第３の場合には、行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和を、行開始番号Ｊｓ＿ｋとして算出してもよい。一方、例えば、行演算回路４４は、第４の場合には、行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和から行数ｎを減算した値を、行開始番号Ｊｓ＿ｋとして算出してもよい。なお、行パラメータｎｐ２は、ｎ、ｎｉ及びｎｊから算出されてもよい。
【００４０】
行演算回路４４は、行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和が行数ｎ以上であるか否かを判断する（Ｓ１３０）。行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和が行数ｎより小さい場合、つまり第３の場合のとき（Ｓ１３０のＮＯ）、位置演算装置４は、第１の列開始番号値を、ｋ−１行目の先頭列の位置の並び替え後の列開始番号Ｉｓ＿ｋとして、並び替え回路１２に対して出力する（Ｓ１３２）。具体的には、選択回路４８は、列演算回路４２からの出力値である第１の列開始番号値を、列開始番号Ｉｓ＿ｋとして選択し、選択回路３２に対して出力する。選択回路３２は、選択回路４８からの出力を選択するように制御されているので、選択回路４８からの出力値である列開始番号Ｉｓ＿ｋを選択し、並び替え回路１２に対して出力する。
【００４１】
一方、行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和が行数ｎ以上の場合、つまり第４の場合のとき（Ｓ１３０のＹＥＳ）、位置演算装置４は、第１の列開始番号値と予め定められた補正パラメータとの和に基づいて、列開始番号Ｉｓ＿ｋを、並び替え回路１２に対して出力する（Ｓ１３４）。具体的には、列演算回路４６は、第１の列開始番号値と補正パラメータとの和に基づいて、第２の列開始番号値を算出する。
【００４２】
さらに具体的には、例えば、列演算回路４６は、第１の列開始番号値と補正パラメータとの和が列数ｍより小さいときには、第１の列開始番号と補正パラメータとの和を、第２の列開始番号値として算出してもよい。一方、例えば、列演算回路４６は、第１の列開始番号値と補正パラメータとの和が列数ｍ以上のときには、第１の列開始番号値と補正パラメータとの和から列数ｍを減算した値を、第２の列開始番号値として算出してもよい。さらに、このとき、選択回路４８は、第２の列開始番号値を、列開始番号Ｉｓ＿ｋとして選択し、選択回路３２に対して出力する。選択回路３２は、選択回路４８からの出力を選択するように制御されているので、選択回路４８からの出力値である列開始番号Ｉｓ＿ｋを選択し、並び替え回路１２に対して出力する。
なお、補正パラメータは、ｎ、ｍ、ｎｉ、ｎｊ、ｍｉ及びｍｊから算出されてもよい。
【００４３】
並び替え回路１２は、行開始番号Ｊｓ＿ｋと列開始番号Ｉｓ＿ｋとに基づいて、処理対象のデータを並び替える（Ｓ１３６）。具体的には、並び替え回路１２は、並び替え前のｋ行目の先頭列における列番号ｉ＿ｋ，行番号ｊ＿ｋ（つまり（０，ｋ））の位置のデータを、列開始番号Ｉｓ＿ｋ，行開始番号Ｊｓ＿ｋの位置に並び替えてもよい。
【００４４】
実施の形態２においては、インターリーブ装置３は、処理対象のｋ行目の先頭列（０列目）のデータ位置を処理するときに、ｋ−１行目の先頭列の並び替え後の位置（列開始番号Ｉｓ＿ｋ−１，行開始番号Ｊｓ＿ｋ−１）から、処理対象のｋ行目の先頭列の並び替え後の位置（列開始番号Ｉｓ＿ｋ，行開始番号Ｊｓ＿ｋ）を算出する。その際、行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和が行数ｎより小さい場合（第３の場合）には、インターリーブ装置３は、第１の列開始番号値を、列開始番号Ｉｓ＿ｋとする。一方、行開始番号Ｊｓ＿ｋ−１と行パラメータｎｐ２との和が行数ｎ以上である場合（第３の場合）には、インターリーブ装置３は、第１の列開始番号値と補正パラメータとの和に基づいて算出された第２の列開始番号値を、列開始番号Ｉｓ＿ｋとする。
【００４５】
これにより、実施の形態２においては、２次元に配置されたデータのインターリーブにおいて、乗算及び除算を行うことなく、各行の先頭列に配置されたデータについても、インターリーブを行うことができる。また、乗算及び除算を行う必要がないので、２次元に配置されたデータのインターリーブにおいて、演算量を抑制することができる。
【００４６】
＜実施の形態３＞
次に、実施の形態３について説明する。実施の形態３においては、実施の形態１及び実施の形態２の構成及び処理が、さらに具体化されている。
図５は、実施の形態３にかかるインターリーブ装置１００を示す図である。図５に示すように、インターリーブ装置１００は、制御回路１０２と、並び替え回路１０４と、位置演算装置１１０とを有する。
【００４７】
制御回路１０２は、実施の形態１及び実施の形態２における制御回路１０に対応する。制御回路１０２は、列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように、並び替え回路１０４及び位置演算装置１１０を制御する。制御回路１０２は、ある行のｋ−１列目のデータについて、そのデータ位置を並び替え、次に、その行のｋ列目のデータについて、そのデータ位置を並び替えるように、並び替え回路１０４及び位置演算装置１１０を制御する。さらに、制御回路１０２は、ある行の最終列（ｍ−１列目）まで処理が終了したときに、次の行の先頭列（０列目）のデータについて処理を行うように、並び替え回路１０４及び位置演算装置１１０を制御する。制御回路１０２の具体的な処理については後述する。
【００４８】
位置演算装置１１０は、実施の形態１における位置演算装置２及び実施の形態２における位置演算装置４に対応する。位置演算装置１１０は、後述する構成要素を有する。位置演算装置１１０は、処理対象のデータごとに、並び替え後の位置の列番号Ｉ及び行番号Ｊを算出し、並び替え回路１０４に対して出力する。位置演算装置１１０の具体的な処理は後述する。
【００４９】
並び替え回路１０４は、実施の形態１及び実施の形態２における並び替え回路１２に対応する。並び替え回路１０４は、列数ｍ、行数ｎに配列された、処理対象のデータ（サンプル）を受け付ける。並び替え回路１０４は、位置演算装置１１０から出力された列番号Ｉ及び行番号Ｊに対応する位置に、処理対象のデータを並び替える。さらに、並び替え回路１０４は、並び替えたデータを、後流の構成要素（例えばＯＦＤＭ変換器等）に出力する。
【００５０】
位置演算装置１１０は、列開始番号記憶部１１２と、行開始番号記憶部１１４と、選択回路１１６，１１８，１２０，１２２と、列番号記憶部１２４と、行番号記憶部１２６と、列演算回路１３０と、行演算回路１４０と、列演算回路１５０と、列演算回路１６０と、行演算回路１７０と、列演算回路１８０とを有する。位置演算装置１１０のうち、選択回路１１６，１１８，１２０、列番号記憶部１２４、行番号記憶部１２６、列演算回路１３０、行演算回路１４０及び列演算回路１５０は、列毎の処理を行う。また、列開始番号記憶部１１２、行開始番号記憶部１１４、選択回路１２２、列演算回路１６０、行演算回路１７０及び列演算回路１８０は、行毎の処理を行う。
【００５１】
ここで、制御回路１０２は、列開始番号記憶部１１２、行開始番号記憶部１１４、選択回路１２２、列演算回路１６０、行演算回路１７０及び列演算回路１８０については、行毎の処理を行う場合にのみ、起動するように制御してもよい。また、制御回路１０２は、行毎の処理を行う場合に、１を示す開始番号選択信号を、選択回路１１６及び選択回路１１８に対して出力する。一方、制御回路１０２は、列毎の処理を行う場合に、０を示す開始番号選択信号を、選択回路１１６及び選択回路１１８に対して出力する。
【００５２】
選択回路１１６，１１８，１２０，１２２は、それぞれ、実施の形態２における選択回路３２，３０，２８，４８に対応する。選択回路１１６，１１８，１２０，１２２は、例えばマルチプレクサ等である。選択回路１１６，１１８，１２０，１２２は、端子０及び端子１からそれぞれ信号を受け付ける。選択回路１１６，１１８，１２０，１２２は、０を示す選択信号を受け付けると、端子０から受け付けた信号を出力する。一方、選択回路１１６，１１８，１２０，１２２は、１を示す選択信号を受け付けると、端子１から受け付けた信号を出力する。
【００５３】
列開始番号記憶部１１２及び行開始番号記憶部１１４は、例えば、メモリ、フリップフロップ又はレジスタ等である。
列開始番号記憶部１１２は、列開始番号を記憶する。列開始番号記憶部１１２は、選択回路１２２から信号を受け付けると、記憶していた列開始番号を、その受け付けた信号（列開始番号）に更新する。さらに、列開始番号記憶部１１２は、更新した列開始番号を、選択回路１１６に対して出力する。
行開始番号記憶部１１４は、行開始番号を記憶する。行開始番号記憶部１１４は、行演算回路１７０から信号を受け付けると、記憶していた行開始番号を、その受け付けた信号（行開始番号）に更新する。さらに、行開始番号記憶部１１４は、更新した行開始番号を、選択回路１１８に対して出力する。
【００５４】
列番号記憶部１２４は、例えば、メモリ、フリップフロップ又はレジスタ等である。列番号記憶部１２４は、処理対象のデータ位置の並び替え後のデータ位置における列番号Ｉを記憶する。列番号記憶部１２４は、選択回路１１６から信号を受け付けると、記憶していた列番号を、その受け付けた信号（列番号）に更新する。さらに、列番号記憶部１２４は、更新した列番号Ｉを、並び替え回路１０４及び列演算回路１３０に対して出力する。
【００５５】
行番号記憶部１２６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行番号記憶部１２６は、処理対象のデータ位置の並び替え後のデータ位置における行番号Ｊを記憶する。行番号記憶部１２６は、選択回路１１８から信号を受け付けると、記憶していた行番号を、その受け付けた信号（行番号）に更新する。さらに、行番号記憶部１２６は、更新した行番号Ｊを、並び替え回路１０４及び行演算回路１４０に対して出力する。
【００５６】
列演算回路１３０は、実施の形態１及び実施の形態２における列演算回路２２に対応する。列演算回路１３０は、列数記憶部１３４と、列加算値記憶部１３６と、剰余回路１３８とを有する。剰余回路１３８は、剰余演算を行うための回路であって、図６を用いて後述する構成を有している。剰余回路１３８は、列番号記憶部１２４、列数記憶部１３４及び列加算値記憶部１３６からの出力値から第１の列番号値を算出し、選択回路１２０及び列演算回路１５０に対して出力する。
【００５７】
列数記憶部１３４及び列加算値記憶部１３６は、例えば、メモリ、フリップフロップ又はレジスタ等である。列数記憶部１３４は、列数ｍを記憶し、列数ｍを剰余回路１３８に対して出力する。列加算値記憶部１３６は、列加算値を記憶し、列加算値を剰余回路１３８に対して出力する。列加算値は、実施の形態１における列パラメータに対応し、図７に示された導出式を用いて算出される。列加算値については図７を用いて後述する。
【００５８】
行演算回路１４０は、実施の形態１及び実施の形態２における行演算回路２４に対応する。行演算回路１４０は、行数記憶部１４４と、行加算値記憶部１４６と、剰余回路１４８とを有する。剰余回路１４８は、剰余演算を行うための回路であって、図６を用いて後述する構成を有している。剰余回路１４８は、行番号記憶部１２６、行数記憶部１４４及び行加算値記憶部１４６からの出力値から行番号Ｊを算出し、選択回路１１８に対して出力する。
【００５９】
行数記憶部１４４及び行加算値記憶部１４６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行数記憶部１４４は、行数ｎを記憶し、行数ｎを剰余回路１４８に対して出力する。行加算値記憶部１４６は、行加算値を記憶し、行加算値を剰余回路１４８に対して出力する。行加算値は、実施の形態１における行パラメータｎｐに対応し、図７に示された導出式を用いて算出される。行加算値については図７を用いて後述する。
【００６０】
列演算回路１５０は、実施の形態１及び実施の形態２における列演算回路２６に対応する。列演算回路１５０は、列数記憶部１５４と、補正加算値記憶部１５６と、剰余回路１５８とを有する。剰余回路１５８は、剰余演算を行うための回路であって、図６を用いて後述する構成を有している。剰余回路１５８は、剰余回路１３８、列数記憶部１５４及び補正加算値記憶部１５６からの出力値から第２の列番号値を算出し、選択回路１２０に対して出力する。
【００６１】
列数記憶部１５４及び補正加算値記憶部１５６は、例えば、メモリ、フリップフロップ又はレジスタ等である。列数記憶部１５４は、列数ｍを記憶し、列数ｍを剰余回路１５８に対して出力する。補正加算値記憶部１５６は、補正加算値を記憶し、補正加算値を剰余回路１５８に対して出力する。補正加算値は、実施の形態１における補正パラメータに対応し、図７に示された導出式を用いて算出される。補正加算値については図７を用いて後述する。
【００６２】
列演算回路１６０は、実施の形態２における列演算回路４２に対応する。列演算回路１６０は、列数記憶部１６４と、列加算値記憶部１６６と、剰余回路１６８とを有する。剰余回路１６８は、剰余演算を行うための回路であって、図６を用いて後述する構成を有している。剰余回路１６８は、列開始番号記憶部１１２、列数記憶部１６４及び列加算値記憶部１６６からの出力値から第１の列開始番号値を算出し、選択回路１２２及び列演算回路１８０に対して出力する。
【００６３】
列数記憶部１６４及び列加算値記憶部１６６は、例えば、メモリ、フリップフロップ又はレジスタ等である。列数記憶部１６４は、列数ｍを記憶し、列数ｍを剰余回路１６８に対して出力する。列加算値記憶部１６６は、列加算値２を記憶し、列加算値２を剰余回路１６８に対して出力する。列加算値２は、実施の形態２における第２の列パラメータに対応し、図７に示された導出式を用いて算出される。列加算値２については図７を用いて後述する。
【００６４】
行演算回路１７０は、実施の形態２における行演算回路４４に対応する。行演算回路１７０は、行数記憶部１７４と、行加算値記憶部１７６と、剰余回路１７８とを有する。剰余回路１７８は、剰余演算を行うための回路であって、図６を用いて後述する構成を有している。剰余回路１７８は、行開始番号記憶部１１４、行数記憶部１７４及び行加算値記憶部１７６からの出力値から行開始番号を算出し、行開始番号記憶部１１４に対して出力する。
【００６５】
行数記憶部１７４及び行加算値記憶部１７６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行数記憶部１７４は、行数ｎを記憶し、行数ｎを剰余回路１７８に対して出力する。行加算値記憶部１７６は、行加算値２を記憶し、行加算値２を剰余回路１７８に対して出力する。行加算値２は、実施の形態２における行パラメータｎｐ２に対応し、図７に示された導出式を用いて算出される。行加算値２については図７を用いて後述する。
【００６６】
列演算回路１８０は、実施の形態２における列演算回路４８に対応する。列演算回路１８０は、列数記憶部１８４と、補正加算値記憶部１８６と、剰余回路１８８とを有する。剰余回路１８８は、剰余演算を行うための回路であって、図６を用いて後述する構成を有している。剰余回路１８８は、剰余回路１６８、列数記憶部１８４及び補正加算値記憶部１８６からの出力値から第２の列開始番号値を算出し、選択回路１２０に対して出力する。
【００６７】
列数記憶部１８４及び補正加算値記憶部１８６は、例えば、メモリ、フリップフロップ又はレジスタ等である。列数記憶部１８４は、列数ｍを記憶し、列数ｍを剰余回路１８８に対して出力する。補正加算値記憶部１８６は、補正加算値を記憶し、補正加算値を剰余回路１８８に対して出力する。補正加算値記憶部１８６に記憶された補正加算値は、補正加算値記憶部１５６に記憶された補正加算値と同様である。
【００６８】
図６は、実施の形態３にかかる剰余回路１３８，１４８，１５８，１６８，１７８，１８８（以下「剰余回路１３８等」と称する）の構成を示す図である。図６に示すように、剰余回路１３８等は、加減算器１９２、比較器１９４、選択回路１９６及び加減算器１９８を有する。
【００６９】
加減算器１９２は、端子Ａから受け付けた加算値（列加算値、行加算値、補正加算値、列加算値２及び行加算値２）と端子Ｉｄｘから受け付けたインデックス（列番号、行番号、第１の列番号値、列開始番号、行開始番号及び第１の列開始番号値）とを加算する。さらに、加減算器１９２は、加算結果（Ａ＋Ｉｄｘ）を、比較器１９４及び加減算器１９８に対して出力する。
【００７０】
比較器１９４は、加減算器１９２からの加算結果（Ａ＋Ｉｄｘ）と、端子Ｂから受け付けた除数（列数又は行数）とを比較する。比較器１９４は、加算結果（Ａ＋Ｉｄｘ）が除数（Ｂ）以上である場合に、１を示す信号を、選択回路１９６及び端子Ｃに対して出力する。一方、比較器１９４は、加算結果（Ａ＋Ｉｄｘ）が除数（Ｂ）より小さい場合に、０を示す信号を、選択回路１９６及び端子Ｃに対して出力する。
【００７１】
選択回路１９６は、端子０から０を示す信号（０値）を受け付け、端子１から除数（Ｂ）を受け付ける。選択回路１９６は、比較器１９４から１を示す信号を選択信号として受け付けた場合に、除数（Ｂ）を加減算器１９８に対して出力する。一方、選択回路１９６は、比較器１９４から０を示す信号を選択信号として受け付けた場合に、０値を加減算器１９８に対して出力する。
【００７２】
加減算器１９８は、加減算器１９２からの加算結果（Ａ＋Ｉｄｘ）から、選択回路１９６の出力値を減算し、減算結果を端子Ｏに対して出力する。
剰余回路１３８等は、端子Ｏから出力値を出力する。さらに、剰余回路１４８，１７８は、端子Ｃから補正選択信号を出力する。
【００７３】
図７は、実施の形態３にかかる各パラメータとその導出式とを例示する図である。なお、各パラメータは、インターリーブ装置１００の内部又は外部に設けられた算出回路（図示せず）によって算出されてもよい。さらに、その算出回路が、各パラメータを、各パラメータが記憶される記憶部に設定するようにしてもよい。
【００７４】
列加算値は、（ｍｉ＋ｍｊ×ｎｉ）ｍｏｄ  ｍで示される導出式から算出される。この導出式は、概略的には、式１及び式２において、並び替え前の列番号ｉが１つ増加したときの並び替え後の列番号Ｉの増分を示す。この導出式は、式２で、ｉ＝１，Ｊ＝ｎｉとすることによって得られる。行番号Ｊは、列が１つ増加するごとに、（行数ｎ以上とならなければ）ｎｉだけ増加する。したがって、式２でＪ＝ｎｉとすることによって、列加算値が得られる。なお、１つ前の列番号と列加算値との和が列数ｍ以上となった場合には、剰余回路１３８によって、その和から列数ｍが減算されるように構成されている。
【００７５】
行加算値は、ｎｉで示される導出式から算出される。この導出式は、概略的には、式１において、並び替え前の列番号ｉが１つ増加したときの並び替え後の行番号Ｊの増分を示す。なお、１つ前の行番号と行加算値との和が行数ｎ以上となった場合には、剰余回路１４８によって、その和から行数ｎが減算されるように構成されている。
【００７６】
補正加算値は、ｍ−（（ｎ×ｍｊ）ｍｏｄ  ｍ）で示される導出式から算出される。この導出式は、概略的には、式１及び式２において、並び替え前の列番号ｉ又は行番号ｊが１つ増加して新たに算出された行番号Ｊが、行数ｎよりも大きくなったために、ｎを減算した場合の、当該減算処理を考慮した列番号の補正値を示す。詳しくは後述する。
【００７７】
列加算値２は、（ｍｊ×ｎｊ）ｍｏｄ  ｍで示される導出式から算出される。この導出式は、概略的には、式１及び式２において、並び替え前の行番号ｊが１つ増加したときの並び替え後の列番号Ｉの増分を示す。この導出式は、式２で、ｉ＝０，Ｊ＝ｎｊとすることによって得られる。行番号Ｊは、行が１つ増加するごとに、（行数ｎ以上とならなければ）ｎｊだけ増加する。したがって、式２でＪ＝ｎｊとすることによって、列加算値２が得られる。なお、１つ前の行の先頭列の並び替え後の列番号と列加算値２との和が列数ｍ以上となった場合には、剰余回路１６８によって、その和から列数ｍが減算されるように構成されている。
【００７８】
行加算値２は、ｎｊで示される導出式から算出される。この導出式は、概略的には、式１において、並び替え前の行番号ｊが１つ増加したときの並び替え後の行番号Ｊの増分を示す。なお、１つ前の行の先頭列の並び替え後の行番号と行加算値２との和が行数ｎ以上となった場合には、剰余回路１７８によって、その和から行数ｎが減算されるように構成されている。
【００７９】
次に、実施の形態３にかかるインターリーブ装置１００におけるインターリーブ処理について説明する。図８〜図１０は、実施の形態３にかかるインターリーブ装置１００におけるインターリーブ処理（Ｓ２０）を示すフローチャートである。図８は、インターリーブ処理（Ｓ２０）全体を示す。図９は、列毎の処理（Ｓ２１０）を示す。図１０は、行毎の処理（Ｓ２４０）を示す。
【００８０】
インターリーブ装置１００は、初期化処理を行う（Ｓ２０２）。具体的には、インターリーブ装置１００の制御回路１０２は、行開始番号を０に設定し、列開始番号を０に設定し、行カウンタを０に設定し、列カウンタを０に設定する。
さらに具体的には、制御回路１０２は、開始番号リセット信号を列開始番号記憶部１１２に出力する。これにより、列開始番号記憶部１１２に記憶（設定）された列開始番号は、０となる。同様に、制御回路１０２は、開始番号リセット信号を行開始番号記憶部１１４に出力する。これにより、行開始番号記憶部１１４に記憶（設定）された行開始番号は、０となる。
また、制御回路１０２は、制御回路１０２の内部に設けられた行カウンタ及び列カウンタを、それぞれ０に設定する。
【００８１】
次に、インターリーブ装置１００は、行番号を行開始番号に設定し、列番号を列開始番号に設定する（Ｓ２０４）。具体的には、インターリーブ装置１００の制御回路１０２は、１を示す開始番号選択信号を、選択回路１１６及び選択回路１１８に対して出力する。これにより、選択回路１１６は、端子１に入力される列開始番号を、列番号記憶部１２４に対して出力する。これにより、列番号が列開始番号に設定される。同様に、選択回路１１８は、端子１に入力される行開始番号を、行番号記憶部１２６に対して出力する。これにより、行番号が行開始番号に設定される。
【００８２】
次に、インターリーブ装置１００は、行番号Ｊ及び列番号Ｉを出力し、データの並び替えを行う（Ｓ２０６）。具体的には、インターリーブ装置１００の列番号記憶部１２４は、設定された列番号（列開始番号）を、並び替え回路１０４に対して出力する。また、行番号記憶部１２６は、設定された行番号（行開始番号）を、並び替え回路１０４に対して出力する。ここで、列カウンタ＝０、行カウンタ＝０であるので、処理対象のデータの位置は、（ｉ，ｊ）＝（０，０）である。したがって、並び替え回路１０４は、この処理対象のデータを、受け付けた行番号Ｊ及び列番号Ｉの位置に並び替える。
【００８３】
次に、インターリーブ装置１００は、列毎の処理を行う（Ｓ２１０）。具体的には、位置演算装置１１０の選択回路１１６，１１８，１２０、列番号記憶部１２４、行番号記憶部１２６、列演算回路１３０、行演算回路１４０及び列演算回路１５０が、列毎の処理を行う。具体的な処理については、後述する。
【００８４】
列毎の処理の後、インターリーブ装置１００の制御回路１０２は、列カウンタを１増加させる（Ｓ２３２）。次に、インターリーブ装置１００の制御回路１０２は、列カウンタが列数ｍに等しいか否かを判断する（Ｓ２３４）。列カウンタが列数ｍに等しくない場合（Ｓ２３４のＮＯ）、処理は最終列まで終わっていないので、Ｓ２０６の処理に戻る。これによって、Ｓ２１０の処理によって算出された列番号Ｉ及び行番号Ｊが、並び替え回路１０４に対して出力される。そして、並び替え回路１０４は、その列番号Ｉ及び行番号Ｊの位置に、処理対象のデータを並び替える。
【００８５】
具体的には、Ｓ２１０の処理によって、列番号記憶部１２４には、Ｓ２０６の処理で並び替えられたデータの次の処理対象のデータ、つまり（ｉ，ｊ）＝（１，０）の位置のデータの並び替え後の位置の列番号Ｉが設定される。同様に、行番号記憶部１２６には、次の処理対象のデータの並び替え後の位置の行番号Ｊが設定される。列番号記憶部１２４は、設定された列番号Ｉを、並び替え回路１０４に対して出力する。また、行番号記憶部１２６は、設定された行番号Ｊを、並び替え回路１０４に対して出力する。
【００８６】
ここで、Ｓ２３２の処理によって、列カウンタ＝１、行カウンタ＝０となるので、制御回路１０２は、処理対象のデータの位置は、（ｉ，ｊ）＝（１，０）と認識する。したがって、制御回路１０２は、並び替え回路１０４に対して、この処理対象のデータ（（ｉ，ｊ）＝（１，０）に配置されたデータ）を、列番号Ｉ及び行番号Ｊの位置に並び替えるように制御する。
以下同様に、インターリーブ装置１００は、ｍ−１列までのデータについて、並び替え後の位置を示す列番号Ｉ及び行番号Ｊを算出し、そのデータを並び替える。
【００８７】
一方、Ｓ２３４の処理において列カウンタが列数ｍに等しくなった場合（Ｓ２３４のＹＥＳ）、制御回路１０２は、列カウンタを０にする（Ｓ２３６）。この前に、Ｓ２０６の処理で、最終列であるｍ−１列目のデータについての処理が終了している、つまり、その後のＳ２１０の処理はダミー処理である。したがって、制御回路１０２は、Ｓ２１０の処理で算出された列番号Ｉ及び行番号Ｊについては出力しないように制御し、列カウンタを０にする。
【００８８】
最終列（ｍ−１列）まで処理が終了したので、次の処理は、次の行（１行目）の先頭列（０列目）に対して行われる。したがって、インターリーブ装置１００は、行毎の処理を行う（Ｓ２４０）。具体的には、制御回路１０２は、位置演算装置１１０の列開始番号記憶部１１２、行開始番号記憶部１１４、選択回路１２２、列演算回路１６０、行演算回路１７０及び列演算回路１８０を起動する。そして、これらの起動された回路が、行毎の処理を行う。具体的な処理については、後述する。
【００８９】
行毎の処理の後、インターリーブ装置１００の制御回路１０２は、行カウンタを１増加させる（Ｓ２６２）。次に、インターリーブ装置１００の制御回路１０２は、行カウンタが行数ｎに等しいか否かを判断する（Ｓ２６４）。行カウンタが行数ｎに等しくない場合（Ｓ２６４のＮＯ）、処理は最終行まで終わっていないので、Ｓ２０４の処理に戻る。
【００９０】
このとき、制御回路１０２は、１を示す開始番号選択信号を、選択回路１１６及び選択回路１１８に対して出力する。これによって、Ｓ２４０の処理によって算出された列開始番号及び行開始番号が、それぞれ、列番号及び行番号に設定される。そして、Ｓ２０６の処理において、列番号（列開始番号）及び行番号（行開始番号）が、並び替え回路１０４に対して出力される。そして、並び替え回路１０４は、その列番号Ｉ及び行番号Ｊの位置に、処理対象のデータを並び替える。
【００９１】
具体的には、Ｓ２４０の処理及びＳ２０４の処理によって、列番号記憶部１２４には、次の処理対象の行の先頭列のデータ、つまり（ｉ，ｊ）＝（０，１）の位置のデータの並び替え後の位置の列番号Ｉ（列開始番号）が設定される。同様に、行番号記憶部１２６には、次の処理対象の行の先頭列のデータの並び替え後の位置の行番号Ｊ（行開始番号）が設定される。列番号記憶部１２４は、設定された列番号Ｉ（列開始番号）を、並び替え回路１０４に対して出力する。また、行番号記憶部１２６は、設定された行番号Ｊ（行開始番号）を、並び替え回路１０４に対して出力する。
【００９２】
ここで、Ｓ２６２の処理によって、列カウンタ＝０、行カウンタ＝１となるので、制御回路１０２は、処理対象のデータの位置は、（ｉ，ｊ）＝（０，１）と認識する。したがって、制御回路１０２は、並び替え回路１０４に対して、この処理対象のデータ（（ｉ，ｊ）＝（０，１）に配置されたデータ）を、列番号Ｉ（列開始番号）及び行番号Ｊ（行開始番号）の位置に並び替えるように制御する。
【００９３】
以下同様に、インターリーブ装置１００は、行が変わるごとに、０列のデータについて、並び替え後の位置を示す列番号Ｉ（列開始番号）及び行番号Ｊ（行開始番号）を算出し、そのデータを並び替える。
一方、Ｓ２６４の処理において、行カウンタが行数ｎに等しくなった場合（Ｓ２６４のＹＥＳ）、処理は最終行まで終わったので、処理は終了する。
【００９４】
なお、Ｓ２３２〜Ｓ２３６の処理は、Ｓ２１０の前になされてもよい。これによって、列毎の処理を無駄に行うことを避けることができる。同様に、Ｓ２６２〜Ｓ２６４の処理は、Ｓ２４０の前になされてもよい。これによって、行毎の処理を無駄に行うことを避けることができる。
【００９５】
次に、図９を用いて、列毎の処理について説明する。
列演算回路１３０は、列番号記憶部１２４に設定された列番号に、列加算値を加算する（Ｓ２１２）。具体的には、列演算回路１３０の剰余回路１３８は、端子Ａから、列加算値記憶部１３６に記憶された列加算値を受け付ける。また、剰余回路１３８は、端子Ｉｄｘから、列番号記憶部１２４に記憶された列番号を受け付ける。そして、剰余回路１３８の加減算器１９２は、端子Ａから受け付けた列加算値と、端子Ｉｄｘから受け付けた列番号とを加算する。そして、加減算器１９２は、加算結果を、加算後の列番号として出力する。
【００９６】
列演算回路１３０は、Ｓ２１２の処理による加算後の列番号が、列数ｍ以上であるか否かを判断する（Ｓ２１４）。具体的には、列演算回路１３０の剰余回路１３８は、端子Ｂから、列数記憶部１３４に記憶された列数ｍを受け付ける。そして、剰余回路１３８の比較器１９４は、Ｓ２１２の処理による加算後の列番号と、端子Ｂから受け付けた列数ｍとの大小を比較する。
【００９７】
Ｓ２１２の処理による加算後の列番号が、列数ｍ以上である場合（Ｓ２１４のＹＥＳ）、列演算回路１３０は、Ｓ２１２の処理による加算後の列番号から、列数ｍを減算し、減算結果を出力する（Ｓ２１６）。具体的には、このとき、剰余回路１３８の比較器１９４は、１を示す選択信号を、剰余回路１３８の選択回路１９６に対して出力する。選択回路１９６は、１を示す選択信号を受け付けたので、端子１に入力された列数ｍ（除数）を、剰余回路１３８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２１２の処理による加算後の列番号）から、列数ｍ（除数）を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。剰余回路１３８は、この出力値（第１の列番号値）を、剰余回路１５８と選択回路１２０の端子０とに出力する。
【００９８】
一方、Ｓ２１２の処理による加算後の列番号が、列数ｍよりも小さい場合（Ｓ２１４のＮＯ）、列演算回路１３０は、Ｓ２１６の処理を行わないで、Ｓ２１２の処理による加算後の列番号を出力する。具体的には、このとき、剰余回路１３８の比較器１９４は、０を示す選択信号を、剰余回路１３８の選択回路１９６に対して出力する。選択回路１９６は、０を示す選択信号を受け付けたので、端子０に入力された０値を、剰余回路１３８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２１２の処理による加算後の列番号）から０値を減算する（つまり何もしない）。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。つまり、加減算器１９８は、Ｓ２１２の処理による加算後の列番号を、端子Ｏから出力する。剰余回路１３８は、この出力値（第１の列番号値）を、剰余回路１５８と選択回路１２０の端子０とに出力する。
【００９９】
行演算回路１４０は、行番号記憶部１２６に設定された行番号に、行加算値を加算する（Ｓ２１８）。具体的には、行演算回路１４０の剰余回路１４８は、端子Ａから、行加算値記憶部１４６に記憶された行加算値を受け付ける。また、剰余回路１４８は、端子Ｉｄｘから、行番号記憶部１２６に記憶された行番号を受け付ける。そして、剰余回路１４８の加減算器１９２は、端子Ａから受け付けた行加算値と、端子Ｉｄｘから受け付けた行番号とを加算する。そして、加減算器１９２は、加算結果を、加算後の行番号として出力する。
【０１００】
行演算回路１４０は、Ｓ２１８の処理による加算後の行番号が、行数ｎ以上であるか否かを判断する（Ｓ２２０）。具体的には、行演算回路１４０の剰余回路１４８は、端子Ｂから、行数記憶部１４４に記憶された行数ｎを受け付ける。そして、剰余回路１４８の比較器１９４は、Ｓ２１８の処理による加算後の行番号と、端子Ｂから受け付けた行数ｎとの大小を比較する。
【０１０１】
Ｓ２１８の処理による加算後の行番号が、行数ｎよりも小さい場合（第１の場合）（Ｓ２２０のＮＯ）、行演算回路１４０は、以降の処理を行わないで、Ｓ２１８の処理による加算後の行番号を出力する。具体的には、このとき、剰余回路１４８の比較器１９４は、０を示す選択信号を、剰余回路１４８の選択回路１９６に対して出力する。選択回路１９６は、０を示す選択信号を受け付けたので、端子０に入力された０値を、剰余回路１４８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２１８の処理による加算後の行番号）から０値を減算する（つまり何もしない）。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。つまり、剰余回路１４８は、Ｓ２１８の処理による加算後の行番号を、端子Ｏから出力する。この出力された行番号は、選択回路１１８の端子０に入力される。このとき、選択回路１１８は、制御回路１０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された行番号Ｊを、行番号記憶部１２６に対して出力する。
【０１０２】
さらにこのとき、剰余回路１４８の比較器１９４は、０を示す選択信号を、端子Ｃに対して出力する。剰余回路１４８は、端子Ｃから、０を示す補正選択信号を、選択回路１２０に対して出力する。したがって、選択回路１２０は、端子０に入力された剰余回路１３８の出力値（第１の列番号値）を選択し、選択回路１１６の端子０に対して出力する。このとき、選択回路１１６は、制御回路１０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された、列番号Ｉ（第１の列番号値）を、列番号記憶部１２４に対して出力する。
【０１０３】
このように、Ｓ２１８の処理による加算後の行番号が行数ｎよりも小さい第１の場合（Ｓ２２０のＮＯ）、Ｓ２１０の処理が終了する。そして、上述した図８のＳ２０６の処理において、インターリーブ装置１００は、行番号記憶部１２６に記憶された行番号Ｊと、列番号記憶部１２４に記憶された列番号Ｉ（第１の列番号値）とに基づいて、データを並び替える。
【０１０４】
一方、Ｓ２１８の処理による加算後の行番号が、行数ｎ以上である場合（第２の場合）（Ｓ２２０のＹＥＳ）、行演算回路１４０は、Ｓ２１８の処理による加算後の行番号から、行数ｎを減算し、減算結果を出力する（Ｓ２２２）。具体的には、このとき、剰余回路１４８の比較器１９４は、１を示す選択信号を、剰余回路１４８の選択回路１９６に対して出力する。選択回路１９６は、１を示す選択信号を受け付けたので、端子１に入力された行数ｎ（除数）を、剰余回路１４８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２１８の処理による加算後の行番号）から、行数ｎ（除数）を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。この出力された行番号は、選択回路１１８の端子０に入力される。このとき、選択回路１１８は、制御回路１０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された行番号Ｊを、行番号記憶部１２６に対して出力する。
さらにこのとき、剰余回路１４８の比較器１９４は、１を示す選択信号を、端子Ｃに対して出力する。剰余回路１４８は、端子Ｃから、１を示す補正選択信号を、選択回路１２０に対して出力する。
【０１０５】
列演算回路１５０は、剰余回路１３８からの出力値である列番号（第１の列番号値）に、補正加算値を加算する（Ｓ２２４）。具体的には、列演算回路１５０の剰余回路１５８は、端子Ａから、補正加算値記憶部１５６に記憶された補正加算値を受け付ける。また、剰余回路１５８は、端子Ｉｄｘから、剰余回路１３８からの出力値である列番号（第１の列番号値）を受け付ける。そして、剰余回路１５８の加減算器１９２は、端子Ａから受け付けた補正加算値と、端子Ｉｄｘから受け付けた第１の列番号値とを加算する。そして、加減算器１９２は、加算結果を、加算後の列番号として出力する。
【０１０６】
列演算回路１５０は、Ｓ２２４の処理による加算後の列番号が、列数ｍ以上であるか否かを判断する（Ｓ２２６）。具体的には、列演算回路１５０の剰余回路１５８は、端子Ｂから、列数記憶部１５４に記憶された列数ｍを受け付ける。そして、剰余回路１５８の比較器１９４は、Ｓ２２４の処理による加算後の列番号と、端子Ｂから受け付けた列数ｍとの大小を比較する。
【０１０７】
Ｓ２２４の処理による加算後の列番号が、列数ｍ以上である場合（Ｓ２２６のＹＥＳ）、列演算回路１５０は、Ｓ２２４の処理による加算後の列番号から、列数ｍを減算し、減算結果を出力する（Ｓ２２８）。具体的には、このとき、剰余回路１５８の比較器１９４は、１を示す選択信号を、剰余回路１５８の選択回路１９６に対して出力する。選択回路１９６は、１を示す選択信号を受け付けたので、端子１に入力された列数ｍ（除数）を、剰余回路１５８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２２４の処理による加算後の列番号）から、列数ｍ（除数）を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。剰余回路１５８は、この出力値（第２の列番号値）を、選択回路１２０の端子１に出力する。
【０１０８】
一方、Ｓ２２４の処理による加算後の列番号が、列数ｍよりも小さい場合（Ｓ２２６のＮＯ）、列演算回路１５０は、Ｓ２２８の処理を行わないで、Ｓ２２４の処理による加算後の列番号を出力する。具体的には、このとき、剰余回路１５８の比較器１９４は、０を示す選択信号を、剰余回路１５８の選択回路１９６に対して出力する。選択回路１９６は、０を示す選択信号を受け付けたので、端子０に入力された０値を、剰余回路１５８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２２４の処理による加算後の列番号）から０値を減算する（つまり何もしない）。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。つまり、加減算器１９８は、Ｓ２２４の処理による加算後の列番号を、端子Ｏから出力する。剰余回路１５８は、この出力値（第２の列番号値）を、選択回路１２０の端子１に出力する。
【０１０９】
また、このとき（Ｓ２２６のＹＥＳ及びＮＯの場合）、選択回路１２０は、剰余回路１４８から、１を示す補正選択信号を受け付けている。したがって、選択回路１２０は、端子１に入力された剰余回路１５８からの出力値（第２の列番号値）を選択し、選択回路１１６の端子０に対して出力する。このとき、選択回路１１６は、制御回路１０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された、列番号Ｉ（第２の列番号値）を、列番号記憶部１２４に対して出力する。
【０１１０】
このように、Ｓ２１８の処理による加算後の行番号が行数ｎ以上である第２の場合（Ｓ２２０のＹＥＳ）、Ｓ２２２〜Ｓ２２８の処理の処理を経て、Ｓ２１０の処理が終了する。そして、上述した図８のＳ２０６の処理において、インターリーブ装置１００は、行番号記憶部１２６に記憶された行番号Ｊと、列番号記憶部１２４に記憶された列番号Ｉ（第２の列番号値）とに基づいて、データを並び替える。
【０１１１】
次に、図１０を用いて、行毎の処理（各行の先頭列に対する処理）について説明する。
列演算回路１６０は、列開始番号記憶部１１２に設定された列開始番号に、列加算値２を加算する（Ｓ２４２）。具体的には、列演算回路１６０の剰余回路１６８は、端子Ａから、列加算値記憶部１６６に記憶された列加算値２を受け付ける。また、剰余回路１６８は、端子Ｉｄｘから、列開始番号記憶部１１２に記憶された列開始番号を受け付ける。そして、剰余回路１６８の加減算器１９２は、端子Ａから受け付けた列加算値２と、端子Ｉｄｘから受け付けた列開始番号とを加算する。そして、加減算器１９２は、加算結果を、加算後の列開始番号として出力する。
【０１１２】
列演算回路１６０は、Ｓ２４２の処理による加算後の列開始番号が、列数ｍ以上であるか否かを判断する（Ｓ２４４）。具体的には、列演算回路１６０の剰余回路１６８は、端子Ｂから、列数記憶部１６４に記憶された列数ｍを受け付ける。そして、剰余回路１６８の比較器１９４は、Ｓ２４２の処理による加算後の列開始番号と、端子Ｂから受け付けた列数ｍとの大小を比較する。
【０１１３】
Ｓ２４２の処理による加算後の列開始番号が、列数ｍ以上である場合（Ｓ２４４のＹＥＳ）、列演算回路１６０は、Ｓ２４２の処理による加算後の列開始番号から、列数ｍを減算し、減算結果を出力する（Ｓ２４６）。具体的には、このとき、剰余回路１６８の比較器１９４は、１を示す選択信号を、剰余回路１６８の選択回路１９６に対して出力する。選択回路１９６は、１を示す選択信号を受け付けたので、端子１に入力された列数ｍ（除数）を、剰余回路１６８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２４２の処理による加算後の列開始番号）から、列数ｍ（除数）を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。剰余回路１６８は、この出力値（第１の列開始番号値）を、剰余回路１８８と選択回路１２２の端子０とに出力する。
【０１１４】
一方、Ｓ２４２の処理による加算後の列開始番号が、列数ｍよりも小さい場合（Ｓ２４４のＮＯ）、列演算回路１６０は、Ｓ２４６の処理を行わないで、Ｓ２４２の処理による加算後の列開始番号を出力する。具体的には、このとき、剰余回路１６８の比較器１９４は、０を示す選択信号を、剰余回路１６８の選択回路１９６に対して出力する。選択回路１９６は、０を示す選択信号を受け付けたので、端子０に入力された０値を、剰余回路１６８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２４２の処理による加算後の列開始番号）から、０値を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。つまり、加減算器１９８は、Ｓ２４２の処理による加算後の列開始番号を、端子Ｏから出力する。剰余回路１６８は、この出力値（第１の列開始番号値）を、剰余回路１８８と選択回路１２２の端子０とに出力する。
【０１１５】
行演算回路１７０は、行開始番号記憶部１１４に設定された行開始番号に、行加算値２を加算する（Ｓ２４８）。具体的には、行演算回路１７０の剰余回路１７８は、端子Ａから、行加算値記憶部１７６に記憶された行加算値２を受け付ける。また、剰余回路１７８は、端子Ｉｄｘから、行開始番号記憶部１１４に記憶された行開始番号を受け付ける。そして、剰余回路１７８の加減算器１９２は、端子Ａから受け付けた行加算値２と、端子Ｉｄｘから受け付けた行開始番号とを加算する。そして、加減算器１９２は、加算結果を、加算後の行開始番号として出力する。
【０１１６】
行演算回路１７０は、Ｓ２４８の処理による加算後の行開始番号が、行数ｎ以上であるか否かを判断する（Ｓ２５０）。具体的には、行演算回路１７０の剰余回路１７８は、端子Ｂから、行数記憶部１７４に記憶された行数ｎを受け付ける。そして、剰余回路１７８の比較器１９４は、Ｓ２４８の処理による加算後の行開始番号と、端子Ｂから受け付けた行数ｎとの大小を比較する。
【０１１７】
Ｓ２４８の処理による加算後の行開始番号が、行数ｎよりも小さい場合（第３の場合）（Ｓ２５０のＮＯ）、行演算回路１７０は、以降の処理を行わないで、Ｓ２４８の処理による加算後の行開始番号を出力する。具体的には、このとき、剰余回路１７８の比較器１９４は、０を示す選択信号を、剰余回路１７８の選択回路１９６に対して出力する。選択回路１９６は、０を示す選択信号を受け付けたので、端子０に入力された０値を、剰余回路１７８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２４８の処理による加算後の行開始番号）から、０値を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。つまり、剰余回路１７８は、Ｓ２４８の処理による加算後の行開始番号を、端子Ｏから出力する。この出力された行開始番号は、行開始番号記憶部１１４に入力される。このとき、選択回路１１８は、制御回路１０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された行開始番号を、行番号記憶部１２６に対して出力する。
【０１１８】
さらにこのとき、剰余回路１７８の比較器１９４は、０を示す選択信号を、端子Ｃに対して出力する。剰余回路１７８は、端子Ｃから、０を示す補正選択信号を、選択回路１２２に対して出力する。したがって、選択回路１２２は、端子０に入力された剰余回路１６８の出力値（第１の列開始番号値）を選択し、列開始番号記憶部１１２に対して出力する。列開始番号記憶部１１２は、剰余回路１６８の出力値（第１の列開始番号値）を、選択回路１１６の端子１に対して出力する。このとき、選択回路１１６は、制御回路１０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された、列開始番号（第１の列開始番号値）を、列番号記憶部１２４に対して出力する。
【０１１９】
このように、Ｓ２４８の処理による加算後の行開始番号が行数ｎよりも小さい第３の場合（Ｓ２５０のＮＯ）、Ｓ２４０の処理が終了する。そして、上述した図８のＳ２０６の処理において、インターリーブ装置１００は、行番号記憶部１２６に記憶された行開始番号と、列番号記憶部１２４に記憶された列開始番号（第１の列開始番号値）とに基づいて、データを並び替える。
【０１２０】
一方、Ｓ２４８の処理による加算後の行開始番号が、行数ｎ以上である場合（第４の場合）（Ｓ２５０のＹＥＳ）、行演算回路１７０は、Ｓ２４８の処理による加算後の行開始番号から、行数ｎを減算し、減算結果を出力する（Ｓ２５２）。具体的には、このとき、剰余回路１７８の比較器１９４は、１を示す選択信号を、剰余回路１７８の選択回路１９６に対して出力する。選択回路１９６は、１を示す選択信号を受け付けたので、端子１に入力された行数ｎ（除数）を、剰余回路１７８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２４８の処理による加算後の行開始番号）から、行数ｎ（除数）を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。この出力された行開始番号は、行開始番号記憶部１１４を経て、選択回路１１８の端子１に入力される。このとき、選択回路１１８は、制御回路１０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された行開始番号を、行番号記憶部１２６に対して出力する。
【０１２１】
さらにこのとき、剰余回路１７８の比較器１９４は、１を示す選択信号を、端子Ｃに対して出力する。剰余回路１７８は、端子Ｃから、１を示す補正選択信号を、選択回路１２２に対して出力する。
【０１２２】
列演算回路１８０は、剰余回路１６８からの出力値である列開始番号（第１の列開始番号値）に、補正加算値を加算する（Ｓ２５４）。具体的には、列演算回路１８０の剰余回路１８８は、端子Ａから、補正加算値記憶部１８６に記憶された補正加算値を受け付ける。また、剰余回路１８８は、端子Ｉｄｘから、剰余回路１６８からの出力値である列開始番号（第１の列開始番号値）を受け付ける。そして、剰余回路１８８の加減算器１９２は、端子Ａから受け付けた補正加算値と、端子Ｉｄｘから受け付けた第１の列開始番号値とを加算する。そして、加減算器１９２は、加算結果を、加算後の列開始番号として出力する。
【０１２３】
列演算回路１８０は、Ｓ２５４の処理による加算後の列開始番号が、列数ｍ以上であるか否かを判断する（Ｓ２５６）。具体的には、列演算回路１８０の剰余回路１８８は、端子Ｂから、列数記憶部１８４に記憶された列数ｍを受け付ける。そして、剰余回路１８８の比較器１９４は、Ｓ２５４の処理による加算後の列開始番号と、端子Ｂから受け付けた列数ｍとの大小を比較する。
【０１２４】
Ｓ２５４の処理による加算後の列開始番号が、列数ｍ以上である場合（Ｓ２５６のＹＥＳ）、列演算回路１８０は、Ｓ２５４の処理による加算後の列開始番号から、列数ｍを減算し、減算結果を出力する（Ｓ２５８）。具体的には、このとき、剰余回路１８８の比較器１９４は、１を示す選択信号を、剰余回路１８８の選択回路１９６に対して出力する。選択回路１９６は、１を示す選択信号を受け付けたので、端子１に入力された列数ｍ（除数）を、剰余回路１８８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２５４の処理による加算後の列開始番号）から、列数ｍ（除数）を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。剰余回路１８８は、この出力値（第２の列開始番号値）を、選択回路１２２の端子１に出力する。
【０１２５】
一方、Ｓ２５４の処理による加算後の列開始番号が、列数ｍよりも小さい場合（Ｓ２５６のＮＯ）、列演算回路１８０は、Ｓ２５８の処理を行わないで、Ｓ２５４の処理による加算後の列開始番号を出力する。具体的には、このとき、剰余回路１８８の比較器１９４は、０を示す選択信号を、剰余回路１８８の選択回路１９６に対して出力する。選択回路１９６は、０を示す選択信号を受け付けたので、端子０に入力された０値を、剰余回路１８８の加減算器１９８に対して出力する。加減算器１９８は、加減算器１９２の出力値（Ｓ２５４の処理による加算後の列開始番号）から、０値を減算する。そして、加減算器１９８は、減算結果を、端子Ｏから出力する。つまり、加減算器１９８は、Ｓ２５４の処理による加算後の列開始番号を、端子Ｏから出力する。剰余回路１８８は、この出力値（第２の列開始番号値）を、選択回路１２２の端子１に出力する。
【０１２６】
また、このとき（Ｓ２５６のＹＥＳ及びＮＯの場合）、選択回路１２２は、剰余回路１７８から、１を示す補正選択信号を受け付けている。したがって、選択回路１２２は、端子１に入力された剰余回路１８８からの出力値（第２の列開始番号値）を選択し、列開始番号記憶部１１２に対して出力する。列開始番号記憶部１１２は、この第２の列開始番号値を、選択回路１１６の端子１に対して出力する。このとき、選択回路１１６は、制御回路１０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された、列開始番号（第２の列開始番号値）を、列番号記憶部１２４に対して出力する。
【０１２７】
このように、Ｓ２４８の処理による加算後の行番号が行数ｎ以上である第４の場合（Ｓ２５０のＹＥＳ）、Ｓ２５２〜Ｓ２５８の処理の処理を経て、Ｓ２４０の処理が終了する。そして、上述した図８のＳ２０６の処理において、インターリーブ装置１００は、行番号記憶部１２６に記憶された行開始番号と、列番号記憶部１２４に記憶された列開始番号（第２の列開始番号値）とに基づいて、データを並び替える。
【０１２８】
次に、図１１及び図１２を用いて、具体例を説明する。
図１１及び図１２は、８行１０列に配置されたデータを並び替える動作を説明するための図である。図１１は、０行目に配置されたデータを並び替える動作を説明するための図である。図１２は、１行目に配置されたデータを並び替える動作を説明するための図である。
【０１２９】
ここで、列数ｍを１０、行数ｎを８とする。さらに、式１及び式２において、ｎｉ＝５、ｎｊ＝３、ｍｉ＝３、ｍｊ＝７とする。このとき、式１及び式２より、行番号Ｊ及び列番号Ｉは、以下の式で示される。
Ｊ＝（５×ｉ＋３×ｊ）ｍｏｄ  ８  （式１−１）
Ｉ＝（３×ｉ＋７×Ｊ）ｍｏｄ  １０（式２−１）
【０１３０】
また、図７に示した導出式より、列加算値は、（３＋７×５）ｍｏｄ  １０＝８となる。同様に、行加算値は、ｎｉ＝５となる。補正加算値は、１０−（（８×７）ｍｏｄ  １０）＝４となる。列加算値２は、（７×３）ｍｏｄ  １０＝１となる。行加算値２は、ｎｊ＝３となる。これらのパラメータが、上述した算出回路（図示せず）によって算出され、各記憶部（列加算値記憶部１３６等）に設定（記憶）される。
【０１３１】
まず、インターリーブ装置１００は、図１１に例示された位置（ｉ，ｊ）＝（０，０）のデータ０について処理を行う。上述したように、制御回路１０２は、行開始番号を０に設定し、列開始番号を０に設定し、行カウンタを０に設定し、列カウンタを０に設定する。そして、上述した処理により、列番号記憶部１２４の列番号が列開始番号に設定され、行番号記憶部１２６の行番号が行開始番号に設定される。そして、列番号記憶部１２４に列番号（列開始番号＝０）が、並び替え回路１０４に対して出力される。また、行番号記憶部１２６に設定された行番号（行開始番号＝０）が、並び替え回路１０４に対して出力される。これによって、図１１（Ａ）に示されたデータ０は、図１１（Ｂ）に例示するように、位置（Ｉ，Ｊ）＝（０，０）の位置に並び替えられる。
なお、式１−１及び式２−１においても、（ｉ，ｊ）＝（０，０）のとき、Ｉ＝０，Ｊ＝０となる。
【０１３２】
次に、インターリーブ装置１００は、位置（ｉ，ｊ）＝（１，０）のデータ１について、処理を行う。上述したように、制御回路１０２は、列カウンタを１に設定する。そして、図９に示した列毎の処理が行われる。
剰余回路１３８は、列加算値（＝８）と列番号（＝０）を加算し、その和と列数（＝１０）とを比較する。剰余回路１３８は、比較の結果、列加算値と列番号との和が列数よりも小さいので、当該和（＝８）を、選択回路１２０の端子０と剰余回路１５８とに対して出力する。
【０１３３】
剰余回路１４８は、行加算値（＝５）と行番号（＝０）とを加算し、その和と行数（＝８）とを比較する。剰余回路１４８は、比較の結果、行加算値と行番号との和が行数よりも小さいので、当該和（＝５）を、選択回路１１８の端子０に対して出力する。なお、行加算値と行番号との和が行数よりも小さいので、剰余回路１４８は、補正選択信号を、選択回路１２０に対して出力しない。選択回路１１８は、行番号Ｊを、行番号記憶部１２６に対して出力する。これによって、行番号記憶部１２６に設定された行番号（Ｊ＝５）が、並び替え回路１０４に対して出力される。
【０１３４】
また、選択回路１２０は、補正選択信号を受け付けていないので、端子０に入力された剰余回路１３８の出力値（第１の列番号値＝８）を、選択回路１１６に対して出力する。選択回路１１６は、列番号Ｉを、列番号記憶部１２４に対して出力する。これによって、列番号記憶部１２４に設定された列番号（Ｉ＝８）が、並び替え回路１０４に対して出力される。
【０１３５】
以上の処理によって、図１１（Ａ）に示されたデータ１は、図１１（Ｂ）に例示するように、位置（Ｉ，Ｊ）＝（８，５）の位置に並び替えられる。なお、式１−１及び式２−１においても、（ｉ，ｊ）＝（１，０）のとき、列番号Ｉ＝８，行番号Ｊ＝５となる。
【０１３６】
次に、インターリーブ装置１００は、位置（ｉ，ｊ）＝（２，０）のデータ２について、処理を行う。上述したように、制御回路１０２は、列カウンタを２に設定する。そして、図９に示した列毎の処理が行われる。
剰余回路１３８は、列加算値（＝８）と列番号（＝８）とを加算し、その和と列数（＝１０）とを比較する。剰余回路１３８は、比較の結果、列加算値と列番号との和が列数以上となるので、当該和（＝１６）から列数１０を減算した値（第１の列番号値＝６）を、選択回路１２０の端子０と剰余回路１５８とに対して出力する。
【０１３７】
剰余回路１４８は、行加算値（＝５）と行番号（＝５）とを加算し、その和と行数（＝８）とを比較する。剰余回路１４８は、比較の結果、行加算値と行番号との和が行数以上となるので、当該和（＝１０）から行数８を減算した値（＝２）を、選択回路１１８の端子０に対して出力する。なお、行加算値と行番号との和が行数以上となるので、剰余回路１４８は、１を示す補正選択信号を、選択回路１２０に対して出力する。選択回路１１８は、行番号Ｊを、行番号記憶部１２６に対して出力する。これによって、行番号記憶部１２６に設定された行番号（Ｊ＝２）が、並び替え回路１０４に対して出力される。
【０１３８】
剰余回路１５８は、補正加算値（＝４）と第１の列番号値（＝６）とを加算し、その和と列数（＝１０）とを比較する。剰余回路１５８は、比較の結果、補正加算値と第１の列番号値との和が列数以上となるので、当該和（＝１０）から列数１０を減算した値（第２の列番号値＝０）を、選択回路１２０の端子１に対して出力する。
【０１３９】
ここで、選択回路１２０は、１を示す補正選択信号を受け付けているので、端子１に入力された剰余回路１５８の出力値（第２の列番号値＝０）を、選択回路１１６に対して出力する。選択回路１１６は、列番号Ｉを、列番号記憶部１２４に対して出力する。これによって、列番号記憶部１２４に設定された列番号（Ｉ＝０）が、並び替え回路１０４に対して出力される。
【０１４０】
以上の処理によって、図１１（Ａ）に示されたデータ２は、図１１（Ｂ）に例示するように、位置（Ｉ，Ｊ）＝（０，２）の位置に並び替えられる。なお、式１−１及び式２−１においても、（ｉ，ｊ）＝（１，０）のとき、Ｉ＝０，Ｊ＝２となる。
以下同様にして、０行目の最終列（ｉ，ｊ）＝（９，０）まで、列毎の処理が行われる。これによって、図１１（Ａ）に例示されたデータ０〜９は、それぞれ、図１１（Ｂ）に例示する位置に並び替えられる。
【０１４１】
次に、インターリーブ装置１００は、図１２に例示された位置（ｉ，ｊ）＝（０，１）のデータ０について処理を行う。このとき、上述したように、制御回路１０２は、列カウンタを０に設定し、行カウンタを１に設定する。そして、制御回路１０２は、列開始番号記憶部１１２、行開始番号記憶部１１４、選択回路１２２、列演算回路１６０、行演算回路１７０及び列演算回路１８０を起動する。これによって、図１０に示した行毎の処理が行われる。
【０１４２】
剰余回路１６８は、列加算値２（＝１）と列開始番号（＝０）を加算し、その和と列数（＝１０）とを比較する。剰余回路１６８は、比較の結果、列加算値２と列開始番号との和が列数よりも小さいので、当該和（＝１）を、選択回路１２２の端子０と剰余回路１８８とに対して出力する。
【０１４３】
剰余回路１７８は、行加算値２（＝３）と行開始番号（＝０）とを加算し、その和と行数（＝８）とを比較する。剰余回路１７８は、比較の結果、行加算値２と行開始番号との和が行数よりも小さいので、当該和（＝３）を、行開始番号記憶部１１４に対して出力する。なお、行加算値２と行開始番号との和が行数よりも小さいので、剰余回路１７８は、補正選択信号を、選択回路１２２に対して出力しない。行開始番号記憶部１１４は、行開始番号（＝３）を、選択回路１１８に対して出力する。選択回路１１８は、行開始番号を、行番号記憶部１２６に対して出力する。これによって、行番号記憶部１２６に設定された行番号（Ｊ＝３）が、並び替え回路１０４に対して出力される。
【０１４４】
また、選択回路１２２は、補正選択信号を受け付けていないので、端子０に入力された剰余回路１６８の出力値（第１の列開始番号値＝１）を、列開始番号記憶部１１２に対して出力する。列開始番号記憶部１１２は、この列開始番号（＝１）を、選択回路１１６に対して出力する。選択回路１１６は、列開始番号を、列番号記憶部１２４に対して出力する。これによって、列番号記憶部１２４に設定された列番号（Ｉ＝１）が、並び替え回路１０４に対して出力される。
【０１４５】
以上の処理によって、図１２（Ａ）に示されたデータ０は、図１２（Ｂ）に例示するように、位置（Ｉ，Ｊ）＝（１，３）の位置に並び替えられる。なお、式１−１及び式２−１においても、（ｉ，ｊ）＝（０，１）のとき、列番号Ｉ＝１，行番号Ｊ＝３となる。
【０１４６】
次に、インターリーブ装置１００は、位置（ｉ，ｊ）＝（１，１）のデータ１について、処理を行う。上述したように、制御回路１０２は、列カウンタを１に設定する。そして、図９に示した列毎の処理が行われる。
剰余回路１３８は、列加算値（＝８）と列番号（＝１）を加算し、その和と列数（＝１０）とを比較する。剰余回路１３８は、比較の結果、列加算値と列番号との和が列数よりも小さいので、当該和（第１の列番号値＝９）を、選択回路１２０の端子０と剰余回路１５８とに対して出力する。
【０１４７】
剰余回路１４８は、行加算値（＝５）と行番号（＝３）とを加算し、その和と行数（＝８）とを比較する。剰余回路１４８は、比較の結果、行加算値と行番号との和が行数以上であるので、当該和（＝８）から行数８を減算した値（第１の列番号値＝０）を、選択回路１１８の端子０に対して出力する。なお、行加算値と行番号との和が行数以上であるので、剰余回路１４８は、１を示す補正選択信号を、選択回路１２０に対して出力する。選択回路１１８は、行番号Ｊを、行番号記憶部１２６に対して出力する。これによって、行番号記憶部１２６に設定された行番号（Ｊ＝０）が、並び替え回路１０４に対して出力される。
【０１４８】
剰余回路１５８は、補正加算値（＝４）と第１の列番号値（＝９）とを加算し、その和と列数（＝１０）とを比較する。剰余回路１３８は、比較の結果、補正加算値と第１の列番号値との和が列数以上であるので、当該和から列数を減算した値（第２の列番号値＝３）を、選択回路１２０の端子１に対して出力する。
【０１４９】
ここで、選択回路１２０は、補正選択信号を受け付けているので、端子１に入力された剰余回路１５８の出力値（第２の列番号値＝３）を、選択回路１１６に対して出力する。選択回路１１６は、列番号Ｉを、列番号記憶部１２４に対して出力する。これによって、列番号記憶部１２４に設定された列番号（Ｉ＝３）が、並び替え回路１０４に対して出力される。
【０１５０】
以上の処理によって、図１１（Ａ）に示されたデータ１は、図１１（Ｂ）に例示するように、位置（Ｉ，Ｊ）＝（３，０）の位置に並び替えられる。なお、式１−１及び式２−１においても、（ｉ，ｊ）＝（１，１）のとき、列番号Ｉ＝３，行番号Ｊ＝０となる。
【０１５１】
以下同様にして、１行目の最終列（ｉ，ｊ）＝（９，１）まで、列毎の処理が行われる。これによって、図１２（Ａ）に例示されたデータ０〜９は、それぞれ、図１２（Ｂ）に例示する位置に並び替えられる。
さらに、同様にして、各行の先頭列（０行目）について行毎の処理が行われ、それ以外の列について列毎の処理が行われる。そして、８行目まで処理が行われることによって、８行×１０列の２次元に配置されたデータ全体について、列番号Ｉ及び行番号Ｊが求められ、これらの列番号Ｉ及び行番号Ｊに応じて、データの並び替えが行われる。
【０１５２】
ここで、実施の形態３にかかる構成の作用効果について説明する。
列毎の処理について、式１より、行番号Ｊは、ｉが１加算されるとｎｉ（行加算値）ずつ加算される。ただし、その加算結果が行数ｎ以上となる場合は、その加算結果から行数ｎが減算される。つまり、ｋ−１列目の並び替え後の行番号Ｊ＿ｋ−１とｎｉ（行加算値）との和が行数ｎよりも小さい場合（第１の場合）には、ｋ列目の並び替え後の行番号Ｊ＿ｋは、Ｊ＿ｋ−１＋ｎｉとなる。一方、行番号Ｊ＿ｋ−１とｎｉ（行加算値）との和が行数ｎ以上の場合（第２の場合）には、行番号Ｊ＿ｋは、Ｊ＿ｋ−１＋ｎｉ−ｎとなる。このようにして、行番号Ｊについての剰余演算が行われる。また、この剰余演算は、行演算回路１４０で行われる。上述したように、この行演算回路１４０は、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算を行う。
【０１５３】
また、式１及び式２より、上記第１の場合、つまり、行番号Ｊが単調に増加し行数ｎの減算がなされない場合においては、列番号Ｉは、ｉが１加算されると、（ｍｉ＋ｍｊ×ｎｉ）ｍｏｄ  ｍ（列加算値）ずつ加算される。ただし、その加算結果が列数ｍ以上となる場合は、その加算結果から列数ｍが減算される。このようにして、上記第１の場合の列番号Ｉについての剰余演算が行われる。また、この剰余演算は、列演算回路１３０で行われる。この列演算回路１３０においては、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算が行われる。
【０１５４】
一方、上記第２の場合、つまり、行番号Ｊが単調に増加せず行数ｎの減算がなされた場合においては、列番号Ｉは、上記列演算回路１３０の演算結果（第１の列番号値）に対して補正が必要となる。ここで、行番号Ｊが単調に増加しない場合とは、ｋ−１列目に関する行番号Ｊ＿ｋ−１にｎｉ（行加算値）を加算した結果、その加算結果が行数ｎ以上となったため、その加算結果から行数ｎを減算した場合である。つまり、第２の場合では、Ｊの降下分だけ補正（減算）をする必要がある。ここで、Ｊの降下分は、式２において、ｉ＝０においてＪにｎを代入した値（ｎ×ｍｊ）ｍｏｄ  ｍである。さらに、第１の列番号値からＪの降下分を減算した場合に減算結果が負とならないように、−（ｎ×ｍｊ）ｍｏｄ  ｍにｍを加算する。このｍ−（（ｎ×ｍｊ）ｍｏｄ  ｍ）が、補正加算値である。
【０１５５】
したがって、上記第２の場合、第１の列番号値に補正加算値が加算される（これによって、上記Ｊの降下分（（ｎ×ｍｊ）ｍｏｄ  ｍ）が減算される）。ただし、その加算結果が列数ｍ以上となる場合は、その加算結果から列数ｍが減算される。このようにして、上記第２の場合の列番号Ｉについての剰余演算が行われる。また、この剰余演算は、列演算回路１５０で行われる。この列演算回路１５０においては、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算が行われる。
【０１５６】
また、行毎の処理について、式１より、行番号Ｊは、ｊが１加算されるとｎｊ（行加算値２）ずつ加算される。ただし、その加算結果が行数ｎ以上となる場合は、その加算結果から行数ｎが減算される。つまり、ｋ−１行目の先頭列の並び替え後の行番号（行開始番号）Ｊｓ＿ｋ−１とｎｊ（行加算値２）との和が行数ｎよりも小さい場合（第３の場合）には、ｋ行目の先頭列の並び替え後の行番号（行開始番号）Ｊｓ＿ｋは、Ｊｓ＿ｋ−１＋ｎｊとなる。一方、行開始番号Ｊ＿ｋ−１とｎｊ（行加算値２）との和が行数ｎ以上の場合（第４の場合）には、行開始番号Ｊｓ＿ｋは、Ｊｓ＿ｋ−１＋ｎｊ−ｎとなる。このようにして、行開始番号についての剰余演算が行われる。また、この剰余演算は、行演算回路１７０で行われる。上述したように、この行演算回路１７０は、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算を行う。
【０１５７】
また、式１及び式２より、上記第３の場合、つまり、行開始番号が単調に増加し行数ｎの減算がなされない場合においては、列開始番号は、ｊが１加算されると、（ｍｊ×ｎｊ）ｍｏｄ  ｍ（列加算値２）ずつ加算される。ただし、その加算結果が列数ｍ以上となる場合は、その加算結果から列数ｍが減算される。このようにして、上記第１の場合の列開始番号についての剰余演算が行われる。また、この剰余演算は、列演算回路１６０で行われる。この列演算回路１６０においては、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算が行われる。
【０１５８】
一方、上記第４の場合、つまり、行開始番号が単調に増加せず行数ｎの減算がなされた場合においては、列開始番号は、上記列演算回路１６０の演算結果（第１の列開始番号値）に対して補正が必要となる。ここで、行開始番号が単調に増加しない場合とは、ｋ−１行目に関する行開始番号Ｊｓ＿ｋ−１にｎｊ（行加算値２）を加算した結果、その加算結果が行数ｎ以上となったため、その加算結果から行数ｎを減算した場合である。つまり、第４の場合では、上記Ｊの降下分（（ｎ×ｍｊ）ｍｏｄ  ｍ）だけ補正（減算）をする必要がある。
【０１５９】
したがって、上記第４の場合、第１の列開始番号値に補正加算値が加算される（これによって、上記Ｊの降下分（（ｎ×ｍｊ）ｍｏｄ  ｍ）が減算される）。ただし、その加算結果が列数ｍ以上となる場合は、その加算結果から列数ｍが減算される。このようにして、上記第４の場合の列開始番号についての剰余演算が行われる。また、この剰余演算は、列演算回路１８０で行われる。この列演算回路１８０においては、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算が行われる。
【０１６０】
以上のように、本実施の形態において、乗算及び除算を行わず、加減算及び比較のみで、２次元に配置されたデータの並び替えを行うことができる。さらに、乗算及び除算を行わず、加減算及び比較のみによって剰余演算を行うことによって、演算量を抑制し、演算速度を向上させることが可能となる。
【０１６１】
式１及び式２を用いて定義式通りに演算する場合において、１つの変換を行うために必要な演算量は、乗算４回、加算２回、剰余２回である。剰余演算は、除算１回(逆数の乗算１回)、乗算１回、減算１回が必要であるため、トータルの演算量として、乗算６回、除算２回、加減算４回が必要となる。
【０１６２】
一方、本実施の形態においては、演算量は、加算３回、比較３回、減算３回、および、１行毎に、加算３回、比較３回、減算３回である。ここで、列数が大きい場合、１行毎の処理を無視すると、演算量は、式１及び式２を用いて定義式通りに演算する場合よりも少なくなる。例として、除算器を持たないプロセッサ上でＣコードを使用し、インターリーブ処理を定義式通りに実装した場合と、本実施の形態を使用して実装した場合の処理時間を比較したところ、本実施の形態により、処理が１３．７倍、高速化されていることが確認された。
【０１６３】
＜実施の形態４＞
次に、実施の形態４について説明する。実施の形態４においては、比較器を用いない点で、実施の形態３と異なる。なお、実施の形態４においては、実施の形態３と重複する箇所については、適宜、説明が省略されている。
【０１６４】
図１３は、実施の形態４にかかるインターリーブ装置２００を示す図である。図１３に示すように、インターリーブ装置２００は、制御回路１０２と、並び替え回路１０４と、位置演算装置２１０とを有する。
【０１６５】
位置演算装置２１０は、実施の形態１における位置演算装置２及び実施の形態２における位置演算装置４に対応する。位置演算装置２１０は、後述する構成要素を有する。位置演算装置２１０は、実施の形態３にかかる位置演算装置１１０と同様に、処理対象のデータごとに、並び替え後の位置の列番号Ｉ及び行番号Ｊを算出し、並び替え回路１０４に対して出力する。
【０１６６】
位置演算装置２１０は、列開始番号記憶部１１２と、行開始番号記憶部１１４と、選択回路１１６，１１８，１２０，１２２と、列番号記憶部１２４と、行番号記憶部１２６と、列演算回路２３０と、行演算回路２４０と、列演算回路２５０と、列演算回路２６０と、行演算回路２７０と、列演算回路２８０とを有する。位置演算装置２１０のうち、選択回路１１６，１１８，１２０、列番号記憶部１２４、行番号記憶部１２６、列演算回路２３０、行演算回路２４０及び列演算回路２５０は、列毎の処理を行う。また、列開始番号記憶部１１２、行開始番号記憶部１１４、選択回路１２２、列演算回路２６０、行演算回路２７０及び列演算回路２８０は、行毎の処理を行う。ここで、制御回路１０２は、列開始番号記憶部１１２、行開始番号記憶部１１４、選択回路１２２、列演算回路２６０、行演算回路２７０及び列演算回路２８０については、行毎の処理を行う場合にのみ、起動するように制御してもよい。
【０１６７】
列演算回路２３０は、実施の形態１及び実施の形態２における列演算回路２２に対応する。列演算回路２３０は、列数記憶部１３４と、列減算値記憶部２３６と、剰余回路２３８とを有する。剰余回路２３８は、剰余演算を行うための回路であって、図１４を用いて後述する構成を有している。剰余回路２３８は、列番号記憶部１２４、列数記憶部１３４及び列減算値記憶部２３６からの出力値から第１の列番号値を算出し、選択回路１２０及び列演算回路２５０に対して出力する。
【０１６８】
列減算値記憶部２３６は、例えば、メモリ、フリップフロップ又はレジスタ等である。列減算値記憶部２３６は、列減算値を記憶し、列減算値を剰余回路２３８に対して出力する。列減算値は、図１５に示された導出式を用いて算出される。列減算値については図１５を用いて後述する。
【０１６９】
行演算回路２４０は、実施の形態１及び実施の形態２における行演算回路２４に対応する。行演算回路２４０は、行数記憶部１４４と、行減算値記憶部２４６と、剰余回路２４８とを有する。剰余回路２４８は、剰余演算を行うための回路であって、図１４を用いて後述する構成を有している。剰余回路２４８は、行番号記憶部１２６、行数記憶部１４４及び行減算値記憶部２４６からの出力値から行番号Ｊを算出し、選択回路１１８に対して出力する。
【０１７０】
行減算値記憶部２４６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行減算値記憶部２４６は、行減算値を記憶し、行減算値を剰余回路２４８に対して出力する。行減算値は、図１５に示された導出式を用いて算出される。行減算値については図１５を用いて後述する。
【０１７１】
列演算回路２５０は、実施の形態１及び実施の形態２における列演算回路２６に対応する。列演算回路２５０は、列数記憶部１５４と、補正減算値記憶部２５６と、剰余回路２５８とを有する。剰余回路２５８は、剰余演算を行うための回路であって、図１４を用いて後述する構成を有している。剰余回路２５８は、剰余回路２３８、列数記憶部１５４及び補正減算値記憶部２５６からの出力値から第２の列番号値を算出し、選択回路１２０に対して出力する。
【０１７２】
補正減算値記憶部２５６は、例えば、メモリ、フリップフロップ又はレジスタ等である。補正減算値記憶部２５６は、補正減算値を記憶し、補正減算値を剰余回路２５８に対して出力する。補正減算値は、実施の形態１における補正パラメータに対応し、図１５に示された導出式を用いて算出される。補正減算値については図１５を用いて後述する。
【０１７３】
列演算回路２６０は、実施の形態２における列演算回路４２に対応する。列演算回路２６０は、列数記憶部１６４と、列減算値記憶部２６６と、剰余回路２６８とを有する。剰余回路２６８は、剰余演算を行うための回路であって、図１４を用いて後述する構成を有している。剰余回路２６８は、列開始番号記憶部１１２、列数記憶部１６４及び列減算値記憶部２６６からの出力値から第１の列開始番号値を算出し、選択回路１２２及び列演算回路２８０に対して出力する。
【０１７４】
列減算値記憶部２６６は、例えば、メモリ、フリップフロップ又はレジスタ等である。列減算値記憶部２６６は、列減算値２を記憶し、列減算値２を剰余回路２６８に対して出力する。列減算値２は、図１５に示された導出式を用いて算出される。列減算値２については図１５を用いて後述する。
【０１７５】
行演算回路２７０は、実施の形態２における行演算回路４４に対応する。行演算回路２７０は、行数記憶部１７４と、行減算値記憶部２７６と、剰余回路２７８とを有する。剰余回路２７８は、剰余演算を行うための回路であって、図１４を用いて後述する構成を有している。剰余回路２７８は、行開始番号記憶部１１４、行数記憶部１７４及び行減算値記憶部２７６からの出力値から行開始番号を算出し、行開始番号記憶部１１４に対して出力する。
【０１７６】
行減算値記憶部２７６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行減算値記憶部２７６は、行減算値２を記憶し、行減算値２を剰余回路２７８に対して出力する。行減算値２は、図１５に示された導出式を用いて算出される。行減算値２については図１５を用いて後述する。
【０１７７】
列演算回路２８０は、実施の形態２における列演算回路４６に対応する。列演算回路２８０は、列数記憶部１８４と、補正減算値記憶部２８６と、剰余回路２８８とを有する。剰余回路２８８は、剰余演算を行うための回路であって、図１４を用いて後述する構成を有している。剰余回路２８８は、剰余回路２６８、列数記憶部１８４及び補正減算値記憶部２８６からの出力値から第２の列開始番号値を算出し、選択回路１２２に対して出力する。
【０１７８】
補正減算値記憶部２８６は、例えば、メモリ、フリップフロップ又はレジスタ等である。補正減算値記憶部２８６は、補正減算値を記憶し、補正減算値を剰余回路２８８に対して出力する。補正減算値記憶部２８６に記憶された補正減算値は、補正減算値記憶部２５６に記憶された補正減算値と同様である。
【０１７９】
図１４は、剰余回路２３８，２４８，２５８，２６８，２７８，２８８（以下「剰余回路２３８等」と称する）の構成を示す図である。図１４に示すように、剰余回路２３８等は、加減算器２９２、符号判定器２９４、選択回路２９６及び加減算器２９８を有する。
【０１８０】
加減算器２９２は、端子Ｉｄｘから受け付けたインデックス（列番号、行番号、第１の行番号値、列開始番号、行開始番号及び第１の列開始番号値）から、端子Ｓから受け付けた減算値（列減算値、行減算値、補正減算値、列減算値２及び行減算値２）を減算する。さらに、加減算器２９２は、減算結果（Ｉｄｘ−Ｓ）を、符号判定器２９４及び加減算器２９８に対して出力する。
【０１８１】
符号判定器２９４は、加減算器２９２からの減算結果（Ｉｄｘ−Ｓ）の符号（正、負又は０）を判定する。これにより、符号判定器２９４は、減算結果（Ｉｄｘ−Ｓ）が０以上であるか否かを判定する。符号判定器２９４は、減算結果（Ｉｄｘ−Ｓ）が０以上である場合、つまり減算結果（Ｉｄｘ−Ｓ）が正又は０である場合に、１を示す信号を、選択回路２９６及び端子Ｃに対して出力する。一方、符号判定器２９４は、減算結果（Ｉｄｘ−Ｓ）が０より小さい場合、つまり減算結果（Ｉｄｘ−Ｓ）が負である場合に、０を示す信号を、選択回路２９６及び端子Ｃに対して出力する。
【０１８２】
選択回路２９６は、端子１から０を示す信号（０値）を受け付け、端子０から除数（Ｂ）を受け付ける。選択回路２９６は、符号判定器２９４から０を示す信号を選択信号として受け付けた場合に、除数（Ｂ）を加減算器２９８に対して出力する。一方、選択回路２９６は、符号判定器２９４から１を示す信号を選択信号として受け付けた場合に、０値を加減算器２９８に対して出力する。
【０１８３】
加減算器２９８は、加減算器２９２からの減算結果（Ｉｄｘ−Ｓ）と、選択回路２９６の出力値とを加算し、減算結果を端子Ｏに対して出力する。
剰余回路２３８等は、端子Ｏから出力値を出力する。さらに、剰余回路２４８，２７８は、端子Ｃから補正選択信号を出力する。
【０１８４】
図１５は、各パラメータとその導出式とを例示する図である。なお、各パラメータは、インターリーブ装置２００の内部又は外部に設けられた算出回路（図示せず）によって算出されてもよい。さらに、その算出回路が、各パラメータを、各パラメータが記憶される記憶部に設定するようにしてもよい。
【０１８５】
列減算値は、ｍ−（（ｍｉ＋ｍｊ×ｎｉ）ｍｏｄ  ｍ）で示される導出式から算出される。この導出式は、列数ｍから、実施の形態３にかかる列加算値（（ｍｉ＋ｍｊ×ｎｉ）ｍｏｄ  ｍ）を減算することによって得られる。
行減算値は、ｎ−ｎｉで示される導出式から算出される。この導出式は、行数ｎから、実施の形態３にかかる行加算値（ｎｉ）を減算することによって得られる。
補正減算値は、（ｎ×ｍｊ）ｍｏｄ  ｍで示される導出式から算出される。この導出式は、列数ｍから、実施の形態３にかかる補正加算値（ｍ−（（ｎ×ｍｊ）ｍｏｄ  ｍ））を減算することによって得られる。
【０１８６】
列減算値２は、ｍ−（（ｍｊ×ｎｊ）ｍｏｄ  ｍ）で示される導出式から算出される。この導出式は、列数ｍから、実施の形態３にかかる列加算値２（（ｍｊ×ｎｊ）ｍｏｄ  ｍ）を減算することによって得られる。
行減算値２は、ｎ−ｎｊで示される導出式から算出される。この導出式は、行数ｎから、実施の形態３にかかる行加算値２（ｎｊ）を減算することによって得られる。
【０１８７】
つまり、実施の形態４にかかる列に関するパラメータ（列減算値、列減算値２、補正減算値）については、それぞれ、実施の形態３にかかる対応するパラメータ（列加算値、列加算値２、補正加算値）を、列数から予め減算しておくことによって得られる。同様に、実施の形態４にかかる行に関するパラメータ（行減算値、行減算値２）については、それぞれ、実施の形態３にかかる対応するパラメータ（行加算値、行加算値２）を、行数から予め減算しておくことによって得られる。これによって、後述するように、比較処理が不要となる。
【０１８８】
次に、実施の形態４にかかるインターリーブ装置２００におけるインターリーブ処理について説明する。図１６は、実施の形態４にかかる列毎の処理（Ｓ３１０）を示す図である。また、図１７は、実施の形態４にかかる行毎の処理（Ｓ３４０）を示す図である。実施の形態４にかかるインターリーブ処理は、図８に示された、実施の形態３にかかるインターリーブ処理（Ｓ２０）において、列毎の処理（Ｓ２１０）を図１６に示す列毎の処理（Ｓ３１０）に置き換え、行毎の処理（Ｓ２４０）を図１７に示す行毎の処理（Ｓ３４０）に置き換えたものである。したがって、以下の実施の形態４にかかるインターリーブ処理の説明においては、インターリーブ処理全体の説明（Ｓ２０に対応）については省略する。
【０１８９】
図１６を用いて、列毎の処理について説明する。
列演算回路２３０は、列番号記憶部１２４に設定された列番号から、列減算値を減算する（Ｓ３１２）。具体的には、列演算回路２３０の剰余回路２３８は、端子Ｓから、列減算値記憶部２３６に記憶された列減算値を受け付ける。また、剰余回路２３８は、端子Ｉｄｘから、列番号記憶部１２４に記憶された列番号を受け付ける。そして、剰余回路２３８の加減算器２９２は、端子Ｉｄｘから受け付けた列番号から、端子Ｓから受け付けた列減算値を減算する。そして、加減算器２９２は、減算結果を、減算後の列番号として出力する。
【０１９０】
列演算回路２３０は、Ｓ３１２の処理による減算後の列番号が０以上であるか否かを判断する（Ｓ３１４）。具体的には、剰余回路２３８の符号判定器２９４は、Ｓ３１２の処理による減算後の列番号の符号を判定することによって、減算後の列番号が０以上であるか否かを判定する。
【０１９１】
Ｓ３１２の処理による減算後の列番号が０より小さい場合（Ｓ３１４のＮＯ）、列演算回路２３０は、Ｓ３１２の処理による減算後の列番号と、列数ｍとを加算し、加算結果を出力する（Ｓ３１６）。具体的には、このとき、剰余回路２３８の符号判定器２９４は、０を示す選択信号を、剰余回路２３８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された列数ｍ（除数）を、剰余回路２３８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３１２の処理による減算後の列番号）と、列数ｍ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。剰余回路２３８は、この出力値（第１の列番号値）を、剰余回路２５８と選択回路１２０の端子０とに出力する。
【０１９２】
一方、Ｓ３１２の処理による減算後の列番号が０以上である場合（Ｓ３１４のＹＥＳ）、列演算回路２３０は、Ｓ３１６の処理を行わないで、Ｓ３１２の処理による減算後の列番号を出力する。具体的には、このとき、剰余回路２３８の符号判定器２９４は、１を示す選択信号を、剰余回路２３８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路２３８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３１２の処理による減算後の列番号）と０値とを加算する（つまり何もしない）。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。つまり、加減算器２９８は、Ｓ３１２の処理による減算後の列番号を、端子Ｏから出力する。剰余回路２３８は、この出力値（第１の列番号値）を、剰余回路２５８と選択回路１２０の端子０とに出力する。
【０１９３】
行演算回路２４０は、行番号記憶部１２６に設定された行番号から、行減算値を減算する（Ｓ３１８）。具体的には、行演算回路２４０の剰余回路２４８は、端子Ｓから、行減算値記憶部２４６に記憶された行減算値を受け付ける。また、剰余回路２４８は、端子Ｉｄｘから、行番号記憶部１２６に記憶された行番号を受け付ける。そして、剰余回路２４８の加減算器２９２は、端子Ｉｄｘから受け付けた行番号から、端子Ｓから受け付けた行減算値を減算する。そして、加減算器２９２は、減算結果を、減算後の行番号として出力する。
【０１９４】
行演算回路２４０は、Ｓ３１８の処理による減算後の行番号が０以上であるか否かを判断する（Ｓ３２０）。具体的には、剰余回路２４８の符号判定器２９４は、Ｓ３１８の処理による減算後の行番号の符号を判定することによって、減算後の行番号が０以上であるか否かを判定する。
【０１９５】
Ｓ３１８の処理による減算後の行番号が０よりも小さい場合（Ｓ３２０のＮＯ）、行演算回路２４０は、Ｓ３１８の処理による減算後の行番号と行数ｎとを加算し、加算結果を出力する（Ｓ３２２）。具体的には、このとき、剰余回路２４８の符号判定器２９４は、０を示す選択信号を、剰余回路２４８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された行数ｎ（除数）を、剰余回路２４８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３１８の処理による減算後の行番号）と、行数ｎ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。この出力された行番号は、選択回路１１８の端子０に入力される。このとき、選択回路１１８は、制御回路１０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された行番号Ｊを、行番号記憶部１２６に対して出力する。
【０１９６】
さらにこのとき、剰余回路２４８の符号判定器２９４は、０を示す選択信号を、端子Ｃに対して出力する。剰余回路２４８は、端子Ｃから、０を示す補正選択信号を、選択回路１２０に対して出力する。したがって、選択回路１２０は、端子０に入力された剰余回路２３８の出力値（第１の列番号値）を選択し、選択回路１１６の端子０に対して出力する。このとき、選択回路１１６は、制御回路１０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された、列番号Ｉ（第１の列番号値）を、列番号記憶部１２４に対して出力する。
【０１９７】
このように、Ｓ３１８の処理による減算後の行番号が０よりも小さい場合（Ｓ３２０のＮＯ）、後述するＳ３２４〜Ｓ３２８の処理を行わないで、Ｓ３１０の処理が終了する。そして、上述した図８のＳ２０６の処理において、インターリーブ装置２００は、行番号記憶部１２６に記憶された行番号Ｊと、列番号記憶部１２４に記憶された列番号Ｉ（第１の列番号値）とに基づいて、データを並び替える。
【０１９８】
一方、Ｓ３１８の処理による減算後の行番号が０以上である場合（Ｓ３２０のＹＥＳ）、行演算回路２４０は、Ｓ３１８の処理による減算後の行番号を出力する。具体的には、このとき、剰余回路２４８の符号判定器２９４は、１を示す選択信号を、剰余回路２４８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路２４８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３１８の処理による減算後の行番号）に０値を加算する（つまり何もしない）。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。つまり、剰余回路２４８は、Ｓ３１８の処理による減算後の行番号を、端子Ｏから出力する。この出力された行番号は、選択回路１１８の端子０に入力される。このとき、選択回路１１８は、制御回路１０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された行番号Ｊを、行番号記憶部１２６に対して出力する。
【０１９９】
さらにこのとき、剰余回路２４８の符号判定器２９４は、１を示す選択信号を、端子Ｃに対して出力する。剰余回路２４８は、端子Ｃから、１を示す補正選択信号を、選択回路１２０に対して出力する。
【０２００】
列演算回路２５０は、剰余回路２３８からの出力値である列番号（第１の列番号値）から、補正減算値を減算する（Ｓ３２４）。具体的には、列演算回路２５０の剰余回路２５８は、端子Ｓから、補正減算値記憶部２５６に記憶された補正減算値を受け付ける。また、剰余回路２５８は、端子Ｉｄｘから、剰余回路２３８からの出力値である列番号（第１の列番号値）を受け付ける。そして、剰余回路２５８の加減算器２９２は、端子Ｉｄｘから受け付けた第１の列番号値から、端子Ｓから受け付けた補正加算値を減算する。そして、加減算器２９２は、減算結果を、減算後の列番号として出力する。
【０２０１】
列演算回路２５０は、Ｓ３２４の処理による減算後の列番号が０以上であるか否かを判断する（Ｓ３２６）。具体的には、剰余回路２５８の符号判定器２９４は、Ｓ３２４の処理による減算後の列番号の符号を判定することによって、減算後の列番号が０以上であるか否かを判定する。
【０２０２】
Ｓ３２４の処理による減算後の列番号が０より小さい場合（Ｓ３２６のＮＯ）、列演算回路２５０は、Ｓ３２４の処理による減算後の列番号と、列数ｍとを加算し、加算結果を出力する（Ｓ３２８）。具体的には、このとき、剰余回路２５８の符号判定器２９４は、０を示す選択信号を、剰余回路２５８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された列数ｍ（除数）を、剰余回路２５８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３２４の処理による減算後の列番号）と、列数ｍ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。剰余回路２５８は、この出力値（第２の列番号値）を、選択回路１２０の端子１に出力する。
【０２０３】
一方、Ｓ３２４の処理による減算後の列番号が０以上である場合（Ｓ３２６のＹＥＳ）、列演算回路２５０は、Ｓ３２８の処理を行わないで、Ｓ３２４の処理による減算後の列番号を出力する。具体的には、このとき、剰余回路２５８の符号判定器２９４は、１を示す選択信号を、剰余回路２５８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路２５８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３２４の処理による減算後の列番号）と０値とを加算する（つまり何もしない）。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。つまり、加減算器２９８は、Ｓ３２４の処理による減算後の列番号を、端子Ｏから出力する。剰余回路２５８は、この出力値（第２の列番号値）を、選択回路１２０の端子１に出力する。
【０２０４】
また、このとき（Ｓ３２６のＹＥＳ及びＮＯの場合）、選択回路１２０は、剰余回路２４８から、１を示す補正選択信号を受け付けている。したがって、選択回路１２０は、端子１に入力された剰余回路２５８からの出力値（第２の列番号値）を選択し、選択回路１１６の端子０に対して出力する。このとき、選択回路１１６は、制御回路１０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された、列番号Ｉ（第２の列番号値）を、列番号記憶部１２４に対して出力する。
【０２０５】
このように、Ｓ３１８の処理による減算後の行番号が０以上の場合（Ｓ３２０のＹＥＳ）、Ｓ３２４〜Ｓ３２８の処理の処理を経て、Ｓ３１０の処理が終了する。そして、上述した図８のＳ２０６の処理において、インターリーブ装置２００は、行番号記憶部１２６に記憶された行番号Ｊと、列番号記憶部１２４に記憶された列番号Ｉ（第２の列番号値）とに基づいて、データを並び替える。
【０２０６】
次に、図１７を用いて、行毎の処理（各行の先頭列に対する処理）について説明する。
列演算回路２６０は、列開始番号記憶部１１２に設定された列開始番号から、列減算値２を減算する（Ｓ３４２）。具体的には、列演算回路２６０の剰余回路２６８は、端子Ｓから、列減算値記憶部２６６に記憶された列減算値２を受け付ける。また、剰余回路２６８は、端子Ｉｄｘから、列開始番号記憶部１１２に記憶された列開始番号を受け付ける。そして、剰余回路２６８の加減算器２９２は、端子Ｉｄｘから受け付けた列開始番号から、端子Ｓから受け付けた列減算値２を減算する。そして、加減算器２９２は、減算結果を、減算後の列開始番号として出力する。
【０２０７】
列演算回路２６０は、Ｓ３４２の処理による減算後の列開始番号が０以上であるか否かを判断する（Ｓ３４４）。具体的には、剰余回路２６８の符号判定器２９４は、Ｓ３４２の処理による減算後の列開始番号の符号を判定することによって、減算後の列開始番号が０以上であるか否かを判定する。
【０２０８】
Ｓ３４２の処理による減算後の列開始番号が０より小さい場合（Ｓ３４４のＮＯ）、列演算回路２６０は、Ｓ３４２の処理による減算後の列開始番号と、列数ｍとを加算し、加算結果を出力する（Ｓ３４６）。具体的には、このとき、剰余回路２６８の符号判定器２９４は、０を示す選択信号を、剰余回路２６８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された列数ｍ（除数）を、剰余回路２６８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３４２の処理による減算後の列開始番号）と、列数ｍ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。剰余回路２６８は、この出力値（第１の列開始番号値）を、剰余回路２８８と選択回路１２２の端子０とに出力する。
【０２０９】
一方、Ｓ３４２の処理による減算後の列開始番号が０以上である場合（Ｓ３４４のＹＥＳ）、列演算回路２６０は、Ｓ３４６の処理を行わないで、Ｓ３４２の処理による減算後の列開始番号を出力する。具体的には、このとき、剰余回路２６８の符号判定器２９４は、１を示す選択信号を、剰余回路２６８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路２６８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３４２の処理による減算後の列開始番号）と０値とを加算する（つまり何もしない）。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。つまり、加減算器２９８は、Ｓ３４２の処理による減算後の列開始番号を、端子Ｏから出力する。剰余回路２６８は、この出力値（第１の列開始番号値）を、剰余回路２８８と選択回路１２２の端子０とに出力する。
【０２１０】
行演算回路２７０は、行開始番号記憶部１１４に設定された行開始番号から、行減算値２を減算する（Ｓ３４８）。具体的には、行演算回路２７０の剰余回路２７８は、端子Ｓから、行減算値記憶部２７６に記憶された行減算値２を受け付ける。また、剰余回路２７８は、端子Ｉｄｘから、行開始番号記憶部１１４に記憶された行開始番号を受け付ける。そして、剰余回路２７８の加減算器２９２は、端子Ｉｄｘから受け付けた行開始番号から、端子Ｓから受け付けた行減算値２を減算する。そして、加減算器２９２は、減算結果を、減算後の行開始番号として出力する。
【０２１１】
行演算回路２７０は、Ｓ３４８の処理による減算後の行開始番号が０以上であるか否かを判断する（Ｓ３５０）。具体的には、剰余回路２７８の符号判定器２９４は、Ｓ３４８の処理による減算後の行開始番号の符号を判定することによって、減算後の行開始番号が０以上であるか否かを判定する。
【０２１２】
Ｓ３４８の処理による減算後の行開始番号が０よりも小さい場合（Ｓ３５０のＮＯ）、行演算回路２７０は、Ｓ３４８の処理による減算後の行開始番号と行数ｎとを加算し、加算結果を出力する（Ｓ３５２）。具体的には、このとき、剰余回路２７８の符号判定器２９４は、０を示す選択信号を、剰余回路２７８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された行数ｎ（除数）を、剰余回路２７８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３４８の処理による減算後の行開始番号）と、行数ｎ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。この出力された行開始番号は、行開始番号記憶部１１４に入力される。このとき、選択回路１１８は、制御回路１０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された行開始番号を、行番号記憶部１２６に対して出力する。
【０２１３】
さらにこのとき、剰余回路２７８の符号判定器２９４は、０を示す選択信号を、端子Ｃに対して出力する。剰余回路２７８は、端子Ｃから、０を示す補正選択信号を、選択回路１２２に対して出力する。したがって、選択回路１２２は、端子０に入力された剰余回路２６８の出力値（第１の列開始番号値）を選択し、列開始番号記憶部１１２に対して出力する。列開始番号記憶部１１２は、剰余回路２６８の出力値（第１の列開始番号値）を、選択回路１１６の端子１に対して出力する。このとき、選択回路１１６は、制御回路１０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された、列開始番号（第１の列開始番号値）を、列番号記憶部１２４に対して出力する。
【０２１４】
このように、Ｓ３４８の処理による減算後の行開始番号が０よりも小さい場合（Ｓ３５０のＮＯ）、後述するＳ３５４〜Ｓ３５８の処理を行わないで、Ｓ３４０の処理が終了する。そして、上述した図８のＳ２０６の処理において、インターリーブ装置２００は、行番号記憶部１２６に記憶された行開始番号と、列番号記憶部１２４に記憶された列開始番号（第１の列開始番号値）とに基づいて、データを並び替える。
【０２１５】
一方、Ｓ３４８の処理による減算後の行開始番号が、行数ｎ以上である場合（Ｓ３５０のＹＥＳ）、行演算回路２７０は、Ｓ３４８の処理による減算後の行開始番号を出力する。具体的には、このとき、剰余回路２７８の符号判定器２９４は、１を示す選択信号を、剰余回路２７８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路２７８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３４８の処理による減算後の行開始番号）に０値を加算する（つまり何もしない）。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。つまり、剰余回路２７８は、Ｓ３４８の処理による減算後の行開始番号を、端子Ｏから出力する。この出力された行開始番号は、行開始番号記憶部１１４を経て、選択回路１１８の端子１に入力される。このとき、選択回路１１８は、制御回路１０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された行開始番号を、行番号記憶部１２６に対して出力する。
【０２１６】
さらにこのとき、剰余回路２７８の符号判定器２９４は、１を示す選択信号を、端子Ｃに対して出力する。剰余回路２７８は、端子Ｃから、１を示す補正選択信号を、選択回路１２２に対して出力する。
【０２１７】
列演算回路２８０は、剰余回路２６８からの出力値である列番号（第１の列開始番号値）から、補正減算値を減算する（Ｓ３５４）。具体的には、列演算回路２８０の剰余回路２８８は、端子Ｓから、補正減算値記憶部２８６に記憶された補正減算値を受け付ける。また、剰余回路２８８は、端子Ｉｄｘから、剰余回路２６８からの出力値である列番号（第１の列開始番号値）を受け付ける。そして、剰余回路２８８の加減算器２９２は、端子Ｉｄｘから受け付けた第１の列開始番号値から、端子Ｓから受け付けた補正加算値を減算する。そして、加減算器２９２は、減算結果を、減算後の列開始番号として出力する。
【０２１８】
列演算回路２８０は、Ｓ３５４の処理による減算後の列開始番号が０以上であるか否かを判断する（Ｓ３５６）。具体的には、剰余回路２８８の符号判定器２９４は、Ｓ３５４の処理による減算後の列開始番号の符号を判定することによって、減算後の列開始番号が０以上であるか否かを判定する。
【０２１９】
Ｓ３５４の処理による減算後の列開始番号が０より小さい場合（Ｓ３５６のＮＯ）、列演算回路２８０は、Ｓ３５４の処理による減算後の列開始番号と、列数ｍとを加算し、加算結果を出力する（Ｓ３５８）。具体的には、このとき、剰余回路２８８の符号判定器２９４は、０を示す選択信号を、剰余回路２８８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された列数ｍ（除数）を、剰余回路２８８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３５４の処理による減算後の列開始番号）と、列数ｍ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。剰余回路２８８は、この出力値（第２の列開始番号値）を、選択回路１２２の端子１に出力する。
【０２２０】
一方、Ｓ３５４の処理による減算後の列開始番号が０以上である場合（Ｓ３５６のＹＥＳ）、列演算回路２８０は、Ｓ３５８の処理を行わないで、Ｓ３５４の処理による減算後の列開始番号を出力する。具体的には、このとき、剰余回路２８８の符号判定器２９４は、１を示す選択信号を、剰余回路２８８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路２８８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ３５４の処理による減算後の列開始番号）と０値とを加算する（つまり何もしない）。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。つまり、加減算器２９８は、Ｓ３５４の処理による減算後の列開始番号を、端子Ｏから出力する。剰余回路２８８は、この出力値（第２の列開始番号値）を、選択回路１２２の端子１に出力する。
【０２２１】
また、このとき（Ｓ３５６のＹＥＳ及びＮＯの場合）、選択回路１２２は、剰余回路２７８から、１を示す補正選択信号を受け付けている。したがって、選択回路１２２は、端子１に入力された剰余回路２８８からの出力値（第２の列開始番号値）を選択し、列開始番号記憶部１１２に対して出力する。列開始番号記憶部１１２は、剰余回路２８８の出力値（第２の列開始番号値）を、選択回路１１６の端子１に対して出力する。このとき、選択回路１１６は、制御回路１０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された、列開始番号（第２の列開始番号値）を、列番号記憶部１２４に対して出力する。
【０２２２】
このように、Ｓ３４８の処理による減算後の行開始番号が行数ｎ以上の場合（Ｓ３５０のＹＥＳ）、Ｓ３５４〜Ｓ３５８の処理の処理を経て、Ｓ３４０の処理が終了する。そして、上述した図８のＳ２０６の処理において、インターリーブ装置２００は、行番号記憶部１２６に記憶された行開始番号と、列番号記憶部１２４に記憶された列開始番号（第２の列開始番号値）とに基づいて、データを並び替える。
【０２２３】
上記のように、実施の形態４においても、実施の形態３と同様に、乗算及び除算を行わないで、２次元に配置されたデータの並び替えを行うことができる。
ここで、実施の形態４においては、列に関するパラメータ（列減算値、列減算値２、補正減算値）については、それぞれ、予め、実施の形態３にかかる対応するパラメータ（列加算値、列加算値２、補正加算値）と、列数との差分をとっている。同様に、行に関するパラメータ（行減算値、行減算値２）については、それぞれ、予め、実施の形態３にかかる対応するパラメータ（行加算値、行加算値２）と、行数との差分をとっている。これによって、実施の形態３にかかる比較器１９４における比較処理が不要となる。
【０２２４】
つまり、実施の形態３においては、剰余回路１３８等は、インデックス（列番号又は行番号等）に加算値を加算して、加算結果を除数（列数又は行数）と比較する。一方、実施の形態４においては、剰余回路２３８等は、インデックス（列番号又は行番号等）から減算値を減算して、減算結果を０と比較する。つまり、剰余回路２３８等は、減算結果の正負を示す符号によって直ちに判定を行うことができる。したがって、実施の形態４においては、比較処理が不要となり、比較器１９４が不要となる。これによって、さらに、演算量を抑制し、演算速度を向上させることが可能となる。
【０２２５】
なお、実施の形態３の構成要素の一部と、実施の形態４の構成要素の一部とを、それぞれ、適宜入れ替えてもよい。例えば、実施の形態４において、行演算回路２４０を、図５の行演算回路１４０と置き換えてもよいし、列演算回路２６０を、図５の列演算回路１６０と置き換えてもよい。
【０２２６】
＜実施の形態５＞
次に、実施の形態５について説明する。
図１８は、実施の形態５にかかる通信システム３００を示す図である。図１８に示すように、通信システム３００は、送信デバイスである通信装置３１０と、受信デバイスである通信装置３４０とを有する。通信装置３１０と通信装置３４０とは、電力線３０２を介して通信可能に接続されている。
【０２２７】
通信装置３１０は、誤り訂正エンコーダ３２０と、ＯＦＤＭ変調器３３０とを有する。誤り訂正エンコーダ３２０は、受信したデータに対して、例えばＦＥＣ（Forward Error Correction：前方誤り訂正）符号化等の、誤り訂正符号化を行う。さらに、誤り訂正エンコーダ３２０は、符号化データを、ＯＦＤＭ変調器３３０に対して出力する。ＯＦＤＭ変調器３３０は、誤り訂正エンコーダ３２０から受け付けた符号化データに対して、ＯＦＤＭ形式で変調を行う。さらに、ＯＦＤＭ変調器３３０は、変調されたデータを、電力線３０２を介して、通信装置３４０に対して送信する。
【０２２８】
誤り訂正エンコーダ３２０は、符号化回路３２２と、インターリーブ装置３２４とを有する。符号化回路３２２は、例えば、リード・ソロモン符号化及び畳み込み符号化又はこれらのいずれかのような、誤り訂正符号化を行う。インターリーブ装置３２４は、上述した各実施の形態にかかるインターリーブ装置のいずれかに対応する。つまり、インターリーブ装置３２４は、符号化回路３２２によって符号化され、２次元に配置されたデータを、予め定められた変換式に対応するような位置に並び替える。
なお、符号化回路３２２は、２つの符号化回路（例えば、リード・ソロモン符号化を行う回路及び畳み込み符号化を行う回路）から構成されてもよい。この場合、インターリーブ装置３２４は、この２つの符号化回路の間に設けられてもよい。
【０２２９】
通信装置３４０は、ＯＦＤＭ復調器３５０と、誤り訂正デコーダ３６０とを有する。ＯＦＤＭ復調器３５０は、電力線３０２を介して、通信装置３１０からデータを受信する。さらに、ＯＦＤＭ復調器３５０は、受信データに対してＯＦＤＭ形式で復調を行って、復調されたデータを誤り訂正デコーダ３６０に対して出力する。誤り訂正デコーダ３６０は、ＯＦＤＭ復調器３５０からのデータに対して誤り訂正復号を行って、データを復元する。
【０２３０】
誤り訂正デコーダ３６０は、デインターリーブ装置３６２と、復号回路３６４とを有する。デインターリーブ装置３６２は、以下に説明する各実施の形態にかかるデインターリーブ装置のいずれかに対応する。つまり、デインターリーブ装置３６２は、ＯＦＤＭ復調器３５０によって復調された、インターリーブ装置３２４によって並び替えられ、２次元に配置されたデータを、元の位置に戻すように並び替える。復号回路３６４は、例えば、ビタビ復号及びリード・ソロモン復号又はこれらのいずれかのような、誤り訂正復号処理を行う。
なお、復号回路３６４は、２つの復号回路（例えば、ビタビ復号を行う回路及びリード・ソロモン復号を行う回路）から構成されてもよい。この場合、デインターリーブ装置３６２は、この２つの復号回路の間に設けられてもよい。
【０２３１】
＜デインターリーブ＞
ここで、デインターリーブについて説明する。
インターリーブ装置３２４が、上述した式１及び式２を用いて、位置（ｉ，ｊ）に配置されたデータを位置（Ｉ，Ｊ）に並び替えたとする。このとき、デインターリーブ装置３６２は、位置（Ｉ，Ｊ）に並び替えられたデータを、元の位置（ｉ，ｊ）に戻すように並び替える。このとき、（Ｉ，Ｊ）と（ｉ，ｊ）との関係は、以下の式で表される。
ｉ＝（ｍｉ'×Ｉ＋ｍｊ'×Ｊ）ｍｏｄ  ｍ  （式３）
ｊ＝（ｎｉ'×ｉ＋ｎｊ'×Ｊ）ｍｏｄ  ｎ  （式４）
【０２３２】
ここで、式３は、剰余類上で式２をｉについて解くことによって得られる。また。式４は、剰余類上で式１をｊについて解くことによって得られる。なお、ｍｉ'、ｍｊ'、ｎｉ'及びｎｊ'は、ｎ、ｍ、ｎｉ、ｎｊ、ｍｉ及びｍｊから得られるパラメータである。ｍｉ'、ｍｊ'、ｎｉ'及びｎｊ'については、図２４を用いて後述する。
【０２３３】
以下に説明する各実施の形態にかかるデインターリーブ装置は、２次元にインターリーブされた１ブロックのデータ位置（Ｉ，Ｊ）を、（ｉ，ｊ）に変換し、変換後の位置にデータを並び替えることによって、データを元の位置に戻す。このとき、上述した各実施の形態にかかるインターリーブ装置と同様に、デインターリーブ装置は、１行ごとに０列目のデータから順にデインターリーブを行う。つまり、デインターリーブ装置は、まず０行目のデータのデインターリーブ処理を、データ位置（０，０）、（１，０）、（２，０）、・・・（ｍ−１，０）の順で行う。０行目の最終列（ｍ−１，０）のデータまで処理が終了すると、デインターリーブ装置は、次に、１行目のデータのデインターリーブ処理を、データ位置（０，１）、（１，１）、（２，１）、・・・（ｍ−１，１）の順で行う。このようにして、デインターリーブ装置は、１行ごとにデインターリーブ処理を行っていく。そして、デインターリーブ装置は、ｎ−１行目のデインターリーブ処理を、データ位置（０，ｎ−１）、（１，ｎ−１）、（２，ｎ−１）、・・・（ｍ−１，ｎ−１）の順で行い、処理を終了する。
【０２３４】
なお、以下に説明するように、本実施の形態にかかるインターリーブ装置とデインターリーブ装置とは、同様の構成を有している。したがって、インターリーブ装置内の構成とデインターリーブ装置内の構成とを区別する場合、インターリーブ装置内の構成には「送信側」又は「インターリーブ用」などという用語が付されることがある。同様に、デインターリーブ装置内の構成には「受信側」又は「デインターリーブ用」などという用語が付されることがある。
【０２３５】
ＰＬＣのＧ３規格においては、デインターリーブは、式１及び式２のインターリーブの変換式を用いて、変換テーブルを作成し、インデックスを逆引きすることによって行われる。しかしながら、例えば、列数ｍ＝３６、行数ｎ＝２５５の２次元ブロックの場合、ｍ×ｎ＝９１８０の要素数の変換テーブルが必要となる。したがって、変換テーブルを設けることによって、メモリ量が増大する。
【０２３６】
一方、実施の形態５においては、送信側の通信装置３１０のインターリーブ装置でインターリーブされたデータを、受信側の通信装置３４０のデインターリーブ装置でデインターリーブするように構成されている。これによって、受信側の通信装置３４０において、インターリーブされたデータを元の位置に戻すための変換テーブルを設ける必要がなくなる。したがって、メモリ容量を削減することが可能となる。
【０２３７】
＜実施の形態６＞
次に、実施の形態６について説明する。
図１９は、実施の形態６にかかるデインターリーブ装置５を示す図である。また、図２０は、実施の形態６にかかるデインターリーブ装置５におけるデインターリーブ処理（Ｓ４０）を示すフローチャートである。
【０２３８】
図１９に示すように、デインターリーブ装置５は、制御回路５０と、並び替え回路５２と、位置演算装置６とを有する。位置演算装置６は、行演算回路６２（第１の行演算回路）と、列演算回路６４と、行演算回路６６（第２の行演算回路）と、選択回路６８とを有する。
デインターリーブ装置５は、これらの構成要素により、列数ｍ、行数ｎの２次元ブロックにインターリーブされたデータ位置を、列数ｍ、行数ｎの２次元ブロックにおけるインターリーブ前の元のデータ位置に並び替えるように戻す際の、列毎の処理を行う。
【０２３９】
図２０を用いて、デインターリーブ装置５の動作を説明する。
制御回路５０は、列数ｍ、行数ｎにインターリーブされたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えて元の位置に戻すように、並び替え回路５２及び位置演算装置６を制御する（Ｓ４０２）。具体的には、制御回路５０は、ある行のｋ−１列目のデータについて、そのデータ位置をインターリーブ前の元の位置に並び替え、次に、その行のｋ列目のデータについて、そのデータ位置をインターリーブ前の元の位置に並び替えるように、並び替え回路５２及び位置演算装置６を制御する。
【０２４０】
また、制御回路５０は、ある列の処理が終了するごとに、列カウンタを１つ加算する。同様に、制御回路５０は、ある行の処理が終了するごとに、行カウンタを１つ加算する。なお、以下、ｋ列目の位置にあるデータが処理対象であることを前提に説明する。つまり、ｋ−１列目の位置は、処理対象の１つ前の位置である。
【０２４１】
行演算回路６２は、ｋ−１列目のインターリーブ（並び替え）前に戻された位置の行番号ｊ＿ｋ−１と予め定められた行パラメータとの和に基づいて、第１の行番号値を算出する（Ｓ４０４）。具体的には、例えば、行演算回路６２は、行番号ｊ＿ｋ−１と行パラメータとの和が行数ｎより小さい場合には、行番号ｊ＿ｋ−１と行パラメータとの和を、第１の行番号値として算出してもよい。一方、例えば、行演算回路６２は、行番号ｊ＿ｋ−１と行パラメータとの和が行数ｎ以上である場合には、行番号ｊ＿ｋ−１と行パラメータとの和から行数ｎを減算した値を、第１の行番号値として算出してもよい。なお、行パラメータは、ｎ、ｍ、ｎｉ'、ｎｊ'、ｍｉ'及びｍｊ'から算出されてもよい。
【０２４２】
列演算回路６４は、ｋ−１列目のインターリーブ（並び替え）前に戻された位置の列番号ｉ＿ｋ−１と予め定められた列パラメータｍｐとの和に基づいて、ｋ列目のインターリーブ（並び替え）前に戻された位置の列番号ｉ＿ｋを、並び替え回路５２に対して出力する（Ｓ４０６）。具体的には、列演算回路６４は、列番号ｉ＿ｋ−１と列パラメータｍｐとの和が列数ｍより小さい第１の場合と、当該和が列数ｍ以上の第２の場合とに応じて、列番号ｉ＿ｋを算出する。さらに具体的には、例えば、列演算回路６４は、第１の場合には、列番号ｉ＿ｋ−１と列パラメータｍｐとの和を、列番号ｉ＿ｋとして算出してもよい。一方、例えば、列演算回路６４は、第２の場合には、列番号ｉ＿ｋ−１と列パラメータｍｐとの和から列数ｍを減算した値を、列番号ｉ＿ｋとして算出してもよい。なお、列パラメータｍｐは、ｍ、ｍｉ'及びｍｊ'から算出されてもよい。
【０２４３】
列演算回路６４は、列番号ｉ＿ｋ−１と列パラメータｍｐとの和が列数ｍ以上であるか否かを判断する（Ｓ４０８）。列番号ｉ＿ｋ−１と列パラメータｍｐとの和が列数ｍより小さい場合、つまり第１の場合のとき（Ｓ４０８のＮＯ）、位置演算装置６は、第１の行番号値を、ｋ列目のインターリーブ（並び替え）前に戻された位置の行番号ｊ＿ｋとして、並び替え回路５２に対して出力する（Ｓ４１０）。具体的には、選択回路６８は、行演算回路６２からの出力値である第１の行番号値を、行番号ｊ＿ｋとして選択し、並び替え回路５２に対して出力する。
【０２４４】
一方、列番号ｉ＿ｋ−１と列パラメータｍｐとの和が列数ｍ以上の場合、つまり第２の場合のとき（Ｓ４０８のＹＥＳ）、位置演算装置６は、第１の行番号値と予め定められた補正パラメータとの和に基づいて、行番号ｊ＿ｋを、並び替え回路５２に対して出力する（Ｓ４１２）。具体的には、行演算回路６６は、第１の行番号値と補正パラメータとの和に基づいて、第２の行番号値を算出する。
【０２４５】
さらに具体的には、例えば、行演算回路６６は、第１の行番号値と補正パラメータとの和が行数ｎより小さいときには、第１の行番号と補正パラメータとの和を、第２の行番号値として算出してもよい。一方、例えば、行演算回路６６は、第１の行番号値と補正パラメータとの和が行数ｎ以上のときには、第１の行番号値と補正パラメータとの和から行数ｎを減算した値を、第２の行番号値として算出してもよい。さらに、このとき、選択回路６８は、第２の行番号値を、行番号ｊ＿ｋとして選択し、並び替え回路５２に対して出力する。
なお、補正パラメータは、ｎ、ｍ、ｎｉ’、ｎｊ’、ｍｉ’及びｍｊ’から算出されてもよい。
【０２４６】
並び替え回路５２は、列番号ｉ＿ｋと行番号ｊ＿ｋとに基づいて、処理対象のデータをインターリーブ前の元の位置に並び替える（Ｓ４１４）。具体的には、並び替え回路５２は、インターリーブされた列番号Ｉ＿ｋ，行番号Ｊ＿ｋの位置のデータを、列番号ｉ＿ｋ，行番号ｊ＿ｋの位置に並び替えてもよい。
【０２４７】
実施の形態６においては、実施の形態５と同様に、デインターリーブ装置が、インターリーブされたデータを元の位置に戻すように構成されているので、元の位置に戻すための変換テーブルが不要となる。さらに、実施の形態６においては、実施の形態１にかかるインターリーブ装置１の構成において、実質的に、列を処理する構成要素（列演算回路等）と行を処理する構成要素（行演算回路等）とを入れ替えることによって、デインターリーブ装置を構成することができる。したがって、簡易な方法で、デインターリーブを実現することが可能となる。
【０２４８】
さらに、実施の形態６においては、実施の形態１にかかるインターリーブ装置１と実質的に同様の構成によってデインターリーブ装置を実現しているので、２次元ブロックにインターリーブされたデータのデインターリーブにおいて、乗算及び除算を行うことなく、デインターリーブを行うことができる。また、乗算及び除算を行う必要がないので、２次元ブロックにインターリーブされたデータのデインターリーブにおいて、演算量を抑制することができる。
【０２４９】
＜実施の形態７＞
次に、実施の形態７について説明する。実施の形態７においては、先頭列のデータをデインターリーブする際の処理が、実施の形態６の処理に追加されている。
図２１は、実施の形態７にかかるデインターリーブ装置７を示す図である。また、図２２は、実施の形態７にかかるデインターリーブ装置７におけるデインターリーブ処理（Ｓ４２）を示すフローチャートである。
【０２５０】
図２１に示すように、デインターリーブ装置７は、制御回路５０と、並び替え回路５２と、位置演算装置８とを有する。位置演算装置８は、行演算回路６２（第１の行演算回路）と、列演算回路６４と、行演算回路６６（第２の行演算回路）と、選択回路６８と、選択回路７０と、選択回路７２と、行演算回路８２（第３の行演算回路）と、列演算回路８４（第２の列演算回路）と、行演算回路８６（第４の行演算回路）と、選択回路８８（第２の選択回路）とを有する。
【０２５１】
デインターリーブ装置７は、これらの構成要素により、列数ｍ、行数ｎの２次元ブロックにインターリーブされたデータ位置を、列数ｍ、行数ｎの２次元ブロックにおけるインターリーブ前の元のデータ位置に並び替える際の、列毎及び行毎の処理を行う。具体的には、位置演算装置８のうち、行演算回路６２、列演算回路６４、行演算回路６６、選択回路６８、選択回路７０及び選択回路７２は、列毎の処理を行う。一方、位置演算装置８のうち、行演算回路８２、列演算回路８４、行演算回路８６及び選択回路８８は、行毎の処理を行う。ここで、制御回路５０は、行演算回路８２、列演算回路８４、行演算回路８６及び選択回路８８については、行毎の処理を行う場合にのみ、起動するように制御してもよい。
【０２５２】
図２２を用いて、デインターリーブ装置７の動作を説明する。
デインターリーブ装置７は、実施の形態６にかかるデインターリーブ装置５と同様に、図２０に示した処理Ｓ４０を行う。この際、制御回路５０は、選択回路７０に対し、列演算回路６４からの出力を選択するように制御する。また、制御回路５０は、選択回路７２に対し、選択回路６８からの出力を選択するように制御する。
【０２５３】
制御回路５０は、Ｓ４０の処理の後、次の処理対象がｋ行目の先頭列のデータであるか否かを判断する（Ｓ４２２）。具体的には、制御回路５０は、Ｓ４０の処理の後、カウンタ値から、ｋ−１行目の最終列のデータの処理が終了し、次の処理対象がｋ行目の先頭列のデータであるか否かを判断する。
【０２５４】
次の処理対象が先頭列でない場合（Ｓ４２２のＮＯ）、Ｓ４０の処理が繰り返される。一方、次の処理対象が先頭列である場合（Ｓ４２２のＹＥＳ）、制御回路５０は、行毎の処理を開始する（Ｓ４２４）。具体的には、制御回路５０は、行演算回路８２、列演算回路８４、行演算回路８６及び選択回路８８に対して処理を行うように制御する。また、制御回路５０は、選択回路７０に対し、列演算回路８４からの出力を選択するように制御する。さらに、制御回路５０は、選択回路７２に対し、選択回路８８からの出力を選択するように制御する。
【０２５５】
行演算回路８２は、ｋ−１行目の先頭列のインターリーブ（並び替え）前に戻された位置の行番号ｊｓ＿ｋ−１（ｋ−１行目行開始番号）と予め定められた第２の行パラメータとの和に基づいて、第１の行開始番号値を算出する（Ｓ４２６）。具体的には、例えば、行演算回路８２は、行開始番号ｊｓ＿ｋ−１と第２の行パラメータとの和が行数ｎより小さい場合には、行開始番号ｊｓ＿ｋ−１と第２の行パラメータとの和を、第１の行開始番号値として算出してもよい。一方、例えば、行演算回路８２は、行開始番号ｊｓ＿ｋ−１と第２の行パラメータとの和が行数ｎ以上である場合には、行開始番号ｊｓ＿ｋ−１と行パラメータとの和から行数ｎを減算した値を、第１の行開始番号値として算出してもよい。なお、第２の行パラメータは、ｎ、ｍ、ｎｉ'、ｎｊ'、ｍｉ'及びｍｊ'から算出されてもよい。
【０２５６】
位置演算装置８は、ｋ−１行目の先頭列のインターリーブ（並び替え）前に戻された位置の列番号ｉｓ＿ｋ−１（ｋ−１行目列開始番号）と予め定められた列パラメータｍｐ２との和に基づいて、ｋ行目の先頭列の位置の並び替え後の列番号ｉｓ＿ｋ（ｋ行目列開始番号）を、並び替え回路５２に対して出力する（Ｓ４２８）。具体的には、列演算回路８４は、列開始番号ｉｓ＿ｋ−１と列パラメータｍｐ２との和に基づいて、列開始番号ｉｓ＿ｋを算出し、選択回路７０に出力する。選択回路７０は、列演算回路８４からの出力を選択するように制御されているので、列演算回路８４からの出力値である列開始番号ｉｓ＿ｋを選択し、並び替え回路５２に対して出力する。
【０２５７】
さらに具体的には、列演算回路８４は、列開始番号ｉｓ＿ｋ−１と列パラメータｍｐ２との和が列数ｍより小さい第３の場合と、当該和が列数ｍ以上の第４の場合とに応じて、列開始番号ｉｓ＿ｋを算出する。例えば、列演算回路８４は、第３の場合には、列開始番号ｉｓ＿ｋ−１と列パラメータｍｐ２との和を、列開始番号ｉｓ＿ｋとして算出してもよい。一方、例えば、列演算回路８４は、第４の場合には、列開始番号ｉｓ＿ｋ−１と列パラメータｍｐ２との和から列数ｍを減算した値を、列開始番号ｉｓ＿ｋとして算出してもよい。なお、列パラメータｍｐ２は、ｍ、ｍｉ'及びｍｊ'から算出されてもよい。
【０２５８】
列演算回路８４は、列開始番号ｉｓ＿ｋ−１と列パラメータｍｐ２との和が列数ｍ以上であるか否かを判断する（Ｓ４３０）。列開始番号ｉｓ＿ｋ−１と列パラメータｍｐ２との和が列数ｍより小さい場合、つまり第３の場合のとき（Ｓ４３０のＮＯ）、位置演算装置８は、第１の行開始番号値を、ｋ行目の先頭列のインターリーブ（並び替え）前に戻された位置の行開始番号ｊｓ＿ｋとして、並び替え回路５２に対して出力する（Ｓ４３２）。具体的には、選択回路８８は、行演算回路８２からの出力値である第１の行開始番号値を、行開始番号ｊｓ＿ｋとして選択し、選択回路７２に対して出力する。選択回路７２は、選択回路８８からの出力を選択するように制御されているので、選択回路８８からの出力値である行開始番号ｊｓ＿ｋを選択し、並び替え回路５２に対して出力する。
【０２５９】
一方、列開始番号ｉｓ＿ｋ−１と列パラメータｍｐ２との和が列数ｍ以上の場合、つまり第４の場合のとき（Ｓ４３０のＹＥＳ）、位置演算装置８は、第１の行開始番号値と予め定められた補正パラメータとの和に基づいて、行開始番号ｊｓ＿ｋを、並び替え回路５２に対して出力する（Ｓ４３４）。具体的には、行演算回路８６は、第１の行開始番号値と補正パラメータとの和に基づいて、第２の行開始番号値を算出する。
【０２６０】
さらに具体的には、例えば、行演算回路８６は、第１の行開始番号値と補正パラメータとの和が行数ｎより小さいときには、第１の行開始番号と補正パラメータとの和を、第２の行開始番号値として算出してもよい。一方、例えば、行演算回路８６は、第１の行開始番号値と補正パラメータとの和が行数ｎ以上のときには、第１の行開始番号値と補正パラメータとの和から行数ｎを減算した値を、第２の行開始番号値として算出してもよい。さらに、このとき、選択回路８８は、第２の行開始番号値を、行開始番号ｊｓ＿ｋとして選択し、選択回路７２に対して出力する。選択回路７２は、選択回路８８からの出力を選択するように制御されているので、選択回路８８からの出力値である行開始番号ｊｓ＿ｋを選択し、並び替え回路５２に対して出力する。
なお、補正パラメータは、ｎ、ｍ、ｎｉ'、ｎｊ'、ｍｉ'及びｍｊ'から算出されてもよい。
【０２６１】
並び替え回路５２は、列開始番号ｉｓ＿ｋと行開始番号ｊｓ＿ｋとに基づいて、処理対象のデータを並び替える（Ｓ４３６）。具体的には、並び替え回路５２は、インターリーブされた、ｋ行目の先頭列における列番号Ｉ＿ｋ，行番号Ｊ＿ｋ（つまり（０，ｋ））の位置のデータを、列開始番号ｉｓ＿ｋ，行開始番号ｊｓ＿ｋの位置に並び替えてもよい。
【０２６２】
実施の形態７においては、実施の形態５と同様に、デインターリーブ装置が、インターリーブされたデータを元の位置に戻すように構成されているので、元の位置に戻すための変換テーブルが不要となる。さらに、実施の形態７においては、実施の形態２にかかるインターリーブ装置３の構成において、実質的に、列を処理する構成要素（列演算回路等）と行を処理する構成要素（行演算回路等）とを入れ替えることによって、デインターリーブ装置を構成することができる。したがって、各行の先頭列についても、簡易な方法で、デインターリーブを実現することが可能となる。
【０２６３】
さらに、実施の形態７においては、実施の形態２にかかるインターリーブ装置３と実質的に同様の構成によってデインターリーブ装置を実現しているので、２次元ブロックにインターリーブされたデータのデインターリーブにおいて、乗算及び除算を行うことなく、デインターリーブを行うことができる。また、乗算及び除算を行う必要がないので、２次元ブロックにインターリーブされたデータのデインターリーブにおいて、演算量を抑制することができる。
【０２６４】
＜実施の形態８＞
次に、実施の形態８について説明する。実施の形態８においては、実施の形態６及び実施の形態７の構成及び処理が、さらに具体化されている。
【０２６５】
図２３は、実施の形態８にかかるデインターリーブ装置４００を示す図である。図２３に示すように、デインターリーブ装置４００は、制御回路４０２と、並び替え回路４０４と、位置演算装置４１０とを有する。
【０２６６】
制御回路４０２は、実施の形態６及び実施の形態７における制御回路５０に対応する。制御回路４０２は、列数ｍ、行数ｎの２次元ブロックにインターリーブされたデータ位置を、１行ごとに先頭列から最終列へと順に、元の位置に並び替える（デインターリーブする）ように、並び替え回路４０４及び位置演算装置４１０を制御する。制御回路４０２は、ある行のｋ−１列目のデータについて、そのデータ位置をインターリーブ前の元の位置に並び替え、次に、その行のｋ列目のデータについて、そのデータ位置をインターリーブ前の元の位置に並び替えるように、並び替え回路４０４及び位置演算装置４１０を制御する。さらに、制御回路４０２は、ある行の最終列（ｍ−１列目）まで処理が終了したときに、次の行の先頭列（０列目）のデータについて処理を行うように、並び替え回路４０４及び位置演算装置４１０を制御する。制御回路４０２の具体的な処理については後述する。
【０２６７】
位置演算装置４１０は、実施の形態６における位置演算装置６及び実施の形態７における位置演算装置８に対応する。位置演算装置４１０は、後述する構成要素を有する。位置演算装置４１０は、処理対象のデータごとに、インターリーブ前の元の位置の列番号ｉ及び行番号ｊを算出し、並び替え回路４０４に対して出力する。
【０２６８】
並び替え回路４０４は、実施の形態６及び実施の形態７における並び替え回路５２に対応する。並び替え回路４０４は、列数ｍ、行数ｎの２次元ブロックにインターリーブされた、処理対象のデータ（サンプル）を受け付ける。並び替え回路４０４は、位置演算装置４１０から出力された列番号ｉ及び行番号ｊに対応する位置に、処理対象のデータを並び替える（デインターリーブする）。さらに、並び替え回路４０４は、並び替えたデータを、出力先ノードに対して出力する。
【０２６９】
位置演算装置４１０は、行開始番号記憶部４１２と、列開始番号記憶部４１４と、選択回路４１６，４１８，４２０，４２２と、行番号記憶部４２４と、列番号記憶部４２６と、行演算回路４３０と、列演算回路４４０と、行演算回路４５０と、行演算回路４６０と、列演算回路４７０と、行演算回路４８０とを有する。位置演算装置４１０のうち、選択回路４１６，４１８，４２０、行番号記憶部４２４、列番号記憶部４２６、行演算回路４３０、列演算回路４４０及び行演算回路４５０は、列毎の処理を行う。また、行開始番号記憶部４１２、列開始番号記憶部４１４、選択回路４２２、行演算回路４６０、列演算回路４７０及び行演算回路４８０は、行毎の処理を行う。ここで、制御回路４０２は、行開始番号記憶部４１２、列開始番号記憶部４１４、選択回路４２２、行演算回路４６０、列演算回路４７０及び行演算回路４８０については、行毎の処理を行う場合にのみ、起動するように制御してもよい。
【０２７０】
行演算回路４３０は、実施の形態６及び実施の形態７における行演算回路６２に対応する。行演算回路４３０は、行数記憶部４３４と、行減算値記憶部４３６と、剰余回路４３８とを有する。剰余回路４３８は、剰余演算を行うための回路であって、図１４に示した構成を有している。剰余回路４３８は、行番号記憶部４２４、行数記憶部４３４及び行減算値記憶部４３６からの出力値から第１の行番号値を算出し、選択回路４２０及び行演算回路４５０に対して出力する。
【０２７１】
行数記憶部４３４及び行減算値記憶部４３６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行数記憶部４３４は、行数ｎを記憶し、行数ｎを剰余回路４３８に対して出力する。行減算値記憶部４３６は、行減算値を記憶し、行減算値を剰余回路４３８に対して出力する。行減算値は、図２４に示された導出式を用いて算出される。行減算値については図２４を用いて後述する。
【０２７２】
列演算回路４４０は、実施の形態６及び実施の形態７における列演算回路６４に対応する。列演算回路４４０は、列数記憶部４４４と、列減算値記憶部４４６と、剰余回路４４８とを有する。剰余回路４４８は、剰余演算を行うための回路であって、図１４に示した構成を有している。剰余回路４４８は、列番号記憶部４２６、列数記憶部４４４及び列減算値記憶部４４６からの出力値から列番号ｉを算出し、選択回路４１８に対して出力する。
【０２７３】
列数記憶部４４４及び列減算値記憶部４４６は、例えば、メモリ、フリップフロップ又はレジスタ等である。列数記憶部４４４は、列数ｍを記憶し、列数ｍを剰余回路４４８に対して出力する。列減算値記憶部４４６は、列減算値を記憶し、列減算値を剰余回路４４８に対して出力する。列減算値は、図２４に示された導出式を用いて算出される。列減算値については図２４を用いて後述する。
【０２７４】
行演算回路４５０は、実施の形態６及び実施の形態７における行演算回路６６に対応する。行演算回路４５０は、行数記憶部４５４と、補正減算値記憶部４５６と、剰余回路４５８とを有する。剰余回路４５８は、剰余演算を行うための回路であって、図１４に示した構成を有している。剰余回路４５８は、剰余回路４３８、行数記憶部４５４及び補正減算値記憶部４５６からの出力値から第２の行番号値を算出し、選択回路４２０に対して出力する。
【０２７５】
行数記憶部４５４及び補正減算値記憶部４５６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行数記憶部４５４は、行数ｎを記憶し、行数ｎを剰余回路４５８に対して出力する。補正減算値記憶部４５６は、補正減算値を記憶し、補正減算値を剰余回路４５８に対して出力する。補正減算値は、図２４に示された導出式を用いて算出される。補正減算値については図２４を用いて後述する。
【０２７６】
行演算回路４６０は、実施の形態７における行演算回路８２に対応する。行演算回路４６０は、行数記憶部４６４と、行減算値記憶部４６６と、剰余回路４６８とを有する。剰余回路４６８は、剰余演算を行うための回路であって、図１４に示した構成を有している。剰余回路４６８は、行開始番号記憶部４１２、行数記憶部４６４及び行減算値記憶部４６６からの出力値から第１の行開始番号値を算出し、選択回路４２２及び行演算回路４８０に対して出力する。
【０２７７】
行数記憶部４６４及び行減算値記憶部４６６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行数記憶部４６４は、行数ｎを記憶し、行数ｎを剰余回路４６８に対して出力する。行減算値記憶部４６６は、行減算値２を記憶し、行減算値２を剰余回路４６８に対して出力する。行減算値２は、図２４に示された導出式を用いて算出される。行減算値２については図２４を用いて後述する。
【０２７８】
列演算回路４７０は、実施の形態７における列演算回路８４に対応する。列演算回路４７０は、列数記憶部４７４と、列減算値記憶部４７６と、剰余回路４７８とを有する。剰余回路４７８は、剰余演算を行うための回路であって、図１４に示した構成を有している。剰余回路４７８は、列開始番号記憶部４１４、列数記憶部４７４及び列減算値記憶部４７６からの出力値から列開始番号を算出し、列開始番号記憶部４１４に対して出力する。
【０２７９】
列数記憶部４７４及び列減算値記憶部４７６は、例えば、メモリ、フリップフロップ又はレジスタ等である。列数記憶部４７４は、列数ｍを記憶し、列数ｍを剰余回路４７８に対して出力する。列減算値記憶部４７６は、列減算値２を記憶し、列減算値２を剰余回路４７８に対して出力する。列減算値２は、図２４に示された導出式を用いて算出される。列減算値２については図２４を用いて後述する。
【０２８０】
行演算回路４８０は、実施の形態７における行演算回路８６に対応する。行演算回路４８０は、行数記憶部４８４と、補正減算値記憶部４８６と、剰余回路４８８とを有する。剰余回路４８８は、剰余演算を行うための回路であって、図１４に示した構成を有している。剰余回路４８８は、剰余回路４６８、行数記憶部４８４及び補正減算値記憶部４８６からの出力値から第２の行開始番号値を算出し、選択回路４２０に対して出力する。
【０２８１】
行数記憶部４８４及び補正減算値記憶部４８６は、例えば、メモリ、フリップフロップ又はレジスタ等である。行数記憶部４８４は、行数ｎを記憶し、行数ｎを剰余回路４８８に対して出力する。補正減算値記憶部４８６は、補正減算値を記憶し、補正減算値を剰余回路４８８に対して出力する。補正減算値記憶部４８６に記憶された補正減算値は、補正減算値記憶部４５６に記憶された補正減算値と同様である。
【０２８２】
図２４は、各パラメータとその導出式とを例示する図である。なお、各パラメータは、インターリーブ装置４００の内部又は外部に設けられた算出回路（図示せず）によって算出されてもよい。さらに、その算出回路が、各パラメータを、各パラメータが記憶される記憶部に設定するようにしてもよい。
【０２８３】
式３のｍｉ'は、ｍｉ-1  ｍｏｄ  ｍで示される導出式から算出される。ここで、ｍｉ-1は、ｍｉの基数ｍ上の逆数である。つまり、（ｍｉ×ｍｉ-1）ｍｏｄ  ｍ＝１の関係が成り立つ。なお、上述したように、ｍｉとｍとは互いに素であるので、上記関係式が成り立つｍｉ-1は必ず存在する。また、式３のｍｊ'は、（−ｍｉ-1×ｍｊ）ｍｏｄ  ｍで示される導出式から算出される。
【０２８４】
式４のｎｉ'は、（−ｎｉ×ｎｊ-1）ｍｏｄ  ｎで示される導出式から算出される。ここで、ｎｊ-1は、ｎｊの基数ｎ上の逆数である。つまり、（ｎｊ×ｎｊ-1）ｍｏｄ  ｎ＝１の関係が成り立つ。なお、上述したように、ｎｊとｎとは互いに素であるので、上記関係式が成り立つｎｊ-1は必ず存在する。また、式４のｎｊ'は、ｎｊ-1  ｍｏｄ  ｎで示される導出式から算出される。
【０２８５】
列減算値は、ｍ−ｍｉ'で示される導出式から算出される。この導出式は、概略的には、式３において、インターリーブされた位置の列番号Ｉが１つ増加したときの、元の位置の列番号ｉの増分（列パラメータ：ｍｉ'）を、列数ｍから減算することによって得られる。なお、１つ前の（元の位置の）列番号から列減算値を減算した差が０より小さい場合に、剰余回路４４８によって、その差に列数ｍを加算し、そうでない場合には、列数ｍを加算しないように構成されている。言い換えれば、１つ前の列番号とこの増分（列パラメータ）との和が列数ｍ以上となった場合は、剰余回路４４８によって、その和から列数ｍが減算されるように構成されている。
【０２８６】
行減算値は、ｎ−（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）で示される導出式から算出される。この導出式は、概略的には、式３及び式４において、インターリーブされた位置の列番号Ｉが１つ増加したときの、元の位置の行番号ｊの増分（行パラメータ：（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）を、行数ｎから減算することによって得られる。この増分（行パラメータ）は、式４で、ｉ＝ｍｉ'，Ｊ＝０とすることによって得られる。列番号ｉは、列が１つ増加するごとに、（行数ｎ以上とならなければ）ｍｉ'だけ増加する。したがって、式４でｉ＝ｍｉ'とすることによって、行減算値における行パラメータが得られる。なお、１つ前の（元の位置の）行番号から行減算値を減算した差が０より小さい場合に、剰余回路４３８によって、その差に行数ｎを加算し、そうでない場合には、行数ｎを加算しないように構成されている。言い換えれば、１つ前の行番号と行パラメータとの和が行数ｎ以上となった場合には、剰余回路４３８によって、その和から行数ｎが減算されるように構成されている。
【０２８７】
補正減算値は、（ｍ×ｎｉ'）ｍｏｄ  ｎで示される導出式から算出される。この導出式は、概略的には、式３及び式４において、インターリーブされた位置の列番号Ｉ又は行番号Ｊが１つ増加して新たに算出された列番号ｉが、列数ｍよりも大きくなったために、ｍを減算した場合の、当該減算処理を考慮した行番号の補正値（補正パラメータ：ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））を、行数ｎから減算することによって得られる。補正パラメータについては、詳しくは後述する。
【０２８８】
列減算値２は、ｍ−ｍｊ'で示される導出式から算出される。この導出式は、概略的には、式３において、インターリーブされた位置の行番号Ｊが１つ増加したときの、元の位置の列番号ｉの増分（第２の列パラメータ：ｍｊ'）を、列数ｍから減算することによって得られる。なお、１つ前の行の先頭列の元の位置の列番号から列減算値を減算した差が０より小さい場合に、剰余回路４７８によって、その差に列数ｍを加算し、そうでない場合には、列数ｍを加算しないように構成されている。言い換えれば、１つ前の行の先頭列の元の位置の列番号とこの増分（第２の列パラメータ）との和が列数ｍ以上となった場合は、剰余回路４７８によって、その和から列数ｍが減算されるように構成されている。
【０２８９】
行減算値２は、ｎ−（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）で示される導出式から算出される。この導出式は、概略的には、式３及び式４において、インターリーブされた位置の行番号Ｊが１つ増加したときの、元の位置の行番号ｊの増分（第２の行パラメータ：（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）を、行数ｎから減算することによって得られる。この増分（第２の行パラメータ）は、式４で、ｉ＝ｍｊ'，Ｊ＝１とすることによって得られる。列番号ｉは、行（Ｊ）が１つ増加するごとに、（行数ｎ以上とならなければ）ｍｊ'だけ増加する。したがって、式４でｉ＝ｍｊ'とすることによって、行減算値２における第２の行パラメータが得られる。なお、１つ前の（元の位置の）行番号から行減算値２を減算した差が０より小さい場合に、剰余回路４６８によって、その差に行数ｎを加算し、そうでない場合には、行数ｎを加算しないように構成されている。言い換えれば、１つ前の行番号と第２の行パラメータとの和が行数ｎ以上となった場合には、剰余回路４６８によって、その和から行数ｎが減算されるように構成されている。
【０２９０】
つまり、実施の形態８にかかる列減算値及び列減算値２については、それぞれ、列パラメータ及び第２の列パラメータを、列数から予め減算しておくことによって得られる。同様に、実施の形態８にかかる行に関する行減算値、行減算値２及び補正減算値については、それぞれ、行パラメータ、第２の行パラメータ及び補正パラメータを、行数から予め減算しておくことによって得られる。これによって、後述するように、比較処理が不要となる。
【０２９１】
次に、実施の形態８にかかるデインターリーブ装置４００におけるデインターリーブ処理について説明する。図２５〜図２７は、実施の形態８にかかるデインターリーブ装置４００におけるデインターリーブ処理（Ｓ５０）を示すフローチャートである。図２５は、デインターリーブ処理（Ｓ５０）全体を示す。図２６は、列毎の処理（Ｓ５１０）を示す。図２７は、行毎の処理（Ｓ５４０）を示す。なお、図２５に示したデインターリーブ処理（Ｓ５０）については、図８に示した実施の形態３におけるインターリーブ処理とほぼ共通しているので、適宜、説明が省略されている。
【０２９２】
デインターリーブ装置４００は、初期化処理を行う（Ｓ５０２）。具体的には、デインターリーブ装置４００の制御回路４０２は、実施の形態３にかかるＳ２０２の処理と同様にして、行開始番号を０に設定し、列開始番号を０に設定し、行カウンタを０に設定し、列カウンタを０に設定する。
【０２９３】
次に、デインターリーブ装置４００は、行番号を行開始番号に設定し、列番号を列開始番号に設定する（Ｓ５０４）。具体的には、デインターリーブ装置４００の制御回路４０２は、実施の形態３にかかるＳ２０４の処理と同様にして、列番号を列開始番号に設定し、行番号を行開始番号に設定する。
【０２９４】
次に、デインターリーブ装置４００は、行番号ｊ及び列番号ｉを出力し、データを元の位置に並び替える（Ｓ５０６）。具体的には、並び替え回路４０４は、実施の形態３にかかるＳ２０４の処理と同様にして、この処理対象のデータを、受け付けた行番号ｊ及び列番号ｉの位置に並び替える。
【０２９５】
次に、デインターリーブ装置４００は、列毎の処理を行う（Ｓ５１０）。具体的には、位置演算装置４１０の選択回路４１６，４１８，４２０、行番号記憶部４２４、列番号記憶部４２６、行演算回路４３０、列演算回路４４０及び行演算回路４５０が、列毎の処理を行う。具体的な処理については、後述する。
【０２９６】
列毎の処理の後、デインターリーブ装置４００の制御回路４０２は、列カウンタを１増加させる（Ｓ５３２）。次に、デインターリーブ装置４００の制御回路４０２は、列カウンタが列数ｍに等しいか否かを判断する（Ｓ５３４）。列カウンタが列数ｍに等しくない場合（Ｓ５３４のＮＯ）、処理は最終列まで終わっていないので、Ｓ５０６の処理に戻る。これによって、実施の形態３の処理と同様にして、Ｓ５１０の処理によって算出された列番号ｉ及び行番号ｊが、並び替え回路４０４に対して出力される。そして、並び替え回路４０４は、ｍ−１列までのデータについて、元の位置を示す列番号ｉ及び行番号ｊの位置に、処理対象のデータを並び替える（デインターリーブする）。
【０２９７】
一方、Ｓ５３４の処理において列カウンタが列数ｍに等しくなった場合（Ｓ５３４のＹＥＳ）、制御回路４０２は、列カウンタを０にする（Ｓ２３６）。次に、デインターリーブ装置４００は、行毎の処理の処理を行う（Ｓ５４０）。具体的には、制御回路４０２は、位置演算装置４１０の行開始番号記憶部４１２、列開始番号記憶部４１４、選択回路４２２、行演算回路４６０、列演算回路４７０及び行演算回路４８０を起動する。そして、これらの起動された回路が、行毎の処理を行う。具体的な処理については、後述する。
【０２９８】
行毎の処理の後、デインターリーブ装置４００の制御回路４０２は、行カウンタを１増加させる（Ｓ５６２）。次に、デインターリーブ装置４００の制御回路４０２は、行カウンタが行数ｎに等しいか否かを判断する（Ｓ５６４）。行カウンタが行数ｎに等しくない場合（Ｓ５６４のＮＯ）、処理は最終行まで終わっていないので、Ｓ５０４の処理に戻る。そして、実施の形態３にかかる処理と同様に、デインターリーブ装置４００は、行が変わるごとに、０列のデータについて、インターリーブ前の元の位置を示す列番号ｉ（列開始番号）及び行番号ｊ（行開始番号）を算出し、そのデータを並び替える。
一方、Ｓ５６４の処理において、行カウンタが行数ｎに等しくなった場合（Ｓ５６４のＹＥＳ）、処理は最終行まで終わったので、処理は終了する。
【０２９９】
なお、Ｓ５３２〜Ｓ５３６の処理は、Ｓ５１０の前になされてもよい。これによって、列毎の処理を無駄に行うことを避けることができる。同様に、Ｓ５６２〜Ｓ５６４の処理は、Ｓ５４０の前になされてもよい。これによって、行毎の処理を無駄に行うことを避けることができる。
【０３００】
次に、図２６を用いて、列毎の処理について説明する。
行演算回路４３０は、行番号記憶部４２４に設定された行番号から、行減算値を減算する（Ｓ５１２）。具体的には、行演算回路４３０の剰余回路４３８は、端子Ｓから、行減算値記憶部４３６に記憶された行減算値を受け付ける。また、剰余回路４３８は、端子Ｉｄｘから、行番号記憶部４２４に記憶された行番号を受け付ける。そして、剰余回路４３８の加減算器２９２は、端子Ｉｄｘから受け付けた行番号から、端子Ｓから受け付けた行減算値を減算する。そして、加減算器２９２は、減算結果を、減算後の行番号として出力する。
【０３０１】
なお、図２４の導出式及び上述した説明より、行番号から行減算値を減算する（Ｓ５１２）ということは、行番号記憶部４２４に設定された行番号に行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）を加算し、行数ｎを減算することと、同様である。
【０３０２】
行演算回路４３０は、Ｓ５１２の処理による減算後の行番号が０以上であるか否かを判断する（Ｓ５１４）。具体的には、剰余回路４３８の符号判定器２９４は、Ｓ５１２の処理による減算後の行番号の符号を判定することによって、減算後の行番号が０以上であるか否かを判定する。
【０３０３】
なお、図２４及び上述した説明より、Ｓ５１２の処理による減算後の行番号が０以上であるか否かを判断する（Ｓ５１４）ということは、行番号記憶部４２４に設定された行番号と行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）との和が行数ｎ以上であるか否かを判断することと、同様である。
【０３０４】
Ｓ５１２の処理による減算後の行番号が０より小さい場合（Ｓ５１４のＮＯ）、行演算回路４３０は、Ｓ５１２の処理による減算後の行番号と、行数ｎとを加算し、加算結果を出力する（Ｓ５１６）。具体的には、このとき、剰余回路４３８の符号判定器２９４は、０を示す選択信号を、剰余回路４３８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された行数ｎ（除数）を、剰余回路４３８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ５１２の処理による減算後の行番号）と、行数ｎ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。剰余回路４３８は、この出力値（第１の行番号値）を、剰余回路４５８と選択回路４２０の端子０とに出力する。
【０３０５】
なお、図２４及び上述した説明より、Ｓ５１２の処理による減算後の行番号と行数ｎとを加算する（Ｓ５１６）ということは、行番号に行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）を加算し、行数ｎを減算した値に、行数ｎを加算することと、同様である。つまり、Ｓ５１６の処理は、行番号と行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）との和が行数ｎより小さい場合に、行番号と行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）との和を、第１の行番号値として出力することと、同様である。
【０３０６】
一方、Ｓ５１２の処理による減算後の行番号が０以上である場合（Ｓ５１４のＹＥＳ）、行演算回路４３０は、Ｓ５１６の処理を行わないで、Ｓ５１２の処理による減算後の行番号を出力する。具体的には、このとき、剰余回路４３８の符号判定器２９４は、１を示す選択信号を、剰余回路４３８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路４３８の加減算器２９８に対して出力する。したがって、加減算器２９８は、Ｓ５１２の処理による減算後の行番号を、端子Ｏから出力する。剰余回路４３８は、この出力値（第１の行番号値）を、剰余回路４５８と選択回路４２０の端子０とに出力する。
【０３０７】
なお、図２４及び上述した説明より、Ｓ５１６の処理を行わないで、Ｓ５１２の処理による減算後の行番号を出力するということは、行番号に行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）を加算し、行数ｎを減算した値を出力することと、同様である。つまり、Ｓ５１４でＹＥＳの場合は、行番号と行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）との和が行数ｎ以上である場合に、行番号と行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）との和から行数ｎを減算した値を、第１の行番号値として出力することと、同様である。
【０３０８】
列演算回路４４０は、列番号記憶部４２６に設定された列番号から、列減算値を減算する（Ｓ５１８）。具体的には、列演算回路４４０の剰余回路４４８は、端子Ｓから、列減算値記憶部４４６に記憶された列減算値を受け付ける。また、剰余回路４４８は、端子Ｉｄｘから、列番号記憶部４２６に記憶された列番号を受け付ける。そして、剰余回路４４８の加減算器２９２は、端子Ｉｄｘから受け付けた列番号から、端子Ｓから受け付けた列減算値を減算する。そして、加減算器２９２は、減算結果を、減算後の列番号として出力する。
【０３０９】
なお、図２４の導出式及び上述した説明より、列番号から列減算値を減算する（Ｓ５１８）ということは、列番号記憶部４２６に設定された列番号に列パラメータ（ｍｉ'）を加算し、列数ｍを減算することと、同様である。
【０３１０】
列演算回路４４０は、Ｓ５１８の処理による減算後の列番号が０以上であるか否かを判断する（Ｓ５２０）。具体的には、剰余回路４４８の符号判定器２９４は、Ｓ５１８の処理による減算後の列番号の符号を判定することによって、減算後の列番号が０以上であるか否かを判定する。
【０３１１】
なお、図２４及び上述した説明より、Ｓ５１８の処理による減算後の列番号が０以上であるか否かを判断する（Ｓ５２０）ということは、列番号記憶部４２６に設定された列番号と列パラメータ（ｍｉ'）との和が列数ｍ以上であるか否かを判断することと、同様である。
【０３１２】
Ｓ５１８の処理による減算後の列番号が０よりも小さい場合（Ｓ５２０のＮＯ）、列演算回路４４０は、Ｓ５１８の処理による減算後の列番号と列数ｍとを加算し、加算結果を出力する（Ｓ５２２）。具体的には、このとき、剰余回路４４８の符号判定器２９４は、０を示す選択信号を、剰余回路４４８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された列数ｍ（除数）を、剰余回路４４８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ５１８の処理による減算後の列番号）と、列数ｍ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。この出力された列番号は、選択回路４１８の端子０に入力される。このとき、選択回路４１８は、制御回路４０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された列番号ｉを、列番号記憶部４２６に対して出力する。
【０３１３】
なお、図２４及び上述した説明より、Ｓ５１８の処理による減算後の列番号が０よりも小さい場合（Ｓ５２０のＮＯ）とは、列番号と列パラメータとの和が列数ｍよりも小さい場合（第１の場合）と、同様である。さらに、Ｓ５１８の処理による減算後の列番号と列数ｍとを加算するということは、列番号に列パラメータ（ｍｉ'）を加算し、列数ｍを減算した値に、列数ｍを加算することと、同様である。つまり、Ｓ５２２の処理は、列番号と列パラメータ（ｍｉ'）との和が列数ｍより小さい場合（第１の場合）に、列番号と列パラメータ（ｍｉ'）との和を、列番号ｉとして出力することと、同様である。
【０３１４】
さらにこのとき（第１の場合）、剰余回路４４８の符号判定器２９４は、０を示す選択信号を、端子Ｃに対して出力する。剰余回路４４８は、端子Ｃから、０を示す補正選択信号を、選択回路４２０に対して出力する。したがって、選択回路４２０は、端子０に入力された剰余回路４３８の出力値（第１の行番号値）を選択し、選択回路４１６の端子０に対して出力する。このとき、選択回路４１６は、制御回路４０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された、行番号ｊ（第１の行番号値）を、行番号記憶部４２４に対して出力する。
【０３１５】
このように、Ｓ５１８の処理による減算後の列番号が０よりも小さい場合（第１の場合）（Ｓ５２０のＮＯ）、後述するＳ５２４〜Ｓ５２８の処理を行わないで、Ｓ５１０の処理が終了する。そして、上述した図２５のＳ５０６の処理において、デインターリーブ装置４００は、列番号記憶部４２６に記憶された列番号ｉと、行番号記憶部４２４に記憶された行番号ｊ（第１の行番号値）とに基づいて、データを並び替える。
【０３１６】
一方、Ｓ５１８の処理による減算後の列番号が０以上である場合、（Ｓ５２０のＹＥＳ）、列演算回路４４０は、Ｓ５１８の処理による減算後の列番号を出力する。具体的には、このとき、剰余回路４４８の符号判定器２９４は、１を示す選択信号を、剰余回路４４８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路４４８の加減算器２９８に対して出力する。したがって、加減算器２９８は、Ｓ５１８の処理による減算後の列番号を、端子Ｏから出力する。この出力された列番号は、選択回路４１８の端子０に入力される。このとき、選択回路４１８は、制御回路４０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された列番号ｉを、列番号記憶部４２６に対して出力する。
【０３１７】
なお、図２４及び上述した説明より、Ｓ５１８の処理による減算後の列番号が０以上である場合（Ｓ５２０のＹＥＳ）とは、列番号と列パラメータとの和が列数ｍ以上である場合（第２の場合）と、同様である。さらに、Ｓ５１８の処理による減算後の列番号を出力するということは、列番号に列パラメータ（ｍｉ'）を加算し、列数ｍを減算することと、同様である。つまり、Ｓ５２０のＹＥＳの場合の処理は、列番号と列パラメータ（ｍｉ'）との和が列数ｍ以上である場合（第２の場合）に、列番号と列パラメータ（ｍｉ'）との和から、列数ｍを減算した値を、列番号ｉとして出力することと、同様である。
【０３１８】
さらにこのとき、剰余回路４４８の符号判定器２９４は、１を示す選択信号を、端子Ｃに対して出力する。剰余回路４４８は、端子Ｃから、１を示す補正選択信号を、選択回路４２０に対して出力する。
【０３１９】
行演算回路４５０は、剰余回路４３８からの出力値である行番号（第１の行番号値）から、補正減算値を減算する（Ｓ５２４）。具体的には、行演算回路４５０の剰余回路４５８は、端子Ｓから、補正減算値記憶部４５６に記憶された補正減算値を受け付ける。また、剰余回路４５８は、端子Ｉｄｘから、剰余回路４３８からの出力値である行番号（第１の行番号値）を受け付ける。そして、剰余回路４５８の加減算器２９２は、端子Ｉｄｘから受け付けた第１の行番号値から、端子Ｓから受け付けた補正加算値を減算する。そして、加減算器２９２は、減算結果を、減算後の行番号として出力する。
【０３２０】
なお、図２４の導出式及び上述した説明より、第１の行番号値から補正減算値を減算する（Ｓ５２４）ということは、第１の行番号値に補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））を加算し、行数ｎを減算することと、同様である。
【０３２１】
行演算回路４５０は、Ｓ５２４の処理による減算後の行番号が０以上であるか否かを判断する（Ｓ５２６）。具体的には、剰余回路４５８の符号判定器２９４は、Ｓ５２４の処理による減算後の行番号の符号を判定することによって、減算後の行番号が０以上であるか否かを判定する。
【０３２２】
なお、図２４及び上述した説明より、Ｓ５２４の処理による減算後の行番号が０以上であるか否かを判断する（Ｓ５２６）ということは、第１の行番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和が行数ｎ以上であるか否かを判断することと、同様である。
【０３２３】
Ｓ５２４の処理による減算後の行番号が０より小さい場合（Ｓ５２６のＮＯ）、行演算回路４５０は、Ｓ５２４の処理による減算後の行番号と、行数ｎとを加算し、加算結果を出力する（Ｓ５２８）。具体的には、このとき、剰余回路４５８の符号判定器２９４は、０を示す選択信号を、剰余回路４５８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された行数ｎ（除数）を、剰余回路４５８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ５２４の処理による減算後の行番号）と、行数ｎ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。剰余回路４５８は、この出力値（第２の行番号値）を、選択回路４２０の端子１に出力する。
【０３２４】
なお、図２４及び上述した説明より、Ｓ５２４の処理による減算後の行番号と行数ｎとを加算する（Ｓ５２８）ということは、第１の行番号値に補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））を加算し、行数ｎを減算した値に、行数ｎを加算することと、同様である。つまり、Ｓ５２８の処理は、第１の行番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和が行数ｎより小さい場合に、第１の行番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和を、第２の行番号値として出力することと、同様である。
【０３２５】
一方、Ｓ５２４の処理による減算後の行番号が０以上である場合（Ｓ５２６のＹＥＳ）、行演算回路４５０は、Ｓ５２８の処理を行わないで、Ｓ５２４の処理による減算後の行番号を出力する。具体的には、このとき、剰余回路４５８の符号判定器２９４は、１を示す選択信号を、剰余回路４５８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路４５８の加減算器２９８に対して出力する。したがって、加減算器２９８は、Ｓ５２４の処理による減算後の行番号を、端子Ｏから出力する。剰余回路４５８は、この出力値（第２の行番号値）を、選択回路４２０の端子１に出力する。
【０３２６】
なお、図２４及び上述した説明より、Ｓ５２８の処理を行わないで、Ｓ５２４の処理による減算後の行番号を出力するということは、第１の行番号値に補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））を加算し、行数ｎを減算した値を出力することと、同様である。つまり、Ｓ５２６でＹＥＳの場合は、第１の行番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和が行数ｎ以上である場合に、第１の行番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和から行数ｎを減算した値を、第２の行番号値として出力することと、同様である。
【０３２７】
また、このとき（Ｓ５２６のＹＥＳ及びＮＯの場合）、選択回路４２０は、剰余回路４４８から、１を示す補正選択信号を受け付けている。したがって、選択回路４２０は、端子１に入力された剰余回路４５８からの出力値（第２の行番号値）を選択し、選択回路４１６の端子０に対して出力する。このとき、選択回路４１６は、制御回路４０２から０を示す開始番号選択信号を受け付けているので、端子０に入力された、行番号ｊ（第２の行番号値）を、行番号記憶部４２４に対して出力する。
【０３２８】
このように、Ｓ５１８の処理による減算後の列番号が０以上の場合（Ｓ５２０のＹＥＳ）、Ｓ５２４〜Ｓ５２８の処理の処理を経て、Ｓ５１０の処理が終了する。そして、上述した図２５のＳ５０６の処理において、デインターリーブ装置４００は、列番号記憶部４２６に記憶された列番号ｉと、行番号記憶部４２４に記憶された行番号ｊ（第２の行番号値）とに基づいて、データを並び替える。
【０３２９】
次に、図２７を用いて、行毎の処理（各行の先頭列に対する処理）について説明する。
行演算回路４６０は、行開始番号記憶部４１２に設定された行開始番号から、行減算値２を減算する（Ｓ５４２）。具体的には、行演算回路４６０の剰余回路４６８は、端子Ｓから、行減算値記憶部４６６に記憶された行減算値２を受け付ける。また、剰余回路４６８は、端子Ｉｄｘから、行開始番号記憶部４１２に記憶された行開始番号を受け付ける。そして、剰余回路４６８の加減算器２９２は、端子Ｉｄｘから受け付けた行開始番号から、端子Ｓから受け付けた行減算値２を減算する。そして、加減算器２９２は、減算結果を、減算後の行開始番号として出力する。
【０３３０】
なお、図２４の導出式及び上述した説明より、行開始番号から行減算値２を減算する（Ｓ５４２）ということは、行開始番号記憶部４１２に設定された行開始番号に第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）を加算し、行数ｎを減算することと、同様である。
【０３３１】
行演算回路４６０は、Ｓ５４２の処理による減算後の行開始番号が０以上であるか否かを判断する（Ｓ５４４）。具体的には、剰余回路４６８の符号判定器２９４は、Ｓ５４２の処理による減算後の行開始番号の符号を判定することによって、減算後の行開始番号が０以上であるか否かを判定する。
【０３３２】
なお、図２４及び上述した説明より、Ｓ５４２の処理による減算後の行開始番号が０以上であるか否かを判断する（Ｓ５４４）ということは、行開始番号記憶部４１２に設定された行開始番号と第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）との和が行数ｎ以上であるか否かを判断することと、同様である。
【０３３３】
Ｓ５４２の処理による減算後の行開始番号が０より小さい場合（Ｓ５４４のＮＯ）、行演算回路４６０は、Ｓ５４２の処理による減算後の行開始番号と、行数ｎとを加算し、加算結果を出力する（Ｓ５４６）。具体的には、このとき、剰余回路４６８の符号判定器２９４は、０を示す選択信号を、剰余回路４６８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された行数ｎ（除数）を、剰余回路４６８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ５４２の処理による減算後の行開始番号）と、行数ｎ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。剰余回路４６８は、この出力値（第１の行開始番号値）を、剰余回路４８８と選択回路４２２の端子０とに出力する。
【０３３４】
なお、図２４及び上述した説明より、Ｓ５４２の処理による減算後の行開始番号と行数ｎとを加算する（Ｓ５４６）ということは、行開始番号に第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）を加算し、行数ｎを減算した値に、行数ｎを加算することと、同様である。つまり、Ｓ５４６の処理は、行開始番号と第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）との和が行数ｎより小さい場合に、行開始番号と第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）との和を、第１の行開始番号値として出力することと、同様である。
【０３３５】
一方、Ｓ５４２の処理による減算後の行開始番号が０以上である場合（Ｓ５４４のＹＥＳ）、行演算回路４６０は、Ｓ５４６の処理を行わないで、Ｓ５４２の処理による減算後の行開始番号を出力する。具体的には、このとき、剰余回路４６８の符号判定器２９４は、１を示す選択信号を、剰余回路４６８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路４６８の加減算器２９８に対して出力する。したがって、加減算器２９８は、Ｓ５４２の処理による減算後の行開始番号を、端子Ｏから出力する。剰余回路４６８は、この出力値（第１の行開始番号値）を、剰余回路４８８と選択回路４２２の端子０とに出力する。
【０３３６】
なお、図２４及び上述した説明より、Ｓ５４６の処理を行わないで、Ｓ５４２の処理による減算後の行開始番号を出力するということは、行開始番号に第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）を加算し、行数ｎを減算した値を出力することと、同様である。つまり、Ｓ５４４でＹＥＳの場合は、行開始番号と第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）との和が行数ｎ以上である場合に、行開始番号と第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）との和から行数ｎを減算した値を、第１の行開始番号値として出力することと、同様である。
【０３３７】
列演算回路４７０は、列開始番号記憶部４１４に設定された列開始番号から、列減算値２を減算する（Ｓ５４８）。具体的には、列演算回路４７０の剰余回路４７８は、端子Ｓから、列減算値記憶部４７６に記憶された列減算値２を受け付ける。また、剰余回路４７８は、端子Ｉｄｘから、列開始番号記憶部４１４に記憶された列開始番号を受け付ける。そして、剰余回路４７８の加減算器２９２は、端子Ｉｄｘから受け付けた列開始番号から、端子Ｓから受け付けた列減算値２を減算する。そして、加減算器２９２は、減算結果を、減算後の列開始番号として出力する。
【０３３８】
なお、図２４の導出式及び上述した説明より、列開始番号から列減算値２を減算する（Ｓ５４８）ということは、列開始番号記憶部４１４に設定された列開始番号に第２の列パラメータ（ｍｊ'）を加算し、列数ｍを減算することと、同様である。
【０３３９】
列演算回路４７０は、Ｓ５４８の処理による減算後の列開始番号が０以上であるか否かを判断する（Ｓ５５０）。具体的には、剰余回路４７８の符号判定器２９４は、Ｓ５４８の処理による減算後の列開始番号の符号を判定することによって、減算後の列開始番号が０以上であるか否かを判定する。
【０３４０】
なお、図２４及び上述した説明より、Ｓ５４８の処理による減算後の列開始番号が０以上であるか否かを判断する（Ｓ５５０）ということは、列開始番号記憶部４１４に設定された列開始番号と第２の列パラメータ（ｍｊ'）との和が列数ｍ以上であるか否かを判断することと、同様である。
【０３４１】
Ｓ５４８の処理による減算後の列開始番号が０よりも小さい場合（Ｓ５５０のＮＯ）、列演算回路４７０は、Ｓ５４８の処理による減算後の列開始番号と列数ｍとを加算し、加算結果を出力する（Ｓ５５２）。具体的には、このとき、剰余回路４７８の符号判定器２９４は、０を示す選択信号を、剰余回路４７８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された列数ｍ（除数）を、剰余回路４７８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ５４８の処理による減算後の列開始番号）と、列数ｍ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。この出力された列番号は、選択回路４１８の端子０に入力される。このとき、選択回路４１８は、制御回路４０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された列開始番号を、列番号記憶部４２６に対して出力する。
【０３４２】
なお、図２４及び上述した説明より、Ｓ５４８の処理による減算後の列開始番号が０よりも小さい場合（Ｓ５５０のＮＯ）とは、列開始番号と第２の列パラメータ（ｍｊ'）との和が列数ｍよりも小さい場合（第３の場合）と、同様である。さらに、Ｓ５４８の処理による減算後の列開始番号と列数ｍとを加算するということは、列開始番号に第２の列パラメータ（ｍｊ'）を加算し、列数ｍを減算した値に、列数ｍを加算することと、同様である。つまり、Ｓ５５２の処理は、列開始番号と第２の列パラメータ（ｍｊ'）との和が列数ｍより小さい場合（第３の場合）に、列開始番号と第２の列パラメータ（ｍｊ'）との和を、列開始番号として出力することと、同様である。
【０３４３】
さらにこのとき（第３の場合）、剰余回路４７８の符号判定器２９４は、０を示す選択信号を、端子Ｃに対して出力する。剰余回路４７８は、端子Ｃから、０を示す補正選択信号を、選択回路４２２に対して出力する。したがって、選択回路４２２は、端子０に入力された剰余回路４６８の出力値（第１の行開始番号値）を選択し、行開始番号記憶部４１２に対して出力する。行開始番号記憶部４１２は、剰余回路４６８の出力値（第１の行開始番号値）を、選択回路４１６の端子１に対して出力する。このとき、選択回路４１６は、制御回路４０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された、行開始番号（第１の行開始番号値）を、行番号記憶部４２４に対して出力する。
【０３４４】
このように、Ｓ５４８の処理による減算後の列開始番号が０よりも小さい場合（第３の場合）（Ｓ５５０のＮＯ）、後述するＳ５５４〜Ｓ５５８の処理を行わないで、Ｓ５４０の処理が終了する。そして、上述した図２５のＳ５０６の処理において、デインターリーブ装置４００は、列番号記憶部４２６に記憶された列開始番号と、行番号記憶部４２４に記憶された行開始番号（第１の行開始番号値）とに基づいて、データを並び替える。
【０３４５】
一方、Ｓ５４８の処理による減算後の列開始番号が０以上である場合、（Ｓ５５０のＹＥＳ）、列演算回路４７０は、Ｓ５４８の処理による減算後の列開始番号を出力する。具体的には、このとき、剰余回路４７８の符号判定器２９４は、１を示す選択信号を、剰余回路４７８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路４７８の加減算器２９８に対して出力する。したがって、加減算器２９８は、Ｓ５４８の処理による減算後の列開始番号を、端子Ｏから出力する。この出力された列開始番号は、列開始番号記憶部４１４を経て、選択回路４１８の端子１に入力される。このとき、選択回路４１８は、制御回路４０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された列開始番号を、列番号記憶部４２６に対して出力する。
【０３４６】
なお、図２４及び上述した説明より、Ｓ５４８の処理による減算後の列開始番号が０以上である場合（Ｓ５５０のＹＥＳ）とは、列開始番号と第２の列パラメータ（ｍｊ'）との和が列数ｍ以上である場合（第４の場合）と、同様である。さらに、Ｓ５４８の処理による減算後の列開始番号を出力するということは、列開始番号に第２の列パラメータ（ｍｊ'）を加算し、列数ｍを減算することと、同様である。つまり、Ｓ５５０のＹＥＳの場合の処理は、列開始番号と第２の列パラメータ（ｍｊ'）との和が列数ｍ以上である場合（第４の場合）に、列開始番号と第２の列パラメータ（ｍｊ'）との和から、列数ｍを減算した値を、列開始番号として出力することと、同様である。
【０３４７】
さらにこのとき、剰余回路４７８の符号判定器２９４は、１を示す選択信号を、端子Ｃに対して出力する。剰余回路４７８は、端子Ｃから、１を示す補正選択信号を、選択回路４２２に対して出力する。
【０３４８】
行演算回路４８０は、剰余回路４６８からの出力値である行開始番号（第１の行開始番号値）から、補正減算値を減算する（Ｓ５５４）。具体的には、行演算回路４８０の剰余回路４８８は、端子Ｓから、補正減算値記憶部４８６に記憶された補正減算値を受け付ける。また、剰余回路４８８は、端子Ｉｄｘから、剰余回路４６８からの出力値である行開始番号（第１の行開始番号値）を受け付ける。そして、剰余回路４８８の加減算器２９２は、端子Ｉｄｘから受け付けた第１の行開始番号値から、端子Ｓから受け付けた補正加算値を減算する。そして、加減算器２９２は、減算結果を、減算後の行開始番号として出力する。
【０３４９】
なお、図２４の導出式及び上述した説明より、第１の行開始番号値から補正減算値を減算する（Ｓ５５４）ということは、第１の行開始番号値に補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））を加算し、行数ｎを減算することと、同様である。
【０３５０】
行演算回路４８０は、Ｓ５５４の処理による減算後の行開始番号が０以上であるか否かを判断する（Ｓ５５６）。具体的には、剰余回路４８８の符号判定器２９４は、Ｓ５５４の処理による減算後の行開始番号の符号を判定することによって、減算後の行開始番号が０以上であるか否かを判定する。
【０３５１】
なお、図２４及び上述した説明より、Ｓ５５４の処理による減算後の行開始番号が０以上であるか否かを判断する（Ｓ５５６）ということは、第１の行開始番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和が行数ｎ以上であるか否かを判断することと、同様である。
【０３５２】
Ｓ５５４の処理による減算後の行開始番号が０より小さい場合（Ｓ５５６のＮＯ）、行演算回路４８０は、Ｓ５５４の処理による減算後の行開始番号と、行数ｎとを加算し、加算結果を出力する（Ｓ５５８）。具体的には、このとき、剰余回路４８８の符号判定器２９４は、０を示す選択信号を、剰余回路４８８の選択回路２９６に対して出力する。選択回路２９６は、０を示す選択信号を受け付けたので、端子０に入力された行数ｎ（除数）を、剰余回路４８８の加減算器２９８に対して出力する。加減算器２９８は、加減算器２９２の出力値（Ｓ５５４の処理による減算後の行開始番号）と、行数ｎ（除数）とを加算する。そして、加減算器２９８は、加算結果を、端子Ｏから出力する。剰余回路４８８は、この出力値（第２の行開始番号値）を、選択回路４２２の端子１に出力する。
【０３５３】
なお、図２４及び上述した説明より、Ｓ５５４の処理による減算後の行開始番号と行数ｎとを加算する（Ｓ５５８）ということは、第１の行開始番号値に補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））を加算し、行数ｎを減算した値に、行数ｎを加算することと、同様である。つまり、Ｓ５５８の処理は、第１の行開始番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和が行数ｎより小さい場合に、第１の行開始番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和を、第２の行開始番号値として出力することと、同様である。
【０３５４】
一方、Ｓ５５４の処理による減算後の行開始番号が０以上である場合（Ｓ５５６のＹＥＳ）、行演算回路４８０は、Ｓ５５８の処理を行わないで、Ｓ５５４の処理による減算後の行開始番号を出力する。具体的には、このとき、剰余回路４８８の符号判定器２９４は、１を示す選択信号を、剰余回路４８８の選択回路２９６に対して出力する。選択回路２９６は、１を示す選択信号を受け付けたので、端子１に入力された０値を、剰余回路４８８の加減算器２９８に対して出力する。したがって、加減算器２９８は、Ｓ５５４の処理による減算後の行開始番号を、端子Ｏから出力する。剰余回路４８８は、この出力値（第２の行開始番号値）を、選択回路４２２の端子１に出力する。
【０３５５】
なお、図２４及び上述した説明より、Ｓ５５８の処理を行わないで、Ｓ５５４の処理による減算後の行開始番号を出力するということは、第１の行開始番号値に補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））を加算し、行数ｎを減算した値を出力することと、同様である。つまり、Ｓ５５６でＹＥＳの場合は、第１の行開始番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和が行数ｎ以上である場合に、第１の行開始番号値と補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））との和から行数ｎを減算した値を、第２の行開始番号値として出力することと、同様である。
【０３５６】
また、このとき（Ｓ５５６のＹＥＳ及びＮＯの場合）、選択回路４２２は、剰余回路４７８から、１を示す補正選択信号を受け付けている。したがって、選択回路４２２は、端子１に入力された剰余回路４８８からの出力値（第２の行開始番号値）を選択し、行開始番号記憶部４１２に対して出力する。行開始番号記憶部４１２は、剰余回路４８８の出力値（第２の行開始番号値）を、選択回路４１６の端子１に対して出力する。このとき、選択回路４１６は、制御回路４０２から１を示す開始番号選択信号を受け付けているので、端子１に入力された、行開始番号（第２の行開始番号値）を、行番号記憶部４２４に対して出力する。
【０３５７】
このように、Ｓ５４８の処理による減算後の列開始番号が０以上の場合（Ｓ５５０のＹＥＳ）、Ｓ５５４〜Ｓ５５８の処理の処理を経て、Ｓ５４０の処理が終了する。そして、上述した図２５のＳ５０６の処理において、デインターリーブ装置４００は、列番号記憶部４２６に記憶された列開始番号と、行番号記憶部４２４に記憶された行開始番号（第２の行開始番号値）とに基づいて、データを並び替える。
【０３５８】
次に、図２８を用いて、具体例を説明する。
図２８は、８行１０列の２次元ブロックにインターリーブされたデータのうち、０行目に配置されたデータを並び替える（デインターリーブする）動作を説明するための図である。
【０３５９】
ここで、図１１と同様に、列数ｍを１０、行数ｎを８とする。さらに、式１及び式２において、ｎｉ＝５、ｎｊ＝３、ｍｉ＝３、ｍｊ＝７とする。このとき、図２４に示した導出式より、ｍｉ'＝７、ｍｊ'＝１、ｎｉ'＝１、ｎｊ'＝３となる。したがって、式３及び式４より、元の位置を示す行番号ｊ及び列番号ｉは、以下の式で示される。
ｉ＝（７×Ｉ＋１×Ｊ）ｍｏｄ  １０  （式３−１）
ｊ＝（１×ｉ＋３×Ｊ）ｍｏｄ  ８  （式４−１）
【０３６０】
また、図２４示した導出式より、列減算値は、１０−７＝３となる。同様に、行減算値は、８−（（７×１）ｍｏｄ  ８）＝１となる。補正減算値は、（１０×１）ｍｏｄ  ８＝２となる。列減算値２は、１０−１＝９となる。行減算値２は、８−（（３＋１×１）ｍｏｄ  ８）＝４となる。これらのパラメータが、上述した算出回路（図示せず）によって算出され、各記憶部（行減算値記憶部４３６等）に設定（記憶）される。
【０３６１】
まず、デインターリーブ装置４００は、図２８に例示された位置（Ｉ，Ｊ）＝（０，０）のデータ０について処理を行う。上述したように、制御回路４０２は、行開始番号を０に設定し、列開始番号を０に設定し、行カウンタを０に設定し、列カウンタを０に設定する。そして、上述した処理により、行番号記憶部４２４の行番号が行開始番号に設定され、列番号記憶部４２６の列番号が列開始番号に設定される。そして、行番号記憶部４２４に行番号（行開始番号＝０）が、並び替え回路４０４に対して出力される。また、列番号記憶部４２６に設定された列番号（列開始番号＝０）が、並び替え回路４０４に対して出力される。これによって、図２８（Ａ）に示されたデータ０は、図２８（Ｂ）に例示するように、位置（ｉ，ｊ）＝（０，０）の位置に並び替えられる（デインターリーブされる）。
なお、式３−１及び式４−１においても、（Ｉ，Ｊ）＝（０，０）のとき、ｉ＝０，ｊ＝０となる。
【０３６２】
次に、デインターリーブ装置４００は、位置（Ｉ，Ｊ）＝（１，０）のデータ１について、処理を行う。上述したように、制御回路４０２は、列カウンタを１に設定する。そして、図２６に示した列毎の処理が行われる。
剰余回路４３８は、行減算値（＝１）を行番号（＝０）から減算し、その差の符号を判断する。剰余回路４３８は、行減算値を行番号から減算した差が負であるので、当該差（＝−１）と行数８とを加算した値（＝７）を、選択回路４２０の端子０と剰余回路４５８とに対して出力する。
【０３６３】
剰余回路４４８は、列減算値（＝３）を列番号（＝０）から減算し、その差の符号を判断する。剰余回路４４８は、列減算値を列番号から減算した差が負であるので、当該差（＝−３）と列数１０とを加算した値（＝７）を、選択回路４１８の端子０に対して出力する。なお、列減算値を列番号から減算した差が負であるので、剰余回路４４８は、補正選択信号を、選択回路４２０に対して出力しない。選択回路４１８は、列番号ｉを、列番号記憶部４２６に対して出力する。これによって、列番号記憶部４２６に設定された列番号（ｉ＝７）が、並び替え回路４０４に対して出力される。
【０３６４】
また、選択回路４２０は、補正選択信号を受け付けていないので、端子０に入力された剰余回路４３８の出力値（第１の行番号値＝７）を、選択回路４１６に対して出力する。選択回路４１６は、行番号ｊを、行番号記憶部４２４に対して出力する。これによって、行番号記憶部４２４に設定された行番号（ｊ＝７）が、並び替え回路４０４に対して出力される。
【０３６５】
以上の処理によって、図２８（Ａ）に示されたデータ１は、図２８（Ｂ）に例示するように、位置（ｉ，ｊ）＝（７，７）の位置に並び替えられる（デインターリーブされる）。なお、式３−１及び式４−１においても、（Ｉ，Ｊ）＝（１，０）のとき、列番号ｉ＝７，行番号ｊ＝７となる。
【０３６６】
次に、デインターリーブ装置４００は、位置（Ｉ，Ｊ）＝（２，０）のデータ２について、処理を行う。上述したように、制御回路４０２は、列カウンタを２に設定する。そして、図２６に示した列毎の処理が行われる。
剰余回路４３８は、行減算値（＝１）を行番号（＝７）から減算し、その差の符号を判断する。剰余回路４３８は、行減算値を行番号から減算した差が正であるので、当該差（第１の行番号値＝６）を、選択回路４２０の端子０と剰余回路４５８とに対して出力する。
【０３６７】
剰余回路４４８は、列減算値（＝３）を列番号（＝７）から減算し、その差の符号を判断する。剰余回路４４８は、列減算値を列番号から減算した差が正であるので、当該差（＝４）を、選択回路４１８の端子０に対して出力する。なお、列減算値を列番号から減算した差が正であるので、剰余回路４４８は、補正選択信号を、選択回路４２０に対して出力する。選択回路４１８は、列番号ｉを、列番号記憶部４２６に対して出力する。これによって、列番号記憶部４２６に設定された列番号（ｉ＝４）が、並び替え回路４０４に対して出力される。
【０３６８】
剰余回路４５８は、補正減算値（＝２）を第１の列番号値（＝６）から減算し、その差の符号を判断する。剰余回路４５８は、補正減算値を第１の列番号値から減算した差が正となるので、当該差（第２の列番号値＝４）を、選択回路４２０の端子１に対して出力する。
【０３６９】
ここで、選択回路４２０は、補正選択信号を受け付けているので、端子１に入力された剰余回路４５８の出力値（第２の行番号値＝４）を、選択回路４１６に対して出力する。選択回路４１６は、行番号ｊを、行番号記憶部４２４に対して出力する。これによって、行番号記憶部４２４に設定された行番号（ｊ＝４）が、並び替え回路４０４に対して出力される。
【０３７０】
以上の処理によって、図２８（Ａ）に示されたデータ２は、図２８（Ｂ）に例示するように、位置（ｉ，ｊ）＝（４，４）の位置に並び替えられる（デインターリーブされる）。なお、式３−１及び式４−１においても、（Ｉ，Ｊ）＝（２，０）のとき、列番号ｉ＝４，行番号ｊ＝４となる。
【０３７１】
以下同様にして、０行目の最終列（Ｉ，Ｊ）＝（９，０）まで、列毎の処理が行われる。これによって、図２８（Ａ）に例示されたデータ０〜９は、それぞれ、図２８（Ｂ）に例示する位置に並び替えられる（デインターリーブされる）。
さらに、同様にして、各行の先頭列（０行目）について行毎の処理が行われ、それ以外の列について列毎の処理が行われる。そして、８行目まで処理が行われることによって、８行×１０列の２次元ブロックにインターリーブされたデータ全体について、元の位置を示す列番号ｉ及び行番号ｊが求められ、これらの列番号ｉ及び行番号ｊに応じて、データの並び替え（デインターリーブ）が行われる。
【０３７２】
なお、実施の形態８においては、実施の形態４にかかるインターリーブ装置２００の構成の列及び行を処理する構成を互いに入れ替えたとしたが、実施の形態３にかかるインターリーブ装置１００の構成の列及び行を処理する構成を互いに入れ替えても、デインターリーブ装置を実現することが可能となる。この場合、剰余回路は、図６に示した構成を有するようにしてもよい。また、上述した行パラメータ（（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）を行加算値とし、列パラメータ（ｍｉ'）を列加算値とし、補正パラメータ（ｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ））を補正加算値とし、第２の行パラメータ（（ｎｊ'＋ｍｊ'×ｎｉ'）ｍｏｄ  ｎ）を行加算値２とし、第２の列パラメータ（ｍｊ'）を列加算値２としてもよい。
【０３７３】
実施の形態８においては、実施の形態５と同様に、デインターリーブ装置が、インターリーブされたデータを元の位置に戻すように構成されているので、元の位置に戻すための変換テーブルが不要となる。さらに、実施の形態８においては、実施の形態４にかかるインターリーブ装置２００の構成において、実質的に、列を処理する構成要素（列演算回路等）と行を処理する構成要素（行演算回路等）とを入れ替えることによって、デインターリーブ装置を構成することができる。したがって、簡易な方法で、デインターリーブを実現することが可能となる。
【０３７４】
さらに、実施の形態８においては、実施の形態４にかかるインターリーブ装置２００と実質的に同様の構成によってデインターリーブ装置を実現しているので、２次元ブロックにインターリーブされたデータのデインターリーブにおいて、乗算及び除算を行うことなく、デインターリーブを行うことができる。また、乗算及び除算を行う必要がないので、２次元ブロックにインターリーブされたデータのデインターリーブにおいて、演算量を抑制することができる。
【０３７５】
ここで、実施の形態８にかかる構成の作用効果について説明する。
列毎の処理について、式３より、列番号ｉは、Ｉが１加算されるとｍｉ'（列パラメータ）ずつ加算される。ただし、その加算結果が列数ｍ以上となる場合は、その加算結果から列数ｍが減算される。つまり、ｋ−１列目の（インターリーブ前の）元の位置の列番号ｉ＿ｋ−１とｍｉ'（列パラメータ）との和が列数ｍよりも小さい場合（第１の場合）には、ｋ列目の元の位置の列番号ｉ＿ｋは、ｉ＿ｋ−１＋ｍｉ'となる。一方、列番号ｉ＿ｋ−１とｍｉ'（列パラメータ）との和が列数ｍ以上の場合（第２の場合）には、列番号ｉ＿ｋは、ｉ＿ｋ−１＋ｍｉ'−ｍとなる。このようにして、列番号ｉについての剰余演算が行われる。また、この剰余演算は、列演算回路４４０で行われる。上述したように、この列演算回路４４０は、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算を行う。
【０３７６】
また、式３及び式４より、上記第１の場合、つまり、列番号ｉが単調に増加し列数ｍの減算がなされない場合においては、行番号ｊは、Ｉが１加算されると、（ｍｉ'×ｎｉ'）ｍｏｄ  ｎ）（行パラメータ）ずつ加算される。ただし、その加算結果が行数ｎ以上となる場合は、その加算結果から行数ｎが減算される。このようにして、上記第１の場合の行番号ｊについての剰余演算が行われる。また、この剰余演算は、行演算回路４３０で行われる。この行演算回路４３０においては、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算が行われる。
【０３７７】
一方、上記第２の場合、つまり、列番号ｉが単調に増加せず列数ｍの減算がなされた場合においては、行番号ｊは、上記行演算回路４３０の演算結果（第１の行番号値）に対して補正が必要となる。ここで、列番号ｉが単調に増加しない場合とは、ｋ−１列目に関する列番号ｉ＿ｋ−１にｍｉ'（列パラメータ）を加算した結果、その加算結果が列数ｍ以上となったため、その加算結果から列数ｍを減算した場合である。つまり、第２の場合では、ｉの降下分だけ補正（減算）をする必要がある。ここで、ｉの降下分は、式４において、Ｊ＝０においてｉにｍを代入した値（ｍ×ｎｉ'）ｍｏｄ  ｎである。さらに、第１の行番号値からｉの降下分を減算した場合に減算結果が負とならないように、−（ｍ×ｎｉ'）ｍｏｄ  ｎにｎを加算する。このｎ−（（ｍ×ｎｉ'）ｍｏｄ  ｎ）が、補正パラメータである。
【０３７８】
したがって、上記第２の場合、第１の行番号値に補正パラメータが加算される（これによって、上記ｉの降下分（（ｍ×ｎｉ'）ｍｏｄ  ｎ）が減算される）。ただし、その加算結果が行数ｎ以上となる場合は、その加算結果から行数ｎが減算される。このようにして、上記第２の場合の行番号ｊについての剰余演算が行われる。また、この剰余演算は、行演算回路４５０で行われる。この行演算回路４５０においては、乗算及び除算を行わないで、加減算及び比較のみによって剰余演算が行われる。
なお、行毎の処理についても同様にして、加減算及び比較のみによって剰余演算が行われる。
【０３７９】
さらに、実施の形態８においては、列減算値及び列減算値２については、それぞれ、予め、列パラメータ及び第２の列パラメータと、列数との差分をとっている。同様に、行減算値、行減算値２及び補正減算値については、それぞれ、予め、行パラメータ、第２の行パラメータ及び補正パラメータと、行数との差分をとっている。これによって、実施の形態８においては、比較処理が不要となる。
【０３８０】
［変形例］
なお、本実施の形態は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
本実施の形態においては、列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように構成しているが、１列ごとに先頭行から最終行へと順に並び替えるように構成してもよい。
【０３８１】
さらに、図１１等では、行を横方向の並び、列を縦方向の並びとしているが、横方向の並びを列とし、縦方向の並びを行としてもよい。言い換えれば、「列数ｍ、行数ｎに配列されたデータ位置」とは、図１１等に例示するような、横にｍ列、縦にｎ行の２次元ブロックに配置されたデータ位置だけでなく、縦にｍ列、横にｎ行の２次元ブロックに配置されたデータ位置をも包含する。つまり、行及び列とは、便宜上、２次元の配置の２つの並び（縦方向又は横方向）を区別するためのものであって、行が横方向の並びであって列が縦方向の並びであると限定されるものではない。
【０３８２】
本実施の形態は、ＰＬＣにおける通信で使用されるインターリーブを前提としたが、インターリーブを必要とする通信であれば、任意の通信装置及び通信システムに、適用可能である。例えば、ＯＦＤＭ方式等を用いた誤り訂正が必要な無線通信においても、本実施の形態にかかるインターリーブ装置及びデインターリーブ装置は、適用可能である。
【０３８３】
また、各実施の形態において、各記憶部は、別個に設けられているとしたが、共通のメモリ等の構成要素であってもよい。特に、例えば、実施の形態３においては、列数記憶部１３４、列数記憶部１５４、列数記憶部１６４及び列数記憶部１８４の少なくとも２つ以上は、共通の構成要素であってもよい。また。行数記憶部１４４及び行数記憶部１７４は、共通の構成要素であってもよい。他の実施の形態においても同様である。
【０３８４】
各フローチャートの各処理の順序は、適宜、入れ替えてもよい。また、各処理は、他の処理と同時に実行されてもよい。また、各処理のうちの１つ以上は、適宜、省略されてもよい。
【０３８５】
また、上述の実施の形態では、上記実施の形態をハードウェアの構成として説明したが、上記実施の形態は、これに限定されるものではない。上記実施の形態は、インターリーブ装置内及びデインターリーブ装置内の各回路の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。つまり、インターリーブ装置及びデインターリーブ装置は、ＣＰＵ及びメモリ等を有するコンピュータとして構成することも可能である。
【０３８６】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０３８７】
さらに、上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０３８８】
（付記１）
列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように制御し、
処理対象の１つ前の位置の並び替え後の位置の列番号と予め定められた列パラメータとの和に基づいて、第１の列番号値を算出し、
前記１つ前の位置の並び替え後の位置の行番号と予め定められた行パラメータとの和がｎより小さい第１の場合と、前記和がｎ以上の第２の場合とに応じて、処理対象の位置の並び替え後の位置の行番号を出力し、
前記第１の場合には、前記第１の列番号値を、処理対象の位置の並び替え後の位置の列番号として出力し、
前記第２の場合には、前記第１の列番号値と予め定められた補正パラメータとの和に基づいて、処理対象の位置の並び替え後の位置の列番号を出力し、
前記出力された行番号及び列番号に基づいて、処理対象のデータを並び替える
インターリーブ方法。
（付記２）
前記１つ前の位置の並び替え後の位置の列番号と前記列パラメータとの和がｍ以上か否かに応じて、前記第１の列番号値を算出し、
前記第２の場合に、前記第１の列番号値と前記補正パラメータとの和がｍ以上か否かに応じて、処理対象の位置の並び替え後の位置の列番号を出力する
付記１に記載のインターリーブ方法。
（付記３）
前記１つ前の位置の並び替え後の位置の列番号Ｉ＿ｋ−１と前記列パラメータとの和がｍより小さい場合には、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和を、前記第１の列番号値として算出し、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和がｍ以上である場合には、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和からｍを減算した値を、前記第１の列番号値として算出し、
前記第１の場合には、前記１つ前の位置の並び替え後の位置の行番号Ｊ＿ｋ−１と前記行パラメータとの和を、処理対象の位置の並び替え後の位置の行番号Ｊ＿ｋとして出力し、前記第２の場合には、前記行番号Ｊ＿ｋ−１と前記行パラメータとの和からｎを減算した値を、前記行番号Ｊ＿ｋとして出力し、
前記第２の場合に、前記第１の列番号値と前記補正パラメータとの和がｍより小さいときには、前記第１の列番号値と前記補正パラメータとの和を、処理対象の位置の並び替え後の位置の列番号Ｉ＿ｋとして出力し、前記第１の列番号値と前記補正パラメータとの和がｍ以上のときには、前記第１の列番号値と前記補正パラメータとの和からｍを減算した値を、前記列番号Ｉ＿ｋとして出力する
付記２に記載のインターリーブ方法。
（付記４）
前記１つ前の位置の並び替え後の位置の行番号と前記行パラメータとの和がｎ以上の場合に、当該和からｎを減算した値を、処理対象の位置の並び替え後の位置の行番号として出力し、
前記補正パラメータは、当該和からｎを減算処理した場合の、当該減算処理を考慮した列番号の補正値である
付記１に記載のインターリーブ方法。
（付記５）
前記第１の列番号値は、前記列パラメータをｍから減算して得られた列減算値を、前記１つ前の位置の並び替え後の位置の列番号から減算することによって算出され、
前記処理対象の位置の並び替え後の位置の行番号は、前記行パラメータをｎから減算して得られた行減算値を、前記１つ前の位置の並び替え後の位置の行番号から減算することによって算出され、
前記第２の場合には、前記補正パラメータをｍから減算して得られた補正減算値を、前記第１の列番号値から減算することによって、処理対象の位置の並び替え後の位置の列番号を出力する
付記１に記載のインターリーブ方法。
（付記６）
ｋ行目の先頭列を処理するときに、
ｋ−１行目の先頭列の位置の並び替え後の列番号であるｋ−１行目列開始番号と予め定められた第２の列パラメータとの和に基づいて、第１の列開始番号値を算出し、
ｋ−１行目の先頭列の位置の並び替え後の行番号であるｋ−１行目行開始番号と予め定められた第２の行パラメータとの和がｎより小さい第３の場合と、前記和がｎ以上の第４の場合とに応じて、ｋ行目の先頭列の位置の並び替え後の行番号であるｋ行目行開始番号を出力し、
前記第３の場合には、前記第１の列開始番号値を、ｋ行目の先頭列の位置の並び替え後の列番号であるｋ行目列開始番号として出力し、
前記第４の場合には、前記第１の列開始番号値と前記補正パラメータとの和に基づいて、前記ｋ行目列開始番号を出力し、
前記出力されたｋ行目行開始番号及びｋ行目列開始番号に基づいて、ｋ行目の先頭列に配置されたデータを並び替える
付記１に記載のインターリーブ方法。
（付記７）
列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように制御する制御回路と、
処理対象の１つ前の位置の並び替え後の位置の列番号と予め定められた列パラメータとの和に基づいて、第１の列番号値を算出する第１の列演算回路と、
前記１つ前の位置の並び替え後の位置の行番号と予め定められた行パラメータとの和がｎより小さい第１の場合と、前記和がｎ以上の第２の場合とに応じて、処理対象の位置の並び替え後の位置の行番号を算出する行演算回路と、
前記第１の列番号値と予め定められた補正パラメータとの和に基づいて、第２の列番号値を算出する第２の列演算回路と、
前記第１の場合には前記第１の列番号値を、前記第２の場合には前記第２の列番号値を、処理対象の位置の並び替え後の位置の列番号として選択する選択回路と、
前記算出された行番号と前記選択された列番号とに基づいて、処理対象のデータを並び替える並び替え回路と
を有するインターリーブ装置。
（付記８）
前記第１の列演算回路は、前記１つ前の位置の並び替え後の位置の列番号と前記列パラメータとの和がｍ以上か否かに応じて、前記第１の列番号値を算出し、
前記第２の列演算回路は、前記第２の場合に、前記第１の列番号値と前記補正パラメータとの和がｍ以上か否かに応じて、処理対象の位置の並び替え後の位置の列番号を算出する
付記７に記載のインターリーブ装置。
（付記９）
前記第１の列演算回路は、
前記１つ前の位置の並び替え後の位置の列番号Ｉ＿ｋ−１と前記列パラメータとの和がｍより小さい場合には、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和を、前記第１の列番号値として算出し、
前記列番号Ｉ＿ｋ−１と前記列パラメータとの和がｍ以上である場合には、前記列番号Ｉ＿ｋ−１と前記列パラメータとの和からｍを減算した値を、第１の列番号値として算出し、
前記行演算回路は、
前記第１の場合には、前記１つ前の位置の並び替え後の位置の行番号Ｊ＿ｋ−１と前記行パラメータとの和を、処理対象の位置の並び替え後の位置の行番号Ｊ＿ｋとして出力し、
前記第２の場合には、前記行番号Ｊ＿ｋ−１と前記行パラメータとの和からｎを減算した値を、前記行番号Ｊ＿ｋとして出力し、
前記第２の列演算回路は、
前記第１の列番号値と予め定められた補正パラメータとの和がｍより小さい場合には、前記第１の列番号値と前記補正パラメータとの和を、前記第２の列番号値として算出し、
前記第１の列番号値と前記補正パラメータとの和がｍ以上の場合には、前記第１の列番号値と前記補正パラメータとの和からｍを減算した値を、前記第２の列番号値として算出する
付記８に記載のインターリーブ装置。
（付記１０）
前記行演算回路は、前記１つ前の位置の並び替え後の位置の行番号と予め定められた行パラメータとの和がｎ以上の場合に、当該和からｎを減算した値を、処理対象の位置の並び替え後の位置の行番号として出力し、
前記補正パラメータは、当該和からｎを減算処理した場合の、当該減算処理を考慮した列番号の補正値である
付記７に記載のインターリーブ装置。
（付記１１）
前記第１の列演算回路は、前記列パラメータをｍから減算して得られた列減算値を、前記１つ前の位置の並び替え後の位置の列番号から減算することによって、前記第１の列番号値を算出し、
前記行演算回路は、前記行パラメータをｎから減算して得られた行減算値を、前記１つ前の位置の並び替え後の位置の行番号から減算することによって、前記処理対象の位置の並び替え後の位置の行番号を算出し、
前記第２の列演算回路は、前記補正パラメータをｍから減算して得られた補正減算値を、前記第１の列番号値から減算することによって、前記第２の列番号値を算出する
付記７に記載のインターリーブ装置。
（付記１２）
ｋ行目の先頭列の位置を処理するときに処理を行う第３の列演算回路と、第４の列演算回路と、第２の行演算回路と、第２の選択回路と
をさらに有し、
前記第３の列演算回路は、ｋ−１行目の先頭列の位置の並び替え後の列番号であるｋ−１行目列開始番号と予め定められた第２の列パラメータとの和に基づいて、第１の列開始番号値を算出し、
前記第２の行演算回路は、ｋ−１行目の先頭列の位置の並び替え後の行番号であるｋ−１行目行開始番号と予め定められた第２の行パラメータとの和がｎより小さい第３の場合と、前記和がｎ以上の第４の場合とに応じて、ｋ行目の先頭列の位置の並び替え後の行番号であるｋ行目行開始番号を算出し、
前記第４の列演算回路は、前記第１の列開始番号値と前記補正パラメータとの和に基づいて、第２の列開始番号値を算出し、
前記第２の選択回路は、前記第３の場合には前記第１の列開始番号値を、前記第４の場合には前記第２の列開始番号値を、ｋ行目の先頭列の位置の並び替え後の列番号であるｋ行目列開始番号としてとして選択し、
前記並び替え回路は、前記算出されたｋ行目行開始番号と前記選択されたｋ行目列開始番号とに基づいて、ｋ行目の先頭列に配置されたデータを並び替える
付記７に記載のインターリーブ装置。
（付記１３）
列数ｍ、行数ｎにインターリーブされて配列されたデータ位置を、１行ごとに先頭列から最終列へと順に、インターリーブ前の元の位置に戻すように制御し、
処理対象の１つ前の位置の元の位置の行番号と予め定められた行パラメータとの和に基づいて、第１の行番号値を算出し、
前記１つ前の位置の元の位置の列番号と予め定められた列パラメータとの和がｍより小さい第１の場合と、前記和がｍ以上の第２の場合とに応じて、処理対象の位置の元の位置の列番号を出力し、
前記第１の場合には、前記第１の行番号値を、処理対象の位置の元の位置の行番号として出力し、
前記第２の場合には、前記第１の行番号値と予め定められた補正パラメータとの和に基づいて、処理対象の位置の元の位置の行番号を出力し、
前記出力された列番号及び行番号に基づいて、処理対象のデータを元の位置に並び替える
デインターリーブ方法。
（付記１４）
前記１つ前の位置の元の位置の行番号と前記行パラメータとの和がｎ以上か否かに応じて、前記第１の行番号値を算出し、
前記第２の場合に、前記第１の行番号値と前記補正パラメータとの和がｎ以上か否かに応じて、処理対象の位置の元の位置の行番号を出力する
付記１３に記載のデインターリーブ方法。
（付記１５）
前記１つ前の位置の元の位置の行番号ｊ＿ｋ−１と前記行パラメータとの和がｎより小さい場合には、前記行番号ｊ＿ｋ−１と前記行パラメータとの和を、前記第１の行番号値として算出し、前記行番号ｊ＿ｋ−１と前記行パラメータとの和がｎ以上である場合には、前記行番号ｊ＿ｋ−１と前記行パラメータとの和からｎを減算した値を、前記第１の行番号値として算出し、
前記第１の場合には、前記１つ前の位置の元の位置の列番号ｉ＿ｋ−１と前記列パラメータとの和を、処理対象の位置の元の位置の列番号ｉ＿ｋとして出力し、前記第２の場合には、前記列番号ｊ＿ｋ−１と前記列パラメータとの和からｍを減算した値を、前記列番号ｉ＿ｋとして出力し、
前記第２の場合に、前記第１の行番号値と前記補正パラメータとの和がｎより小さいときには、前記第１の行番号値と前記補正パラメータとの和を、処理対象の位置の元の位置の行番号ｊ＿ｋとして出力し、前記第１の行番号値と前記補正パラメータとの和がｎ以上のときには、前記第１の行番号値と前記補正パラメータとの和からｎを減算した値を、前記行番号ｊ＿ｋとして出力する
付記１４に記載のデインターリーブ方法。
（付記１６）
前記１つ前の位置の元の位置の列番号と前記列パラメータとの和がｍ以上の場合に、当該和からｍを減算した値を、処理対象の位置の元の位置の列番号を出力し、
前記補正パラメータは、当該和からｍを減算処理した場合の、当該減算処理を考慮した行番号の補正値である
付記１３に記載のデインターリーブ方法。
（付記１７）
前記第１の行番号値は、前記行パラメータをｎから減算して得られた行減算値を、前記１つ前の位置の元の位置の行番号から減算することによって算出され、
前記処理対象の位置の元の位置の列番号は、前記列パラメータをｍから減算して得られた列減算値を、前記１つ前の位置の元の位置の列番号から減算することによって算出され、
前記第２の行番号値は、前記補正パラメータをｎから減算して得られた補正減算値を、前記第１の行番号値から減算することによって算出される
付記１３に記載のデインターリーブ方法。
（付記１８）
ｋ行目の先頭列を処理するときに、
ｋ−１行目の先頭列の位置の元の位置の行番号であるｋ−１行目行開始番号と予め定められた第２の行パラメータとの和に基づいて、第１の行開始番号値を算出し、
ｋ−１行目の先頭列の位置の元の位置の列番号であるｋ−１行目列開始番号と予め定められた第２の列パラメータとの和がｍより小さい第３の場合と、前記和がｍ以上の第４の場合とに応じて、ｋ行目の先頭列の位置の元の位置の列番号であるｋ行目列開始番号を出力し、
前記第３の場合には、前記第１の行開始番号値を、ｋ行目の先頭列の位置の元の位置の行番号であるｋ行目行開始番号として出力し、
前記第４の場合には、前記第１の行開始番号値と前記補正パラメータとの和に基づいて、前記ｋ行目行開始番号を出力し、
前記出力されたｋ行目行開始番号及びｋ行目列開始番号に基づいて、ｋ行目の先頭列に配置されたデータを元の位置に並び替える
付記１５に記載のデインターリーブ方法。
（付記１９）
列数ｍ、行数ｎに並び替えられて配列されたデータ位置を、１行ごとに先頭列から最終列へと順に、インターリーブ前の元の位置に戻すように制御する制御回路と、
処理対象の位置の１つ前の位置の元の位置の行番号と予め定められた行パラメータとの和に基づいて、第１の行番号値を算出する第１の行演算回路と、
前記１つ前の位置の元の位置の列番号と予め定められた列パラメータとの和がｍより小さい第１の場合と、前記和がｍ以上の第２の場合とに応じて、処理対象の位置の元の位置の列番号を算出する列演算回路と、
前記第１の行番号値と予め定められた補正パラメータとの和に基づいて、第２の行番号値を算出する第２の行演算回路と、
前記第１の場合には前記第１の行番号値を、前記第２の場合には前記第２の行番号値を、処理対象の位置の元の位置の行番号として選択する選択回路と、
前記算出された列番号と前記選択された行番号とに基づいて、処理対象のデータを元の位置に並び替える並び替え回路と
を有するデインターリーブ装置。
（付記２０）
データをインターリーブする送信側の通信装置と、
インターリーブされたデータをデインターリーブする受信側の通信装置と
を有し、
前記送信側の通信装置は、
列数ｍ、行数ｎに配列されたデータ位置を、１行ごとに先頭列から最終列へと順に並び替えるように制御する送信側制御回路と、
処理対象の１つ前の位置の並び替え後の位置の列番号と予め定められたインターリーブ用列パラメータとの和に基づいて、第１の列番号値を算出する第１の列演算回路と、
前記１つ前の位置の並び替え後の位置の行番号と予め定められたインターリーブ用行パラメータとの和がｎより小さい第１の場合と、前記和がｎ以上の第２の場合とに応じて、処理対象の位置の並び替え後の位置の行番号を算出する行演算回路と、
前記第１の列番号値と予め定められた補正パラメータとの和に基づいて、第２の列番号値を算出する第２の列演算回路と、
前記第１の場合には前記第１の列番号値を、前記第２の場合には前記第２の列番号値を、処理対象の位置の並び替え後の位置の列番号として選択する送信側選択回路と、
前記算出された行番号と前記選択された列番号とに基づいて、処理対象のデータを並び替える送信側並び替え回路と
を有し、
前記受信側の通信装置は、
列数ｍ、行数ｎに並び替えられて配列されたデータ位置を、１行ごとに先頭列から最終列へと順に、インターリーブ前の元の位置に戻すように制御する受信側制御回路と、
処理対象の位置の１つ前の位置の元の位置の行番号と予め定められたデインターリーブ用行パラメータとの和に基づいて、第１の行番号値を算出する第１の行演算回路と、
前記１つ前の位置の元の位置の列番号と予め定められたデインターリーブ用列パラメータとの和がｍより小さい場合と、前記和がｍ以上の場合とに応じて、処理対象の位置の元の位置の列番号を算出する列演算回路と、
前記第１の行番号値と前記補正パラメータとの和に基づいて、第２の行番号値を算出する第２の行演算回路と、
前記列番号と前記デインターリーブ用列パラメータとの和がｍより小さい場合には前記第１の行番号値を、前記列番号と前記デインターリーブ用列パラメータとの和がｍ以上の場合には前記第２の行番号値を、処理対象の位置の元の位置の行番号として選択する受信側選択回路と、
前記算出された列番号と前記選択された行番号とに基づいて、処理対象のデータを元の位置に並び替える受信側並び替え回路と
を有する
通信システム。
【０３８９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０３９０】
１  インターリーブ装置
１０  制御回路
１２  並び替え回路
２  位置演算装置
２２  列演算回路
２４  行演算回路
２６  列演算回路
２８  選択回路
３  インターリーブ装置
４  位置演算装置
３０  選択回路
３２  選択回路
４２  列演算回路
４４  行演算回路
４６  列演算回路
４８  選択回路
１００  インターリーブ装置
１０２  制御回路
１０４  並び替え回路
１１０  位置演算装置
１１２  列開始番号記憶部
１１４  行開始番号記憶部
１１６  選択回路
１１８  選択回路
１２０  選択回路
１２２  選択回路
１２４  列番号記憶部
１２６  行番号記憶部
１３０  列演算回路
１３４  列数記憶部
１３６  列加算値記憶部
１３８  剰余回路
１４０  行演算回路
１４４  行数記憶部
１４６  行加算値記憶部
１４８  剰余回路
１５０  列演算回路
１５４  列数記憶部
１５６  補正加算値記憶部
１５８  剰余回路
１６０  列演算回路
１６４  列数記憶部
１６６  列加算値記憶部
１６８  剰余回路
１７０  行演算回路
１７４  行数記憶部
１７６  行加算値記憶部
１７８  剰余回路
１８０  列演算回路
１８４  列数記憶部
１８６  補正加算値記憶部
１８８  剰余回路
１９２  加減算器
１９４  比較器
１９６  選択回路
１９８  加減算器
２００  インターリーブ装置
２１０  位置演算装置
２３０  列演算回路
２３６  列減算値記憶部
２３８  剰余回路
２４０  行演算回路
２４６  行減算値記憶部
２４８  剰余回路
２５０  列演算回路
２５６  補正減算値記憶部
２５８  剰余回路
２６０  列演算回路
２６６  列減算値記憶部
２６８  剰余回路
２７０  行演算回路
２７６  行減算値記憶部
２７８  剰余回路
２８０  列演算回路
２８６  補正減算値記憶部
２８８  剰余回路
２９２  加減算器
２９４  符号判定器
２９６  選択回路
２９８  加減算器
３００  通信システム
３０２  電力線
３１０  通信装置
３２０  誤り訂正エンコーダ
３２２  符号化回路
３２４  インターリーブ装置
３３０  変調器
３４０  通信装置
３５０  復調器
３６０  誤り訂正デコーダ
３６２  デインターリーブ装置
３６４  復号回路
５  デインターリーブ装置
５０  制御回路
５２  並び替え回路
６  位置演算装置
６２  行演算回路
６４  列演算回路
６６  行演算回路
６８  選択回路
７  デインターリーブ装置
８  位置演算装置
７０  選択回路
７２  選択回路
８２  行演算回路
８４  列演算回路
８６  行演算回路
８８  選択回路
４００  デインターリーブ装置
４０２  制御回路
４０４  並び替え回路
４１０  位置演算装置
４１２  行開始番号記憶部
４１４  列開始番号記憶部
４１６  選択回路
４１８  選択回路
４２０  選択回路
４２２  選択回路
４２４  行番号記憶部
４２６  列番号記憶部
４３０  行演算回路
４３４  行数記憶部
４３６  行減算値記憶部
４３８  剰余回路
４４０  列演算回路
４４４  列数記憶部
４４６  列減算値記憶部
４４８  剰余回路
４５０  行演算回路
４５４  行数記憶部
４５６  補正減算値記憶部
４５８  剰余回路
４６０  行演算回路
４６４  行数記憶部
４６６  行減算値記憶部
４６８  剰余回路
４７０  列演算回路
４７４  列数記憶部
４７６  列減算値記憶部
４７８  剰余回路
４８０  行演算回路
４８４  行数記憶部
４８６  補正減算値記憶部
４８８  剰余回路
【図１】
2015053639.tif 000003
【図２】
2015053639.tif 000004
【図３】
2015053639.tif 000005
【図４】
2015053639.tif 000006
【図５】
2015053639.tif 000007
【図６】
2015053639.tif 000008
【図７】
2015053639.tif 000009
【図８】
2015053639.tif 000010
【図９】
2015053639.tif 000011
【図１０】
2015053639.tif 000012
【図１１】
2015053639.tif 000013
【図１２】
2015053639.tif 000014
【図１３】
2015053639.tif 000015
【図１４】
2015053639.tif 000016
【図１５】
2015053639.tif 000017
【図１６】
2015053639.tif 000018
【図１７】
2015053639.tif 000019
【図１８】
2015053639.tif 000020
【図１９】
2015053639.tif 000021
【図２０】
2015053639.tif 000022
【図２１】
2015053639.tif 000023
【図２２】
2015053639.tif 000024
【図２３】
2015053639.tif 000025
【図２４】
2015053639.tif 000026
【図２５】
2015053639.tif 000027
【図２６】
2015053639.tif 000028
【図２７】
2015053639.tif 000029
【図２８】
2015053639.tif 000030