(57)【特許請求の範囲】
【請求項１】
セクションデータバッファと、
トランスポートストリームから抜き出されたトランスポートパケットのセクションデータの先頭からｍバイトを前記セクションバッファに書き込むセクションバッファ制御回路と、
前記セクションデータバッファに書き込まれたデータに基づいてセクションデータ長を判断するセクションレングス判断回路と、
ホストから書き込み／読み出しが可能なｎ個のパターンメモリと、
前記セクションデータ長に応じて前記ｎ個のパターンメモリのアクセス方法を変えるメモリ制御回路と、
前記セクションデータバッファのデータと前記ｎ個のパターンメモリから読み出されたデータとの比較方法を前記セクションデータ長に応じて変える比較回路と、
前記比較回路による比較結果と前記セクションデータ長とに基づいて一致エントリを判断するエントリ判断回路とを備え、
前記セクションデータ長に合わせ前記ｎ個のパターンメモリから比較するデータをｐパターン読み出し、当該ｐパターンをそれぞれ前記セクションデータバッファのデータの先頭から比較する
ことを特徴とするトランスポートストリーム処理装置。
【請求項２】
請求項１に記載のトランスポートストリーム処理装置において、
前記ｎ個のパターンメモリの同一物理アドレスには同一エントリのデータを配置し、アドレスに応じて同一エントリ内のバイト順を入れ替えた構成となっている
ことを特徴とするトランスポートストリーム処理装置。
【請求項３】
請求項１に記載のトランスポートストリーム処理装置において、
前記ｎ個のパターンメモリの同一物理アドレスには複数のエントリのデータを配置し、エントリ内のデータを分割し異なった物理アドレスにデータを配置する
ことを特徴とするトランスポートストリーム処理装置。
【請求項４】
セクションデータバッファと、
トランスポートストリームから抜き出されたトランスポートパケットのセクションデータの先頭からｍバイトを前記セクションバッファに書き込むセクションバッファ制御回路と、
ホストから書き込み／読み出しが可能なｎ個のパターンメモリと、
ホストから書き込み／読み出しが可能なモードメモリと、
ホストアクセス時は前記パターンメモリや前記モードメモリの書き込み／読み出しを行い、スタート信号入力時は比較用のメモリの読み出しを行うメモリ制御回路と、
前記モードメモリの値により前記セクションデータバッファのデータと前記ｎ個のパターンメモリのデータとの比較方法を変える比較回路と、
前記比較回路からの結果と前記モードメモリの値より一致エントリを判断するエントリ判断回路とを備え、
スタート信号により比較を開始し前記モードメモリの値により比較方法を変えることで１アクセス当たり複数個のパターンと比較することができる
ことを特徴とするトランスポートストリーム処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
ディジタル放送の分野では、映像・音声・静止画・文字データ・音楽データ・コンピュータプログラム等の番組要素がトランスポートパケット形式で伝送される。この発明は、必要なトランスポートパケットを抽出したり、トランスポートパケットのペイロード内のデータ形式がセクション形式であるとき、必要なデータを抽出したりするトランスポートストリーム処理装置に関する。
【０００２】
【従来の技術】
特開２０００−２３１３５号公報の図１には、順次入力されるデジタルデータのヘッダとエントリデータとをある特定の単位で比較し、判定積算部で現在の比較結果と過去の比較結果とを演算し、判定保持部で演算結果を保持し、これらの処理を比較判定終了まで続けるセクション選別装置が開示されている。
【０００３】
【発明が解決しようとする課題】
上述のセクション選別装置では、デジタルデータと複数のエントリとの比較を比較の必要性の有無にかかわらず比較判定終了まで続けなければならないため比較処理に時間がかかる。また、エントリ１つに対して１つづつ判定保持手段を持たなければならないため回路規模が大きくなる。また、ＰＩＤ比較、セクションインデックス比較、セクション比較の一連の比較を同一ハードウエアで実現することが困難である。
【０００４】
この発明は上記のような問題を解決するためになされたものであり、その目的は、比較処理時間を短縮することができるトランスポートストリーム処理装置を提供することである。
【０００５】
この発明のもう１つの目的は、回路規模を小さくすることができるトランスポートストリーム処理装置を提供することである。
【０００６】
この発明のさらにもう１つの目的は、複数種類の比較を単一のハードウエアで実現することができるトランスポートストリーム処理装置を提供することである。
【０００７】
【課題を解決するための手段】
この発明の１つの局面に従うと、トランスポートストリーム処理装置は、セクションデータバッファと、セクションバッファ制御回路と、セクションレングス判断回路と、ｎ個のパターンメモリと、メモリ制御回路と、比較回路と、エントリ判断回路とを備える。セクションバッファ制御回路は、トランスポートストリームから抜き出されたトランスポートパケットのセクションデータの先頭からｍバイトをセクションバッファに書き込む。セクションレングス判断回路は、セクションデータバッファに書き込まれたデータに基づいてセクションデータ長を判断する。ｎ個のパターンメモリは、ホストから書き込み／読み出しが可能なメモリである。メモリ制御回路は、セクションデータ長に応じてｎ個のパターンメモリのアクセス方法を変える。比較回路は、セクションデータバッファのデータとｎ個のパターンメモリから読み出されたデータとの比較方法をセクションデータ長に応じて変える。エントリ判断回路は、比較回路による比較結果とセクションデータ長とに基づいて一致エントリを判断する。上記トランスポートストリーム処理装置では、セクションデータ長に合わせｎ個のパターンメモリから比較するデータをｐパターン読み出し、当該ｐパターンをそれぞれセクションデータバッファのデータの先頭から比較する。
【０００８】
好ましくは、上記ｎ個のパターンメモリの同一物理アドレスには同一エントリのデータを配置し、アドレスに応じて同一エントリ内のバイト順を入れ替えた構成となっている。
【０００９】
好ましくは、上記ｎ個のパターンメモリの同一物理アドレスには複数のエントリのデータを配置し、エントリ内のデータを分割し異なった物理アドレスにデータを配置する。
【００１０】
この発明のもう１つの局面に従うと、トランスポートストリーム処理装置は、セクションデータバッファと、セクションバッファ制御回路と、ｎ個のパターンメモリと、モードメモリと、メモリ制御回路と、比較回路と、エントリ判断回路とを備える。セクションバッファ制御回路は、トランスポートストリームから抜き出されたトランスポートパケットのセクションデータの先頭からｍバイトをセクションバッファに書き込む。ｎ個のパターンメモリは、ホストから書き込み／読み出しが可能なメモリである。モードメモリは、ホストから書き込み／読み出しが可能なメモリである。メモリ制御回路は、ホストアクセス時はパターンメモリやモードメモリの書き込み／読み出しを行い、スタート信号入力時は比較用のメモリの読み出しを行う。比較回路は、モードメモリの値によりセクションデータバッファのデータとｎ個のパターンメモリのデータとの比較方法を変える。エントリ判断回路は、比較回路からの結果とモードメモリの値より一致エントリを判断する。上記トランスポートストリーム処理装置では、スタート信号により比較を開始しモードメモリの値により比較方法を変えることで１アクセス当たり複数個のパターンと比較することができる。
【００１１】
この発明のさらにもう１つの局面に従うと、トランスポートストリーム処理装置は、セクションデータバッファと、セクションバッファ制御回路と、パターンメモリと、タグメモリと、メモリ制御回路と、比較回路と、一致アドレス保存回路とを備える。セクションバッファ制御回路は、トランスポートストリームから抜き出されたトランスポートパケットのセクションデータの先頭からｍバイトをセクションバッファに書き込む。パターンメモリは、ホストから書き込み／読み出しが可能なメモリである。タグメモリには、比較すべきパターンメモリのアドレスが書き込まれる。メモリ制御回路は、ホストアクセス時はパターンメモリまたはタグメモリの書き込み／読み出しを行い、スタート信号が入力されたときは比較するデータを読み出すためにパターンメモリとタグメモリの読み出しを行う。比較回路は、セクションデータバッファのデータとパターンメモリのデータを比較しタグメモリの値よりストップ信号を発生する。一致アドレス保存回路は、比較回路による比較の結果一致したアドレスに対応した値をタグメモリに書き込む。上記トランスポートストリーム処理装置では、スタート信号がアクティブになるとタグメモリに書き込まれているパターンメモリの有効なアドレスによりパターンメモリから読み出したデータとセクションデータバッファの値とを比較し、一致したアドレスをタグメモリに書き込むように制御できる。
【００１２】
この発明のさらにもう１つの局面に従うと、トランスポートストリーム処理装置は、セクションデータバッファと、セクションバッファ制御回路と、パターンメモリと、第１のタグレジスタと、第２のタグレジスタと、メモリ制御回路と、比較回路と、プライオリティエンコーダと、一致結果保存回路と、タグ消去回路とを備える。セクションバッファ制御回路は、トランスポートストリームから抜き出されたトランスポートパケットのセクションデータの先頭からｍバイトをセクションバッファに書き込む。パターンメモリは、ホストから書き込み／読み出しが可能なメモリである。第１のタグレジスタは、比較すべきパターンメモリのアドレス位置を保存する。第２のタグレジスタは、比較する度に第１のタグレジスタの値をロードする。メモリ制御回路は、ホストアクセス時はパターンメモリまたは第１のタグレジスタの書き込み／読み出しを行い、スタート信号が入力されたときは第１のタグレジスタから第２のタグレジスタへデータ転送を行い、比較するためにパターンメモリの読み出しを行う。比較回路は、セクションデータバッファのデータとパターンメモリのデータを比較し、タグレジスタの値よりストップ信号を発生する。プライオリティエンコーダは、第２のタグレジスタの値よりパターンメモリのアドレスを出力する。一致結果保存回路は、比較回路からの一致信号で一致結果を第１のタグレジスタに反映する。タグ消去回路は、プライオリティエンコーダのアドレスより該当の値を消去する。上記トランスポートストリーム処理装置では、スタート信号がアクティブとなったとき第１のタグレジスタの値を第２のタグレジスタに転送し、次いで第２のタグレジスタの値が１の位置をプライオリティエンコーダが検出し、プライオリティエンコーダが発生したアドレスに対しタグ消去回路が当該アドレスに対応した第２のタグレジスタを０に書き込むとともに、モードにより一致結果を第１のタグレジスタに保存しかつプライオリティエンコーダが発生したアドレスのパターンメモリの値を読み出し比較回路が一致を判断した時はタグレジスタに１を書き込み不一致なら０を書き込み、タグ消去できなくなるまでまたはストップ信号がメモリ制御回路に入力されるまで１クロックでパターンメモリのアクセスを連続して行うことができる。
【００１３】
タグレジスタの使用方法としてトランスポートパケットのＰＩＤの一致検出を行うＰＩＤフィルタと、ＰＩＤとセクションを関連付けるセクションインデックスフィルタと、セクションの一致検出をおこなうセクションフィルタの３通りを使い分け、タグレジスタを必要に応じ書き換え任意のパターンメモリの領域を使用することができることが好ましい。
【００１４】
この発明のさらにもう１つの局面に従うと、トランスポートストリーム処理装置は、セクションデータバッファと、セクションバッファ制御回路と、パターンメモリと、メモリ制御回路と、比較回路と、ローカルメモリとを備える。セクションバッファ制御回路は、トランスポートストリームからトランスポートパケットを抜き出しトランスポートパケットのペイロード内のセクションデータの先頭からｍバイトをセクションバッファに書き込む。パターンメモリは、ホストから書き込み／読み出しが可能なメモリである。メモリ制御回路は、ホストアクセス時はパターンメモリの書き込み／読み出しを行い、スタート信号が入力されたときは比較するためにパターンメモリの読み出しを行う。比較回路は、セクションデータバッファのデータとパターンメモリのデータを比較する。ローカルメモリは、ホストからデータを書き込み／読み出しできるメモリである。上記トランスポートストリーム処理装置では、セクションデータの開始ｎバイトがパケット間を跨る場合は、この跨る前のセクションデータの開始ｎバイトをローカルメモリに保存し、続きのセクションが入力されたときにローカルメモリからこのセクションデータの開始ｎバイトを読み出してセクションバッファに書き込み現在入力された続きのセクションに連結し、この連結されたセクションデータとパターンメモリの比較を行う。
【００１５】
この発明によるトランスポートストリーム処理装置では、デジタルデータの長さ、つまりセクションレングスを判断し、不要な条件は読み出さず、必要な条件のみ読み出し比較することで、比較処理時間が短縮できる。
【００１６】
また、比較すべきデジタルデータが全て揃ってから比較をエントリ単位で行うので、比較判定で一致した時終了すれば判定保持手段は必要ない。
【００１７】
また、複数種類の比較を単一ハードウエアで実現することができる。
【００１８】
【発明の実施の形態】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付し、その説明は繰り返さない。
【００１９】
（第１の実施形態）
図１は、この発明の第１の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。図１に示すトランスポートストリーム処理装置は、ＰＩＤフィルタ１００と、セクションバッファ制御回路１０２と、セクションデータバッファ１０１ａ，１０１ｂと、セクションレングス判断回路１０３と、メモリ制御回路１０５と、パターンメモリ１０４ａ，１０４ｂと、比較回路１０６と、エントリ判断回路１０７と、セレクタ１０８とを備える。
【００２０】
ＰＩＤフィルタ１００は、トランスポートストリームから所定のトランスポートパケットを抜き出し、当該トランスポートパケットのセクションデータをセクションバッファ制御回路１０２に与える。
【００２１】
セクションバッファ制御回路１０２は、ＰＩＤフィルタ１００からのセクションデータの先頭から１６バイト（０〜１５バイト目）を取り出す。そして、取り出したセクションデータの０〜７バイト目までをセクションデータバッファ１０１ａに書き込み、８〜１５バイト目までをセクションデータバッファ１０１ｂに書き込む。
【００２２】
セクションレングス判断回路１０３は、セクションデータバッファ１０１ａに格納されたセクションデータの先頭から２バイト目の下位４ビットと３バイト目８ビットとの合計１２ビットに基づいてセクションレングスＳＬを求める。セクションレングスＳＬは、ＰＩＤフィルタ１００からのセクションデータの長さである。
【００２３】
パターンメモリ１０４ａ，１０４ｂには複数のエントリが格納されている。エントリは、ＰＩＤフィルタ１００からのセクションデータを選別するためのデータである。
【００２４】
メモリ制御回路１０５は、パターンメモリ１０４ａ，１０４ｂからそれぞれ８バイトのデータを読み出す。セクションレングスＳＬが９バイト以上のときは、パターンメモリ１０４ａから読み出された８バイトのデータとパターンメモリ１０４ｂから読み出された８バイトのデータとによって１つのエントリ（１６バイト）が構成される。一方、セクションレングスＳＬが８バイト以下のときは、パターンメモリ１０４ａから読み出された８バイトのデータによって１つのエントリ（８バイト）が構成され、パターンメモリ１０４ｂから読み出された８バイトのデータによって別の１つのエントリ（８バイト）が構成される。
【００２５】
比較回路１０６は、比較器１０６ａ，１０６ｂとセレクタ１０６ｃ−１０６ｅとを含む。セレクタ１０６ｃは、セクションレングス判断回路１０３からのセクションレングスＳＬに応じて、セクションデータバッファ１０１ａから読み出されたデータまたはセクションデータバッファ１０１ｂから読み出されたデータを比較器１０６ｂに与える。セレクタ１０６ｄは、メモリ制御回路１０５からの制御信号に応じて、パターンメモリ１０４ａから読み出されたデータまたはパターンメモリ１０４ｂから読み出されたデータを比較器１０６ａに与える。比較器１０６ａは、セクションデータバッファ１０１ａから読み出されたデータとセレクタ１０６ｄから与えられるデータとが一致するときは“１”を、一致しないときは“０”をエントリ判断回路１０７に与える。セレクタ１０６ｅは、メモリ制御回路１０５からの制御信号に応じて、パターンメモリ１０４ａから読み出されたデータまたはパターンメモリ１０４ｂから読み出されたデータを比較器１０６ｂに与える。比較器１０６ｂは、セレクタ１０６ｃから与えられるデータとセレクタ１０６ｅから与えられるデータとが一致するときは“１”を、一致しないときは“０”をエントリ判断回路１０７に与える。
【００２６】
エントリ判断回路１０７は、セクションデータバッファ１０１ａ，１０１ｂから読み出されたセクションデータとパターンメモリ１０４ａ，１０４ｂから読み出されたエントリとが一致するか否かをセクションレングスＳＬに応じた方法で判断する。以下、具体的に説明する。セクションレングスＳＬが９バイト以上の場合、比較器１０６ａの出力と比較器１０６ｂの出力との論理積が“１”のときはセクションデータバッファ１０１ａ，１０１ｂから読み出されたセクションデータとパターンメモリ１０４ａ，１０４ｂから読み出されたエントリとが一致すると判断し、上記論理積が“０”のときは不一致と判断する。一方、セクションレングスＳＬが８バイト以下の場合は比較器１０６ａの出力および比較器１０６ｂの出力のそれぞれに基づいて判断する。比較器１０６ａの出力が“１”のときはセクションデータバッファ１０１ａから読み出されたセクションデータとパターンメモリ１０４ａから読み出されたエントリとは一致すると判断し、比較器１０６ａの出力が“０”のときは不一致と判断する。また、比較器１０６ｂの出力が“１”のときはセクションデータバッファ１０１ａから読み出されたセクションデータとパターンメモリ１０４ｂから読み出されたエントリとは一致すると判断し、比較器１０６ｂの出力が“０”のときは不一致と判断する。
【００２７】
セレクタ１０８は、メモリ制御回路１０５からのアドレスＡＤ［＊：０］の最下位ビットＡＤ［０］または“１”をメモリ制御回路１０５からの制御信号に応じて選択し、パターンメモリ１０４ｂに与えるアドレスの最下位ビットとして出力する。セレクタ３０７によって選択された最下位ビットをメモリ制御回路１０５からのアドレスＡＤ［＊：１］に結合したアドレスがパターンメモリ１０４ｂに与えられる。
【００２８】
次に、以上のように構成されたトランスポートストリーム処理装置の動作について説明する。
【００２９】
このトランスポートストリーム処理装置では、比較対象となる複数のエントリをパターンメモリ１０４ａ，１０４ｂにあらかじめ書き込んでおかなければならない。この書き込みはマイコンなどのホスト（図示せず）からのアクセスにより行われる。ホストから見たアドレスマップを図２に示す。図２に示すように、アドレス００ｈ〜０ｆｈにはエントリ０の０〜１５バイトが書き込まれる。アドレス１０ｈ〜１ｆｈにはエントリ１の０〜１５バイトが書き込まれる。以下同様に、アドレスｋ０ｈ〜ｋｆｈにはエントリｋの０〜１５バイトが書き込まれる。ホストから見たアドレスマップは図２に示したようになるけれども比較時の読み出しの都合により物理的にはこの順番どおりには並んでいない。物理的なアドレスマップは図３に示すようになる。図３を参照して、ここではエントリデータの１６バイトに対して１つのアドレスが与えられる。たとえば、エントリ０の１６バイトに対してアドレス００ｈが、エントリ１の１６バイトに対してアドレス０１ｈが与えられる。偶数アドレス（００ｈ，０２ｈ，・・・）では、エントリデータの０〜７バイトがパターンメモリ１０４ａに書き込まれ８〜１５バイトがパターンメモリ１０４ｂに書き込まれる。一方、奇数アドレス（０１ｈ，０３ｈ，・・・）では、エントリデータの８〜１５バイトがパターンメモリ１０４ａに書き込まれ０〜７バイトがパターンメモリ１０４ｂに書き込まれる。このように複数のエントリがパターンメモリ１０４ａ，１０４ｂにあらかじめ書き込まれる。
【００３０】
そしてセクションバッファ制御回路１０２によってセクションデータの先頭から１６バイトが取り出される。０〜７バイト目はセクションデータバッファ１０１ａに書き込まれ、８〜１５バイト目はセクションデータバッファ１０１ｂに書き込まれる。
【００３１】
セクションデータバッファ１０１ａ，１０１ｂにデータが書き込まれると、セクションレングス判断回路１０３によってセクションレングスＳＬが求められる。このセクションレングスＳＬが９バイト以上のときと８バイト以下のときとで比較回路１０６の内部動作が異なる。以下、セクションレングスＳＬが９バイト以上のときと８バイト以下のときとに分けて説明する。
【００３２】
（１）セクションレングスＳＬが９バイト以上のとき
メモリ制御回路１０５は、メモリ制御回路１０５からのアドレスＡＤ［＊：０］の最下位ビットＡＤ［０］を選択するようにセレクタ１０８を制御する。したがって、パターンメモリ１０４ａおよびパターンメモリ１０４ｂには同一のアドレスが与えられる。このアドレスに従ってパターンメモリ１０４ａ，１０４ｂからそれぞれ８バイトのデータが読み出される。
【００３３】
メモリ制御回路１０５からパターンメモリ１０４ａ，１０４ｂに与えられるアドレスが偶数のとき、メモリ制御回路１０５は、パターンメモリ１０４ａから読み出されたデータを選択して出力するようにセレクタ１０６ｄを制御し、パターンメモリ１０４ｂから読み出されたデータを選択して出力するようにセレクタ１０６ｅを制御する。一方、メモリ制御回路１０５からパターンメモリ１０４ａ，１０４ｂに与えられるアドレスが奇数のとき、メモリ制御回路１０５は、パターンメモリ１０４ｂから読み出されたデータを選択して出力するようにセレクタ１０６ｄを制御し、パターンメモリ１０４ａから読み出されたデータを選択して出力するようにセレクタ１０６ｅを制御する。
【００３４】
比較回路１０６の比較器１０６ａは、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとセレクタ１０６ｄによって選択された０〜７バイト目のエントリデータとを比較しその結果をエントリ判断回路１０７に出力する。セレクタ１０６ｃは、セクションデータバッファ１０１ｂから読み出された８〜１５バイト目のセクションデータを選択して比較器１０６ｂに与える。そして比較器１０６ｂは、セクションデータバッファ１０１ｂから読み出された８〜１５バイト目のセクションデータとセレクタ１０６ｅによって選択された８〜１５バイト目のエントリデータとを比較しその結果をエントリ判断回路１０７に出力する。
【００３５】
そしてエントリ判断回路１０７は、比較器１０６ａの出力と比較器１０６ｂの出力との論理積をとり一致したか否かを判断する。
【００３６】
以下、上述の比較動作をさらに詳しく説明する。
【００３７】
図４（ａ）に示すように、１クロック目にはアドレス００ｈがパターンメモリ１０４ａ，１０４ｂに与えられる。これに応答してエントリ０の０〜７バイト目のデータがパターンメモリ１０４ａから読み出されエントリ０の８〜１５バイト目がパターンメモリ１０４ｂから読み出される。パターンメモリ１０４ａから読み出されたエントリ０の０〜７バイト目のデータはセレクタ１０６ｄによって選択されて比較器１０６ａに与えられ、パターンメモリ１０４ｂから読み出されたエントリ０の８〜１５バイト目のデータはセレクタ１０６ｅによって選択されて比較器１０６ｂに与えられる。セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ０の０〜７バイト目のエントリデータとが比較器１０６ａによって比較され、セクションデータバッファ１０１ｂから読み出された８〜１５バイト目のセクションデータとエントリ０の８〜１５バイト目とが比較器１０６ｂによって比較される。そしてエントリ判断回路１０７によって、セクションデータバッファ１０１ａ，１０１ｂから読み出された０〜１５バイト目のセクションデータとエントリ０の０〜１５バイト目とが一致するか否かが判断される。一致すると判断されたときは比較処理を終了する。一致しないと判断されたときは引き続きエントリ１との比較処理を行う。
【００３８】
一致しないと判断されたときには、図４（ｂ）に示すように、２クロック目にアドレス０１ｈがパターンメモリ１０４ａ，１０４ｂに与えられる。これに応答してエントリ１の８〜１５バイト目のデータがパターンメモリ１０４ａから読み出されエントリ１の０〜７バイト目がパターンメモリ１０４ｂから読み出される。パターンメモリ１０４ｂから読み出されたエントリ１の０〜７バイト目のデータはセレクタ１０６ｄによって選択されて比較器１０６ａに与えられ、パターンメモリ１０４ａから読み出されたエントリ１の８〜１５バイト目のデータはセレクタ１０６ｅによって選択されて比較器１０６ｂに与えられる。セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ１の０〜７バイト目のエントリデータとが比較器１０６ａによって比較され、セクションデータバッファ１０１ｂから読み出された８〜１５バイト目のセクションデータとエントリ１の８〜１５バイト目とが比較器１０６ｂによって比較される。そしてエントリ判断回路１０７によって、セクションデータバッファ１０１ａ，１０１ｂから読み出された０〜１５バイト目のセクションデータとエントリ１の０〜１５バイト目とが一致するか否かが判断される。一致すると判断されたときは比較処理を終了する。一致しないと判断されたときは引き続きエントリ２との比較処理を行う。
【００３９】
これ以降、エントリ判断回路１０７によって一致すると判断されるかまたはすべてのエントリとの比較処理が終了するまで上述の処理と同様の処理が行われる。
【００４０】
以上のように、セクションレングスＳＬが９バイト以上のときは１クロックあたり１エントリの比較を実行する。
【００４１】
（２）セクションレングスＳＬが８バイト以下のとき
メモリ制御回路１０５は偶数アドレスのみ発生する。またメモリ制御回路１０５は、“１”を選択するようにセレクタ１０８を制御する。したがって、パターンメモリ１０４ａには偶数アドレスのみが与えられパターンメモリ１０４ｂには奇数アドレスのみが与えられる。このアドレスに従ってパターンメモリ１０４ａ，１０４ｂからそれぞれ８バイトのデータが読み出される。パターンメモリ１０４ａから読み出された８バイトのデータとパターンメモリ１０４ｂから読み出された８バイトのデータとはそれぞれ異なったエントリの０〜７バイト目のデータとなる。またメモリ制御回路１０５は、パターンメモリ１０４ａから読み出されたデータを選択して出力するようにセレクタ１０６ｄを制御し、パターンメモリ１０４ｂから読み出されたデータを選択して出力するようにセレクタ１０６ｅを制御する。
【００４２】
比較回路１０６の比較器１０６ａは、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとパターンメモリ１０４ａから読み出された０〜７バイト目のエントリデータとを比較しその結果をエントリ判断回路１０７に出力する。セレクタ１０６ｃは、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータを選択して比較器１０６ｂに与える。そして比較器１０６ｂは、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとパターンメモリ１０４ｂから読み出された０〜７バイト目のエントリデータとを比較しその結果をエントリ判断回路１０７に出力する。
【００４３】
エントリ判断回路１０７は、比較器１０６ａによる比較結果および比較器１０６ｂによる比較結果をそれぞれのエントリに対する比較結果と判断する。
【００４４】
以下、上述の比較動作をさらに詳しく説明する。
【００４５】
図５（ａ）に示すように、１クロック目にはアドレス００ｈがパターンメモリ１０４ａに与えられアドレス０１ｈがパターンメモリ１０４ｂに与えられる。これに応答してエントリ０の０〜７バイト目がパターンメモリ１０４ａから読み出されエントリ１の０〜７バイト目がパターンメモリ１０４ｂから読み出される。パターンメモリ１０４ａから読み出されたエントリ０の０〜７バイト目のデータはセレクタ１０６ｄによって選択されて比較器１０６ａに与えられ、パターンメモリ１０４ｂから読み出されたエントリ１の０〜７バイト目のデータはセレクタ１０６ｅによって選択されて比較器１０６ｂに与えられる。セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ０の０〜７バイト目のエントリデータとが比較器１０６ａによって比較され、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ１の０〜７バイト目とが比較器１０６ｂによって比較される。比較器１０６ａおよび１０６ｂの比較結果のうち少なくとも１つが一致を示しているときは比較処理を終了する。比較器１０６ａおよび１０６ｂの比較結果がともに不一致を示すときは引き続きエントリ２およびエントリ３との比較処理を行う。
【００４６】
比較器１０６ａおよび１０６ｂの比較結果がともに不一致を示すときには、図５（ｂ）に示すように、２クロック目にアドレス０２ｈがパターンメモリ１０４ａに与えられアドレス０３ｈがパターンメモリ１０４ｂに与えられる。これに応答してエントリ２の０〜７バイト目がパターンメモリ１０４ａから読み出されエントリ３の０〜７バイト目がパターンメモリ１０４ｂから読み出される。パターンメモリ１０４ａから読み出されたエントリ２の０〜７バイト目のデータはセレクタ１０６ｄによって選択されて比較器１０６ａに与えられ、パターンメモリ１０４ｂから読み出されたエントリ３の０〜７バイト目のデータはセレクタ１０６ｅによって選択されて比較器１０６ｂに与えられる。セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ２の０〜７バイト目のエントリデータとが比較器１０６ａによって比較され、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ３の０〜７バイト目とが比較器１０６ｂによって比較される。比較器１０６ａおよび１０６ｂの比較結果のうち少なくとも１つが一致を示しているときは比較処理を終了する。比較器１０６ａおよび１０６ｂの比較結果がともに不一致を示すときは引き続きエントリ４およびエントリ５との比較処理を行う。
【００４７】
これ以降、比較器１０６ａおよび１０６ｂの比較結果のうち少なくとも１つが一致を示すかまたはすべてのエントリとの比較処理が終了するまで上述の処理と同様の処理が行われる。
【００４８】
このように、セクションレングスＳＬが８バイト以下のときは１クロックあたり２つエントリとの比較を実行する。
【００４９】
以上のように第１の実施形態によるトランスポートストリーム処理装置では、セクションデータのうちの比較すべきビットをセクションデータバッファ１０１ａ，１０１ｂに蓄積し、複数のエントリの各々との比較をビット単位ではなくエントリ単位で行う。したがって、あるエントリと一致した時点で比較処理を終了することができる。これにより残りのエントリについては比較処理を行う必要がなくなるため、比較処理に要する時間を従来よりも短くすることができる。
【００５０】
また、エントリ単位で比較を行うため、比較結果を保持する手段を設ける必要がない。これにより回路面積を従来よりも小さくすることができる。
【００５１】
通常、１つのトランスポートパケット内に含まれるセクションデータの数はセクションレングスが短いときのほうが長いときよりも多くなる。すなわち、セクションレングスが短いほど、比較すべきセクションデータの数は多くなり、比較処理に要する時間が長くなる。しかし第１の実施形態によるトランスポートストリーム処理装置では、セクションレングスＳＬが８バイト以下のときは同時に２つのエントリと比較するため、セクションレングスＳＬが８バイト以下のときにおける比較処理に要する時間と９バイト以上のときにおける比較処理に要する時間との差を小さくすることができる。
【００５２】
（第２の実施形態）
図６は、この発明の第２の実施形態によるトランスポートストリーム処理装置の主要部の構成を示すブロック図である。図６に示すトランスポートストリーム処理装置は、図１に示したトランスポートストリーム処理装置に加えてさらにインバータ２０１を備える。その他の構成は、図１に示したトランスポートストリーム処理装置と同様である。インバータ２０１は、メモリ制御回路１０５からのアドレスＡＤ［＊：０］の最下位ビットＡＤ［０］を反転する。セレクタ１０８は、メモリ制御回路１０５からのアドレスＡＤ［＊：０］の最下位ビットＡＤ［０］またはインバータ２０１の出力／ＡＤ［０］をメモリ制御回路１０５からの制御信号に応じて選択し、パターンメモリ１０４ｂに与えるアドレスの最下位ビットとして出力する。セレクタ１０８によって選択された最下位ビットＡＤ［０］をメモリ制御回路１０５からのアドレスＡＤ［＊：１］に結合したアドレスがパターンメモリ１０４ｂに与えられる。
【００５３】
第１の実施形態と同様にこのトランスポートストリーム処理装置においても比較対象となる複数のエントリをパターンメモリ１０４ａ，１０４ｂにあらかじめ書き込んでおかなければならない。この書き込みはマイコンなどのホスト（図示せず）からのアクセスにより行われる。ホストから見たアドレスマップは図２に示したものと同様である。物理的なアドレスマップは図７に示すようになる。図７を参照して、偶数アドレス（００ｈ，０２ｈ，・・・）では、エントリｋ（ｋは偶数）の０〜７バイトがパターンメモリ１０４ａに書き込まれエントリ（ｋ＋１）の０〜７バイトがパターンメモリ１０４ｂに書き込まれる。一方、奇数アドレス（０１ｈ，０３ｈ，・・・）では、エントリ（ｋ＋１）の８〜１５バイトがパターンメモリ１０４ａに書き込まれエントリｋの８〜１５バイトがパターンメモリ１０４ｂに書き込まれる。
【００５４】
次に、以上のように構成されたトランスポートストリーム処理装置の動作について説明する。
【００５５】
セクションバッファ制御回路１０２によってセクションデータの先頭から１６バイトが取り出される。０〜７バイト目はセクションデータバッファ１０１ａに書き込まれ、８〜１５バイト目はセクションデータバッファ１０１ｂに書き込まれる。セクションデータバッファ１０１ａ，１０１ｂにデータが書き込まれると、セクションレングス判断回路１０３によってセクションレングスＳＬが求められる。このセクションレングスＳＬが９バイト以上のときと８バイト以下のときとで比較回路１０６の内部動作が異なる。以下、セクションレングスＳＬが９バイト以上のときと８バイト以下のときとに分けて説明する。
【００５６】
（１）セクションレングスＳＬが９バイト以上のとき
メモリ制御回路１０５は、インバータ２０１の出力／Ａ［０］を選択するようにセレクタ１０８を制御する。したがってパターンメモリ１０４ｂに与えられるアドレスは、パターンメモリ１０４ａに与えられるアドレスの最下位ビットを反転したものになる。これらのアドレスに従ってパターンメモリ１０４ａ，１０４ｂからそれぞれ８バイトのデータが読み出される。
【００５７】
メモリ制御回路１０５からパターンメモリ１０４ａに与えられるアドレスが偶数のとき、メモリ制御回路１０５は、パターンメモリ１０４ａから読み出されたデータを選択して出力するようにセレクタ１０６ｄを制御し、パターンメモリ１０４ｂから読み出されたデータを選択して出力するようにセレクタ１０６ｅを制御する。一方、メモリ制御回路１０５からパターンメモリ１０４ａに与えられるアドレスが奇数のとき、メモリ制御回路１０５は、パターンメモリ１０４ｂから読み出されたデータを選択して出力するようにセレクタ１０６ｄを制御し、パターンメモリ１０４ａから読み出されたデータを選択して出力するようにセレクタ１０６ｅを制御する。
【００５８】
比較回路１０６の比較器１０６ａは、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとセレクタ１０６ｄによって選択された０〜７バイト目のエントリデータとを比較しその結果をエントリ判断回路１０７に出力する。セレクタ１０６ｃは、セクションデータバッファ１０１ｂから読み出された８〜１５バイト目のセクションデータを選択して比較器１０６ｂに与える。そして比較器１０６ｂは、セクションデータバッファ１０１ｂから読み出された８〜１５バイト目のセクションデータとセレクタ１０６ｅによって選択された８〜１５バイト目のエントリデータとを比較しその結果をエントリ判断回路１０７に出力する。
【００５９】
そしてエントリ判断回路１０７は、比較器１０６ａの出力と比較器１０６ｂの出力との論理積をとり一致したか否かを判断する。
【００６０】
以下、上述の比較動作を詳しく説明する。
【００６１】
図８（ａ）に示すように、１クロック目にはアドレス００ｈがパターンメモリ１０４ａに与えられアドレス０１ｈがパターンメモリ１０４ｂに与えられる。これに応答してエントリ０の０〜７バイト目のデータがパターンメモリ１０４ａから読み出されエントリ０の８〜１５バイト目がパターンメモリ１０４ｂから読み出される。パターンメモリ１０４ａから読み出されたエントリ０の０〜７バイト目のデータはセレクタ１０６ｄによって選択されて比較器１０６ａに与えられ、パターンメモリ１０４ｂから読み出されたエントリ０の８〜１５バイト目のデータはセレクタ１０６ｅによって選択されて比較器１０６ｂに与えられる。セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ０の０〜７バイト目のエントリデータとが比較器１０６ａによって比較され、セクションデータバッファ１０１ｂから読み出された８〜１５バイト目のセクションデータとエントリ０の８〜１５バイト目とが比較器１０６ｂによって比較される。そしてエントリ判断回路１０７によって、セクションデータバッファ１０１ａ，１０１ｂから読み出された０〜１５バイト目のセクションデータとエントリ０の０〜１５バイト目とが一致するか否かが判断される。一致すると判断されたときは比較処理を終了する。一致しないと判断されたときは引き続きエントリ１との比較処理を行う。
【００６２】
一致しないと判断されたときには、図８（ｂ）に示すように、２クロック目にアドレス０１ｈがパターンメモリ１０４ａに与えられアドレス００ｈがパターンメモリ１０４ｂに与えられる。これに応答してエントリ１の８〜１５バイト目のデータがパターンメモリ１０４ａから読み出されエントリ１の０〜７バイト目がパターンメモリ１０４ｂから読み出される。パターンメモリ１０４ｂから読み出されたエントリ１の０〜７バイト目のデータはセレクタ１０６ｄによって選択されて比較器１０６ａに与えられ、パターンメモリ１０４ａから読み出されたエントリ１の８〜１５バイト目のデータはセレクタ１０６ｅによって選択されて比較器１０６ｂに与えられる。セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ１の０〜７バイト目のエントリデータとが比較器１０６ａによって比較され、セクションデータバッファ１０１ｂから読み出された８〜１５バイト目のセクションデータとエントリ１の８〜１５バイト目とが比較器１０６ｂによって比較される。そしてエントリ判断回路１０７によって、セクションデータバッファ１０１ａおよび１０１ｂから読み出された０〜１５バイト目のセクションデータとエントリ１の０〜１５バイト目とが一致するか否かが判断される。一致すると判断されたときは比較処理を終了する。一致しないと判断されたときは引き続きエントリ２との比較処理を行う。
【００６３】
以下、エントリ判断回路１０７によって一致すると判断されるかまたはすべてのエントリとの比較処理が終了するまで上述の処理と同様の処理が行われる。
【００６４】
以上のように、セクションレングスＳＬが９バイト以上のときは１クロックあたり１エントリの比較を実行する。
【００６５】
（２）セクションレングスＳＬが８バイト以下のとき
メモリ制御回路１０５は偶数アドレスのみ発生する。またメモリ制御回路１０５は、メモリ制御回路１０５からのアドレスＡＤ［＊：０］の最下位ビットＡＤ［０］を選択するようにセレクタ１０８を制御する。したがって、パターンメモリ１０４ａおよびパターンメモリ１０４ｂには同一のアドレスが与えられる。このアドレスに従ってパターンメモリ１０４ａおよび１０４ｂからそれぞれ８バイトのデータが読み出される。したがって、パターンメモリ１０４ａから読み出された８バイトのデータとパターンメモリ１０４ｂから読み出された８バイトのデータとはそれぞれ異なったエントリの０〜７バイト目のデータとなる。またメモリ制御回路１０５は、パターンメモリ１０４ａから読み出されたデータを選択して出力するようにセレクタ１０６ｄを制御し、パターンメモリ１０４ｂから読み出されたデータを選択して出力するようにセレクタ１０６ｅを制御する。
【００６６】
比較回路１０６の比較器１０６ａは、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとパターンメモリ１０４ａから読み出された０〜７バイト目のエントリデータとを比較しその結果をエントリ判断回路１０７に出力する。セレクタ１０６ｃは、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータを選択して比較器１０６ｂに与える。そして比較器１０６ｂは、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとパターンメモリ１０４ｂから読み出された０〜７バイト目のエントリデータとを比較しその結果をエントリ判断回路１０７に出力する。
【００６７】
エントリ判断回路１０７は、比較器１０６ａによる比較結果および比較器１０６ｂによる比較結果をそれぞれのエントリに対する結果と判断する。
【００６８】
以下、上述の比較動作を詳しく説明する。
【００６９】
図９（ａ）に示すように、１クロック目にはアドレス００ｈがパターンメモリ１０４ａ，１０４ｂに与えられる。これに応答してエントリ０の０〜７バイト目がパターンメモリ１０４ａから読み出されエントリ１の０〜７バイト目がパターンメモリ１０４ｂから読み出される。パターンメモリ１０４ａから読み出されたエントリ０の０〜７バイト目のデータはセレクタ１０６ｄによって選択されて比較器１０６ａに与えられ、パターンメモリ１０４ｂから読み出されたエントリ１の０〜７バイト目のデータはセレクタ１０６ｅによって選択されて比較器１０６ｂに与えられる。セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ０の０〜７バイト目のエントリデータとが比較器１０６ａによって比較され、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ１の０〜７バイト目とが比較器１０６ｂによって比較される。比較器１０６ａおよび１０６ｂの比較結果のうち少なくとも１つが一致を示しているときは比較処理を終了する。比較器１０６ａおよび１０６ｂの比較結果がともに不一致を示すときは引き続きエントリ２およびエントリ３との比較処理を行う。
【００７０】
比較器１０６ａおよび１０６ｂの比較結果がともに不一致を示すときには、図９（ｂ）に示すように、２クロック目にアドレス０２ｈがパターンメモリ１０４ａ，１０４ｂに与えられる。これに応答してエントリ２の０〜７バイト目がパターンメモリ１０４ａから読み出されエントリ３の０〜７バイト目がパターンメモリ１０４ｂから読み出される。パターンメモリ１０４ａから読み出されたエントリ２の０〜７バイト目のデータはセレクタ１０６ｄによって選択されて比較器１０６ａに与えられ、パターンメモリ１０４ｂから読み出されたエントリ３の０〜７バイト目のデータはセレクタ１０６ｅによって選択されて比較器１０６ｂに与えられる。セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ２の０〜７バイト目のエントリデータとが比較器１０６ａによって比較され、セクションデータバッファ１０１ａから読み出された０〜７バイト目のセクションデータとエントリ３の０〜７バイト目とが比較器１０６ｂによって比較される。比較器１０６ａおよび１０６ｂの比較結果のうち少なくとも１つが一致を示しているときは比較処理を終了する。比較器１０６ａおよび１０６ｂの比較結果がともに不一致を示すときは引き続きエントリ４およびエントリ５との比較処理を行う。
【００７１】
これ以降、比較器１０６ａおよび１０６ｂの比較結果のうち少なくとも１つが一致を示すかまたはすべてのエントリとの比較処理が終了するまで上述の処理と同様の処理が行われる。
【００７２】
このように、セクションレングスＳＬが８バイト以下のときは１クロックあたり２つエントリとの比較を実行する。
【００７３】
以上のように第２の実施形態によるトランスポートストリーム処理装置においても第１の実施形態において説明したのと同様の効果が得られる。
【００７４】
（第３の実施形態）
図１０は、この発明の第３の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。図１０に示すトランスポートストリーム処理装置は、ＰＩＤフィルタ１００と、セクションバッファ制御回路３０２と、セクションデータバッファ３０１ａ−３０１ｄと、セクションレングス判断回路１０３と、メモリ制御回路３０５と、パターンメモリ３０４ａ−３０４ｄと、比較回路３０６と、エントリ判断回路３０７とを備える。
【００７５】
ＰＩＤフィルタ１００は、トランスポートストリームから所定のトランスポートパケットを抜き出し、当該トランスポートパケットのセクションデータをセクションバッファ制御回路３０２に与える。
【００７６】
セクションバッファ制御回路３０２は、ＰＩＤフィルタ１００からのセクションデータの先頭から１６バイト（０〜１５バイト目）を取り出す。そして、取り出したセクションデータの０〜３バイト目までをセクションデータバッファ３０１ａに、４〜７バイト目までをセクションデータバッファ３０１ｂに、８〜１１バイト目までをセクションデータバッファ３０１ｃに、１２〜１５バイト目までをセクションデータバッファ３０１ｄに書き込む。
【００７７】
セクションレングス判断回路１０３は、セクションデータバッファ３０１ａに格納されたセクションデータの先頭から２バイト目の下位４ビットと３バイト目８ビットとの合計１２ビットに基づいてセクションレングスＳＬを求める。
【００７８】
パターンメモリ３０４ａ−３０４ｄには複数のエントリが格納されている。
【００７９】
メモリ制御回路３０５は、パターンメモリ３０４ａ−３０４ｄからそれぞれ４バイトのデータを読み出す。セクションレングスＳＬが９バイト以上のときは、パターンメモリ３０４ａから読み出された４バイトのデータとパターンメモリ３０４ｂから読み出された４バイトのデータとパターンメモリ３０４ｃから読み出された４バイトのデータとパターンメモリ３０４ｄから読み出された４バイトのデータとによって１つのエントリ（１６バイト）が構成される。セクションレングスＳＬが５バイト以上で８バイト以下のときは、パターンメモリ３０４ａから読み出された４バイトのデータとパターンメモリ３０４ｂから読み出された４バイトのデータとによって１つのエントリ（８バイト）が構成され、パターンメモリ３０４ｃから読み出された４バイトのデータとパターンメモリ３０４ｄから読み出された４バイトのデータとによって別の１つのエントリ（８バイト）が構成される。セクションレングスＳＬが４バイト以下のときは、パターンメモリ３０４ａから読み出された４バイトのデータによって１つのエントリ（４バイト）が構成され、パターンメモリ３０４ｂから読み出された４バイトのデータによって別の１つのエントリ（４バイト）が構成され、パターンメモリ３０４ｃから読み出された４バイトのデータによってさらに別の１つのエントリ（４バイト）が構成され、パターンメモリ３０４ｄから読み出された４バイトのデータによってさらに別の１つのエントリ（４バイト）が構成される。
【００８０】
比較回路３０６は、比較器３０６ａ−３０６ｄとセレクタ３０６ｅ，３０６ｆとを含む。セレクタ３０６ｅは、セクションレングスＳＬが９バイト以上のとき、セクションデータバッファ３０１ａから読み出されたデータを比較器３０６ａに、セクションデータバッファ３０１ｂから読み出されたデータを比較器３０６ｂに、セクションデータバッファ３０１ｃから読み出されたデータを比較器３０６ｃに、セクションデータバッファ３０１ｄから読み出されたデータを比較器３０６ｄに与える。セクションレングスＳＬが５バイト以上で８バイト以下のとき、セレクタ３０６ｅは、セクションデータバッファ３０１ａから読み出されたデータを比較器３０６ａおよび３０６ｃに与え、セクションデータバッファ３０１ｂから読み出されたデータを比較器３０６ｂおよび３０６ｄに与える。セクションレングスＳＬが４バイト以下のとき、セレクタ３０６ｅは、セクションデータバッファ３０１ａから読み出されたデータを比較器３０６ａ−３０６ｄに与える。セレクタ３０６ｆは、メモリ制御回路１０５からの制御信号に応じて、パターンメモリ３０４ａ−３０４ｄから読み出されたデータを比較器３０６ａ−３０６ｄに与える。比較器３０６ａ−３０６ｄは、セレクタ３０６ｅから与えられるデータとセレクタ３０６ｆから与えられるデータとが一致するときは“１”を、一致しないときは“０”をエントリ判断回路３０７に与える。
【００８１】
エントリ判断回路３０７は、セクションデータバッファ３０１ａ−３０１ｄから読み出されたセクションデータとパターンメモリ３０４ａ−３０４ｄから読み出されたエントリとが一致するか否かをセクションレングスＳＬに応じた方法で判断する。以下、具体的に説明する。セクションレングスＳＬが９バイト以上の場合、比較器３０６ａの出力と比較器３０６ｂの出力と比較器３０６ｃの出力と比較器３０６ｄの出力との論理積が“１”のときはセクションデータバッファ３０１ａ−３０１ｄから読み出されたセクションデータとパターンメモリ３０４ａ−３０４ｄから読み出されたエントリとが一致すると判断し、上記論理積が“０”のときは不一致と判断する。セクションレングスＳＬが５バイト以上で８バイト以下の場合は比較器３０６ａ，３０６ｂの出力および比較器３０６ｃ，３０６ｄの出力のそれぞれに基づいて判断する。比較器３０６ａの出力と比較器３０６ｂの出力との論理積が“１”のときはセクションデータバッファ３０１ａ，３０１ｂから読み出されたセクションデータとパターンメモリ３０４ａ，３０４ｂから読み出されたエントリとは一致すると判断し、上記論理積が“０”のときは不一致と判断する。また、比較器３０６ｃの出力と比較器３０６ｄの出力との論理積が“１”のときはセクションデータバッファ３０１ａ，３０１ｂから読み出されたセクションデータとパターンメモリ３０４ｃ，３０４ｄから読み出されたエントリとは一致すると判断し、上記論理積が“０”のときは不一致と判断する。セクションレングスＳＬが４バイト以下の場合は比較器３０６ａ−３０６ｄの出力のそれぞれに基づいて判断する。比較器３０６ａの出力が“１”のときはセクションデータバッファ３０１ａから読み出されたセクションデータとパターンメモリ３０４ａから読み出されたエントリとは一致すると判断し、比較器３０６ａの出力が“０”のときは不一致と判断する。また、比較器３０６ｂの出力が“１”のときはセクションデータバッファ３０１ａから読み出されたセクションデータとパターンメモリ３０４ｂから読み出されたエントリとは一致すると判断し、比較器３０６ｂの出力が“０”のときは不一致と判断する。また、比較器３０６ｃの出力が“１”のときはセクションデータバッファ３０１ａから読み出されたセクションデータとパターンメモリ３０４ｃから読み出されたエントリとは一致すると判断し、比較器３０６ｃの出力が“０”のときは不一致と判断する。また、比較器３０６ｄの出力が“１”のときはセクションデータバッファ３０１ａから読み出されたセクションデータとパターンメモリ３０４ｄから読み出されたエントリとは一致すると判断し、比較器３０６ｄの出力が“０”のときは不一致と判断する。
【００８２】
次に、以上のように構成されたトランスポートストリーム処理装置の動作について説明する。
【００８３】
このトランスポートストリーム処理装置では、比較対象となる複数のエントリをパターンメモリ３０４ａ−３０４ｄにあらかじめ書き込んでおかなければならない。この書き込みはマイコンなどのホスト（図示せず）からのアクセスにより行われる。物理的なアドレスマップは図１１に示すようになる。図１１を参照して、ここではエントリデータの１６バイトに対して１つのアドレスが与えられる。エントリ０−エントリ３の０〜３バイト目の合計１６バイトに対してアドレス００ｈが与えられる。エントリ０−エントリ３の０〜３バイト目はそれぞれパターンメモリ３０４ａ，３０４ｃ，３０４ｂ，３０４ｄに格納される。エントリ０−エントリ３の４〜７バイト目の合計１６バイトに対してアドレス０１ｈが与えられる。エントリ０−エントリ３の４〜７バイト目はそれぞれパターンメモリ３０４ｂ，３０４ｄ，３０４ａ，３０４ｃに格納される。エントリ０−エントリ３の８〜１１バイト目の合計１６バイトに対してアドレス０２ｈが与えられる。エントリ０−エントリ３の８〜１１バイト目はそれぞれパターンメモリ３０４ｃ，３０４ａ，３０４ｄ，３０４ｂに格納される。エントリ０−エントリ３の１２〜１５バイト目の合計１６バイトに対してアドレス０３ｈが与えられる。エントリ０−エントリ３の１２〜１５バイト目はそれぞれパターンメモリ３０４ｄ，３０４ｂ，３０４ｃ，３０４ａに格納される。このように複数のエントリがパターンメモリ３０４ａ−３０４ｄにあらかじめ書き込まれる。
【００８４】
そしてセクションバッファ制御回路３０２によってセクションデータの先頭から１６バイトが取り出される。０〜３バイト目はセクションデータバッファ３０１ａに書き込まれ、４〜７バイト目はセクションデータバッファ３０１ｂに書き込まれ、８〜１１バイト目はセクションデータバッファ３０１ｃに書き込まれ、１２〜１５バイト目はセクションデータバッファ３０１ｄに書き込まれる。
【００８５】
セクションデータバッファ３０１ａ−３０１ｄにデータが書き込まれると、セクションレングス判断回路１０３によってセクションレングスＳＬが求められる。このセクションレングスＳＬに応じて比較回路１０６の内部動作が異なる。以下、（１）セクションレングスＳＬが９バイト以上のとき、（２）５バイト以上８バイト以下のとき、（３）４バイト以下のときに分けて説明する。
【００８６】
（１）セクションレングスＳＬが９バイト以上のとき
図１２（ａ）に示すように、１クロック目にはアドレス００ｈがパターンメモリ３０４ａに、アドレス０１ｈがパターンメモリ３０４ｂに、アドレス０２ｈがパターンメモリ３０４ｃに、アドレス０３ｈがパターンメモリ３０４ｄにそれぞれ与えられる。これに応答してエントリ０の０〜３バイト目のデータがパターンメモリ３０４ａから、エントリ０の４〜７バイト目がパターンメモリ３０４ｂから、エントリ０の８〜１１バイト目がパターンメモリ３０４ｃから、エントリ０の１２〜１５バイト目のデータがパターンメモリ３０４ｄからそれぞれ読み出される。セレクタ３０６ｆは、パターンメモリ３０４ａから読み出されたエントリ０の０〜３バイト目のデータを比較器３０６ａに、パターンメモリ３０４ｂから読み出されたエントリ０の４〜７バイト目のデータを比較器３０６ｂに、パターンメモリ３０４ｃから読み出されたエントリ０の８〜１１バイト目のデータを比較器３０６ｃに、パターンメモリ３０４ｄから読み出されたエントリ０の１２〜１５バイト目のデータを比較器３０６ｄに与える。セレクタ３０６ｅは、セクションデータバッファ３０１ａからの０〜３バイト目のセクションデータを比較器３０６ａに、セクションデータバッファ３０１ｂからの４〜７バイト目のセクションデータを比較器３０６ｂに、セクションデータバッファ３０１ｃからの８〜１１バイト目のセクションデータを比較器３０６ｃに、セクションデータバッファ３０１ｄからの１２〜１５バイト目のセクションデータを比較器３０６ｄにそれぞれ与える。セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ０の０〜３バイト目のエントリデータとが比較器３０６ａによって比較され、セクションデータバッファ３０１ｂから読み出された４〜７バイト目のセクションデータとエントリ０の４〜７バイト目とが比較器３０６ｂによって比較され、セクションデータバッファ３０１ｃから読み出された８〜１１バイト目のセクションデータとエントリ０の８〜１１バイト目のエントリデータとが比較器３０６ｃによって比較され、セクションデータバッファ３０１ｄから読み出された１２〜１５バイト目のセクションデータとエントリ０の１２〜１５バイト目とが比較器３０６ｄによって比較される。そしてエントリ判断回路３０７によって、セクションデータバッファ３０１ａ−３０１ｄから読み出された０〜１５バイト目のセクションデータとエントリ０の０〜１５バイト目とが一致するか否かが判断される。一致すると判断されたときは比較処理を終了する。一致しないと判断されたときは引き続きエントリ１との比較処理を行う。
【００８７】
一致しないと判断されたときには、図１２（ｂ）に示すように、２クロック目にアドレス０２ｈがパターンメモリ３０４ａに、アドレス０３ｈがパターンメモリ３０４ｂに、アドレス００ｈがパターンメモリ３０４ｃに、アドレス０１ｈがパターンメモリ３０４ｄにそれぞれ与えられる。これに応答してエントリ１の８〜１１バイト目のデータがパターンメモリ３０４ａから、エントリ１の１２〜１５バイト目がパターンメモリ３０４ｂから、エントリ１の０〜３バイト目がパターンメモリ３０４ｃから、エントリ１の４〜７バイト目のデータがパターンメモリ３０４ｄからそれぞれ読み出される。セレクタ３０６ｆは、パターンメモリ３０４ａから読み出されたエントリ１の８〜１１バイト目のデータを比較器３０６ｃに、パターンメモリ３０４ｂから読み出されたエントリ１の１２〜１５バイト目のデータを比較器３０６ｄに、パターンメモリ３０４ｃから読み出されたエントリ１の０〜３バイト目のデータを比較器３０６ａに、パターンメモリ３０４ｄから読み出されたエントリ１の４〜７バイト目のデータを比較器３０６ｂに与える。セレクタ３０６ｅは、セクションデータバッファ３０１ａからの０〜３バイト目のセクションデータを比較器３０６ａに、セクションデータバッファ３０１ｂからの４〜７バイト目のセクションデータを比較器３０６ｂに、セクションデータバッファ３０１ｃからの８〜１１バイト目のセクションデータを比較器３０６ｃに、セクションデータバッファ３０１ｄからの１２〜１５バイト目のセクションデータを比較器３０６ｄにそれぞれ与える。セクションデータバッファ１０１ａから読み出された０〜３バイト目のセクションデータとエントリ１の０〜３バイト目のエントリデータとが比較器３０６ａによって比較され、セクションデータバッファ３０１ｂから読み出された４〜７バイト目のセクションデータとエントリ１の４〜７バイト目とが比較器３０６ｂによって比較され、セクションデータバッファ３０１ｃから読み出された８〜１１バイト目のセクションデータとエントリ１の８〜１１バイト目のエントリデータとが比較器３０６ｃによって比較され、セクションデータバッファ３０１ｄから読み出された１２〜１５バイト目のセクションデータとエントリ１の１２〜１５バイト目とが比較器３０６ｄによって比較される。そしてエントリ判断回路３０７によって、セクションデータバッファ３０１ａ−３０１ｄから読み出された０〜１５バイト目のセクションデータとエントリ１の０〜１５バイト目とが一致するか否かが判断される。一致すると判断されたときは比較処理を終了する。一致しないと判断されたときは引き続きエントリ２との比較処理を行う。
【００８８】
これ以降、エントリ判断回路３０７によって一致すると判断されるかまたはすべてのエントリとの比較処理が終了するまで上述の処理と同様の処理が行われる。
【００８９】
以上のように、セクションレングスＳＬが９バイト以上のときは１クロックあたり１エントリの比較を実行する。
【００９０】
（２）セクションレングスＳＬが５バイト以上８バイト以下のとき
図１３（ａ）に示すように、１クロック目にはアドレス００ｈがパターンメモリ３０４ａ，３０４ｃに与えられアドレス０１ｈがパターンメモリ３０４ｂ，３０４ｄに与えられる。これに応答してエントリ０の０〜３バイト目がパターンメモリ３０４ａから、エントリ０の４〜７バイト目がパターンメモリ３０４ｂから、エントリ１の０〜３バイト目がパターンメモリ３０４ｃから、エントリ１の４〜７バイト目がパターンメモリ３０４ｄからそれぞれ読み出される。セレクタ３０６ｆは、パターンメモリ３０４ａから読み出されたエントリ０の０〜３バイト目のデータを比較器３０６ａに、パターンメモリ３０４ｂから読み出されたエントリ０の４〜７バイト目のデータを比較器３０４ｂに、パターンメモリ３０４ｃから読み出されたエントリ１の０〜３バイト目のデータを比較器３０４ｃに、パターンメモリ３０４ｄから読み出されたエントリ１の４〜７バイト目のデータを比較器３０４ｄにそれぞれ与える。セレクタ３０６ｅは、セクションデータバッファ３０１ａからの０〜３バイト目のセクションデータを比較器３０６ａおよび３０６ｃに、セクションデータバッファ３０１ｂからの４〜７バイト目のセクションデータを比較器３０６ｂおよび３０６ｄにそれぞれ与える。セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ０の０〜３バイト目のエントリデータとが比較器３０６ａによって比較され、セクションデータバッファ３０１ｂから読み出された４〜７バイト目のセクションデータとエントリ０の４〜７バイト目とが比較器３０６ｂによって比較される。セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ１の０〜３バイト目のエントリデータとが比較器３０６ｃによって比較され、セクションデータバッファ３０１ｂから読み出された４〜７バイト目のセクションデータとエントリ１の４〜７バイト目とが比較器３０６ｄによって比較される。比較器３０６ａの出力と比較器３０６ｂの出力との論理積および比較器３０６ｃの出力と比較器３０６ｄの出力との論理積のうち少なくとも１つが“１”であるときは比較処理を終了する。比較器３０６ａの出力と比較器３０６ｂの出力との論理積および比較器３０６ｃの出力と比較器３０６ｄの出力との論理積がともに“０”であるときは引き続きエントリ２およびエントリ３との比較処理を行う。
【００９１】
比較器３０６ａの出力と比較器３０６ｂの出力との論理積および比較器３０６ｃの出力と比較器３０６ｄの出力との論理積がともに“０”であるときには、図１３（ｂ）に示すように、２クロック目にアドレス０１ｈがパターンメモリ３０４ａ，３０４ｃに与えられアドレス００ｈがパターンメモリ３０４ｂ，３０４ｄに与えられる。これに応答してエントリ２の４〜７バイト目がパターンメモリ３０４ａから、エントリ２の０〜３バイト目がパターンメモリ３０４ｂから、エントリ３の４〜７バイト目がパターンメモリ３０４ｃから、エントリ３の０〜３バイト目がパターンメモリ３０４ｄからそれぞれ読み出される。セレクタ３０６ｆは、パターンメモリ３０４ａから読み出されたエントリ２の４〜７バイト目のデータを比較器３０６ｂに、パターンメモリ３０４ｂから読み出されたエントリ２の０〜３バイト目のデータを比較器３０４ａに、パターンメモリ３０４ｃから読み出されたエントリ３の４〜７バイト目のデータを比較器３０４ｄに、パターンメモリ３０４ｄから読み出されたエントリ３の０〜３バイト目のデータを比較器３０４ｃにそれぞれ与える。セレクタ３０６ｅは、セクションデータバッファ３０１ａからの０〜３バイト目のセクションデータを比較器３０６ａおよび３０６ｃに、セクションデータバッファ３０１ｂからの４〜７バイト目のセクションデータを比較器３０６ｂおよび３０６ｄにそれぞれ与える。セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ２の０〜３バイト目のエントリデータとが比較器３０６ａによって比較され、セクションデータバッファ３０１ｂから読み出された４〜７バイト目のセクションデータとエントリ２の４〜７バイト目とが比較器３０６ｂによって比較される。セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ３の０〜３バイト目のエントリデータとが比較器３０６ｃによって比較され、セクションデータバッファ３０１ｂから読み出された４〜７バイト目のセクションデータとエントリ３の４〜７バイト目とが比較器３０６ｄによって比較される。比較器３０６ａの出力と比較器３０６ｂの出力との論理積および比較器３０６ｃの出力と比較器３０６ｄの出力との論理積のうち少なくとも１つが“１”であるときは比較処理を終了する。比較器３０６ａの出力と比較器３０６ｂの出力との論理積および比較器３０６ｃの出力と比較器３０６ｄの出力との論理積がともに“０”であるときは引き続きエントリ４およびエントリ５との比較処理を行う。
【００９２】
これ以降、比較器３０６ａの出力と比較器３０６ｂの出力との論理積および比較器３０６ｃの出力と比較器３０６ｄの出力との論理積のうち少なくとも１つが“１”を示すかまたはすべてのエントリとの比較処理が終了するまで上述の処理と同様の処理が行われる。
【００９３】
このように、セクションレングスＳＬが５バイト以上８バイト以下のときは１クロックあたり２つエントリとの比較を実行する。
【００９４】
（３）セクションレングスＳＬが４バイト以下のとき
図１４に示すように、１クロック目にはアドレス００ｈがパターンメモリ３０４ａ−３０４ｄに与えられる。これに応答してエントリ０の０〜３バイト目がパターンメモリ３０４ａから、エントリ２の０〜３バイト目がパターンメモリ３０４ｂから、エントリ１の０〜３バイト目がパターンメモリ３０４ｃから、エントリ３の０〜３バイト目がパターンメモリ３０４ｄからそれぞれ読み出される。セレクタ３０６ｆは、パターンメモリ３０４ａから読み出されたエントリ０の０〜３バイト目のデータを比較器３０６ａに、パターンメモリ３０４ｂから読み出されたエントリ２の０〜３バイト目のデータを比較器３０４ｃに、パターンメモリ３０４ｃから読み出されたエントリ１の０〜３バイト目のデータを比較器３０４ｂに、パターンメモリ３０４ｄから読み出されたエントリ３の０〜３バイト目のデータを比較器３０４ｄにそれぞれ与える。セレクタ３０６ｅは、セクションデータバッファ３０１ａからの０〜３バイト目のセクションデータを比較器３０６ａ−３０６ｄに与える。セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ０の０〜３バイト目のエントリデータとが比較器３０６ａによって比較され、セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ１の０〜３バイト目とが比較器３０６ｂによって比較され、セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ２の０〜３バイト目のエントリデータとが比較器３０６ｃによって比較され、セクションデータバッファ３０１ａから読み出された０〜３バイト目のセクションデータとエントリ３の０〜３バイト目とが比較器３０６ｄによって比較される。比較器３０６ａ−３０６ｄの出力のうち少なくとも１つが一致を示すときは比較処理を終了する。比較器３０６ａ−３０６ｄの出力がすべて不一致を示すときは引き続きエントリ０−エントリ３の４〜７バイト目との比較処理を行う。
【００９５】
これ以降、比較器３０６ａ−３０６ｄの出力のうち少なくとも１つが一致を示すかまたはすべてのエントリとの比較処理が終了するまで上述の処理と同様の処理が行われる。
【００９６】
このように、セクションレングスＳＬが４バイト以下のときは１クロックあたり４つエントリとの比較を実行する。
【００９７】
以上のように、第３の実施形態によるトランスポートストリーム処理装置においても第１の実施形態において説明したのと同様の効果が得られる。
【００９８】
（第４の実施形態）
図１５は、この発明の第４の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。図１５に示すトランスポートストリーム処理装置は、ＰＩＤフィルタ１００と、セクションバッファ制御回路１０２と、セクションデータバッファ１０１ａ，１０１ｂと、パターンメモリ６０４ａ，６０４ｂと、メモリ制御回路６０５と、比較回路６０６と、エントリ判断回路６０７と、モードメモリ６０８とを備える。
【００９９】
パターンメモリ６０４ａ，６０４ｂには複数のエントリが書き込まれている。モードメモリ６０８には、１６バイトモードであるか８バイトモードであるかを示すモードデータと、パターンメモリ６０４ａ，６０４ｂに格納されているエントリが有効であるか無効であるかを示すデータとが設定されている。
【０１００】
パターンメモリ６０１ａ，６０４ｂおよびモードメモリ６０８のデータ配置を図１６に示す。エントリ０の０〜１５バイトがアドレス００ｈから０ｆｈに書き込まれている。以下同様にエントリ１の０〜１５バイトがアドレス１０〜１ｆｈに書き込まれている。ただし８バイトモードでは、アドレス１０〜１ｆｈのように１エントリ１６バイトを半分にしてエントリ１とエントリ１αのように１エントリ８バイトを２組として使用する。またこのとき、モードメモリ６０８には８バイトモードであることと、１エントリ８バイトの２組が有効か無効かをそれぞれ設定する。同様に１６バイトモードであることとこのエントリが有効か無効かを設定する。
【０１０１】
メモリ制御回路６０５は、パターンメモリ６０４ａ，６０４ｂからそれぞれ８バイトのデータを読み出す。またメモリ制御回路６０５は、モードメモリ６０８からモードデータを読み出す。さらにメモリ制御回路６０５は、パターンメモリ６０４ａ，６０４ｂから読み出したデータが有効であるか無効であるかを示すデータをモードメモリ６０８から読み出す。
【０１０２】
比較回路６０６は、比較器６０６ａ，６０６ｂとセレクタ６０６ｃとを含む。セレクタ６０６ｃは、モードメモリ６０８からのモードデータが８バイトモードを示すときはセクションデータバッファ１０１ａから読み出されたデータを比較器６０６ｃに与え、モードメモリ６０８からのモードデータが１６バイトモードを示すときはセクションデータバッファ１０１ｂから読み出されたデータを比較器６０６ｃに与える。比較器６０６ａは、セクションデータバッファ１０１ａから読み出されたデータとパターンメモリ６０４ａから読み出されたデータとが一致するときは“１”を、一致しないときは“０”をエントリ判断回路６０７に与える。比較器６０６ｂは、セレクタ６０６ｃから与えられるデータとパターンメモリ６０４ｂから読み出されたデータとが一致するときは“１”を、一致しないときは“０”をエントリ判断回路６０７に与える。
【０１０３】
エントリ判断回路６０７は、セクションデータバッファ１０１ａ，１０１ｂから読み出されたセクションデータとパターンメモリ６０４ａ，６０４ｂから読み出されたエントリとが一致するか否かをモードメモリ６０８からのモードデータに応じた方法で判断する。モードメモリ６０８からのモードデータが１６バイトモードを示す場合には、比較器６０６ａの出力と比較器６０６ｂの出力との論理積が“１”のときセクションデータバッファ１０１ａ，１０１ｂから読み出されたセクションデータとパターンメモリ６０４ａ，６０４ｂから読み出されたエントリとが一致すると判断し、上記論理積が“０”のとき不一致と判断する。モードメモリ６０８からのモードデータが８バイトモードを示す場合には、比較器６０６ａの出力および比較器６０６ｂの出力のそれぞれに基づいて判断する。具体的には、比較器６０６ａの出力が“１”のときはセクションデータバッファ１０１ａから読み出されたセクションデータとパターンメモリ６０４ａから読み出されたエントリとは一致すると判断し、比較器６０６ａの出力が“０”のときは不一致と判断する。また、比較器１０１ｂの出力が“１”のときはセクションデータバッファ１０１ａから読み出されたセクションデータとパターンメモリ６０４ｂから読み出されたエントリとは一致すると判断し、比較器６０４ｂの出力が“０”のときは不一致と判断する。
【０１０４】
次に、以上のように構成されたトランスポートストリーム処理装置の動作について説明する。ここでは８バイトモードと１６バイトモードの２種類あることを前提として説明する。
【０１０５】
セクションバッファ制御回路１０２でセクションデータの先頭１６バイトまでが取り出され、０〜７バイト目までがセクションデータバッファ１０１ａに書き込まれ、８〜１５バイト目がセクションデータバッファ１０１ｂに書き込まれる。また、このセクションデータバッファ１０１ａ，１０１ｂに書き込まれたセクションデータと比較するための１６バイトデータは、パターンメモリ６０４ａ，６０４ｂに複数書き込まれている。
【０１０６】
セクションデータバッファ１０１ａ，１０１ｂにデータが書き込まれると比較が開始される。モードメモリ６０８に設定されているモードデータに応じて比較回路６０６の内部動作が異なる。
【０１０７】
モードメモリ６０８に設定されているモードデータが１６バイトモードを示すとき、メモリ制御回路６０５はパターンメモリ６０４ａから８バイトのデータとパターンメモリ６０４ｂから８バイトのデータとを読み出す。パターンメモリ６０４ａの８バイトのデータとパターンメモリ６０４ｂの８バイトのデータとを連結すると同一エントリの１６バイトデータとなる。
【０１０８】
比較回路６０６の比較器６０６ａは、セクションデータバッファ１０１ａの０〜７バイト目のデータと、パターンメモリ６０４ａから読み出された０〜７バイト目のデータとを比較し、その結果をエントリ判断回路６０７に出力する。また、比較回路６０６の比較器６０６ｂは、セクションデータバッファ１０１ｂの８〜１５バイト目のデータと、パターンメモリ６０４ｂから読み出された８〜１５バイト目のデータとを比較し、その結果をエントリ判断回路６０７に出力する。１クロックで上記動作が行われるので、１クロックあたり１エントリの比較を実行することができる。また、エントリ判断回路６０７は１６バイトモードであることをモードメモリ６０８から通知されているので、比較器６０６ａの出力と比較器６０６ｂの出力との論理積をとり、一致したか否かを判断する。
【０１０９】
モードメモリ６０８に設定されているモードデータが８バイトモードを示すとき、メモリ制御回路６０５はパターンメモリ６０４ａから８バイトのデータとパターンメモリ６０４ｂから８バイトのデータを読み出す。パターンメモリ６０４ａの８バイトのデータとパターンメモリ６０４ｂの８バイトのデータは１エントリ１６バイトを半分に分け、１エントリ８バイトとして使用し、それぞれ先頭からの０〜７バイト目のデータとなる。
【０１１０】
比較回路６０６の比較器６０６ａはセクションデータバッファ１０１ａの０〜７バイト目のデータと、パターンメモリ６０４ａから読み出された０〜７バイト目のデータとを比較し、その結果をエントリ判断回路６０７に出力する。また、比較回路６０６の比較器６０６ｂはセレクタ６０６ｃで選択されたセクションデータバッファ１０１ａの０〜７バイト目のデータと、パターンメモリ６０４ｂから読み出された０〜７バイト目のデータとを比較し、その結果をエントリ判断回路６０７に出力する。１クロックで上記動作が行われるので、１クロックあたり１エントリ８バイトの組を２個比較することができる。また、エントリ判断回路６０７は、８バイトモードであることをモードメモリ６０８から通知されているので、比較器６０６ａの出力および比較器６０６ｂの出力は、それぞれ１エントリ８バイトの結果と判断する。
【０１１１】
以上のように、第４の実施形態によるトランスポートストリーム処理装置においても第１の実施形態におけるのと同様の効果が得られる。
【０１１２】
（第５の実施形態）
図１７は、この発明の第５の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。図１７に示すトランスポートストリーム処理装置は、セクションデータバッファ８０１と、セクションバッファ制御回路８０２と、パターンメモリ８０３と、タグメモリ８０４と、メモリ制御回路８０５と、比較回路８０６と、一致アドレス保存回路８０７とを備える。
【０１１３】
セクションバッファ制御回路８０２は、セクションデータの先頭から１６バイト（０〜１５バイト目）を取り出してセクションデータバッファ８０１に書き込む。
【０１１４】
セクションデータバッファ８０１には、先頭から１６バイトのセクションデータ、必要なＰＩＤの値、必要なインデックスが処理に応じて設定される。
【０１１５】
パターンメモリ８０３は、ＰＩＤ領域と、インデックス領域と、セクション領域とを含む。ＰＩＤ領域には、セクションデータバッファ８０１に設定されるＰＩＤの値と比較するための複数のエントリが設定される。インデックス領域には、セクションデータバッファ８０１に設定されるインデックスと比較するための複数のエントリが設定される。セクション領域には、セクションデータバッファ８０１に設定されるセクションデータと比較するための複数のエントリ（１６バイト）が設定される。インデックス領域に設定されるエントリとセクション領域に設定されるエントリとは対応づけられている。
【０１１６】
タグメモリ８０４は領域８０４ａ−８０４ｄを含む。領域８０４ａには、パターンメモリ８０３のＰＩＤ領域のアドレスに対応する値が設定される。領域８０４ｂには、パターンメモリ８０３のインデックス領域のアドレスに対応する値が設定される。領域８０４ｃには、比較回路８０６によって一致すると判断されたインデックス領域のエントリに対応づけられたセクション領域のエントリのアドレスに対応する値が設定される。領域８０４ｄには、比較回路８０６によって一致すると判断されたセクション領域のエントリのアドレスに対応する値が設定される。
【０１１７】
メモリ制御回路８０５は、パターンメモリ８０３およびタグメモリ８０４のアクセスを制御する。
【０１１８】
比較回路８０６は、セクションデータバッファ８０１に設定された値とパターンメモリ８０３から読み出された値とが一致するか否かを判断し、その結果を一致アドレス保存回路８０７に通知する。
【０１１９】
一致アドレス保存回路８０７は、比較回路８０６が一致したと判断したときはメモリ制御回路８０５が発生したアドレスに所定の値を加えてタグメモリ８０４の領域８０４ｄに書き込む。
【０１２０】
次に、以上のように構成されたトランスポートストリーム処理装置の動作について説明する。ここでは、ＰＩＤ比較、インデックス比較、セクション比較に分けて説明する。
【０１２１】
＜ＰＩＤ比較＞
まず、必要なＰＩＤの値をセクションデータバッファ８０１に設定し、スタート信号をメモリ制御回路８０５に入力する。メモリ制御回路８０５は、タグメモリ８０４の領域８０４ａの先頭から値を読み出し、これをもとにパターンメモリ８０３の読み出しアドレスを発生しＰＩＤ領域からエントリデータを読み出す。比較回路８０６は、セクションデータバッファ８０１に設定された値とパターンメモリ８０３から読み出された値とを比較し、一致した場合は一致アドレス保存回路８０７に通知する。比較回路８０６が一致したと判断したとき、一致アドレス保存回路８０７は、メモリ制御回路８０５が発生したアドレスに特定の値を加えたもの（インデックス）を保持しておく。メモリ制御回路８０５は、比較回路８０６の停止信号発生時、比較終了と判断し比較を終了する。この処理で一致したＰＩＤを判断できる。
【０１２２】
＜インデックス比較＞
次に、一致したＰＩＤをもとに、どのセクションパターンが有効かのインデックスを知るため、一致アドレス保存回路８０７は保持しているインデックスをセクションデータバッファ８０１に設定し、スタート信号をメモリ制御回路８０５に入力する。メモリ制御回路８０５は、タグメモリ８０４の領域８０４ｂの先頭から値を読み出し、これをもとにパターンメモリ８０３のアドレスを発生しインデックス領域からエントリデータを読み出す。比較回路８０６は、セクションデータバッファ８０１に設定された値とパターンメモリ８０３から読み出された値とを比較し、一致した場合は一致アドレス保存回路８０７に通知する。一致アドレス保存回路８０７は、比較回路８０６が一致したと判断したときは、メモリ制御回路８０５が発生したアドレスに所定の値を加え、タグメモリ８０４の領域８０４ｃに書き込む。メモリ制御回路８０５は、タグメモリ８０４の領域８０４ａの最後に達したとき比較終了と判断し比較を終了する。この処理で必要なパターンメモリ上のセクションパターンの有効なインデックスを判断できる。
【０１２３】
＜セクション比較＞
ここまで処理しておき、次に、セクションデータを入力すると、セクションバッファ制御回路８０２でセクションデータの先頭１６バイトまでが取り出され、セクションデータバッファ８０１に０〜１５バイト目が書き込まれる。メモリ制御回路８０５はタグメモリの領域８０４ｃの先頭から書き込まれた値を読み出し、これをもとにパターンメモリ８０３のアドレスを発生しセクション領域からエントリデータを読み出す。
【０１２４】
比較回路８０６は、セクションデータバッファ８０１に設定されたセクションデータとパターンメモリ８０３から読み出されたエントリデータとを比較し、一致した場合は一致アドレス保存回路８０７に通知する。一致アドレス保存回路８０７は、比較回路８０６が一致したと判断したときは、メモリ制御回路８０５が発生したアドレスに所定の値を加え、タグメモリ８０４の領域８０４ｄに書き込む。メモリ制御回路８０５は、モード（ＰＩＤ比較，インデックス比較，セクション比較）により、比較回路８０６の停止信号またはタグメモリ８０４の領域８０４ｃの最後に達したとき比較終了と判断し比較を終了する。
【０１２５】
以上のように第５の実施形態によるトランスポートストリーム処理装置によれば、一致したＰＩＤでかつ該当のセクションパターンに一致したか否か判断することができる。すなわちＰＩＤ比較、セクションインデックス比較、セクション比較の一連の比較を同一ハードウエアで実現できる。
【０１２６】
（第６の実施形態）
図１８は、この発明の第６の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。図１８に示すトランスポートストリーム処理装置は、セクションデータバッファ９０１と、セクションバッファ制御回路９０２と、パターンメモリ９０３と、タグレジスタ９０４ａ，９０４ｂと、メモリ制御回路９０５と、比較回路９０６と、一致結果保存回路９０７と、プライオリティエンコーダ９０９と、タグ消去回路９１０とを備える。
【０１２７】
図１９に示すように、パターンメモリ９０３およびタグレジスタ９０４ａは、ＰＩＤ比較領域と、セクションインデックス領域と、セクション比較領域とを含む。パターンメモリ９０３のＰＩＤ比較領域には、セクションデータバッファ９０１に設定されるＰＩＤの値と比較するための複数のエントリ（２バイト／１エントリ）が設定される。セクションインデックス領域には、セクションデータバッファ９０１に設定されるインデックスと比較するための複数のエントリ（２バイト／１エントリ）が設定される。セクション比較領域には、セクションデータバッファ９０１に設定されるセクションデータと比較するための複数のエントリ（１６バイト／１エントリ）が設定される。セクションインデックス領域に設定されるエントリとセクション比較領域に設定されるエントリとは対応づけられている。
【０１２８】
次に、このトランスポートストリーム処理装置の動作について説明する。
【０１２９】
まず、ＰＩＤ比較を行うときは、パターンメモリ９０３のＰＩＤ比較領域に必要なＰＩＤの値を設定し、タグレジスタ９０４ａのＰＩＤ比較領域の部分に１を設定しておく。次に、セクションデータバッファ９０１に必要なＰＩＤの値を設定し、スタート信号をメモリ制御回路９０５に入力する。すると、メモリ制御回路９０５はタグレジスタ９０４ａに設定された値をタグレジスタ９０４ｂにコピーする。次にタグレジスタ９０４ｂの先頭の“１”をプライオリティエンコーダ９０９が探し、このアドレスをメモリ制御回路９０５とタグ消去回路９１０に与える。比較回路９０６は、メモリ制御回路９０５がパターンメモリ９０３から読み出した値とセクションデータバッファ９０１の値とを比較し、一致したらメモリ制御回路９０５に停止信号を発行する。また、タグ消去回路９１０は、プライオリティエンコーダ９０９が探した先頭の“１”を“０”に書き戻し消去する。つまり、メモリ制御回路９０５は、タグレジスタ９０４ｂに“１”があり、プライオリティエンコーダ９０９が“１”を検出する限り、または、比較回路９０６が一致したと判断するまで、上記動作を１クロックで繰り返す。この動作により、ＰＩＤ比較を行うことができる。
【０１３０】
セクションパターンインデックス比較を行うときは、パターンメモリ９０３のセクションインデックス領域に必要なセクションパターンインデックスを設定し、タグレジスタ９０４ａのセクションパターンインデックス領域の部分に１を設定する。次に、セクションデータバッファ９０１に必要なＰＩＤのインデックス値を設定し、スタート信号をメモリ制御回路９０５に入力する。すると、メモリ制御回路９０５はタグレジスタ９０４ａに設定された値をタグレジスタ９０４ｂにコピーする。次にタグレジスタ９０４ｂの先頭の“１”をプライオリティエンコーダ９０９が探し、このアドレスをメモリ制御回路９０５およびタグ消去回路９１０に与える。比較回路９０６は、メモリ制御回路９０５がパターンメモリ９０３から読み出した値とセクションデータバッファ９０１の値とを比較し、一致したら一致結果保存回路９０７に通知する。一致結果保存回路９０７は、タグレジスタ９０４ａのセクションパターンインデックスに対応したセクションパターン位置に“１”を書き込む。また、タグ消去回路９１０は、プライオリティエンコーダ９０９が探した先頭の“１”を“０”に書き戻し消去する。つまり、メモリ制御回路９０５は、タグレジスタ９０４ｂに“１”があり、プライオリティエンコーダ９０９が“１”を検出する限り、上記動作を１クロックで繰り返す。この動作により、セクションパターンインデックスを探すことができる。
【０１３１】
セクション比較を行うときは、パターンメモリ９０３のセクション比較領域に必要なセクションパターンを設定し、セクションパターンインデックスを探しておくことでタグレジスタ９０４ａのセクションパターン領域に“１”が設定されている。次に、セクションデータをセクションバッファ制御回路９０２に入力することで、セクションバッファ制御回路９０２は先頭の値をセクションデータバッファ９０１に設定する。このことでスタート信号がメモリ制御回路９０５に入力される。すると、メモリ制御回路９０５はタグレジスタ９０４ａの値をタグレジスタ９０４ｂにコピーする。次にタグレジスタ９０４ｂの先頭の“１”をプライオリティエンコーダ９０９が探し、このアドレスをメモリ制御回路９０５およびタグ消去回路９１０に与える。比較回路９０６は、メモリ制御回路９０５がパターンメモリ９０３から読み出した値とセクションデータバッファ９０１の値とを比較する。また、タグ消去回路９１０は、プライオリティエンコーダ９０９が探した先頭の“１”を“０”に書き戻し消去する。つまり、メモリ制御回路９０５は、タグレジスタ９０４ｂに“１”があり、プライオリティエンコーダ９０９が“１”を検出する限り、上記動作を１クロックで繰り返す。この動作により、一致したセクションパターンを探すことができる。
【０１３２】
以上のように第６の実施形態によれば、ＰＩＤ比較、セクションインデックス比較、セクション比較の一連の比較を同一ハードウエアで実現できる。
【０１３３】
（第７の実施形態）
図２０に示すように、セクションデータ１２０１は、トランスポートパケット１２０２とトランスポートパケット１２０４とに分割されて入る場合がある。また、間にトランスポートパケット１２０３がある場合もある。このような場合でセクションデータ１２０１の先頭１６バイト以下が分割された場合は、分割されたデータ１２０５を一度メモリに保存し、次の継続するデータ１２０６が入ったトランスポートパケット１２０４が到着したら、分割されたデータ１２０５と継続したデータ１２０６とを連結し、先頭から１６バイト抜き出し比較を行う。これを実現するハードの一例を図２１に示す。
【０１３４】
図２１は、この発明の第７の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。図２１に示すトランスポートストリーム処理装置は、セクションデータバッファ１１０１と、セクションバッファ制御回路１１０２と、パターンメモリ１１０３と、メモリ制御回路１１０４と、比較回路１１０５と、ローカルメモリ１１０６とを備える。
【０１３５】
次に、図２１に示したトランスポートストリーム処理装置の動作について説明する。ここでは、トランスポートパケットの最後のセクションデータが１６バイト以下のときについて説明する。
【０１３６】
セクションデータが１６バイトに満たない時点で、トランスポートパケットの最後を示すパケット終了信号がセクションバッファ制御回路１１０２に入力されると、セクションバッファ制御回路１１０２は、このセクションデータをセクションバッファ１１０１に書き込み、メモリ制御回路１１０４に通知する。メモリ制御回路１１０４は、セクションデータバッファ１１０１のデータをローカルメモリ１１０６に保存する。
【０１３７】
次にこのローカルメモリ１１０６に保存されているセクションデータの続きが来たときには、まずメモリ制御部１１０４がローカルメモリ１１０６からこのセクションデータを読み出しセクションバッファ１１０１に書き込む。その後、セクションバッファ制御回路１１０２は、ローカルメモリ１１０６から読み出されたセクションデータの続きから入力されたセクションデータを書き込んで、１６バイトの連続したセクションデータとする。メモリ制御回路１１０４はパターンメモリ１１０３を読み出し比較回路１１０５にデータを与える。比較回路１１０５は、セクションデータバッファ１１０１のデータとパターンメモリ１１０３の値とを比較し一致／不一致を判断する。
【０１３８】
このように、セクションデータの比較すべき先頭データがトランスポートパケットをまたがっていたとしても、セクションデータの先頭データのパターン一致による取得を行うことができる。
【０１３９】
【発明の効果】
この発明によるトランスポートストリーム処理装置では、セクションレングスを判断し、不要な条件は読み出さず、必要な条件のみ読み出し比較することで、比較処理時間が短縮できる。
【０１４０】
また、比較すべきデータが全て揃ってから比較をエントリ単位で行うので、比較判定で一致した時終了すれば判定保持手段は必要ない。
【０１４１】
また、ＰＩＤ比較、セクションインデックス比較、セクション比較の複数種類の比較を単一ハードウエアで実現することができる。
【０１４２】
また、セクションがパケット間を跨った場合も比較処理することができる。
【図面の簡単な説明】
【図１】この発明の第１の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。
【図２】ホストから見たアドレスマップである。
【図３】物理的なアドレスマップである。
【図４】（ａ）および（ｂ）は、セクションレングスが９バイト以上のときにおける比較の対象を示す図である。
【図５】（ａ）および（ｂ）は、セクションレングスが８バイト以下のときにおける比較の対象を示す図である。
【図６】この発明の第２の実施形態によるトランスポートストリーム処理装置の主要部の構成を示すブロック図である。
【図７】物理的なアドレスマップである。
【図８】（ａ）および（ｂ）は、セクションレングスが９バイト以上のときにおける比較の対象を示す図である。
【図９】（ａ）および（ｂ）は、セクションレングスが８バイト以下のときにおける比較の対象を示す図である。
【図１０】この発明の第３の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。
【図１１】物理的なアドレスマップである。
【図１２】（ａ）および（ｂ）は、セクションレングスが９バイト以上のときにおける比較の対象を示す図である。
【図１３】（ａ）および（ｂ）は、セクションレングスが５バイト以上８バイト以下のときにおける比較の対象を示す図である。
【図１４】セクションレングスが４バイト以下のときにおける比較の対象を示す図である。
【図１５】この発明の第４の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。
【図１６】パターンメモリおよびモードメモリのアドレスマップである。
【図１７】この発明の第５の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。
【図１８】この発明の第６の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。
【図１９】パターンメモリおよびタグレジスタ内の領域を示す図である。
【図２０】トランスポートパケットの構成を示す図である。
【図２１】この発明の第７の実施形態によるトランスポートストリーム処理装置の全体構成を示すブロック図である。
【符号の説明】
１０１ａ，１０１ｂ，３０１ａ−３０１ｄ，８０１，９０１，１１０１  セクションデータバッファ
１０２，３０２，８０２，９０２，１１０２  セクションバッファ制御回路
１０３  セクションレングス判断回路
１０４ａ，１０４ｂ，３０４ａ−３０４ｄ，６０４ａ，６０４ｂ，８０３，９０３，１１０３  パターンメモリ
１０５，３０５，６０５，８０５，９０５，１１０４  メモリ制御回路
１０６，３０６，６０６，８０６，９０６，１１０５  比較回路
１０７，３０７，６０７  エントリ判断回路
６０８  モードメモリ
８０４  タグメモリ
８０７  一致アドレス保存回路
９０４ａ，９０４ｂ  タグレジスタ
９０７  一致結果保存回路
９０９  プライオリティエンコーダ
９１０  タグ消去回路
１１０６  ローカルメモリ
【図１】
0003676271.tif 000002
【図２】
0003676271.tif 000003
【図３】
0003676271.tif 000004
【図４】
0003676271.tif 000005
【図５】
0003676271.tif 000006
【図６】
0003676271.tif 000007
【図７】
0003676271.tif 000008
【図８】
0003676271.tif 000009
【図９】
0003676271.tif 000010
【図１０】
0003676271.tif 000011
【図１１】
0003676271.tif 000012
【図１２】
0003676271.tif 000013
【図１３】
0003676271.tif 000014
【図１４】
0003676271.tif 000015
【図１５】
0003676271.tif 000016
【図１６】
0003676271.tif 000017
【図１７】
0003676271.tif 000018
【図１８】
0003676271.tif 000019
【図１９】
0003676271.tif 000020
【図２０】
0003676271.tif 000021
【図２１】
0003676271.tif 000022