(57)【特許請求の範囲】
【請求項１】
符号化方法であって、
（ａ）  データを表現する複数個の１６ビットワードを受けとるステップと、
（ｂ）前記複数個の１６ビットワードの各々を第一の８ビット入力ワード及び第二の８ビット入力ワードに分割するステップと、
（ｃ）前記各８ビット入力ワードのディスパリティを計算するステップと、
（ｄ）前記８ビット入力ワードをそれぞれ対応する第一の９ビットコードワード及び第二の９ビットコードワードにマッピングするステップと、
（ｅ）前記９ビットコードワードの各ビットからなる移動デジタル総和（ＲＤＳ）を保持するステップとを含み、
（Ｉ）前記各８ビット入力ワードのマッピングが、当該８ビット入力ワードのディスパリティの関数であり；
（ＩＩ）前記８ビット入力ワードのうちの少なくともいくつかのものの各々のマッピングが、前記ＲＤＳの関数であり；及び、
（ＩＩＩ）前記第一のあるいは第二の８ビット入力ワードのうちの少なくともいくつかのものの各々のマッピングが、対応する前記第二のあるいは第一の８ビット入力ワードの前記ディスパリティの関数であることを特徴とする符号化方法。
【請求項２】
前記８ビット入力ワードのうちの少なくともいくつかのものの各々の前記コードワードへのマッピングが前記８ビットワードを中間写像ワードへマッピングするステップ、及び前記中間写像ワードの二進反転を条件つきで実行するステップ、
を有している請求項１に記載の符号化方法。
【請求項３】
前記条件つき反転が、前記ＲＤＳ値に関連した条件によるものである請求項２に記載の符号化方法。
【請求項４】
前記条件つき反転が、前記ＲＤＳが非負である場合にのみ実行される請求項３に記載の符号化方法。
【請求項５】
前記条件つき反転が、前記第二の８ビット入力ワードの前記ディスパリティに関連する条件によって、前記対応する第一の８ビット入力ワードの前記中間写像に対して実行される請求項２に記載の符号化方法。
【請求項６】
ディスパリティが−２、０、２、または４の８ビット入力ワードの各々の前記マッピングが、それら自体あるいはそれらの２の補数へのマッピングにビット０またはビット１を付加したものに等価である請求項１に記載の符号化方法。
【請求項７】
ディスパリティが０の各８ビット入力ワードがクラスＡワードと呼称されて、ディスパリティが−１あるいは１のコードワードにマッピングされ、
ディスパリティが２あるいは４の各８ビット入力ワードがクラスＢワードと呼称されて、ディスパリティが３あるいは−３のコードワードにマッピングされ、及び、
ディスパリティが−２の各８ビット入力ワードがクラスＣワードと呼称されて、ディスパリティが−１あるいは１のコードワードにマッピングされるようになっている請求項１に記載の符号化方法。
【請求項８】
前記クラスＡの第一あるいは第二の入力ワードが、対応する第二あるいは第一の８ビット入力ワードがクラスＡに属していて、かつ、前記ＲＤＳが負である場合にのみ、ディスパリティ１のコードワードにマッピングされる請求項７に記載の符号化方法。
【請求項９】
前記クラスＡの第一あるいは第二の入力ワードが、対応する第二あるいは第一の８ビット入力ワードがクラスＡに属していて、かつ、前記ＲＤＳが−２である場合にのみ、ディスパリティ１のコードワードにマッピングされる請求項７に記載の符号化方法。
【請求項１０】
前記クラスＢワードが、前記ＲＤＳが非負の場合にのみディスパリティ−３のコードワードにマッピングされる請求項７に記載の符号化方法。
【請求項１１】
前記ＲＤＳが０である場合には、前記第二の８ビット入力ワードである場合のみ、もしくは、第一の８ビット入力ワード及び対応する第二の８ビット入力ワードが少なくとも４以上のディスパリティを有している場合に、前記クラスＢワードがディスパリティ−３のコードワードにマッピングされる請求項１０に記載の符号化方法。
【請求項１２】
前記クラスＣワードが、前記ＲＤＳが負の場合にのみディスパリティ１のコードワードにマッピングされる請求項７に記載の符号化方法。
【請求項１３】
ディスパリティが−８、−６、−４、６、または８の８ビット入力ワードの各々がディスパリティ１のコードワードにマッピングされる請求項７に記載の符号化方法。
【請求項１４】
ディスパリティが−６または−４の８ビット入力ワードの各々がディスパリティ−５あるいは５のコードワードにマッピングされる請求項７に記載の符号化方法。
【請求項１５】
ディスパリティ−８、６、または８の８ビット入力ワードの各々がビット０を付加することによって中間写像ワードにマッピングされ、及び、前記出力コードワードが、前記８ビット写像ワードのディスパリティが前記ＲＤＳの現在値と同一の符号を有する場合に前記中間写像ワードを反転することによって得られる請求項１４に記載の符号化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデジタルデータの符号化に関し、特に、伝送あるいはストレージチャネルへシリアルバイナリデータを配置するための準備段階におけるその種のデータの符号化に関する。さらに詳細に述べれば、本発明は符号化されたデータの周波数パワースペクトルを調節する方法に関する。
【０００２】
【従来の技術】
ブロック符号は、データの光学的ストレージ及び伝送に広く用いられている。この種の符号の利用に従って、バイナリビットよりなる入力ストリームが、固定長の入力ワードに分割される。各入力ワードは、入力ワードの固定長よりも長い第二の固定長を有する、符号化済み出力ワードにマッピングされる。符号化済み出力ワードはコードワードと呼称される。
【０００３】
ブロック伝送符号を用いることにより、いくつかの利点が得られる。これらの利点は、一般に、エラー検出及び回復された信号の品質に関わる。一つの特別な利点は、符号化済み信号のｄｃ成分、すなわち、ゼロ周波数近傍におけるパワースペクトル成分が、適切な符号を用いることによって抑圧されうることである。これは、例えば光通信システムなどにおいて望ましいことである。なぜなら、光ファイバレシーバは、しばしばａｃ結合された入力段を有しているからである。結合が不充分な比較的低周波数領域内の情報内容が抑圧されると、回復された信号の処理が簡潔化され、その信号の品質が改善される。ｄｃ抑圧の別の利点は、信号データからのクロックタイミングの回復の問題が簡潔化されることである。
【０００４】
実際の２レベル信号は、１と０のシーケンスあるいは＋１と−１のシーケンスとして、もしくは他の等価な表現において伝送される。以下、この種の信号全てをバイナリ信号と呼称し、１と０とよりなる信号をこの種の全ての信号を代表するものとして採用することにするが、これは何ら限定を与えるものではない。
【０００５】
種々のブロック伝送符号が当業者には知られている。例えば、公知のマンチェスター（Ｍａｎｃｈｅｓｔｅｒ）符号は、各々の入力ビットを二つの出力ビットにマッピングする。他の公知の符号では、５ビット入力ワードを６ビットコードワードにマッピングする。この種の符号は、５Ｂ／６Ｂ符号と呼称される。さらに別の符号は８Ｂ／１０Ｂ符号である。８Ｂ／１０Ｂ符号の一例は、１９８４年１２月４日付けのＰ．Ａ．Ｆｒａｎａｓｚｅｋらによる米国特許第４，４８６，７３９号に記載されている。Ｆｒａｎａｓｚｅｋらによる符号化方式においては、８Ｂ／１０Ｂコーダが５Ｂ／６Ｂコーダと３Ｂ／４Ｂコーダに分割されている。
【０００６】
【発明が解決しようとする課題】
ｄｃ強度を抑圧する目的で符号化された信号をスペクトル的に調節する目的では、比較的高い冗長性を利用すること、すなわち、コードワードの入力ワードに対する比較的高い長さ比を利用することが一般的には有利である。この理由の一つは、スペクトル的な調節が、少なくとも部分的には、各コードワードにおける１の数が０の数に正確にあるいはほぼ一致する場合に実現されるからである。コードワード中で０に対して１が多すぎる、あるいは１に対して０が多すぎることは、ディスパリティと呼称される。よって、ディスパリティを減少させることがパワースペクトルを改善することになる。しかしながら、与えられた長さを有する全ワードのうち、ゼロあるいは非常に小さいディスパリティを有するものはわずかである。よって、低ディスパリティへの要求は利用可能なコードワードの個数を低減させ、よって、コードワード当たりに伝送されうる情報量を低減する。このことを補償するためには、冗長性を増大させる、すなわち、コードワードの長さを増大させることが必要である。
【０００７】
他方、コードワードの冗長性を増大させることは、通信チャネルを介して送出される情報のグロスレートを低減する。それゆえ、冗長性とディスパリティとの間にはトレードオフが存在する。双方を同時に最小化することは不可能である。よって、適切な冗長性と適切なディスパリティとを組み合わせる符号化方式を見出す必要がある。
【０００８】
【課題を解決するための手段】
本発明に係る符号は、１６／１８Ｂ低ディスパリティ符号である。１６ビット入力ワードは２バイトに分割、すなわち、２つの８ビットワードに分割され、各バイトが９ビットワードにマッピングされる。マッピング下での各入力バイトの写像は、少なくとも一部分、そのディスパリティに依存する。
【０００９】
ある場合には、結果として得られる写像は中間写像ワードであって、それが出力コードワードを得るために反転される。ワードが反転されるとは、その１の各々が０に変換され、その０の各々が１に変換されることである。写像を反転するか否かの決定は、少なくとも一部分、出力の移動デジタル総和（ｒｕｎｎｉｎｇ  ｄｉｇｉｔａｌ  ｓｕｍ；ＲＤＳ）に依存する。移動デジタル総和とは、データストリームの開始時（あるいは、指定された開始点）からの当該デジタルストリームにおける全ての１の総和である。
【００１０】
全ての可能な入力ワードは、そのディスパリティによって、複数個の別個のカテゴリーにグループ分けされる。入力ワードのマッピングに係るルールは、各カテゴリー毎に異なる。
【００１１】
【発明の実施の形態】
８ビットワードに関して可能なディスパリティは、０、±２、±４、±６、及び±８のみである。ディスパリティ０を有する８ビットワードは７０個存在する。ディスパリティ２を有するものは５６個であり、ディスパリティ−２の場合も同様である。ディスパリティ４及び−４のものは２８個である。ディスパリティ６及び−６のものは８個であり、ディスパリティ８及び−８のものは１つずつのみである。
【００１２】
１６ビット入力ワードの各々は、二つの８ビット入力ワードに分割される。ディスパリティ０の８ビット入力ワードは、クラスＡに割り当てられる。ディスパリティ２あるいは４を有する入力はクラスＢに割り当てられる。クラスＢは、ディスパリティ２のものを含むクラスＢ１と、ディスパリティ４のものを含むクラスＢ０にさらに分割される。ディスパリティ−２を有する入力ワードはクラスＣに割り当てられる。他の全ての８ビット入力ワードはクラスＤに割り当てられる。
【００１３】
図１において、列１０は、８ビット入力ワードの種々の可能なディスパリティを示している。列１５は、対応するクラス割り当てを示している。列２０は、各ディスパリティを有する入力ワードの個数を示している。
【００１４】
図１の列２５は、それぞれディスパリティ−３、−１、１、及び３を有する可能な９ビットワードの個数を示している。対応する個数は、それぞれ、８４、１２６、１２６、及び８４である。
【００１５】
図１には、さらに、クラスＡ、Ｂ、及びＣの入力ワードが９ビット写像ワードにマッピングされる際の最初の処理段階も示されている。クラスＡワードは、０ビットを付加することによって、ディスパリティ−１を有するワードにマッピングされる。クラスＢワードは、ディスパリティ３の写像ワードに全てマッピングされる。このことは、入力ワードがクラスＢ１に属する場合には１ビットを付加し、入力ワードがクラスＢ０に属する場合には０ビットを付加することによって実現される。クラスＣワードは、１ビットを付加することによってディスパリティ−１の写像ワードにマッピングされる。
【００１６】
図２は、本発明に係る符号化方式を実装するエンコーダの模式的なブロック図である。この図においては、対応する８ビット入力ワードは
ｘ０７  ｘ０６  ｘ０５  ｘ０４  ｘ０３  ｘ０２  ｘ０１  ｘ００
及び
ｘ１７  ｘ１６  ｘ１５  ｘ１４  ｘ１３  ｘ１２  ｘ１１  ｘ１０
で表現されている。対応する出力ワードは、
ｙ０７  ｙ０６  ｙ０５  ｙ０４  ｙ０３  ｙ０２  ｙ０１  ｙ００  ｂ０
及び
ｙ１７  ｙ１６  ｙ１５  ｙ１４  ｙ１３  ｙ１２  ｙ１１  ｙ１０  ｂ１
で表現されている。表記を簡潔にする目的で、以下の定義を採用する：
【数１】
0003581819.tif 000002
【００１７】
ディスパリティの別名は“ブロックデジタル総和（ＢＤＳ）”である。数学的には、ＢＤＳの定義は
【数２】
0003581819.tif 000003
によって与えられる。
【００１８】
図２のブロック３０は、入力ワードｘ０に関するブロックデジタル総和ＢＤＳ０及び入力ワードｘ１に関するＢＤＳ１を計算するディスパリティチェッカーである。これらの値は、以下に記述されるアルゴリズムなどを表現しているブロック３５に対する入力として供給される。
【００１９】
図２には、”ＲＤＳ”というラベルが付されたループ４０も示されている。このループは、アルゴリズムにおける移動デジタル総和（ＲＤＳ）のフィードバックを表現している。フィードバックされる値は、その直前の値に現時点の出力のＢＤＳを追加したものに等しい。
【００２０】
図３及び図４には、図２のブロック３５に対応するアルゴリズム例をより拡大して表示したものが示されている。図３及び図４に示された流れ図は単に例示目的であり、等価な結果を与える他のアルゴリズムも、本発明の範疇及びその精神内に含まれることが企図されている。特に、順次発生するものとして記述されている種々の操作は、容易に並列実行されうる。
【００２１】
以下、図３及び図４に示された手続きが記述される。この手続きは、クラスＡ入力ワードの各々をディスパリティ−１あるいは１のコードワードにマッピングし、クラスＢの入力ワードの各々をディスパリティ３あるいは−３のコードワードにマッピングし、及び、クラスＣの入力ワードの各々を−１あるいは１のディスパリティを有するコードワードにマッピングする。この手続きは、さらに、クラスＤの入力ワードの各々をディスパリティ１のコードワードにマッピングする。
【００２２】
ブロック４５、５０、及び５５に示されているように、ある種の特別な場合が識別され、特別の処理のために分離される。このような場合よりなるグループの一つにおいては、ＲＤＳの現在値は±２であり、ｘ０及びｘ１の双方がクラスＤに属している。この種の場合が図４のブロック１４０で参照されている。このような場合よりなるグループの別のものは、ＲＤＳの現在値が−２であって、ｘ０及びｘ１がクラスＡに属している場合である。このような場合は、図４のブロック１４５で参照されている。他の全ての場合に関しては、ブロック６０−１３５の操作がまずｘ０次にｘ１に関して実行される。シンボルｘｉは、入力ワードｘ０及びｘ１のうちの現時点のものを示す。
【００２３】
ブロック６０、６５、及び７０に示されているように、ｘｉのクラスに依存して個別の処理が存在する。クラスがＡである場合には、プロセスはブロック７５へ進み、ｙｉがｘｉと等置され、ｂｉが０にセットされる。その後、プロセスはブロック８０へ進む。
【００２４】
クラスがＢの場合には、以下に記述されるようにブロック８５−１２０の操作が実行され、その後処理はブロック８０へ進む。
【００２５】
クラスがＣの場合には、プロセスはブロック１２５へ進み、ｙｉがｘｉと等置され、ｂｉが１にセットされる。その後、現時点でのＲＤＳが非負である場合には、プロセスはブロック８０へ進む。現時点でのＲＤＳが負である場合には、ブロック１３０に示されているように、現時点でのｗｉ（すなわち、現時点でのｙｉｂｉ）が、全ての１を０に変更し、かつ、全ての０を１に変更することによって、その２の補数に変更される。（その２の補数によって置換されるワードは、しばしば“反転された”と言われる。）その後、プロセスはブロック８０へ進む。
【００２６】
クラスがＤの場合には、プロセスはブロック１３５へ進み、ｂｉが１にセットされ、特別のマッピングがｘｉに適用される。この特別のマッピングは、図５及び図６を参照して以下に記述される。ブロック１３５の後、プロセスはブロック８０へ戻る。
【００２７】
入力ワードがクラスＢに属する場合に戻ると、ブロック８５において示されているように、入力ワードがクラスＢ０とクラスＢ１のいずれに属しているのかの決定がまずなされる。ブロック９０及び９５に示されているように、ｙｉはいずれの場合においてもｘｉに等置され、クラスＢ０の場合にはｂｉが０に、クラスＢ１の場合にはｂｉが１に、それぞれセットされる。その後、ブロック１００及び１０５に示されているように、ＲＤＳの現在値が正、０、負のいずれであるかに係る決定がなされる。
【００２８】
ＲＤＳの現在値が正である場合には、現在のｗｉは、ブロック１２０に示されているように、その２の補数に変更され、この手続きはブロック８０に進む。ＲＤＳの現在値が負である場合には、この手続きは現在のｗｉを変更せずにブロック８０へ進む。ＲＤＳの現在値が０の場合には、ブロック１１０に示されているようにさらなる決定がなされる。現在の入力ワードがｘ１である場合には、現在のｗｉ、すなわちｗ１、がブロック１２０に従って変更され、その後手続きはブロック８０へ進む。現在の入力ワードがｘ０である場合には、現在のｗｉ、すなわちｗ０、が、ｘ１のＢＤＳが少なくとも４である場合にのみ、ブロック１２０に従って変更される。他の場合には、手続きは、ブロック１２０へ行くことなくブロック８０に進む。
【００２９】
ブロック８０では、ＲＤＳが現時点の出力ワードに従って更新される。
【００３０】
以下、特別の場合の処理が図４を参照して議論される。
【００３１】
前述されているように、入力ワードｘ０、ｘ１よりなる対が、ＲＤＳの現在値が±２であり、かつ、ｘ０とｘ１の双方がクラスＤに属している場合に、ブロック１４０で参照される。
【００３２】
ブロック１４０では、ＲＤＳの現在値が−２に等しいか否かの決定がなされる。ＲＤＳの現在値が−２に等しい場合には、ブロック１５０に示されているように、ｙ０がｘ０にセットされ、ｂ０が０にセットされ、ｙ１がｘ１に、そしてｂ１が０にそれぞれセットされる。その後、ブロック１５５に示されているように、ｘ０のＢＤＳ及びｘ１のＢＤＳが双方とも正であるか、あるいは双方とも負であるかの決定がなされる。少なくとも一方のＢＤＳ値がゼロである場合、あるいはＢＤＳ値が互いに逆符号を有する場合には、手続きはブロック１６０へ進み、ＲＤＳ値が現時点のｗ０及びｗ１の値に従って更新される。それぞれのＢＤＳ値が共に正あるいは共に負である場合には、ブロック１６５に示されているように、ｘ０のＢＤＳがｘ１のＢＤＳより小さいか否かというさらなる決定がなされる。ｘ０のＢＤＳがｘ１のＢＤＳより小さい場合には、ブロック１７０に示されているように、現在のｗ０がその２の補数によって置換される。ｘ０のＢＤＳがｘ１のＢＤＳより小さくない場合には、ブロック１７５に示されているように、現在のｗ１がその２の補数によって置換される。その後、手続きはブロック１６０へ進む。
【００３３】
ブロック１４０において一対の入力ワードｘ０、ｘ１が参照され、かつ、ＲＤＳの現在値が２である場合には、手続きはブロック１８０に進む。ブロック１８０においては、ｙ０がｘ０にセットされ、ｂ０が０にセットされ、ｙ１がｘ１に、そしてｂ１が０にそれぞれセットされる。その後、ブロック１８５に示されているように、ｘ０のＢＤＳとｘ１のＢＤＳとの和が４であるか否かの決定がなされる。これらのＢＤＳの和が４である場合には、ブロック１９０に示されているように、ｗ０及びｗ１の双方がぞれぞれ対応する２の補数に変更され、手続きはブロック１６０へ進む。ＢＤＳの和が４ではない場合には、さらに、ブロック１９５に示されているように、ｘ０のＢＤＳとｘ１のＢＤＳの双方が共に正であるか、あるいは共に負であるかに係る決定がなされる。少なくとも一方のＢＤＳが０であるか、あるいは、ＢＤＳ値が相異なった符号を有する場合には、手続きはブロック１６０に進む。それぞれのＢＤＳ値が共に正であるか、あるいは共に負である場合には、さらに、ブロック２００に示されているように、ｘ０のＢＤＳがｘ１のＢＤＳより大きいか否かに係る決定がなされる。ｘ０のＢＤＳがｘ１のＢＤＳより大きくない場合には、ブロック２１０に示されているように、現在のｗ１がその２の補数によって置換される。その後、手続きはブロック１６０へ進む。
【００３４】
前述されているように、現在のＲＤＳ値が−２であって、かつ一対の入力ワードｘ０及びｘ１の双方がクラスＡに属する場合には、ｘ０、ｘ１がブロック１４５で参照される。ブロック１４５では、ｙ０がｘ０にセットされ、ｂ０が１にセットされ、ｙ１がｘ１に、そしてｂ１が１にそれぞれセットされる。その後、手続きはブロック１６０へ進む。
【００３５】
前述されているように、現在の入力ワードがクラスＤに属していて図４のブロック１４０で参照されない場合には、図３のブロック１３５において特別のマッピングが起動される。この特別のマッピングの目的は、ディスパリティ±８、±６、あるいは４を有する４６バイトをディスパリティ０の４６バイトにマッピングすることである。ディスパリティ０のものは７０バイトあるため、残りの２４個は特別の信号に用いられる。この種のマッピングを実現するための利用可能な方法が複数個存在することは当業者には明らかである。以下、例示目的のために、図５及び図６を参照して、その種の一例が記述される。他のマッピング方法も本発明の精神及び範疇に含まれることが企図されている。
【００３６】
ブロック２１５に示されているように、入力ワードに含まれる数字“１”の個数が数えられる。この個数が０、すなわち、入力ワードの全ビットが０である場合には、この入力ワードはここでのマッピングによって１０１０００１１にマッピングされる（ブロック２２０）。この個数が８、すなわち、入力ワードの全ビットが１である場合には、０１０１１１００にマッピングされる（ブロック２２５）。この個数が７、すなわち、入力ワードが単一の０のみを有する場合には、処理はブロック２３０へ進む。入力ワードが単一の１のみを有する場合には、処理はブロック２３５へ進む。
【００３７】
“１”が２つあり、双方共入力ワードの左側から４ビット分の中に入っている場合には、ブロック２４０に示されているように、写像は、入力ワードの右側の４ビット分の位置にある数字を００００から１０１０に変更することによって得られる。入力ワードに“１”が２つある他の全ての場合に関しては、手続きはブロック２４５に進む。
【００３８】
ブロック２３０では、ＸＸＸで示される３ビットバイナリ表現が、数字“０”の位置ｊに関して導出される。位置ｊは、最も右側のビットから最も左側のビットに向かって０から７のように数えられる。ｊが１、２、あるいは４である場合には、写像は０１０ＸＸＸ１１となる（ブロック２５０）。ｊが３、５、あるいは６の場合には、写像は１０１ＸＸＸ００となる（ブロック２５５）。ｊが０の場合には、写像は１０１０１００１となる（ブロック２６０）。ｊが１の場合には、写像は１０１１０００１となる（ブロック２６５）。
【００３９】
ブロック２３５では、ＸＸＸで示される３ビットバイナリ表現が、数字“１”の位置ｊに関して導出される。ｊが１、２、あるいは４である場合には、写像は１０１ＸＸＸ１０となる（ブロック２７０）。ｊが３、５、あるいは６の場合には、写像は０１０ＸＸＸ１０となる（ブロック２７５）。ｊが０の場合には、写像は０１００１１０１となる（ブロック２８０）。ｊが１の場合には、写像は００１０１１０１となる（ブロック２８５）。
【００４０】
ブロック２４５では、２つの数字“１”のうちの第二のものの位置ｋが求められる。双方の“１”が最初の５つの位置に含まれる場合には、写像はブロック２９０に従って、入力ワードから求められる。図示されているように、値“１”は位置ｋ＋１及びｋ＋２に割り当てられ、他の全ての位置の数字は入力ワードと同一のままとなる。
【００４１】
ブロック２９５に示されているように、２つの数字“１”のうちの第一のものの位置ｍも求められる。ブロック２４０での条件が適用されないため、ｍは３より大きいことはない。ｋが６である場合には、ブロック３００に示されているように、写像は、入力ワードから、値“１”を最も左の位置及びｍ＋１番目の位置に割り当て、その他を全ての位置を入力ワードから変更せずにおくことによって求められる。ｋが７である場合には、ブロック３０５に示されているように、写像は、値“１”をｍ＋１及びｍ＋２の位置に割り当て、その他を全ての位置を入力ワードから変更せずにおくことによって求められる。
【００４２】
本発明に係る符号化手続きの一つの利点は、それが、簡潔かつ計算効率の高い復号化手続きを有していることである。この復号化手続きは、図７及び図８を参照して記述される。図７及び図８に記述されている手続きは例示目的であって、等価な結果を実現する他の手続きも本発明の範疇及び精神に従うことが企図されている。
【００４３】
図７には、特別の場合を識別して配置するフィルタ３１０が示されている。フィルタ３１０は、後に図８に関連して記述される。
【００４４】
入力コードワードｙｉ（ｉ＝０，１）がフィルタ３１０によって処理されない場合には、ブロック３１５−３５５よりなる手続きが起動される。図示されているように、この手続きはｙ１に関する参照なしにｙ０に対して、及びｙ０に関する参照なしにｙ１に対して、それぞれ実行される。入力語ｙｉの各々に対して、回復される出力ワード
【数３】
0003581819.tif 000004
は、そのＢＤＳであるＢＤＳｉ及びｂｉを含むそれぞれのｙｉのみから決定される。
【００４５】
ブロック３１５では、ＢＤＳｉ＋２ｂｉ−１という表式が評価される。この表式の値が−３に等しい場合には、回復されるワードは、入力コードワードの２の補数に等しくセットされる。他の場合には、手続きはブロック３２５へ進む。
【００４６】
ブロック３２５及び３３０においては、現在のＢＤＳが０であるか否か（ブロック３２５）、及び現在のｂｉが１に等しいか否か（ブロック３３０）、が決定される。双方の条件が満たされる場合には、回復されるワードはブロック３３５に従って決定される。ブロック３３５では、図５及び図６に示された特別のマッピングの逆が適用される。代表的な場合には、逆方向のマッピングは順方向のマッピングから容易に導出されうるものであり、ここでは逆方向マッピングに関する詳細な記述はなされない。
【００４７】
ブロック３２５の条件あるいはブロック３３０の条件が満たされない場合には、手続きはブロック３４０へ進む。ブロック３４０及び３４５においては、現在のＢＤＳが２に等しいか否か（ブロック３４０）、及び現在のｂｉが０に等しいか否か（ブロック３４５）の決定がなされる。双方の条件が満たされる場合には、ブロック３５０に示されているように、回復されるワードは入力コードワードの２の補数に等しくセットされる。他の場合には、回復されるワードは、ブロック３５５に示されているように、入力コードワードに等しくセットされる。
【００４８】
以下、図８を参照して、特別な場合のフィルタ３１０が記述される。まず、ＢＤＳ０が値０を有するか否か（ブロック３６０）、ＢＤＳ１が値０を有するか否か（ブロック３６５）、ｂ０及びｂ１が等しいか否か（ブロック３７０）、及びＲＤＳの現在値が非零であるか否か（ブロック３７５）、の決定がなされる。これらの条件の全てが満たされる場合には、ブロック３８０に示されているように、
回復されるワード
【数４】
0003581819.tif 000005
はｙ０に等置され、回復されるワード
【数５】
0003581819.tif 000006
はｙ１に等置される。他の場合には、手続きはブロック３８５へ進む。
【００４９】
ブロック３８５及び３９０においては、ＢＤＳ０の絶対値が少なくとも４であるか否か（ブロック３８５）、及びＢＤＳ１の絶対値が少なくとも４であるか否か（ブロック３９０）の決定がなされる。双方の条件が満たされる場合には、手続きはブロック３９５へ進む。他の場合には、手続きはこの特別の場合のフィルタを終了し、図７のブロック３１５へ進む（それぞれのｉの値に関して（ｉ＝０，１））。
【００５０】
ブロック３９５においては、ｂ０の値が１に等しいか否かの決定がなされる。ｂ０の値が１に等しい場合には、回復されるワード
【数４】
0003581819.tif 000007
は入力コードワードｙ０の２の補数にセットされる。他の場合には、回復されるワード
【数４】
0003581819.tif 000008
は入力コードワードｙ０に等置される。その後、手続きはブロック４１０へ戻る。
【００５１】
ブロック４１０においては、ｂ１の値が１に等しいか否かの決定がなされる。ｂ１の値が１に等しい場合には、回復されるワード
【数５】
0003581819.tif 000009
は入力コードワードｙ１の２の補数にセットされる。他の場合には、回復されるワード
【数５】
0003581819.tif 000010
は入力コードワードｙ１に等置される。
【００５２】
図２から図８に関連して前述された手続きの全ては、ソフトウエア、ハードウエアあるいはファームウエアにおいて適切に実装されたプログラムの制御下で、汎用デジタルコンピュータあるいは特定目的デジタルプロセッサによって容易に実行されうる。
【００５３】
本発明の別の実施例が、図９から図１５を参照して以下に記述される。図９には、列１０’に示されているディスパリティ±８、±６、±４、±２、あるいは０の入力ワードが、それぞれのディスパリティに従って、列１５’に示されているクラスＡ、Ｂ０、Ｂ１、Ｃ、Ｄ０、Ｄ１、あるいはＥに割り当てられる方式、が示されている。クラスＢ０及びＢ１は、双方で、クラスＢを構成している。クラスＤ０及びＤ１は、双方で、クラスＤを構成している。それぞれのクラスに属する可能なワード数は列２０’に示されている。０あるいは１をビットとして付加することによる、クラスＡ、Ｂ、Ｃ、及びＤに属する入力ワードの９ビット写像ワードへのマッピングは、図中では矢印によって示されている。列２５’には、結果として得られるクラスの各々における可能な９ビットワードの個数が示されており、列１０’’には、これらのクラスのディスパリティが示されている。
【００５４】
以下、図９に従ったマッピング手続きが図１０から図１４を参照して記述される。この手続きは、クラスＡ入力ワードの各々をディスパリティ−１あるいは１のコードワードに、クラスＢ入力ワードの各々をディスパリティ３あるいは−３のコードワードに、及び、クラスＣ入力ワードの各々をディスパリティ−１あるいは１のコードワードに、それぞれマッピングする。また、この手続きは、クラスＤ入力ワードの各々（すなわち、ディスパリティ−６あるいは−４のコードワード）をディスパリティ−５あるいは＋５のコードワードにマッピングする。この手続きは、さらに、クラスＥ入力ワードの各々を、入力ワードに０をビットとして付加することによって中間写像ワードにマッピングし、そのことによって入力ワードのディスパリティよりも１だけ小さいディスパリティを有するワードを実現する。ある場合には、出力コードワードはこの中間写像ワードと同一である。しかしながら、別の場合には、出力コードワードは、この中間写像ワードを反転することによって求められる。以下に説明されているように、この種の反転は、例えば、８ビット入力ワードのディスパリティがＲＤＳの現在値と同一の符号を有する場合になされる。
【００５５】
図１０のブロック４２５及び４２６に示されているように、ｘ０及びｘ１の双方がクラスＡに属している場合には、特別のマッピング手続きが存在する。ブロック４３０及び４３１に示されているように、ｘ０及びｘ１の双方がクラスＥに属している場合には、特別のマッピング手続きが存在する。いずれの特別の手続きも適用されない場合には、ブロック４３５−４４５に示された段階が入力ワードｘ０及び入力ワードｘ１に関して順次実行される。ブロック４３５−４３６に示されているように、クラスＡ、Ｂ、及びＣのいずれかに属する入力ワードは、図３を参照して既に記述された手続きに従ってマッピングされる。ブロック４４０−４４１に示されているように、クラスＤに属する入力ワードは、以下に図１３に関連して記述されている手続きに従ってマッピングされる。ブロック４４５に示されているように、この段階までに処理されていない入力ワードはクラスＥに属することになる。この種の入力ワードは、以下に図１４に関連して記述されている手続きに従ってマッピングされる。
【００５６】
図１１は、ｘ０及びｘ１の双方がクラスＡに属している場合の特別のマッピング手続きを記述している。ブロック４５０に示されているように、ｙ０はｘ０にセットされ、ｙ１はｘ１にセットされる。ブロック４５５−４５７に示されているように、現在のＲＤＳが負の場合にはｂ０及びｂ１は１にセットされ、それ以外の場合は共に０にセットされる。その後、ブロック４６０に示されているように、ＲＤＳが更新される。
【００５７】
図１２は、ｘ０及びｘ１の双方がクラスＥに属している場合の特別のマッピング手続きを記述している。図１２に示された手続きは、入力ワードｘ０及び入力ワードｘ１に関して順次実行される。ブロック４６５に示されているように、現時点の出力ワードｙｉは現時点の入力ワードｘｉに等置され、現時点のｂｉは０にセットされる。ブロック４７０に示されているように、現在のＲＤＳ及び現在の入力ワードに係るＢＤＳが双方とも正であるか双方とも負であるかに係るテストがなされる。これらのうちのいずれかが真である場合には、ブロック４７５に示されているように、現在のｗｉがその２の補数によって置換される。他の場合にはブロック４７５はスキップされる。その後、プロセスはブロック４８０へ進み、ＲＤＳが更新される。
【００５８】
図１３は、現在の入力ワードがクラスＤに属する場合に実行されるマッピング手続きを記述している。ブロック４８５−４９５に示されているように、現在の出力ワードは現在の入力ワードに等置される。入力ワードがクラスＤ０に属する場合には、現在のｂｉは０にセットされる。現在の入力ワードがクラスＤ１に属する場合には、現在のｂｉは１にセットされる。ブロック５００及び５２０に示されているように、現在のｗｉは、ＲＤＳの現在値が負である場合には、その２の補数によって置換される。ブロック５０５−５２０に示されているように、ＲＤＳの現在値が０であり、かつ、ｘ１が−４あるいはそれより小さいＢＤＳを有する場合には、ｗ０がその２の補数によって置換される。その後、プロセスはブロック５２５へ進み、ＲＤＳが更新される。
【００５９】
図１４は、現在の入力ワードがクラスＥに属する場合に実行されるマッピング手続きを記述している。ブロック５３０に示されているように、このクラスは、２進値“１”を有する数字を０個、７個、あるいは８個有している。ブロック５３５に示されているように、マッピングは、図５に関連して記述された手続きに従って実行される。ブロック５４０に示されているように、現在のｂｉが１にセットされる。その後、ブロック５４５に示されているように、ＲＤＳが更新される。その後、ブロック５５０に示されているように、制御は図１０に戻る。
【００６０】
復号化は、例えば図１５に従って実行される。ブロック５５５は、ある種の特別な場合を識別するフィルタである。ブロック５６０に示されているように、ブロック５５５内で、これら特別な場合の一つでは、入力コードワードｙ０及びｙ１の双方がディスパリティ０を有すること、及び、それぞれに付加されたビットｂ０及びｂ１が等しいことが必要とされる。この場合には、ブロック５７０に示されているように、
【数４】
0003581819.tif 000011
が入力コードワードｙ０に等置され、
【数５】
0003581819.tif 000012
が入力コードワードｙ１のに等置される。ブロック５６５に示されているように、フィルタブロック５５５内では、第二の特別の場合が、入力コードワードｙ０及びｙ１の双方が絶対値で６以上のディスパリティを有していることを必要とする。この場合には、ブロック５７５、５８０、及び５８５に示されているように、ｂ０が０に等しい場合には
【数４】
0003581819.tif 000013
がｙ０に等置され、ｂ０が１に等しい場合には
【数４】
0003581819.tif 000014
がｙ０の２の補数に等置される。さらに、ブロック５９０、５９５、及び６００に示されているように、ｂ１が０に等しい場合には
【数５】
0003581819.tif 000015
がｙ１に等置され、ｂ１が１に等しい場合には
【数５】
0003581819.tif 000016
がｙ１の２の補数に等置される。
【００６１】
フィルタブロック５５５の特別の場合が適用されない場合には、第一入力コードワードｙ０の復号化は第二入力コードワードｙ１に依存せず、かつ、ｙ１の復号化はｙ０に依存しない。従って、ブロック６０５−６３５の手続きが、順次、入力コードワードｙ０及びｙ１に対して、すなわち、入力コードワードｙｉ（ｉ＝０，１）に対して実行される。
【００６２】
ブロック６０５では、入力コードワードのディスパリティに、対応する付加ビットｂｉの２倍を加え、さらに、１を減じたものが−３あるいは＋５に等しいか否かに係るテストが実行される。この条件が満たされる場合には、
【数３】
0003581819.tif 000017
は、ブロック６１０に示されているように、ｙｉの２の補数に等置される。他の場合には、手続きはブロック６１５へ進む。ブロック６１５では、入力コードワードがディスパリティ０を有しているか否か、及び、対応する付加ビットｂｉが１であるか否かのテストが実行される。これら双方の条件が満たされる場合には、入力コードワードは、ブロック６２０に示されているように、図５に示された特別のマッピングを反転することによって復号化される。他の場合には、手続きはブロック６２５へ進む。ブロック６２５では、入力コードワードがディスパリティ２を有しているか否か、及び、対応する付加ビットｂｉが０であるか否かのテストが実行される。双方の条件が満たされる場合には、
【数３】
0003581819.tif 000018
は、ブロック６３０に示されているように、ｙｉの２の補数に等置される。
【００６３】
他の全ての場合には、
【数３】
0003581819.tif 000019
は、ブロック６３５に示されているように、ｙｉに等置される。
【００６４】
以上の説明は、本発明の一実施例に関するもので，この技術分野の当業者であれば、本発明の種々の変形例が考え得るが、それらはいずれも本発明の技術的範囲に包含される。
【００６５】
【発明の効果】
以上述べたごとく、本発明によれば、適切な冗長性と適切なディスパリティとを組み合わせた符号化方法が提供される。
【図面の簡単な説明】
【図１】可能な８ビット入力ワードの、そのディスパリティによる分類例、及び、これら入力ワードのあるクラスの９ビットコードワードへのマッピングを示す図。
【図２】本発明に係る符号化方法の概念レベルでの実施例を示す高次の流れ図。
【図３】本発明に従った符号化方法の一実施例の詳細を示す流れ図。
【図４】本発明に従った符号化方法の一実施例の詳細を示す流れ図。
【図５】図３に示された“特別マッピング”段階の詳細を示す流れ図。
【図６】図３に示された“特別マッピング”段階の詳細を示す流れ図。
【図７】図３及び図４に従って符号化されたワードをデコードする手続き例を示す詳細な流れ図。
【図８】図７の“特別ケースフィルタ”を流れ図の形で展開した図。
【図９】図１に示された分類及びマッピングとは異なった、入力ワードの分類例及び入力ワードのクラスのマッピングを示す図。
【図１０】図９の実施例に従った本発明に係る符号化方法を示す流れ図の一部。図１０に示されている部分は入力ワード、さらにある場合には入力ワード対の分類、及び、入力ワードあるいは入力ワード対のさらなる処理目的での転送に係るものである。
【図１１】図１０に示された流れ図からの続きを表わす流れ図。ある種のクラスを占めるすなわちある特別の場合に対応する入力ワードを処理するためのプロセスを記述している。
【図１２】図１０に示された流れ図からの続きを表わす流れ図。ある種のクラスを占めるすなわちある特別の場合に対応する入力ワードを処理するためのプロセスを記述している。
【図１３】図１０に示された流れ図からの続きを表わす流れ図。ある種のクラスを占めるすなわちある特別の場合に対応する入力ワードを処理するためのプロセスを記述している。
【図１４】図１０に示された流れ図からの続きを表わす流れ図。ある種のクラスを占めるすなわちある特別の場合に対応する入力ワードを処理するためのプロセスを記述している。
【図１５】図１０から図１４に示された手続きに従って符号化されたワードを復号化する手続きの例を示す流れ図。
【符号の説明】
１０、１０’  ８ビットワードのディスパリティを示す列
１０’’  ９ビットワードのディスパリティを示す列
１５、１５’  それぞれが属する組を示す列
２０、２０’  それぞれのディスパリティを有するワードの数
２５、２５’  ９ビットワードの個数
３０  ディスパリティチェッカー
３５  アルゴリズム
４０  ループ
【図１】
0003581819.tif 000020
【図２】
0003581819.tif 000021
【図３】
0003581819.tif 000022
【図４】
0003581819.tif 000023
【図５】
0003581819.tif 000024
【図６】
0003581819.tif 000025
【図７】
0003581819.tif 000026
【図８】
0003581819.tif 000027
【図９】
0003581819.tif 000028
【図１０】
0003581819.tif 000029
【図１１】
0003581819.tif 000030
【図１２】
0003581819.tif 000031
【図１３】
0003581819.tif 000032
【図１４】
0003581819.tif 000033
【図１５】
0003581819.tif 000034