(57)【要約】データ送受信システムにおける符号化器１０は、符号化データＥＤに対してバイト単位で畳み込みインターリーブを施すバイト・インターリーバ１２と、このバイト・インターリーバ１２によって生成されたバイト・インターリーブデータＢＩＤに対してパケット単位で畳み込みインターリーブを施すパケット・インターリーバ１３とを有する。一方、復号器２０は、パケット・インターリーブデータＰＩＤ’に対してパケット単位で畳み込みデインターリーブを施すパケット・デインターリーバ２４と、このパケット・デインターリーバ２４によって生成されたバイト・インターリーブデータＢＩＤ’に対してバイト単位で畳み込みデインターリーブを施すバイト・デインターリーバ２５とを有する。小さい符号長からなる誤り訂正符号であってもパケットロスを含む大きなバーストエラーを訂正することを可能とする。
2003085838.tif 000002
【特許請求の範囲】
【請求項１】
入力された複数個のパケットから構成される第１のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みインターリーブを施す第１のインターリーブ手段と、
上記第１のインターリーブ手段によって生成された複数個のパケットから構成される第２のデータに対して、パケット単位でインターリーブを施す第２のインターリーブ手段とを備える、
インターリーブ装置。
【請求項２】
上記第２のインターリーブ手段は、パケット単位のインターリーブの先頭のパケットにおける先頭データの値を置換する、
請求の範囲第１項記載のインターリーブ装置。
【請求項３】
上記先頭データは、上記第１のデータを構成するパケットのヘッダにおけるシンクバイトである、
請求の範囲第２項記載のインターリーブ装置。
【請求項４】
上記第１のインターリーブ手段は、プログラマブルデバイスに内蔵される第１の記憶手段を用いて実装され、
上記第２のインターリーブ手段は、上記プログラマブルデバイスに対して外付けとされる第２の記憶手段を用いて実装される、
請求の範囲第１項記載のインターリーブ装置。
【請求項５】
上記第１の記憶手段は、データワード単位で、当該データワードに同期したクロック毎に不連続なアドレスにアクセスすることが可能なデュアルポートのランダムアクセスメモリである、
請求の範囲第４項記載のインターリーブ装置。
【請求項６】
上記第２の記憶手段は、複数のデータワード単位のデータをバースト転送するのに適したランダムアクセスメモリである、
請求の範囲第４項記載のインターリーブ装置。
【請求項７】
上記第２の記憶手段は、シンクロナス・ダイナミック・ランダムアクセスメモリである、
請求の範囲第６項記載のインターリーブ装置。
【請求項８】
上記第１のデータを構成するパケットは、それぞれ、誤り訂正符号が付加されたものである、
請求の範囲第１項記載のインターリーブ装置。
【請求項９】
上記第１のデータを構成するパケットは、それぞれ、所定のデータに対してＭＰＥＧ−２方式に基づく圧縮符号化を施して得られたトランスポートストリームを構成する複数個のトランスポートパケットに対して、上記誤り訂正符号が付加されたものである、
請求の範囲第８項記載のインターリーブ装置。
【請求項１０】
上記誤り訂正符号は、リード・ソロモン符号である、
請求の範囲第８項記載のインターリーブ装置。
【請求項１１】
上記第１のインターリーブ手段は、バイト単位又は複数の連続するバイト単位で上記第１のデータに対して畳み込みインターリーブを施す、
請求の範囲第１項記載のインターリーブ装置。
【請求項１２】
入力された複数個のパケットから構成される第１のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みインターリーブを施す第１のインターリーブ工程と、
上記第１のインターリーブ工程にて生成された複数個のパケットから構成される第２のデータに対して、パケット単位でインターリーブを施す第２のインターリーブ工程とを備える、
インターリーブ方法。
【請求項１３】
上記第２のインターリーブ工程では、パケット単位のインターリーブの先頭のパケットにおける先頭データの値が置換される、
請求の範囲第１２項記載のインターリーブ方法。
【請求項１４】
上記先頭データは、上記第１のデータを構成するパケットのヘッダにおけるシンクバイトである、
請求の範囲第１３項記載のインターリーブ方法。
【請求項１５】
上記第１のインターリーブ工程は、プログラマブルデバイスに内蔵される第１の記憶手段を用いて行われ、
上記第２のインターリーブ工程は、上記プログラマブルデバイスに対して外付けとされる第２の記憶手段を用いて行われる、
請求の範囲第１２項記載のインターリーブ方法。
【請求項１６】
上記第１の記憶手段として、データワード単位で、当該データワードに同期したクロック毎に不連続なアドレスにアクセスすることが可能なデュアルポートのランダムアクセスメモリが用いられる、
請求の範囲第１５項記載のインターリーブ方法。
【請求項１７】
上記第２の記憶手段として、複数のデータワード単位のデータをバースト転送するのに適したランダムアクセスメモリが用いられる、
請求の範囲第１５項記載のインターリーブ方法。
【請求項１８】
上記第２の記憶手段として、シンクロナス・ダイナミック・ランダムアクセスメモリが用いられる、
請求の範囲第１７項記載のインターリーブ方法。
【請求項１９】
上記第１のデータを構成するパケットは、それぞれ、誤り訂正符号が付加されたものである、
請求の範囲第１２項記載のインターリーブ方法。
【請求項２０】
上記第１のデータを構成するパケットは、それぞれ、所定のデータに対してＭＰＥＧ−２方式に基づく圧縮符号化を施して得られたトランスポートストリームを構成する複数個のトランスポートパケットに対して、上記誤り訂正符号が付加されたものである、
請求の範囲第１９項記載のインターリーブ方法。
【請求項２１】
上記誤り訂正符号は、リード・ソロモン符号である、
請求の範囲第１９項記載のインターリーブ方法。
【請求項２２】
上記第１のインターリーブ工程では、バイト単位又は複数の連続するバイト単位で上記第１のデータに対して畳み込みインターリーブが施される、
請求の範囲第１２項記載のインターリーブ方法。
【請求項２３】
入力された複数個のパケットから構成される第１のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みインターリーブである第１のインターリーブを施し、上記第１のインターリーブによって生成された複数個のパケットから構成される第２のデータに対して、パケット単位で第２のインターリーブを施すことで生成されたデータを構成するパケットの順序を、それぞれ、上記第２のデータを構成するパケットの順序に戻すように、入力された複数個のパケットから構成される第３のデータに対して、パケット単位でデインターリーブを施す第１のデインターリーブ手段と、
上記第２のデータを構成するパケットの順序を、それぞれ、上記第１のデータを構成するパケットの順序に戻すように、上記第１のデインターリーブ手段によって生成された複数個のパケットから構成される第４のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みデインターリーブを施す第２のデインターリーブ手段とを備える、
デインターリーブ装置。
【請求項２４】
上記第２のインターリーブによってパケット単位のインターリーブの先頭のパケットにおける先頭データの値が置換されており、
上記第１のデインターリーブ手段は、上記第２のインターリーブによって値が置換された先頭データに基づいて、上記第３のデータにおける先頭のパケットの同期をとる、
請求の範囲第２３項記載のデインターリーブ装置。
【請求項２５】
上記先頭データは、上記第１のデータを構成するパケットのヘッダにおけるシンクバイトである、
請求の範囲第２４項記載のデインターリーブ装置。
【請求項２６】
上記第１のデインターリーブ手段は、置換された上記先頭データの値を元に戻し、上記第４のデータを生成する、
請求の範囲第２４項記載のデインターリーブ装置。
【請求項２７】
上記第１のデインターリーブ手段は、上記第３のデータを構成するパケットの連続性を示す情報に基づいて、パケットが欠落しているか否かを把握する、
請求の範囲第２３項記載のデインターリーブ装置。
【請求項２８】
上記第１のデインターリーブ手段は、パケットが欠落していることを把握した場合には、欠落したパケットに対応するデータを無効データに置換して上記第４のデータを生成する、
請求の範囲第２７項記載のデインターリーブ装置。
【請求項２９】
上記第１のデインターリーブ手段は、プログラマブルデバイスに対して外付けとされる第１の記憶手段を用いて実装され、
上記第２のデインターリーブ手段は、上記プログラマブルデバイスに内蔵される第２の記憶手段を用いて実装される、
請求の範囲第２３項記載のデインターリーブ装置。
【請求項３０】
上記第１の記憶手段は、複数のデータワード単位のデータをバースト転送するのに適したランダムアクセスメモリである、
請求の範囲第２９項記載のデインターリーブ装置。
【請求項３１】
上記第１の記憶手段は、シンクロナス・ダイナミック・ランダムアクセスメモリである、
請求の範囲第３０項記載のデインターリーブ装置。
【請求項３２】
上記第２の記憶手段は、データワード単位で、当該データワードに同期したクロック毎に不連続なアドレスにアクセスすることが可能なデュアルポートのランダムアクセスメモリである、
請求の範囲第２９項記載のデインターリーブ装置。
【請求項３３】
上記第１のデータを構成するパケットは、それぞれ、所定の誤り訂正符号が付加されたものである、
請求の範囲第２３項記載のデインターリーブ装置。
【請求項３４】
上記第１のデータを構成するパケットは、それぞれ、所定のデータに対してＭＰＥＧ−２方式に基づく圧縮符号化を施して得られたトランスポートストリームを構成する複数個のトランスポートパケットに対して、上記誤り訂正符号が付加されたものである、
請求の範囲第３３項記載のデインターリーブ装置。
【請求項３５】
上記誤り訂正符号は、リード・ソロモン符号である、
請求の範囲第３３項記載のデインターリーブ装置。
【請求項３６】
上記第１のインターリーブは、バイト単位又は複数の連続するバイト単位での畳み込みインターリーブを施すものであり、
上記第２のデインターリーブは、バイト単位又は複数の連続するバイト単位での畳み込みデインターリーブである、
請求の範囲第２３項記載のデインターリーブ装置。
【請求項３７】
入力された複数個のパケットから構成される第１のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みインターリーブである第１のインターリーブを施し、上記第１のインターリーブによって生成された複数個のパケットから構成される第２のデータに対して、パケット単位第２のインターリーブを施すことで生成されたデータを構成するパケットの順序を、それぞれ、上記第２のデータを構成するパケットの順序に戻すように、入力された複数個のパケットから構成される第３のデータに対して、パケット単位でデインターリーブを施す第１のデインターリーブ工程と、
上記第２のデータを構成するパケットの順序を、それぞれ、上記第１のデータを構成するパケットの順序に戻すように、上記第１のデインターリーブ工程にて生成された複数個のパケットから構成される第４のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みデインターリーブを施す第２のデインターリーブ工程とを備える、
デインターリーブ方法。
【請求項３８】
上記第２のインターリーブによってパケット単位のインターリーブの先頭のパケットにおける先頭データの値が置換されており、
上記第１のデインターリーブ工程では、上記第２のインターリーブ工程にて値が置換された先頭データに基づいて、上記第３のデータにおける先頭のパケットの同期がとられる、
請求の範囲第３７項記載のデインターリーブ方法。
【請求項３９】
上記先頭データは、上記第１のデータを構成するパケットのヘッダにおけるシンクバイトである、
請求の範囲第３８項記載のデインターリーブ方法。
【請求項４０】
上記第１のデインターリーブ工程では、置換された上記先頭データの値が元に戻され、上記第４のデータが生成される、
請求の範囲第３８項記載のデインターリーブ方法。
【請求項４１】
上記第１のデインターリーブ工程では、上記第３のデータを構成するパケットの連続性を示す情報に基づいて、パケットが欠落しているか否かが把握される、
請求の範囲第３７項記載のデインターリーブ方法。
【請求項４２】
上記第１のデインターリーブ工程では、パケットが欠落していることを把握した場合には、欠落したパケットに対応するデータを無効データに置換して上記第４のデータが生成される、
請求の範囲第４１項記載のデインターリーブ方法。
【請求項４３】
上記第１のデインターリーブ工程は、プログラマブルデバイスに対して外付けとされる第１の記憶手段を用いて行われ、
上記第２のデインターリーブ工程は、上記プログラマブルデバイスに内蔵される第２の記憶手段を用いて行われる、
請求の範囲第３７項記載のデインターリーブ方法。
【請求項４４】
上記第１の記憶手段として、複数のデータワード単位のデータをバースト転送するのに適したランダムアクセスメモリが用いられる、
請求の範囲第４３項記載のデインターリーブ方法。
【請求項４５】
上記第１の記憶手段として、シンクロナス・ダイナミック・ランダムアクセスメモリが用いられる、
請求の範囲第４４項記載のデインターリーブ方法。
【請求項４６】
上記第２の記憶手段として、データワード単位で、当該データワードに同期したクロック毎に不連続なアドレスにアクセスすることが可能なデュアルポートのランダムアクセスメモリが用いられる、
請求の範囲第４３項記載のデインターリーブ方法。
【請求項４７】
上記第１のデータを構成するパケットは、それぞれ、所定の誤り訂正符号が付加されたものである、
請求の範囲第３７項記載のデインターリーブ方法。
【請求項４８】
上記第１のデータを構成するパケットは、それぞれ、所定のデータに対してＭＰＥＧ−２方式に基づく圧縮符号化を施して得られたトランスポートストリームを構成する複数個のトランスポートパケットに対して、上記誤り訂正符号が付加されたものである、
請求の範囲第４７項記載のデインターリーブ方法。
【請求項４９】
上記誤り訂正符号は、リード・ソロモン符号である、
請求の範囲第４７項記載のデインターリーブ方法。
【請求項５０】
上記第１のインターリーブは、バイト単位又は複数の連続するバイト単位での畳み込みインターリーブであり、
上記第２のデインターリーブは、バイト単位又は複数の連続するバイト単位での畳み込みデインターリーブである、
請求項３７記載のデインターリーブ方法。
【発明の詳細な説明】
技術分野
本発明は、インターリーブ装置及びインターリーブ方法、並びにデインターリーブ装置及びデインターリーブ方法に関する。
背景技術
近年、例えば放送用又は業務用のビデオカメラを用いて構築される放送システム等のように、いわゆるＨＤＴＶ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  ＴｅｌｅＶｉｓｉｏｎ）方式の映像及び／又は音声信号を扱う技術が開発されている。このようなシステムにおいては、非圧縮の映像及び／又は音声信号をいわゆるＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）−２等の画像圧縮方式を用いて圧縮符号化する機能と、圧縮符号化された映像及び／又は音声信号を伸長復号する機能とを併有するトランスコーダと称される機器が用いられる。すなわち、このトランスコーダは、例えばＨＤ−ＳＤＩ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ−Ｓｅｒｉａｌ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）に準拠したシリアルバス等を介して入力された非圧縮の映像及び／又は音声信号に対して、搭載される符号化器によってＭＰＥＧ−２等の画像圧縮方式に基づく圧縮符号化を施し、複数個のトランスポートパケット（ＴＳ  Ｐａｃｋｅｔ）から構成されるトランスポートストリーム（Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）として送信する。また、トランスコーダは、所定の通信路を介して受信したトランスポートストリームに対して、搭載される復号器によって伸長復号を施し、非圧縮の映像及び／又は音声信号を再生することもできる。
このようなトランスコーダによって送受信されるトランスポートストリームのように、所定のデータがパケットに格納されて送受信されるパケット通信においては、パケット毎にヘッダが付加されることから、サイズが大きいデータを１つのパケットに格納して伝送するほどオーバーヘッドを少なくすることができ、通信効率の観点から有効である。
また、パケット通信としては、データをＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）上で伝送する場合も多く、データの形式等に応じた各種伝送プロトコルにしたがったパケットの送受信が行われる。通常、ＩＰ上で行われるパケット通信としては、例えばＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）等のように、通信路の状況に応じてパケットの再送が行うことが可能な伝送プロトコルにしたがうものが多い。しかしながら、近年では、パケット通信として、映像及び／又は音声信号をストリーミング再生するための伝送プロトコルとして知られるＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）等のように、パケットの再送が許されないリアルタイム通信のアプリケーションにも適用される場合が生じている。この場合、パケット通信を行う送信側は、通信路上で発生するノイズ等の影響によってパケットが欠落してしまうパケットロスを含む大きなバーストエラーを受信側で訂正可能とするために、強力な誤り訂正能力を必要とする。
このような誤り訂正技術としては、パケットに対していわゆるリード・ソロモン符号（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ  ｃｏｄｅ）等の所定の誤り訂正符号を付加することが考えられる。
ここで、誤り訂正符号としてリード・ソロモン符号を用いる場合の例を説明する。リード・ソロモン符号は、例えば１８８バイトからなるパケットに対して２８バイトの誤り訂正符号を付加すると、１パケットあたりのエラーを含むバイト数が１４バイト以下であれば完全にエラーを訂正することができるものである。すなわち、リード・ソロモン符号は、一般に、ランダムエラーにのみ対応することができる誤り訂正符号である。しかしながら、リード・ソロモン符号は、１パケットあたりのエラーを含むバイト数が１４バイトを超える場合には、エラーを訂正することができない。そのため、リード・ソロモン符号は、パケットロスを含む大きなバーストエラーに対しては効果を得ることができないことになる。
そこで、誤り訂正技術としては、パケットに対してリード・ソロモン符号のような所定の誤り訂正符号を付加した後、さらに、畳み込みインターリーブを施すことによってエラーの分散化を図ることが一般に行われている。
すなわち、パケット通信においては、送信側によって畳み込みインターリーブが施されたパケットに対して通信路上で発生したバーストエラーが重畳された場合であっても、受信側によって対応する畳み込みデインターリーブが施されることにより、パケット毎ではランダムエラーとみなすことができ、リード・ソロモン符号のような誤り訂正符号の復号が行われることにより、バーストエラーであってもエラーを訂正することが可能となる。例えば、パケット通信においては、上述した１８８バイトからなるパケットに対して２８バイトの誤り訂正符号が付加され２１６バイトからなるパケットに対して深さ１８の畳み込みインターリーブを施した場合には、連続する１８パケット中の１パケットが完全にエラーとなった場合であっても、受信側によって完全にエラーを訂正することができることになる。したがって、パケット通信においては、特にパケットロスが発生しやすい通信路を介したデータの送受信を行う際には、１パケット分の連続した情報が全て欠落してしまう場合があるが、このような誤り訂正技術を用いることにより、欠落したパケットを完全に復元することが可能となる。
このように、パケット通信においては、パケットの再送が許されないリアルタイム通信のアプリケーションに適用される場合には、パケットに対して所定の誤り訂正符号を付加するとともに、得られたパケットに対して畳み込みインターリーブを施すことにより、パケットロスを含むバーストエラーに対する誤り訂正能力を向上させることができる。
ところで、パケット通信においては、上述した誤り訂正符号と畳み込みインターリーブとを組み合わせた誤り訂正技術を用いてパケットロスを含む大きなバーストエラーを訂正するためには、パケットのサイズに応じた非常に大きな符号長からなる誤り訂正符号を用いることが必要となる。
しかしながら、パケット通信においては、符号長が大きな誤り訂正符号を付加することにより、データに対するオーバーヘッドが増大し、通信効率の悪化を招来することになる。また、パケット通信においては、符号長が大きな誤り訂正符号を付加することにより、通信効率の悪化のみならず、誤り訂正符号の符号化器及び復号器の回路規模が肥大化することになる。
したがって、パケット通信においては、誤り訂正符号の符号長を可能な限り小さくするのが望ましい。
一方、パケット通信においては、誤り訂正符号の符号長を小さくした場合には、パケットロスを含む大きなバーストエラーを訂正するために、畳み込みインターリーブの深さを非常に深いものとする必要が生じる。
畳み込みインターリーブの実装面においては、当該畳み込みインターリーブの深さと必要となるメモリ容量とが比例関係にある。そのため、パケット通信においては、畳み込みインターリーブの深さを非常に深いものとするために、必要となるメモリ容量が増大することになり、望ましくない。
また、畳み込みインターリーブにおいては、メモリとして、例えばＭＰＥＧ方式の場合にはバイト単位といったデータワード単位で、当該データワードに同期した１クロック程度のクロック毎に不連続なアドレスにアクセスすることが可能なもの、すなわち、ランダムアクセスが可能なデュアルポートＲＡＭ（Ｄｕａｌ  Ｐｏｒｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ；以下、ＤＰＲＡＭという。）を用いる必要がある。
ここで、畳み込みインターリーブとしては、専用の集積回路として実装することもできるが、コストや取り扱いの簡便さ等の観点からは、いわゆるＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった汎用的なプログラマブルデバイスとして実装するのが有効である。しかしながら、畳み込みインターリーブにおいては、これらの汎用的なプログラマブルデバイスの内部に設けられるＤＰＲＡＭの容量が小さいことから、誤り訂正符号の符号長の削減を補完してパケットロスを含む大きなバーストエラーを訂正するために必要となる十分な深さを得ることが困難である。また、畳み込みインターリーブにおいては、メモリの容量のみが問題なのであれば、例えばＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）といったプログラマブルデバイスに対して外付けとされる汎用的なメモリを用いれば問題を解決することができるが、このような外付けのデバイスは、複数のデータワード単位のデータをバースト転送するのには有効であるものの、アクセスのためのコマンド信号の入力期間を必要とすることから、時間的に連続してデータワード単位でランダムなアドレスにアクセスすることはオーバーヘッドの増大及びスループットの低下を招来する観点からみて困難であり、また、このようなアクセスを実現するためにはメモリの周辺回路として非常に煩雑なものを設ける必要があることから、データワード単位での高速アクセスを目的として実装するのは困難である。
このように、パケット通信においては、誤り訂正符号と畳み込みインターリーブとを組み合わせた誤り訂正技術を用いてパケットロスを含む大きなバーストエラーを訂正するためには、符号長が大きな誤り訂正符号を用いることによる通信効率の悪化と回路の肥大化とを招来したり、又は符号長が小さな誤り訂正符号を用いる代わりに、深い畳み込みインターリーブを実現することによるメモリ容量の増大化を招来したりするといった問題があった。
発明の開示
本発明の目的は、このような実情に鑑みてなされたものであり、パケット通信を行う送信側において小さい符号長からなる誤り訂正符号を用いてパケットロスを含む大きなバーストエラーを訂正することを可能とするインターリーブを実現することができるインターリーブ装置及びインターリーブ方法、並びに、これらのインターリーブ装置及びインターリーブ方法を用いてインターリーブが施されたデータの配列を受信側において元に戻すことができるデインターリーブ装置及びデインターリーブ方法を提供することにある。
本発明の目的は、入力されたデータの順序を所定のアドレスにしたがって並べ替えて出力するインターリーブ装置であって、入力された複数個のパケットから構成される第１のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みインターリーブを施す第１のインターリーブ手段と、この第１のインターリーブ手段によって生成された複数個のパケットから構成される第２のデータに対して、パケット単位でインターリーブを施す第２のインターリーブ手段とを備えるインターリーブ装置を提供することによって達成される。
また、入力されたデータの順序を所定のアドレスにしたがって並べ替えて出力するインターリーブ方法であって、入力された複数個のパケットから構成される第１のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みインターリーブを施す第１のインターリーブ工程と、この第１のインターリーブ工程にて生成された複数個のパケットから構成される第２のデータに対して、パケット単位でインターリーブを施す第２のインターリーブ工程とを備えるインターリーブ方法を提供することによって達成される。
さらに、入力された複数個のパケットから構成される第１のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みインターリーブを施す第１のインターリーブ手段と、この第１のインターリーブ手段によって生成された複数個のパケットから構成される第２のデータに対して、パケット単位でインターリーブを施す第２のインターリーブ手段とを備えるインターリーブ装置を用いて並べ替えられたデータの配列を元に戻すように、入力されたデータの順序を所定のアドレスにしたがって並べ替えて出力するデインターリーブ装置であって、第２のインターリーブ手段によってインターリーブが施されたデータを構成するパケットの順序を、それぞれ、第２のデータを構成するパケットの順序に戻すように、入力された複数個のパケットから構成される第３のデータに対して、パケット単位でデインターリーブを施す第１のデインターリーブ手段と、第１のインターリーブ手段によってインターリーブが施された第２のデータを構成するパケットの順序を、それぞれ、第１のデータを構成するパケットの順序に戻すように、第１のデインターリーブ手段によって生成された複数個のパケットから構成される第４のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みデインターリーブを施す第２のデインターリーブ手段とを備えるデインターリーブ装置を提供することで達成される。
さらにまた、入力された複数個のパケットから構成される第１のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みインターリーブを施す第１のインターリーブ工程と、この第１のインターリーブ工程にて生成された複数個のパケットから構成される第２のデータに対して、パケット単位でインターリーブを施す第２のインターリーブ工程とを備えるインターリーブ方法を用いて並べ替えられたデータの配列を元に戻すように、入力されたデータの順序を所定のアドレスにしたがって並べ替えて出力するデインターリーブ方法であって、第２のインターリーブ工程にてインターリーブが施されたデータを構成するパケットの順序を、それぞれ、第２のデータを構成するパケットの順序に戻すように、入力された複数個のパケットから構成される第３のデータに対して、パケット単位でデインターリーブを施す第１のデインターリーブ工程と、第１のインターリーブ工程にてインターリーブが施された第２のデータを構成するパケットの順序を、それぞれ、第１のデータを構成するパケットの順序に戻すように、第１のデインターリーブ工程にて生成された複数個のパケットから構成される第４のデータに対して、データワード単位又は複数の連続するデータワード単位で畳み込みデインターリーブを施す第２のデインターリーブ工程とを備えるデインターリーブ方法を提供することによって達成される。
発明を実施するための最良の形態
以下、本発明をより詳細に説述するために、添付の図面を用いてこれを説明する。
この最良の形態は、パケット化されたデータを入力し、各パケットに対して所定の誤り訂正符号を付加し、さらに、インターリーブを施して送信する符号化器と、この符号化器から所定の通信路を介して受信した受信データを復号する復号器とを備えるデータ送受信システムである。このデータ送受信システムにおいて、符号化器は、インターリーブとして、データワード単位又は複数の連続するデータワード単位の畳み込みインターリーブと、パケット単位のインターリーブとを行うことにより、小さい符号長からなる誤り訂正符号を用いてパケットロスを含む大きなバーストエラーを訂正することを可能とするものである。一方、データ送受信システムにおいて、復号器は、このような符号化器によって符号化がなされて送信され、所定の通信路を介して受信した受信データを復号し、パケットロスを含む大きなバーストエラーを完全に訂正することができるものである。
特に、データ送受信システムにおいては、データワード単位又は複数の連続するデータワード単位の畳み込みインターリーブ及び畳み込みデインターリーブを実現するにあたって、通常であれば、畳み込みインターリーブ及び畳み込みデインターリーブの深さと入力した１パケットあたりのデータワード数との積で表されるデータワード数の容量を有するメモリを用いて実装する必要があるところ、この容量よりも大幅に小さい容量を有するメモリを用いて、同様の畳み込みインターリーブ及び畳み込みデインターリーブを実現することができるものである。
なお、以下では、データ送受信システムにおける符号化器には、例えばＨＤ−ＳＤＩ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ−Ｓｅｒｉａｌ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）に準拠したシリアルバス等を介して入力された非圧縮の映像及び／又は音声信号に対していわゆるＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）−２方式に基づく圧縮符号化を施して得られたトランスポートストリーム（Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）を構成する複数個のトランスポートパケット（ＴＳ  Ｐａｃｋｅｔ）が入力されるものとし、この符号化器によってトランスポートパケットに対して付加する誤り訂正符号として、いわゆるリード・ソロモン符号（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ  ｃｏｄｅ）を用いるものとして説明する。
データ送受信システムは、例えば図１に示すように、複数個のトランスポートパケットＴＳＰから構成されるトランスポートストリームＴＳを入力して符号化を施す符号化器１０と、この符号化器１０から所定の通信路を介して受信した受信データＲＤを復号してトランスポートストリームＴＳを復元する復号器２０とを備える。
まず、符号化器１０について説明する。符号化器１０は、例えば図１に示すように、トランスポートストリームＴＳを構成する各トランスポートパケットＴＳＰに対してリード・ソロモン符号化を施すリード・ソロモン符号化部１１と、このリード・ソロモン符号化部１１によって誤り訂正符号が付加された複数個の符号化パケットＥＰから構成される符号化データＥＤに対してバイト単位あるいは複数の連続するバイト単位で畳み込みインターリーブを施すバイト・インターリーバ１２と、このバイト・インターリーバ１２によって畳み込みインターリーブが施された複数個のバイト・インターリーブパケットＢＩＰから構成されるバイト・インターリーブデータＢＩＤに対してパケット単位でインターリーブを施すパケット・インターリーバ１３と、このパケット・インターリーバ１３によってパケット単位でのインターリーブが施された複数個のパケット・インターリーブパケットＰＩＰから構成されるパケット・インターリーブデータＰＩＤのうち所定個ずつのパケット・インターリーブパケットＰＩＰを連結して１つのパケットデータＰＤを生成するパケット化部１４と、このパケット化部１４によって生成された各パケットデータＰＤに対して所定のヘッダを付加して複数個の上位レイヤパケットＵＬＰから構成される送信データＴＤとして送信する送信部１５とを有する。
符号化器１０においては、これらの各部のうち、少なくとも図１中破線枠で示すリード・ソロモン符号化部１１、バイト・インターリーバ１２、パケット・インターリーバ１３におけるインターフェース部１７、及びパケット化部１４が、いわゆるＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といったプログラマブルデバイスとして実装される。
リード・ソロモン符号化部１１は、情報系列として入力したトランスポートストリームＴＳを構成するトランスポートパケットＴＳＰのそれぞれに対して、リード・ソロモン符号化を施し、複数個の符号化パケットＥＰから構成される符号化データＥＤを生成する。具体的には、リード・ソロモン符号化部１１は、図２Ａに示すように、トランスポートストリームＴＳを構成する１８８バイトからなるトランスポートパケットＴＳＰのそれぞれに対して、図２Ｂに示すように、２８バイトからなるパリティとしての誤り訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ；ＥＣＣ）を付加し、１パケットあたりの符号長が２１６バイトからなる符号化パケットＥＰから構成される符号化データＥＤを生成する。なお、符号化パケットＥＰの先頭データは、それぞれ、ＭＰＥＧ−２方式に基づくトランスポートパケットＴＳＰのパケットヘッダにおけるシンクバイトであり、その値は、″０ｘ４７″である。リード・ソロモン符号化部１１は、生成した複数個の符号化パケットＥＰから構成される符号化データＥＤを後段のバイト・インターリーバ１２に供給する。なお、この符号化データＥＤをそのまま出力した場合の誤り訂正能力は、１つの符号化パケットＥＰパケットあたり１４バイトまでのエラーを完全に訂正できるものとなる。
バイト・インターリーバ１２は、リード・ソロモン符号化部１１から供給された符号化データＥＤを構成する符号化パケットＥＰのそれぞれに対して、データワード単位あるいは複数の連続するデータワード単位、すなわち、ＭＰＥＧ方式であるためバイト単位あるいは複数の連続するバイト単位で所定の深さ及び周期の畳み込みインターリーブを施し、符号化パケットＥＰを構成する各バイトの順序を並べ替え、複数個のバイト・インターリーブパケットＢＩＰから構成されるバイト・インターリーブデータＢＩＤを生成する。具体的には、バイト・インターリーバ１２は、図示しないが、バイト単位で、当該バイトに同期した１クロック程度のクロック毎に不連続なアドレスにアクセスすることが可能なデュアルポートＲＡＭ（Ｄｕａｌ  Ｐｏｒｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ；以下、ＤＰＲＡＭという。）やこのＤＰＲＡＭに対するデータの書き込み及び読み出しを行うためのアドレス生成部等から構成される。バイト・インターリーバ１２は、入力された符号化データＥＤを所定の書き込みアドレスにしたがって順次ＤＰＲＡＭに転送して書き込み、このＤＰＲＡＭに書き込んだデータを書き込みアドレスとは異なる所定の読み出しアドレスにしたがって順次読み出すことにより、リード・ソロモン符号化部１１によって生成された符号化データＥＤに対して、例えばバイト単位で深さ１８及び周期１２の畳み込みインターリーブ、あるいは連続する４バイトを１つの処理単位として、連続する４バイト単位で深さ１８及び周期３の畳み込みインターリーブを施す。
ここで、畳み込みインターリーブの深さとは、バイト単位でインター・リーブを行うものとしたとき、第１のバイト数からなるパケットをこの値よりも小さい第２のバイト数毎に分割し、この第２のバイト数からなる分割単位を構成する各バイト１を互いに異なる分割単位に分散することを示し、周期とは、隣り合うバイトを分散させる分割単位の離隔量を示すものであって第１のバイト数と畳み込みインターリーブの深さとの商で表されるものである。また、複数の連続するバイト単位でインターリーブを行うものとしたとき、畳み込みインターリーブの深さとは、第１のバイト数からなるパケットをこの値よりも小さい第２のバイト数毎に分割し、この第２のバイト数からなる分割単位を構成する複数の連続するバイト（以下「ユニット」という）単位で互いに異なる分割単位に分散することを示し、周期とは、隣り合うユニットを分散させる分割単位の離隔量を示すものであって第１のバイト数と畳み込みインターリーブの深さとの商をさらにユニットで割った値で表されるものである。
すなわち、バイト単位でインターリーブを行うものとしたとき、バイト・インターリーバ１２は、図３Ａに示すように、２１６バイトからなるある１つの符号化パケットＥＰを１８バイト毎に分割して１２個の分割単位を設けるものとし、図３Ｂに示すように最初の分割単位を構成する１バイト目については並べ替えず（このとき１バイト目は−１バイト遅延した位置とする）、次の２バイト目については１８×１２×１−１バイトだけ遅延した位置、すなわち、２個目のパケットの２バイト目に位置するように並べ替え、次の３バイト目については１８×１２×２−１バイトだけ遅延した位置、すなわち、３個目のパケットの３バイト目に位置するように並べ替える、といった深さ１８及び周期１２の畳み込みインターリーブを施し、複数個のバイト・インターリーブパケットＢＩＰから構成されるバイト・インターリーブデータＢＩＤを生成する。したがって、１つの符号化パケットＥＰに含まれる情報は、バイト・インターリーバ１２による畳み込みインターリーブが施されることにより、連続する１８個のバイト・インターリーブパケットＢＩＰに１２バイトずつ分散されることになる。
また、トランスポートストリームＴＳのヘッダが４バイトであることから連続する４バイトを１ユニットとして、ユニット単位でインターリーブを行うものとしたとき、バイト・インターリーバ１２は、図４Ａに示すように、２１６バイトからなるある１つの符号化パケットＥＰを（４×１８＝７２）バイト毎に分割して３個の分割単位を設けるものとし、図４Ｂに示すように最初の分割単位を構成する１ユニット目については並べ替えず（このとき最初の分割単位を構成する１ユニットの１バイト目は−１バイト遅延した位置とする）、次の２ユニット目については７２×３×１−１バイトだけ遅延した位置、すなわち、２個目のパケットの２ユニット目に位置するように並べ替え、次の３ユニット目については７２×３×２−１バイトだけ遅延した位置、すなわち、３個目のパケットの３ユニット目に位置するように並べ替える、といった深さ１８及び周期３の畳み込みインターリーブを施し、複数個のバイト・インターリーブパケットＢＩＰから構成されるバイト・インターリーブデータＢＩＤを生成する。したがって、１つの符号化パケットＥＰに含まれる情報は、バイト・インターリーバ１２による畳み込みインターリーブが施されることにより、連続する１８個のバイト・インターリーブパケットＢＩＰにユニット単位で１２バイトずつ分散されることになる。
これにより、バイト・インターリーバ１２は、リード・ソロモン符号化部１１による誤り訂正能力を強化するわけではないが、情報の分散配置によってパケットロスを含むバーストエラーをランダムエラー化することができる。具体的には、バイト・インターリーブデータＢＩＤをそのまま出力した場合の誤り訂正能力は、連続する１８個のバイト・インターリーブパケットＢＩＰあたり１パケット、すなわち、２１６バイトが完全にエラーであっても、全てのビットを訂正できるものとなる。なお、バイト・インターリーブパケットＢＩＰの先頭データは、それぞれ、符号化パケットＥＰと変わらず、ＭＰＥＧ−２方式に基づくトランスポートパケットＴＳＰのパケットヘッダにおけるシンクバイトであり、その値は、″０ｘ４７″である。バイト・インターリーバ１２は、生成した複数個のバイト・インターリーブパケットＢＩＰから構成されるバイト・インターリーブデータＢＩＤを後段のパケット・インターリーバ１３に供給する。
なお、このバイト・インターリーバ１２は、所定のアドレス生成方式にしたがってアドレス制御を行うことにより、バイト単位あるいはユニット単位での畳み込みインターリーブを行うのに必要なメモリ、すなわち、ＤＰＲＡＭの容量の削減を図ることができるが、これについては、後述するものとする。
パケット・インターリーバ１３は、バイト・インターリーバ１２から供給されたバイト・インターリーブデータＢＩＤを構成するバイト・インターリーブパケットＢＩＰのそれぞれに対して、パケット単位で所定の深さ及び周期のインターリーブを施し、各バイト・インターリーブパケットＢＩＰの順序を並べ替え、複数個のパケット・インターリーブパケットＰＩＰから構成されるパケット・インターリーブデータＰＩＤを生成する。具体的には、パケット・インターリーバ１３は、複数のバイト単位のデータをバースト転送するために、プログラマブルデバイスとして実装される各部に対して外付けとされるＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１６と、このＳＤＲＡＭ１６に対するデータの書き込み及び読み出しを行うためのアドレス生成やデータの授受等の処理を行うインターフェース部１７とから構成される。パケット・インターリーバ１３は、インターフェース部１７に入力されたバイト・インターリーブデータＢＩＤを所定の書き込みアドレスにしたがって順次ＳＤＲＡＭ１６に転送して書き込み、このＳＤＲＡＭ１６に書き込んだデータを書き込みアドレスとは異なる所定の読み出しアドレスにしたがって順次読み出すことにより、バイト・インターリーバ１２から供給されたバイト・インターリーブデータＢＩＤに対して、バイト・インターリーブパケット単位で深さ６及び周期４の畳み込みインターリーブや、連続する１０８パケットのバイト・インターリーブパケットＢＩＰで完結する深さ６のブロックインターリーブを施す。
すなわち、畳み込みインターリーブを行うものとしたとき、パケット・インターリーバ１３は、図５Ａに示すように、連続する２４個のバイト・インターリーブパケットＢＩＰを１つのパケット（以下、一時的複合パケットＣＰＴという。）とみなし、図５Ｂに示すように、ある１つの一時的複合パケットＣＰＴにおける最初の６個のバイト・インターリーブパケットＢＩＰからなる分割単位を構成する１個目のバイト・インターリーブパケットＢＩＰについては並べ替えず、次の２個目のバイト・インターリーブパケットＢＩＰについては６×４×１−１パケットだけ遅延した位置、すなわち、２個目の一時的複合パケットＣＰＴにおける２パケット目に位置するように並べ替え、次の３個目のバイト・インターリーブパケットＢＩＰについては６×４×２−１パケットだけ遅延した位置、すなわち、３個目の一時的複合パケットＣＰＴの３パケット目に位置するように並べ替える、といった畳み込みインターリーブを施し、複数個のパケット・インターリーブパケットＰＩＰから構成されるパケット・インターリーブデータＰＩＤを生成する。したがって、１つの符号化パケットＥＰに含まれる情報は、パケット・インターリーバ１３による畳み込みインターリーブが施されることにより、連続する６×４（＝２４）×６＝１４４個のパケット・インターリーブパケットＰＩＰに離散的に分散され、且つ、１２バイトずつの情報が少なくとも６個のパケット・インターリーブパケットＰＩＰの間隔を空けて分散されることになる。この場合、パケット・インターリーバ１３を構成するＳＤＲＡＭ１６の容量は、少なくとも１４４個のパケット・インターリーブパケットＰＩＰを記憶できるものであれば足りる。
また、ブロックインターリーブを行うものとしたとき、パケット・インターリーバ１３は、図６Ａに示すように、連続する１０８個のバイト・インターリーブパケットＢＩＰを１つの一時的複合パケットＣＰＴとみなし、この一時的複合パケットＣＰＴを１８個のバイト・インターリーブパケット毎に分割して６個のグループを設けるものとし、図６Ｂに示すように、最初のグループを構成するバイト・インターリーブパケットの１個目のバイト・インターリーブパケットＢＩＰについては並べ替えず、次の２個目から１８個目までのバイト・インターリーブパケットＢＩＰについては、順次６バイト・インターリーブパケット分だけ遅延した位置に並べ替える。２個目のグループを構成するバイト・インターリーブパケットの１個目のバイト・インターリーブパケットＢＩＰは、最初のグループにおける１個目のバイト・インターリーブパケットＢＩＰの次の位置に並べ換える。また、２個目から１８個目までのバイト・インターリーブパケットＢＩＰについては、順次６バイト・インターリーブパケット分だけ遅延した位置に並べ替える。以下同様にして、６個目のグループを構成するバイト・インターリーブパケットの１個目のバイト・インターリーブパケットＢＩＰは、最初のグループにおける６個目のバイト・インターリーブパケットＢＩＰの次の位置に並べ換え、２個目から１８個目までのバイト・インターリーブパケットＢＩＰについては、順次６バイト・インターリーブパケット分だけ遅延した位置に並べ替えるといったブロックインターリーブを施し、複数個のパケット・インターリーブパケットＰＩＰから構成されるパケット・インターリーブデータＰＩＤを生成する。したがって、１つの符号化パケットＥＰに含まれる情報は、パケット・インターリーバ１３によるブロックインターリーブが施されることにより、ブロックインターリーブが行われた連続する１０８個のパケット・インターリーブパケットＰＩＰに離散的に分散され、且つ、パケット・インターリーブデータＰＩＤを連続する６パケット・インターリーブパケット毎に分割してグループ化したとき、１２バイトずつの情報が各グループに１つずつ分散されることになる。この場合、パケット・インターリーバ１３を構成するＳＤＲＡＭ１６の容量は、少なくとも２１６個のパケット・インターリーブパケットＰＩＰを記憶できるものであれば足りる。
これにより、パケット・インターリーバ１３は、バイト・インターリーバ１２と同様に、リード・ソロモン符号化部１１による誤り訂正能力を強化するわけではないが、バイト・インターリーバ１２よりも離散的に情報の分散配置を行うことによってパケットロスを含むより大きなバーストエラーをランダムエラー化することができる。具体的には、畳み込みインターリーブによって生成したパケット・インターリーブデータＰＩＤをそのまま出力した場合の誤り訂正能力は、連続する１４４個のパケット・インターリーブパケットＰＩＰのうち、連続する最大で６個のパケット・インターリーブパケットＰＩＰ、すなわち、１２９６バイトが完全にエラーであっても、全てのビットを訂正できるものとなる。また、ブロックインターリーブによって生成したパケット・インターリーブデータＰＩＤをそのまま出力した場合の誤り訂正能力は、連続する１０８個のパケット・インターリーブパケットＰＩＰのうち、連続する最大で６個のパケット・インターリーブパケットＰＩＰ、すなわち、１２９６バイトが完全にエラーであっても、全てのビットを訂正できるものとなる。さらに、畳み込みインターリーブを用いたときには、連続する１４４個のパケット・インターリーブパケットＰＩＰのうち、連続する最大で６個のパケット・インターリーブパケットＰＩＰのエラーを訂正できるが、ブロックインターリーブを用いるものとすれば、連続する１０８個のパケット・インターリーブパケットＰＩＰのうち、連続する最大で６個のパケット・インターリーブパケットＰＩＰのエラーを訂正できることとなり、訂正能力を向上させることができる。
ここで、このようなパケット・インターリーバ１３によってインターリーブが施されたパケット・インターリーブデータＰＩＤは、このままでは先頭のパケットを受信側が把握できないものとなり、同期をとることが困難となる。そこで、パケット・インターリーバ１３は、パケット・インターリーブデータＰＩＤにおける先頭のパケットを受信側に通知するために、先頭のパケット・インターリーブパケットＰＩＰの先頭データであるシンクバイトの値を置換する。すなわち、深さ６の畳み込みインターリーブをパケット・インターリーバ１３で施したとき、パケット・インターリーブパケットＰＩＰの先頭データを６パケット毎に反転し、″０ｘ４７″から″０ｘＢ８″に置き換えて、最終的に出力するパケット・インターリーブデータＰＩＤを生成する。
また、ブロックインターリーブが施されたとき、例えば連続する１０８個のパケット・インターリーブパケットＰＩＰからなるインターリーブブロックの先頭パケットを受信側に通知するため、インターリーブブロックの先頭のパケット・インターリーブパケットＰＩＰの先頭データであるシンクバイトの値を″０ｘ４７″から例えば″０ｘＢ７″に置き換える。さらに、残りのパケット・インターリーブパケットＰＩＰについて、６パケット・インターリーブパケットＰＩＰ毎にシンクバイトの値の反転を行い、″０ｘ４７″から″０ｘＢ８″に置き換えておけば、受信側は″０ｘＢ８″を検出することでデインターリーブ処理を予め同期させておくことができ、″０ｘＢ７″を検出したとき、速やかにブロックデインターリーブ処理後の出力を得ることができる。
パケット・インターリーバ１３は、生成した複数個のパケット・インターリーブパケットＰＩＰから構成されるパケット・インターリーブデータＰＩＤを後段のパケット化部１４に供給する。
パケット化部１４は、パケット・インターリーバ１３から供給されたパケット・インターリーブデータＰＩＤを構成するパケット・インターリーブパケットＰＩＰを所定個ずつ連結して１つのパケットデータＰＤを生成する。具体的には、パケット化部１４は、ストリーミング再生するための伝送プロトコルとして知られるＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）にしたがって映像及び／又は音声信号を伝送するために、一連のパケット・インターリーブパケットＰＩＰのうち、連続する６個のパケット・インターリーブパケットＰＩＰを連結して上位レイヤとしてのＲＴＰの１パケットに格納することにより、パケットデータＰＤを生成する。また、ブロックインターリーブを施してパケット・インターリーブデータＰＩＤが生成されている場合、インターリーブブロックの先頭を示す位置すなわちシンクバイトの値が″０ｘＢ７″の位置からＲＴＰパケットの生成を行う。６個のパケット・インターリーブパケットＰＩＰを連結して上位レイヤとしてのＲＴＰの１パケットに格納することにより、パケットデータＰＤを生成する。なお、シンクバイトの値の値が″０ｘ４７″から″０ｘＢ８″に置き換えられているときには、この値″０ｘＢ７″，″０ｘＢ８″を検出することで、６個のパケット・インターリーブパケットＰＩＰを連結したパケットデータＰＤを容易に生成できる。
ここで、このパケットデータＰＤとして連結された６個のパケット・インターリーブパケットＰＩＰの中には、１８×６＝１０８個の符号化パケットＥＰのそれぞれから１２バイトずつの情報が含まれることになる。図７Ａ〜図７Ｄは、バイト・インターリーバ１２でバイト単位（あるいはユニット単位）の畳み込みインターリーブ、パケット・インターリーバ１３で畳み込みインターリーブを行ったときのパケットデータＰＤの生成の推移を説明するための図である。符号化器１０は、符号化パケットＥＰのそれぞれの順序を、図７Ａに示すように、・・・，１００，１０１，・・・，１３６，・・・として表した場合、１つの符号化パケットＥＰに含まれる情報を、図７Ｂに示すように、連続する１８個のバイト・インターリーブパケットＢＩＰに１２バイトずつ分散する。さらに、符号化器１０は、図７Ｃにおける縦１列分の情報をまとめて１つのパケット・インターリーブパケットＰＩＰを生成する。そして、符号化器１０は、パケット化部１４によって任意の連続する６個のパケット・インターリーブパケットＰＩＰを連結することにより、図７Ｄに示すように、１つのパケットデータＰＤを生成する。したがって、パケットデータＰＤは、上述したように、１８×６＝１０８個の符号化パケットＥＰのそれぞれから１２バイトずつの情報が含まれるものとなる。
図８Ａ〜図８Ｅは、バイト・インターリーバ１２でユニット単位（あるいはバイト単位）の畳み込みインターリーブ、パケット・インターリーバ１３でブロック・インターリーブを行ったときのパケットデータＰＤの生成の推移を説明するための図である。符号化器１０は、符号化パケットＥＰのそれぞれの順序を、図８Ａに示すように、・・・，１００，１０１，・・・，１３６，・・・として表した場合、１つの符号化パケットＥＰに含まれる情報を、図８Ｂに示すように、連続する１８個のバイト・インターリーブパケットＢＩＰに１２バイトずつ分散する。さらに、符号化器１０は、図８Ｃにおける縦１列分の情報をまとめて１つのパケット・インターリーブパケットＰＩＰを生成する。そして、符号化器１０は、パケット化部１４によって、インターリーブブロックの先頭のパケット・インターリーブパケットＰＩＰから連続する６個のパケット・インターリーブパケットＰＩＰを連結することにより、図８Ｄに示すように、１つのパケットデータＰＤを生成する。したがって、パケットデータＰＤは、上述したように、１８×６＝１０８個の符号化パケットＥＰのそれぞれから１２バイトずつの情報が含まれるものとなる。
このパケットデータＰＤは、図７Ｄ，図８Ｄに示すように、重複する番号が存在しないものである、すなわち、互いに異なる１０８個の符号化パケットＥＰからの情報によって構成されるものである。これは、１つのパケットデータＰＤに同じ番号が２つ存在する場合、例えば図８Ｅに示すように、パケットデータＰＤ生成する際に、連結する６個のパケット・インターリーブパケットＰＩＰが、図８Ｄに対して４パケット・インターリーブパケットＰＩＰ分だけ位相差を有して、番号１５５が２つ存在する場合、１つの符号化パケットＥＰから２４バイトの情報が含まれるものとなることから、例えば、１つの上位レイヤパケットＵＬＰが通信路上で欠落した場合には、復号器２０によって誤り訂正能力の限界を超える誤りデータ量を有する符号化パケットＥＰ’が生成される事態が生じ、完全な訂正が不可能となることになるからである。
したがって、パケット化部１４は、一連のパケット・インターリーブパケットＰＩＰのうち、同じ符号化パケットＥＰからの情報が含まれないように、連続する６個のパケット・インターリーブパケットＰＩＰを連結し、パケットデータＰＤを生成する。なお、パケット・インターリーバ１３で畳み込みインターリーブを行う場合、パケット化部１４は、パケット・インターリーバ１３によって値を反転したシンクバイトの位置には拘泥せずに、任意の連続する６個のパケット・インターリーブパケットＰＩＰを連結すればよい。しかし、パケット・インターリーバ１３でブロックインターリーブを行う場合、パケット化部１４は、インターリーブブロックの先頭を示すシンクバイトの位置から、連続する６個のパケット・インターリーブパケットＰＩＰを連結する。パケット化部１４は、生成したパケットデータＰＤを後段の送信部１５に供給する。
送信部１５は、パケット化部１４から供給されたパケットデータＰＤを、ＲＴＰにしたがい、且つ、トランスポート層のプロトコルとしていわゆるＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）を用いたＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）にしたがって伝送するために、各パケットデータＰＤに対してＲＴＰ／ＵＤＰ／ＩＰパケットヘッダを付加して１つの上位レイヤパケットＵＬＰを生成し、複数個の上位レイヤパケットＵＬＰから構成される送信データＴＤとして送信する。また、送信部１５はＲＴＰのパケットを生成する際に、ＲＴＰヘッダにシーケンス番号を設定する。このようにシーケンス番号を設定することで、後述するように、シーケンス番号の連続性を受信側で検証してパケットの欠落を判別できることとなる。
このような各部を有する符号化器１０は、情報系列として入力したトランスポートストリームＴＳを送信データＴＤとして出力する。図９Ａ〜図９Ｆは、パケット・インターリーバ１３で畳み込みインターリーブを行うものとしたときの符号化器１０におけるパケットフォーマットの推移を示している。また、図１０Ａ〜図１０Ｅは、パケット・インターリーバ１３でブロックインターリーブを行うものとしたときの符号化器１０におけるパケットフォーマットの推移を示している。
すなわち、符号化器１０は、図９Ａ（図１０Ａ）に示す複数個のトランスポートパケットＴＳＰから構成されるトランスポートストリームＴＳを入力すると、これらのトランスポートパケットＴＳＰのそれぞれに対して、リード・ソロモン符号化部１１によってリード・ソロモン符号化を施し、図９Ｂ（図１０Ｂ）に示す複数個の符号化パケットＥＰから構成される符号化データＥＤを生成する。このとき、図９Ｂ（図１０Ｂ）における黒マスで示す１つの符号化パケットＥＰに含まれる情報量、より明確には、符号化パケットＥＰのうち付加された誤り訂正符号を除く情報量は、リード・ソロモン符号化部１１によってトランスポートパケットＴＳＰに対してリード・ソロモン符号化が施されても、図９Ａ（図１０Ｂ）における黒マスで示すように、トランスポートパケットＴＳＰと同じ情報量であり、また、一連の符号化パケットＥＰの順序も、一連のトランスポートパケットＴＳＰの順序と同じものであることはいうまでもない。
そして、符号化器１０は、符号化パケットＥＰのそれぞれに対して、図９Ｃ，（図１０Ｃ）に示すように、バイト・インターリーバ１２によってバイト単位あるいはユニット単位で畳み込みインターリーブを施すことにより、図９Ｂ（図１０Ｂ）における黒マスで示す１つの符号化パケットＥＰに含まれる情報を、図９Ｃ（図１０Ｃ）における斜線部に示すように、連続する１８個のバイト・インターリーブパケットＢＩＰにバイト単位あるいはユニット単位で１２バイト分ずつ分散した複数個のバイト・インターリーブパケットＢＩＰから構成されるバイト・インターリーブデータＢＩＤを生成する。なお、図９Ｃ（図１０Ｃ），図９Ｄにおける斜線部は、図９Ｂ（図１０Ｂ）における黒マスで示す１つの符号化パケットＥＰの情報量が連続する１８個のバイト・インターリーブパケットＢＩＰに分散されている様子を示すものである。
ここで、符号化器１０は、バイト・インターリーブパケットＢＩＰのそれぞれに対して、バイト・インターリーブパケット単位で深さ６及び周期４の畳み込みインターリーブを行い、図９Ｄに示すように２４個のバイト・インターリーブパケットＢＩＰの情報を、図９Ｅに示すように、連続する１４４個のパケット・インターリーブパケットＰＩＰに離散的に分散し、且つ、１２バイトずつの情報を少なくとも６個のパケット・インターリーブパケットＰＩＰの間隔を空けて分散した複数個のパケット・インターリーブパケットＰＩＰから構成されるパケット・インターリーブデータＰＩＤを生成する。このため、図９Ｂにおける黒マスで示す１つの符号化パケットＥＰに含まれる情報は、図９Ｅの斜線部に示すように分散される。
また符号化器１０は、バイト・インターリーブパケットＢＩＰのそれぞれに対して、連続する１０８パケットのバイト・インターリーブパケットＢＩＰで完結する深さ６のブロックインターリーブを行い、図１０Ｃに示すように、１８個のバイト・インターリーブパケットＢＩＰの情報を、図１０Ｄに示すように、連続する１０８個のパケット・インターリーブパケットＰＩＰに離散的に分散し、且つ、インターリーブブロックの先頭から連続する６パケット・インターリーブパケットＰＩＰ毎のグループに、１２バイトずつの情報がそれぞれ１つずつ分散されているパケット・インターリーブデータＰＩＤを生成する。このため、図１０Ｂにおける黒マスで示す１つの符号化パケットＥＰに含まれる情報は、図１０Ｄにおける斜線部に示すように分散される。
そして、符号化器１０は、図９Ｆ（図１０Ｅ）に示すように、パケット化部１４によって連続する６個のパケット・インターリーブパケットＰＩＰを連結してパケットデータＰＤを生成し、さらに、送信部１５によって各パケットデータＰＤに対してＲＴＰ／ＵＤＰ／ＩＰパケットヘッダを付加して複数個の上位レイヤパケットＵＬＰから構成される送信データＴＤとして送信する。
このように、符号化器１０は、リード・ソロモン符号を付加した符号化パケットＥＰに対して、バイト単位あるいはユニット単位で畳み込みインターリーブを施すとともに、パケット単位でインターリーブを施すことにより、小さな符号長からなるリード・ソロモン符号を用いてパケットロスを含む大きなバーストエラーを訂正することができる誤り訂正能力を有する送信データＴＤを送信することができる。すなわち、符号化器１０は、１つの上位レイヤパケットＵＬＰが通信路上で欠落した場合といったように、最大で１つの上位レイヤパケットＵＬＰに含まれる情報にバーストエラーが発生した場合であっても、このパケットロスを含むバーストエラーを復号器２０によって完全に訂正することができる誤り訂正能力を有する送信データＴＤを送信することができる。
また、符号化器１０は、パケットの先頭データの値が固定値であることを利用して、パケット単位でのインターリーブを施す際に、先頭のパケット・インターリーブパケットＰＩＰの先頭データであるシンクバイトの値を置換することにより、パケット・インターリーブデータＰＩＤにおける先頭のパケットやブロックインターリーブを行ったときのインターリーブブロックの先頭のパケットを受信側に通知することができる。
さらに、符号化器１０は、バイト・インターリーバ１２をプログラマブルデバイスに内蔵される容量の小さなＤＰＲＡＭを用いて実装するとともに、パケット・インターリーバ１３をプログラマブルデバイスに外付けとされる比較的容量の大きなＳＤＲＡＭ１６を用いて実装することにより、プログラマブルデバイスの内部に設けられるメモリ資源を節約することができるとともに、ＳＤＲＡＭ１６に対するバーストアクセスによる周辺回路の単純化を図ることができる。このように、符号化器１０は、ＤＰＲＡＭ及びＳＤＲＡＭ１６を用いた２段階のインターリーブを行うことにより、これらのメモリの弱点を補完的に回避することができ、パケット単位でインターリーブを行う際に、プログラマブルデバイスに内蔵される容量が小さなＤＰＲＡＭを用いるのではなく外付けとされるＳＤＲＡＭ１６を用いることにより、コストの削減を図ることができ、ＳＤＲＡＭ１６に対してパケット単位でアクセスすることによって高速動作を行うこともできる。
このような符号化器１０によって送信された送信データＴＤは、所定の通信路を介して伝送され、複数個の上位レイヤパケットＵＬＰから構成される受信データＲＤとして復号器２０によって受信されることになる。
つぎに、データ送受信システムにおける復号器２０について説明する。
復号器２０は、例えば図１に示すように、複数個の上位レイヤパケットＵＬＰ’から構成される受信データＲＤを受信して解析する受信部２１と、この受信部２１によって受信された受信データＲＤに付加されているヘッダに基づいて上位レイヤパケットＵＬＰ’の連続性を検証するパケット連続性検証部２２と、受信部２１によって受信されてヘッダが除去されたパケットデータＰＤ’をパケット・インターリーブパケットＰＩＰ’毎に分割するアンパケット化部２３と、このアンパケット化部２３によって分割された複数個のパケット・インターリーブパケットＰＩＰ’の順序を元のバイト・インターリーブデータＢＩＤを構成するバイト・インターリーブパケットＢＩＰの順序に戻すようにパケット・インターリーブデータＰＩＤ’に対してパケット単位でデインターリーブを施すパケット・デインターリーバ２４と、このパケット・デインターリーバ２４によってデインターリーブが施された複数個のバイト・インターリーブパケットＢＩＰ’の順序を元の符号化データＥＤを構成する符号化パケットＥＰの順序に戻すようにバイト・インターリーブデータＢＩＤ’に対して畳み込みデインターリーブを施すバイト・デインターリーバ２５と、このバイト・デインターリーバ２５によって畳み込みデインターリーブが施された符号化データＥＤ’を構成する各符号化パケットＥＰ’に対してリード・ソロモン符号の復号を施して複数個のトランスポートパケットＴＳＰから構成されるトランスポートストリームＴＳを出力するリード・ソロモン復号部２６とを有する。
復号器２０においては、これらの各部のうち、少なくとも同図中破線枠で示すパケット連続性検証部２２、アンパケット化部２３、パケット・デインターリーバ２４におけるインターフェース部２８、バイト・デインターリーバ２５、及びリード・ソロモン復号部２６が、ＰＬＤやＦＰＧＡといったプログラマブルデバイスとして実装される。
受信部２１は、符号化器１０における送信部１５に対応して設けられるものであり、所定の通信路を介して受信データＲＤを受信すると、この受信データＲＤを構成する複数個の上位レイヤパケットＵＬＰ’のそれぞれに付加されているＲＴＰ／ＵＤＰ／ＩＰパケットヘッダを解析する。具体的には、受信部２１は、ＲＴＰ／ＵＤＰ／ＩＰパケットヘッダにおけるＲＴＰのシーケンス番号を解析する。受信部２１は、解析したＲＴＰのシーケンス番号を示す解析情報ＡＮをパケット連続性検証部２２に供給するとともに、上位レイヤパケットＵＬＰ’のそれぞれからＲＴＰ／ＵＤＰ／ＩＰパケットヘッダを除去して生成したパケットデータＰＤ’を後段のアンパケット化部２３に供給する。
パケット連続性検証部２２は、受信部２１から供給された解析情報ＡＮ、すなわち、ＲＴＰのシーケンス番号に基づいて、通信路上で上位レイヤパケットＵＬＰ’の欠落等が発生しているか否かといった上位レイヤパケットＵＬＰ’の連続性を検証する。パケット連続性検証部２２は、検証結果を示す検証結果情報ＣＫをパケット・デインターリーバ２４におけるインターフェース部２８に供給する。
アンパケット化部２３は、符号化器１０におけるパケット化部１４に対応して設けられるものであり、パケット化部１４によって生成されたパケットデータＰＤを連結前のパケット・インターリーブパケットＰＩＰに戻すように、受信部２１から供給されたパケットデータＰＤ’を分割し、パケット・インターリーブパケットＰＩＰ’を生成する。アンパケット化部２３は、生成した複数個のパケット・インターリーブパケットＰＩＰ’から構成されるパケット・インターリーブデータＰＩＤ’を後段のパケット・デインターリーバ２４に供給する。
パケット・デインターリーバ２４は、符号化器１０におけるパケット・インターリーバ１３に対応して設けられるものであり、パケット・インターリーバ１３によってインターリーブが施されたパケット・インターリーブデータＰＩＤの順序を、それぞれ、元のバイト・インターリーブデータＢＩＤを構成するバイト・インターリーブパケットＢＩＰの順序に戻す処理を行う。ここで、アンパケット化部２３から供給されたパケット・インターリーブデータＰＩＤ’を構成するパケット・インターリーブパケットＰＩＰ’が、上述したようにバイト・インターリーブパケット単位で深さ６及び周期４の畳み込みインターリーブを行って生成されているとき、バイト・インターリーブパケット単位で深さ６及び周期４の畳み込みデインターリーブを施し、複数個のバイト・インターリーブパケットＢＩＰ’から構成されるバイト・インターリーブデータＢＩＤ’を生成する。このとき、パケット・デインターリーバ２４は、パケット・インターリーバ１３によって値が置換されたシンクバイトに基づいて、アンパケット化部２３から供給されたパケット・インターリーブデータＰＩＤ’における先頭のパケットの同期をとり、バイト・インターリーブパケット単位で畳み込みデインターリーブを施す。
また、パケット・インターリーブパケットＰＩＰ’が、上述したように１０８個のバイト・インターリーブパケットで完結する深さ６のブロックインターリーブを行って生成されているとき、１０８個のバイト・インターリーブパケットで完結する深さ６のブロックデインターリーブを施し、複数個のバイト・インターリーブパケットＢＩＰ’から構成されるバイト・インターリーブデータＢＩＤ’を生成する。このとき、パケット・デインターリーバ２４は、パケット・インターリーバ１３によって値が置換されたシンクバイトに基づいて、アンパケット化部２３から供給されたパケット・インターリーブデータＰＩＤ’におけるインターリーブブロックの先頭の検出やパケットの同期をとり、バイト・インターリーブパケット単位でブロックデインターリーブを施す。
具体的には、パケット・デインターリーバ２４は、パケット・インターリーバ１３と同様に、プログラマブルデバイスとして実装される各部に対して外付けとされるＳＤＲＡＭ２７と、このＳＤＲＡＭ２７に対するデータの書き込み及び読み出しを行うためのアドレス生成やデータの授受等の処理を行うインターフェース部２８とから構成される。パケット・デインターリーバ２４は、インターフェース部２８に入力されたパケット・インターリーブデータＰＩＤ’を所定の書き込みアドレスにしたがって順次ＳＤＲＡＭ２７に転送して書き込み、このＳＤＲＡＭ２７に書き込んだデータを書き込みアドレスとは異なる所定の読み出しアドレスにしたがって順次読み出すことにより、アンパケット化部２３から供給されたパケット・インターリーブデータＰＩＤ’に対してデインターリーブを施す。
このとき、パケット・デインターリーバ２４は、パケット連続性検証部２２から供給された検証結果情報ＣＫに基づいて、パケット・インターリーブデータＰＩＤ’が不連続である場合に対応することができる。例えば、パケット・デインターリーバ２４は、検証結果情報ＣＫに基づいて、通信路上で１つの上位レイヤパケットＵＬＰ’が欠落していたことを把握した場合には、ＳＤＲＡＭ２７にデータを書き込む際に、１つの上位レイヤパケットＵＬＰ’に相当する６個のパケット・インターリーブパケットＰＩＰ’を記憶するだけの領域をスキップしてデータを書き込む一方で、所定の読み出しアドレスにしたがった通常のデインターリーブ動作によってデータを読み出す。このような動作によってＳＤＲＡＭ２７から読み出されたデータは、欠落したパケットに対応する部分が前タイムスロットに同じ読み出しアドレスから読み出されたデータ、すなわち、無効データに置換されたものとなる。
パケット・デインターリーバ２４は、このような動作を行って得られたデータのうち、パケット・インターリーバ１３によって置換されたシンクバイトの値″０ｘＢ７，０ｘＢ８″を元の″０ｘ４７″に戻し、最終的に出力するバイト・インターリーブデータＢＩＤ’を生成する。パケット・デインターリーバ２４は、生成した複数個のバイト・インターリーブパケットＢＩＰ’から構成されるバイト・インターリーブデータＢＩＤ’を後段のバイト・デインターリーバ２５に供給する。なお、パケット・デインターリーバ２４は、通信路上で発生するジッタの吸収等の目的を果たすために受信バッファとしての機能も兼ね備えることから、ＳＤＲＡＭ２７の容量は、少なくとも１４４個（深さ６及び周期４の畳み込みデインターリーブを行うの場合）あるいは２１６個（１０８個のバイト・インターリーブパケットで完結する深さ６のブロックデインターリーブを行う場合）のパケット・インターリーブパケットＰＩＰ’を記憶できる容量に加え、当該目的を果たすために必要な若干量を有するものであれば足りる。
バイト・デインターリーバ２５は、符号化器１０におけるバイト・インターリーバ１２に対応して設けられるものであり、バイト・インターリーバ１２によって畳み込みインターリーブが施されたバイト・インターリーブデータＢＩＤの順序を、それぞれ、元の符号化データＥＤを構成する符号化パケットＥＰの順序に戻すように、パケット・デインターリーバ２４から供給されたバイト・インターリーブデータＢＩＤ’を構成するバイト・インターリーブパケットＢＩＰ’のそれぞれに対して、デインターリーブを施し、複数個の符号化パケットＥＰ’から構成される符号化データＥＤ’を生成する。例えばバイト・インターリーブデータＢＩＤ’を構成するバイト・インターリーブパケットＢＩＰ’が、上述のようにバイト単位で深さ１８及び周期１２の畳み込みインターリーブを行って生成されているとき、バイト単位で深さ１８及び周期１２の畳み込みデインターリーブを施し、複数個の符号化パケットＥＰ’から構成される符号化データＥＤ’を生成する。また、バイト・インターリーブデータＢＩＤ’を構成するバイト・インターリーブパケットＢＩＰ’が、上述のように４バイト単位で深さ１８及び周期３の畳み込みインターリーブを行って生成されているとき、４バイト単位で深さ１８及び周期３の畳み込みデインターリーブを施し、複数個の符号化パケットＥＰ’から構成される符号化データＥＤ’を生成する。
具体的には、バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、バイト単位で高速にランダムアクセスすることが可能なＤＰＲＡＭやこのＤＰＲＡＭに対するデータの書き込み及び読み出しを行うためのアドレス生成部等から構成される。バイト・デインターリーバ２５は、入力されたバイト・インターリーブデータＢＩＤ’を所定の書き込みアドレスにしたがって順次ＤＰＲＡＭに転送して書き込み、このＤＰＲＡＭに書き込んだデータを書き込みアドレスとは異なる所定の読み出しアドレスにしたがって順次読み出すことにより、パケット・デインターリーバ２４から供給されたバイト・インターリーブデータＢＩＤ’に対して畳み込みデインターリーブを施す。
このようなバイト・デインターリーバ２５は、生成した複数個の符号化パケットＥＰ’から構成される符号化データＥＤ’を後段のリード・ソロモン復号部２６に供給する。このバイト・デインターリーバ２５によって畳み込みデインターリーブが施された符号化データＥＤ’は、例えば通信路上で１つの上位レイヤパケットＵＬＰ’が欠落していた場合には、１８×６＝１０８個の符号化パケットＥＰ’のそれぞれに対して１２バイトずつのエラーデータが含まれた状態となる。
なお、このバイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、所定のアドレス生成方式にしたがってアドレス制御を行うことにより、畳み込みデインターリーブを行うのに必要なメモリ、すなわち、ＤＰＲＡＭの容量の削減を図ることができるが、これについては、後述するものとする。
リード・ソロモン復号部２６は、符号化器１０におけるリード・ソロモン符号化部１１に対応して設けられるものであり、バイト・デインターリーバ２５から供給された符号化データＥＤ’を構成する符号化パケットＥＰ’のそれぞれに対して、リード・ソロモン符号の復号を施し、複数個のトランスポートパケットＴＳＰから構成されるトランスポートストリームＴＳを復元する。具体的には、リード・ソロモン復号部２６は、２１６バイトからなる符号化パケットＥＰ’のそれぞれに含まれる２８バイトからなるパリティとしての誤り訂正符号を用いて誤り訂正を行い、１８８バイトからなるトランスポートパケットＴＳＰから構成されるトランスポートストリームＴＳを復元して出力する。このリード・ソロモン復号部２６は、例えば通信路上で１つの上位レイヤパケットＵＬＰ’が欠落していた場合には、任意の符号化パケットＥＰ’に含まれる最大のエラーバイト数が１２バイトであり、誤り訂正限界バイト数である１４バイト以下であることから、全てのビットを完全に訂正することができる。
このような各部を有する復号器２０は、所定の通信路を介して受信した受信データＲＤから、符号化器１０に情報系列として入力されたトランスポートストリームＴＳを完全に復元して出力する。図１１Ａ〜図１１Ｅは、パケット・インターリーバでパケット単位の畳み込みインターリーブ処理が行われたとき、復号器２０が有する各部におけるパケットフォーマットの推移を説明するための図である。また、図１２Ａ〜図１２Ｆは、パケット・インターリーバでパケット単位のブロックインターリーブ処理が行われたとき、復号器２０が有する各部におけるパケットフォーマットの推移を説明するための図である。
すなわち、復号器２０は、受信部２１によって受信データＲＤを受信して図１１Ａ（図１２Ａ）に示すパケットデータＰＤ’を生成すると、これらのパケットデータＰＤ’のそれぞれをアンパケット化部２３によって分割し、図１１Ｂ（図１２Ｂ）に示す複数個のパケット・インターリーブパケットＰＩＰ’から構成されるパケット・インターリーブデータＰＩＤ’を生成する。ここで、受信データＲＤは、通信路上で１つの上位レイヤパケットＵＬＰ’の欠落が発生したものであるとし、この欠落した上位レイヤパケットＵＬＰ’に対応するパケットデータＰＤ’及びパケット・インターリーブパケットＰＩＰ’を図１１Ａ（図１２Ａ），図１１Ｂ（図１２Ｂ）における横線部で示すものとする。
このとき、符号化器１０において生成された１つの符号化パケットＥＰに含まれる情報は、パケット単位の畳み込みインターリーブ処理が行われたとき、図１１Ａ，図１１Ｂにおける斜線部に示すように、連続する１４４個のパケット・インターリーブパケットＰＩＰ’に離散的に分散され、且つ、１２バイトずつの情報が少なくとも６個のパケット・インターリーブパケットＰＩＰ’の間隔を空けて分散されている状態である。
復号器２０は、パケット・インターリーブパケットＰＩＰ’のそれぞれに対して、パケット・デインターリーバ２４によってパケット単位で畳み込みデインターリーブを施すことにより、符号化器１０において生成された１つの符号化パケットＥＰに含まれる情報を、図１１Ｃの斜線部及び横線部に示す連続する１８個のバイト・インターリーブパケットＢＩＰ’に１２バイトずつ分散した複数個のバイト・インターリーブパケットＢＩＰ’から構成されるバイト・インターリーブデータＢＩＤ’を生成する。このとき、復号器２０は、パケット連続性検証部２２による検証結果情報ＣＫに基づいて、欠落した上位レイヤパケットＵＬＰ’に対応するデータを無効データに置換し、図１１Ｃにおける″？″が付された横線部で示すバイト・インターリーブパケットＢＩＰ’を含むバイト・インターリーブデータＢＩＤ’を生成する。
さらに、復号器２０は、バイト・インターリーブパケットＢＩＰ’のそれぞれに対して、図１１Ｄに示すように、バイト・デインターリーバ２５によって畳み込みデインターリーブを施すことにより、複数個の符号化パケットＥＰ’から構成される符号化データＥＤ’を生成する。これにより、欠落した１つの上位レイヤパケットＵＬＰ’による２１６×６＝１２９６バイトもの極めて大きなバーストエラーは、図１１Ｄにおけるクロスハッチ部に示すように、各符号化パケットＥＰ’に分散されたせいぜい１２バイトのランダムエラーとして扱うことが可能となる。
また、符号化器１０において生成された１つの符号化パケットＥＰに含まれる情報は、パケット単位のブロックインターリーブ処理が行われたとき、図１２Ａ，図１２Ｂにおける斜線部に示すように、連続する１０８個のパケット・インターリーブパケットＰＩＰ’に離散的に分散され、且つ、インターリーブブロックの先頭から連続する６パケット・インターリーブパケットＰＩＰ毎のグループに、１２バイトずつの情報がそれぞれ１つずつ分散されている状態である。
復号器２０は、パケット・インターリーブパケットＰＩＰ’のそれぞれに対して、パケット・デインターリーバ２４によってパケット単位でブロックデインターリーブを施す。ここで、パケット単位でブロックデインターリーブを施す際には、シンクバイトを利用して、パケット・インターリーブデータＰＩＤ’におけるインターリーブブロックの先頭やＲＴＰパケットを検出する。図１２Ｂは、シンクバイトの検出結果を示しており、「Ｂ」がインターリーブブロックの開始を示しており、「Ｐ」がＲＴＰパケットの先頭位置を示している。
パケット・デインターリーバ２４は、図１２Ｃに示すように、検出されたインターリーブブロックの開始から１０８個のパケット・インターリーブパケットＰＩＰ’を用いてブロックデインターリーブを施すことにより、符号化器１０において生成された１つの符号化パケットＥＰに含まれる情報を、図１２Ｄの斜線部及び横線部に示すように、連続する１８個のバイト・インターリーブパケットＢＩＰ’に１２バイトずつ分散した複数個のバイト・インターリーブパケットＢＩＰ’から構成されるバイト・インターリーブデータＢＩＤ’を生成する。このとき、復号器２０は、パケット連続性検証部２２による検証結果情報ＣＫに基づいて、欠落した上位レイヤパケットＵＬＰ’に対応するデータを無効データに置換し、図１２Ｄにおける″？″が付された横線部で示すバイト・インターリーブパケットＢＩＰ’を含むバイト・インターリーブデータＢＩＤ’を生成する。
さらに、復号器２０は、バイト・インターリーブパケットＢＩＰ’のそれぞれに対して、図１２Ｄに示すように、バイト・デインターリーバ２５によって畳み込みデインターリーブを施すことにより、複数個の符号化パケットＥＰ’から構成される符号化データＥＤ’を生成する。これにより、欠落した１つの上位レイヤパケットＵＬＰ’による２１６×６＝１２９６バイトもの極めて大きなバーストエラーは、図１２Ｅにおけるクロスハッチ部に示すように、各符号化パケットＥＰ’に分散されたせいぜい１２バイトのランダムエラーとして扱うことが可能となる。
なお、図１１Ａ，図１１Ｂの斜線部で示してきた分散された情報は、図１１Ｅにおける黒マスで示すように、１つのトランスポートパケットＴＳＰに集約されることになる。また、図１２Ａ，図１２Ｂの斜線部で示してきた分散された情報は、図１２Ｆにおける黒マスで示すように、１つのトランスポートパケットＴＳＰに集約されることになる。
そして、復号器２０は、図１１Ｅ，図１２Ｆに示すように、リード・ソロモン復号部２６によってリード・ソロモン符号の復号を施すことにより、完全にエラーが訂正された複数個のトランスポートパケットＴＳＰから構成されるトランスポートストリームＴＳを生成する。
このように、復号器２０は、最大で１つの上位レイヤパケットＵＬＰ’に含まれる情報にバーストエラーが発生した状態とされる受信データＲＤを受信した場合であっても、このバーストエラーを完全に訂正することができる。このとき、復号器２０は、符号化器１０によって生成された送信データＴＤにおける１つの上位レイヤパケットＵＬＰが通信路上で欠落した状態とされる複数個の上位レイヤパケットＵＬＰ’から構成される受信データＲＤを受信した場合であっても、存在しない欠落したデータを無効データに置換することにより、バーストエラーとみなすことができ、欠落した上位レイヤパケットＵＬＰ’に対応する情報を完全に復元することができる。
また、復号器２０は、符号化器１０と同様に、バイト・デインターリーバ２５をプログラマブルデバイスに内蔵される容量の小さなＤＰＲＡＭを用いて実装するとともに、パケット・デインターリーバ２４をプログラマブルデバイスに外付けとされる比較的容量の大きなＳＤＲＡＭ２７を用いて実装することにより、プログラマブルデバイスの内部に設けられるメモリ資源を節約することができるとともに、ＳＤＲＡＭ２７に対するバーストアクセスによる周辺回路の単純化を図ることができる。このように、復号器２０は、ＤＰＲＡＭ及びＳＤＲＡＭ２７を用いた２段階のデインターリーブを行うことにより、符号化器１０と同様に、これらのメモリの弱点を補完的に回避することができ、パケット単位でデインターリーブを行う際に、プログラマブルデバイスに内蔵される容量が小さなＤＰＲＡＭを用いるのではなく外付けとされるＳＤＲＡＭ２７を用いることにより、コストの削減を図ることができ、ＳＤＲＡＭ２７に対してパケット単位でアクセスすることによって高速動作を行うこともできる。
さて、符号化器１０におけるバイト・インターリーバ１２、及び復号器２０におけるバイト・デインターリーバ２５は、それぞれ、上述したように、所定のアドレス生成方式にしたがってアドレス制御を行うことにより、バイト単位あるいはユニット単位での畳み込みインターリーブ及び畳み込みデインターリーブを行うのに必要なメモリ容量を削減することができる。以下、これについて詳述する。
メモリとしてＤＰＲＡＭを用いてバイト単位あるいはユニット単位で畳み込みインターリーブ又は畳み込みデインターリーブを行う際には、ＤＰＲＡＭの書き込み側で畳み込みインターリーブ又は畳み込みデインターリーブを行うためのデータの並べ替えを行う一方で、読み出し側でＤＰＲＡＭの先頭アドレスから順次１パケットずつ読み出すのが通常である。また、これとは逆に、書き込み側でＤＰＲＡＭの先頭アドレスから順次１パケットずつ書き込む一方で、ＤＰＲＡＭの読み出し側で畳み込みインターリーブ又は畳み込みデインターリーブを行うためのデータの並べ替えを行うことにより、バイト単位あるいはユニット単位で畳み込みインターリーブ又は畳み込みデインターリーブを行うこともできる。したがって、ＤＰＲＡＭは、既に畳み込みインターリーブ又は畳み込みデインターリーブを行うために使用されてデータが読み出された領域があっても、データの読み出しの直後にこの領域を使用することがなく、畳み込みインターリーブ又は畳み込みデインターリーブを行うために確保した領域のうち約半分の領域が使用されない状態となる。
そこで、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ＤＰＲＡＭにおけるある領域からデータ読み出した場合には、次に書き込むデータをこの領域に対して書き込むことにより、畳み込みインターリーブ又は畳み込みデインターリーブを実現する。すなわち、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ＤＰＲＡＭの領域のうち使用済みとされる無駄な領域をなくし、確保した領域に対して、今後畳み込みインターリーブ又は畳み込みデインターリーブを行うために使用される有意なデータのみを常に記憶しておくようにする。これにより、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、畳み込みインターリーブ又は畳み込みデインターリーブを行うために必要とするＤＰＲＡＭの容量を最小限に抑制することができる。
このようなＤＰＲＡＭに対するデータの書き込み動作及び読み出し動作を実現するために、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、図１３Ａ乃至図２４を用いて説明するアドレス生成方式にしたがったアドレス制御を行う。
以下、バイト単位およびユニット単位でインターリーブおよびデインターリーブを行う場合について説明する。なお、説明を簡便化するために、バイト単位でインターリーブおよびデインターリーブを行う場合には、バイト・インターリーバ１２によって１２バイトからなる符号化パケットＥＰに対して深さ４及び周期３の畳み込みインターリーブを施し、１２バイトからなるバイト・インターリーブデータＢＩＤを生成するとともに、バイト・デインターリーバ２５によってバイト・インターリーブデータＢＩＤ’に対して深さ４及び周期３の畳み込みデインターリーブを施し、１２バイトからなる符号化パケットＥＰ’を生成するものとして説明する。また、ユニット単位でインターリーブおよびデインターリーブを行う場合には、バイト・インターリーバ１２によって、２４バイトからなる符号化パケットＥＰに対して２バイトを１ユニットとして、ユニット単位で深さ４及び周期３の畳み込みインターリーブを施し、２４バイトからなるバイト・インターリーブデータＢＩＤを生成するとともに、バイト・デインターリーバ２５によってバイト・インターリーブデータＢＩＤ’に対して深さ４及び周期３の畳み込みデインターリーブをユニット単位で施し、２４バイトからなる符号化パケットＥＰ’を生成するものとして説明する。
ここで、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、通常であれば、畳み込みインターリーブ又は畳み込みデインターリーブの深さと入力した１パケットあたりのバイト数との積で表されるバイト数、例えば上述のように１２バイトからなる符号化パケットＥＰに対して深さ４及び周期３の畳み込みインターリーブおよび畳み込みデインターリーブを行う場合、１２×４＝４８バイトの容量を有するメモリを用いて実装する必要があるところ、この容量よりも小さい容量を有するメモリを用いて実装可能とするものである。
まず、バイト単位で処理を行う場合の動作を説明する。バイト・インターリーバ１２は、ある符号化パケットＥＰを構成する各バイトが、畳み込みインターリーブが施されることによって当該バイトが属するパケットからどれほど遅延したパケットに格納されるかに応じて各バイトを分類する。さらに、これらの分類されたバイトをまとめてＤＰＲＡＭにおけるメモリマップ上で連続したアドレスに管理する。ここで、あるバイトが属するパケットからの遅延パケット数をディレイ（Ｄｅｌａｙ）と称し、遅延パケット数が等しいバイト群をディレイ・グループ（Ｄｅｌａｙ  Ｇｒｏｕｐ）と称するものとする。すなわち、バイト・インターリーバ１２は、任意の符号化パケットＥＰを構成する各バイトについて、当該符号化パケットＥＰに対する、畳み込みインターリーブが施されることによって当該バイトが格納されるバイト・インターリーブパケットＢＩＰの遅延数である遅延パケット数が等しいバイト群をディレイ・グループとしてまとめて分類する。さらに、このディレイ・グループ毎にＤＰＲＡＭにおける連続するアドレスに対して書き込み及び読み出しを行うように書き込みアドレス及び読み出しアドレスを生成して、ディレイ・グループ毎にデータを扱う。
ある符号化パケットＥＰを構成する各バイトをこのようなディレイ・グループに分類するために、バイト・インターリーバ１２は、アドレス生成部として、図示しないが、ＤＰＲＡＭに対するデータの書き込み及び読み出しを行うのに用いる書き込みアドレス及び読み出しアドレスの算出を補助するための２つの補助カウンタを設ける。具体的には、図１３Ａに示すように、入力される１２バイトからなる符号化パケットＥＰのそれぞれに対して０，１，２，３，・・・といったパケット番号を付すとともに、図１３Ｂに示すように、各符号化パケットＥＰを構成する各バイトに対して０〜１１のバイト番号を付すものとすると、バイト・インターリーバ１２は、図１３Ｃに示すように、バイト番号に対応して畳み込みインターリーブの深さ４に対応したカウント値ｃｎｔ＿ｄｅｌ（０〜３）をインクリメントしてパケット毎に計数する第１のカウンタと、図１３Ｄに示すように、第１のカウンタの周期に対応したカウント値ｃｎｔ＿ｂｌｏｃｋ（０〜２）をインクリメントしてパケット毎に計数する第２のカウンタとを、補助カウンタとして設ける。
ここで、第１のカウンタによって計数されるカウント値ｃｎｔ＿ｄｅｌは、上述した遅延パケット数、すなわち、ディレイを表すものであり、第２のカウンタによって計数されるカウント値ｃｎｔ＿ｂｌｏｃｋは、第１のカウンタの周期を１ブロックとしたときのブロック数を表すものである。
バイト・インターリーバ１２は、このような第１のカウンタによって計数されるカウント値ｃｎｔ＿ｄｅｌと、第２のカウンタによって計数されるカウント値ｃｎｔ＿ｂｌｏｃｋとを用いて、ＤＰＲＡＭに対するデータの書き込み及び読み出しを制御し、符号化パケットＥＰに対して畳み込みインターリーブを施す。このとき、バイト・インターリーバ１２は、畳み込みインターリーブを施す符号化パケットＥＰを入力すると、即座にＤＰＲＡＭに対するデータの書き込みを開始する一方、ＤＰＲＡＭからのデータの読み出しについては、データの書き込みと同時に開始するか、又は所定の固定クロック数だけ遅延して開始する。バイト・インターリーバ１２は、ある符号化パケットＥＰを入力した場合には、ＤＰＲＡＭに書き込まれた有意なデータを読み出す前に、他のデータによって当該有意なデータが上書きされるのを回避するために、ＤＰＲＡＭに対するデータの書き込み後、次の符号化パケットＥＰが入力される前に、全てのデータの読み出しを完了する必要がある。
具体的には、バイト・インターリーバ１２は、例えば図１４Ａ〜図１４Ｄに示すように、ＤＰＲＡＭに対するディレイ・グループ毎に分類されたバイト群の書き込み及び読み出しを行う。なお、ここでは、カウント値ｃｎｔ＿ｄｅｌが″０″であるときに対応する３バイトからなるパケット番号毎のバイト群をディレイ・グループｄｅｌ０と称し、カウント値ｃｎｔ＿ｄｅｌが″１″であるときに対応する３バイトからなるパケット番号毎のバイト群をディレイ・グループｄｅｌ１と称し、カウント値ｃｎｔ＿ｄｅｌが″２″であるときに対応する３バイトからなるパケット番号毎のバイト群をディレイ・グループｄｅｌ２と称し、カウント値ｃｎｔ＿ｄｅｌが″３″であるときに対応する３バイトからなるパケット番号毎のバイト群をディレイ・グループｄｅｌ３と称するものとする。また、図１４Ｂ〜図１４Ｄにおいては、パケット番号が″ｎ″とされる符号化パケットＥＰにおけるディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３を、それぞれ、″ｎ−０″，ｎ−１″，″ｎ−２″，″ｎ−３″と記述するものとする。
すなわち、バイト・インターリーバ１２は、畳み込みインターリーブを施すための準備として、図１４Ｂの左から１番目における太横線で示すように、第１のカウンタ及び第２のカウンタのリセット解除時におけるＤＰＲＡＭのアドレスであって当該ＤＰＲＡＭに対してデータの書き込み及び読み出しを行う先頭を示す基準アドレスａｄｄｒ＿ｂａｓｅを″０″といった所定の初期値に設定する。その後、図１４Ａに示すパケットの番号の左から１番目に示すように、パケット番号が″０″とされる符号化パケットＥＰを入力すると、図１４Ｂの左から１番目に示すように、この符号化パケットＥＰを構成する各バイトを、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、３バイトからなる４つのディレイ・グループｄｅｌ０（０−０），ｄｅｌ１（０−１），ｄｅｌ２（０−２），ｄｅｌ３（０−３）に分類する。すなわち、パケット番号「０」におけるバイト番号「０，４，８」のバイトはｄｅｌ０（０−０）、バイト番号「１，５，９」のバイトはｄｅｌ１（０−１），バイト番号「２，６，１０」はｄｅｌ２（０−２），バイト番号「３，７，１１」のバイトはｄｅｌ３（０−３）にそれぞれ分類されることとなる。
そして、バイト・インターリーバ１２は、図１４Ｃの左から１番目に示すように、これらの４つのディレイ・グループｄｅｌ０（０−０），ｄｅｌ１（０−１），ｄｅｌ２（０−２），ｄｅｌ３（０−３）のうち、ディレイ・グループｄｅｌ０（０−０）に属する各バイトについては、ＤＰＲＡＭに書き込まず、ディレイ・グループｄｅｌ１（０−１）に属する各バイトについては、ＤＰＲＡＭにおける上述した基準アドレスａｄｄｒ＿ｂａｓｅの２ブロック後の領域ｗ１に書き込み、ディレイ・グループｄｅｌ２（０−２）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３）ブロック後の領域ｗ２に書き込み、ディレイ・グループｄｅｌ３（０−３）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３＋４）ブロック後の領域、すなわち、先頭へと巡回した領域ｗ３に書き込むように、書き込みアドレスを生成する。
また、バイト・インターリーバ１２は、このようなＤＰＲＡＭに対する書き込み動作とともに、読み出し動作も行う。すなわち、バイト・インターリーバ１２は、ＤＰＲＡＭに書き込まれている４つのディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３のうち、ディレイ・グループｄｅｌ０に属する各バイトについては、ＤＰＲＡＭに書き込まれないのでそのまま用いる。また、ディレイ・グループｄｅｌ１に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの１ブロック後の領域ｒ１から読み出し、ディレイ・グループｄｅｌ２に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２）ブロック後の領域ｒ２から読み出し、ディレイ・グループｄｅｌ３に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２＋３）ブロック後の領域ｒ３から読み出すように、読み出しアドレスを生成する。ただし、バイト・インターリーバ１２は、ここでは、領域ｒ１，ｒ２，ｒ３のいずれにもデータが書き込まれていない状態であることから、実際には、読み出すべきデータがないことになる。
これにより、バイト・インターリーバ１２は、図１４Ｄの左から１番目に示すように、ディレイ・グループｄｅｌ０（０−０）として分類された各バイトからなるデータを出力することになる。
続いて、バイト・インターリーバ１２は、次の符号化パケットＥＰを入力する準備として、図１４Ｂの左から２番目における太横線で示すように、基準アドレスａｄｄｒ＿ｂａｓｅを１ブロック分だけ進めた上で、図１４Ａの左から２番目に示すように、パケット番号が″１″とされる次の符号化パケットＥＰを入力すると、図１４Ｂの左から２番目に示すように、この符号化パケットＥＰを構成する各バイトを、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、３バイトからなる４つのディレイ・グループｄｅｌ０（１−０），ｄｅｌ１（１−１），ｄｅｌ２（１−２），ｄｅｌ３（１−３）に分類する。
そして、バイト・インターリーバ１２は、図１４Ｃの左から２番目に示すように、これらの４つのディレイ・グループｄｅｌ０（１−０），ｄｅｌ１（１−１），ｄｅｌ２（１−２），ｄｅｌ３（１−３）のうち、ディレイ・グループｄｅｌ０（１−０）に属する各バイトについては、ＤＰＲＡＭに書き込まず、ディレイ・グループｄｅｌ１（１−１），ｄｅｌ２（１−２），ｄｅｌ３（１−３）に属する各バイトは、符号化パケットＥＰが入力される前に読み出しが行われた領域に書き込む。すなわち、ディレイ・グループｄｅｌ１（１−１）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの２ブロック後の領域ｗ１（＝１つ前のパケットの番号における領域ｒ２）に書き込み、ディレイ・グループｄｅｌ２（１−２）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３）ブロック後の領域ｗ２（＝１つ前のパケットの番号における領域ｒ３）に書き込み、ディレイ・グループｄｅｌ３（１−３）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３＋４）ブロック後の領域、すなわち、先頭へと巡回した領域ｗ３（＝１つ前のパケットの番号における領域ｒ１）に書き込むように、書き込みアドレスを生成する。
また、バイト・インターリーバ１２は、ＤＰＲＡＭに書き込まれている４つのディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３のうち、ディレイ・グループｄｅｌ０に属する各バイトについては、ＤＰＲＡＭに書き込まれないのでそのまま用いる。また、ディレイ・グループｄｅｌ１に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの１ブロック後の領域ｒ１から読み出し、ディレイ・グループｄｅｌ２に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２）ブロック後の領域ｒ２から読み出し、ディレイ・グループｄｅｌ３に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２＋３）ブロック後の領域ｒ３から読み出すように、読み出しアドレスを生成する。ここで、バイト・インターリーバ１２は、領域ｒ２，ｒ３にはデータが書き込まれていないが、領域ｒ１はパケット番号が″０″の符号化パケットＥＰを入力したときにおける領域ｗ１と同じ領域であり、ディレイ・グループｄｅｌ１（０−１）が書き込まれていることから、実際には、このディレイ・グループｄｅｌ１（０−１）のみを読み出すことになる。
これにより、バイト・インターリーバ１２は、図１４Ｄの左から２番目に示すように、ディレイ・グループｄｅｌ０（１−０），ｄｅｌ１（０−１）として分類された各バイトからなるデータを出力することになる。
続いて、バイト・インターリーバ１２は、次の符号化パケットＥＰを入力する準備として、図１４Ｂの左から３番目における太横線で示すように、基準アドレスａｄｄｒ＿ｂａｓｅをさらに１ブロック分だけ進めた上で、図１４Ａの左から３番目に示すように、パケット番号が″２″とされる次の符号化パケットＥＰを入力すると、図１４Ｂの左から３番目に示すように、この符号化パケットＥＰを構成する各バイトを、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、３バイトからなる４つのディレイ・グループｄｅｌ０（２−０），ｄｅｌ１（２−１），ｄｅｌ２（２−２），ｄｅｌ３（２−３）に分類する。
そして、バイト・インターリーバ１２は、図１４Ｃの左から３番目に示すように、これらの４つのディレイ・グループｄｅｌ０（２−０），ｄｅｌ１（２−１），ｄｅｌ２（２−２），ｄｅｌ３（２−３）のうち、ディレイ・グループｄｅｌ０（２−０）に属する各バイトについては、ＤＰＲＡＭに書き込まず、ディレイ・グループｄｅｌ１（２−１）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの２ブロック後の領域ｗ１に書き込み、ディレイ・グループｄｅｌ２（２−２）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３）ブロック後の領域ｗ２に書き込み、ディレイ・グループｄｅｌ３（２−３）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３＋４）ブロック後の領域、すなわち、先頭へと巡回した領域ｗ３に書き込むように、書き込みアドレスを生成する。
また、バイト・インターリーバ１２は、ＤＰＲＡＭに書き込まれている４つのディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３のうち、ディレイ・グループｄｅｌ０に属する各バイトについては、ＤＰＲＡＭに書き込まれないのでそのまま用いる。また、ディレイ・グループｄｅｌ１に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの１ブロック後の領域ｒ１から読み出し、ディレイ・グループｄｅｌ２に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２）ブロック後の領域ｒ２から読み出し、ディレイ・グループｄｅｌ３に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２＋３）ブロック後の領域ｒ３から読み出すように、読み出しアドレスを生成する。ここで、バイト・インターリーバ１２は、領域ｒ３にはデータが書き込まれていないが、領域ｒ１はパケット番号が″１″の符号化パケットＥＰを入力したときにおける領域ｗ１と同じ領域であり、さらに、領域ｒ２はパケット番号が″０″の符号化パケットＥＰを入力したときにおける領域ｗ２と同じ領域であり、ディレイ・グループｄｅｌ１（１−１），ｄｅｌ２（０−２）が書き込まれていることから、実際には、これらのディレイ・グループｄｅｌ１（１−１），ｄｅｌ２（０−２）のみを読み出すことになる。
これにより、バイト・インターリーバ１２は、図１４Ｄの左から３番目に示すように、ディレイ・グループｄｅｌ０（２−０），ｄｅｌ１（１−１），ｄｅｌ２（０−２）として分類された各バイトからなるデータを出力することになる。
同様に、バイト・インターリーバ１２は、次の符号化パケットＥＰを入力する準備として、図１４Ｂの左から４番目における太横線で示すように、基準アドレスａｄｄｒ＿ｂａｓｅをさらに１ブロック分だけ進めた上で、図１４Ａの左から４番目に示すように、パケット番号が″３″とされる次の符号化パケットＥＰを入力すると、図１４Ｂの左から４番目に示すように、この符号化パケットＥＰを構成する各バイトを、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、３バイトからなる４つのディレイ・グループｄｅｌ０（３−０），ｄｅｌ１（３−１），ｄｅｌ２（３−２），ｄｅｌ３（３−３）に分類する。
そして、バイト・インターリーバ１２は、図１４Ｃの左から４番目に示すように、これらの４つのディレイ・グループｄｅｌ０（３−０），ｄｅｌ１（３−１），ｄｅｌ２（３−２），ｄｅｌ３（３−３）のうち、ディレイ・グループｄｅｌ０（３−０）に属する各バイトについては、ＤＰＲＡＭに書き込まず、ディレイ・グループｄｅｌ１（３−１）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの２ブロック後の領域ｗ１に書き込み、ディレイ・グループｄｅｌ２（３−２）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３）ブロック後の領域ｗ２に書き込み、ディレイ・グループｄｅｌ３（３−３）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３＋４）ブロック後の領域、すなわち、先頭へと巡回した領域ｗ３に書き込むように、書き込みアドレスを生成する。
なお、この段階でのＤＰＲＡＭにおける各アドレスにマッピングされたデータを詳細に示すと、図１５に示すようになる。すなわち、バイト・インターリーバ１２においては、アドレス０からアドレス２までの３バイト分のブロックを記憶可能な領域については、パケット番号が″０″であり且つ遅延パケット数が″３″であるディレイ・グループｄｅｌ３（０−３）が記憶され、このうち、アドレス０の領域にはバイト番号が″３″のデータが記憶され、アドレス１の領域にはバイト番号が″７″のデータが記憶され、アドレス２の領域にはバイト番号が″１１″のデータが記憶されるといったように、各ディレイ・グループに属する各バイトが、連続するアドレスに対してバイト番号が小さいものから書き込まれる。
また、バイト・インターリーバ１２は、図１４Ｃの左から４番目に示すように、ＤＰＲＡＭに書き込まれている４つのディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３のうち、ディレイ・グループｄｅｌ０に属する各バイトについては、ＤＰＲＡＭに書き込まれないのでそのまま読み出し、ディレイ・グループｄｅｌ１に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの１ブロック後の領域ｒ１から読み出し、ディレイ・グループｄｅｌ２に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２）ブロック後の領域ｒ２から読み出し、ディレイ・グループｄｅｌ３に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２＋３）ブロック後の領域ｒ３から読み出すように、読み出しアドレスを生成する。ここで、バイト・インターリーバ１２は、領域ｒ１はパケット番号が″２″の符号化パケットＥＰを入力したときにおける領域ｗ１と同じ領域であり、また、領域ｒ２はパケット番号が″１″の符号化パケットＥＰを入力したときにおける領域ｗ２と同じ領域であり、さらに、領域ｒ３はパケット番号が″０″の符号化パケットＥＰを入力したときにおける領域ｗ３と同じ領域であり、ディレイ・グループｄｅｌ１（２−１），ｄｅｌ２（１−２），ｄｅｌ３（０−３）が書き込まれていることから、実際には、これらのディレイ・グループｄｅｌ１（２−１），ｄｅｌ２（１−２），ｄｅｌ３（０−３）を読み出すことになる。
これにより、バイト・インターリーバ１２は、図１４Ｄの左から４番目に示すように、ディレイ・グループｄｅｌ０（３−０），ｄｅｌ１（２−１），ｄｅｌ２（１−２），ｄｅｌ３（０−３）として分類された各バイトからなるデータを出力することになる。
このように、バイト・インターリーバ１２は、符号化パケットＥＰが入力される毎に各バイトをディレイ・グループに分類し、上述したアドレス生成方式にしたがった書き込みアドレス及び読み出しアドレスに基づいて、ディレイ・グループ毎にＤＰＲＡＭにおけるメモリマップ上で連続したアドレスに管理された書き込み及び読み出しを行う。これにより、バイト・インターリーバ１２は、読み出しが行われてインターリーブが完了したデータの記憶領域を次のデータの書き込み領域として、即座に次のデータを書き込むことができる。すなわち、ＤＰＲＡＭの領域のうち使用済みとされる無駄な領域（インターリーブが完了したデータが書き込まれたままとなっている領域）をなくすことができ、必要とするＤＰＲＡＭの容量を最小限に抑制することができる。この場合、バイト・インターリーバ１２は、通常であれば、畳み込みインターリーブの深さＤ＝４と入力した１パケットあたりのバイト数Ｎ＝１２との積、すなわち、Ｄ×Ｎ＝４×１２＝４８バイトの容量を有するＤＰＲＡＭを必要とするところ、上述したアドレス制御を行うことにより、図１４Ｃに示すように、９個の３バイトからなる領域、すなわち、２７バイトの容量を有するＤＰＲＡＭを用いるのみで、同様の畳み込みインターリーブを行うことができる。また、バイト・インターリーバ１２は、分類したディレイ・グループ毎に連続するアドレスに対して書き込み、また、この連続するアドレスに対して書き込まれたディレイ・グループ毎に読み出しを行うことにより、書き込みアドレス及び読み出しアドレスの算出を容易に行うことができる。
つぎに、バイト・デインターリーバ２５について説明する。
バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、あるバイト・インターリーブパケットＢＩＰ’を構成する各バイトをディレイ・グループに分類してこのディレイ・グループ毎にデータを扱い、バイト・インターリーバ１２とは対称なアドレス制御を行うことにより、畳み込みデインターリーブを行う。
すなわち、バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、アドレス生成部として、図示しないが、ＤＰＲＡＭに対するデータの書き込み及び読み出しを行うのに用いるアドレスの算出を補助するための２つの補助カウンタを設ける。具体的には、図１６Ａに示すように、入力される１２バイトからなるバイト・インターリーブパケットＢＩＰ’のそれぞれに対して０，１，２，３，・・・といったパケット番号を付すとともに、図１６Ｂに示すように、各バイト・インターリーブパケットＢＩＰ’を構成する各バイトに対して０〜１１のバイト番号を付すものとすると、バイト・デインターリーバ２５は、図１６Ｃに示すように、バイト番号に対応して畳み込みデインターリーブの深さ４に対応したカウント値ｃｎｔ＿ｄｅｌ（０〜３）をデクリメントしてパケット毎に計数する第１のカウンタと、図１６Ｄに示すように、第１のカウンタの周期に対応したカウント値ｃｎｔ＿ｂｌｏｃｋ（０〜２）をインクリメントしてパケット毎に計数する第２のカウンタとを、補助カウンタとして設ける。なお、バイト・インターリーバ１２と異なる点は、第１のカウンタによって計数されるカウント値ｃｎｔ＿ｄｅｌが、インクリメントされるのではなく、デクリメントされることである。
バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、このような第１のカウンタによって計数されるカウント値ｃｎｔ＿ｄｅｌと、第２のカウンタによって計数されるカウント値ｃｎｔ＿ｂｌｏｃｋとを用いて、ＤＰＲＡＭに対するデータの書き込み及び読み出しを制御し、バイト・インターリーブパケットＢＩＰ’に対して畳み込みデインターリーブを施す。バイト・デインターリーバ２５は、畳み込みデインターリーブを施すバイト・インターリーブパケットＢＩＰ’を入力すると、即座にＤＰＲＡＭに対するデータの書き込みを開始する一方、ＤＰＲＡＭからのデータの読み出しについては、データの書き込みと同時に開始するか、又は所定の固定クロック数だけ遅延して開始する。バイト・デインターリーバ２５は、あるバイト・インターリーブパケットＢＩＰ’を入力した場合には、ＤＰＲＡＭに書き込まれた有意なデータを読み出す前に、他のデータによって当該有意なデータが上書きされるのを回避するために、ＤＰＲＡＭに対するデータの書き込み後、次のバイト・インターリーブパケットＢＩＰ’が入力される前に、全てのデータの読み出しを完了する必要がある。
具体的には、バイト・デインターリーバ２５は、バイト・インターリーバ１２から出力されるデータ配列からなるバイト・インターリーブパケットＢＩＰ’を入力するものとすると、例えば図１７Ａ〜図１７Ｄに示すように、ＤＰＲＡＭに対するディレイ・グループ毎に分類されたバイト群の書き込み及び読み出しを行う。なお、ここでも、先に示した図１４Ｂと同様に、カウント値ｃｎｔ＿ｄｅｌが″０″であるときに対応する３バイトからなるパケット番号毎のバイト群をディレイ・グループｄｅｌ０と称し、カウント値ｃｎｔ＿ｄｅｌが″１″であるときに対応する３バイトからなるパケット番号毎のバイト群をディレイ・グループｄｅｌ１と称し、カウント値ｃｎｔ＿ｄｅｌが″２″であるときに対応する３バイトからなるパケット番号毎のバイト群をディレイ・グループｄｅｌ２と称し、カウント値ｃｎｔ＿ｄｅｌが″３″であるときに対応する３バイトからなるパケット番号毎のバイト群をディレイ・グループｄｅｌ３と称するものとする。
すなわち、バイト・デインターリーバ２５は、畳み込みデインターリーブを施すための準備として、図１７Ｂの左から１番目における太横線で示すように、第１のカウンタ及び第２のカウンタのリセット解除時におけるＤＰＲＡＭのアドレスであって当該ＤＰＲＡＭに対してデータの書き込み及び読み出しを行う先頭を示す基準アドレスａｄｄｒ＿ｂａｓｅを″０″といった所定の初期値に設定する。その後、図１７Ａに示すパケットの番号の左から１番目に示すように、パケット番号が″０″とされるバイト・インターリーブパケットＢＩＰ’を入力すると、図１７Ｂの左から１番目に示すように、このバイト・インターリーブパケットＢＩＰ’を構成する各バイトを、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、３バイトからなる４つのディレイ・グループｄｅｌ０（０−３），ｄｅｌ１（１−２），ｄｅｌ２（２−１），ｄｅｌ３（３−０）に分類する。
なお、図１７Ｂにおいては、先に示した図１４Ｂと異なり、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌと、″ｎ−ｍ″と記述されるディレイ・グループの″ｍ″の値とが一致しないが、これは、バイト・インターリーブパケットＢＩＰ’に対して畳み込みデインターリーブを施すことによって符号化パケットＥＰに対応する符号化パケットＥＰ’が復元される様子を示すための便宜である。
そして、バイト・デインターリーバ２５は、図１７Ｃの左から１番目に示すように、これらの４つのディレイ・グループｄｅｌ０（０−３），ｄｅｌ１（１−２），ｄｅｌ２（２−１），ｄｅｌ３（３−０）のうち、ディレイ・グループｄｅｌ０（０−３）に属する各バイトについては、ＤＰＲＡＭに書き込まず、ディレイ・グループｄｅｌ１（１−２）に属する各バイトについては、ＤＰＲＡＭにおける上述した基準アドレスａｄｄｒ＿ｂａｓｅの２ブロック後の領域ｗ３に書き込み、ディレイ・グループｄｅｌ２（２−１）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３）ブロック後の領域ｗ２に書き込み、ディレイ・グループｄｅｌ３（３−０）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３＋４）ブロック後の領域、すなわち、先頭へと巡回した領域ｗ１に書き込むように、書き込みアドレスを生成する。
また、バイト・デインターリーバ２５は、このようなＤＰＲＡＭに対する書き込み動作とともに、読み出し動作も行う。すなわち、バイト・デインターリーバ２５は、ＤＰＲＡＭに書き込まれている４つのディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３のうち、ディレイ・グループｄｅｌ０に属する各バイトについては、ＤＰＲＡＭに書き込まれないのでそのまま用いる。また、ディレイ・グループｄｅｌ１に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの１ブロック後の領域ｒ３から読み出し、ディレイ・グループｄｅｌ２に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２）ブロック後の領域ｒ２から読み出し、ディレイ・グループｄｅｌ３に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２＋３）ブロック後の領域ｒ１から読み出すように、読み出しアドレスを生成する。ただし、バイト・デインターリーバ２５は、ここでは、領域ｒ１，ｒ２，ｒ３のいずれにもデータが書き込まれていない状態であることから、実際には、読み出すべきデータがないことになる。
これにより、バイト・デインターリーバ２５は、図１７Ｄの左から１番目に示すように、ディレイ・グループｄｅｌ０（０−３）として分類された各バイトからなるデータを出力することになる。
続いて、バイト・デインターリーバ２５は、次のバイト・インターリーブパケットＢＩＰ’を入力する準備として、図１７Ｂの左から２番目における太横線で示すように、基準アドレスａｄｄｒ＿ｂａｓｅを１ブロック分だけ進めた上で、図１７Ａの左から２番目に示すように、パケット番号が″１″とされる次のバイト・インターリーブパケットＢＩＰ’を入力すると、図１７Ｂの左から２番目に示すように、このバイト・インターリーブパケットＢＩＰ’を構成する各バイトを、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、３バイトからなる４つのディレイ・グループｄｅｌ０（１−３），ｄｅｌ１（２−２），ｄｅｌ２（３−１），ｄｅｌ３（０−０）に分類する。
そして、バイト・デインターリーバ２５は、図１７Ｃの左から２番目に示すように、これらの４つのディレイ・グループｄｅｌ０（１−３），ｄｅｌ１（２−２），ｄｅｌ２（３−１），ｄｅｌ３（０−０）のうち、ディレイ・グループｄｅｌ０（１−３）に属する各バイトについては、ＤＰＲＡＭに書き込まず、ｄｅｌ１（２−２），ｄｅｌ２（３−１），ｄｅｌ３（０−０）に属する各バイトは、符号化パケットＥＰが入力される前に読み出しが行われた領域に書き込む。すなわち、ディレイ・グループｄｅｌ１（２−２）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの２ブロック後の領域ｗ３（＝１つ前のパケットの番号における領域ｒ２）に書き込み、ディレイ・グループｄｅｌ２（３−１）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３）ブロック後の領域ｗ２（＝１つ前のパケットの番号における領域ｒ１）に書き込み、ディレイ・グループｄｅｌ３（０−０）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３＋４）ブロック後の領域、すなわち、先頭へと巡回した領域ｗ１（＝１つ前のパケットの番号における領域ｒ３）に書き込むように、書き込みアドレスを生成する。
また、バイト・デインターリーバ２５は、ＤＰＲＡＭに書き込まれている４つのディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３のうち、ディレイ・グループｄｅｌ０に属する各バイトについては、ＤＰＲＡＭに書き込まれないのでそのまま用いる。また、ディレイ・グループｄｅｌ１に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの１ブロック後の領域ｒ３から読み出し、ディレイ・グループｄｅｌ２に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２）ブロック後の領域ｒ２から読み出し、ディレイ・グループｄｅｌ３に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２＋３）ブロック後の領域ｒ１から読み出すように、読み出しアドレスを生成する。ここで、バイト・デインターリーバ２５は、領域ｒ１，ｒ２にはデータが書き込まれていないが、領域ｒ３はパケット番号が″０″のバイト・インターリーブパケットＢＩＰ’を入力したときにおける領域ｗ３と同じ領域であり、ディレイ・グループｄｅｌ１（１−２）が書き込まれていることから、実際には、このディレイ・グループｄｅｌ１（１−２）のみを読み出すことになる。
これにより、バイト・デインターリーバ２５は、図１７Ｄの左から２番目に示すように、ディレイ・グループｄｅｌ０（１−３），ｄｅｌ１（１−２）として分類された各バイトからなるデータを出力することになる。
続いて、バイト・デインターリーバ２５は、次のバイト・インターリーブパケットＢＩＰ’を入力する準備として、図１７Ｂの左から３番目における太横線で示すように、基準アドレスａｄｄｒ＿ｂａｓｅをさらに１ブロック分だけ進めた上で、図１７Ａの左から３番目に示すように、パケット番号が″２″とされる次のバイト・インターリーブパケットＢＩＰ’を入力すると、図１７Ｂの左から３番目に示すように、このバイト・インターリーブパケットＢＩＰ’を構成する各バイトを、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、３バイトからなる４つのディレイ・グループｄｅｌ０（２−３），ｄｅｌ１（３−２），ｄｅｌ２（０−１），ｄｅｌ３（１−０）に分類する。
そして、バイト・デインターリーバ２５は、図１７Ｃの左から３番目に示すように、これらの４つのディレイ・グループｄｅｌ０（２−３），ｄｅｌ１（３−２），ｄｅｌ２（０−１），ｄｅｌ３（１−０）のうち、ディレイ・グループｄｅｌ０（２−３）に属する各バイトについては、ＤＰＲＡＭに書き込まず、ディレイ・グループｄｅｌ１（３−２）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの２ブロック後の領域ｗ３に書き込み、ディレイ・グループｄｅｌ２（０−１）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３）ブロック後の領域ｗ２に書き込み、ディレイ・グループｄｅｌ３（１−０）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３＋４）ブロック後の領域、すなわち、先頭へと巡回した領域ｗ１に書き込むように、書き込みアドレスを生成する。
また、バイト・デインターリーバ２５は、ＤＰＲＡＭに書き込まれている４つのディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３のうち、ディレイ・グループｄｅｌ０に属する各バイトについては、ＤＰＲＡＭに書き込まれないのでそのまま用いる。また、ディレイ・グループｄｅｌ１に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの１ブロック後の領域ｒ３から読み出し、ディレイ・グループｄｅｌ２に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２）ブロック後の領域ｒ２から読み出し、ディレイ・グループｄｅｌ３に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２＋３）ブロック後の領域ｒ１から読み出すように、読み出しアドレスを生成する。ここで、バイト・デインターリーバ２５は、領域ｒ１にはデータが書き込まれていないが、領域ｒ２はパケット番号が″０″のバイト・インターリーブパケットＢＩＰ’を入力したときにおける領域ｗ２と同じ領域であり、さらに、領域ｒ３はパケット番号が″１″のバイト・インターリーブパケットＢＩＰ’を入力したときにおける領域ｗ３と同じ領域であり、ディレイ・グループｄｅｌ２（２−１），ｄｅｌ１（２−２）が書き込まれていることから、実際には、これらのディレイ・グループｄｅｌ２（２−１），ｄｅｌ１（２−２）のみを読み出すことになる。
これにより、バイト・デインターリーバ２５は、図１７Ｄの左から３番目に示すように、ディレイ・グループｄｅｌ０（２−３），ｄｅｌ１（２−２），ｄｅｌ２（２−１）として分類された各バイトからなるデータを出力することになる。
同様に、バイト・デインターリーバ２５は、次のバイト・インターリーブパケットＢＩＰ’を入力する準備として、図１７Ｂの左から４番目における太横線で示すように、基準アドレスａｄｄｒ＿ｂａｓｅをさらに１ブロック分だけ進めた上で、図１７Ａの左から４番目に示すように、パケット番号が″３″とされる次のバイト・インターリーブパケットＢＩＰ’を入力すると、図１７Ｂの左から４番目に示すように、このバイト・インターリーブパケットＢＩＰ’を構成する各バイトを、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、３バイトからなる４つのディレイ・グループｄｅｌ０（３−３），ｄｅｌ１（０−２），ｄｅｌ２（１−１），ｄｅｌ３（２−０）に分類する。
そして、バイト・デインターリーバ２５は、図１７Ｃの左から４番目に示すように、これらの４つのディレイ・グループｄｅｌ０（３−３），ｄｅｌ１（０−２），ｄｅｌ２（１−１），ｄｅｌ３（２−０）のうち、ディレイ・グループｄｅｌ０（３−３）に属する各バイトについては、ＤＰＲＡＭに書き込まず、ディレイ・グループｄｅｌ１（０−２）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの２ブロック後の領域ｗ３に書き込み、ディレイ・グループｄｅｌ２（１−１）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３）ブロック後の領域ｗ２に書き込み、ディレイ・グループｄｅｌ３（２−０）に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（２＋３＋４）ブロック後の領域、すなわち、先頭へと巡回した領域ｗ１に書き込むように、書き込みアドレスを生成する。
なお、この段階でのＤＰＲＡＭにおける各アドレスにマッピングされたデータを詳細に示すと、図１８に示すようになる。すなわち、バイト・デインターリーバ２５においては、アドレス０からアドレス２までの３バイト分のブロックを記憶可能な領域については、パケット番号が″３″であり且つ遅延パケット数が″３″であるディレイ・グループｄｅｌ３（３−０）が記憶され、このうち、アドレス０の領域にはバイト番号が″０″のデータが記憶され、アドレス１の領域にはバイト番号が″４″のデータが記憶され、アドレス２の領域にはバイト番号が″８″のデータが記憶されるといったように、各ディレイ・グループに属する各バイトが、連続するアドレスに対してバイト番号が小さいものから書き込まれる。
また、バイト・デインターリーバ２５は、図１７Ｃの左から４番目に示すように、ＤＰＲＡＭに書き込まれている４つのディレイ・グループｄｅｌ０，ｄｅｌ１，ｄｅｌ２，ｄｅｌ３のうち、ディレイ・グループｄｅｌ０に属する各バイトについては、ＤＰＲＡＭに書き込まれないのでそのまま読み出し、ディレイ・グループｄｅｌ１に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの１ブロック後の領域ｒ３から読み出し、ディレイ・グループｄｅｌ２に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２）ブロック後の領域ｒ２から読み出し、ディレイ・グループｄｅｌ３に属する各バイトについては、ＤＰＲＡＭにおける基準アドレスａｄｄｒ＿ｂａｓｅの（１＋２＋３）ブロック後の領域ｒ１から読み出すように、読み出しアドレスを生成する。ここで、バイト・デインターリーバ２５は、領域ｒ１はパケット番号が″０″のバイト・インターリーブパケットＢＩＰ’を入力したときにおける領域ｗ１と同じ領域であり、また、領域ｒ２はパケット番号が″１″のバイト・インターリーブパケットＢＩＰ’を入力したときにおける領域ｗ２と同じ領域であり、さらに、領域ｒ３はパケット番号が″２″のバイト・インターリーブパケットＢＩＰ’を入力したときにおける領域ｗ３と同じ領域であり、ディレイ・グループｄｅｌ３（３−０），ｄｅｌ２（３−１），ｄｅｌ１（３−２）が書き込まれていることから、実際には、これらのディレイ・グループｄｅｌ３（３−０），ｄｅｌ２（３−１），ｄｅｌ１（３−２）を読み出すことになる。
これにより、バイト・デインターリーバ２５は、図１７Ｄの左から４番目に示すように、ディレイ・グループｄｅｌ０（３−３），ｄｅｌ１（３−２），ｄｅｌ２（３−１），ｄｅｌ３（３−０）として分類された各バイトからなるデータを出力することになる。
このように、バイト・デインターリーバ２５は、バイト・インターリーブパケットＢＩＰ’が入力される毎に各バイトを、図１４Ｄに示すインターリーブ後の出力に対応させてディレイ・グループに分類し、上述したアドレス生成方式にしたがった書き込みアドレス及び読み出しアドレスに基づいて、ディレイ・グループ毎にＤＰＲＡＭにおけるメモリマップ上で連続したアドレスに管理された書き込み及び読み出しを行う。これにより、バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、読み出しが行われてデインターリーブが完了したデータの記憶領域を次のデータの書き込み領域として、即座に次のデータを書き込むことができる。すなわち、ＤＰＲＡＭの領域のうち使用済みとされる無駄な領域（インターリーブが完了したデータが書き込まれたままとなっている領域）をなくすことができ、必要とするＤＰＲＡＭの容量を最小限に抑制することができる。この場合、バイト・デインターリーバ２５は、通常であれば、畳み込みデインターリーブの深さＤ＝４と入力した１パケットあたりのバイト数Ｎ＝１２との積、すなわち、Ｄ×Ｎ＝４×１２＝４８バイトの容量を有するＤＰＲＡＭを必要とするところ、上述したアドレス制御を行うことにより、図１７Ｃに示すように、９個の３バイトからなる領域、すなわち、２７バイトの容量を有するＤＰＲＡＭを用いるのみで、同様の畳み込みデインターリーブを行うことができる。また、バイト・デインターリーバ２５は、分類したディレイ・グループ毎に連続するアドレスに対して書き込み、また、この連続するアドレスに対して書き込まれたディレイ・グループ毎に読み出しを行うことにより、書き込みアドレス及び読み出しアドレスの算出を容易に行うことができる。
以上のように、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれバイト単位で、１２バイトからなるパケットを入力して深さ４及び周期３の畳み込みインターリーブ又は畳み込みデインターリーブを行う場合には、入力するパケットを構成する各バイトのバイト番号に対応して畳み込みインターリーブ又は畳み込みデインターリーブの深さ４に対応したカウント値ｃｎｔ＿ｄｅｌ（０〜３）をパケット毎に計数する第１のカウンタと、この第１のカウンタの周期に対応したカウント値ｃｎｔ＿ｂｌｏｃｋ（０〜２）をパケット毎に計数する第２のカウンタとを設け、ディレイ・グループ毎にデータを扱えばよい。
次に、ユニット単位で処理を行う場合の動作を説明する。バイト・インターリーバ１２は、バイト単位の場合と同様に、任意の符号化パケットＥＰを構成する各バイトについて、当該符号化パケットＥＰに対する、畳み込みインターリーブが施されることによって当該バイトがユニット単位で格納されるバイト・インターリーブパケットＢＩＰの遅延数である遅延パケット数が等しいバイト群をディレイ・グループとしてまとめて分類する。さらに、このディレイ・グループ毎にＤＰＲＡＭにおける連続するアドレスに対して書き込み及び読み出しを行うように書き込みアドレス及び読み出しアドレスを生成して、ディレイ・グループ毎にデータを扱う。
ある符号化パケットＥＰを構成する各バイトをこのようなディレイ・グループに分類するために、バイト・インターリーバ１２は、バイト単位で処理する場合と同様に、ＤＰＲＡＭに対するデータの書き込み及び読み出しを行うのに用いる書き込みアドレス及び読み出しアドレスの算出を補助するための２つの補助カウンタを設ける。さらに、１ユニットが複数の連続するバイト単位であることから、１ユニット内のバイトをカウントするための補助カウンタを設ける。
具体的には、図１９Ａに示すように、入力される２４バイトからなる符号化パケットＥＰのそれぞれに対して０，１，２，３，・・・といったパケット番号を付すとともに、図１９Ｂに示すように、各符号化パケットＥＰを構成する各バイトに対して０〜２３のバイト番号を付すものとすると、バイト・インターリーバ１２は、図１９Ｃに示すように、１ユニット内のバイト数に対応したカウント値ｃｎｔ＿ｂｙｔｅ（０〜１）をインクリメントしてパケット毎に計数する第３のカウンタと、図１９Ｄに示すように、畳み込みインターリーブの深さ４に対応したカウント値ｃｎｔ＿ｄｅｌ（０〜３）をインクリメントしてパケット毎に計数する第１のカウンタと、図１９Ｅに示すように、第１のカウンタの周期に対応したカウント値ｃｎｔ＿ｂｌｏｃｋ（０〜２）をインクリメントしてパケット毎に計数する第２のカウンタとを、補助カウンタとして設ける。
バイト・インターリーバ１２は、このような第１のカウンタによって計数されるカウント値ｃｎｔ＿ｄｅｌと、第２のカウンタによって計数されるカウント値ｃｎｔ＿ｂｌｏｃｋ、さらに第３のカウンタによって計数されるカウント値ｃｎｔ＿ｂｙｔｅとを用いて、ＤＰＲＡＭに対するデータの書き込み及び読み出しを制御し、符号化パケットＥＰに対して畳み込みインターリーブを施す。このとき、バイト・インターリーバ１２は、畳み込みインターリーブを施す符号化パケットＥＰを入力すると、即座にＤＰＲＡＭに対するデータの書き込みを開始する一方、ＤＰＲＡＭからのデータの読み出しについては、データの書き込みと同時に開始するか、又は所定の固定クロック数だけ遅延して開始する。バイト・インターリーバ１２は、ある符号化パケットＥＰを入力した場合には、ＤＰＲＡＭに書き込まれた有意なデータを読み出す前に、他のデータによって当該有意なデータが上書きされるのを回避するために、ＤＰＲＡＭに対するデータの書き込み後、次の符号化パケットＥＰが入力される前に、全てのデータの読み出しを完了する必要がある。
ここで、バイト・インターリーバ１２は、ディレイ・グループ毎に分類されたバイト群の書き込み及び読み出しを、ユニット単位で行うものとすれば、上述の図１４Ａ〜図１４Ｄに示す場合と同様にして、ＤＰＲＡＭに対するディレイ・グループ毎に分類されたバイト群の書き込み及び読み出しを行うことができる。なお、パケットの番号が″３″とされる符号化パケットＥＰを入力した段階でのＤＰＲＡＭにおける各アドレスにマッピングされたデータは、バイト単位で処理したとき図１５に示すものとなるが、ユニット単位で処理が行われたときには、１つの処理単位が１バイトから１ユニット（＝２バイト）とされるため、図２０に示すものとなる。すなわち、バイト・インターリーバ１２においては、アドレス０からアドレス５までの３ユニット分を記憶可能な領域については、パケット番号が″０″であり且つ遅延パケット数が″３″であるディレイ・グループｄｅｌ３（０−３）が記憶され、このうち、アドレス０，１の領域には４番目のユニットのデータ″６，７″が連続して記憶され、アドレス２，３の領域には８番目のユニットのデータ″１４，１５″が連続して記憶され、アドレス４，５の領域には１２番目のユニットのデータ″２２，２３″が連続して記憶されるといったように、各ディレイ・グループに属する各ユニットの連続するバイトが、連続するアドレスに対してバイト番号が小さいものから書き込まれる。
このように、バイト・インターリーバ１２は、符号化パケットＥＰが入力される毎に各バイトをユニット単位でディレイ・グループに分類し、上述したアドレス生成方式にしたがった書き込みアドレス及び読み出しアドレスに基づいて、ディレイ・グループ毎にＤＰＲＡＭにおけるメモリマップ上で連続したアドレスに管理された書き込み及び読み出しを行う。これにより、バイト・インターリーバ１２は、読み出しが行われてインターリーブが完了したデータの記憶領域を次のデータの書き込み領域として、即座に次のデータを書き込むことができる。すなわち、ＤＰＲＡＭの領域のうち使用済みとされる無駄な領域をなくすことができ、必要とするＤＰＲＡＭの容量を最小限に抑制することができる。
この場合、バイト・インターリーバ１２は、通常であれば、畳み込みインターリーブの深さＤ＝４と入力した１パケットあたりのバイト数Ｎ＝２４との積、すなわち、Ｄ×Ｎ＝４×２４＝９６バイトの容量を有するＤＰＲＡＭを必要とするところ、上述したアドレス制御を行うことにより、９個の６バイトからなる領域、すなわち、５４バイトの容量を有するＤＰＲＡＭを用いるのみで、同様の畳み込みインターリーブを行うことができる。また、バイト・インターリーバ１２は、分類したディレイ・グループ毎に連続するアドレスに対して書き込み、また、この連続するアドレスに対して書き込まれたディレイ・グループ毎に読み出しを行うことにより、書き込みアドレス及び読み出しアドレスの算出を容易に行うことができる。
つぎに、バイト・デインターリーバ２５について説明する。バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、あるバイト・インターリーブパケットＢＩＰ’を構成する各バイトをディレイ・グループに分類してこのディレイ・グループ毎にデータを扱い、バイト・インターリーバ１２とは対称なアドレス制御を行うことにより、畳み込みデインターリーブを行う。
すなわち、バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、アドレス生成部として、図示しないが、ＤＰＲＡＭに対するデータの書き込み及び読み出しを行うのに用いるアドレスの算出を補助するための３つの補助カウンタを設ける。具体的には、図２１Ａに示すように、入力される２４バイトからなるバイト・インターリーブパケットＢＩＰ’のそれぞれに対して０，１，２，３，・・・といったパケット番号を付すとともに、図２１Ｂに示すように、各バイト・インターリーブパケットＢＩＰ’を構成する各バイトに対して０〜２３のバイト番号を付すものとすると、バイト・デインターリーバ２５は、図２１Ｃに示すように、１ユニット内のバイト数に対応したカウント値ｃｎｔ＿ｂｙｔｅ（０〜１）をインクリメントしてパケット毎に計数する第３のカウンタと、図２１Ｄに示すように、畳み込みインターリーブの深さ４に対応したカウント値ｃｎｔ＿ｄｅｌ（０〜３）をデクリメントしてパケット毎に計数する第１のカウンタと、図２１Ｅに示すように、第１のカウンタの周期に対応したカウント値ｃｎｔ＿ｂｌｏｃｋ（０〜２）をインクリメントしてパケット毎に計数する第２のカウンタとを、補助カウンタとして設ける。
なお、バイト・インターリーバ１２と異なる点は、第１のカウンタによって計数されるカウント値ｃｎｔ＿ｄｅｌが、インクリメントされるのではなく、デクリメントされることである。
バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、このような第１のカウンタによって計数されるカウント値ｃｎｔ＿ｄｅｌと、第２のカウンタによって計数されるカウント値ｃｎｔ＿ｂｌｏｃｋと、第３のカウンタによって計数されるカウント値ｃｎｔ＿ｂｙｔｅを用いて、ＤＰＲＡＭに対するデータの書き込み及び読み出しを制御し、バイト・インターリーブパケットＢＩＰ’に対して畳み込みデインターリーブを施す。バイト・デインターリーバ２５は、畳み込みデインターリーブを施すバイト・インターリーブパケットＢＩＰ’を入力すると、即座にＤＰＲＡＭに対するデータの書き込みを開始する一方、ＤＰＲＡＭからのデータの読み出しについては、データの書き込みと同時に開始するか、又は所定の固定クロック数だけ遅延して開始する。バイト・デインターリーバ２５は、あるバイト・インターリーブパケットＢＩＰ’を入力した場合には、ＤＰＲＡＭに書き込まれた有意なデータを読み出す前に、他のデータによって当該有意なデータが上書きされるのを回避するために、ＤＰＲＡＭに対するデータの書き込み後、次のバイト・インターリーブパケットＢＩＰ’が入力される前に、全てのデータの読み出しを完了する必要がある。
ここで、バイト・デインターリーバ２５は、バイト・インターリーバ１２から出力されるデータ配列からなるバイト・インターリーブパケットＢＩＰ’を入力するものとすると、ＤＰＲＡＭに対するディレイ・グループ毎に分類されたバイト群の書き込み及び読み出しをユニット単位で行うものとすれば、上述の図１７Ａ〜図１７Ｄに示す場合と同様にして、ＤＰＲＡＭに対するディレイ・グループ毎に分類されたバイト群の書き込み及び読み出しを行うことができる。なお、パケット番号が″３″とされる符号化パケットＥＰを入力した段階でのＤＰＲＡＭにおける各アドレスにマッピングされたデータは、バイト単位で処理したとき図１８に示すものとなるが、ユニット単位で処理が行われたときには１つの処理単位が１バイトから１ユニット（＝２バイト）とされるため、図２２に示すものとなる。
すなわち、バイト・インターリーバ１２においては、アドレス０からアドレス５までの３ユニット分を記憶可能な領域については、パケット番号が″０″であり且つ遅延パケット数が″３″であるディレイ・グループｄｅｌ３（０−３）が記憶され、このうち、アドレス０，１の領域には４番目のユニットのデータ″６，７″が連続して記憶され、アドレス２，３の領域には８番目のユニットのデータ″１４，１５″が連続して記憶され、アドレス４，５の領域には１２番目のユニットのデータ″２２，２３″が連続して記憶されるといったように、各ディレイ・グループに属する各ユニットの連続するバイトが、連続するアドレスに対してバイト番号が小さいものから書き込まれる。
すなわち、バイト・デインターリーバ２５においては、アドレス０からアドレス５までの６バイト分が記憶可能な領域については、パケット番号が″３″であり且つ遅延パケット数が″３″であるディレイ・グループｄｅｌ３（３−０）が記憶され、このうち、アドレス０，１の領域には最初のユニットのデータ″０，１″が連続して記憶され、アドレス２，３の領域には５番目のユニットのデータ″８，９″が連続して記憶され、アドレス４，５の領域には９番目のユニットのデータ″１６，１７″が連続して記憶されるといったように、各ディレイ・グループに属する各ユニットの連続するバイトが、連続するアドレスに対してバイト番号が小さいものから書き込まれる。
このように、バイト・デインターリーバ２５は、バイト・インターリーブパケットＢＩＰ’が入力される毎に各バイトをディレイ・グループに分類し、上述したアドレス生成方式にしたがった書き込みアドレス及び読み出しアドレスに基づいて、ディレイ・グループ毎にＤＰＲＡＭにおけるメモリマップ上で連続したアドレスに管理された書き込み及び読み出しを行う。これにより、バイト・デインターリーバ２５は、バイト・インターリーバ１２と同様に、読み出しが行われてデインターリーブが完了したデータの記憶領域を次のデータの書き込み領域として、即座に次のデータを書き込むことができる。すなわち、ＤＰＲＡＭの領域のうち使用済みとされる無駄な領域をなくすことができ、必要とするＤＰＲＡＭの容量を最小限に抑制することができる。
この場合、バイト・デインターリーバ２５は、通常であれば、畳み込みデインターリーブの深さＤ＝４と入力した１パケットあたりのバイト数Ｎ＝２４との積、すなわち、Ｄ×Ｎ＝４×２４＝９６バイトの容量を有するＤＰＲＡＭを必要とするところ、上述したアドレス制御を行うことにより、図１７Ｃに示すように、９個の６バイトからなる領域、すなわち、５４バイトの容量を有するＤＰＲＡＭを用いるのみで、同様の畳み込みデインターリーブを行うことができる。また、バイト・デインターリーバ２５は、分類したディレイ・グループ毎に連続するアドレスに対して書き込み、また、この連続するアドレスに対して書き込まれたディレイ・グループ毎に読み出しを行うことにより、書き込みアドレス及び読み出しアドレスの算出を容易に行うことができる。
以上のように、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、２４バイトからなる符号化パケットＥＰに対して２バイトを１ユニットとして、ユニット単位で深さ４及び周期３の畳み込みインターリーブ又は畳み込みデインターリーブを行う場合には、入力するパケットを構成する各バイトのバイト番号に対応して畳み込みインターリーブ又は畳み込みデインターリーブの深さ４に対応したカウント値ｃｎｔ＿ｄｅｌ（０〜３）をパケット毎に計数する第１のカウンタと、この第１のカウンタの周期に対応したカウント値ｃｎｔ＿ｂｌｏｃｋ（０〜２）をパケット毎に計数する第２のカウンタ、および１ユニット内のバイト数に対応したカウント値ｃｎｔ＿ｂｙｔｅ（０〜１）をパケット毎に計数する第３のカウンタとを設け、ディレイ・グループ毎にデータを扱えばよい。
したがって、このようなバイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、入力する１パケットあたりのバイト数をＮ、畳み込みインターリーブ又は畳み込みデインターリーブの深さをＤ、畳み込みインターリーブ又は畳み込みデインターリーブの周期をＣ、畳み込みインターリーブを施す際のユニット内のバイト数をＵとすると、入力するパケットを構成する各バイトのバイト番号に対応して畳み込みインターリーブ又は畳み込みデインターリーブの深さＤに対応したカウント値ｃｎｔ＿ｄｅｌ（０〜Ｄ−１）をパケット毎に計数する第１のカウンタと、この第１のカウンタの周期に対応したカウント値ｃｎｔ＿ｂｌｏｃｋ（０〜Ｃ−１）をパケット毎に計数する第２のカウンタと、１ユニット内のバイト数に対応したカウント値ｃｎｔ＿ｂｙｔｅ（０〜１）をパケット毎に計数する第３のカウンタとを設け、ＤＰＲＡＭに対するデータの書き込み及び読み出しを、ディレイ・グループ毎に行えばよい。すなわち、バイト・インターリーバ１２及びバイト・デインターリーバ２５によるアドレス生成方式は、以下のように一般化して表すことができる。
まず、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ＤＰＲＡＭに対してデータを書き込む際には、図２３に示す一連の処理で示す規則にしたがってディレイ・グループ毎に応じた書き込みアドレスを生成し、ＤＰＲＡＭに対するデータの書き込みを制御する。
すなわち、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、図２３に示すように、ステップＳ１において、上述した基準アドレスａｄｄｒ＿ｂａｓｅを″０″に設定した上で、ステップＳ２において、畳み込みインターリーブ又は畳み込みデインターリーブを施すパケットの区切りであるか否かを判定する。
ここで、パケットの区切りでないと判定した場合には、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、第１のカウンタ及び第２のカウンタと第３のカウンタを動作させ、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、ＤＰＲＡＭに対してディレイ・グループ毎に各バイトを書き込む。
すなわち、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″０″とした場合には、このときのバイトをディレイ・グループｄｅｌ０に分類し、ステップＳ４において、書き込みアドレスを生成せずに、これらのディレイ・グループｄｅｌ０に属する各バイトをＤＰＲＡＭに書き込むことなくステップＳ２へと処理を移行する。
また、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″１″とした場合には、このときのバイトをディレイ・グループｄｅｌ１に分類し、ステップＳ５において、書き込みアドレスとして、
2003085838.tif 000003
を生成し、これらのディレイ・グループｄｅｌ１に属する各バイトをこの書き込みアドレスが示す領域に書き込み、ステップＳ２へと処理を移行する。
さらに、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″２″とした場合には、このときのバイトをディレイ・グループｄｅｌ２に分類し、ステップＳ６において、書き込みアドレスとして、
2003085838.tif 000004
を生成し、これらのディレイ・グループｄｅｌ２に属する各バイトをこの書き込みアドレスが示す領域に書き込み、ステップＳ２へと処理を移行する。
さらにまた、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″３″とした場合には、このときのバイトをディレイ・グループｄｅｌ３に分類し、ステップＳ７において、書き込みアドレスとして、
2003085838.tif 000005
を生成し、これらのディレイ・グループｄｅｌ３に属する各バイトをこの書き込みアドレスが示す領域に書き込み、ステップＳ２へと処理を移行する。
そして、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″Ｄ−１″とした場合には、このときのバイトをディレイ・グループｄｅｌ（Ｄ−１）に分類し、ステップＳ８において、書き込みアドレスとして、
2003085838.tif 000006
を生成し、これらのディレイ・グループｄｅｌ（Ｄ−１）に属する各バイトをこの書き込みアドレスが示す領域に書き込み、ステップＳ２へと処理を移行する。
バイト・インターリーバ１２は、カウント値ｃｎｔ＿ｄｅｌを″０″から″Ｄ−１″までインクリメントすることによってカウント値ｃｎｔ＿ｄｅｌが″Ｄ−１″となるまでこのような動作を行い、さらにこの動作を畳み込みインターリーブの周期Ｃの値だけ繰り返し行い、１パケットに含まれる全てのバイトについての処理を終了する。一方、バイト・デインターリーバ２５は、カウント値ｃｎｔ＿ｄｅｌを″Ｄ−１″から″０″までデクリメントすることによってカウント値ｃｎｔ＿ｄｅｌが″０″となるまでこのような動作を行い、さらにこの動作を畳み込みデインターリーブの周期Ｃの値だけ繰り返し行い、１パケットに含まれる全てのバイトについての処理を終了する。
このようにして、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、入力したパケットについての処理を終了し、ステップＳ２において、パケットの区切りであると判定した場合には、ステップＳ９へと処理を移行する。そして、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ９において、パケットの区切りで基準アドレスａｄｄｒ＿ｂａｓｅを「畳み込みインターリーブ又は畳み込みデインターリーブの周期Ｃ×ユニット内のバイト数Ｕ」の値だけ、すなわち、１ブロック領域分だけ増加させ、次のパケットの入力があるまで待機すべく、ステップＳ２へと再度処理を移行する。
バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、このような規則にしたがってディレイ・グループ毎に応じた書き込みアドレスを生成することにより、ＤＰＲＡＭに対するデータの書き込みを制御することができる。なお、バイト単位で畳み込みインターリーブを行う際には、１ユニット内のバイト数は「１」であることから、上述の読み出しアドレスの一般式において、Ｕ＝１，ｃｎｔ＿ｂｙｔｅ＝０とすれば、バイト単位で畳み込みインターリーブや畳み込みデインターリーブを施す際の式となる。また、このとき第３のカウンタは不要となる。
一方、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ＤＰＲＡＭからデータを読み出す際には、図２４に示す一連の処理で示す規則にしたがってディレイ・グループ毎に応じた読み出しアドレスを生成し、ＤＰＲＡＭからのデータの読み出しを制御する。
すなわち、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、図２４に示すように、ステップＳ１１において、上述した基準アドレスａｄｄｒ＿ｂａｓｅを″０″に設定した上で、ステップＳ１２において、畳み込みインターリーブ又は畳み込みデインターリーブを施すパケットの区切りであるか否かを判定する。
ここで、パケットの区切りでないと判定した場合には、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、第１のカウンタ及び第２のカウンタを動作させ、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌに基づいて、ＤＰＲＡＭからディレイ・グループ毎に各バイトを読み出す。
すなわち、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ１３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″０″とした場合には、このときのバイトをディレイ・グループｄｅｌ０に分類し、ステップＳ１４において、読み出しアドレスを生成せずに、これらのディレイ・グループｄｅｌ０に属する各バイトをＤＰＲＡＭに書き込むことなくそのまま出力し、ステップＳ１２へと処理を移行する。
また、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ１３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″１″とした場合には、ステップＳ１５において、読み出しアドレスとして、
2003085838.tif 000007
を生成し、この読み出しアドレスが示す領域に記憶されている各バイトをディレイ・グループｄｅｌ１として読み出し、ステップＳ１２へと処理を移行する。
さらに、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ１３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″２″とした場合には、ステップＳ１６において、読み出しアドレスとして、
2003085838.tif 000008
を生成し、この読み出しアドレスが示す領域に記憶されている各バイトをディレイ・グループｄｅｌ２として読み出し、ステップＳ１２へと処理を移行する。
さらにまた、バイト・インターリーバ１２及びバイト・デインターリーバ２５、それぞれ、ステップＳ１３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″３″とした場合には、ステップＳ１７において、読み出しアドレスとして、
2003085838.tif 000009
を生成し、この読み出しアドレスが示す領域に記憶されている各バイトをディレイ・グループｄｅｌ３として読み出し、ステップＳ１２へと処理を移行する。
そして、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ１３において、第１のカウンタによるカウント値ｃｎｔ＿ｄｅｌを″Ｄ−１″とした場合には、ステップＳ１８において、読み出しアドレスとして、
2003085838.tif 000010
を生成し、この読み出しアドレスが示す領域に記憶されている各バイトをディレイ・グループｄｅｌ（Ｄ−１）として読み出し、ステップＳ１２へと処理を移行する。
バイト・インターリーバ１２は、カウント値ｃｎｔ＿ｄｅｌを″０″から″Ｄ−１″までインクリメントすることによってカウント値ｃｎｔ＿ｄｅｌが″Ｄ−１″となるまでこのような動作を行い、さらにこの動作を畳み込みインターリーブの周期Ｃの値だけ繰り返し行い、１パケットに含まれる全てのバイトについての処理を終了する。一方、バイト・デインターリーバ２５は、カウント値ｃｎｔ＿ｄｅｌを″Ｄ−１″から″０″までデクリメントすることによってカウント値ｃｎｔ＿ｄｅｌが″０″となるまでこのような動作を行い、さらにこの動作を畳み込みデインターリーブの周期Ｃの値だけ繰り返し行い、１パケットに含まれる全てのバイトについての処理を終了する。
このようにして、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、入力したパケットについての処理を終了し、ステップＳ１２において、パケットの区切りであると判定した場合には、ステップＳ１９へと処理を移行する。そして、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、ステップＳ１９において、パケットの区切りに基準アドレスａｄｄｒ＿ｂａｓｅを「畳み込みインターリーブ又は畳み込みデインターリーブの周期Ｃ×ユニット内のバイト数Ｕ」の値だけ、すなわち、１ブロック領域分だけ増加させ、次のパケットの入力があるまで待機すべく、ステップＳ１２へと再度処理を移行する。
バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、このような規則にしたがってディレイ・グループ毎に応じた読み出しアドレスを生成することにより、ＤＰＲＡＭからのデータの読み出しを制御することができる。なお、バイト単位で畳み込みインターリーブを行う際には、１ユニット内のバイト数は「１」であることから、上述の読み出しアドレスの一般式において、Ｕ＝１，ｃｎｔ＿ｂｙｔｅ＝０とすれば、バイト単位で畳み込みインターリーブや畳み込みデインターリーブを施す際の式となる。また、このとき第３のカウンタは不要となる。
バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、図２３及び図２４に示した規則にしたがって、ＤＰＲＡＭに対するデータの書き込み及び読み出しを行うことにより、Ｎバイトからなるパケットに対して、深さＤ及び周期Ｃの畳み込みインターリーブ又は畳み込みデインターリーブを施すことができる。このとき、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、通常であれば、Ｄ×Ｎバイトの容量を有するＤＰＲＡＭを必要とするところ、Ｃ×（２＋３＋・・・＋Ｄ）＝Ｃ×（（１＋Ｄ）×Ｄ／２−１）の容量を有するＤＰＲＡＭを用いるのみでよい。具体的には、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、図１３Ａ乃至図２４に示した例のように、１２バイトからなるパケットに対して、バイト単位で深さ４及び周期３の畳み込みインターリーブ又は畳み込みデインターリーブを施す場合には、上述したように、通常であれば、Ｄ×Ｎ＝４×１２＝４８バイトの容量を有するＤＰＲＡＭを必要とするところ、Ｃ×（２＋３＋・・・＋Ｄ）＝Ｃ×（（１＋Ｄ）×Ｄ／２−１）＝３×（（１＋４）×４／２−１）＝２７バイトの容量を有するＤＰＲＡＭを用いるのみでよく、また、図２Ａ乃至図１２Ｆに示した例のように、２１６バイトからなるパケットに対して、深さ１８及び周期１２の畳み込みインターリーブ又は畳み込みデインターリーブを施す場合には、通常であれば、Ｄ×Ｎ＝１８×２１６＝３８８８バイトの容量を有するＤＰＲＡＭを必要とするところ、Ｃ×（２＋３＋・・・＋Ｄ）＝Ｃ×（（１＋Ｄ）×Ｄ／２−１）＝１２×（（１＋１８）×１８／２−１）＝２０４０バイトの容量を有するＤＰＲＡＭを用いるのみでよい。
また、２４バイトからなるパケットに対して、２バイトを１ユニットとしてユニット単位で深さ４及び周期３の畳み込みインターリーブ又は畳み込みデインターリーブを施す場合には、上述したように、通常であれば、Ｄ×Ｎ＝４×２４＝９６バイトの容量を有するＤＰＲＡＭを必要とするところ、Ｃ×Ｕ×（２＋３＋・・・＋Ｄ）＝Ｃ×Ｕ×（（１＋Ｄ）×Ｄ／２−１）＝３×２×（（１＋４）×４／２−１）＝５４バイトの容量を有するＤＰＲＡＭを用いるのみでよく、また、図２Ａ乃至図１２Ｆに示した例のように、２１６バイトからなるパケットに対して、４バイトを１ユニットとしてユニット単位で深さ１８及び周期３の畳み込みインターリーブ又は畳み込みデインターリーブを施す場合には、通常であれば、Ｄ×Ｎ＝１８×２１６＝３８８８バイトの容量を有するＤＰＲＡＭを必要とするところ、Ｃ×Ｕ×（２＋３＋・・・＋Ｄ）＝Ｃ×Ｕ×（（１＋Ｄ）×Ｄ／２−１）＝３×４×（（１＋１８）×１８／２−１）＝２０４０バイトの容量を有するＤＰＲＡＭを用いるのみでよい。
このように、バイト・インターリーバ１２及びバイト・デインターリーバ２５は、それぞれ、通常必要とされるメモリ容量の約半分の容量を有するメモリを用いればよく、必要なメモリ容量を大幅に削減することができる。
以上説明したように、最良の形態として示すデータ送受信システムにおいて、符号化器１０は、バイト単位あるいはユニット単位の畳み込みインターリーブとパケット単位のインターリーブとを行うことにより、容量の小さなメモリを用いてインターリーブの深さをかせぐことができ、小さい符号長からなる誤り訂正符号であってもパケットロスを含む大きなバーストエラーを訂正することを可能とする送信データＴＤを送信することができる。一方、データ送受信システムにおいて、復号器２０は、このような符号化器１０から受信した受信データＲＤに対して、符号化器１０に対応するパケット単位のデインターリーブとバイト単位あるいはユニット単位の畳み込みデインターリーブとを施すことにより、パケットロスを含む大きなバーストエラーを完全に訂正することができる。
なお、本発明は、上述した形態に限定されるものではない。例えば、上述の形態では、バイト・インターリーバ１２及びパケット・インターリーバ１３を含む各部、又はパケット・デインターリーバ２４及びバイト・デインターリーバ２５を含む各部を、それぞれ、プログラマブルデバイスとして実装するものとして説明したが、本発明は、専用の集積回路として実装した場合であっても適用することができる。
さらに、上述の形態では、符号化器１０に対してＭＰＥＧ−２方式に基づく圧縮符号化を施して得られたトランスポートストリームＴＳを入力し、復号器２０によってこのトランスポートストリームＴＳを復元するものとして説明したが、本発明は、パケット単位でのインターリーブ及びデインターリーブを行う際の同期生成に用いるためにパケットの先頭データワードが固定値であり、且つ、固定長パケットであることを条件とするパケット通信であればいかなるものでも適用することができる。
さらにまた、上述の形態では、誤り訂正符号としてリード・ソロモン符号を用いて説明したが、本発明は、任意の誤り訂正符号を用いた符号化及び復号に適用することができる。
また、上述の形態では、主にパケットロスが発生する場合における誤り訂正について例を示して説明したが、本発明は、パケットロスのみならず大きなバーストエラーが発生する場合にも有効であることは勿論である。なお、本発明は、通常のバーストエラーやランダムエラーの訂正については、従来と同様の処理によって行うことができるのはいうまでもない。
さらに、上述の形態では、パケット化されたデータに対して符号化を行う符号化器１０と、この符号化器１０によって符号化がなされたデータを復号する復号器２０とを備えるデータ送受信システムについて説明したが、本発明は、インターリーブ及びデインターリーブを行うものであれば、このような符号化器及び復号器に限らず、任意の用途に適用することができる。
このように、本発明は、その趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
産業上の利用可能性
以上のように、本発明に係るインターリーブ装置及びインターリーブ方法、並びにデインターリーブ装置及びデインターリーブ方法は、パケット通信を行う際に、小さい符号長からなる誤り訂正符号を用いてパケットロスを含む大きなバーストエラーを訂正することを可能とするために有用であり、例えば映像及び／又は音声のストリーミング再生のように、パケットの再送が許されないリアルタイム通信等に好適である。
【図面の簡単な説明】
図１は、データ送受信システムの構成を説明するブロック図である。
図２Ａ，図２Ｂは、データ送受信システムにおける符号化器が有するリード・ソロモン符号化部の処理を説明するための図である。
図３Ａ，図３Ｂは、符号化器が有するバイト・インターリーバで行うバイト単位のインターリーブ処理を説明するための図である。
図４Ａ，図４Ｂは、符号化器が有するバイト・インターリーバで行う複数の連続するバイト単位のインターリーブ処理を説明するための図である。
図５Ａ，図５Ｂは、符号化器が有するパケット・インターリーバで行うパケット単位の畳み込みインターリーブ処理を説明するための図である。
図６Ａ，図６Ｂは、符号化器が有するパケット・インターリーバで行うパケット単位のブロックインターリーブ処理を説明するための図である。
図７Ａ〜図７Ｄは、パケット・インターリーバでパケット単位の畳み込みインターリーブ処理を行うものとしたときの符号器側の各部におけるデータ内容の推移を具体的に説明するための図である。
図８Ａ〜図８Ｅは、パケット・インターリーバでパケット単位のブロックインターリーブ処理を行うものとしたときの符号器側の各部におけるデータ内容の推移を具体的に説明するための図である。
図９Ａ〜図９Ｆは、パケット・インターリーバでパケット単位の畳み込みインターリーブ処理を行うものとしたときの符号器側の各部におけるパケットフォーマットの推移を説明するための図である。
図１０Ａ〜図１０Ｅは、パケット・インターリーバでパケット単位のブロックインータリーブ処理を行うものとしたときの符号器側の各部におけるパケットフォーマットの推移を説明するための図である。
図１１Ａ〜図１１Ｅは、パケット・インターリーバでパケット単位の畳み込みインターリーブ処理が行われたときの復号器側の各部におけるパケットフォーマットの推移を説明するための図である。
図１２Ａ〜図１２Ｆは、パケット・インターリーバでパケット単位のブロックインターリーブ処理が行われたときの復号器側の各部におけるパケットフォーマットの推移を説明するための図である。
図１３Ａ〜図１３Ｄは、バイト・インターリーバでバイト単位の処理を行ったときのカウント値を説明するための図である。
図１４Ａ〜図１４Ｄは、バイト・インターリーバの処理におけるＤＰＲＡＭに対するデータの書き込みと読み出しを説明するための図である。
図１５は、バイト・インターリーバに設けられたＤＰＲＡＭのデータマッピング状態の一例を示す図である。
図１６Ａ〜図１６Ｄは、バイト・デインターリーバでバイト単位の処理を行ったときのカウント値を説明するための図である。
図１７Ａ〜図１７Ｄは、バイト・デインターリーバの処理において、ＤＰＲＡＭに対するデータの書き込みと読み出しを説明するための図である。
図１８は、バイト・デインターリーバに設けられたＤＰＲＡＭのデータマッピング状態の一例を示す図である。
図１９Ａ〜図１９Ｅは、バイト・インターリーバで複数の連続するバイト単位の処理を行ったときのカウント値を説明するための図である。
図２０は、バイト・インターリーバに設けられるＤＰＲＡＭにおける各アドレスにデータがマッピングされている様子を示す図である。
図２１Ａ〜図２１Ｅは、バイト・デインターリーバで複数の連続するバイト単位の処理を行ったときのカウント値を説明するための図である。
図２２は、バイト・デインターリーバに設けられるＤＰＲＡＭにおける各アドレスにデータがマッピングされている様子を示す図である。
図２３は、ＤＰＲＡＭにデータを書き込むための書き込みアドレスの生成動作を示すフローチャートである。
図２４は、ＤＰＲＡＭからデータを読み出すための読み出しアドレスの生成動作を示すフローチャートである。
【図１】
2003085838.tif 000011
【図２】
2003085838.tif 000012
【図３】
2003085838.tif 000013
【図４】
2003085838.tif 000014
【図５】
2003085838.tif 000015
【図６】
2003085838.tif 000016
【図７】
2003085838.tif 000017
【図８】
2003085838.tif 000018
【図９】
2003085838.tif 000019
【図１０】
2003085838.tif 000020
【図１１】
2003085838.tif 000021
【図１２】
2003085838.tif 000022
【図１３】
2003085838.tif 000023
【図１４】
2003085838.tif 000024
【図１５】
2003085838.tif 000025
【図１６】
2003085838.tif 000026
【図１７】
2003085838.tif 000027
【図１８】
2003085838.tif 000028
【図１９】
2003085838.tif 000029
【図２０】
2003085838.tif 000030
【図２１】
2003085838.tif 000031
【図２２】
2003085838.tif 000032
【図２３】
2003085838.tif 000033
【図２４】
2003085838.tif 000034
【国際調査報告】
2003085838.tif 000035
2003085838.tif 000036
2003085838.tif 000037
2003085838.tif 000038