(57)【特許請求の範囲】
【請求項１】
階層的な層で構成された多重化したデータストリームのための多重分離装置であって、
前記多重化したデータストリームのデータを記憶する手段（４）と、
前記多重化したデータストリームにおけるデータの前記階層的な層からの一つの層に特化した少なくとも一つの処理器（９、１０、１１、１２）と、
フィルタリングデータを記憶するプログラマブル手段であって、各処理器（９、１０、１１、１２）が該処理器が特化している層に対応する記憶されたフィルタリングデータの読み出しを制御する手段と、
多重化したデータストリームのデータと読み出されたフィルタリングデータとの間の比較手段（７）と、
多重化したデータストリームのデータを比較結果に従って記憶手段（５）に転送する転送手段（１２）とを有することを特徴とする多重分離装置
【請求項２】
前記層はＭＰＥＧ２のトランスポート層であり、前記フィルタリングデータはＰＩＤ、コンティニュイティカウンタ、同期ビットのうち少なくともいずれかのタイプを含むデータ値を有することを特徴とする請求項１記載の装置。
【請求項３】
前記フィルタリングデータが前記多重化されたデータストリーム中で予期される次の値に対応することを特徴とする請求項２記載の装置。
【請求項４】
層がＭＰＥＧ２のセクション層であり、前記フィルタリングデータはテーブル識別符号、セクションポインタの始まり、セクション長のタイプを少なくとも含むデータ値を有することを特徴とする請求項１記載の装置。
【請求項５】
層がＭＰＥＧ２のエレメンタリーストリームパケット層であり、前記フィルタリングデータはストリーム識別符号を含むデータ値を有することを特徴とする請求項１記載の装置。
【請求項６】
当該装置が、一つの入力が多重化したデータストリームのデータを記憶する前記手段の出力に接続され第２の入力がデスクランブラ（６）の出力に接続された多重化装置（１９）をさらに備え、
デスクランブラの入力も多重化したデータストリームのデータを記憶する前記手段の出力に接続されており、多重化装置は少なくとも一つの処理器（９、１０）によって制御されることを特徴とする請求項２、３または４のうちいずれか１項記載の装置。
【請求項７】
請求項１、２、３、４、５または６のうちいずれか１項記載の多重分離装置を有することを特徴とするディジタルテレビジョンデコーダ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は多重分離装置に関する。特にディジタルテレビジョンの分野において応用されるものである。
【０００１】
【従来の技術】
ディジタル信号送信手段は、送信された内容を分析して送信データが与えられたアプリケーションにとって必要なものかどうかを分析する受信回路を必要とする。例えば、ＭＰＥＧ２で圧縮されたディジタルテレビシステムの場合これが当てはまる。このタイプのシステムでは多数のチャンネルを多重化することができる。各チャンネルのデータは幾つかの層を含みそれらも分析する必要がある。
【０００２】
【発明が解決しようとする課題】
融通性のある多重分離装置を使用することが望ましい。
本発明の目的は、
−多重化したデータストリームのデータを記憶する手段と、
−データフィルタを記憶するプログラマブル手段と、
−多重化したデータストリームのデータとデータフィルタと比較する手段と、  −比較結果と関連して多重化したデータストリームのデータを記憶手段に転送する手段とを有することを特徴とする多重分離装置である。
【０００３】
【課題を解決するための手段】
本発明の一実施形態によれば、本発明の装置は多重化したデータストリームのデータ階層中の層に従って組織化された少なくとも一つの状態機械をさらに有する。
本発明の一実施形態によれば、データフィルタを記憶するプログラマブル手段は、各状態機械に対してその機械に対応する層に対するフィルタ値を記憶したメモリを含む。
【０００４】
本発明の一実施形態によれば、前記層はＭＰＥＧ２のトランスポート層であり、フィルタ値はＰＩＤ、コンティニュイティカウンタ、同期ビットのうち少なくともいずれかのタイプを含む。
本発明の一実施形態によれば、コンティニュイティカウンタのフィルタ値は多重化されたデータストリーム中の次の予測値に対応する。
【０００５】
本発明の一実施形態によれば、前記層はＭＰＥＧ２のセクション層であり、フィルタ値はテーブル識別符号、セクションポインタの始まり、セクション長を少なくとも含む。
本発明の一実施形態によれば、前記層はＭＰＥＧ２のＭＰＥＧ２のエレメンタリーストリームパケット層であり、フィルタ値はストリーム識別符号を含む。
【０００６】
本発明の一実施形態によれば、前記装置は一方の入力が多重化したデータストリームを記憶する手段の出力に接続され第２の入力がデスクランブラの出力に接続された多重化装置をさらに備え、デスクランブラの入力も多重化したデータストリームを記憶する手段の出力に接続されており、多重化装置は一つまたは複数の状態機械によって制御されている。
【０００７】
また本発明の目的は上述した多重分離装置を有することを特徴とするディジタルテレビジョンデコーダである。
本発明の他の利点及び特徴は、添付図面を参照した特定の非限定的な実施例の説明から明らかになる。
【０００８】
【発明の実施の形態】
以下において、説明を明確にするために必要な場合、太文字または括弧及び引用符で囲んだ用語はＭＰＥＧ２の仕様で決められた名称である。
”エレメンタリーデータストリーム”にかかわるデータはＰＥＳ（”パケット化エレメンタリーデータストリーム”）パケットで転送される。各ＰＥＳはデータストリーム識別符号（"data  stream＿id"）を含んでいる。各エレメンタリーデータストリーム（オーディオ、映像その他）はプログラムの要素に対応している。同じプログラムのエレメンタリーデータストリームは多重化されて伝送される。補助層であるトランスポート層がこの伝送に用いられる。トランスポートパケットはパケット識別符号（ＰＩＤと表示する）を含む。ＰＩＤとエレメンタリーデータストリームの関係は真理値表によって定められている。真理値表はプログラム特定情報（”ＰＳＩ”）の一部を構成している。ＰＳＩもセクションの形でトランスポートパケットによって伝送される。セクションあるいはＰＥＳの大きさはトランスポートパケットのペイロードより大きい場合もある。
【０００９】
ＭＰＥＧ２：ＩＳＯ／ＩＥＣ  １３８１８規格、より詳しくはパート１”システム”を参考にすれば、特にデータの構造やフォーマットの完全な詳細について知ることができる。
図１は本発明の実施例になる多重分離装置のブロック図である。多重分離装置はデータ処理部（１）及びアプリケーションや周辺機器に接続されたスイッチング部（２）の二つの部分から成る。
【００１０】
データ処理部は図示しない同調器に接続された復調及び誤り訂正回路３から多重化されたデータストリームを受け取る。本実施例によれば、９つの別々のＰＩＤに対応した９つのトランスポートパケットを抽出する。
データ処理部はトランスポートパケットのヘッダーとフラッグ及びＰＥＳを利用して有用なデータにアクセスする。一部のフィールドはスイッチング部２を介して復号化器によってバッファとして用いられるスタティックＲＡＭ５に送られる。有用なデータがスクランブルされている場合、まずデスクランブル回路６に送ってから処理する。
【００１１】
処理部とスクランブル部の間のＦＩＦＯメモリによって両セクションが異なった速度で動作することができる。
多重化されたデータストリームは非同期データキャプチャＲＡＭ４に記憶され必要な時に読みだされる。
ＲＡＭ４に記憶されたデータを分析するのに二つのステップが一般に用いられる。一つはＲＡＭの８ビットバイトを読みだすステップで、次に宛て先メモリ８に記憶されている１バイトと比較器７で比較するステップである。ＲＡＭ４に記憶されたバイトの全てが比較の対象となるわけではない。比較はこの動作が必要なバイトに対してのみ行なわれる。処理部は比較するバイトを決定し、比較の結果によってトランスポートパケットを阻止するか有用なデータをスイッチング部に転送するかの決定をさらに行なう。
【００１２】
比較は必要ならデスクランブルされたバイトについてのみ行なわれる。多重化器１９はデータキャプチャＲＡＭ４及びデスクランブラ６の出力を選択する。多重化器１９の出力は比較器７の二つの入力のうちの一方に接続されている。この比較器の他方の入力は宛て先メモリ８の出力に接続されている。比較器が比較を行なう際にはこの宛て先メモリ８の４つのマスキングビットも考慮に入れる。
【００１３】
データキャプチャＲＡＭ４の読み出しは処理器（ＴＰ、ＰＥＳ及びＳＥＣ、９、１０及び１１）のいずれかによって開始される。このＲＡＭはＦＩＦＯプッシュアップスタックとして構成されている。
マイクロコントローラμＣ（１３）は宛て先ＲＡＭ８を制御しトランスポートパケットで探し出した定義済の宛て先バイトをロードする。
【００１４】
処理器９から１２はこのＲＡＭのコントローラを介して宛て先ＲＡＭ内のバイトの読み出しを制御する。
各比較毎に、ＲＡＭ８からの１バイト及びデータキャプチャＲＡＭ４からの１バイトが比較器７に送られる。比較の結果は比較を開始させた処理器に対して、肯定の場合は”１”を送る形で伝達される。
【００１５】
本実施例では４つの処理器が用いられている。
（ａ）処理器ＴＰ（９）はトランスポート層にかかわるバイトを扱う。
（ｂ）処理器ＰＥＳ（１０）はエレメンタリーストリームパケットの層にかかわるバイトを扱う。
（ｃ）処理器ＳＥＣ（１１）はセクション層にかかわるバイトを扱う。
【００１６】
（ｄ）処理器ＸＦＥＲ（１２）は有用なデータのスイッチング部への転送を扱う。
処理器９から１２の各々は状態機械、並びにＡＮＤ／ＯＲカウンタレジスタを備えている。与えられた瞬間には一つの処理器のみが有効である。有効期間中、処理器は通常上記の読み出し及び比較ステップを行ない、他の処理器を有効にしてから自らは無効となる。層及びトランスポートパケットによって受け取ったデータバイトが処理器の有効化・動作の順序を決定する。
【００１７】
処理器が有効となると、データキャプチャＲＡＭ４中から次に入手できるデータの処理を始める。各処理器で管理しているポインター値によって指定される宛て先ＲＡＭに読み込まれたバイトとの次なる比較が行なわれる。
簡単に言うと、処理器がスイッチング部にデータを転送する場合、処理器ＸＦＥＲ１２を有効にしてから自らを無効とする。
【００１８】
多重化器１９は処理器ＴＰまたは処理器ＰＥＳによって制御される。これはスクランブルがどのレベル（トランスポートパケットもしくはエレメンタリーデータストリームパケット）で実現されているかによる。
復号化器２０はマイクロコントローラまたは処理器の一つからの宛て先メモリのアドレスの復号化を扱う。また、マイクロコントローラが処理器レジスタのアドレスを扱う必要が出てきた場合にそれらアドレスの復号化を扱う。
【００１９】
復号化器はさらにdata  stream＿id及びdata  stream＿typeなどのパラメータが各エレメンタリーデータストリーム毎に記憶されるレジスタを含んでいる。回路の他の部分については、与えられた瞬間の処理済データストリームに関する全ての情報が復号化器から得られる（このデータストリームはdata＿stream＿idパラメータとして知られており、トランスポート処理器ＴＰとの関連でさらに扱う）。
【００２０】
種々の処理器は後により詳しく扱う。
多重分離装置のスイッチング部は処理セクションから多重化されたデータ並びにデータストリーム識別符号（data  stream＿id）を受け取る。
バッファードモードと呼ばれる本発明の一実施形態によれば、スイッチング部はスタティックＲＡＭ５の中の幾つかのバッファ領域を制御する。これらのバッファ領域はマイクロコントローラ１３によって割り当てられている。スイッチング部はデータストリーム識別符号と関連して受信データを適切なバッファ領域に記憶する。
【００２１】
幾つか設けられたインターフェイス１７、１８はスタティックＲＡＭ５、マイクロコントローラ及び外部アプリケーション１５（オーディオ復元器、ビデオ復元器、テレテキスト、等々）及び１６（アクセス制御及びサービスの支払い用のスマートカード）の間の通信を扱う。各アプリケーションは用意されたバッファ領域の関連のデータを読む。
【００２２】
シーケンス制御器２２及びデータバッファ２３は、スタティックメモリ５へのアクセスのシーケンス及びこのメモリのバッファ領域のアドレシングをそれぞれ制御する。
より詳しくは、マイクロコントローラインターフェイス１７が、メモリ５、スマートカードインターフェイス、マイクロコントローラ及びアプリケーション間のアドレスバス及びデータバスのスイッチングを行なう。
【００２３】
以下の記述は特に宛て先メモリに関したものである。
本例によれば、宛て先メモリは１２８×１２ビットのランダムアクセスメモリである。フィルタリングバイトの記憶のために用いられる。各バイトは４ビットのマスクを持っており比較の際にバイト中の何ビットかをマスクする。８ビットを比較対象バイトとし４ビットをマスキング用とした１２ビットがメモリ８の各アドレスに記憶され、比較器７によって並列的に利用される。結果として得られる１６の選択可能なビットマスクが定義済となり比較器７に記憶される。
【００２４】
処理器ＴＰ、ＰＥＳ、ＳＥＣはフィルタリング用に宛て先メモリを用いる。各処理器は宛て先メモリの一つのプログラマブル部分を用いている。
宛て先メモリの最初のバイト（アドレス０）はＰＥＳパケットに対応しており、従って処理器ＰＥＳに対応している。このバイトはデータストリームの種別を識別する（"stream＿id"）。
【００２５】
処理器ＴＰに対応する部分のアドレスの数はフィルタリングする識別符号ＰＩＤの数に依存する。１３ビット長のＰＩＤに対しては、２バイトが必要であり、これは１つのＰＩＤに対して２つのアドレスを設けることに対応する。さらにコンティニュイティカウンタ（ＥＣＣ）から予測される値が１つのＰＩＤに対して記憶される。後者の場合、同期バイトを付加することが必要である。同期バイトは全てのトランスポートパケットに対して同じで、従って処理器ＴＰに割り当てられたメモリの部分から始まって一回だけ記憶される。
【００２６】
この第２の部分に対するアドレスの数は従って、
（フィルタリングされるＰＩＤの数×３）＋１
この第２の部分の構成は：
同期バイト
PID  H  data  stream  #0
[PID  H  data  stream  #1]
[PID  H  data  stream  #2]
...
[PID  H  data  stream  #n]
PID  L  data  stream  #0
...
[PID  L  data  stream  #n]
ECC  data  stream  #0
...
[ECC  data  stream  #n]
本実施例によればｎは常に９より小さい。
【００２７】
セクション処理器ＳＥＣに対して予約されている宛て先メモリの部分に関しても、予約アドレスの数はＰＩＤの数の関数である。メモリはデータストリームの数と同じ数の”セクション／ストリーム”フィールドを含んでいる。各フィールドは独自の開始アドレスを有している（section＿TR＿start＿address）。
各フィールドの最初のバイトはゼロであり、これはセクションポインタ（"pointer＿field"）の始まりがゼロであることの検証を与える。
【００２８】
続く諸バイトはテーブル識別符号（"table＿id"）に対応する。幾つかのテーブルがユーザー定義可能であり、識別符号の数は可変で各フィールドに対するfilter＿nbに等しい。
次にくるのはゼロのセミバイトで、これはセクションがトランスポートパケットからオーバーフローするかどうかを確認するためにセクション長の高位セミバイトと比較される。
【００２９】
各フィールドの最後の部分は長さfilter＿lengthバイトのグループを幾つか（filter＿nb個）含む。これらのバイトは同じ数のパケットバイトと比較される。各パケットバイトについて比較を行なう数がfilter＿nbである。
セクションポインタの始まり
table＿id  #0
[table＿id  #1]
...
[table＿id  #（filter_nb−1）]
セクション長の高位セミバイト
address  #0,0
[address  #0,1]
...
[address  #0,（filter_nb−1）]
[address  #1,0]
[address  #1,1]
...
[address  #（filter＿length−1）,（filter＿nb−1）
各フィールドの全バイト数は：
filter＿nb×（filter＿length+1）+2
表１−１及び表１−２は９つのＰＩＤに対する宛て先メモリの構成例及び二つの異なったtable＿id及び二つのグループの１６ビットバイト（すなわちfilter＿nb=2  及びfilter＿length=2）に対するセクションフィルタリングの例を示す。
【００３０】
【表１】
0003919860.tif 000002
【００３１】
【表２】
0003919860.tif 000003
例えば、あるセクションの適切な諸バイトが表２の一つの欄の内容に等しければ比較の結果はイエスとなる。
【００３２】
【表３】
0003919860.tif 000004
【００３３】
データは通常マイクロコントローラ１３によって宛て先メモリ８に書き込まれる。この文脈におけるとりわけ特別なケースはコンティニュイティカウンタで、これは処理器ＴＰ（９）によって書き込みが行なわれる。
宛て先メモリに書き込むには、マイクロコントローラはtrpとして知られるポインタを使用する。処理器はポインタtrpをプログラムすることによって自らにとって有用なデータにアクセスすることができる。
【００３４】
コンティニュイティカウンタＥＣＣが待つ値（与えられたエレメンタリーデータストリームに対する多重化されたデータストリームから抽出された最後のトランスポートパケットに対応）は宛て先メモリの適切なアドレスに記憶される。この値は最後にフィルタ処理されたトランスポートパケットから抽出されたコンティニュイティカウンタの値に１単位加えたものに対応する。同じＰＩＤを持つ次のトランスポートパケットのコンティニュイティカウンタとの比較の際にＥＣＣを用いる。
【００３５】
ＥＣＣの最初の値は未定義であるため、マイクロコントローラによる宛て先メモリへの最初の書き込みの際には適切なビットマスキング構成を選択することによって最初は完全にマスキングされる。ＥＣＣの最初の確定値が書き込まれると、マスキングビットも書き直される。
宛て先メモリのコントローラ１４はこのメモリへのアクセス要求間の多重化を行なう。これらの要求はマイクロコントローラ及び処理器から出される。
【００３６】
以下の記述はトランスポート層処理器に関する。
処理器ＴＰは全てのトランスポートパケットに対して有効な最初の処理器である。
本実施例によれば、この処理器によって読み出し・処理されるバイトは次の通りである：
（ａ）sync＿byte                                  ８ビット
（ｂ）transport＿error＿indicator                １ビット
payload＿unit＿start＿indicator            １ビット
transport＿priority                          １ビット
PID＿H                                      ５ビット
（ｃ）PID＿L                                      ８ビット
（ｄ）transport＿scrambling＿control              ２ビット
adaptation＿field＿control                ２ビット
continuity＿counter                        ４ビット
これらの呼称はＭＰＥＧ２の用語に拠っている。データはバイト単位で読み込まれる。transport＿priorityなどの一部の変数は考慮に入れられないが処理すべき変数を含むバイトに属しているかのように読み込まれる。
【００３７】
本実施例によれば、９つまでのデータストリームを抽出することができる。例えば、それらのデータストリームは：
−プログラム関連テーブルストリーム（ＰＩＤ＃１のパケット）
−条件付きアクセステーブルストリーム（ＰＩＤ＃２のパケット）
−プログラム割当セクションストリーム
−ビデオストリーム
−オーディオストリーム
−テレテキストストリーム
−アクセス権管理メッセージストリーム（ＥＭＭ）
−アクセス権チェックメッセージストリーム（ＥＣＭ）
−プログラムガイドストリーム
９つのＰＩＤ値は多重分離器によって個々に割り当てられるのではない。マイクロコントローラがＰＩＤを宛て先メモリにロードすることによってデータストリームを選択する。これら９つのＰＩＤの一つによって特定されたトランスポートパケットのみが処理される。
【００３８】
マイクロコントローラは各ストリームに対してストリームの種別（stream＿type）を割り当てるがこれはオーディオ、ビデオ、セクション、その他のいずれかの値をとる。
図２は処理器ＴＰの状態機械の状態図である。太文字で示された状態（w＿first＿TP）を以下の記述において状態機械の初期状態と考える。新しいパケットが予期される時、処理器ＴＰはデータキャプチャメモリからの読み出し可能を示す信号がデータキャプチャメモリから来るのを待つ（w＿TP状態,  ar＿rdy1信号）。物理的実行及びデータキャプチャメモリの読み書きタイマーの比にかかわる３つの待ち状態が続く。
【００３９】
同期バイトsync＿byteに誤りがある（つまり０ｘ４７とは異なる）場合、パケットは阻止され（sync＿m状態）、初期状態へ戻る。
transport＿error＿indicatorフラグがトランスポートデータパケットが少なくとも一つの修復不能の誤りを含んでいることを示す”１”である場合、処理器ＴＰは同様にパケットを阻止する（sync＿m状態と同様に、TP＿error条件）。
【００４０】
処理器ＴＰは、ＰＩＤの高位（＿H）ビット及び低位（＿L）ビットと、宛て先メモリ８に記憶された９つの宛て先ＰＩＤとを比較する。比較はまず９つの高位バイトに対して行なわれ、次に９つの低位バイトに対して行なわれる。処理器ＴＰの９ビットレジスタDSid＿regにdata-＿stream＿idと呼ぶ結果をロードする。”１”ビットが処理パケットのＰＩＤと宛て先ＰＩＤの一つとの間に一致があることを示す。ビットの位置が関係する特定のＰＩＤを示す。
【００４１】
レジスタのどのビットも”１”ではない場合、トランスポートパケットは阻止される。このテストはcc＿trp状態で行なわれる。この状態はフィルタ処理済ＰＩＤに対する予期されるコンティニュイティカウンタＥＣＣのアドレスを示す宛て先メモリのポインタの計算状態である。このアドレスが無効ならば、誤りとなる（no＿ds）。
【００４２】
処理器ＴＰは与えられたＰＩＤに対応するパケットに対してコンティニュイティカウンタcontinuity＿counterが実際に予期値ＥＣＣと等しいかどうかを確認する。このために処理器ＴＰは比較器７によって行なわれた比較の結果を待つ（wait＿cc＿match状態）。次に新しい予期ＥＣＣ値を書き込む。
次は確認段階check＿1である。多くのケースが想定される。
【００４３】
（ａ）パケットにペイロード（ＰＥＳまたはセクションに対応するペイロード）が存在しコンティニュイティカウンタが正しい値を持つならば、処理器ＰＥＳまたは処理器ＳＥＣが有効となる（call＿next＿fsm状態）。トランスポートパケットの中でＰＥＳの始まりまたはセクションの始まりの存在を示すのはpayload＿unit＿start＿indicatorフラグである。このフラグはレジスタstart＿indic＿regに記憶される。
【００４４】
（ｂ）パケットがビデオタイプのエレメンタリーストリームを含むがパケットのコンティニュイティに誤りがある（コンティニュイティカウンタが予期値と異なる）場合、幾つかの誤りバイトがペイロードに挿入されスイッチング部に転送される（error＿state状態,  e＿x状態およびcall＿xfer状態）。スイッチング部はスタティックＲＡＭの適切なバッファ領域にこれらのバイトを記憶する。ペイロードが対象とするビデオ復号化器はこのバイト構成を認識し結果のデータを処理する。
【００４５】
（ｃ）adaptation＿field＿controlビット対がトランスポートパケット内の適応フィールドの存在を示す場合、処理器ＴＰは処理器ＸＦＥＲを有効にしこのフィールドからスイッチング部へとバイトを送る。
（ｄ）コンティニュイティカウンタが正しい値を持たずストリームがセクションタイプの場合、パケットは阻止される。
【００４６】
処理器ＸＦＥＲの有効期間中、処理器ＴＰはスリープ状態にあり処理器ＸＦＥＲによって有効にされるのを待っている。トランスポートパケットが適応フィールドに加えてペイロードを有しコンティニュイティカウンタが正しい値を有する場合、処理器ＴＰは処理器ＳＥＣまたはＰＥＳのうちいずれかを有効にする（check＿2、次いでcall＿next＿fsm状態）。
【００４７】
反対の場合、処理器ＴＰは以下のトランスポートパケットに対してのみ有効となる（check＿2状態）。
ＳＥＣまたはＰＥＳのいずれかの処理器が有効とされた場合、処理器ＴＰはスリープ状態となりこれらの処理器によって有効とされるのを待つ。
transport＿scrambling＿controlビット対はトランスポートパケットのペイロードのスクランブルの有無及びスクランブルの形態を示す。これらのビットはデスクランブラ６を構成し多重化器１９を制御するために処理器ＴＰによって用いられる。
【００４８】
トランスポートパケットを阻止する際、処理器ＴＰは新しいパケットの到着と同時に発生する再初期化信号を単に待つことによって自らを無効とする。
【００４９】
処理器ＴＰは３つのレジスタを持っている。最初のレジスタ（DS＿count＿reg）は抽出すべき最大の別々のパケットの数を含むものでマイクロコントローラによって制御されている。第２のレジスタ（TP＿count＿reg）は処理器ＴＰによってループインデックス（データキャプチャメモリに読み込まれる１バイトついて行なわれる比較の回数）として用いられる。第３のレジスタは既に述べた。
【００５０】
以下の記述はエレメンタリーストリームパケット処理器ＰＥＳに関する。
本実施例によれば、この処理器は状態機械（図３に示す）並びに各２ビットの９つのレジスタを有する。二つの処理器ＴＰまたはＸＦＥＲによって有効とされる。
以下のバイトが処理器ＰＥＳによって読み込まれる。星印のデータのみが実際に処理器によってテストされる。その他のデータは比較中はマスクされるが、これは他の処理器でも当てはまることである。しかしながらＰＥＳのヘッダー全体は記憶されスイッチング部に転送される。
【００５１】
（ａ，ｂ，ｃ）  packet＿start＿code＿prefix            ２４ビット
（ｄ）          stream＿id*                            ８ビット
（ｅ）          PES＿packet＿length＿high              ８ビット
（ｆ）          PES＿packet＿length＿low              ８ビット
（ｇ）          "10"                                    ２ビット
PES＿scrambling＿control*              ２ビット
PES＿priority                          １ビット
data＿alignment＿indicator            １ビット
copyright                              １ビット
original＿or＿copy                      １ビット
（ｈ）          PTS＿DTS＿flags                      ２ビット
ESCR＿flag                              １ビット
ES＿rate＿flag                          １ビット
DSM＿trick＿mode＿flag                １ビット
additional＿copy＿info＿flag            １ビット
PES＿CRC＿FLAG                        １ビット
PES＿extension＿flag                  １ビット
最初に処理器ＰＥＳはスリープ状態にある。処理器ＴＰまたはＸＦＥＲから来るawake＿bus（ＰＥＳ）信号によって有効となる。処理器は次に、データキャプチャメモリが現在のトランスポートパケットの次のバイトを読みだす準備ができるまで待つ（W＿PES状態とar＿rdy信号）。処理器ＴＰに関してはデータキャプチャメモリと処理器ＰＥＳを同期させるために一定数の待ち状態が必要である。処理器ＰＥＳはpacket＿start＿code＿prefixに対応する３バイトａ，ｂ及びｃを読み（scx＿m状態）、さらにストリーム識別バイトstream＿idを読む（sid＿m1状態）。ストリームがプライベートストリームの場合（ＭＰＥＧ２システムの文書の表２−１０を参照）、ＰＥＳパケットのペイロードをスイッチング部に転送するために処理器ＸＦＥＲが有効とされる（call＿xfer状態）。本実施例ではプライベートストリームは完全に対応アプリケーションによって取り扱われ、デスクランブラ６によるデスクランブル処理を必要としないことが前提になっている。
【００５２】
反対の場合、バイトｅ及びｆを読み込み、次にバイトｇ（scram状態）を読み込み、ここからPES＿scrambling＿controlビット対を得るが、これはＰＥＳパケットのペイロードのスクランブル処理を示す。前に述べたように、これらのビットはデスクランブラ６及び多重化器１９を制御するために用いられる。ＰＥＳパケットのスクランブルされたペイロードが幾つかのトランスポートパケット間に分散しているが最初のトランスポートパケットのみがPES＿scambling＿controlビット対を含んでいるとすると、これらのビットは２ビットレジスタに記憶される。処理器ＰＥＳはストリームあたり１つのレジスタを含む。つまり本実施例では９つである。レジスタは後続のＰＥＳパケットのヘッダーによって更新される。
【００５３】
ｇバイトの読み込み及び処理の後、処理器はｈバイトを読み込む。これは幾つかのフラグを含んでいる。多重分離器を組み込んだ復号化器の能力によって、この機会にこれらのフラグをこれらの手段に対応するような値に設定することができる。
後続の２つの状態の目的はＰＥＳパケットのヘッダーをスイッチング部へ転送することである。この際、処理器ＰＥＳはスリープ状態に設定される。転送が終了すると、処理器ＰＥＳは処理器ＸＦＥＲによって再び有効とされる。既に述べたように処理器ＰＥＳは次にＰＥＳパケットのペイロードの転送を開始する（call＿xfer状態）。
【００５４】
この転送が終了すると、処理器ＰＥＳはスリープモードに移行する。
以下の記述はセクション処理器ＳＥＣに関する。
セクション層のデータを処理するためのセクション処理器ＳＥＣは状態機械（図４に示す）と４つのレジスタを有する。処理器ＴＰまたはＸＦＥＲのいずれかによって有効とされる。処理器によって読みこまれるバイトは以下の通りである。
【００５５】
（ａ）          table＿id                              ８ｂ
（ｂ）          section＿syntax＿indicator            １ｂ
private＿indicator                    １ｂ
reserved                                ２ｂ
section＿length  （高位のセミバイト）  ４ｂ
（ｃ）          section＿length  （低位のバイト）      ８ｂ
（ｄ）          定義済グループと比較される最初のバイト  ８ｂ
（ｅ）          定義済グループと比較される第２のバイト  ８ｂ
．．．
（．．．）        定義済グループと比較される最後のバイト  ８ｂ
（．．．）        ペイロード                              Ｎ×８ｂ
開始時の状態はスリープ状態である。処理器ＳＥＣが有効のとき２つのケースが生じうる。
【００５６】
−現在のトランスポートパケットのペイロードがその先頭にセクションの始まりを含む。
−トランスポートパケットのペイロードが、前トランスポートパケットによって始まりを送信されたセクションのバイトを含む。
第１のケースでは、状態は待ち状態w＿secに移行する。この状態はデータキャプチャメモリの準備ができており少なくとも６バイトを含んでいることを示す信号ar＿rdyが処理器ＳＥＣに到着していない限りは保たれる。
【００５７】
第１のケースでは、処理器ＳＥＣは宛て先メモリのセクション／ストリームフィールドを指示する。このポインタは各許可済ＰＩＤに対してマイクロコントローラによって決定され処理器によって読み出しが行なわれるレジスタに記憶される。
各セクション／ストリームフィールドは、トランスポートパケットのセクションのバイトと比較される定義済バイトの幾つかのグループを持ち、幾つかのパラメータ（ＥＭＭ：  ＥＣＭ、プログラムの割当、等々）のフィルタ処理は各ストリームに対して実施することができる。
【００５８】
セクションの最初でデータキャプチャメモリから読みだされる最初のバイトはテーブル識別バイトtable＿idである。これは宛て先メモリに対応するfilter＿nbバイトと比較される。これはF1＿loop状態を囲むループによって表わされる。
読みだす第２及び第３のバイトはセクション長バイトである。本実施例では、セクションが現在のトランスポートパケット以外にも及ぶかどうかを調べるためにセクション長の低位バイトの高位セミバイトとの比較がされるのみである。
【００５９】
セクションバイトは次に宛て先メモリに記憶された定義済バイトと比較され（F2＿loop及び対応するループ状態）。一つのグループのバイトとの比較の際、比較で肯定の結果が出る毎に、レジスタ（filter＿reg）の１ビットが処理器によって１に設定される。セクションが２つ以上のパケットに渡っている場合、セクション全体をスイッチング部に転送するために、この情報はトランスポートパケット毎に保持される。
【００６０】
定義済バイトのグループの内１つがセクションで検出された場合、フィルタ処理終了とともにセクションはスイッチング部へ転送される（call＿next＿fsm状態）。１つのセクションの終わりが転送されると、割り込み信号が生成されセクション全体がＳＲＡＭに記憶され取り出し可能な状態であることをマイクロコントローラに示す。
【００６１】
バイトのグループとの比較で肯定の結果が得られなかった場合、セクションは阻止され制御は処理器ＴＰに戻される。
第２のケースでは、セクションが既に開始されている場合処理器ＳＥＣが有効とされる。処理器は次にレジスタsuspend＿regを分析してトランスポートパケットのペイロードの始めに存在するセクションの終わりが比較結果が肯定であったセクションに対応していたかどうかを決定する。この場合、転送処理器が呼び出される（call＿next＿fsm状態）。反対の場合、処理器ＳＥＣは同じトランスポートパケットの後続するセクションの始まりに対応するポインタ（w＿ptr）を計算する。システムはフィルタ処理／比較のサイクルに戻る（w＿SEC状態）。
【００６２】
処理器ＳＥＣは４つのレジスタを有する。第１のレジスタ（SECcount＿reg）は状態機械に関して述べられた２つのループにおけるインデックスとして用いられる。第２のレジスタ（filter＿reg）は比較の結果を記憶するのに用いられる。このレジスタはfilter＿nbビットを含み、各ビットが定義済バイトのグループの内一つの比較結果を示している。第３のレジスタ（suspend＿reg）は各ストリームについて比較結果を記憶し、幾つかのパケットに及ぶ一つのセクションの内容をスイッチング部に転送することができる。セクション割り込みの終わりもこのレジスタから生成される。最後のレジスタ（SEC＿length＿reg）はセクションの長さを計算するために用いられる。
【００６３】
本実施例では、比較対象の同じセクションの全てのバイトが同じトランスポートパケットによって送信されると想定している。セクションの他のバイトは他のトランスポートパケットに分配される場合もある。
以下の記述は特に転送処理器ＸＦＥＲに関連する。
処理器ＸＦＥＲはスイッチング部に転送すべきデータを有する他の任意の処理器によって有効とされる。それは状態機械（図５）、レジスタ（packet＿length＿reg）、及び二つのカウンタxfer＿count＿reg及びar＿countを有する。処理器ＸＦＥＲは宛て先メモリへのアクセスを有していない。
【００６４】
レジスタpacket＿length＿regはパケットの長さを含む。つまりＭＰＥＧ２のトランスポートパケットの場合１８８バイトである。１バイトがデータキャプチャメモリに読み込まれる毎に、マイクロコントローラは内部カウンタ（packet＿count＿reg）にこのトランスポートパケット値の始まりをロードする。
xfer＿countカウンタは転送されるバイト数を記憶するために処理器ＸＦＥＲによって用いられる。
【００６５】
カウンタar＿countはtype  ar＿rdyタイプ信号（データキャプチャメモリの準備完了）を生成するのに用いられる。復調器／誤り訂正器から来るデータに同期を与えデータキャプチャメモリの読み書きポインタを比較する。
【００６６】
開始時の状態はやはりスリープ状態である。
信号till＿TP＿endが発信処理器によって有効とされる場合、処理器ＸＦＥＲはトランスポートパケットの残りの全バイトをスイッチング部に転送する。反対の場合、処理器はデータキャプチャメモリの最初のバイトを読み転送すべきバイト数だと解釈する。信号drop＿length＿busが有効とされている場合、この最初のバイトはスイッチング部に転送されない。この機能はまた処理器ＸＦＥＲを有効とした処理器に依存し、データキャプチャメモリに存在するバイト数に依存する。
【００６７】
各転送セッション毎に、処理器ＸＦＥＲはデータキャプチャメモリまたはデスクランブラに６バイトが存在していることを予期している。続いて信号DPP＿reqをスイッチング部に送信することによって転送セッションを開始し（w＿ard状態）、スイッチング部の応答を待つ（w＿sram状態）。
【００６８】
データを受け取る準備ができたＤＳＰは信号DSP＿ackによって応答する。処理器ＸＦＥＲは次にデータキャプチャメモリのバイトを読み（rd＿byte状態）それをスイッチング部に転送する。１バイト転送後、処理器はループバックを行なって転送終了条件が満たされるまで次のバイトを転送する。転送終了条件はパケットの終了、セクションの終了または転送の終了である（w＿0,  w＿1,  w＿2状態）。
【００６９】
終了条件のどれも満たされない場合、処理器はデータキャプチャメモリから取り入れ可能な（ar＿rdy=1）６バイトをさらに待ち（w＿ar3状態）、新たな転送セッション要求を形成する。
終了条件が満たされた場合、処理器ＸＦＥＲは処理器ＸＦＥＲを有効とした処理器を有効としスリープモードに移行する（call＿next＿fsm状態およびsleep状態）。
【図面の簡単な説明】
【図１】  ディジタルテレビジョンシステムにおける本発明による多重分離装置のブロック図である。
【図２】  多重分離装置の転送処理器ＴＰの状態図である。
【図３】  図１の多重分離装置のエレメンタリーデータストリームパケット処理器ＰＥＳの状態図である。
【図４】  図１の多重分離装置のセクション処理器ＳＥＣの状態図である。
【図５】  図１の多重分離装置の転送処理器ＸＦＥＲの状態図である。
【符号の説明】
１  データ処理部
２  スイッチング部
３  復調及び誤り訂正回路
４  データキャプチャＲＡＭ
５  スタティックＲＡＭ
６  デスクランブラ
７  比較器
８  宛て先メモリ
９  処理器ＴＰ
１０  処理器ＰＥＳ
１１  処理器ＳＥＣ
１２  処理器ＸＦＥＲ
１３  マイクロコントーラ
１４  宛て先メモリコントーラ
１５、１６  アプリケーション
１７、１８  マイクロコントローラインターフェイス
１９  多重化器
２０  復号化器
２１  ＦＩＦＯ
２２  シーケンス制御器
２３  データバッファ
【図１】
0003919860.tif 000005
【図２】
0003919860.tif 000006
【図３】
0003919860.tif 000007
【図４】
0003919860.tif 000008
【図５】
0003919860.tif 000009