(57)【要約】【課題】データの符号化および復号化を小規模な回路によって実現することができる符号器、復号器および符号化方法を提供すること。【解決手段】第２入力レジスタ１１１２と第１入力レジスタ１１１１は、連結されており、連続した入力データを保持する。ここで、この２つのレジスタが保持するデータにＧ拘束に違反する０ランが検出された場合、０ラン除去用バス１１３０は、Ｇ拘束違反の前のデータと後のデータとをバス転送し、テンポラリレジスタ１１５０において合成させる。このように、バス転送の仕組みを有効に活用することにより、回路を単純化させ、小規模な回路を実現させる。【選択図】        図３
2006286084.tif 000002
【特許請求の範囲】
【請求項１】
ＲＬＬ符号をもちいて符号化をおこなう符号器であって、
データ中に所定の長さよりも長い０ランが検出された場合に、その前後のデータをバス転送によって合成し、所定の長さよりも長い０ランが除去されたデータを生成する０ラン除去手段
を備えたことを特徴とする符号器。
【請求項２】
データ中に所定の長さよりも長い０ランが検出された場合に、生成されたアドレスを記憶手段の所定の位置へバス転送するアドレス転送手段をさらに備えたことを特徴とする請求項１に記載の符号器。
【請求項３】
順序付けされた複数のレジスタから構成された記憶手段をさらに備え、前記レジスタは、前記アドレス転送手段からの出力データと、隣接するレジスタの保持データと、自身の保持データのいずれを入力とするかを選択する選択手段を備えたことを特徴とする請求項２に記載の符号器。
【請求項４】
２つの同じ長さのデータを入力とし、バス転送によって、一方のデータが奇数ビットとなり、他方のデータが偶数ビットになったデータが生成されるようにビット操作をおこなうビット操作手段をさらに備えたことを特徴とする請求項１〜３のいずれか一つに記載の符号器。
【請求項５】
前記ビット操作手段がビット操作をおこなうべきビット位置を決めるために、予め定められたパターンに初期設定され、シフト動作によって前記ビット操作をおこなうべきビット位置を変化させるビット操作位置制御手段をさらに備えたことを特徴とする請求項４に記載の符号器。
【請求項６】
ＲＬＬ符号をもちいて復号化をおこなう復号器であって、
入力されたデータを、バス転送によって、奇数ビットから合成したデータと、偶数ビットから合成したデータとに分離するデータ分離手段
を備えたことを特徴とする復号器。
【請求項７】
アドレスより求めた位置へ所定の長さの０ランをバス転送によって挿入する０ラン挿入手段をさらに備えたことを特徴とする請求項６に記載の復号器。
【請求項８】
ＲＬＬ符号をもちいて符号化をおこなう符号化方法であって、
データ中に所定の長さよりも長い０ランが検出された場合に、その前後のデータをバス転送によって合成し、所定の長さよりも長い０ランが除去されたデータを生成する０ラン除去工程
を含んだことを特徴とする符号化方法。
【請求項９】
データ中に所定の長さよりも長い０ランが検出された場合に、生成されたアドレスを記憶手段の所定の位置へバス転送するアドレス転送工程をさらに含んだことを特徴とする請求項８に記載の符号化方法。
【請求項１０】
２つの同じ長さのデータを入力とし、バス転送によって、一方のデータが奇数ビットとなり、他方のデータが偶数ビットになったデータが生成されるようにビット操作をおこなうビット操作工程をさらに含んだことを特徴とする請求項８または９に記載の符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＲＬＬ（Run Length Limited）をもちいた符号器、復号器および符号化方法に関し、特に、データの符号化および復号化を小規模な回路によって実現することができる符号器、復号器および符号化方法に関するものである。
【背景技術】
【０００２】
磁気ディスクや光ディスクのような記録メディアにデータを記録する場合、記録密度を向上させる等の目的でＲＬＬ符号をもちいてデータを符号化する場合が多い。
【０００３】
ＲＬＬ符号には様々な方式が存在し、それぞれが特徴を有している。本出願人による特許文献１には、置換法を改良することによって高符号化率を実現し、Ｇ拘束に加えてＩ拘束にも対応した符号化方式および復号化方式が開示されている。
【０００４】
【特許文献１】特願２００４−１１７２３９号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この特許文献１の符号化方式および復号化方式は、比較的単純な方式であるが、回路として実装すると回路規模が大きくなってしまうという問題がある。磁気ディスク等において、符号器や復号器は、シンボルと呼ばれる１０ビット程度のパラレルデータを入力として受け取り、これを処理する必要がある。
【０００６】
ＲＬＬによる符号化と復号化の処理は、特定のビット幅を意識して符号化や復号化をおこなうものではなく、本来は、ビット単位で処理するのが適している。これをシンボル単位のパラレルデータを対象にして実行するには、パラレルデータのビットパターンに応じた数の回路を用意することが必要になる。さらに、特許文献１の符号化方式および復号化方式は、複数の拘束条件を満足させる必要があるため、パラレルデータに対して複数の処理をおこなわなければならず、回路が一層大規模化する。
【０００７】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、データの符号化および復号化を小規模な回路によって実現することができる符号器、復号器および符号化方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明は、ＲＬＬ符号をもちいて符号化をおこなう符号器であって、データ中に所定の長さよりも長い０ランが検出された場合に、その前後のデータをバス転送によって合成し、所定の長さよりも長い０ランが除去されたデータを生成する０ラン除去手段を備えたことを特徴とする。
【０００９】
また、本発明は、ＲＬＬ符号をもちいて符号化をおこなう符号化方法であって、データ中に所定の長さよりも長い０ランが検出された場合に、その前後のデータをバス転送によって合成し、所定の長さよりも長い０ランが除去されたデータを生成する０ラン除去工程を含んだことを特徴とする。
【００１０】
この発明によれば、Ｇ拘束に違反した０ランをバス転送によって除去するように構成したので、Ｇ拘束違反の０ランを除去する処理を小規模な回路によって実現することができる。
【００１１】
また、本発明は、上記の発明において、データ中に所定の長さよりも長い０ランが検出された場合に、生成されたアドレスを記憶手段の所定の位置へバス転送するアドレス転送手段をさらに備えたことを特徴とする。
【００１２】
また、本発明は、上記の発明において、データ中に所定の長さよりも長い０ランが検出された場合に、生成されたアドレスを記憶手段の所定の位置へバス転送するアドレス転送工程をさらに含んだことを特徴とする。
【００１３】
この発明によれば、Ｇ拘束違反が検出された場合に、バス転送によってアドレスを所定の位置に転送するように構成したので、Ｇ拘束違反が検出されるたびに異なる位置へアドレスを転送する処理を小規模な回路によって実現することができる。
【００１４】
また、本発明は、上記の発明において、順序付けされた複数のレジスタから構成された記憶手段をさらに備え、前記レジスタは、前記アドレス転送手段からの出力データと、隣接するレジスタの保持データと、自身の保持データのいずれを入力とするかを選択する選択手段を備えたことを特徴とする。
【００１５】
この発明によれば、置換処理の結果を単純な繰り返し構造の記憶手段に記憶するように構成したので、置換処理の結果を記憶するための回路を小規模に抑えることができる。
【００１６】
また、本発明は、上記の発明において、２つの同じ長さのデータを入力とし、バス転送によって、一方のデータが奇数ビットとなり、他方のデータが偶数ビットになったデータが生成されるようにビット操作をおこなうビット操作手段をさらに備えたことを特徴とする。
【００１７】
また、本発明は、上記の発明において、２つの同じ長さのデータを入力とし、バス転送によって、一方のデータが奇数ビットとなり、他方のデータが偶数ビットになったデータが生成されるようにビット操作をおこなうビット操作工程をさらに含んだことを特徴とする。
【００１８】
この発明によれば、Ｉ拘束を満足させるためにデータをインターリーブする処理をバス転送によって実現したので、インターリーブ処理を小規模な回路によって実現することができる。
【００１９】
また、本発明は、上記の発明において、前記ビット操作手段がビット操作をおこなうべきビット位置を決めるために、予め定められたパターンに初期設定され、シフト動作によって前記ビット操作をおこなうべきビット位置を変化させるビット操作位置制御手段をさらに備えたことを特徴とする。
【００２０】
この発明によれば、インターリーブ処理の対象箇所を記憶手段の初期設定とシフト動作によって制御するように構成したので、単純な仕組みによってインターリーブ処理を制御することができる。
【００２１】
また、本発明は、上記の発明において、ＲＬＬ符号をもちいて復号化をおこなう復号器であって、入力されたデータを、バス転送によって、奇数ビットから合成したデータと、偶数ビットから合成したデータとに分離するデータ分離手段を備えたことを特徴とする。
【００２２】
この発明によれば、インターリーブ処理したデータを復元する処理をバス転送によって実現したので、インターリーブ済みデータの復元処理を小規模な回路によって実現することができる。
【００２３】
また、本発明は、上記の発明において、アドレスより求めた位置へ所定の長さの０ランをバス転送によって挿入する０ラン挿入手段をさらに備えたことを特徴とする。
【００２４】
この発明によれば、Ｇ拘束違反の０ランを復元する処理をバス転送によって実現したので、０ランの復元処理を小規模な回路によって実現することができる。
【発明の効果】
【００２５】
本発明によれば、拘束に違反した０ランをバス転送によって除去するように構成したので、Ｇ拘束違反の０ランを除去する処理を小規模な回路によって実現することができるという効果を奏する。
【００２６】
また、本発明によれば、Ｇ拘束違反が検出された場合に、バス転送によってアドレスを所定の位置に転送するように構成したので、Ｇ拘束違反が検出されるたびに異なる位置へアドレスを転送する処理を小規模な回路によって実現することができるという効果を奏する。
【００２７】
また、本発明によれば、置換処理の結果を単純な繰り返し構造の記憶手段に記憶するように構成したので、置換処理の結果を記憶するための回路を小規模に抑えることができるという効果を奏する。
【００２８】
また、本発明によれば、Ｉ拘束を満足させるためにデータをインターリーブする処理をバス転送によって実現したので、インターリーブ処理を小規模な回路によって実現することができるという効果を奏する。
【００２９】
また、本発明によれば、インターリーブ処理の対象箇所を記憶手段の初期設定とシフト動作によって制御するように構成したので、単純な仕組みによってインターリーブ処理を制御することができるという効果を奏する。
【００３０】
また、本発明によれば、インターリーブ処理したデータを復元する処理をバス転送によって実現したので、インターリーブ済みデータの復元処理を小規模な回路によって実現することができるという効果を奏する。
【００３１】
また、本発明によれば、拘束違反の０ランを復元する処理をバス転送によって実現したので、０ランの復元処理を小規模な回路によって実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３２】
以下に添付図面を参照して、この発明に係る符号器、復号器および符号化方法の好適な実施の形態を詳細に説明する。なお、以下の実施例では、（０，Ｇ／Ｉ）＝（０，１０／１０）という拘束条件を満たす符号器および復号器を例にして説明をおこなうが、本発明に係る符号器および復号器は、これ以外の拘束条件を満たすように構成することもできる。
【００３３】
ここで、Ｇ＝１０というＧ拘束条件は、連続する０の個数の最大個数が１０個であることを表す。また、Ｉ＝１０というＩ拘束条件は、偶数／奇数ビットだけをみたときの連続する０の個数の最大個数が１０個であることを表す。また、連続する０のビット列を０ランと呼ぶ。
【実施例】
【００３４】
本実施例に係る符号器は、特許文献１が開示している符号化方式を実装した装置である。特許文献１が開示している符号化方式は、改良された置換法をもちいることによってＧ拘束を満足させ、インターリーブ処理をもちることによってＩ拘束を満足させている。以下の説明では、置換処理をおこなう置換装置と、インターリーブ処理をおこなうインターリーブ装置について解説する。
【００３５】
図１は、本実施例に係る置換装置１０００の構成を示すブロック図である。置換装置１０００は、置換法に基づいて、Ｇ拘束に違反した０ランをアドレスと呼ばれる符合データに置き換える処理をおこなう。アドレスは、Ｇ拘束違反の検出地点以前の「１０」のパターンの出現回数を所定のルールによって変換したもので、置換後は、他のアドレスとともにビット列の先頭にまとめて配置される。
【００３６】
図１に示すように、置換装置１０００は、０ラン除去部１１００と、アドレス生成部１２００と、置換結果格納部１３００とを有する。０ラン除去部１１００は、入力されたシンボルデータのＧ拘束違反を検出し、Ｇ拘束に違反した０ランを除去する処理部である。アドレス生成部１２００は、入力されたシンボルデータにおける「１０」のパターンの出現回数をカウントし、これに基づいてアドレスを生成する処理部である。置換結果格納部１３００は、０ラン除去部１１００がＧ拘束違反の０ランを除去した後のデータと、アドレス生成部１２００が生成したアドレスとを記憶する記憶装置である。
【００３７】
図２は、図１に示した０ラン除去部１１００の構成を示すブロック図である。同図に示すように、０ラン除去部１１００は、第１入力レジスタ１１１１と、第２入力レジスタ１１１２と、０ラン検出回路１１２０と、０ラン除去用バス１１３０と、バスドライバ１１４１〜１１４２と、テンポラリレジスタ１１５０と、セレクタ１１６０とを有する。
【００３８】
第１入力レジスタ１１１１は、入力された最新のシンボルデータを記憶するレジスタであり、シンボルデータと同じ１０ビットの幅をもつ。第２入力レジスタ１１１２は、一つ前に入力されたシンボルデータを記憶するレジスタであり、やはり、シンボルデータと同じ１０ビットの幅をもつ。
【００３９】
０ラン検出回路１１２０は、Ｇ拘束に違反する０ランを検出する回路である。本実施例ではＧ＝１０というＧ拘束条件を満たす必要があるため、第２入力レジスタ１１１２のデータを上位１０ビットとし、第１入力レジスタ１１１１のデータを下位１０ビットとした計２０ビットのデータを参照してＧ拘束違反の検出をおこなう。
【００４０】
０ラン除去用バス１１３０は、第１入力レジスタ１１１１のデータと第２入力レジスタ１１１２のデータをテンポラリレジスタ１１５０に転送するためのバスである。そして、バスドライバ１１４１は、第１入力レジスタ１１１１からテンポラリレジスタ１１５０へのバス転送を制御するドライバであり、バスドライバ１１４２は、第２入力レジスタ１１１２からテンポラリレジスタ１１５０へのバス転送を制御するドライバである。
【００４１】
０ラン除去用バス１１３０は、Ｇ拘束に違反する０ランを除去する役割をもっている。図３は、０ラン除去用バス１１３０による０ラン除去動作を説明するための説明図である。同図に示すように、第２入力レジスタ１１１２の下位５ビットと第１入力レジスタ１１１１の上位６ビットが全て０であったとすると、０が１１ビット連続していることとなり、０ラン検出回路１１２０がＧ拘束違反を検出する。
【００４２】
０ラン検出回路１１２０がＧ拘束違反を検出すると、バスドライバ１１４２は、第２入力レジスタ１１１２のＧ拘束違反が検出された０ラン以前のビットを０ラン除去用バス１１３０を経由して、テンポラリレジスタ１１５０へバス転送する。そして、バスドライバ１１４１は、第１入力レジスタ１１１１のＧ拘束違反が検出された０ラン以降のビットを０ラン除去用バス１１３０を経由して、テンポラリレジスタ１１５０へバス転送する。
【００４３】
こうして、テンポラリレジスタ１１５０には、Ｇ拘束に違反した０ランが除去されたデータが格納されることになる。この処理をバスを利用せずに実装しようとすると、Ｇ拘束違反の０ランの開始位置が複数パターンあるため、そのパターン数分のデータ転送用の回路が必要となる。そして、第１入力レジスタ１１１１や第２入力レジスタ１１１２の幅がさらに広くなった場合には、必要とされる回路数もさらに増大する。
【００４４】
バスによる転送は、転送先を任意に変更できるため、上記のような問題が発生せず、回路規模を小さくすることができる。本実施例に係る置換装置は、このようにＧ拘束に違反する０ランを除去する処理をバスをもちいて実現することにより、回路規模を小さくすることを可能にしている。また、Ｇ拘束条件が変化した場合も、０ラン除去用バス１１３０の幅を変更するだけで対応することができる。
【００４５】
テンポラリレジスタ１１５０は、Ｇ拘束に違反した０ランが除外されたデータが転送され、これを一時的に記憶するレジスタであり、シンボルデータと同じ１０ビットの幅をもつ。０ラン検出回路１１２０がＧ拘束違反を検出しなかった場合には、テンポラリレジスタ１１５０には第２入力レジスタ１１１２の内容がそのまま転送される。
【００４６】
セレクタ１１６０は、第２入力レジスタ１１１２へ入力されるデータを選択する選択器である。セレクタ１１６０は、０ラン検出回路１１２０がＧ拘束違反を検出した場合は、０ラン除去用バス１１３０の出力内容を第２入力レジスタ１１１２へ入力させ、Ｇ拘束違反を検出しなかった場合は、第１入力レジスタ１１１１の内容を第２入力レジスタ１１１２へ入力させる。
【００４７】
０ラン検出回路１１２０がＧ拘束違反を検出した場合に０ラン除去用バス１１３０の出力内容を第２入力レジスタ１１１２へ入力させるのは、０ランを除去したビット列に次のシンボルデータと連結するＧ拘束違反の０ランが残っているかもしれないためである。
【００４８】
図４は、図１に示したアドレス生成部１２００の構成を示すブロック図である。同図に示すように、アドレス生成部１２００は、１０検出部１２１０と、アキュミュレータ１２２０と、アドレスレジスタ１２３０と、エンコーダ１２４０とを有する。
【００４９】
１０検出部１２１０は、入力されたシンボルデータ中に含まれる「１０」のパターンの数を検出する回路である。「１０」のパターンは、一つ前のシンボルデータの末尾から始まっている場合もあるため、１０検出部１２１０は、第２入力レジスタ１１１２の最下位ビットと第１入力レジスタ１１１１の全ビットを組み合わせた１１ビットのデータを入力として受け取る。
【００５０】
アキュミュレータ１２２０は、１０検出部１２１０が今回検出した「１０」のパターンの件数を以前検出した件数に加算する加算器である。アドレスレジスタ１２３０は、アキュミュレータ１２２０が加算した結果、すなわち、「１０」のパターンの検出数の累計値を記憶するレジスタである。
【００５１】
エンコーダ１２４０は、アドレスレジスタ１２３０が記憶する「１０」のパターンの検出数の累計値を所定のルールに基づいて変換し、アドレスを生成する処理部である。ここで、エンコーダ１２４０が生成するアドレスのフォーマットについて説明しておく。
【００５２】
図５は、アドレスのフォーマットを示す構成図である。同図に示すように、アドレスは、８ビットのアドレスコードと、１ビットのマーカと、１ビットのデリミタとからなる。アドレスコードは、「１０」のパターンの検出数の累計値を変換した結果である。マーカは、１であれば、後続のデータがインターリーブ処理前であることを表し、０であれば、インターリーブ処理済みであることを表す。デリミタは、１であれば、このアドレスの次がデータあることを表し、０であれば、このアドレスの次が別のアドレスであることを表す。
【００５３】
図６は、図１に示した置換結果格納部１３００の構成を示すブロック図である。同図に示すように、置換結果格納部１３００は、アドレス用バス１３１０と、バスドライバ１３２０と、レジスタ１３３０ａ〜１３３０ｎと、セレクタ１３４０ａ〜１３４０ｎとを有する。なお、レジスタとセレクタは、ここでは３個ずつ図示しているが、数は特定しないものとする。
【００５４】
アドレス用バス１３１０は、０ラン除去部１１００においてＧ拘束違反の０ランが検出された場合に、アドレス生成部１２００が生成したアドレスをレジスタ１３３０ａ〜１３３０ｎのいずれかに転送するためのバスであり、バスドライバ１３２０は、バス転送を制御するドライバである。
【００５５】
特許文献１による符号化方式では、Ｇ拘束違反の０ランがみつかるたびにアドレスを前から順に追加していく必要がある。このため、アドレス用バス１３１０は、０ラン除去部１１００がＧ拘束違反の０ランを検出するたびに、アドレスの転送先のレジスタを変更する。この処理をバスを利用せずに実装しようとすると、転送先のレジスタの数だけ回路が必要となる。
【００５６】
バスによる転送は、転送先を任意に変更できるため、上記のような問題が発生せず、回路規模を小さくすることができる。本実施例に係る置換装置は、このようにアドレスをデータの前に配置する処理をバスをもちいて実現することにより、回路規模を小さくすることを可能にしている。また、置換結果格納部１３００に保持するデータのサイズの変更が必要になった場合でも、繰り返し構造であるレジスタ１３３０ａ〜１３３０ｎとセレクタ１３４０ａ〜１３４０ｎの組み合わせの数を変更するだけで対応することが可能になっている。
【００５７】
レジスタ１３３０ａ〜１３３０ｎは、シンボルデータと同じ１０ビットの幅をもつレジスタであり、連続した大きなバッファとして機能する。このバッファは、０ラン除去部１１００においてＧ拘束違反の０ランが検出された場合に、アドレス生成部１２００が生成したアドレスを先頭から格納していく。また、０ラン除去部１１００においてＧ拘束違反の０ランが検出されなかった場合に、０ラン除去部１１００のテンポラリレジスタ１１５０のデータを末尾からシフト動作をおこなって格納していく。
【００５８】
セレクタ１３４０ａ〜１３４０ｎは、対応するレジスタへ入力されるデータを選択する選択器であり、レジスタ１３３０ａ〜１３３０ｎに対応して一つずつ存在する。セレクタ１３４０ａ〜１３４０ｎは、０ラン除去部１１００がＧ拘束違反の０ランが検出し、対応するレジスタへアドレスが転送される場合には、アドレス用バス１３１０からのデータを入力させる。
【００５９】
０ラン除去部１１００がＧ拘束違反の０ランが検出しなかった場合は、バッファの末尾に相当するレジスタ１３３０ｎに対応するセレクタ１３４０ｎは、テンポラリレジスタ１１５０のデータを入力させる。このとき、既にアドレス以外のデータが格納されているレジスタの上位のレジスタに対応するセレクタは、下位のレジスタのデータを入力させる。０ラン除去部１１００がＧ拘束違反の０ランが検出しなかった場合は、このような仕組みによりシフト動作が実現される。
【００６０】
上記に該当しない場合は、セレクタ１３４０ａ〜１３４０ｎは、対応するレジスタの内容をそのままレジスタに入力させ、値をそのまま保持させる。
【００６１】
次に、本実施例に係る置換装置１０００の動作について例を示して説明する。図７は、本実施例に係る置換装置１０００の動作を説明するための入力データを示すサンプル図である。同図に示すように、以下の動作例においては、「１０１０００１００１」という入力データ１０と、「１０００１０００００」という入力データ２０と、「００００００００００」という入力データ３０と、「００００００１１０１」という入力データ４０と、「０１０００１１１０１」という入力データ５０とが、置換装置１０００に入力されるものとする。
【００６２】
図８〜１５は、本実施例に係る置換装置１０００の動作を説明するための説明図である。図８は、入力データ１０が入力された後に、入力データ２０が入力された場面を示している。同図に示すように、入力データ２０が入力されたことにより、アドレス生成部１２００のアドレスレジスタ１２３０は、「１０」のパターンの検出数の累計値が４に更新される（ステップＳ１００１）。また、０ラン検出回路１１２０がＧ拘束違反を検出しないため、０ラン除去用バス１１３０を経由して、第２入力レジスタ１１１２の内容がテンポラリレジスタ１１５０に転送される（ステップＳ１００２）。
【００６３】
続いて、図９に示すように、テンポラリレジスタ１１５０の内容が、末尾のレジスタであるレジスタ１３３０ｎに転送される（ステップＳ１１０１）。また、アドレス生成部１２００では、アドレスレジスタ１２３０の内容が更新されたのにともなって、エンコーダ１２４０が新たにａｄｄｒ−１というアドレスを生成するようになる（ステップＳ１１０２）。そして、０ラン検出回路１１２０がＧ拘束違反を検出しないため、第２入力レジスタ１１１２に第１入力レジスタ１１１１の内容が転送される（ステップＳ１１０３）。
【００６４】
図１０は、入力データ３０が入力された場面を示している。同図に示すように、入力データ３０が入力されても「１０」のパターンは検出されないため、アドレスレジスタ１２３０の値は、４のままとなる（ステップＳ１２０１）。また、０ラン検出回路１１２０がＧ拘束違反を検出するため、テンポラリレジスタ１１５０には、０ラン除去用バス１１３０を経由して、第１入力レジスタ１１１１のデータと第２入力レジスタ１１１２のデータからＧ拘束違反の０ランを除去したものが転送される（ステップＳ１２０２）。
【００６５】
続いて、図１１に示すように、Ｇ拘束違反が検出されたために、エンコーダ１２４０が生成したａｄｄｒ−１というアドレスが、アドレス用バス１３１０を経由して、先頭のレジスタであるレジスタ１３３０ａに転送される（ステップＳ１３０１）。ここで、アドレスレジスタ１２３０の内容は更新されていないため、エンコーダ１２４０が生成するアドレスは、ａｄｄｒ−１のままとなる（ステップＳ１３０２）。また、０ラン検出回路１１２０がＧ拘束違反を検出したため、第１入力レジスタ１１１１のデータと第２入力レジスタ１１１２のデータからＧ拘束違反の０ランを除去したものが第２入力レジスタ１１１２に転送される（ステップＳ１３０３）。
【００６６】
図１２は、入力データ４０が入力された場面を示している。同図に示すように、入力データ４０が入力されたことにより、アドレスレジスタ１２３０は、「１０」のパターンの検出数の累計値が５に更新される（ステップＳ１４０１）。また、０ラン検出回路１１２０がＧ拘束違反を検出するため、テンポラリレジスタ１１５０には、０ラン除去用バス１１３０を経由して、第１入力レジスタ１１１１のデータと第２入力レジスタ１１１２のデータからＧ拘束違反の０ランを除去したものが転送される（ステップＳ１４０２）。
【００６７】
続いて、図１３に示すように、Ｇ拘束違反が検出されたために、エンコーダ１２４０が生成したａｄｄｒ−１というアドレスが、アドレス用バス１３１０を経由して、２番目のレジスタであるレジスタ１３３０ｂに転送される（ステップＳ１５０１）。ここで、アドレスレジスタ１２３０の内容が更新されたのにともなって、エンコーダ１２４０が新たにａｄｄｒ−２というアドレスを生成するようになる（ステップＳ１５０２）。また、０ラン検出回路１１２０がＧ拘束違反を検出したため、第１入力レジスタ１１１１のデータと第２入力レジスタ１１１２のデータからＧ拘束違反の０ランを除去したものが第２入力レジスタ１１１２に転送される（ステップＳ１５０３）。
【００６８】
図１４は、入力データ５０が入力された場面を示している。同図に示すように、入力データ５０が入力されたことにより、アドレスレジスタ１２３０は、「１０」のパターンの検出数の累計値が８に更新される（ステップＳ１６０１）。また、０ラン検出回路１１２０がＧ拘束違反を検出しないため、０ラン除去用バス１１３０を経由して、第２入力レジスタ１１１２の内容がテンポラリレジスタ１１５０に転送される（ステップＳ１６０２）。
【００６９】
続いて、図１５に示すように、テンポラリレジスタ１１５０の内容がレジスタ１３３０ｎに転送され、レジスタ１３３０ｎに格納されていた内容はシフト動作によってレジスタ１３３０ｍに転送される（ステップＳ１７０１）。また、アドレスレジスタ１２３０の内容が更新されたのにともなって、エンコーダ１２４０が新たにａｄｄｒ−３というアドレスを生成するようになる（ステップＳ１７０２）。そして、０ラン検出回路１１２０がＧ拘束違反を検出しないため、第２入力レジスタ１１１２に第１入力レジスタ１１１１の内容が転送される（ステップＳ１７０３）。
【００７０】
入力データ５０は、次の入力データが入力された後に、レジスタ１３３０ｎに転送され、レジスタ１３３０ｍとレジスタ１３３０ｎに格納されていたデータは、シフト動作によって上位のレジスタに転送される。こうして、置換結果格納部１３００には、アドレスが上位のレジスタに適切な順序で格納され、Ｇ拘束違反の０ランが除去されたデータが下位のレジスタに適切な順序で格納されることになる。
【００７１】
なお、置換結果格納部１３００においては、アドレスとデータが必ずしも連結されていないため、置換結果格納部１３００からデータを取り出す場合は、前部のアドレスと後部のデータとが連続しているように取り出す必要がある。また、最後のアドレスを取り出す場合は、デリミタの値を１に置き換える必要がある。
【００７２】
次に、本実施例に係る置換装置１０００の処理手順について説明する。図１６は、本実施例に係る置換装置１０００のＧ拘束違反未検出時の処理手順を示す流れ図である。同図に示すように、０ラン除去部１１００がシンボルデータを取得したならば（ステップＳ１８０１）、アドレス生成部１２００が、「１０」のパターンの数を検出する（ステップＳ１８０２）。そして、検出数を加算してアドレスカウンタ１２３０の検出数の累計値を更新し（ステップＳ１８０３）、この累計値に基づいてアドレスの生成をおこなう（ステップＳ１８０４）。
【００７３】
ここで、０ラン除去部１１００でＧ拘束違反が検出されないため（ステップＳ１８０５）、置換結果格納部１３００は、アドレス以外のデータが格納されたレジスタの内容を上位のレジスタにシフトさせる（ステップＳ１８０６）。そして、０ラン除去部１１００は、第２入力レジスタ１１１２の内容をテンポラリレジスタ１１５０へ転記し（ステップＳ１８０７）、置換結果格納部１３００は、テンポラリレジスタ１１５０の内容を末尾のレジスタに格納する。そして、０ラン除去部１１００が、第１入力レジスタ１１１１の内容を第２入力レジスタ１１１２へ転記して一連の処理が完了する（ステップＳ１８０８）。
【００７４】
図１７は、本実施例に係る置換装置１０００のＧ拘束違反検出時の処理手順を示す流れ図である。同図に示すように、０ラン除去部１１００がシンボルデータを取得したならば（ステップＳ１９０１）、アドレス生成部１２００が、「１０」のパターンの数を検出する（ステップＳ１９０２）。そして、検出数を加算してアドレスカウンタ１２３０の検出数の累計値を更新し（ステップＳ１９０３）、この累計値に基づいてアドレスの生成をおこなう（ステップＳ１９０４）。
【００７５】
ここで、０ラン除去部１１００は、Ｇ拘束違反を検出し（ステップＳ１９０５）、第１入力レジスタ１１１１の内容と第２入力レジスタ１１１２の内容からＧ拘束違反の０ランを除去したものをテンポラリレジスタ１１５０へ転記し（ステップＳ１９０６）、同じものを第２入力レジスタ１１１２へ転記する（ステップＳ１９０７）。そして、置換結果格納部１３００が、アドレス生成部１２００によって当該のＧ拘束違反が検出される前に生成されたアドレスを未使用の先頭のレジスタに転記して一連の処理が完了する（ステップＳ１９０８）。
【００７６】
続いて、インターリーブ装置の説明に移ることとする。図１８は、本実施例に係るインターリーブ装置２０００の構成を示すブロック図である。インターリーブ装置２０００は、置換装置１０００がＧ拘束違反を除去したデータを前半のデータが奇数ビットになり、後半のデータが偶数ビットになるように編成し直す処理をおこなう。このようにビットを編集し直すことにより、Ｉ拘束違反を満足させることが可能になる。
【００７７】
図１８に示すように、インターリーブ装置２０００は、インターリーブ制御用シフトレジスタ２０１０と、入力用シフトレジスタ２０２０と、インターリーブ用バス２０３０と、バスドライバ２０４０と、出力用シフトレジスタ２０５０とを有する。
【００７８】
インターリーブ制御用シフトレジスタ２０１０は、バス転送によりインターリーブ処理をおこなう後半側のデータの位置を指定するためのシフトレジスタである。本実施例に係るインターリーブ装置２０００では、入力用シフトレジスタ２０２０に格納されたデータのうち、先頭の所定のビットと、インターリーブ制御用シフトレジスタ２０１０が指定するビットとをバス転送によってインターリーブ処理する。
【００７９】
入力用シフトレジスタ２０２０は、インターリーブ処理前の入力データが格納されるシフトレジスタである。インターリーブ用バス２０３０は、インターリーブ処理のためにビットを編成し直して転送する機能を備えたバスであり、バスドライバ２０４０は、インターリーブ用バス２０３０を制御するドライバである。出力用シフトレジスタ２０５０は、インターリーブ処理後のデータが格納されるシフトレジスタである。
【００８０】
次に、本実施例に係るインターリーブ装置２０００の動作について例を示して説明する。図１９〜２６は、本実施例に係るインターリーブ装置２０００の動作を説明するための説明図である。
【００８１】
図１９は、入力用シフトレジスタ２０２０にインターリーブ処理前のデータが格納された場面を示している。入力用シフトレジスタ２０２０に格納されたデータは、先頭に２つのアドレスを有したｎビットのデータであるとする。入力用シフトレジスタ２０２０にデータが入力されると、インターリーブ制御用シフトレジスタ２０１０は、先頭からｎ／２＋１ビット目からアドレスの半分の幅のビット（本実施例の場合は５ビット分）が１となり、他のビットは０に初期化される。
【００８２】
図２０は、一つ目のアドレスが出力用シフトレジスタ２０５０に転送された場面を示している。アドレスがインターリーブ用バス２０３０を経由して出力用シフトレジスタ２０５０に一つ転送されると、入力用シフトレジスタ２０２０は、アドレスの幅だけ（本実施例の場合は１０ビット分）データを前方へシフトさせる。また、インターリーブ制御用シフトレジスタ２０１０は、アドレスの幅の半分だけ（本実施例の場合は５ビット分）データを前方へシフトさせる。
【００８３】
図２１は、二つ目のアドレスが出力用シフトレジスタ２０５０に転送された場面を示している。アドレスが出力用シフトレジスタ２０５０に転送されたのにともなって、入力用シフトレジスタ２０２０は、アドレスの幅だけ（本実施例の場合は１０ビット分）データを前方へシフトさせ、インターリーブ制御用シフトレジスタ２０１０は、アドレスの幅の半分だけ（本実施例の場合は５ビット分）データを前方へシフトさせている。なお、アドレスを転送する場合は、インターリーブ用バス２０３０は、インターリーブ処理をおこなわない。
【００８４】
図２２は、全てのアドレスを出力用シフトレジスタ２０５０に転送した後の状態を示している。入力用シフトレジスタ２０２０に格納されたデータは、１０ビットのシフトを２回受けているため、ｎ−２０ビットのサイズとなっている。一方、インターリーブ制御用シフトレジスタ２０１０をみると、５ビットのシフトを２回受けているため、ビットが１に変化する前の部分は、ｎ／２−１０ビットのサイズとなっている。
【００８５】
このように、アドレスを出力用シフトレジスタ２０５０に転送するたびに、インターリーブ制御用シフトレジスタ２０１０をアドレスの半分だけシフトさせることにより、全てのアドレスの転送完了後、インターリーブ制御用シフトレジスタ２０１０のビットが１に変化する部分は、入力用シフトレジスタ２０２０に格納されたデータの後半の先頭部分を示すことになる。
【００８６】
図２３は、データにインターリーブ処理を加えて転送する場面を示している。アドレスの転送が完了すると、入力用シフトレジスタ２０２０は、先頭からアドレスの半分の幅の部分（本実施例の場合は５ビット分）と、インターリーブ制御用シフトレジスタ２０１０においてビットが１に変化している部分のビット（本実施例の場合は５ビット分）とをインターリーブ用バス２０３０を経由して出力用シフトレジスタ２０５０に一つ転送する。このとき、インターリーブ用バス２０３０は、インターリーブ処理をおこなってビットを編成し直す。
【００８７】
図２４は、インターリーブ処理を実現する仕組みを示している。同図に示すように、インターリーブ用バス２０３０は、入力用シフトレジスタ２０２０の先頭からアドレスの半分の幅のビット（本実施例の場合は５ビット分）を奇数ビットにマッピングして転送する。また、インターリーブ制御用シフトレジスタ２０１０においてビットが１に変化している部分のビット（本実施例の場合は５ビット分）を偶数ビットにマッピングして転送する。
【００８８】
特許文献１による符号化方式では、データの内容によってアドレスの数が変化するため、インターリーブ処理を開始するデータの位置と長さは変動する。このため、インターリーブ処理をバスを利用せずに実装しようとすると、非常に大規模な回路が必要となる。
【００８９】
バスによる転送は、転送元を任意に変更でき、また、ビットのマッピングの変更もできるため、上記のような問題が発生せず、回路規模を小さくすることができる。本実施例に係る置換装置は、このようにインターリーブ処理をバスをもちいて実現することにより、回路規模を小さくすることを可能にしている。
【００９０】
図２５は、インターリーブ処理を加えてデータを転送した後の状態を示している。データの転送後、入力用シフトレジスタ２０２０は、アドレスの幅の半分だけ（本実施例の場合は５ビット分）データを前方へシフトさせる。インターリーブ制御用シフトレジスタ２０１０は、シフト動作をおこなわない。
【００９１】
図２６は、再びデータにインターリーブ処理を加えて転送する場面を示している。同図に示すように、５ビット分のシフトをおこなっているため、前回転送した部分の次の部分がインターリーブ処理されて転送されることになる。このようにして、全てのアドレスの転送後、バス転送とシフトを繰り返すことにより、全てのデータのインターリーブが完了する。
【００９２】
このように、本実施例に係るインターリーブ装置２０００は、インターリーブ制御用シフトレジスタ２０１０のシフト動作のみによって、インターリーブ処理のためのバス転送を制御するため、複雑な制御回路を必要としない。また、アドレスのサイズが変わった場合でも、シフトの幅を変更するだけで対応することができ、符号長に依存しない回路を実現することができる。また、インターリーブ用バス２０３０の幅と、インターリーブ制御用シフトレジスタ２０１０を初期化する際に１に設定するビットの幅とを変更するだけで、任意のＩ拘束条件に対応することができる。
【００９３】
次に、本実施例に係るインターリーブ装置２０００の処理手順について説明する。図２７は、本実施例に係るインターリーブ装置２０００の処理手順を示すフローチャートである。ここでは、アドレスのサイズをｍビットとして説明する。
【００９４】
入力用シフトレジスタ２０２０に入力データが格納されたならば、インターリーブ制御用シフトレジスタ２０１０の各ビットのうち、入力データの中間点からｍ／２ビットのみを１に設定し、他のビットは０に設定する（ステップＳ２００１）。
【００９５】
そして、入力用シフトレジスタ２０２０の先頭がアドレスであれば（ステップＳ２００２肯定）、先頭のアドレスを出力用シフトレジスタ２０５０へ移動させ（ステップＳ２００３）、入力用シフトレジスタ２０２０をｍビットシフトし（ステップＳ２００４）、インターリーブ制御用シフトレジスタ２０１０をｍ／２ビットシフトする（ステップＳ２００５）。シフトが完了したならば、ステップＳ２００２に復帰し、入力用シフトレジスタ２０２０の先頭がアドレスであるか否かを確認する。
【００９６】
入力用シフトレジスタ２０２０の先頭がアドレスでなければ（ステップＳ２００２否定）、入力用シフトレジスタ２０２０にデータが残っているかを確認する。ここで、データが残っている場合は（ステップＳ２００６肯定）、入力用シフトレジスタ２０２０のビットのうち、先頭のｍ／２ビットと、インターリーブ制御用シフトレジスタ２０１０で１が立っている部分とをインターリーブ処理して出力用シフトレジスタ２０５０へバス転送する（ステップＳ２００７）。そして、バス転送が完了したならば、入力用シフトレジスタ２０２０のみをｍ／２ビットシフトした後（ステップＳ２００８）、ステップＳ２００６に復帰し、入力用シフトレジスタ２０２０にデータが残っているかを確認する。
【００９７】
なお、上記の説明は、符号器についての説明であるが、バスを利用することで回路規模を小さく抑える手法は、復号器においても有効である。復号器では、まず、インターリーブ処理されたデータを復元する必要があるが、これは、インターリーブ用バス２０３０がおこなうビット操作と逆の動作をバスにおこなわせることにより、回路規模を小さく抑えることができる。
【００９８】
また、アドレスに置換された０ランを復元するには、アドレスをデコードして０ランの挿入位置を判別した後、０ランをその位置に挿入する必要がある。この０ランを挿入したデータを合成する処理は、バス転送を利用することにより、回路規模を拡大させることなく実現することができる。
【００９９】
上述してきたように、本実施例では、Ｇ拘束違反の０ランを除去する処理やインターリーブ処理をバス転送によって実現することとしたので、小規模な回路を実現することができる。
【０１００】
（付記１）ＲＬＬ符号をもちいて符号化をおこなう符号器であって、
データ中に所定の長さよりも長い０ランが検出された場合に、その前後のデータをバス転送によって合成し、所定の長さよりも長い０ランが除去されたデータを生成する０ラン除去手段
を備えたことを特徴とする符号器。
【０１０１】
（付記２）データ中に所定の長さよりも長い０ランが検出された場合に、生成されたアドレスを記憶手段の所定の位置へバス転送するアドレス転送手段をさらに備えたことを特徴とする付記１に記載の符号器。
【０１０２】
（付記３）順序付けされた複数のレジスタから構成された記憶手段をさらに備え、前記レジスタは、前記アドレス転送手段からの出力データと、隣接するレジスタの保持データと、自身の保持データのいずれを入力とするかを選択する選択手段を備えたことを特徴とする付記２に記載の符号器。
【０１０３】
（付記４）２つの同じ長さのデータを入力とし、バス転送によって、一方のデータが奇数ビットとなり、他方のデータが偶数ビットになったデータが生成されるようにビット操作をおこなうビット操作手段をさらに備えたことを特徴とする付記１〜３のいずれか一つに記載の符号器。
【０１０４】
（付記５）前記ビット操作手段がビット操作をおこなうべきビット位置を決めるために、予め定められたパターンに初期設定され、シフト動作によって前記ビット操作をおこなうべきビット位置を変化させるビット操作位置制御手段をさらに備えたことを特徴とする付記４に記載の符号器。
【０１０５】
（付記６）ＲＬＬ符号をもちいて復号化をおこなう復号器であって、
入力されたデータを、バス転送によって、奇数ビットから合成したデータと、偶数ビットから合成したデータとに分離するデータ分離手段
を備えたことを特徴とする復号器。
【０１０６】
（付記７）アドレスより求めた位置へ所定の長さの０ランをバス転送によって挿入する０ラン挿入手段をさらに備えたことを特徴とする付記６に記載の復号器。
【０１０７】
（付記８）ＲＬＬ符号をもちいて符号化をおこなう符号化方法であって、
データ中に所定の長さよりも長い０ランが検出された場合に、その前後のデータをバス転送によって合成し、所定の長さよりも長い０ランが除去されたデータを生成する０ラン除去工程
を含んだことを特徴とする符号化方法。
【０１０８】
（付記９）データ中に所定の長さよりも長い０ランが検出された場合に、生成されたアドレスを記憶手段の所定の位置へバス転送するアドレス転送工程をさらに含んだことを特徴とする付記８に記載の符号化方法。
【０１０９】
（付記１０）２つの同じ長さのデータを入力とし、バス転送によって、一方のデータが奇数ビットとなり、他方のデータが偶数ビットになったデータが生成されるようにビット操作をおこなうビット操作工程をさらに含んだことを特徴とする付記８または９に記載の符号化方法。
【０１１０】
（付記１１）前記ビット操作工程がビット操作をおこなうべきビット位置を決めるために、記憶手段を予め定められたパターンに初期設定し、前記記憶手段のシフト動作によって前記ビット操作をおこなうべきビット位置を変化させるビット操作位置制御工程をさらに含んだことを特徴とする付記１０に記載の符号化方法。
【０１１１】
（付記１２）ＲＬＬ符号をもちいて復号化をおこなう復号化方法であって、
入力されたデータを、バス転送によって、奇数ビットから合成したデータと、偶数ビットから合成したデータとに分離するデータ分離工程
を含んだことを特徴とする復号化方法。
【０１１２】
（付記１３）アドレスより求めた位置へ所定の長さの０ランをバス転送によって挿入する０ラン挿入工程をさらに含んだことを特徴とする付記１２に記載の復号化方法。
【産業上の利用可能性】
【０１１３】
以上のように、本発明に係る符号器、復号器および符号化方法は、ＲＬＬをもちいた符号化および復号化に有用であり、特に、データの符号化および復号化を小規模な回路によって実現することが必要な場合に適している。
【図面の簡単な説明】
【０１１４】
【図１】本実施例に係る置換装置の構成を示すブロック図である。
【図２】図１に示した０ラン除去部の構成を示すブロック図である。
【図３】０ラン除去用バスによる０ラン除去動作を説明するための説明図である。
【図４】図１に示したアドレス生成部の構成を示すブロック図である。
【図５】アドレスのフォーマットを示す構成図である。
【図６】図１に示した置換結果格納部の構成を示すブロック図である。
【図７】本実施例に係る置換装置の動作を説明するための入力データを示すサンプル図である。
【図８】本実施例に係る置換装置の動作を説明するための説明図である。
【図９】本実施例に係る置換装置の動作を説明するための説明図である。
【図１０】本実施例に係る置換装置の動作を説明するための説明図である。
【図１１】本実施例に係る置換装置の動作を説明するための説明図である。
【図１２】本実施例に係る置換装置の動作を説明するための説明図である。
【図１３】本実施例に係る置換装置の動作を説明するための説明図である。
【図１４】本実施例に係る置換装置の動作を説明するための説明図である。
【図１５】本実施例に係る置換装置の動作を説明するための説明図である。
【図１６】本実施例に係る置換装置のＧ拘束違反未検出時の処理手順を示す流れ図である。
【図１７】本実施例に係る置換装置のＧ拘束違反検出時の処理手順を示す流れ図である。
【図１８】本実施例に係るインターリーブ装置の構成を示すブロック図である。
【図１９】本実施例に係るインターリーブ装置の動作を説明するための説明図である。
【図２０】本実施例に係るインターリーブ装置の動作を説明するための説明図である。
【図２１】本実施例に係るインターリーブ装置の動作を説明するための説明図である。
【図２２】本実施例に係るインターリーブ装置の動作を説明するための説明図である。
【図２３】本実施例に係るインターリーブ装置の動作を説明するための説明図である。
【図２４】本実施例に係るインターリーブ装置の動作を説明するための説明図である。
【図２５】本実施例に係るインターリーブ装置の動作を説明するための説明図である。
【図２６】本実施例に係るインターリーブ装置の動作を説明するための説明図である。
【図２７】本実施例に係るインターリーブ装置の処理手順を示すフローチャートである。
【符号の説明】
【０１１５】
１０、２０、３０、４０、５０    入力データ
１０００    置換装置
１１００    ０ラン除去部
１１１１    第１入力レジスタ
１１１２    第２入力レジスタ
１１２０    ０ラン検出回路
１１３０    ０ラン除去用バス
１１４１、１１４２    バスドライバ
１１５０    テンポラリレジスタ
１１６０    セレクタ
１２００    アドレス生成部
１２１０    １０検出部
１２２０    アキュミュレータ
１２３０    アドレスレジスタ
１２４０    エンコーダ
１３００    置換結果格納部
１３１０    アドレス用バス
１３２０    バスドライバ
１３３０ａ〜１３３０ｎ    レジスタ
１３４０ａ〜１３４０ｎ    セレクタ
２０００    インターリーブ装置
２０１０    インターリーブ制御用シフトレジスタ
２０２０    入力用シフトレジスタ
２０３０    インターリーブ用バス
２０４０    バスドライバ
２０５０    出力用シフトレジスタ
【図１】
2006286084.tif 000003
【図２】
2006286084.tif 000004
【図３】
2006286084.tif 000005
【図４】
2006286084.tif 000006
【図５】
2006286084.tif 000007
【図６】
2006286084.tif 000008
【図７】
2006286084.tif 000009
【図８】
2006286084.tif 000010
【図９】
2006286084.tif 000011
【図１０】
2006286084.tif 000012
【図１１】
2006286084.tif 000013
【図１２】
2006286084.tif 000014
【図１３】
2006286084.tif 000015
【図１４】
2006286084.tif 000016
【図１５】
2006286084.tif 000017
【図１６】
2006286084.tif 000018
【図１７】
2006286084.tif 000019
【図１８】
2006286084.tif 000020
【図１９】
2006286084.tif 000021
【図２０】
2006286084.tif 000022
【図２１】
2006286084.tif 000023
【図２２】
2006286084.tif 000024
【図２３】
2006286084.tif 000025
【図２４】
2006286084.tif 000026
【図２５】
2006286084.tif 000027
【図２６】
2006286084.tif 000028
【図２７】
2006286084.tif 000029