(57)【特許請求の範囲】
【請求項１】
ｐビット長のビットデータ列を有する元データをｉ行ｊ列のマトリックス状に仮想的に配列するものとして、前記各行ｉに位置する各ビットデータを前記各列ｊの順に沿って選択することで、前記元データをインターリーブする方式の符号誤り訂正回路であって、
１行当たり２のべき乗のビット長２nを有する記憶領域を複数行備える記憶手段と、
前記元データをビット長２nずつに分けて前記記憶手段の各行の記憶領域に記憶させる制御手段と、
前記ｐビット長が２のべき乗のビット長２x-1と２xの間のビット長となる関係に基づいて設定されたｘビット長を有し、計数動作によって上位ｘ−ｎビットが前記仮想的なマトリックスにおける前記ｊ列の位置を示し、下位ｎビットが前記仮想的なマトリックスにおける前記ｉ行の位置を示す計数データを生成するカウンタ手段と、
前記計数データの上位ｘ−ｎビットのデータに基づいて、前記ｊ列の位置に存在するビットデータの記憶されている前記記憶手段の記憶領域を指すアドレスデータを生成するアドレスデコード手段と、
前記計数データの下位ｎビットのデータに基づいて、前記アドレスデータの指す前記記憶領域に記憶されているビットデータのうち、前記ｉ行の位置に存在するビットデータを指すビット選択データを生成する選択データデコード手段と、
を具備し、
前記制御手段が、前記アドレスデータと前記ビット選択データに基づいて、前記記憶手段に記憶させた前記元データの各ビットデータを選択することにより、前記仮想的なマトリックスにおける前記各行ｉと各列ｊの順に沿って前記元データの各ビットデータを選択するインターリーブ処理を行うこと、
を特徴とする符号誤り訂正回路。
【請求項２】
前記アドレスデータに対応する前期記憶手段の記憶領域から読み出したビット長２nのビットデータ列を保持するデータ保持手段と、
前記データ保持手段に保持されたビット長２nのビットデータ列の中から前記ビット選択データの指すビットデータを選択して出力するビット選択手段とを更に具備し、
前記制御手段は、前記ビット選択手段の出力をインターリーブされたデータとして出力させること、
を特徴とする請求項１記載の符号誤り訂正回路。
【請求項３】
ｐビット長のビットデータ列を有する元データをｉ行ｊ列のマトリックス状に仮想的に配列するものとして、前記各行ｉに位置する各ビットデータを前記各列ｊの順に沿って選択することで、前記元データをインターリーブする方式の符号誤り訂正方法であって、
１行当たり２のべき乗のビット長２nを有する記憶領域を複数行備える記憶手段を備えておき、前記元データをビット長２nずつに分けて前記記憶手段の各行の記憶領域に記憶させる第１の工程と、
前記ｐビット長が２のべき乗のビット長２x-1と２xの間のビット長となる関係に基づいて設定されたｘビット長において、計数動作によって上位ｘ−ｎビットが前記仮想的なマトリックスにおける前記ｊ列の位置を示し、下位ｎビットが前記仮想的なマトリックスにおける前記ｉ行の位置を示す計数データを生成する第２の工程と、
前記計数データの上位ｘ−ｎビットのデータに基づいて、前記ｊ列の位置に存在するビットデータの記憶されている前記記憶手段の記憶領域を指すアドレスデータを生成する第３の工程と、
前記計数データの下位ｎビットのデータに基づいて、前記アドレスデータの指す前記記憶領域に記憶されているビットデータのうち、前記ｉ行の位置に存在するビットデータを指すビット選択データを生成する第４の工程と、
前記アドレスデータと前記ビット選択データに基づいて、前記記憶手段に記憶させた前記元データの各ビットデータを選択することにより、前記仮想的なマトリックスにおける前記各行ｉと各列ｊの順に沿って前記元データの各ビットデータを選択するインターリーブ処理を行う第５の工程と、
を備えることを特徴とする符号誤り訂正方法。
【請求項４】
前記アドレスデータに対応する前記憶手段の記憶領域からビット長２nのビットデータ列を読み出して保持する第６の工程と、
前記第６の工程で保持したビット長２nのビットデータ列の中から、前記ビット選択データの指すビットデータを、インターリーブされたデータとして選択する第７の工程とを更に備えること、
を特徴とする請求項３記載の符号誤り訂正方法。
【請求項５】
前記符号誤り訂正回路は、送信データをインターリーブして送信する通信装置に備えられること、
を特徴とする請求項１又は請求項２に記載の符号誤り訂正回路。
【請求項６】
前記符号誤り訂正方法は、送信データをインターリーブして送信する通信装置に適用されること、
を特徴とする請求項３又は請求項４に記載の符号誤り訂正方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタルデータにインターリーブを施す符号誤り訂正回路及び符号誤り訂正方法に関するものである。
【０００２】
【従来の技術】
周知のように、デジタルデータの符号誤り訂正技術として、インターリーブ（interleave）が行われている。情報通信の分野では、送信側では送信すべき元データのビット配列を所定の約束のもとに入れ替えて（インターリーブして）送信し、受信側では受信したデータを所定の約束のもとにディインターリーブ（de-interleave）することで元データを取得する。インターリーブを行って情報通信を行うと、雑音などの影響を受けてデータに符号誤り（エラー）が生じた場合でも、ディインターリーブの際に符号誤りの箇所が分散されるので、符号誤りの箇所を容易に訂正することができ、通信品質の向上を図ることができる。
【０００３】
また、インターリーブは、情報通信の分野に限らず、デジタル情報処理の分野で広く用いられており、一例として、ＤＶＤ（Digital Video Disc又はDigital Versatile Disc）等の情報記録媒体へのデータ記録の際にも行われている。
【０００４】
従来、インターリーブを行うために、１ビット幅でメモリアクセスできる半導体メモリを備えておき、この半導体メモリに設けられている複数ビットに元データの各ビットデータを書き込んだ後、所定の順序に従ってメモリアクセスして１ビットずつ読み出すことにより、ビット配列の並び替えられたデータを生成していた。また、上記半導体メモリに元データを１ビットずつ書き込むための書き込み制御と、１ビットずつ読み出すための読み出し制御とを、マイクロプロセッサ（ＣＰＵ）が行っていた。
【０００５】
【発明が解決しようとする課題】
ところが、上記の１ビット幅でメモリアクセスできる半導体メモリを用いて元データのビット配列を並び替えることにすると、半導体メモリへのデータ書き込みと読み出しのためのメモリアクセス回数が多くなる。このため、インターリーブに要する処理時間が長くなり、また、マイクロプロセッサに多大な負担が掛かるという問題があった。
【０００６】
また、マイクロプロセッサを備えて動作する通信装置や情報処理装置等の電子機器では、処理すべきデータを、８ビット、１６ビット、３２ビットなどの２のべき乗（２の相乗積）のデータとして扱うのが一般的であり、そのためマイクロプロセッサのワーキングメモリも２のべき乗のデータを各アドレスに対応して記憶する半導体メモリが一般に使用されている。したがって、インターリーブの際にもこうしたワーキングメモリを用いれば、電子機器に備えられている資源を有効利用することができ、また、マイクロプロセッサによるインターリーブのための処理にも都合がよい。
【０００７】
しかしながら、上記のワーキングメモリを用いてマイクロプロセッサによるインターリーブの処理を行おうとした場合、ワーキングメモリの各記憶領域に、元データを１ビットずつ記憶させ、所定の順序に従って各記憶領域から１ビットずつ読み出すことになる。このため、各記憶領域は２のべき乗のデータを記憶できるにもかかわらず、１ビットしか記憶しないことになり、ワーキングメモリを有効利用することができないという問題が生じる。
【０００８】
更に、上記ワーキングメモリを用いた場合にも、各記憶領域を１ビット単位でメモリアクセスしてビットデータを記憶させた後、所定の順序に従って再び各記憶領域を１ビット単位でメモリアクセスしてビットデータを読み出すという処理を繰り返すことになる。このため、従来の１ビット幅でメモリアクセスできる半導体メモリを用いた場合と同様に、メモリアクセスの回数が多くなるので、マイクロプロセッサに掛かる負担が重くなり、また、インターリーブに要する処理時間を短くすることができないという問題を生じる。
【０００９】
本発明は、こうした課題に着目してなされたものであり、２のべき乗のデータを各アドレスに対応付けて記憶することが可能な複数の記憶領域を有する記憶手段を利用して、高速のインターリーブを行う符号誤り訂正回路及び符号誤り訂正方法を提供することを目的とする。また、マイクロプロセッサの制御下でインターリーブを行うのに好適な符号誤り訂正回路及び符号誤り訂正方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明の符号誤り訂正回路及び符号誤り訂正方法は、ｐビット長のビットデータ列を有する元データをｉ行ｊ列のマトリックス状に仮想的に配列するものとして、上記各行ｉに位置する各ビットデータを上記各列ｊの順に沿って選択することで、上記元データをインターリーブするものであって、１行当たり２のべき乗のビット長２nを有する記憶領域を複数行備える記憶手段を備えておき、前記元データをビット長２nずつに分けて前記記憶手段の各行の記憶領域に記憶させ、前記ｐビット長が２のべき乗のビット長２x-1と２xの間のビット長となる関係に基づいて設定されたｘビット長において、計数動作によって上位ｘ−ｎビットが前記仮想的なマトリックスにおける前記ｊ列の位置を示し、下位ｎビットが前記仮想的なマトリックスにおける前記ｉ行の位置を示す計数データを生成し、前記計数データの上位ｘ−ｎビットのデータに基づいて、前記ｊ列の位置に存在するビットデータの記憶されている前記記憶手段の記憶領域を指すアドレスデータを生成し、前記計数データの下位ｎビットのデータに基づいて、前記アドレスデータの指す前記記憶領域に記憶されているビットデータのうち、前記ｉ行の位置に存在するビットデータを指すビット選択データを生成し、前記アドレスデータと前記ビット選択データに基づいて、前記記憶手段に記憶させた前記元データの各ビットデータを選択することにより、前記仮想的なマトリックスにおける前記各行ｉと各列ｊの順に沿って前記元データの各ビットデータを選択するインターリーブ処理を行うことを特徴とする。
【００１１】
この本発明によれば、２のべき乗２ｎの記憶手段を用いて元データをインターリーブすることができる。このため、マイクロコンピュータシステムに適した符号誤り訂正回路及び符号誤り訂正方法を提供することができる。また、２のべき乗２ｎの記憶手段を用いることで、マイクロプロセッサを用いた場合に、記憶手段をメモリアクセスする回数を低減することができる。これにより、マイクロプロセッサの負担が低減されると共に、インターリーブに要する処理時間を短縮することができる。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。尚、図１は、本実施形態に係る符号誤り訂正回路の構成を示すブロック図である。
【００１３】
図１において、この符号誤り訂正回路ＥＣＴは、マイクロプロセッサＣＰＵを有する中央演算制御部１と記憶部２とを備えるマイクロコンピュータシステムＭＣＳに付随して設けられ、中央演算制御部１に設けられている上記マイクロプロセッサＣＰＵと協働して、記憶部２中に記憶されている元データをインターリーブする。
【００１４】
また、記憶部２は、各アドレスｒ＝０〜R-1に対応する複数の記憶領域Ｄ０〜ＤＲ−１を有し、各記録領域Ｄ０〜ＤＲ−１は、２のべき乗２ｎ（ｎは任意の正整数、以下同じ）で表されるビット長のデータを記憶できるようになっている。例えば、記憶部２は、マイクロプロセッサＣＰＵがデータ処理を行うのに適した、８ビット／ワード構成、１６ビット／ワード構成、３２ビット／ワード構成などで複数ワードの記憶容量を有している。
【００１５】
符号誤り訂正回路ＥＣＴは、行レジスタ６、比較器７、行カウンタ８、列レジスタ９、比較器１０、列カウンタ１１、加算器１２、プリセッタブルカウンタ１３、アドレスデコーダ１４、ビットデコーダ１５、データレジスタ１６、ビットセレクタ１７を備えて構成されている。また、これら各構成要素６〜１７は、マイクロコンピュータシステムＭＣＳのコントロールバス３とアドレスバス４及びデータバス５に適宜接続されており、マイクロプロセッサＣＰＵの制御下で動作する。
【００１６】
行レジスタ６は、マイクロプロセッサＣＰＵからデータバス５を介して供給される行指定データＤiを保持し、その行指定データＤiを比較器７に供給する。
【００１７】
行カウンタ８は、バイナリカウンタであり、マイクロプロセッサＣＰＵからコントロールバス３を介して供給される制御信号ＣＮＴ１に従ってリセットと計数動作を行い、それによって生じる行計数データＤicを比較器７に供給する。
【００１８】
比較器７は、行指定データＤiと行計数データＤicの値を比較し、比較結果を示す行比較データＤicpを、データバス５を介してマイクロプロセッサＣＰＵへ転送する。
【００１９】
列レジスタ９は、マイクロプロセッサＣＰＵからデータバス５を介して供給される列指定データＤjを保持し、その列指定データＤjを比較器１０に供給する。
【００２０】
行カウンタ１１は、バイナリカウンタであり、マイクロプロセッサＣＰＵからコントロールバス３を介して供給される制御信号ＣＮＴ２に従ってリセットと計数動作を行い、それによって生じる列計数データＤjcを比較器１０に供給する。
【００２１】
比較器１０は、列指定データＤjと列計数データＤjcの値を比較し、比較結果を示す列比較データＤjcpを、データバス５を介してマイクロプロセッサＣＰＵへ転送する。
【００２２】
プリセッタブルカウンタ１３は、並列入力並列出力型のバイナリカウンタである。マイクロプロセッサＣＰＵからコントロールバス３を介して供給される制御信号ＣＮＴ３に従って、列カウンタ１１の列計数データＤjc又は加算器１２の加算データＤadをプリセットする。また、そのプリセットしたデータＤjc又はＤadを制御信号ＣＮＴ３に従ってインクリメントする。
【００２３】
尚、インターリーブすべき元データＤinの１ブロック長がｐ個のビットから成る場合には、上記各記録領域Ｄ０〜ＤＲ−１のビット長２ｎとの関係から、プリセッタブルカウンタ１３は、次式（１）の条件を満足するビット長ｘのバイナリカウンタが用いられる。
２ｘ−１＜ｐ≦２ｘ        （１）
例えば、元データＤinの１ブロック長がｐ＝３０ビット、上記各記録領域Ｄ０〜ＤＲ−１のビット長が２ｎ＝８ビットであれば、２４＜３０≦２５となるので、上記式（１）の条件から、ｘ＝５ビット長のバイナリカウンタが用いられる。
【００２４】
また、例えば、元データＤinの１ブロック長がｐ＝４８ビット、上記各記録領域Ｄ０〜ＤＲ−１のビット長が２ｎ＝１６ビットであれば、２５＜４８≦２６となるので、上記式（１）の条件から、ｘ＝６ビット長のバイナリカウンタが用いられる。
【００２５】
加算器１２は、マイクロプロセッサＣＰＵからコントロールバス３を介して供給される制御信号ＣＮＴ５に従って、列レジスタ９から出力される列指定データＤjとプリセッタブルカウンタ１３から出力されるｘビット長の計数データＤｘをデジタル加算し、その加算データＤad（＝Ｄj＋Ｄｘ）を出力する。
【００２６】
アドレスデコーダ１４は、プリセッタブルカウンタ１３から出力される上記ｘビット長の計数データＤｘのうち、最上位ビット（ＭＳＢ）側からｘ−ｎ個のバイナリデータＤＭをバイナリデコードし、そのデコード結果を示すアドレスデータＤＡＤＲをデータバス５を介してマイクロプロセッサＣＰＵへ転送する。
【００２７】
ビットデコーダ１５は、プリセッタブルカウンタ１３から出力される上記計数データＤｘのうち、最下位ビット（ＬＳＢ）側からｎ個のバイナリデータＤＬをバイナリデコードし、そのデコード結果を示すセレクトデータＤＢＴをビットセレククタ１７に供給する。
【００２８】
データレジスタ１６は、並列入力並列出力型のバイナリレジスタであり、その記憶容量は、記憶部２の各記録領域Ｄ０〜ＤＲ−１に記憶される各データ（インターリーブすべきデータ）と同じビット長２ｎに設定されている。また、詳細については後述するが、マイクロプロセッサＣＰＵからコントロールバス３を介して制御信号ＣＮＴ４が供給されると、記憶部２から読み出されたデータ（インターリーブすべきデータ）をデータバス５を介して入力（ロード：load）し、そのデータＤＬＤを保持しつつビットセレクタ１７側へ並列出力する。
【００２９】
ビットセレクタ１７は、マルチプレクサで形成され、データレジスタ１６から供給される上記データＤＬＤのうち、セレクトデータＤＢＴで指定される１ビットのみのデータＤoutを選択して出力する。
【００３０】
より具体的には、図２に示すように、ビットセレクタ１７は、データレジスタ１６の２ｎビット分の出力端子Ｑ０〜Ｑｎ−１に並列接続されたスイッチ素子Ｓ０〜Ｓｎ−１を備えて構成されており、各スイッチ素子Ｓ０〜Ｓｎ−１の導通／非導通の制御がセレクトデータＤＢＴによって行われる。また、スイッチ素子Ｓ０〜Ｓｎ−１は、セレクトデータＤＢＴによって何れか１つだけが排他的に導通するようになっている。そして、データＤoutをインターリーブの施されたデータとして出力し、マイクロコンピュータシステムＭＣＳ側へ転送する。
【００３１】
尚、プリセッタブルカウンタ１３から出力される下位ｎビット分のバイナリデータＤＬが０のときには、セレクトデータＤＢＴによって最上位ビットのスイッチ素子Ｓｎ−１のみが導通となり、バイナリデータＤＬが１増加する毎に、セレクトデータＤＢＴによってスイッチ素子がＳｎ−２，Ｓｎ−３〜Ｓ１，Ｓ０の順で排他的に導通するようになっている。
【００３２】
但し、本実施形態では、ビットセレクタ１７をマルチプレクサで構成しているが、セレクトデータＤＢＴに応じてデータレジスタ１６のデータＤＬＤをビットシフトするシフトレジスタを用い、そのシフトレジスタがシフトした結果の最上位ビト（ＭＳＢ）のビットデータを出力Ｄoutとして選択的に出力する構成にしても良い。
【００３３】
次に、かかる構成を有する符号誤り訂正回路ＥＣＴの動作例を図３〜図８を参照して説明する。
【００３４】
尚、説明の便宜上、図３（ａ）に示すように、インターリーブすべき元データＤinは、１ブロック当たりｐビット長から成るビット列Ｃ０〜Ｃｐ−１のデータであるものとする。また、この元データＤinをインターリーブすることで、図３（ｂ）に示すようなビット配列のデータＤoutに変換するものとする。
【００３５】
つまり、アルゴリズムを説明すれば、図４に模式的に示すように、ビット列Ｃ０〜Ｃｐ−１を各行ｉに５ビット長ずつに分けてマトリックス状に仮想的に配列した後、ｊ＝０列目のビット列Ｃ０，Ｃ５，Ｃ１０，Ｃ１５……を上から下へ順に読み出し、それが終わるとｊ＝１列目のビット列Ｃ１，Ｃ６，Ｃ１１，Ｃ１６……を上から下へ順に読み出し、それが終わるとｊ＝２列目のビット列Ｃ２，Ｃ７，Ｃ１２，Ｃ１７……を上から下へ順に読み出すというようにして、最後のビットデータＣｐ−１まで読み出すことで、インターリーブを行うものとする。
【００３６】
更に、記憶部２の各記録領域Ｄ０〜ＤＲ−１は、８ビット／ワード構成となっているものとする。この場合には、マイクロプロセッサＣＰＵは、図６に示すように、元データＤinを８ビットずつに分割して、記憶部２の記憶領域Ｄ０，Ｄ１，Ｄ２・・・に記憶させる。つまり、記憶領域Ｄ０の各ビットＡ０，７〜Ａ０，０にビットデータＣ０〜Ｃ７を記憶させ、次の記憶領域Ｄ１にビットデータＣ８〜Ｃ１５を記憶させ、次の記憶領域Ｄ２にビットデータＣ１６〜Ｃ２３を記憶させるというように、元データＤinを８ビットずつ記憶させる。また、ｐ個のビットデータＣ０〜Ｃｐ−１が８ビットずつに分けられない場合には、最後に記憶されたビットデータＣｐ−１に続く残りのビットはそのまま（Don't Care）にする。
【００３７】
更にまた、本発明をより理解しやすくするために、上記元データＤinは１ブロック当たりｐ＝３０ビットのビット列Ｃ０〜Ｃ２９で構成され、更に各ビットデータＣ０〜Ｃ２９は、図５（ａ）に示すように、｛Ｃ０，Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，Ｃ６，Ｃ７，Ｃ８，Ｃ９，Ｃ１０，Ｃ１１，Ｃ１２，Ｃ１３，Ｃ１４，Ｃ１５，Ｃ１６，Ｃ１７，Ｃ１８，Ｃ１９，Ｃ２０，Ｃ２１，Ｃ２２，Ｃ２３，Ｃ２４，Ｃ２５，Ｃ２６，Ｃ２７，Ｃ２８，Ｃ２９｝＝｛０，１，０，１，１，０，１，０，１，０，１，０，０，１，０，１，０，１，０，０，０，０，０，０，１，０，０，０，１，０｝であるものとする。
【００３８】
そして、図４に対応する図５（ｂ）のアルゴリズムに示すように、ビット列Ｃ０〜Ｃｐ−１を各行ｉに５ビット長ずつに分けてマトリックス状に配列して、各列ｊ毎に上から下へ順に読み出すのと同様な操作によってインターリーブを行うものとする。また、マイクロプロセッサＣＰＵは、図６に対応する図５（ｃ）に示すように、元データＤinを、８ビット／ワード構成となっている各記録領域Ｄ０〜ＤＲ−１に８ビット長ずつに分割して記憶させる。
【００３９】
次に、図７に示すフローチャートに基づいて動作を詳述する。
【００４０】
まずステップ１００において、マイクロプロセッサＣＰＵが、図５（ｃ）に示したように、１ブロック分の元データＤinを記憶部２に記憶させる。
【００４１】
次のステップ１０２において、行レジスタ６と列レジスタ９に初期値を設定する。ここでは、図６（ｂ）に示したアルゴリズムに対応すべく、行レジスタ６の初期値は、行ｉの総数を示すバイナリデータ「６」に設定される。更に、列レジスタ９の初期値は、列ｊの総数を示すバイナリデータ「５」に設定される。これにより、最初の行指定データＤiと列指定データＤjは、Ｄi＝６、Ｄj＝５となる。
【００４２】
次に、ステップ１０４において、列カウンタ１１をクリアする。これにより、列カウンタ１１の列計数データＤjcは、Ｄjc＝０となる。
【００４３】
尚、図示していないが、残りの行カウンタ８とプリセッタブルカウンタ１３及びデータレジスタ１６もリセットする。
【００４４】
こうして初期化処理が完了すると、次のステップ１０６において、比較器１０が、列カウンタ１１の列計数データＤjcと列レジスタ９の列指定データＤjとを比較し、比較結果を示す行比較データＤjcpをマイクロプロセッサＣＰＵ側へ転送する。そして、マイクロプロセッサＣＰＵがその行比較データＤjcpに基づいて、Ｄjc＜Ｄjか否か判定する。Ｄjc＜Ｄjの場合（「ＹＥＳ」の場合）には、ステップ１０８の処理に移行し、Ｄjc≧Ｄjの場合（「ＮＯ」の場合）には、インターリーブが完了したとして、処理を終了する。
【００４５】
ステップ１０８の処理に移行すると、列カウンタ１１の列計数データＤjcをプリセッタブルカウンタ１３に設定（プリセット）する。従って、ステップ１０８が初めて処理されるときは、プリセッタブルカウンタ１３には、Ｄjc＝０がプリセットされ、プリセッタブルカウンタ１３の計数データＤｘも、Ｄｘ＝０になる。
【００４６】
次に、ステップ１１０において、行カウンタ８をクリアする。これにより、行計数データＤicは、Ｄic＝０となる。
【００４７】
次に、ステップ１１２において、比較器１０が、行カウンタ８の行計数データＤicと行レジスタ６の行指定データＤiとを比較し、比較結果を示す行比較データＤicpをマイクロプロセッサＣＰＵ側へ転送する。そして、マイクロプロセッサＣＰＵがその行比較データＤicpに基づいて、Ｄic＜Ｄiか否か判定する。Ｄic＜Ｄiの場合（「ＹＥＳ」の場合）には、ステップ１１６の処理に移行する。Ｄic≧Ｄiの場合（「ＮＯ」の場合）には、ステップ１１４に移行して、列カウンタ１１の列計数データＤicを１インクリメントした後、ステップ１０６からの処理を繰り返す。
【００４８】
このように、ステップ１０６〜１１２の処理が行われると、プリセッタブルカウンタ１３の計数データＤｘは、元データＤinの各ビットデータ列の順番を示すことになる。この計数データＤｘのうちの最上位ビット（ＭＳＢ）側からｘ−ｎ個のバイナリデータＤＭは、図５（ｃ）に示したビットデータ列の行の順番を示すデータとなり、計数データＤｘのうちの最下位ビット（ＬＳＢ）側からｎ＝３個のバイナリデータＤＬは、図５（ｃ）に示した上記行でのＭＳＢからの順番を示すデータとなる。  そして、最初の（第１番目の）ステップ１０６〜１１２の処理では、バイナリデータＤＬによってｉ＝０、バイナリデータＤＭによってｊ＝０が選択されることになる。また、ステップ１１４の処理が行われて、ステップ１０６〜１１２の処理が繰り返されると、列カウンタ１１の列計数データＤjcが１ずつインクリメントされるので、上記バイナリデータＤＭによって、図５（ｂ）の列ｊが１→２→３→４の順に選択される。一方、行ｉについては、ステップ１１０において行計数データＤicがクリアされるので、行ｉ＝０が選択される。
【００４９】
つまり、ステップ１０６〜１１４の処理を行うことにより、バイナリデータＤＭが各列ｊ＝０，１，２，３，４を順番に選択し、一方、バイナリデータＤＬは上記の順番に選択された各列ｊ＝０，１，２，３，４における最初の行ｉ＝０を選択する。こうして何れかの列ｊの最初の行ｉ＝０が選択されて、ステップ１１６の処理に移行する。
【００５０】
ステップ１１６では、ビットデコーダ１５がバイナリデータＤＬをデコードし、そのデコード結果であるセレクトデータＤＢＴをビットセレクタ１７に供給する。
【００５１】
次に、ステップ１１８において、アドレスデコーダ１４がバイナリデータＤＭをデコードし、そのデコード結果であるアドレスデータＤＡＤＲをマイクロプロセッサＣＰＵ側へ転送し、マイクロプロセッサＣＰＵがそのアドレスデータＤＡＤＲを取得する。
【００５２】
次に、ステップ１２０において、マイクロプロセッサＣＰＵが、取得したアドレスデータＤＡＤＲに基づいて記憶部２をメモリアクセスし、アドレスデータＤＡＤＲの指すアドレスｒの記憶領域に記憶されている２ｎ＝８ビット分の元データを読み出して、データレジスタ１６にロードする。
【００５３】
例えば、ステップ１２０の処理が最初に行われた場合には、プリセッタブルカウンタ１３のバイナリデータＤＭは「０」になるので、アドレスデータＤＡＤＲの値も「０」となり、図５（ｃ）に示したアドレスｒ＝０に該当する記憶領域Ｄ０中のビット列｛Ｃ０，Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，Ｃ６，Ｃ７｝＝｛０，１，０，１，１，０，１，０｝がデータレジスタ１６に格納される。
【００５４】
次にステップ１２２において、ビットセレクタ１７が、セレクトデータＤＢＴで指される１ビットのみを導通状態にする。これにより、データレジスタ１６中のデータＤＬＤのうち、セレクトデータＤＢＴの指すビットデータのみが出力される。
【００５５】
例えば、ステップ１２２の処理が最初に行われた場合には、プリセッタブルカウンタ１３のバイナリデータＤＬは「０」になるので、セレクトデータＤＢＴによって図２中のスイッチ素子Ｓｎ−１が導通状態となり、上記ビット列｛０，１，０，１，１，０，１，０｝のうちの最上位ビット、すなわち一番左側のビットデータ”０”が出力される。つまり、図５（ａ）（ｃ）に示すビットＡ０，７のビットデータＣ０＝０が、インターリーブされた第１番目のビット出力Ｄoutとなる。
【００５６】
次に、ステップ１２４において、加算器１２が、列レジスタ９の列指定データＤjとプリセッタブルカウンタ１３の計数データＤxとを加算し、その加算データＤＡＤ（＝Ｄj＋Ｄx）を再びプリセッタブルカウンタ１３にプリセットする。
【００５７】
例えば、ステップ１２４の処理が最初に行われた場合には、列指定データＤjは「５」、計数データＤxは「０」となっているので、加算データＤＡＤは「５」となり、プリセッタブルカウンタ１３には「５」がプリセットされる。この結果、プリセッタブルカウンタ１３のバイナリデータＤＬは「５」となり、バイナリデータＤＭは「０」のままになるので、図５（ａ）（ｃ）に示すビットＡ０，２のビットデータＣ５＝０が選択されることになる。
【００５８】
次に、ステップ１２６において、行カウンタの行計数データＤicをインクリメントする。そして、再びステップ１１２からの処理が繰り返される。
【００５９】
例えば、ステップ１２６の処理が最初に行われた場合には、行計数データＤicは「１」となり、図５（ｂ）に示したｉ＝２の行が指定された後、再びステップ１１２からの処理が繰り返される。
【００６０】
このように、ステップ１１６〜１２６の処理が第１回目のときには、図８（ａ）に表示するように、各データＤｉ，Ｄic，Ｄｊ，Ｄjc，Ｄｘ，ＤＬ，ＤＭ，ＤＡＤＲ，ＤＢＴが変化することにより、元データＤinのビットデータＣ０＝０が第１番目の出力Ｄoutとなる。
【００６１】
次に、再びステップ１１２の処理（２回目の処理）が行われると、このときには未だＤic＜Ｄｉであるので、ステップ１１６〜１２６の処理（２回目の処理）が行われることになる。
【００６２】
この２回目の処理では、プリセッタブルカウンタ１３のバイナリデータＤＭは「０」になるので、図５（ｃ）に示したアドレスｒ＝０に該当する記憶領域Ｄ０に記憶されているビット列｛Ｃ０，Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，Ｃ６，Ｃ７｝＝｛０，１，０，１，１，０，１，０｝がデータレジスタ１６にロードされる。更に、プリセッタブルカウンタ１３のバイナリデータＤＬは「５」になるので、ビットデータＣ５＝０が出力される。つまり、第２回目の処理では、図５（ａ）（ｃ）に示すビットＡ０，２のビットデータＣ５＝０が、インターリーブされた第２番目のビット出力Ｄoutとなる。
【００６３】
このように、ステップ１１６〜１２６の処理が第２回目のときには、図８（ｂ）に表示するように、各データＤｉ，Ｄic，Ｄｊ，Ｄjc，Ｄｘ，ＤＬ，ＤＭ，ＤＡＤＲ，ＤＢＴが変化することにより、元データＤinのビットデータＣ５＝０が第２番目の出力Ｄoutとなる。そして、ステップ１２６において再び行カウンタの行計数データＤicをインクリメントして、再びステップ１１２からの処理が繰り返される。
【００６４】
こうして、ステップ１１６〜１２６の処理が６回繰り返されると、図５（ｂ）に示した列ｊ＝０に該当するビット列｛Ｃ０，Ｃ５，Ｃ１０，Ｃ１５，Ｃ２０｝＝｛０，０，１，１，０，０｝がインターリーブされたビット出力Ｄoutとなる。
【００６５】
次に、第６回目の処理が終了すると、ステップ１１２において、Ｄic＜Ｄｉとなるので、ステップ１１４において列ｊ＝１が設定され、更にステップ１１０において行ｉ＝０が設定された後、ステップ１１６〜１２６の処理が６回繰り返される。つまり、図５（ｂ）に示した列ｊ＝１に該当するビット列｛Ｃ１，Ｃ６，Ｃ１１，Ｃ１６，Ｃ２１｝＝｛１，１，０，０，０，０｝がインターリーブされたビット出力Ｄoutとなる。
【００６６】
以下同様にして、ステップ１０６〜１２６の処理が繰り返されることで、図５（ｂ）に示した列ｊ＝２，３，４に該当する残りのビット列もインターリーブされビット出力Ｄoutとなる。
【００６７】
そして、ステップ１０６において、全ての元データＤinをインターリーブしたと判断すると、処理を終了する。
【００６８】
このように本実施形態によれば、２のべき乗２ｎの記憶部２を用いて元データＤinをインターリーブすることができる。このため、マイクロコンピュータシステムに適した符号誤り訂正回路を提供することができる。また、２のべき乗２ｎの記憶部２を用いると、マイクロプロセッサＣＰＵが記憶部２をメモリアクセスする回数を低減することができる。これにより、マイクロプロセッサＣＰＵの負担が低減されると共に、インターリーブに要する処理時間を短縮することができる。
【００６９】
また、図３（ｂ）に示すインターリーブされたデータＤoutを通信装置によって送信した際、記号＊で示す位置に複数の連続した符号誤りが生じた場合でも、データＤoutをディインターリーブすると、図３（ｃ）に示すようにディインターリーブ後のデータＤＴでは符号誤りが分散されるので、符号誤りを容易に訂正することができる。ちなみに、本実施形態では、４ビット長のガードスペースを得ることができる。
【００７０】
尚、本実施形態では、説明の都合上、８ビット／ワード構成の記憶部２を用いる場合を説明したが、本発明はこれに限定されるものではない。すなわち、２のべき乗２ｎの記憶部であればよい。
【００７１】
また、１ブロック３０ビット長の元データＤinをインターリーブする場合を説明したが、本発明は１ブロック当たり任意の数のビット列の元データをインターリーブすることができる。
【００７２】
また、図５（ｂ）に示したように、元データＤinのビット列を６行５列のマトリックス状に配列して、所定の順序で読み出すようにしてインターリーブを行う場合について説明したが、本発明は６行５列のマトリックスに限定されるものではなく、任意の行数及び列数のマトリックスに配列して、所定の順序で読み出す方式のインターリーブを行うことができる。
【００７３】
また、本実施形態では、符号誤り訂正回路ＥＣＴの動作タイミングを、マイクロプロセッサＣＰＵからの指令にしたがって制御する場合を示したが、マイクロプロセッサＣＰＵとは別に、タイミング制御回路をハードウェアで構成してもよい。そして、このタイミング制御回路の制御下で、比較器７，１０の動作制御と、行カウンタ８及び列カウンタ１１のカウント制御と、行レジスタ６及び列レジスタ９のデータ設定など、その他の構成要素１２〜１７の動作タイミングを制御することで、マイクロプロセッサＣＰＵの負荷をより軽減することができる。
【００７４】
【発明の効果】
以上説明したように本発明によれば、２のべき乗２ｎの記憶手段を用いて元データをインターリーブすることができるため、マイクロコンピュータシステムに適した符号誤り訂正回路及び符号誤り訂正方法を提供することができる。また、２のべき乗２ｎの記憶手段を用いることで、マイクロプロセッサの記憶手段に対するメモリアクセス回数を低減することができる。これにより、マイクロプロセッサの負担が低減されると共に、インターリーブに要する処理時間を短縮することができる。
【図面の簡単な説明】
【図１】本実施形態に係る符号誤り訂正回路の構成を示すブロック図である。
【図２】符号誤り訂正回路に備えられているビットセレクタの構成を示すブロック図である。
【図３】元データとインターリーブされたデータ及びディインターリーブされたデータの各ビット配列を示す説明図である。
【図４】インターリーブのアルゴリズムを説明するための図である。
【図５】記憶部に元データが記憶された状態を示す説明図である。
【図６】１ブロック３０ビットの元データをインターリーブする場合を説明するための図である。
【図７】本実施形態の動作を説明するためのフローチャートである。
【図８】更に本実施形態の動作を説明するための説明図である。
【符号の説明】
１…中央演算制御装置
２…記憶部
３…コントロールバス
４…アドレスバス
５…データバス
６…行レジスタ
７，１０…比較器
８…行カウンタ
９…列レジスタ
１１…列カウンタ
１２…加算器
１３…プリセッタブルカウンタ
１４…アドレスデコーダ
１５…ビットデコーダ
１６…データレジスタ
１７…ビットセレクタ
【図１】
0003973066.tif 000002
【図２】
0003973066.tif 000003
【図３】
0003973066.tif 000004
【図４】
0003973066.tif 000005
【図５】
0003973066.tif 000006
【図６】
0003973066.tif 000007
【図７】
0003973066.tif 000008
【図８】
0003973066.tif 000009