(57)【特許請求の範囲】
【請求項１】
ＣＰＵが保有するアドレス空間上に複数のメモリを割り当てて管理する装置であって、
前記複数のメモリについて、それぞれ異なる割当可能領域を設定する割当可能領域設定手段、
前記複数のメモリのそれぞれについて、前記割当可能領域設定手段によって設定された前記アドレス空間の割当可能領域のうちの任意の領域に、アクセスが可能となるウインドウを移動可能に設定するウインドウ設定手段、
前記ＣＰＵが実行する処理内容に応じて前記複数のメモリの前記アドレス空間上での配置位置を切り替えるメモリ配置切替手段、
各前記メモリ間の優先度を指定するための優先度指定手段、および
前記アドレス空間上において、複数のウインドウが重なって設定された領域がアクセスされたとき、前記優先度指定手段によって指定された優先度に基づいて、当該重なったウインドウに対応する各メモリのアクセス優先度を制御する優先度制御手段を備え、
前記ウインドウ設定手段は、前記複数のメモリのそれぞれについて、前記メモリ配置切替手段によって切り替えられた配置位置に前記ウインドウを設定することを特徴とする、メモリ管理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はメモリ管理装置に関し、より特定的には、ＣＰＵが保有するアドレス空間上に複数のメモリを割り当てて管理する装置に関する。
【０００２】
【従来技術の説明】
近年、ＣＰＵが直接アクセスできるアドレス空間の増大、メモリの大容量化、さらに用途別のメモリの特殊化が進み、プログラムによるメモリの管理がますます煩雑になっている。
【０００３】
そこで、従来は、バンク切り替えと呼ばれる手法によって、メモリの管理を行うようにしていた。このバンク切り替えの従来技術としては、以下のようなものがあった。
【０００４】
（１）実公平３−３０９１６号公報…キャラクタ用メモリのバンク切り替え技術を開示している
（２）特公平４−２０４９２号公報…プログラムメモリのバンク切り替え技術を開示している
（３）特開昭６３−２４５５３５号公報…複数レジスタによる複雑なバンク切り替え技術を開示している
（４）特開平３−９２９４９号公報…ＲＯＭとＲＡＭのメモリ切り替え技術を開示している
（５）特開平４−６５７３８号公報…メモリのアクセス形態を変更する技術を開示している
（６）特開平４−１３０５５４号公報…ＲＯＭとＲＡＭ間のデータ転送技術を開示している
【０００５】
バンク切り替えには、大きく分けて２種類の技術がある。１つは、上記従来技術（１），（２），（３）のように、ＣＰＵが直接アクセスできるアドレス空間よりもさらに大容量のメモリを使用するために、このメモリを複数のバンクに分割し、メモリマップ上に配置されたエリアに指定のバンクを割り当てる技術である。もう１つは、上記従来技術（４），（５），（６）のように、メモリ効率やアクセスタイム向上のために、ビット幅を切り替えたり、高速アクセス可能なＳ−ＲＡＭの使用を目的としてＲＯＭとの切り替えを行う技術である。
【０００６】
【発明が解決しようとする課題】
上述の２種のバンク切り替え技術において、前者のバンク切り替えは大容量化、後者のバンク切り替えはメモリの特殊化に対応するための解決策を示唆しているが、どちらも狭いメモリ空間上で大容量のメモリを使用するためのバンク切り替え技術であり、プログラムを作成する上で、特定のメモリを任意のメモリマップ上に設定するための融通性に欠ける。
【０００７】
現在のように、ＣＰＵが広いメモリマップエリアを持つようになると、複数種類のメモリを広いＣＰＵメモリマップ上にアプリケーション毎に最適に配置する要求が高まっている。しかしながら、従来のバンク切り替え技術では、このような要求に対応することができなかった。例えば、読み出し専用メモリであるＲＯＭ、揮発性メモリであるＤＲＡＭ（またはＰＳＲＡＭ）、書き込みに時間を要する不揮発性メモリであるフラッシュメモリを使用してデータ放送を受信する場合、ＲＯＭ上のプログラムを使用してフラッシュメモリ上に受信データをストアしながらＰＳＲＡＭ上のプログラムを同時に（マルチタスクで）走らせる場合には、この３つをメモリマップ上に割り当てる必要がある。しかしながら、特定のアドレスエリアに固定された各メモリに対し、必要に応じて３つともバンク切り替えを行っていては、プログラムによるアドレス管理が煩雑になる。したがって、その時々によって、必要なメモリが、必要な場所に割り当てられ、それ以外の時にはメモリマップ上から消えているという操作ができれば、より柔軟なメモリ割り付けが可能になる。
【０００８】
それゆえに、本発明の目的は、使用するメモリの諸条件（種類、容量、使用状況）に応じて、メモリマップ上で柔軟にメモリの管理が行えるメモリ管理装置を提供することである。
【０００９】
【課題を解決するための手段】
請求項１に係る発明は、ＣＰＵが保有するアドレス空間上に複数のメモリを割り当てて管理する装置であって、
複数のメモリについて、それぞれ異なる割当可能領域を設定する割当可能領域設定手段、
複数のメモリのそれぞれについて、割当可能領域設定手段によって設定されたアドレス空間の割当可能領域のうちの任意の領域に、アクセスが可能となるウインドウを移動可能に設定するウインドウ設定手段、
ＣＰＵが実行する処理内容に応じて複数のメモリのアドレス空間上での配置位置を切り替えるメモリ配置切替手段、
各メモリ間の優先度を指定するための優先度指定手段、および
アドレス空間上において、複数のウインドウが重なって設定された領域がアクセスされたとき、優先度指定手段によって指定された優先度に基づいて、当該重なったウインドウに対応する各メモリのアクセス優先度を制御する優先度制御手段を備え、
ウインドウ設定手段は、複数のメモリのそれぞれについて、メモリ配置切替手段によって切り替えられた配置位置にウインドウを設定する。
【００１３】
【作用】
周知のごとく、パーソナルコンピュータのディスプレイ表示方法において、複数種類の画像を表示する場合に、分割スクリーンという方法と、マルチウィンドウという方法とがある。前者は、例えば表示画面を上下に２分割し、上と下とで異なる画像を表示するというものであり、後者は、画面上に仮に設定した２つ以上の窓に対して、各々の画像を割り当てるという方法である。特に後者においては、各ウィンドウは重なって表示され、必要なウィンドウのみが最も前面に表示される。本発明は、メモリの配置手法に、このマルチウィンドウの概念を導入し、複数種類のメモリエリアを各々独立にマッピングし、優先度の高いメモリから順番にメモリマップの前面に配置することにより、柔軟なメモリ割り付けを実現している。従来のメモリバンク切り替えは、分割スクリーン方式の画像処理技術に対応し、本件のメモリ割り付けを使用することによって得られる効果は、この２つの方法を比較しても伺い知ることができる。
【００１４】
請求項１に係る発明では、複数のメモリについて、それぞれ異なる割当可能領域を設定し、複数のメモリのそれぞれについて、アドレス空間の当該割当可能領域のうちの任意の領域に、アクセスが可能となるウインドウを移動可能に設定する。また、ＣＰＵが実行する処理内容に応じて複数のメモリのアドレス空間上での配置位置を切り替え、アドレス空間上において、複数のウインドウが重なって設定された領域がアクセスされたときは、優先度指定手段によって指定された優先度に基づいて、当該重なったウインドウに対応する各メモリのアクセス優先度を制御するようにしている。これによって、使用するメモリの諸条件（種類、容量、使用状況）に応じて、アドレス空間上で柔軟にメモリの管理が行える。
【００１５】
また、請求項１に係る発明では、予め設定された優先順位に基づいて、各メモリ間の優先度を固定的に指定するようにしている。
【００１６】
また、請求項１に係る発明は、ＣＰＵから各メモリの優先順位が書き込まれる記憶手段の記憶内容に基づいて、各メモリ間の優先度を指定するようにしている。これによって、当該優先度を自由に変更することができる。
【００１８】
【実施例】
図１は、本発明の一実施例に係る衛星データ放送受信装置の構成を示す外観斜視図である。図１において、この衛星データ放送受信装置は、ゲーム機本体２と、衛星データ放送受信アダプタ４と、衛星データ放送受信カートリッジ６と、メモリユニット８と、ハードディスク装置１０とを備えている。ハードディスク装置１０は、衛星データ放送受信アダプタ４に装着される。ゲーム機本体２は、衛星データ放送受信アダプタ４の上に搭載される。メモリユニット８は、衛星データ放送受信カートリッジ６に装着される。衛星データ放送受信カートリッジ６は、ゲーム機本体２に装着される。ゲーム機本体２は、いわゆるテレビゲーム機であって、例えば、本出願人の製造販売に係る「スーパーファミコン（商品名；登録商標）」が用いられる。
【００１９】
図２は、本実施例の衛星データ放送受信装置を用いて構成された衛星データ放送受信システムの構成を示す外観斜視図である。図２において、ゲーム機本体２には、コントローラ１２と、ＴＶモニタ２２とが接続される。衛星データ放送受信アダプタ４には、ＡＣアダプタ１４が接続されるとともに、ビットストリーム分配器２０を介して、ＢＳチューナ１８が接続される。ＢＳチューナ１８には、ＢＳアンテナ１６が接続される。ビットストリーム分配器２０は、ＢＳチューナ１８からの放送データ（ビットストリーム）を、衛星データ放送受信アダプタ４に与えるとともに、他の衛星データ受信機器に対して当該信号を分配して供給する。
【００２０】
図３は、図２におけるゲーム機本体２の内部構成を示すブロック図である。図３において、このゲーム機本体２は、ＣＰＵ３０と、ワークＲＡＭ３２と、アドレスデコーダ３４と、入出力ポート３６と、コネクタＡ３８と、ビデオプロセッサ（ＰＰＵ）４０と、ビデオＲＡＭ４２と、ビデオエンコーダ４４と、オーディオプロセッサ（ＡＰＵ）４６と、オーディオＲＡＭ４８と、ステレオサウンドの左用ミキサ５０ａと、右用ミキサ５０ｂと、左用アンプ５２ａと、右用アンプ５２ｂと、コネクタＢ５４と、ＣＩＣ５６と、リセットスイッチ５８と、リセット回路６０と、パワースイッチ６２と、電源回路６４と、発振回路６６とを備えている。
【００２１】
ＣＰＵ３０は、ＤＭＡ回路３０ａを内蔵しており、ＤＭＡ動作時にはアドレスバスＡおよびＢに異なるアドレス信号を与え、アドレスバスＡに接続された回路からアドレスバスＢに接続された回路へ（または逆方向に）データを転送する。ＣＰＵは、コネクタＡ３８からの割り込み信号ＩＲＱＢおよびコネクタＢ５４からの割り込み信号ＩＲＱＢがワイヤードＯＲ接続されて入力される。
【００２２】
ワークＲＡＭ３２は、基本的にはアドレスバスＡ上のメモリとして使用されるが、主としてプログラム動作上の補助情報を記憶するものであり、アドレスバスＢ上のポートからもアクセスが可能である。アドレスデコーダ３４は、アドレスバスＡ上の信号に基づいて、各回路に対してチップイネーブル信号を供給する。入出力ポート３６は、コントローラ１２から操作情報を得る。コネクタＡ３８は、衛星データ放送受信カートリッジ６に接続される。このコネクタＡ３８には、アドレスバスＡおよびＢの両方が接続される。
【００２３】
ＰＰＵ４０は、画像データの処理を行うものであり、作業用メモリとして用いられるビデオＲＡＭ４２が接続される。ビデオエンコーダ４４は、ＰＰＵ４０からのアナログＲＧＢ信号をコンポジットビデオ信号に変換し、ＴＶモニタ２２に供給する。
【００２４】
ＡＰＵ４６は、音声データの処理を行う。オーディオＲＡＭ４８は、ＡＰＵ４６の作業用メモリとして用いられる。ミキサ５０ａおよび５０ｂは、ＡＰＵ４６からの音声信号と、衛星からのＰＣＭ音声放送とを混合して出力する。アンプ５２ａおよび５２ｂは、それぞれ、ミキサ５０ａおよび５０ｂの出力信号を増幅し、ＴＶモニタ２２に供給する。
【００２５】
コネクタＢ５４は、衛星データ放送受信アダプタ４に接続される。このコネクタＢ５４には、アドレスバスＢは接続されるが、アドレスバスＡは接続されない。ＣＩＣ５６は、カートリッジの真性を検査するためのセキュリティチップであり、その詳細が特公平５−２７８９１号公報に詳細に開示されている。ＣＩＣ５６は、カートリッジが真正でない場合に、リセット信号を出力する。リセットスイッチ５８は、操作者によって操作されたときに、リセット信号を出力する。リセット回路６０は、ＣＩＣ５６からのリセット信号とリセットスイッチ５８からのリセット信号とを混合し、ＣＰＵ３０、ＰＰＵ４０、ＡＰＵ４６、コネクタＡ３８およびコネクタＢ５４に、リセット信号ＲＥＳＥＴＢとして供給する。また、リセット回路６０は、パワースイッチ６２がＯＮされたときにも、リセット信号ＲＥＳＥＴＢを出力する。
【００２６】
パワースイッチ６２は、操作者によって操作されたときに、電源回路６４を能動化する。電源回路６４は、衛星データ放送受信アダプタ４からの供給電圧ＶＤＣ（１２Ｖ）を５Ｖに変換し、安定化させる。この５Ｖの電圧は、電源ラインＭＶｃｃを介して各回路およびコネクタに供給される。特にコネクタＢ５４を介して衛星データ放送受信アダプタ４に供給される５Ｖ電圧は、電源制御信号として使用される。発振回路６６は、各プロセッサに、必要なクロック信号を与える。
【００２７】
図４は、図２における衛星データ放送受信カートリッジ６の内部構成を示すブロック図である。図４において、この衛星データ放送受信カートリッジ６は、マッピングコントローラ７０と、マスクＲＯＭ７２と、疑似ＳＲＡＭ７４と、フラッシュメモリＡ７６と、ＣＩＣ７８と、コネクタＤ８０とを備えている。
【００２８】
マッピングコントローラ７０は、プログラムに従って、メモリマップ上における、マスクＲＯＭ７２、疑似ＳＲＡＭ７４、フラッシュメモリＡ７６およびメモリユニット８（コネクタＤ８０に接続される）の配置を切り替える。マッピングコントローラ７０の内部の詳細は、図７に示されている。
【００２９】
マスクＲＯＭ７２は、主として放送受信プログラムや、初期画面表示等の基本的プログラムおよびデータを記憶する。ＣＰＵ３０のリードタイミングを示す信号ＣＰＵＲＤＢおよびマッピングコントローラ７０からのチップイネーブル信号ＣＥ２Ｂが、それぞれ、アウトプットイネーブルコントロール端子ＯＥ１およびＯＥ２に与えられる。
【００３０】
疑似ＳＲＡＭ７４は、主として放送データを一時記憶するものであり、マッピングコントローラ７０からの信号ＰＷＥＢによってリード／ライト制御が行われ、信号ＰＯＥＢ／ＲＦＢによってアウトプットイネーブルおよびリフレッシュ制御が行われ、信号ＣＥ１Ｂによってチップイネーブル制御が行われる。
【００３１】
フラッシュメモリＡ７６は、主として放送データを長期的に記憶するものであり、ＣＰＵ３０からの信号ＣＰＵＲＤＢによってアウトプットイネーブル制御が行われ、信号ＣＰＵＷＲＢでリード／ライト制御が行われる。また、フラッシュメモリＡ７６は、マッピングコントローラ７０からの信号ＷＰＢでライトプロテクト制御が行われ、信号ＣＥ３Ｂでチップイネーブル制御が行われる。ＣＰＵ３０からのデータ書き込み時には、信号ＲＹ／ＢＹＢがローレベルからハイレベルに変化することにより、書き込み完了をマッピングコントローラ７０に知らせる。これに基づいてマッピングコントローラ７０は、ＣＰＵ３０に対して信号ＩＲＱＢを発生する。ＣＩＣ７８は、ゲーム機本体２内のＣＩＣ５６と協動して、セキュリティ動作を行う。コネクタＤ８０は、メモリユニット８に接続される。
【００３２】
図５は、図２における衛星データ放送受信アダプタ４の内部構成を示すブロック図である。図５において、この衛星データ放送受信アダプタ４は、データ放送デコーダ８２と、ＰＣＭデコーダ８４と、左用アンプ８６ａと、右用アンプ８６ｂと、ＥＥＰ−ＲＯＭ８８と、ボルテージ・コントロールド・クリスタル・オシレータ（以下、「ＶＸＯ」と略称する）９０と、双方向バッファ９２と、バスバッファ９４，９６と、コネクタＣ９８と、ＬＥＤ１００と、電源制御回路１０２と、ＬＥＤ１０４とを備えている。
【００３３】
データ放送デコーダ８２は、ビットストリーム分配器２０を介して、ＢＳチューナ１８からビットストリーム信号ＢＳＴを入力し、この信号を増幅した後に信号ＢＳＴ０２としてＰＣＭデコーダ８４に与える。ＰＣＭデコーダ８４から出力される信号ＦＤＩＮは、ビットストリーム信号から分離された放送データであり、データ放送デコーダ８２は、この信号ＦＤＩＮをデコードしてゲーム機本体２のＣＰＵ３０が使用可能な形態のデータに変換する。信号ＶＥＲは、当該アダプタ４のバージョン番号を設定するために用いられ、本実施例では０に設定されている。信号ＩＲＱＢは、例えばハードディスク装置１０からの割り込み要求が発生した場合に発生され、コネクタＢ５４を介してＣＰＵ３０に与えられる。データ放送デコーダ８２の内部の詳細は、図１２に示されている。
【００３４】
ＰＣＭデコーダ８４（例えば、松下電器産業株式会社製のＭＮ８８８２１）は、データ放送デコーダ８２から与えられる信号ＢＳＴ０２からＰＣＭ音声信号ＰＣＭＬ，ＰＣＭＲを取り出し、アンプ８６ａ、８６ｂを介して、ゲーム機本体２内のミキサ５０ａ、５０ｂに供給する。また、ＰＣＭデコーダ８４は、フレーム同期信号ＦＳＹＮＣ、ビットストリームクロック信号ＢＳＣＫを生成してデータ放送デコーダ８２に供給するとともに、放送データをシリアル信号ＦＤＩＮとしてデータ放送デコーダ８２に供給する。プログラムによるＰＣＭデコーダ８４の制御は、ＰＣＭＤバスの信号を介して行われる。データ放送デコーダ８２は、ＰＣＭＤバスをＣＰＵ３０に結合するための入出力ポートを内蔵する。
【００３５】
ＥＥＰ−ＲＯＭ８８（例えば、セイコー電子株式会社製のＳ−２９１３ＣＲ）には、本体のシリアル番号が出荷時に記録されている。有料データ受信時は、この本体シリアル番号が参照され、有料放送受信登録ユーザーであるかどうかが判断される。ＥＥＰ−ＲＯＭ８８に対する書き込み，読み出しの制御は、ＥＥＰ−ＲＯＭバスの信号を介してソフトウェアにより行われる。データ放送デコーダ８２は、ＥＥＰ−ＲＯＭバスをＣＰＵ３０に結合するための入出力ポートを内蔵する。
【００３６】
ＶＸＯ９０（例えば、松下電器産業株式会社製のＡＮ３９１３Ｓ）は、受信されたビットストリーム信号に同期したメインクロック信号ＭＣＫを発生する。メインクロック信号ＭＣＫはＰＣＭデコーダ８４に与えられ、これに基づいてビットストリームクロック信号ＢＳＣＫが生成される。データ放送デコーダ８２は、ビットストリームクロック信号ＢＳＣＫとビットストリーム信号との位相を比較し、それらの位相誤差成分を信号Ｐ／ＤとしてＶＸＯ９０にフィードバックをかける。これによってメインクロック信号ＭＣＫ、ビットストリームクロック信号ＢＳＣＫおよびビットストリーム信号の同期が達成される。信号ＳＴＤＢＹは、プログラム制御のスタンバイ信号であり、スタンバイ時にはＶＸＯ９０の発振が停止して消費電力が低減される。
【００３７】
双方向バッファ９２（例えば、米国テキサスインスツルメント社製の７４ＬＳ２４５）は、データバス用のバスバッファである。この双方向バッファ９２は、データ放送デコーダ８２からの信号ＤＩＲによって、信号の向きが切り替えられる。すなわち、双方向バッファ９２は、ＣＰＵ３０がデータを入力する場合にはコネクタＢ５４方向にデータを出力し、ＣＰＵ３０がデータを出力する場合にはデータ放送デコーダ８２およびコネクタＣ９８方向にデータを出力するよう制御される。
【００３８】
バスバッファ９４（例えば、米国テキサスインスツルメント社製の７４ＬＳ５４１）はアドレスバス用のバスバッファであり、バスバッファ９６（例えば、米国テキサスインスツルメント社製の７４ＬＳ５４１）は制御信号用のバスバッファである。コネクタＣ９８には、例えばハードディスク装置１０が接続され、数多くの受信データを長期間に渡って保存するのに用いられる。ハードディスク装置１０と各メモリ間のデータ転送は、データバス、アドレスバスＢを介して制御信号Ｂに基づいてＤＭＡ回路３０ａにより制御されるが、ハードディスク装置１０への命令は、ＥＸバスを介してソフトウェアにより与えられる。データ放送デコーダ８２は、ＥＸバスをＣＰＵ３０に結合するための入出力ポートを内蔵する。
【００３９】
ＬＥＤ（発光ダイオード）１００は、ハードディスク装置１０のアクセスランプ等に使用される。電源制御回路１０２は、衛星データ放送受信アダプタ４の電源を制御する。ゲーム機本体２から電源ラインＭＶｃｃを介して５Ｖ電圧が供給されると、電源制御回路１０２は、ＡＣアダプタ１４から供給される１２Ｖ電源を５Ｖ電圧に変換し、安定化してＳＶｃｃとして、アダプタ４内の各回路およびコネクタに電源を供給する。ＬＥＤ１０４は、パワーオン時に点灯するパイロットランプである。
【００４０】
図６は、図２におけるメモリユニット８の内部構成を示すブロック図である。図６において、このメモリユニット８は、フラッシュメモリＢ１０６を備えている。このフラッシュメモリＢ１０６は、主として長期的記憶に用いられ、他のカートリッジに差し替えて使用することにより、受信データを他のカートリッジでも利用可能になる。また、データ放送を受信できるカートリッジが複数個ある場合でもメモリユニット８を差し替えて使用できるため、カートリッジの単価を安くすることができる。なお、フラッシュメモリＢ１０６に接続された各信号線は、図４におけるフラッシュメモリＡ７６に接続されたものと同等である。
【００４１】
図７は、図４におけるマッピングコントローラ７０の内部構成を示すブロック図である。図７において、このマッピングコントローラ７０は、コントロールレジスタ１１０と、アドレスデコーダ１１２と、ＮＡＮＤゲート１１４と、スリーステートゲート１１６と、入力バッファ１１８と、マップデコーダ１２０と、アドレスセレクタ１２２と、ＰＳＲＡＭコントローラ１２４と、ＩＲＱコントローラ１２６とを備えている。
【００４２】
コントロールレジスタ１１０は、各メモリのアドレスマッピングの変更や、ＩＲＱコントロール、ライトプロテクト等の指定を行う１５種類のレジスタブロックを含む。ＣＰＵ３０から各レジスタへの書き込み時には、信号ＦＥ０〜ＦＥ１４の内の１つがアクティブになってレジスタブロックを指定し、同時に信号ＣＤ７Ｉにより書き込みデータが与えられ、信号ＣＰＵＷＲＢにより書き込みパルスが与えられる（データは、８ビット中の１ビットＤ７だけが使用される）。各レジスタブロックからＣＰＵ３０への読み出し時には、信号ＦＥ０〜ＦＥ１３でライト時と同様にレジスタを指定することにより、そのレジスタのデータがＣＤ７Ｏとして出力される（信号ＦＥ１４はリード不可）。アドレスデコーダ１１２から出力される信号Ｃは、信号ＦＥ０〜ＦＥ１３の内どれかがアクティブの状態でハイレベルになる。そのため、ＮＡＮＤゲート１１４，インバータ１１５は、信号Ｃがハイレベルで、かつ信号ＣＰＵＲＤＢがローレベルの時にスリーステートゲート１１６の出力を許可する。これにより、データＣＤ７ＯはデータバスＤ７に出力され、ＣＰＵ３０に読み込まれる。コントロールレジスタ１１０の内部構成の詳細は、図１１に示されている。
【００４３】
アドレスデコーダ１１２は、アドレスバスＡ上の信号をデコードすることにより、信号ＦＥ０〜ＦＥ１４を生成する。また、アドレスデコーダ１１２は、信号ＦＥ０〜ＦＥ１３のうちのどれかがアクティブの場合に、信号Ｃをハイレベルにする。さらに、アドレスデコーダ１１２は、各メモリが配置されるアドレスエリアをデコードし、その結果を信号ＲＯＭＳＥＬＢとしてマップデコーダ１２０に与える。
【００４４】
マップデコーダ１２０は、コントロールレジスタ１１０からのコントロール信号に基づいて、ＣＰＵ３０による特定アドレスアクセス時に、信号ＣＥ１Ｂ〜ＣＥ４Ｂのうちのどれかをアクティブにする。これによって、特定アドレスに指定のメモリ回路が割り当てられる。さらに、マップデコーダ１２０は、ＣＩＣ７８からのカートリッジ真偽判定出力Ｒ１０に基づいて、フラッシュメモリ７６へのライトプロテクト信号ＷＰＢを制御する。マップデコーダ１２０の内部構成の詳細は、図１０に示されている。
【００４５】
アドレスセレクタ１２２は、コントロールレジスタ１１０からの信号ＭＡＰＭＯＤＥに基づいて、アドレスマップ上へのメモリ回路の割り当てパターンを制御する。このアドレスセレクタ１２２により、２０モードと２１モードという２種類のマップモードを選択できる。２０モードでは、各メモリバンクの００００Ｈ〜７ＦＦＦＨと８０００Ｈ〜ＦＦＦＦＨに同じメモリイメージが配置される。ゲーム機本体においては、００Ｈ〜３ＦＨ，８０Ｈ〜ＢＦＨバンクの００００Ｈ〜７ＦＦＦＨにワークＲＡＭやＰＰＵ、ＡＰＵ制御ポートが割り当てられているため、連続的にメモリを割り当てると００００Ｈ〜７ＦＦＦＨの領域においてはメモリを読み出せないという不具合が生ずる。したがって、２０モードに設定することによりメモリに無駄が生じない。しかし２０モードでは、００００Ｈ〜７ＦＦＦＨと８０００Ｈ〜ＦＦＦＦＨに同じメモリイメージが配置されるため、実質上メモリ容量の上限がメモリマップエリアの１／２に制限される。したがって、大容量のメモリが必要な場合には、連続的にメモリを配置する方がよい。２１モードは、メモリを連続的に配置するモードである。アドレスセレクタ１２２は、これら２つのマップモードを切り替える。
【００４６】
ＰＳＲＡＭコントローラ１２４は、疑似ＳＲＡＭ７４に対してリフレッシュやアウトプットイネーブル制御、ライトプロテクトの制御を行うものであり、その内部構成の詳細は、図９に示されている。
【００４７】
ＩＲＱコントローラ１２６は、プログラムによる割り込み許可信号ＥＮＩＲＱ、割り込み終了信号ＳＲＣＩＲＱおよびフラッシュメモリからの書き込み完了信号ＲＹ／ＢＹＢに基づいて、システムクロックＳＹＳＣＫに同期した信号ＩＲＱＢを生成し、ＣＰＵ３０に与える。信号ＩＲＱＢは、同様にコントロールレジスタ１１０にも与えられ、信号ＳＲＣＩＲＱの再リセットに使用される。ＩＲＱコントローラ１２６の内部構成の詳細は、図８に示されている。
【００４８】
図８は、図７におけるＩＲＱコントローラ１２６の内部構成を示すブロック図である。図８において、このＩＲＱコントローラ１２６は、Ｄフリップフロップ（以下、Ｄ−ＦＦと称す）１３０と、インバータ１３５と、Ｄ−ＦＦ１３４と、ＯＲゲート１３６とを備えている。
【００４９】
Ｄ−ＦＦ１３０は、フラッシュメモリ７６の書き込み完了時に、信号ＲＹ／ＢＹＢがローレベルからハイレベルに変化したとき、この時点で信号ＥＮＩＲＱをラッチする。通常、このＤ−ＦＦ１３０は、ローレベルの状態を維持しているため、信号ＥＮＩＲＱがローレベルの場合には、たとえクロックが与えられたとしても状態は変化しない。従って、信号ＥＮＩＲＱがハイレベルの時のみ信号ＩＲＱＢが発生される。
【００５０】
Ｄ−ＦＦ１３０の状態がローレベルからハイレベルに変化すると、Ｄ−ＦＦ１３４のＤ入力はハイレベルからローレベルに変化する。Ｄ−ＦＦ１３４は、Ｄ入力がローレベルになった直後のシステムクロック（ＣＰＵの動作クロック）ＳＹＳＣＫの立ち上がりで、このローレベル信号をラッチする。これによって、信号ＩＲＱＢがハイレベルからローレベルに変化し、ＣＰＵ３０に割り込みがかかる。Ｄ−ＦＦ１３４は、このようにして、信号ＩＲＱＢの出力タイミングを調整する。
【００５１】
ＯＲゲート１３６は、信号ＩＲＱＢが出力された後、プログラムによって信号ＳＲＣＩＲＱがローレベルからハイレベルに変化させられると、ハイレベルを出力する。これによって、Ｄ−ＦＦ１３０がリセットされる。Ｄ−ＦＦ１３０の出力がローレベルになると、Ｄ−ＦＦ１３４のＤ入力はハイレベルとなり、次のＳＹＳＣＫの立ち上がりで信号ＩＲＱＢがハイレベルに戻る。信号ＩＲＱＢがハイレベルになると、コントロールレジスタ１１０により、信号ＳＲＣＩＲＱは自動的にハイレベルからローレベルに変化する。また、Ｄ−ＦＦ１３０とＤ−ＦＦ１３４は、リセット信号ＲＥＳＥＴＢによってもクリア（およびセット）され、初期化される。
【００５２】
図９は、図７におけるＰＳＲＡＭコントローラ１２４の内部構成を示すブロック図である。図９において、このＰＳＲＡＭコントローラ１２４は、Ｄ−ＦＦ１４０，１４２と、インバータ１４４と、ＡＮＤゲート１４６と、インバータ１４８と、反転入力のＮＡＮＤゲート１５０と、反転入力のＮＯＲゲート１５２と、ＮＡＮＤゲート１５４と、インバータ１５６，１５８とを備えている。
【００５３】
Ｄ−ＦＦ１４０は、Ｄ−ＦＦ１４２と、インバータ１４４，１４８と、ＡＮＤゲート１４６と協働して、システムリセット時の疑似ＳＲＡＭ７４に対するリフレッシュ信号を生成する。通常使用状態（リセット信号ＲＥＳＥＴＢがハイレベル）の時、Ｄ−ＦＦ１４０，１４２は、常にハイレベルの状態にセットされ、リフレッシュ信号の生成を行わない。リセット状態（リセット信号ＲＥＳＥＴＢがローレベル）の時は、信号ＣＥ１Ｂが必ずハイレベルになり、ＣＥ端子入力がハイレベルになって、Ｄ−ＦＦ１４０が能動化される。その後、システムクロックとは非同期に動作するＣＩＣ７８のためのクロック信号ＣＩＣＣＫの最初の立ち上がりのパルスによってＤ−ＦＦ１４０にローレベルがセットされ、同様に最初の立ち下がりのパルスによってＤ−ＦＦ１４２にローレベルがセットされる。これにより、Ｄ−ＦＦ１４２は、この後リセット信号が再びハイレベルになるまでリフレッシュ信号をローレベルのまま維持する。
【００５４】
ＮＡＮＤゲート１５０は、通常アクセス時の疑似ＳＲＡＭ７４のアウトプットコントロールを行う。信号ＣＥ１Ｂがローレベルでかつ信号ＣＰＵＲＤＢがローレベルのときには、ＣＰＵ３０が疑似ＳＲＡＭ７４をアクセスしている状態であり、この場合には、ローレベルを出力して疑似ＳＲＡＭ７４からのデータ出力を許可する。
【００５５】
ＮＯＲゲート１５２には、リセット時のリフレッシュ、通常時のアウトプットコントロールとは別に、通常時のリフレッシュ制御として、信号ＲＥＦＲＥＳＨＢが入力される。負入力のＮＯＲゲート１５２は、これら３種類の信号のどれか１つがアクティブになった場合、信号ＰＯＥＢ／ＲＦＢを疑似ＳＲＡＭ７４に与える。
【００５６】
ＮＡＮＤゲート１５４は、インバータ１５６および１５８と協働して、疑似ＳＲＡＭ７４への書き込み制御信号ＰＷＥＢを生成する。ＮＡＮＤゲート１５４は、信号ＳＹＳＣＫがハイレベルで、かつプログラムによる疑似ＳＲＡＭ７４への書き込み許可信号ＥＮＲＡＭＷＲがハイレベルで、かつ疑似ＳＲＡＭ７４のチップイネーブル信号ＣＥ１Ｂがローレベル（アクティブ）で、かつＣＰＵ３０からの書き込み制御信号ＣＰＵＷＲＢがローレベル（アクティブ）の時に、疑似ＳＲＡＭ７４への書き込み制御信号ＰＷＥＢをアクティブにする。
【００５７】
図１０は、図７におけるマップデコーダ１２０の内部構成を示すブロック図である。図１０において、このマップデコーダ１２０は、ＲＯＭデコーダ１６０と、ＰＳ−ＲＡＭデコーダ１６２と、フラッシュデコーダ１６４と、メモリユニットデコーダ１６６と、ＡＮＤゲート１６８とを備えている。
【００５８】
ＲＯＭデコーダ１６０，ＰＳ−ＲＡＭデコーダ１６２，フラッシュデコーダ１６４およびメモリユニットデコーダ１６６は、アドレスバスＡを介して与えられるアドレスをデコードすることにより、それぞれ、マスクＲＯＭ７２，疑似ＳＲＡＭ７４，フラッシュメモリＡ７６およびフラッシュメモリＢ１０６をイネーブル状態にするためのチップイネーブル信号ＣＥ２Ｂ，ＣＥ１Ｂ，ＣＥ３ＢおよびＣＥ４Ｂを出力する。
【００５９】
ここで、メモリ割り当て時のマスクＲＯＭ７２，疑似ＳＲＡＭ７４，フラッシュメモリＡ７６およびフラッシュメモリＢ１０６の優先順位は、一例として
マスクＲＯＭ＞疑似ＳＲＡＭ＞フラッシュメモリＡ＞フラッシュメモリＢ
に選ばれている。
【００６０】
マスクＲＯＭエリアと疑似ＳＲＡＭエリアが重なり、ＲＯＭデコーダ１６０およびＰＳ−ＲＡＭデコーダ１６２が同時にアクティブになるべき場合でも、信号ＣＥ２Ｂにより、疑似ＳＲＡＭデコーダ１６２はアクティブ化を阻害される。そのため、信号ＣＥ１Ｂが非アクティブ、信号ＣＥ２Ｂがアクティブとなり、マスクＲＯＭ７２が優先的にアクセスされる。
【００６１】
同様に、信号ＣＥ２Ｂ、ＣＥ１Ｂのどちらかがアクティブの場合には、フラッシュデコーダ１６４のアクティブ化が阻害され、信号ＣＥ３Ｂはアクティブにならない。また、信号ＣＥ２Ｂ、ＣＥ１Ｂ、ＣＥ３Ｂのどれかがアクティブの場合には、メモリユニットデコーダ１６６のアクティブ化が阻害され、信号ＣＥ４Ｂはアクティブにならない。
【００６２】
ＡＮＤゲート１６８の出力信号ＷＰＢは、フラッシュメモリＡ７６およびフラッシュメモリＢ１０６への書き込み禁止指示信号ＥＮＦＭＷＲとＣＩＣ７８からの真偽判定結果Ｒ１０のどちらがローレベル（アクティブ）になっても、ローレベルとなり、フラッシュメモリへの書き込みが禁止される。
【００６３】
図１１は、図７におけるコントロールレジスタ１１０の内部構成を示すブロック図である。図１１において、このコントロールレジスタ１１０は、Ｄ−ＦＦ１８０と、インバータ１８１と、ＯＲゲート１８２と、ＡＮＤゲート１８４と、Ｄ−ＦＦ１８６と、ＡＮＤゲート１８８と、レジスタブロック１９０〜３００と、ＯＲゲート１９８とを備えている。
【００６４】
Ｄ−ＦＦ１８０は、通常、ローレベルの状態を保持しており、割り込みが入った（信号ＩＲＱＢがローレベルになった）後に、プログラムによってこのレジスタ（信号ＦＥ０で指定される）に書き込みが行われた時のみ、ハイレベルの状態に移行する。Ｄ−ＦＦ１８０がハイレベル状態になると、ＩＲＱコントローラ１２６により、信号ＩＲＱＢがハイレベルに戻される。これにより、Ｄ−ＦＦ１８０は再びローレベルになる。また、リセット信号ＲＥＳＥＴＢがローレベル時（システムリセット時）にも、インンバータ１８１，ＯＲゲート１８２により、Ｄ−ＦＦ１８０はリセットされる。
【００６５】
ＣＰＵ３０が特定アドレスをアクセスすると、信号ＦＥ０がハイレベルになるため、ＡＮＤゲート１８４からは、信号ＩＲＱＢの状態が信号ＲＤ０として出力される。この信号ＲＤ０は、ＯＲゲート１９８，スリーステートゲート１１６（図７参照）を介して、ＣＰＵ３０に読み込まれる。Ｄ−ＦＦ１８６は、ＣＰＵ３０からこのレジスタ（信号ＦＥ１で指定される）に対して書き込みが行われた時、そのデータを保持し、割り込み許可信号ＥＮＩＲＱとして出力する。ＣＰＵ３０が特定アドレスをアクセスすると、信号ＦＥ１がハイレベルになるため、ＡＮＤゲート１８８からは、信号ＥＮＩＲＱの状態が信号ＲＤ１として出力される。この信号ＲＤ１は、ＯＲゲート１９８，スリーステートゲート１１６を介して、ＣＰＵ３０に読み込まれる。
【００６６】
レジスタブロック１９０は、Ｄ−ＦＦ１９２，１９４，ＡＮＤゲート１９６を含み、ＣＰＵ３０から書き込まれたマップモードを保持し、信号ＭＡＰＭＯＤＥとして出力する。ＣＰＵ３０は、まず、Ｄ−ＦＦ１９２に対してマップモード設定データの書き込み信号ＦＥ２を発生し、次にＤ−ＦＦ１９４に対して書き込み信号ＦＥ１４を発生する。信号ＦＥ１４に応答して、Ｄ−ＦＦ１９２の状態がＤ−ＦＦ１９４にラッチされ、設定したマップモードが有効になる。このように２段階の設定手法をとる理由は、レジスタブロック１９０〜レジスタブロック３００への設定を順次行い、これらの設定を同時に有効にすることにより、アドレスマップ変更時の移行期間のマップ状態を考慮する必要が無くなり、プログラムの作成が容易になるという利点があるからである。また、ＡＮＤゲート１９６により、現在のマップモードの設定値をＣＰＵ３０からリードできる。なお、他のレジスタブロック２００〜３００もレジスタブロック１９０と同様の回路構成を有している。すなわち、レジスタブロック２００〜３００のそれぞれは、前段のＤ−ＦＦ２０２〜３０２と、後段のＤ−ＦＦ２０４〜３０４と、ＡＮＤゲート２０６〜３０６とを含む。
【００６７】
ＣＰＵ３０が特定のレジスタブロックをリードすると、それに対応するレジスタブロックのみが、その出力（ＲＤ０〜ＲＤ１３）にロー／ハイレベルの２つの状態を持つことができる。ＣＰＵ３０により指定されなかったレジスタブロックは、ＡＮＤゲート１８４，１８８，１９６〜３０６により、その出力がローレベルに固定される。各レジスタブロックの出力の論理和をとるＯＲゲート１９８の出力信号ＣＤ７Ｏは、ＣＰＵ３０に指定されたレジスタブロックの出力がハイレベルの時にハイレベルになり、当該レジスタブロックの出力がローレベルの時にローレベルになる。すなわち、ＣＰＵ３０から指定されたレジスタブロックの内容が、信号ＣＤ７Ｏとして出力されることになる。
【００６８】
図１２は、図５におけるデータ放送デコーダ８２の内部構成を示すブロック図である。図１２において、このデータ放送デコーダ８２は、アンプ／ＶＸＯコントローラ４０２と、プリデコーダ４０４と、チャンネルデテクタ４０６と、チャンネルデコーダ４０８と、ホストインターフェース４１０と、ＰＣＭデコーダインターフェース４１２と、ＥＥＰＲＯＭポート４１４と、拡張ポート４１６とを備えている。
【００６９】
アンプ／ＶＸＯコントローラ４０２は、ビットストリーム信号ＢＳＴをアンプで増幅し、信号ＢＳＴ０２としてＰＣＭデコーダ８４へ出力する。また、アンプ／ＶＸＯコントローラ４０２は、ＰＣＭデコーダ８４からのビットストリームクロック信号ＢＳＣＫとビットストリーム信号ＢＳＴとの位相誤差を検出し、ＶＸＯ９０に信号Ｐ／Ｄとしてフィードバックすることにより、クロック再生用のＰＬＬ回路を構成する。
【００７０】
ＰＣＭデコーダ８４は、信号ＢＳＴ０２をデコードし、信号ＦＤＩＮとしてデータ放送デコーダ８２に返す。プリデコーダ４０４は、信号ＦＤＩＮを受け、データチャンネルをデコードし、シリアルデータＳＤＯとしてチャンネルデテクタ４０６に出力する。このプリデコーダ４０４は、システムシーケンサ４０４ａ、Ｍ・Ｓフレーム同期検出回路４０４ｂと、パケット斜めデインターリーブ回路４０４ｃと、ＢＣＨ（１６，５）誤り訂正回路４０４ｄと、ＳＤＳＣ（２７２，１９０）誤り訂正回路４０４ｅとを含む。
【００７１】
システムシーケンサ４０４ａは、クロックＭＣＫを基に各種タイミング信号を生成し、デコードシーケンスをコントロールする。また、システムシーケンサ４０４ａは、信号ＦＤＩＮに同期したＰＣＭデコーダ８４からのビットストリームクロックＢＳＣＫに基づいて、シリアルデータＳＤＯに同期したビットクロックＢＴＣＫを生成し、チャンネルデテクタ４０６に出力する。さらに、システムシーケンサ４０４ａは、シリアルデータＳＤＯにおけるパケットの先頭を示す信号ＰＳＹＮＣを生成し、チャンネルデテクタ４０６に出力する。
【００７２】
Ｍ・Ｓフレーム同期検出回路４０４ｂは、信号ＦＤＩＮのフレーム同期信号に基づいて、マスターフレームやスーパーフレームの同期検出を行う。パケット斜めデインターリーブ回路４０４ｃは、放送データをパケット毎のデータ列に並べ変える（通常、放送データは、誤り訂正の効率を上げるために、斜めインターリーブされて送信される）。
【００７３】
ＢＣＨ（１６、５）誤り訂正回路４０４ｄは、デインターリーブされた放送データの各パケットのパケットヘッダ部の誤り訂正を行う。誤り訂正をしきれずにエラーが残った場合、ＢＣＨ（１６、５）誤り訂正回路４０４ｄは、信号ＨＥＲＲを出力して、ヘッダー部にエラーが発生したことを各ブロックに知らせる。
【００７４】
ＳＤＳＣ（２７２，１９０）誤り訂正回路４０４ｅは、パケットデータ本体の誤り訂正を行う。誤り訂正をしきれずにエラーが残った場合、ＳＤＳＣ（２７２，１９０）誤り訂正回路４０４ｅは、信号ＰＥＲＲを出力して、データ本体にエラーが発生したことを各ブロックに知らせる。
【００７５】
チャンネルデテクタ４０６は、チャンネルデコーダ４０８と協働して、ＣＰＵ３０が指定した論理チャンネルの放送データを抜き出し、ＣＲＣ演算を行い、バッファリングし、ＣＰＵ３０へ出力する。また、チャンネルデテクタ４０６は、論理チャンネルの一致検出を行い、バッファリングの許可を与える。このチャンネルデテクタ４０６の内部構成の詳細は、図１３に示されている。
【００７６】
チャンネルデコーダ４０８は、ＣＰＵ３０が指定したチャンネルのデータをデコードし、バッファリングするための回路を２系統含む（チャンネル１デコーダ／バッファ４０８ａ，チャンネル２デコーダ／バッファ４０８ｂ）。これらチャンネル１デコーダ／バッファ４０８ａ，チャンネル２デコーダ／バッファ４０８ｂは、同様の回路構成を有するが、その内部構成の詳細は、図１４〜図１９に詳細に示されている。
【００７７】
ホストインターフェース４１０は、入力ポート４１０ａ、出力ポート４１０ｂ、アドレスデコーダ４１０ｃ、レジスタ４１０ｄ等を含み、各ブロックとホストコンピュータ間のインターフェースを行う。
【００７８】
ＰＣＭデコーダインターフェース４１２は、ＰＣＭデコーダ８４とＣＰＵ３０間のインターフェースを行う入出力ポートを含む。ＥＥＰＲＯＭポート４１４は、図５のＥＥＰＲＯＭ８８とＣＰＵ３０との間のインターフェースを行う入出力ポートを含む。ＥＥＰＲＯＭ８８は、シリアル入出力タイプを採用し、これに与えるチップセレクトＣＳ，シリアルクロックＳＫ，出力データＤＯおよび入力データＤＩが、全てプログラムによりコントロールされる。拡張ポート４１６は、例えばハードディスク等を接続するためのインターフェース用入出力ポートを含む。
【００７９】
図１３は、図１２におけるチャンネルデテクタ４０６の内部構成の詳細を示すブロック図である。図１３において、このチャンネルデテクタ４０６は、Ｓ−Ｐ変換回路４２０と、ビットカウンタ４２２と、設定レジスタ４２４と、チャンネル１用のＬＣＩ比較回路（以下「第１の比較回路」という）４２６と、Ｄ−ＦＦ４２８，４３０，４３６，４３８と、チャンネル２用のＬＣＩ比較回路（以下「第２の比較回路」という）４３４と、ＡＮＤゲート４３２，４４０とを備えている。
【００８０】
Ｓ−Ｐ変換回路４２０は、プリデコーダ４０４からのシリアルデータＳＤＯを８ビット単位のパラレルデータに変換する。ビットカウンタ４２２は、信号ＰＳＹＮＣによりクリアされ、信号ＢＴＣＫによりアップカウントされるカウンタを含み、パケットデータをデコードするための各種信号を出力する。ビットカウンタ４２２から出力される各種信号のタイミングの詳細は、図２１のタイムチャートに示されている。
【００８１】
設定レジスタ４２４は、ＣＰＵ３０から設定される論理チャンネルデータを記憶する。論理チャンネルデータは、５ビットのＬＣＩ１データと、６ビットのＬＣＩ２データとを含み、本実施例ではこれを２系統持つ。信号ＷＥ０，ＷＥ１，ＷＥ２，ＷＥ３は、それぞれ、チャンネル１のＬＣＩ１データ，チャンネル１のＬＣＩ２データ，チャンネル２のＬＣＩ１データ，チャンネル２のＬＣＩ２データの書き込み許可信号であり、ＣＰＵ３０から出力される信号ＰＡＷＲに同期して書き込まれる。ＲＥ０〜ＲＥ３は、設定データの読み出し許可信号である。設定レジスタ４２４に設定されたデータは、Ｃ１Ｌ１、Ｃ１Ｌ２、Ｃ２Ｌ１、Ｃ２Ｌ２データとして出力され、論理チャンネルデータの一致判定に利用される。同時に、設定レジスタ４２４には、データグループ構成を指示する信号ＣＨ１ＤＧＳＴＹ，ＣＨ２ＤＧＳＴＹがＣＰＵ３０から書き込まれる。これら信号ＣＨ１ＤＧＳＴＹ，ＣＨ２ＤＧＳＴＹは、それぞれ１ビットの信号であり、上記ＬＣＩ１データと同時に書き込まれる。
【００８２】
次に、図２１のタイムチャートを参照して、第１の比較回路４２６、Ｄ−ＦＦ４２８，４３０、ＡＮＤゲート４３２の動作を説明する。ＬＣＩ１データはシリアルデータＳＤＯの第１〜第５ビットに対応し、ＬＣＩ２データはシリアルデータＳＤＯの第１７〜第２２ビットに対応する。信号ＬＣＩ１ＳＹＮＣは、シリアルデータＳＤＯの第５ビット目にハイレベルになる信号であり、第１の比較回路４２６およびＤ−ＦＦ４２８に与えられる。
【００８３】
第１の比較回路４２６は、信号ＬＣＩ１ＳＹＮＣがハイレベルのときＳ−Ｐ変換４２０からのデータとＣ１Ｌ１データとを比較し、信号ＬＣＩ１ＳＹＮＣがローレベルのときＳ−Ｐ変換４２０からのデータとＣ１Ｌ２データとを比較する。第１の比較回路４２６は、比較の結果、両データが一致していればハイレベル信号を出力し、一致していなければローレベル信号を出力する。すなわち、シリアルデータＳＤＯの第５ビット目のタイミングで論理チャンネルＬＣＩ１の一致／不一致が検査され、Ｄ−ＦＦ４２８に対してその結果が出力される。Ｄ−ＦＦ４２８は、信号ＬＣＩ１ＳＹＮＣがハイレベルでかつ信号ＢＴＣＫの立ち上がりのタイミングで、第１の比較回路４２６の出力をラッチする。そのため、Ｄ−ＦＦ４２８は、結果的に論理チャンネルＬＣＩ１の比較結果を保持することになる。
【００８４】
次に、シリアルデータＳＤＯの第２２ビット目においては、Ｓ−Ｐ変換４２０からはＬＣＩ２データが出力される。このタイミングでは、信号ＬＣＩ１ＳＹＮＣはローレベルである。そのため、第１の比較回路４２６は、Ｓ−Ｐ変換４２０からのデータとＣ１Ｌ２データとを比較し、その結果をＤ−ＦＦ４３０に出力する。Ｄ−ＦＦ４３０は、シリアルデータＳＤＯの第２２ビット目でハイレベルとなるＬＣＩ２ＳＹＮＣ信号を受け、信号ＢＴＣＫの立ち上がりで第１の比較回路４２６の出力をラッチする。そのため、Ｄ−ＦＦ４３０は、結果的に論理チャンネルＬＣＩ２データの比較結果を保持することになる。Ｄ−ＦＦ４２８のＬＣＩ１比較結果データと、Ｄ−ＦＦ４３０のＬＣＩ２比較結果データとは、ＡＮＤゲート４３２に出力される。ＡＮＤゲート４３２は、ヘッダエラーが無い場合（信号ＨＥＲＲがローレベルの時）、両比較結果データが「一致」を示していれば、バッファリング許可信号ＣＨ１ＥＮＡをハイレベルにする。
【００８５】
チャンネル２においても、上記と同様に、第２の比較回路４３４、Ｄ−ＦＦ４３６，４３８、ＡＮＤゲート４４０により、バッファリング許可信号ＣＨ２ＥＮＡが生成される。シリアルデータＳＤＯの第３０ビット目には、信号ＰＦＸＳＹＮＣがハイレベルになり、Ｓ−Ｐ変換４２０からは、プリフィックスデータ（ＳＣＣ，ＣＩ，ＤＴＣ）の計８ビットが出力される。このタイミングで信号ＢＴＣＫが立ち上がると、Ｄ−ＦＦ４４２にはプリフィックスデータがラッチされる。ここで、ＳＣＣはスクランブルの有無を示す信号、ＣＩはパケットの連続性を示すカウント値、ＤＴＣはデータグループの先頭と終端を示すフラグである。シリアルデータＳＤＯの第２８８ビット目には、信号ＰＥＲＲＬＤがハイレベルになる。また、プリデコーダ４０４は、ＳＤＳＣ（２７２，１９０）誤り訂正の結果、訂正不能エラーが発生したかどうかのフラグをＰＥＲＲとして出力する。このタイミングで信号ＢＴＣＫが立ち上がると、Ｄ−ＦＦ４４４は、信号ＰＥＲＲをラッチする。
【００８６】
ビットカウンタ４２２は、これら以外にも、８ビット単位でデータのタイミングを示す信号ＤＡＴＡＳＹＮＣと、実データの終端タイミングを示す信号ＤＢＬＡＳＴと、当該パケットのプリフィックスデータと、実データおよびフラグのすべてがそろったことを示す信号ＰＥＲＲＳＹＮＣとを発生する。
【００８７】
前述したように、本実施例では、デコーダ／バッファは２系統あるが（チャンネル１用のデコーダ／バッファ４０８ａと、チャンネル２用のデコーダ／バッファ４０８ｂ）、図１４はそのうちのチャンネル１用のデコーダ／バッファ４０８ａの内部構成を示している。なお、チャンネル２用のデコーダ／バッファ４０８ｂも、デコーダ／バッファ４０８ａと同じ回路構造を持っているため、ここでは説明を省略する。図１４において、このチャンネル１用のデコーダ／バッファ４０８ａは、データコントローラ４５０と、プリフィックスメモリ４５２と、データメモリ４５４と、データセレクタ４５６とを備えている。
【００８８】
データコントローラ４５０は、バッファリング許可信号ＣＨ１ＥＮＡを受け、データサイズのカウント、連続性指標ＣＩのチェック、データグループ単位でのＣＲＣ演算を行い、バッファリングのためのアドレスを発生する。このデータコントローラ４５０の内部構成の詳細は、図１５に示されている。プリフィックスメモリ４５２は、プリフィックスデータ記憶用バッファであり、データコントローラ内のプリフィックスＦＩＦＯインターフェース４７２（図１５参照）により、ＦＩＦＯメモリとして使用される。データメモリ４５４は、データグループデータ記憶用バッファであり、データコントローラ内のデータＦＩＦＯインターフェース４７４（図１５参照）により、ＦＩＦＯメモリとして使用される。データセレクタ４５６は、ＣＰＵ３０からのアクセスに対応し、プリフィックスデータ、データグループデータ、バッファリングされたパケット数のうちのどれかをＣＰＵ３０に出力する。また、データセレクタ４５６は、内部にエラーフラグチェックのためのＯＲループを含み、連続して転送した複数パケット分のエラーフラグにエラーがあったかどうかを簡単に判定することができる。このデータセレクタ４５６の内部構成の詳細は、図１６に示されている。
【００８９】
図１５は、図１４におけるデータコントローラ４５０の内部構成の詳細を示すブロック図である。図１５において、このデータコントローラ４５０は、データグループシーケンサ４６０と、データサイズカウンタ４６２と、ＣＩカウンタ４６４と、排他的論理和ゲート４６６と、ＣＲＣ回路４６８と、ＯＲゲート４７０と、プリフィックスＦＩＦＯインターフェース４７２と、データＦＩＦＯインターフェース４７４とを備えている。
【００９０】
データグループシーケンサ４６０は、タイミング発生回路４６０ａを含み、データサイズのカウント、ＣＩのカウント、ＣＲＣ演算、ＦＩＦＯへのデータの書き込み等のタイミングを制御するためのタイミング信号を発生する。また、データグループシーケンサ４６０は、受信許可フラグレジスタ４６０ｂおよびクリアフラグレジスタ４６０ｃを含み、ＣＰＵ３０からの制御に従って、データ放送の受信許可または受信禁止とともに、バッファクリアを行う。
【００９１】
以下に、各ブロックの説明を交え、データグループシーケンサ４６０の動作を説明する。
１）受信許可および禁止
ＣＰＵ３０が特定の番地にデータを書き込むと、ＣＰＵ３０から信号ＰＡＷＲが、ホストインターフェース４１０内のアドレスデコーダ４１０ｃから信号ＷＥ１０が与えられ、データバスＢ上のデータが許可フラグレジスタ４６０ｂに書き込まれる。許可フラグレジスタ４６０ｂの出力は、各ブロックへの制御信号の出力を許可し、これによりデータ放送受信が許可される。なお、制御信号の出力は、信号ＣＨ１ＥＮＡによっても制御される。すなわち、論理チャンネルが一致しない場合には、たとえ許可フラグがＯＮになっていてもデータ放送は受信されない。また、データの受信開始は、先頭パケットであることを示すプリフィックスデータが入力されることによりトリガされるため、データグループの途中のパケットから受信されることはない。ＣＰＵ３０が特定番地をリードすると、信号ＲＥ１０がアドレスデコーダ４１０ｃから与えられ、許可フラグレジスタ４６０ｂの内容をリードできる。
【００９２】
ＣＰＵ３０が別の特定番地にデータを書き込むと、信号ＰＡＷＲ，ＷＥ１１によりクリアフラグレジスタ４６０ｃにデータが書き込まれる。クリアフラグレジスタ４６０ｃにデータが書き込まれた場合、その出力信号ＢＦＣＬＲは、各ブロックに対するリセット信号として作用する。その後、クリアフラグレジスタ４６０ｃは、自動的にクリアされる。また、システムリセット信号ＲＥＳＥＴＢが与えられた場合には、クリアフラグレジスタ４６０ｃにデータが書き込まれた時と同様に、信号ＢＦＣＬＲによるリセット動作を行う。
【００９３】
２）データサイズカウンタ４６２の制御
データグループの構成は２種類あり、設定レジスタ４２４（図１３参照）からの信号ＣＨ１ＤＧＳＴＹ（ＣＰＵ３０により設定される）により識別される。このうち、第１のデータグループ構成では、転送データのサイズを示すデータＤＧＳが与えられる。ここで、データグループとは、前述のパケットが複数個連なって構成されるもので、このデータグループの先頭パケットの最前部にデータグループヘッダが置かれ、その中にデータＤＧＳが含まれる。データＤＧＳは、先頭パケットの３〜５バイト目を占めるため、このタイミングで信号ＤＳＬＤが発生し、データサイズカウンタ４６２に３バイト分のデータＤＧＳがロードされる。
【００９４】
その後、データサイズカウンタ４６２には、信号ＤＡＴＡＳＹＮＣに基づいて信号ＤＳＤＥＣが与えられ、信号ＢＴＣＫの立ち上がりでダウンカウントカウントされる。これにより、データサイズカウンタ４６２は、複数パケットにまたがってデータサイズをダウンカウントし続け、データの残りが１になった時点で信号ＤＳＥＱを発生する。なお、データサイズカウンタ４６２は、ＣＲＣ演算を行うタイミングと、その結果をロードするタイミングとを決定するためのものであり、これによってデータのバッファリングを中止するものではない。すなわち、データのバッファリング中止は、プログラムにより上述のクリアフラグレジスタ４６０ｃをＯＮにすることによって制御される。ハードウェア的には、システムリセットＲＥＳＥＴＢが発生しない限り、自動的にバッファリングが中止されることはない。
【００９５】
３）ＣＲＣ回路４６８の制御
ＣＲＣ回路４６８は、転送されたデータグループデータにエラーがないかどうかをチェックするための回路であり、本実施例ではこれを自動的に行うことにより、ソフトウェアの負担を軽減している。ＣＲＣ回路４６８は、本願出願人が出願人である特開平５−１５１００７号公報に詳細に述べられる回路構造を基本とし、これを８ビットパラレルデータを入力とし、生成多項式を固定化した回路が用いられる。データグループの先頭パケットにおいて信号ＣＲＣＣＬＲが発生すると、ＣＲＣ演算の初期値が０に設定される。その後、信号ＤＡＴＡＳＹＮＣに基づいて生成された信号ＣＲＣＮＸＴに同期して、各データ毎にＣＲＣ演算が行われる。ＣＲＣ演算においては、エラーが無い場合、演算結果が最終的に０になるため、ＣＲＣ回路４６８は、演算結果が０であるかどうかを判定する回路を含む。ＣＲＣ演算の終了時には、ＣＲＣ回路４６８に信号ＣＲＣＯＫＬＤが与えられ、ＣＲＣ演算結果が０であればローレベルが、０でなければハイレベルがラッチされる。
【００９６】
ＣＲＣ演算の終了タイミングは、データグループ構成によって異なる。第１のデータグループ構成の場合は、データサイズカウンタ４６２からの信号ＤＳＥＱに基づいて信号ＣＲＣＯＫＬＤが生成され、第２のデータグループ構成の場合は、パケット終端を示すプリフィックスデータと当該パケットのデータの終わりを示す信号ＤＢＬＡＳＴに基づいて信号ＣＲＣＯＫＬＤが生成される。
【００９７】
ＣＲＣの演算結果は、ＯＲゲート４７０に出力される。このＯＲゲート４７０は、ＣＲＣ演算でエラーが発生したか、または訂正不能の誤りがあった場合（信号ＰＥＲＲＬＴがハイレベルの場合）には、信号ＣＲＣＥＲＲをハイレベルにして受信データに誤りがあることを示す。
【００９８】
４）ＣＩカウンタ４６４の制御
ＣＩカウンタ４６４は、データグループ内における各パケットの連続性を確認するための回路である。各パケットのプリフィックスデータには、４ビットのＣＩデータが含まれており、同一データグループの連続するパケット毎に０、１、２、…というように連番がふってある（１５の次は０にもどる）。信号ＣＩＬＤは、先頭パケットのプリフィクスデータのラッチタイミングを示す信号ＰＦＸＳＹＮＣがハイレベルになった次のビットタイミングで発生され、チャンネルデテクタ４０６内にラッチされたＣＩデータをＣＩカウンタ４６４にロードする。以降、信号ＰＥＲＲＳＹＮＣに同期してＣＩカウンタ４６４がアップカウントされる。ＣＩカウンタ４６４のカウント値とパケットプリフィックスのＣＩデータは、排他的論理和ゲート４６６で比較され、不一致の場合には、信号ＣＩＥＲＲがハイレベルとなりパケット連続性エラーを示す。具体的には、あるパケットにおいてヘッダーエラーが生じた場合（信号ＨＥＲＲがハイレベルの場合）には、チャンネルイネーブル信号（例えば、ＣＨ１ＥＮＡ）がアクティブにならず、パケット抜けが生ずる。ＣＩカウンタ４６４は、このようなパケット抜けを検出するために有効である。
【００９９】
５）プリフィックスＦＩＦＯインターフェース４７２の制御
プリフィックスＦＩＦＯインターフェース４７２は、図１４のチャンネル１プリフィックスメモリ４５２に対するアドレス信号を生成し、かつ、蓄えたプリフィックスデータの数（すなわち、パケット数）をカウントする。このとき、データグループシーケンサ４６０は、メモリへの書き込み制御信号ＰＦＩＦＯＷＲを、信号ＰＥＲＲＳＹＮＣに基づいて生成する。プリフィックスメモリ４５２が一杯になった時には、信号ＰＦＵＬが出力され、それ以上のデータ書き込みが禁止される。このプリフィックスＦＩＦＯインターフェース４７２の内部構成の詳細は、図１７に示されている。
【０１００】
６）データＦＩＦＯインターフェース４７４の制御
データＦＩＦＯインターフェース４７４は、図１４のチャンネル１データメモリ４５４に対するアドレス信号を生成する。メモリへの書き込み制御信号ＤＦＩＦＯＷＲは、信号ＤＡＴＡＳＹＮＣに基づいて生成される。データメモリ４５４が一杯になった時には、信号ＤＦＵＬが出力され、それ以上のデータ書き込みが禁止される。このデータＦＩＦＯインターフェース４７４の内部構成の詳細は、図１８に示されている。
【０１０１】
図１６は、図１４におけるデータセレクタ４５６の内部構成の詳細を示すブロック図である。図１６において、このデータセレクタ４５６は、Ｄ−ＦＦ４８０，４８２と、マルチプレクサ４８４と、ＯＲループ４８３とを備えている。ＯＲループ４８３は、ＯＲゲート４８８，４９４と、Ｄ−ＦＦ４８６と、インバータ４９０と、遅延回路４９２とを含む。
【０１０２】
Ｄ−ＦＦ４８０は、通常動作時は、信号ＣＬＫ１９毎にデータをラッチし続けるが、プリフィックスメモリ４５２へのデータ書き込み時には、データをラッチしない。従って、Ｄ−ＦＦ４８０には、常にＣＰＵ３０が次にリードすべきプリフィックスデータがラッチされる。Ｄ−ＦＦ４８２は、Ｄ−ＦＦ４８０と同様に、常にＣＰＵ３０が次にリードすべきデータグループデータをラッチする。これらＤ−ＦＦ４８０，４８２の動作の詳細は、図２２のタイミングチャートを用いて後述する。
【０１０３】
ＣＰＵ３０が特定番地をリードすると、その時のアドレス値に従って、ホストインターフェース４１０内のアドレスデコーダ４１０ｃから、信号ＲＥ２０、ＰＦＩＦＯＲＤ、ＤＦＩＦＯＲＤ、ＲＥ２１が出力される。これらの信号ＲＥ２０、ＰＦＩＦＯＲＤ、ＤＦＩＦＯＲＤ、ＲＥ２１は、マルチプレクサ４８４に入力され、それぞれ、入力端子Ｉ０、Ｉ１、Ｉ２、Ｉ３から入力されるデータを、データバスＢに対して出力するよう、マルチプレクサ４８４の内部状態を切り替える。
【０１０４】
データＰＦＣＮＴ１は、現在バッファメモリ４５２，４５４にたまっているプリフィックスデータのカウント値（すなわち、受信したパケットの数）であり、信号ＲＥ２０によって選択される。データＣ１ＰＯＤは、プリフィックスメモリ４５２に蓄えられた、次にＣＰＵ３０にリードされるべきプリフィックスデータであり、信号ＰＦＩＦＯＲＤによって選択される。データＣ１ＤＯＤは、データメモリ４５４に蓄えられた、次にＣＰＵ３０にリードされるべきデータグループデータであり、信号ＤＦＩＦＯＲＤによって選択される。入力端子Ｉ３には、ＯＲループ４８３の出力が与えられ、信号ＲＥ２１によって選択される。
【０１０５】
プリフィックスデータには、ＣＩエラーフラグ、ＣＲＣエラーフラグ（ＳＤＳＣ誤り訂正不能エラーを含む）が含まれているが、多数のパケットデータがバッファメモリ４５４内に蓄えられている場合に、これらのエラーフラグを逐一チェックするには、長時間を要する。そのため、どれか１つでもエラーがあったかどうかをチェックするために、プリフィックスデータの時間軸方向に対するＯＲが検出できれば、それだけＣＰＵ３０の負担が減少する。ＯＲループ４８３は、このような目的のために使用される。
【０１０６】
Ｄ−ＦＦ４８６は、バッファクリアを指示する信号ＢＦＣＬＲにより、ＯＲゲート４９４を介してクリアされる。また、一旦、信号ＲＥ２１がアクティブになり、Ｄ−ＦＦ４８６のデータがＣＰＵ３０にリードされた直後にも、遅延回路４９２、ＯＲゲート４９４を介してＤ−ＦＦ４８６がクリアされる。この状態で信号ＰＦＩＦＯＲＤがアクティブになり、プリフィックスデータがデータバスＢに出力されると、ＯＲゲート４８８は、Ｄ−ＦＦ４８６の出力とプリフィックスデータとのＯＲをとってＤ−ＦＦ４８６に与える。ＣＰＵ３０にプリフィックスデータが読み込まれ、信号ＰＦＩＦＯＲＤが立ち下がる時に、Ｄ−ＦＦ４８６はＯＲゲート４８８からのＯＲデータをラッチする。ここで、さきほどのプリフィックスデータにエラーがあれば、そのビットがハイレベルになるが、エラーがなければそのビットはローレベルのままである。こうしてＣＰＵ３０が順次プリフィックスデータをリードすることにより、１つでもエラーがあればＤ−ＦＦ４８６にハイレベルをラッチするよう、ＯＲループを構成する。すべてのプリフィックスデータをリードし終わると、ＣＰＵ３０は、Ｄ−ＦＦ４８６の内容をリードし、エラーがあったかどうかをチェックする。
【０１０７】
図１７は、図１５におけるプリフィックスＦＩＦＯインターフェース４７２の内部構成の詳細を示すブロック図である。図１７において、このプリフィックスＦＩＦＯインターフェース４７２は、タイミング発生回路５００と、プリフィックスラッチ５０２と、ライト用ループカウンタ５０４と、リード用ループカウンタ５０６と、インバータ５０８と、ＯＲゲート５１０と、アドレスマルチプレクサ５１２と、プリフィックスデータ数カウンタ５１４と、デコーダ５１６と、インバータ５１８とを備えている。
【０１０８】
放送データの書き込みタイミングは、ＣＰＵ３０の動作クロックＳＹＳＣＫとは非同期に発生するため、タイミングによってはＣＰＵ３０からのリードと同時に発生する場合がある。タイミング発生回路５００は、データのリードまたはデータ数カウント値のリードと、データの書き込みまたはデータ数のアップカウント（または、ダウンカウント）とが同時に発生しないように、タイミングを調整する。基本的には、信号ＳＹＳＣＫがハイレベルの期間にデータリードまたはデータ数カウント値のリードが、信号ＳＹＳＣＫがローレベルの期間にデータのライトまたはアップカウント（およびダウンカウント）が発生するよう調整される。なお、Ｄ−ＦＦ４８０でリードデータをラッチしているため、データの書き込みタイミングが信号ＳＹＳＣＫのハイレベル期間にまでずれ込んでも問題は生じない。これによって、ＦＩＦＯのライトサイクルを制御するクロックＣＬＫ１９に９ＭＨｚという比較的遅いクロックを使用することができる。
【０１０９】
タイミング発生回路５００は、データグループシーケンサ４６０からの書き込み制御信号ＰＦＩＦＯＷＲに基づいて、信号ＳＹＳＣＫ，ＣＬＫ１９に同期した書き込み信号ＰＷＲＥＮを生成する。プリフィックスメモリ４５２が満杯であることを示す信号ＰＦＵＬがアクティブの時には、信号ＰＷＲＥＮは出力されない。また、タイミング発生回路５００は、ＣＰＵ３０が特定番地をリードしたことを示す信号ＰＦＩＦＯＲＤに基づいて、信号ＣＬＫ１９に同期した読み出し信号ＰＲＤＥＮを生成する。プリフィックスメモリ４５２が空であることを示す信号ＰＥＭＰがアクティブの場合には、信号ＰＲＤＥＮは出力されない。さらに、タイミング信号５００は、プリフィックスメモリ４５２へのデータライト時に発生するデータ数のアップカウントと同様のタイミングで、リード時のダウンカウントが発生するように、信号ＰＤＷを、読み出し制御信号ＤＦＩＦＯＲＤおよびクロックＳＹＳＣＫの立ち下がりに基づいて生成する。タイミング発生回路５００の動作は、図２２、図２３のタイミングチャートを参照して、さらに詳細に述べられる。
【０１１０】
プリフィックスラッチ５０２は、プリフィックスデータをビットクロックＢＴＣＫに同期してラッチする。ここでラッチされるデータは、スクランブル情報ＳＣＣ（２ビット）、先頭・終端パケット情報ＤＴＣ（２ビット）のみであるが、これにパケット連続性エラーフラグＣＩＥＲＲ、ＣＲＣ演算結果（ＳＤＳＣエラー訂正結果を含む）ＣＲＣＥＲＲを加えた計６ビットが、プリフィックスデータとしてプリフィックスメモリ４５２に与えられる。
【０１１１】
ライト用ループカウンタ５０４は、ライト時にプリフィックスメモリ４５２に与えるアドレス値を記憶する。また、ライト用ループカウンタ５０４は、データ書き込み信号ＰＷＲＥＮが発生する毎に、１ずつアップカウントを行い、そのカウント値が最大値に到達すると、自動的に０に戻る。
【０１１２】
リード用ループカウンタ５０６は、リード時にプリフィックスメモリ４５２に与えるアドレス値を記憶する。リード用ループカウンタ５０６は、データ読み出し信号ＰＲＤＥＮが発生する毎に、１ずつアップカウントを行い、そのカウント値が最大値に到達すると、自動的に０に戻る。
【０１１３】
信号ＰＷＲＥＮがハイレベルになると、インバータ５０８は、ローアクティブのプリフィックスデータライトパルスＣ１ＰＷＥを、プリフィックスメモリ４５２に与える。信号ＰＷＲＥＮが立ち上がってから信号Ｃ１ＰＷＥが立ち上がるまでの間、ＯＲゲート５１０は、アドレスマルチプレクサ５１２にハイレベルのセレクト信号ＳＥＬを与える。これによって、アドレスマルチプレクサ５１２は、書き込み期間の間だけ、ライト用ループカウンタ５０４からのアドレスデータを、アドレスＣ１ＰＡＤＲとしてプリフィックスメモリ４５２に出力する。信号ＳＥＬがローレベルの間、アドレスマルチプレクサ５１２は、リード用ループカウンタ５０６からのアドレスデータを、アドレスＣ１ＰＡＤＲとしてプリフィックスメモリ４５２に出力する。
【０１１４】
プリフィックスデータ数カウンタ５１４は、７ビットの加算器と７ビットのＤ−ＦＦとにより構成されたアップダウンカウンタであり、＋１および＋７ＦＨ（−１）を行うことにより、プリフィックスメモリ４５２にバッファリングされたプリフィックスデータの数（受信したパケットの数）をカウントする。
【０１１５】
デコーダ５１６は、プリフィックスデータ数カウンタ５１４からのカウント値が０の時に、信号ＰＥＭＰをハイレベルにし、当該カウント値がプリフィックスメモリ４５２の記憶容量と同じになった時（本実施例では４７Ｈ）に、信号ＰＦＵＬをハイレベルにする。
【０１１６】
インバータ５１８は、信号ＰＷＲＥＮがハイレベルの時（データ書き込み時）に、Ｄ−ＦＦ４８０（図１６参照）によるデータラッチを禁止する。Ｄ−ＦＦ４８０は、通常時はリードデータをラッチし続けるが、データ書き込み時には、インバータ５１８からの信号ＰＦＬＡＴＧ１により、直前にラッチしたリードデータを保持する。
【０１１７】
図１８は、図１５におけるデータＦＩＦＯインターフェース４７４の内部構成の詳細を示すブロック図である。図１８において、このデータＦＩＦＯインターフェース４７４は、大部分は、図１７のプリフィックスＦＩＦＯインターフェース４７２と同様の回路構成を有している。すなわち、タイミング発生回路５２０、データラッチ５２２、ループカウンタ５２４、５２６、インバータ５２８、５４０、ＯＲゲート５３０、アドレスマルチプレクサ５３２、インバータ５４０は、それぞれ、図１７のタイミング発生回路５００、プリフィックスラッチ５０２、ループカウンタ５０４、５０６、インバータ５０８、５１８、ＯＲゲート５１０、アドレスマルチプレクサ５１２に相当しており、その説明を省略する。データＦＩＦＯインターフェース４７４は、図１７のプリフィックスＦＩＦＯインターフェース４７２と異なる構成として、Ｄ−ＦＦ５３４，５３６と、ＥＭＰ／ＦＵＬデテクタ５３８とを備えている。
【０１１８】
Ｄ−ＦＦ５３４および５３６は、それぞれ、信号ＤＷＲＥＮおよびＤＲＤＥＮを、信号ＣＬＫ１９の立ち上がりでラッチし、信号ＷＣＨＫＦＦおよびＲＣＨＫＦＦとして、ＥＭＰ／ＦＵＬデテクタ５３８に出力する。
【０１１９】
プリフィックスデータは、１パケットに１バイトであり、プリフィックスメモリ４５２の最大値は、４７Ｈ（７１）バイトである。これに対して、放送データは、例えば１パケットにつき２２バイトのデータを含み、データメモリ４５４は、２２×７１＝１５６２バイトの記憶容量を持つ。しかし、プリフィックスメモリ４５２のデータと、データメモリ４５４のデータとは同時に読み出せないため、前述のデータ数カウンタ５１４だけではデータメモリ４５４のＦＵＬＬ、ＥＭＰＴＹは判断できない。したがって、データＦＩＦＯインターフェース４７４は、データメモリ４５４のＦＵＬＬ、ＥＭＰＴＹを判断するために、独自のＥＭＰ／ＦＵＬデテクタ５３８を持つ。
【０１２０】
図１９は、図１８におけるＥＭＰ／ＦＵＬデテクタ５３８の内部構成の詳細を示すブロック図である。図１９において、このＥＭＰ／ＦＵＬデテクタ５３８は、一致判定回路５５０と、加算データデコーダ５５２と、加算器／ラッチ５５４と、Ｅ／Ｆデコーダ５５６とを備えている。
【０１２１】
一致判定回路５５０は、ライト用ループカウンタ５２４からのライトアドレスＷＣと、リード用ループカウンタ５３８からのリードアドレスＲＣとの一致を判定し、一致を判定した場合には、ハイレベルの信号ＥＱを出力する。加算データデコーダ５５２は、図２０に示すように、各入力条件に対して所定の加算データを出力する。加算器／ラッチ５５４は、加算データデコーダ５５２からの加算データと、前回の演算結果とを加算し、信号ＣＬＫ１９の立ち上がりで加算結果をラッチする。Ｅ／Ｆデコーダ５５６は、加算器／ラッチ５５４にラッチされた加算結果に基づいて、信号ＤＥＭＰ、ＤＦＵＬを生成する。
【０１２２】
次に、図１８および図１９に示すＥＭＰ／ＦＵＬデテクタ５３８の動作を説明する。まず、信号ＢＦＣＬＲにより、加算器５５４内のラッチは００（２進数２桁）になる（初期状態）。この時には、Ｅ／Ｆデコーダ５５６は、００をデコードし、信号ＤＥＭＰにハイレベルを出力し、データメモリ４５４が空であることを示す。この状態で信号ＷＣＨＫＦＦがハイレベルになると、
ＷＣＨＫＦＦ＊ＥＱ＊ＤＥＭＰ＊／ＲＣＨＫＦＦ＝１
の条件式（なお、＊はＡＮＤ条件を、／はＮＯＴを表している）が成立し、加算器／ラッチ５５４には加算データ０１が与えられる。そのため、加算器／ラッチ５５４において、前回の加算結果００と、今回の加算データ０１との加算結果が０１となり、このデータが加算器／ラッチ５５４内に新たにラッチされる。Ｅ／Ｆデコーダ５５６は、加算器／ラッチ５５４のラッチデータ０１をデコードして、信号ＤＥＭＰをローレベルに下げ、信号ＲＤＹをハイレベルに上げる。この直後に、ライトアドレスＷＣの値とリードアドレスＲＣの値とが一致しなくなるため、その後はＥＱ＝ＨＩＧＨの条件が成り立たなくなる。すると、加算データは００となり、加算結果に変化は生じない。
【０１２３】
さらに、データライト動作が続き、データメモリ４５４が満杯になると、再びライトアドレスＷＣとリードアドレスＲＣは一致する。この時には、
ＷＣＨＫＦＦ＊ＥＱ＊ＲＤＹ＊／ＲＣＨＫＦＦ＝１
の条件式が成立するため、加算データ０１が加算器／ラッチ５５４に与えられる。このとき、加算器／ラッチ５５４において、０１＋０１＝１０が演算され、ラッチされる。そのため、Ｅ／Ｆデコーダ５５６において、信号ＲＤＹはローレベルに落ち、信号ＤＦＵＬがハイレベルとなる。信号ＤＦＵＬがハイレベルになると、これ以上のデータの書き込みは禁止される。
【０１２４】
次に、データリード動作が発生すると、信号ＲＣＨＫＦＦがハイレベルになるため、
ＲＣＨＫＦＦ＊ＥＱ＊ＤＦＵＬ＊／ＷＣＨＫＦＦ＝１
の条件式が成立し、加算データ１１が加算器／ラッチ５５４に与えられる。このとき、加算器／ラッチ５５４において、１０＋１１＝（１）０１となり、Ｅ／Ｆデコーダ５５６において、信号ＲＤＹが再びハイレベルになり、信号ＤＦＵＬはローレベルになる。このままデータリード動作を続けると、最終的には、
ＲＣＨＫＦＦ＊ＥＱ＊ＲＤＹ＊／ＷＣＨＫＦＦ＝１
の条件が成立して、加算データ１１が加算器／ラッチ５５４に与えられ、加算結果が０１＋１１＝（１）００となって、ＥＭＰＴＹの状態に戻る。このようにして、ＥＭＰ／ＦＵＬデテクタ５３８は、信号ＤＥＭＰ、ＤＦＵＬを生成する。
【０１２５】
次に、図２２のタイムチャートを参照して、データメモリ４５４（図１４参照）のライトタイミングを説明する。
信号ＳＹＳＣＫは、例えば２．６８ＭＨｚのクロック信号であり、ＣＰＵ３０の動作クロックとして用いられる。信号ＣＬＫ１９は、ＶＸＯ９０（図５参照）からのクロック信号ＭＣＫを２分周した９．２１６ＭＨｚのクロック信号であり、データメモリ４５４のリード／ライトクロックとして用いられる。信号ＢＴＣＫは、２．０４８ＭＨｚのクロック信号であり、ＰＣＭデコーダ８４（図５参照）からの信号ＦＤＩＮの同期クロックとして用いられる。クロック信号ＭＣＫの周波数は、ＶＸＯ１９により、例えばこのクロック信号ＢＴＣＫの９倍の周波数１８．４３２ＭＨｚに調整されている。
【０１２６】
図１５のデータグループシーケンサ４６０が、信号ＤＡＴＡＳＹＮＣに基づいて、信号ＤＦＩＦＯＷＲを出力すると、信号ＢＴＣＫの立ち上がりで、図１８のデータラッチ５２２にデータグループデータがラッチされる。信号ＤＦＩＦＯＷＲがハイレベルになった後、信号ＳＹＳＣＫが立ち下がってから２つ目の信号ＣＬＫ１９の立ち上がり（信号ＳＹＳＣＫの立ち下がりよりＴ１の後）に、信号ＤＷＲＥＮがハイレベルになり、信号ＳＥＬがハイレベルになってアドレスマルチプレクサ５３２がライト用アドレスＡＤＤＷＲをデータメモリ４５４に出力する。
【０１２７】
信号ＳＹＳＣＫが立ち下がってから３つ目の信号ＣＬＫ１９の立ち上がりによって、信号ＤＷＲＥＮはローレベルになり、信号ＤＷＲＥＮの反転信号Ｃ１ＤＷＥの立ち上がりにより、データメモリ４５４の番地ＡＤＤＷＲにデータラッチ５２２のデータが書き込まれる。インバータ５２８の影響で信号ＤＷＲＥＮの立ち下がりよりも信号Ｃ１ＤＷＥの立ち上がりが遅れる。そのため、信号Ｃ１ＤＷＥが立ち上がるまでアドレスマルチプレクサ５３２がライト用アドレスをセレクトするよう、ＯＲゲート５３０によって信号ＳＥＬを遅延させる。３つ目の信号ＣＬＫ１９の立ち上がりでさらにライト用ループカウンタ５２４がアップカウントされるが、当該ループカウンタ５２４からの信号出力“ＡＤＤＷＲ＋１”は、インバータ５２８による遅延よりもさらに遅れるため、データメモリ４５４に与えるアドレス信号には影響が生じない。
【０１２８】
なお、プリフィックスメモリ４５２へのライトも上記と同様のタイミングで動作するが、プリフィックスデータ数カウンタ５１４は、やはり３つ目の信号ＣＬＫ１９の立ち上がりでカウントアップされる。
【０１２９】
図２２におけるその他の信号は、受信データ数が１５６２バイトに達した場合のＥＭＰ／ＦＵＬデテクタ５３８の動作を示している。図２２を参照して、Ｄ−ＦＦ５３４は、信号ＤＷＲＥＮを信号ＣＬＫ１９の１クロック分遅らせた信号ＷＣＨＫＦＦを発生する。一致判定回路５５０は、信号ＥＱをハイレベルにする。信号ＲＤＹは、ハイレベルであったため、加算データには０１が発生し、信号ＣＬＫ１９の４つ目のクロックで加算データ１０がラッチされる。これによって、信号ＲＤＹがローレベルになり、信号ＤＦＵＬがハイレベルになる。
【０１３０】
信号ＲＤＬＡＴＧ１は、信号ＤＷＲＥＮと同じタイミングでローレベルになり、信号ＣＬＫ１９の３つ目でのＤ−ＦＦ４８２によるデータラッチを禁止する。ＤーＦＦ４８２には、信号ＣＬＫ１９の１つ目、２つ目、４つ目の立ち上がりで常にリードアドレスで示されるデータがラッチされており、ＣＰＵ３０からのデータリードを保証する。プリフィックスデータライトの場合も同様にＤ−ＦＦ４８０がＣＰＵ３０からのプリフィックスデータリードを保証する。
【０１３１】
次に、図２３のタイムチャートを参照して、データメモリ４５４のリードタイミングを説明する。
ＣＰＵ３０によるデータリードが発生すると、信号ＳＹＳＣＫの立ち上がりから１つめの信号ＣＬＫ１９の立ち上がりで、信号ＤＲＤＥＮがハイレベルになる。これに伴い、信号ＣＬＫ１９の２つ目のクロックでリード用ループカウンタ５２６の値がインクリメントされるが、この２つ目のクロックでは、Ｄ−ＦＦ４８２にはまだインクリメントされる前のアドレスによって示されるデータがラッチされている。インクリメント後のアドレスで示されるデータがＤ−ＦＦ４８２にラッチされるタイミングは、信号ＣＬＫ１９の３つ目の立ち上がりであるが、周波数を考慮するとその前に必ずＣＰＵ３０によるリード動作が発生する（信号ＣＰＵＲＤの立ち上がりがリード動作のタイミング）ため、リードアドレスのインクリメントがＣＰＵ３０のリード動作に影響を及ぼすことはない。
【０１３２】
図２３におけるその他の信号は、バッファ内のデータ数が０になった場合のＥＭＰ／ＦＵＬデテクタ５３８の動作を示している。Ｄ−ＦＦ５３６は、信号ＤＲＤＥＮを信号ＣＬＫ１９の１クロック分遅らせた信号ＲＣＨＫＦＦを発生する。一致判定回路５５０は、信号ＥＱをハイレベルにする。信号ＲＤＹは、ハイレベルであったため、加算データには１１が発生し、信号ＣＬＫ１９の３つ目のクロックで加算データ００がラッチされる。これによって、信号ＲＤＹがローレベルになり、信号ＤＥＭＰがハイレベルになる。
【０１３３】
なお、プリフィックスメモリ４５２のリード時にも上記と同様のタイミングで動作するが、信号ＰＤＷはデータリードがあった後、信号ＳＹＳＣＫの立ち下がりから２つ目の信号ＣＬＫ１９の立ち上がり（リード時の信号ＳＹＳＣＫの立ち上がりから数えると４つ目の信号ＣＬＫ１９の立ち上がり）でハイレベルになり、その次の信号ＣＬＫ１９の立ち上がりでデータ数がデクリメントされる。このデクリメントのタイミングは、ライト時のインクリメントのタイミングと同じであるため、信号ＳＹＳＣＫに同期してデータ数が確定する。
【０１３４】
ＣＰＵ３０によるデータリードは、信号ＳＹＳＣＫがハイレベルの時に発生するが、次のＣＰＵリードタイミングまでにはすべてのインクリメント、デクリメント動作は終了し、安定化するため、ＤＭＡで連続的にデータをリードした場合でも、問題無く動作する。
【０１３５】
次に、ＣＰＵ３０が管理するアドレス空間について説明する。図２４は、ＣＰＵ３０が保有するアドレス空間に対応するメモリマップを示している。ＣＰＵ３０は、このメモリマップ上の斜線部の領域に、マスクＲＯＭ７２、疑似ＳＲＡＭ７４、フラッシュメモリＡ７６、フラッシュメモリＢ１０６を割り付けることにより、各メモリのアクセスを管理する。すなわち、ＣＰＵ３０は、限られた１つのアドレス空間内で、複数のメモリを一元的に管理することができる。なお、図２４において、斜線部以外の領域は、ＣＰＵ３０の制御領域として固定的に用いられ、この部分においてワークＲＡＭ３２等のアクセスが行われる。
【０１３６】
通常、各メモリの総容量は、ＣＰＵ３０のアドレス空間の容量を越えているため、同一の部分に複数のメモリが重ねて割り付けられる事態が生じる。本実施例では、各メモリにアクセスの優先順位を与えることにより、このような事態に対処している。すなわち、メモリマップの同一部分に複数のメモリが割り付けられている場合、優先順位の高いメモリの方が、優先順位の低いメモリよりも優先的にアクセスされる。本実施例では、一例として各メモリの優先順位を、優先順位の高い順から
マスクＲＯＭ＞疑似ＳＲＡＭ＞フラッシュメモリＡ＞フラッシュメモリＢ
と決めている。優先順位の高いメモリと低いメモリとを並列的にアクセスしたい場合は、いずれかのメモリの割り付け位置がメモリマップ上で移動される。
【０１３７】
図２５は、ＣＰＵ３０のメモリマップ上において、マスクＲＯＭ７２を割り付け可能な領域を示している。図２５において、マスクＲＯＭ７２は、領域＃Ａおよび／または＃Ｂに割り付けることができる。なお、領域＃Ａと領域＃Ｂは、同一のマスクＲＯＭのイメージを示している。
【０１３８】
図２６は、ＣＰＵ３０のメモリマップ上において、疑似ＳＲＡＭ７４を割り付け可能な領域を示している。なお、図２６（ａ）は２０モードにおける割付可能領域を示しており、図２６（ｂ）は２１モードにおける割付可能領域を示している。図２６（ａ）において、疑似ＳＲＡＭ７４は、領域＃Ａ〜＃Ｈのいずれか１つまたは複数に割り付けることができる。また、後述する信号ＲＡＭＯＮがハイレベルのとき、疑似ＳＲＡＭ７４は、領域＊に常に割り付けられている。なお、領域＃Ｃ’，＃Ｄ’，＃Ｇ’，＃Ｈ’，＃＊’には、領域＃Ｃ，＃Ｄ，＃Ｇ，＃Ｈ，＃＊のイメージが現れている。図２６（ｂ）において、疑似ＳＲＡＭ７４は、領域＃Ａ〜＃Ｈのいずれか１つまたは複数に割り付けることができる。また、後述する信号ＲＡＭＯＮがハイレベルのとき、領域＃＊には、領域＃Ａ〜＃Ｈの６０００Ｈ〜７ＦＦＦＨのイメージが常に現れている。また、領域＃Ａ’〜＃Ｈ’には、領域＃Ａ〜＃Ｈの８０００Ｈ〜ＦＦＦＦＨのイメージが常に現れている。
【０１３９】
図２７は、ＣＰＵ３０のメモリマップ上において、フラッシュメモリＡ７６を割り付け可能な領域を示している。なお、図２７（ａ）は２０モードにおける割付可能領域を示しており、図２７（ｂ）は２１モードにおける割付可能領域を示している。図２７（ａ）において、フラッシュメモリＡ７６は、領域＃Ａ〜＃Ｄのいずれか１つまたは複数に割り付けることができる。また、領域＃Ｂ’，＃Ｄ’には、領域＃Ｂ，＃Ｄのイメージが現れている。図２７（ｂ）において、領域＃Ａ〜＃Ｄのいずれか１つまたは複数に割り付けることができる。また、領域＃Ａ’〜＃Ｄ’には、領域＃Ａ〜＃Ｄの８０００Ｈ〜ＦＦＦＦＨのイメージが現れている。
【０１４０】
図２８は、ＣＰＵ３０のメモリマップ上において、フラッシュメモリＢ１０６を割り付け可能な領域を示している。図２８を図２４と対比すれば明らかなごとく、フラッシュメモリＢ１０６は、メモリマップ上で各メモリを割付可能な領域の全てに割り付けることが可能である。
【０１４１】
図２９は、図５に示す衛星データ放送受信アダプタ４における信号の流れを示している。また、図３０は、本実施例の衛星データ放送受信システムで採用されるデータ伝送の階層モデルを示している。以下、これら図２９および図３０を参照して、本実施例の全体的な動作を説明する。
【０１４２】
（１）リセット時の動作
図３のパワースイッチ６２がオンされると、電源回路６４が動作を開始し、システム内の各部の電圧が上昇していく。これに伴って、リセット回路６０内の所定のノードの電圧が上昇し、当該ノードが一定電圧以上になると、リセット回路６０はリセット信号ＲＥＳＥＴＢを一定時間アクティブ（この場合は、ローレベル）にする。また、リセット回路６０は、リセットスイッチ５８がオンされた場合にも、リセット信号ＲＥＳＥＴＢを一定時間アクティブにする。このリセット信号ＲＥＳＥＴＢは、コネクタＡ３８を介して、衛星データ放送受信カートリッジ６内のマッピングコントローラ７０（図４参照）に与えられる。
【０１４３】
マッピングコントローラ７０において、リセット信号ＲＥＳＥＴＢは、図７のコントロールレジスタ１１０に与えられる。このコントロールレジスタ１１０内において、リセット信号ＲＥＳＥＴＢは、図１１のインバータ１８１でハイレベル信号に反転された後、各レジスタブロック１９０〜３００における後段のＤ−ＦＦ１９４〜３０４のクリア端子またはセット端子に与えられる。ここで、インバータ１８１の出力が、各レジスタブロックのＤ−ＦＦ１９４〜３０４のクリア端子に与えられるか、セット端子に与えられるかは、初期設定時における各メモリの配置をどうするかに応じて定められている。インバータ１８１の出力がクリア端子に与えられた場合、該当するＤ−ＦＦは、論理０を保持し、そのＱ出力はローレベルとなる。これに対し、インバータ１８１の出力がセット端子に与えられた場合、該当するＤ−ＦＦは、論理１を保持し、そのＱ出力はハイレベルとなる。
【０１４４】
ここで、レジスタブロック１９０〜３００の内、少なくともレジスタブロック２４０および２５０については、インバータ１８１の出力がＤ−ＦＦ２４４，２５４のセット端子に与えられる。これは、図４のマスクＲＯＭ７２にＣＰＵ３０の動作プログラムが格納されているため、ＣＰＵ３０が起動する前にマスクＲＯＭ７２を読み出し可能状態、すなわちメモリマップ上に配置しておく必要があるためである。もし、初期状態においてマスクＲＯＭ７２がメモリマップ上に配置されていないと、動作プログラムを読み出せないため、ＣＰＵ３０は起動できなくなる。この初期設定によって、少なくともコントロール信号ＲＯＭＯＮ０およびＲＯＭＯＮ１がハイレベルとなる。このハイレベルのコントロール信号ＲＯＭＯＮ０およびＲＯＭＯＮ１は、コントロールバスを介して、マップデコーダ１２０内のＲＯＭデコーダ１６０（図１０参照）に与えられる。これによって、マスクＲＯＭ７２は、図２５のメモリマップ上の領域＃Ａおよび＃Ｂに配置されたことになる。
【０１４５】
（２）ＣＰＵ起動時の動作
上記リセットによるメモリの初期配置が終了すると、ＣＰＵ３０が起動する。起動したＣＰＵ３０は、マスクＲＯＭ７２から衛星データ放送受信の動作プログラムを読み出すために、マスクＲＯＭ７２に対応するアドレスデータをアドレスバスＡに出力する。当該アドレスデータは、マッピングコントローラ７０内のアドレスデコーダ１１２（図７参照）に与えられる。このアドレスデコーダ１１２は、与えられたアドレスデータがメモリマップ上の図２４の斜線部で示す領域を指定しているとき、ローレベルの信号ＲＯＭＳＥＬＢを出力する。また、当該アドレスデータは、マップデコーダ１２０内のＲＯＭデコーダ１６０に与えられる。このとき、ＲＯＭデコーダ１６０に与えられる各信号の論理状態は、以下のようになっている。
ＲＯＭＯＮ０＝１
ＲＯＭＯＮ１＝１
ＲＯＭＳＥＬＢ＝０
ＲＥＳＥＴＢ＝１
【０１４６】
図３１は、ＲＯＭデコーダ１６０において、マスクＲＯＭ７２のチップイネーブル信号ＣＥ２Ｂがアクティブ（ローレベル）になる条件を示している。この図３１において、Ａ２１〜Ａ２３は、ＣＰＵ３０からのアドレスデータ（Ａ０〜Ａ２３）の２２〜２４ビット目の値を示している。信号ＲＯＭＳＥＬＢが論理０で、かつアドレスデータの２３および２４ビット目がいずれも論理０の場合は、アドレスデータが図２５における領域＃Ａのいずれかの部分を示していることになる。また、信号ＲＯＭＳＥＬＢが論理０で、かつアドレスデータの２３ビット目が論理０で、２４ビット目が論理１の場合は、アドレスデータが図２５における領域＃Ｂのいずれかの部分を示していることになる。
【０１４７】
ＲＯＭデコーダ１６０に与えられる各信号の論理状態は、前述のようになっているため、ＲＯＭデコーダ１６０は、図３１の条件に基づき、ＣＰＵ３０からのアドレスデータが現在のマスクＲＯＭ７２のメモリ配置にヒットしていることを判断し、マスクＲＯＭ７２を能動化させるためのチップイネーブル信号ＣＥ２Ｂをアクティブ（ローレベル）にする。これによって、マスクＲＯＭ７２の動作が許可され、ＣＰＵ３０は、マスクＲＯＭ７２をアクセス可能となる。
【０１４８】
（３）マスクＲＯＭの再配置動作
ＣＰＵ３０は、マスクＲＯＭ７２から衛星データ放送受信の動作プログラムを読み出すと、当該動作プログラムに従って、メモリマップ上でのマスクＲＯＭ７２の再配置すなわち割り付け位置の変更を行う。メモリマップ上では、現在、図２５の領域＃Ａおよび＃Ｂの両方にマスクＲＯＭ７２が割り付けられている。これでは使い勝手が悪く、メモリマップの使用効率も落ちるため、ＣＰＵ３０は、マスクＲＯＭ７２を領域＃Ａおよび＃Ｂのいずれか一方に割り付ける。本実施例では、マスクＲＯＭ７２を領域＃Ａに割り付けている。
【０１４９】
（４）メニューデータの受信動作
次に、ＣＰＵ３０は、ＴＶモニタ２２上に初期画面（メーカー名や本システムのタイトル等）を表示し、現在放送中の番組メニューを入手するために、ＴＣＤと呼ばれる番組一覧データ（メニューデータ）を受信する。この受信動作の詳細を以下に説明する。
【０１５０】
Ａ．論理チャンネルの設定
まず、ＣＰＵ３０は、マスクＲＯＭ７２から読み出したプログラムデータに従って、ＴＣＤのために予め定められている論理チャンネル（例えば、ＬＣＩ１＝２、ＬＣＩ２＝１）をデータ放送デコーダ８２にセットする（図２９のα１）。すなわち、ＣＰＵ３０は、チャンネル１ＬＣＩ１のＩ／ＯポートアドレスをアドレスバスＢに出力すると共に、データバスに論理チャンネルＬＣＩ１のデータ「２」を出力し、制御信号Ｂに含まれる信号ＰＡＷＲをローレベルにセットする。データ放送デコーダ８２は、バスバッファ９４，９６、双方向バッファ９２を介して、これらの信号を入力する。データ放送デコーダ８２内のホストインターフェース４１０（図１２参照）は、内部のアドレスデコーダ４１０ｃによって、アドレスバスＢ上のチャンネル１ＬＣＩ１のＩ／Ｏポートアドレスをデコードし、デコード信号Ｃ１Ｌ１ＬＤを生成する。このデコード信号Ｃ１Ｌ１ＬＤは、制御信号バスＣＤを介して、チャンネルデテクタ４０６に出力される。チャンネルデテクタ４０６内の設定レジスタ４２４（図１３参照）は、デコード信号Ｃ１Ｌ１ＬＤおよび制御信号ＰＡＷＲを受けて、データバス上のデータ「２」を内部レジスタにストアする。これによって、設定レジスタ４２４からチャンネル１ＬＣＩ比較回路４２６に、論理チャンネルＬＣＩ１を指定するデータ「２」が、信号線Ｃ１Ｌ１を介して入力され、放送によって送られてくるデータパケットのデータＬＣＩ１と比較される。
【０１５１】
次に、ＣＰＵ３０は、チャンネル１ＬＣＩ２のＩ／ＯポートアドレスをアドレスバスＢに出力すると共に、データバスに論理チャンネルＬＣＩ２のデータ「１」を出力し、制御信号Ｂに含まれる信号ＰＡＷＲをローレベルにセットする。データ放送デコーダ８２内のホストインターフェース４１０は、論理チャンネルＬＣＩ１のときと同様に、内部のアドレスデコーダ４１０ｃによってアドレスバスＢ上のチャンネル１ＬＣＩ２のＩ／Ｏポートアドレスをデコードし、デコード信号Ｃ１Ｌ２ＬＤを生成する。チャンネルデテクタ４０６内の設定レジスタ４２４は、上記デコード信号Ｃ１Ｌ２ＬＤおよび制御信号ＰＡＷＲを受けて、データバス上のデータ「１」を内部レジスタにストアし、信号線Ｃ１Ｌ２を介して、チャンネル１ＬＣＩ比較回路４２６に出力する。チャンネル１ＬＣＩ比較回路４２６では、設定レジスタ４２４から与えられたデータ「１」と、放送によって送られてくるデータパケットのデータＬＣＩ２とを比較する。
【０１５２】
Ｂ．バッファメモリの初期化と受信許可の付与
次に、ＣＰＵ３０は、チャンネル１のクリアフラグレジスタ４６０ｃ（図１５参照）を示すＩ／０ポートアドレスをアドレスバスＢに出力すると共に、データバスにデータ「１」を出力し、制御信号Ｂに含まれる信号ＰＡＷＲをローレベルにセットする。データ放送デコーダ８２内のホストインターフェース４１０は、内部のアドレスデコーダ４１０ｃによってアドレスバスＢ上のクリアフラグレジスタアドレスをデコードし、デコード信号ＷＥ１１を生成する。このデコード信号ＷＥ１１は、制御信号バスＣＣを介して、チャンネルデコーダ４０８のデータコントローラ４５０内にあるデータグループシーケンサ４６０に出力される。
【０１５３】
データグループシーケンサ４６０内のクリアフラグレジスタ４６０ｃは、上記デコード信号ＷＥ１１および制御信号ＰＡＷＲを受けて、データバス上のデータ「１」を記憶する。これによって、データグループシーケンサ４６０は、内部の受信許可フラグレジスタ４６０ｂを受信禁止の状態に設定し、信号ＢＦＣＬＲを出力してチャンネル１用バッファメモリ４５２，４５４（図１４参照）のクリアを行う。ただし、バッファメモリ４５２，４５４は、ＦＩＦＯとして構成されているため、実際にデータが消去されるのではなく、データが空の状態になるようにアドレス操作が行われることにより、データの消去が実現される。この信号ＢＦＣＬＲは、システムリセット時にも同様に発生する。データ「１」が書き込まれたクリアフラグレジスタ４６０ｃは、バッファクリア後、自動的に０に戻る。
【０１５４】
次に、ＣＰＵ３０は、チャンネル１の受信許可フラグレジスタ４６０ｂを示すＩ／ＯポートアドレスをアドレスバスＢに出力すると共に、データバスにデータ「１」を出力し、制御信号Ｂに含まれる信号ＰＡＷＲをローレベルにセットする。データ放送デコーダ８２内のホストインターフェース４１０は、内部のアドレスデコーダ４１０ｃによってアドレスバスＢ上の受信許可フラグレジスタアドレスをデコードし、デコード信号ＷＥ１０を生成する。このデコード信号ＷＥ１０は、制御信号バスＣＣを介して、チャンネルデコーダ４０８のデータコントローラ４５０内にあるデータグループシーケンサ４６０に出力される。データグループシーケンサ４６０内の許可フラグレジスタ４６０ｂは、上記デコード信号ＷＥ１０および制御信号ＰＡＷＲを受けて、データバス上のデータ「１」を記憶する。これによって、データグループシーケンサ４６０は、先頭パケット検出状態に移行する。
【０１５５】
Ｃ．パケットの生成
データ放送デコーダ８２にビットストリーム信号ＢＳＴが入力されると、データ放送デコーダ８２内のアンプ／ＶＸＯコントローラ４０２は、当該ビットストリーム信号ＢＳＴを増幅し、信号ＢＳＴ０２としてＰＣＭデコーダ８４に出力する（図２９のα２）。ＰＣＭデコーダ８４は、与えられた信号ＢＳＴ０２に対してビットデインターリーブを施した後、音声信号とデータとに分離する。分離された音声信号は、ＰＣＭデコーダ８４でＰＣＭ復調された後、アンプ８６ａ，８６ｂ、ミキサ５０ａ、５０ｂ、アンプ５２ａ，５２ｂを介して、ＴＶモニタ２２に出力される。これによって、本システムは、通常の音楽番組を受信するために使用可能である。一方、分離されたデータは、ＰＣＭデコーダ８４で信号ＦＤＩＮとしてデータ放送デコーダ８２に戻される（図２９のα３）。データ放送デコーダ８２内において、プリデコーダ４０４は、信号ＦＤＩＮを、斜めデインターリーブ、ＢＣＨ誤り訂正、ＳＤＳＣ誤り訂正等を施した後、パケット単位の信号ＳＤＯとして、ビットシリアルに、チャンネルデテクタ４０６に出力する（図２９のα４）。
【０１５６】
上記信号ＳＤＯは、前述の図２１に示すようなフォーマットを有している。チャンネルデテクタ４０６内のビットカウンタ４２２は、プリデコーダ４０４からのパケットの先頭を示す信号ＰＳＹＮＣおよびパケットデータのビットクロックＢＴＣＫに基づいて、各データを分離するためのタイミング信号ＬＣＩ１ＳＹＮＣ、ＬＣＩ２ＳＹＮＣ、ＰＦＸＳＹＮＣ、ＤＡＴＡＳＹＮＣ、ＤＢＬＡＳＴ、ＰＥＲＲＬＤ、ＰＥＲＲＳＹＮＣ（図２１参照）を生成する。また、Ｓ−Ｐ変換回路４２０は、上記ビットクロックＢＴＣＫに同期して信号ＳＤＯをシフトし、８ビットパラレルのデータＢＳＤＡＴＡとして、各ブロックに出力する（図２９のα５）。
【０１５７】
Ｄ．論理チャンネルの比較
Ｓ−Ｐ変換回路４２０の働きにより、信号ＬＣＩ１ＳＹＮＣがハイレベルになるタイミングでは、すでにＢＳＤＡＴＡ上に、受信されたパケットのデータＬＣＩ１が５ビットパラレルデータとして出力されている（残り３ビットは冗長データ）。チャンネル１ＬＣＩ比較回路４２６は、信号ＬＣＩ１ＳＹＮＣがハイレベルのときに、ＢＳＤＡＴＡ上の値と、前述のＣ１Ｌ１上の値とを比較し、その結果をＤ−ＦＦ４２８に出力する。双方の値が一致している場合にはハイレベルが、一致していない場合にはローレベルが、Ｄ−ＦＦ４２８に出力され、上記ＬＣＩ１ＳＹＮＣがハイレベルでかつビットクロックＢＴＣＫの立ち上がりのタイミングで、Ｄ−ＦＦ４２８にその比較結果が書き込まれる。
【０１５８】
一方、信号ＬＣＩ２ＳＹＮＣがハイレベルになるタイミングでは、すでにＢＳＤＡＴＡ上に受信されたパケットのデータＬＣＩ２が６ビットパラレルデータとして出力されている（残り２ビットは冗長データ）。チャンネル１ＬＣＩ比較回路４２６は、信号ＬＣＩ１ＳＹＮＣがローレベルのときに、ＢＳＤＡＴＡ上の値と、前述のＣ１Ｌ２上の値とを比較し、その結果をＤ−ＦＦ４３０に出力する。双方の値が一致している場合にはハイレベルが、一致していない場合にはローレベルが、Ｄ−ＦＦ４３０に出力され、上記信号ＬＣＩ２ＳＹＮＣがハイレベルでかつビットクロックＢＴＣＫの立ち上がりのタイミングで、Ｄ−ＦＦ４３０にその出力結果が書き込まれる。
【０１５９】
ここで、受信データの論理チャンネルＬＣＩ１，ＬＣＩ２の値が共に設定レジスタ４２４の設定値と一致した場合には、Ｄ−ＦＦ４２８，４３０からＡＮＤゲート４３２に共にハイレベルの信号が与えられる。また、信号ＨＥＲＲがハイレベルの場合には、プリデコーダ４０４においてＢＣＨ（１６，５）誤り訂正が不可能であったことを示し、ＬＣＩ１，ＬＣＩ２の受信データが信用できないことを意味する。すなわち、信号ＨＥＲＲがローレベルでかつＬＣＩ１，ＬＣＩ２の値が共に設定値と一致したときのみ、ＡＮＤゲート４３２は信号ＣＨ１ＥＮＡをハイレベルにし、パケットの受信（正確にはバッファリング）を許可する。これ以外の場合は、信号ＣＨ１ＥＮＡがローレベルとなり、パケットの受信が許可されない（図２９のα６）。上記と同様の動作は、チャンネル２においても行われ、この場合には、信号線Ｃ２Ｌ１，Ｃ２Ｌ２、チャンネル２ＬＣＩ比較回路４３４、Ｄ−ＦＦ４３６，４３８、ＡＮＤゲート４４０が使用される。
【０１６０】
Ｅ．プリフィックスデータの生成
次に、チャンネルデテクタ４０６内のＤ−ＦＦ４４２は、信号ＰＦＸＳＹＮＣに基づいて、８ビットのプリフィックスデータ（ＳＣＣ，ＣＩ，ＤＴＣ）を記憶し、８ビットパラレルの信号ＰＲＦＸＤＴとして出力する（図２９のα７）。また、Ｄ−ＦＦ４４４は、信号ＰＥＲＲＬＤに基づいて、ＳＤＳＣ（２７２，１９０）誤り訂正不可能を示す信号ＰＥＲＲを記憶し、信号ＰＥＲＲＬＴとして出力する。信号ＰＥＲＲは、上記パケットの最後のデータとして、プリデコーダ４０４から与えられる。
【０１６１】
Ｆ．データのバッファリング
チャンネルデコーダ４０８には、全く同じ回路が２回路用意されており、各々チャンネルデテクタ４０８からの信号ＣＨ１ＥＮＡおよびＣＨ２ＥＮＡに基づいて動作する。その内の１つであるチャンネル１デコーダ／バッファ４０８ａ内のチャンネル１データコントローラ４６０（図１４参照）は、以下の順序でデータのバッファリングを制御する。
ａ）先頭パケットの検出…初期化バッファリング開始
ｂ）定常動作
データメモリ４５４への書き込みおよびアドレス制御
ＣＲＣ演算、データサイズカウンタ４６２のデクリメント
ＣＩカウントによるパケットの連続性チェック
プリフィックスメモリ４５２への書き込みおよびアドレス制御
ｃ）終端パケットの検出…バッファリング停止
以下、上記各動作を順番に説明する。
【０１６２】
ａ）先頭パケットの検出
データコントローラ４５０内のデータグループシーケンサ４６０（図１５参照）は、図３０の階層４に示すデータグループを構成すべく、ＰＲＦＸＤＴ上のプリフィックスデータのＤＴＣに基づいて、先頭のパケットと終端のパケットを検出する。例えば、前述の信号ＣＨ１ＥＮＡがハイレベルであり、パケットの受信が許可されていても、まだ先頭パケットが検出されていない状態では（先頭パケット未検出状態）、パケットのバッファリングは行わない。先頭パケットを検出すると、データグループシーケンサ４６０は、信号ＣＩＬＤをＣＩカウンタ４６４に与え、信号ＣＲＣＣＬＲをＣＲＣ回路４６８に与えて、これら回路を初期化する。また、データグループの先頭から３〜５バイト目に受信されるデータグループサイズをデータサイズカウンタ４６２内にストアするべく、信号ＤＳＬＤを出力する。
【０１６３】
ｂ）定常動作
データメモリ４５４への書き込みおよびアドレス制御
データグループシーケンサ４６０は、信号ＤＡＴＡＳＹＮＣに基づいて信号ＤＦＩＦＯＷＲを生成し、データＦＩＦＯインターフェース４７４に与える。データＦＩＦＯインターフェース４７４内のタイミング発生回路５２０（図１８参照）は、信号ＤＦＩＦＯＷＲに基づいて信号ＤＷＲＥＮを生成する。信号ＤＷＲＥＮの生成には、ＣＰＵ３０からのデータリードと衝突しないタイミングが選ばれる。ＣＰＵ３０から出力された信号ＳＹＳＣＫがハイレベルの期間はＣＰＵ３０がデータリードを行う期間であり、ローレベルの期間はメモリをアクセスしない期間であるため、この信号ＳＹＳＣＫに基づいてタイミング発生回路５２０が信号ＤＷＲＥＮを生成する。信号ＤＷＲＥＮは、インバータ５２８を介して、チャンネル１データメモリ４５４（図１４参照）にデータの書き込み信号Ｃ１ＤＷＥとして与えられる。
【０１６４】
データラッチ５２２は、ビットクロックＢＴＣＫに基づいてデータＢＳＤＡＴＡを常にラッチしており、前述のタイミング調整によって書き込みタイミングに遅延が生じてもデータが消失しないようにこれを保持する。ライト用ループカウンタ５２４は、書き込み時のアドレスを記憶している。アドレスマルチプレクサ５３２は、書き込みアドレスを、信号Ｃ１ＤＡＤＲとしてデータメモリ４５４に与える。
【０１６５】
これによって、データメモリ４５４にアドレス、データ、書き込み信号が与えられるため、当該データメモリ４５４に受信データが順次記憶される。また、リード用ループカウンタ５２４は、信号ＤＷＲＥＮに基づいてアップカウントされ、データメモリ４５４への書き込みアドレスを歩進する。信号ＤＷＲＥＮは、インバータ５４０を介して信号ＲＤＬＡＴＧ１となり、前述のタイミング調整時のＣＰＵリードデータ保持用ラッチのための書き込み禁止信号として使用される。これら書き込みタイミングの詳細は、図２２に示されている。
【０１６６】
ＣＲＣ演算、データサイズカウンタ４６２のデクリメント
図１５のデータグループシーケンサ４６０は、信号ＤＡＴＡＳＹＮＣに基づいて信号ＣＲＣＮＸＴを生成し、ＣＲＣ回路４６８に与える。ＣＲＣ回路４６８は、信号ＣＲＣＮＸＴを受けて、ＢＳＤＡＴＡ上のデータグループの各データを順次ＣＲＣ演算する。
【０１６７】
また、データグループシーケンサ４６０は、信号ＣＲＣＮＸＴに同期して、信号ＤＳＤＥＣをデータサイズカウンタ４６２に出力する。データサイズカウンタ４６２は、この信号ＤＳＤＥＣを受けて、内部のデータサイズ値をデクリメントする。データサイズ値が０になると、データサイズカウンタ４６２は信号ＤＳＥＱを出力し、データグループシーケンサ４６０に与える。データグループシーケンサ４６０は、信号ＤＳＥＱを受けると、データグループの全データを受信し終えたと判断し、信号ＣＲＣＯＫＬＤをＣＲＣ回路４６８に与える。これによって、ＣＲＣ回路４６８は、ＣＲＣの演算結果を内部レジスタにストアし、その結果をＯＲゲート４７０に出力する。
【０１６８】
ＯＲゲート４７０は、前述の信号ＰＥＲＲＬＴと、ＣＲＣ演算結果とをＯＲすることにより、どちらかにエラーがあった場合に、信号ＣＲＣＥＲＲをハイレベルにしてプリフィックスＦＩＦＯインターフェース４７２に与える。この信号ＣＲＣＥＲＲは、受信されたプリフィックスデータＳＣＣ、ＤＴＣと共に、図１４のチャンネル１プリフィックスメモリ４５２に与えられて記憶されるが、ＣＲＣの演算結果については、データグループの終了時（すなわち終端パケット）においてのみ有効なフラグとなる。
【０１６９】
ＣＩカウントによるパケットの連続性チェック
データグループシーケンサ４６０は、信号ＰＥＲＲＳＹＮＣに基づいて、信号ＣＩＣＮＴＥＮを生成する。ＣＩカウンタ４６４は、先頭パケットで初期化したＣＩ値を、パケット毎にインクリメントし、その結果をＥＸＯＲ（排他的論理和）ゲート４６６に出力する。ＥＸＯＲゲート４６６は、ＣＩカウンタ４６４からのカウント値と、プリフィックスとして受信されるＣＩ値とが一致するかどうかを検出し、一致しない場合には信号ＣＩＥＲＲをハイレベルにしてプリフィックスＦＩＦＯインターフェース４７２に出力する。一致しない場合は、受信状態が不良で、エラー訂正不可能なパケットが発生し、データグループにパケット抜けが発生したことを意味する。この信号ＣＩＥＲＲは、信号ＣＲＣＥＲＲと共に、受信されたプリフィックスデータＳＣＣ、ＤＴＣと統合され、６ビットパラレルの信号Ｃ１ＰＤとなって、図１４のチャンネル１プリフィックスメモリ４５２に与えられて記憶される。
【０１７０】
プリフィックスメモリ４５２への書き込みおよびアドレス制御
図１５のデータグループシーケンサ４６０は、信号ＰＥＲＲＳＹＮＣに基づいて信号ＰＦＩＦＯＷＲを生成し、プリフィックスＦＩＦＯインターフェース４７２に与える。プリフィックスＦＩＦＯインターフェース４７２内のタイミング発生回路５００（図１７参照）は、信号ＰＦＩＦＯＷＲに基づいて信号ＰＷＲＥＮを生成する。信号ＰＷＲＥＮの生成には、ＣＰＵ３０からのデータリードと衝突しないタイミングが選ばれる。そこで、前述の信号ＤＷＲＥＮの場合と同様に、信号ＳＹＳＣＫに基づいてタイミング発生回路５００が信号ＰＷＲＥＮを生成する。信号ＰＷＲＥＮは、インバータ５０８を介して信号Ｃ１ＰＷＥとなり、図１４のチャンネル１プリフィックスメモリ４５２に、プリフィックスデータの書き込み信号として与えられる。
【０１７１】
図１７のプリフィックスデータラッチ５０２は、ビットクロックＢＴＣＫに基づいて信号ＰＲＦＸＤＴを常にラッチしており、前述のタイミング調整によって書き込みタイミングに遅延が生じてもプリフィックスデータが消失しないようにこれを保持する。ライト用ループカウンタ５０４は、書き込み時のアドレスを記憶している。アドレスマルチプレクサ５１２は、書き込みアドレスを信号Ｃ１ＰＡＤＲとしてプリフィックスメモリ４５２に与える。これによって、プリフィックスメモリ４５２にアドレス、データ、書き込み信号が与えられるため、プリフィックスメモリ４５２に順次受信プリフィックスデータが記憶される。
【０１７２】
また、ライト用ループカウンタ５０４は、信号Ｃ１ＰＷＥに基づいてインクリメントされ、図１４のチャンネル１プリフィックスメモリ４５２への書き込みアドレスを歩進する。信号ＰＷＲＥＮは、インバータ５１８を介して信号ＰＦＬＡＴＧ１となり、前述のタイミング調整時のＣＰＵリードデータ保持用ラッチのための書き込み禁止信号として使用される。これら書き込みタイミングの詳細は、図２２に示される。また、プリフィックスデータ数カウンタ５１４は、信号ＰＷＲＥＮに基づいてインクリメントされ、現在メモリに蓄えているパケット数をＰＦＣＮＴ１として出力する。
【０１７３】
ｃ）終端パケットの検出
図１５のデータグループシーケンサ４６０は、プリフィックスのＤＴＣに基づいて終端パケットを検出する。データグループがスタイル１の場合には、前述のようにデータグループサイズのカウントによって信号ＣＲＣＯＫＬＤを生成するが、データグループがスタイル２の場合には、この終端パケットを示すＤＴＣと信号ＤＢＬＡＳＴとに基づいて、信号ＣＲＣＯＫＬＤを生成する。パケット抜けやＣＲＣエラーの場合を考慮し、終端パケットが検出されたとしても、ＣＰＵ３０から受信許可フラグ４６０ｃを禁止状態にセットしに行かない限り、本システムは、再度同じデータを受信し続ける。
【０１７４】
Ｇ．各データのリード
ＣＰＵ３０が特定のＩ／Ｏアドレスをリードすると、それに対応して、ホストインターフェース４１０内のアドレスデコーダ４１０ｃがデコード信号を生成する。例えば、図１４のチャンネル１プリフィックスメモリ４５２からデータをリードする場合には、デコード信号ＰＦＩＦＯＲＤがチャンネルデコーダ４０８に出力される。
【０１７５】
チャンネルデコーダ４０８内のデータセレクタ４５６は、信号ＰＦＩＦＯＲＤを受けて、チャンネル１プリフィックスメモリ４５２からのプリフィックスデータＣ１ＰＯＤをＤ−ＦＦ４８０で一旦ラッチした信号（すなわち、バッファリングされたプリフィックスデータ）をデータバスＢ上に出力する（図２９のα８）。これによって、ＣＰＵ３０は、プリフィックスデータをリードできる。
【０１７６】
また、信号ＰＦＩＦＯＲＤは、プリフィックスＦＩＦＯインターフェース４７２にも与えられ、タイミング発生回路５００が、これに基づいて信号ＰＲＤＥＮおよびＰＤＷを生成する。信号ＰＲＤＥＮは、リード用ループカウンタ５０６に作用し、リード用アドレスをインクリメントさせる。また、信号ＰＤＷは、プリフィックスデータ数カウンタ５１４に作用し、バッファリングしているパケットのカウント値をダウンカウントさせる。アドレスマルチプレクサ５１２は、データ書き込み時以外、常にリード用ループカウンタ５０６からのリードアドレス値を信号Ｃ１ＰＡＤＲとして出力する。
【０１７７】
同様に、ＣＰＵ３０は、チャンネル１データメモリ４５４の内容、プリフィックスデータ数カウンタ５１４の内容、ＯＲループ４８３の内容をリードできる（図２９のα９〜α１１）。
【０１７８】
上記のようにして、ＣＰＵ３０は、バッファメモリ４５２，４５４から受信したデータを抜き出し、例えば本体内のワークＲＡＭ３２にＴＣＤを展開する。次に、ＣＰＵ３０は、プリフィックスデータのエラーフラグによって、展開したＴＣＤに受信エラーが無いことを確認の後、これをメニューデータとしてＴＶモニタ２２の画面上に表示する。
【０１７９】
（５）番組の選択動作
オペレータは、ＴＶモニタ上に表示されたメニューを見て、受信したい番組名を選択する。ＣＰＵ３０は、オペレータによって選択された番組名を、対応する論理チャンネルデータに変換し、これを内部メモリに一旦記憶する。また、ＣＰＵ３０は、ワークＲＡＭ３２上に展開されているＴＣＤから、当該選択された番組に対応する使用メモリ容量、実行メモリマップ構成を抽出し、これに基づいてメモリマップ上での各メモリの配置を決定する。
【０１８０】
（６）メモリマップ上での各メモリの配置動作
次に、ＣＰＵ３０は、図２１に示すメモリマップ上に、疑似ＳＲＡＭ７４と、フラッシュメモリ７６および１０６とを配置する。ここでは、一例として、疑似ＳＲＡＭ７４をメモリマップ上に配置する動作の詳細について説明する。
【０１８１】
まず、ＣＰＵ３０は、疑似ＳＲＡＭ７４のマッピング設定のためのＩ／ＯポートアドレスをアドレスバスＡに出力するとともに、データバスＡに設定値を出力し、制御信号Ａに含まれる信号ＣＰＵＷＲＢをローレベルにセットする。例えば、図３５に示す位置に疑似ＳＲＡＭ７４を配置する場合、ＲＡＭＯＮ＝１、ＲＡＭＭＡＰ０＝０、ＲＡＭＭＡＰ１＝１、ＲＡＭＭＡＰ２＝０に設定しなければならない。従って、ＣＰＵ３０は、アドレスバスＡ上にＲＡＭＯＮを示すＩ／Ｏポートアドレス値を出力し、データバス上にデータ「８０Ｈ」を出力する。
【０１８２】
マッピングコントローラ７０内のアドレスデコーダ１１２（図７参照）は、上記データバスＡ上のＲＡＭＯＮのＩ／Ｏポートアドレス値をデコードすることにより、デコード信号ＦＥ３をハイレベルにし、コントロールレジスタ１１０に出力する。データバスのＤ７は、バッファ１１８を介して信号ＣＤ７Ｉとしてコントロールレジスタ１１０に与えられる。このとき、データの値が「８０Ｈ」であるため、ＣＤ７Ｉはハイレベルの信号となる。また、上記信号ＣＰＵＷＲＢもコントロールレジスタ１１０に与えられる。
【０１８３】
前述したように、コントロールレジスタ１１０の内部には、前後段２個のＤ−ＦＦとＡＮＤゲートとから成る複数のレジスタブロック１９０〜３００が存在する（図１１参照）。また、リセット信号は、各レジスタブロックに要求される初期値に対応して、各レジスタブロックのＤ−ＦＦのセット端子またはクリア端子に、個別的に与えられる。信号ＦＥ３は、レジスタブロック２００内に存在する前段のＤ−ＦＦ２０２の端子ＣＥに書き込み許可信号として与えられる。また、信号ＣＰＵＷＲＢは、同Ｄ−ＦＦ２０２のクロック端子に書き込み信号として与えられる。これによって、Ｄ−ＦＦ２０２には、ＣＤ７Ｉの値（ハイレベルすなわち論理１）が書き込まれる。
【０１８４】
次に、ＣＰＵ３０は、アドレスバスＡ上にＲＡＭＭＡＰ０を示すＩ／Ｏポートアドレス値を出力し、データバス上にデータ「００Ｈ」を出力する。上記と同様にして、ＲＡＭＭＡＰ０に対応するレジスタブロック２１０内のＤ−ＦＦ２１２は、信号ＦＥ４を受けて、ローレベル（論理０）を記憶する。
【０１８５】
次に、ＣＰＵ３０は、アドレスバスＡ上にＲＡＭＭＡＰ１を示すＩ／０ポートアドレス値を出力し、データバス上にデータ「８０Ｈ］を出力する。上記と同様にして、ＲＡＭＭＡＰ１に対応するレジスタブロック２２０内のＤ−ＦＦ２２２は、信号ＦＥ５を受けて、ハイレベル（論理１）が書き込まれる。
【０１８６】
次に、ＣＰＵ３０は、アドレスバスＡ上にＲＡＭＭＡＰ２を示すＩ／Ｏポートアドレス値を出力し、データバス上にデータ「００Ｈ」を出力する。上記と同様にして、ＲＡＭＭＡＰ２に対応するレジスタブロック２３０内のＤ−ＦＦ２３２は、信号ＦＥ６を受けて、ローレベル（論理０）が書き込まれる。
【０１８７】
さらに、ＣＰＵ３０は、アドレスバスＡ上にＥＮＭＡＰＳＴを示すＩ／Ｏポートアドレス値を出力し、データバス上にデータ「００Ｈ」を出力する。このデータはダミーデータであり、特に意味は無い。ＥＮＭＡＰＳＴへ書き込みを行うという動作によって、信号ＦＥ１４がアドレスデコーダ１１２から各レジスタブロックの後段のＤ−ＦＦ１９４，２０４，２１４，…，３０４のＣＥ端子に与えられる。同時に、信号ＣＰＵＷＲが各Ｄ−ＦＦ１９４，２０４，２１４，…，３０４クロック入力端子に与えられる。これによって、Ｄ−ＦＦ１９２，２０２，２１２，…，３０２に書き込まれたデータが、後段のＤ−ＦＦ１９４，２０４，２１４，…，３０４にそっくり移される。この時点で、先ほど書き込んだＲＡＭＯＮ、ＲＡＭＭＡＰ０、ＲＡＭＭＡＰ１、ＲＡＭＭＡＰ２のデータが、信号ＲＡＭＯＮおよび信号ＲＡＭＭＡＰ０〜２として、マップデコーダ１２０に出力される。このように、レジスタブロックに順次データを設定した後、一度に全設定値を有効化することにより、マッピング変更時の遷移期間中のメモリ配置を気にする必要がなくなる。その結果、容易にマッピング変更が行えるメモリマッピング変更システムを実現できる。
【０１８８】
上記のようにして各レジスタブロック１９０〜３００に設定された内容は、マップデコーダ１２０に入力され、疑似ＳＲＡＭ７４のためのチップイネーブル信号ＣＥ１Ｂの生成に使用される。
【０１８９】
なお、他のメモリ、すなわちフラッシュメモリ７６および１０６をメモリマップ上に配置する動作も上記と同様にして行われる。参考のために、図３２〜図３４に各メモリ配置のために必要となる条件を示しておく。すなわち、図３２は、ＰＳ−ＲＡＭデコーダ１６２において、疑似ＳＲＡＭ７４のチップイネーブル信号ＣＥ１Ｂがアクティブ（ローレベル）になる条件を示している。また、図３３は、フラッシュデコーダ１６４において、フラッシュメモリＡ７６のチップイネーブル信号ＣＥ３Ｂがアクティブ（ローレベル）になる条件を示している。また、図３４は、メモリユニットデコーダ１６６において、フラッシュメモリＢ１０６のチップイネーブル信号ＣＥ４Ｂがアクティブ（ローレベル）になる条件を示している。
【０１９０】
（７）実データの受信動作
次に、ＣＰＵ３０は、実際データ（ＴＣＤ以外のデータ）を受信する。実データの受信動作は、基本的には前述のメニューデータの受信動作と同様である。すなわち、ユーザによって選択された番組に対応する論理チャンネルが、ＣＰＵ３０からデータ放送デコーダ８２に対してセットされる。データ放送デコーダ８２は、受信した放送データの中から、セットされた論理チャンネルに対応するパケットのみを抜き出し、バッファリングする。ＣＰＵ３０は、バッファメモリ４５２，４５４に格納されたデータを、メモリマップ上に配置されたメモリ（例えば、疑似ＳＲＡＭ７４にＤＭＡ転送する。
（８）エラー検出動作
次に、メニューデータまたは実データを受信する際に実行されるエラー検出動作について説明する。本実施例では、誤りのない受信データを得るために、ＢＣＨ誤り訂正と、ＳＤＳＣ誤り訂正と、ＣＩカウンタ４６４によるパケットの連続性チェックと、ＣＲＣ回路４６８によるＣＲＣ演算とを行っている。ＢＣＨ誤り訂正は、受信データの各パケットのヘッダ部に含まれている誤りを訂正するために行われる。ＳＤＳＣ誤り訂正は、受信パケットデータの本体（ペイロード部）に含まれている誤りを訂正するために行われる。
【０１９１】
ＢＣＨ誤り訂正において、誤り訂正をしきれずにエラーが残った場合、図１２のＢＣＨ（１６、５）誤り訂正回路４０４ｄは、信号ＨＥＲＲを出力する。この信号ＨＥＲＲは、チャンネルデテクタ４０６内のＡＮＤゲート４３２，４４０（図１３参照）を閉じるように作用する。その結果、信号ＣＨ１ＥＮＡ，ＣＨ２ＥＮＡをローレベルに強制する。これによって、図１５のデータグループシーケンサ４６０が不能動化され、許可フラグレジスタ４６０ｂがオンされない。従って、図１４のバッファメモリ４５２，４５４へのデータの書き込みが許可されない。
【０１９２】
ＳＤＳＣ誤り訂正において、誤り訂正をしきれずにエラーが残った場合、図１２のＳＤＳＣ（２７２，１９０）誤り訂正回路４０４ｅは、信号ＰＥＲＲを出力する。この信号ＰＥＲＲは、各パケットの終端部において図１３のＤ−ＦＦ４４４にラッチされた後、信号ＰＥＲＲＬＴとしてデータコントローラ４５０におけるＯＲゲート４７０で、ＣＲＣ演算結果（ＣＲＣの演算結果ついては、データグループの終了時、すなわち終端パケットにおいてのみ有効なフラグとなる）と統合されて、信号ＣＲＣＥＲＲとなる。
【０１９３】
パケット抜けによって、受信データのＣＩ値とＣＩカウンタ４６４のカウント値との不一致が生じた場合、ＥＸＯＲゲート４６６は、信号ＣＩＥＲＲをハイレベルにする。
【０１９４】
上記信号ＣＲＣＥＲＲおよびＣＩＥＲＲは、プリフィックスＦＩＦＯインターフェース４７２において、プリフィックスデータ内に挿入され、６ビットのプリフィックスデータＣ１ＰＩＤとなってチャンネル１プリフィックスメモリ４５２に格納される。ＣＰＵ３０が、このチャンネル１プリフィックスメモリ４５２からデータを読み出すとき、チャンネル１データセレクタ４５６内のＯＲループ４８３が各ビット毎に時間軸方向のＯＲをとり、その結果をＤ−ＦＦに記憶する。すなわち、各パケットのプリフィックスデータを時間軸方向に並べた複数のビット列において、信号ＣＲＣＥＲＲに対応するビット列中に１つでも論理１があると、ＯＲループ４８３内のＤ−ＦＦ４８６の対応する記憶部が論理１を保持する。また、各パケットのプリフィックスデータを時間軸方向に並べた複数のビット列において、信号ＣＩＥＲＲに対応するビット列中に１つでも論理１があると、Ｄ−ＦＦ４８６の対応する記憶部が論理１を保持する。従って、ＣＰＵ３０は、プリフィックスデータ読み出し終了後、Ｄ−ＦＦ４８６の記憶情報を読み出すことにより、バッファリングされている受信パケットに、ＳＤＳＣエラー、ＣＲＣエラー、不連続性エラーが生じているか否かを知ることができる。このような手法によれば、各パケット毎にプリフィックスデータを調べる場合に比べて、プログラムの負担を大幅に軽減できる。
【０１９５】
なお、上記説明は、主としてチャンネル１に対する受信動作について述べたが、チャンネル２についても上記と同様の動作で受信が可能なことは言うまでもない。このように２つのチャンネル回路を並列的に設けることにより、一方のチャンネルでプログラムデータ等を受信しつつ、他方のチャンネルで音声データや表示データを受信することが可能となり、それをユーザに流すことで、受信中の退屈感を紛らわせることができる。
【０１９６】
図３５は、データ放送を受信する場合に好適なメモリ配置を示している。メモリマップの制御領域以外の部分には、フラッシュメモリＢ１０６が全面的に配置されている。ただし、図示していないが、バンク７Ｅ，７Ｆには特別領域が予め設定されているため、フラッシュメモリＢ１０６は配置されていない。そのフラッシュメモリＢ１０６上にマスクＲＯＭ７２がＲＯＭＯＮ０＝１によって配置され、疑似ＳＲＡＭ７４がＲＡＭＭＡＰ０＝０、ＲＡＭＭＡＰ１＝１、ＲＡＭＭＡＰ２＝０、ＲＡＭＯＮ＝１によって配置される。また、フラッシュメモリＡ７６は、ＦＭＯＮ＝１、ＦＭＭＡＰ０＝０、ＦＭＭＡＰ１＝１によって図の位置に配置される。
【０１９７】
本実施例で使用したＣＰＵ３０の特性として、割り込みベクトルがバンク０のＦＦＦ０Ｈ以降にセットされるため、マスクＲＯＭ７２を図３５の位置に置くことにより、マスクＲＯＭ７２内の割り込みルーチンが使用可能となり、データ放送の受信が適切に行われる。ＣＰＵ３０は、受信データを、疑似ＳＲＡＭ７４／フラッシュメモリＡ７６／フラッシュメモリＢ１０６の任意のアドレスに書き込むことができる。
【０１９８】
ここで、疑似ＳＲＡＭ７４の下に隠れているフラッシュメモリＢ１０６の一部分は、ＲＡＭＯＮ＝０として、疑似ＳＲＡＭ７４をメモリマップ上から消失させるか、またはＲＡＭＭＡＰ０〜２の値を変更して、疑似ＳＲＡＭ７４の位置を移動することによりアクセスできるようになる。さらに、ＲＡＭＭＡＰ０＝０、ＲＡＭＭＡＰ１＝０、ＲＡＭＭＡＰ２＝１と設定することにより、疑似ＳＲＡＭ７４を、フラッシュメモリＡ７６の８０〜８Ｆバンクにセットすることもできる。この場合、フラッシュメモリＢ１０６、フラッシュメモリＡ７６、疑似ＳＲＡＭ７４は、この領域において３層のメモリレイヤを持つことになる。
【０１９９】
なお、上記図３５のメモリ配置は、マスクＲＯＭ７２に文字や静止画を表示するプログラムが予め内蔵されている場合、あるいは文字および静止画の放送データを受信しながら、これを画面に表示する場合に好適なメモリ配置である。
【０２００】
図３６は、フラッシュメモリＡ７６内に記憶したゲームプログラムを動作させる場合に好適なメモリ配置を示す。この場合、ＣＰＵ３０がゲーム用の割り込みベクトルを使用できるように、フラッシュメモリＡ７６を第０バンクに設定する必要があるため、図３５に示すようなマスクＲＯＭエリアは排除し（ＲＯＭＯＮ０＝０）、フラッシュメモリＡ７６の位置を変更しなければならない（ＦＭＭＡＰ０＝０、ＦＭＭＡＰ１＝０）。しかし、ゲームプログラムからマスクＲＯＭ７２内に含まれる画像、音声制御サブルーチンを使用できれば便利であるため、ただ単にマスクＲＯＭ７２のメモリエリアを排除するだけでなく、マスクＲＯＭ７２を図３６の位置に移動することが必要となる。
【０２０１】
この場合には、ＲＯＭＯＮ１＝１と設定すればよい。ただし、上記画像、音声制御サブルーチンは、アドレス的にリロケータブルであること（プログラム上で絶対アドレスとして記述されていないこと）が要求される。また、マスクＲＯＭ７２の移動によって隠れてしまったフラッシュメモリＢ１０６のバンクＡ０〜ＢＦの領域にアクセスしたい場合には、ＲＯＭＯＮ１＝０とすることによりアクセスが可能となる。このように、各メモリをプログラムの状況に応じてメモリマップ上の最適の位置に配置することができる。
【０２０２】
ここで最適の位置とは、単にプログラム実行の邪魔にならない位置という意味もあるが、実開平４−７８６１９号公報に開示されるように、ＣＰＵアドレスに対応してＣＰＵクロック周波数が変化する場合に、高速のアクセススピードに対応するアドレス配置を指定できるという意味も含んでいる。また、逆にあえて低速のアクセススピードに対応するアドレスに配置し、不要輻射を低減するようメモリ配置を選択することもできる。さらに、従来のバンク設定のように、特定のバンク幅に影響されず、広範囲に渡って全メモリエリア（例えば、マスクＲＯＭエリアの１６Ｍビット全て）がメモリマップ上に出現するため、データ転送時に頻繁にバンク切り替えを行う必要が無いという利点もある。
【０２０３】
図３５のメモリ配置でデータを受信し、受信後図３６のメモリ配置でデータを表示（または、データをプログラムとして実行）する場合のフローチャートを図３７に示す。以下、この図３７について説明する。
【０２０４】
通常、リセット時および電源投入時には、マスクＲＯＭ７２は、図３５に示す位置に再配置されている（ステップＳ１０１）。次に、ＣＰＵ３０は、ＴＶモニタ２２上に初期画面（メーカー名や本システムのタイトル等）を表示した後（ステップＳ１０２）、マスクＲＯＭ７２に格納されたメニュー受信ルーチンを読み出して起動する（ステップＳ１０３）。このメニュー受信ルーチンにおいて、データ放送からのメニューデータの受信が行われるが、受信されたメニューデータは、通常、メモリマップ上の制御領域にあるワークＲＡＭ３２にストアされる（ステップＳ１０４）。なお、メニューデータを疑似ＳＲＡＭ７４に記憶させたい場合には、疑似ＳＲＡＭ７４をメモリマップ上に配置してやる必要がある。
【０２０５】
メニューデータは、受信可能なデータ名と、それに対応する使用メモリ容量および実行メモリマップ構成とを含む。データ名がＴＶモニタ２２の画面上に表示され、ユーザーによってその中の１つが選択される（ステップＳ１０５）。ユーザーによって特定のデータが選択されると、まず、それを受信するためのメモリ配置がＣＰＵ３０によって決定され（ステップＳ１０６）、当該決定に従って疑似ＳＲＡＭ７４およびフラッシュメモリＡ７６，Ｂ１０６がメモリマップ上に配置される（ステップＳ１０７）。このとき、フラッシュメモリＢ１０６は、メモリマップ上全面に渡ってバックグラウンドとして配置される。フラッシュメモリＢ１０６の記憶容量がメモリマップ容量よりも小さい場合、フラッシュメモリＢ１０６の同一のメモリイメージがメモリマップ上に複数個出現する。このため、他のメモリがフラッシュメモリＢ１０６の上に重なって配置されても、他のメモリの隙間からフラッシュメモリＢ１０６の任意のアドレスをアクセスできる可能性が高くなる。
【０２０６】
次に、実際のデータが受信されるが（ステップＳ１０８）、フラッシュメモリへの書き込み速度が遅く、ＤＭＡ転送に対応できない場合には、まず疑似ＳＲＡＭ７４にデータをＤＭＡ転送してから、順次フラッシュメモリへ書き込むという作業が必要になる（ステップＳ１０９）。しかし、疑似ＳＲＡＭ７４とフラッシュメモリの書き込まれるべきエリアとが重なっている場合には、書き込みができないため、疑似ＳＲＡＭ７４を当該エリアに重ならない位置に移動させる必要がある（ステップＳ１１０〜Ｓ１１２）。フラッシュメモリには、カートリッジ６に内蔵されるフラッシュメモリＡ７６と、メモリユニット８に内蔵されるフラッシュメモリＢ１０６とのどちらを用いてもよい。疑似ＳＲＡＭ７４が問題の無い位置にあることを確認した後、データはフラッシュメモリに書き込まれる（ステップＳ１１３）。以上の動作が実際のデータを全て受信し終わるまで繰り返し実行される（ステップＳ１０８〜Ｓ１１４）。
【０２０７】
次に、受信した実際のデータをプログラムとして実行するに際して、疑似ＳＲＡＭ７４の現状の配置が問題になるかどうかがチェックされる（ステップＳ１１５）。これは、マスクＲＯＭ７２上で現在動作しているプログラムをフラッシュメモリ上で動作させるように切り替える場合に、動作中のメモリの配置を切り替えると暴走の恐れがあるためである。問題がある場合、一旦、プログラムを疑似ＳＲＡＭ７４上で動作させ、マップを切り替えてからフラッシュメモリに制御を移すという手順が採用される。ただし、フラッシュメモリが疑似ＳＲＡＭ７４の下に隠れている場合（ステップＳ１１６）は、フラッシュメモリへの移行が不可能であるため、予め不具合の生じない位置に疑似ＳＲＡＭ７４を移動しておく（ステップＳ１１７）。疑似ＳＲＡＭ７４の位置が決定されると、準備プログラムが転送、実行され、マップの切り替え、フラッシュメモリへのジャンプが行われる（ステップＳ１１８〜Ｓ１２０）。
【０２０８】
その後は、データ放送から受信されたプログラムおよびデータに従ってＣＰＵ３０は動作し、必要に応じてメモリマップの配置を切り替える（ステップＳ１２１）。
【０２０９】
ここで、本実施例では、メモリマップの配置決定方法として、３種類の方法が準備されていることがわかる。すなわち、第１番目の方法は、マスクＲＯＭ７２内に記憶されているメモリマップ配置データにより決定される方法である。第２番目の方法は、データ放送のメニューデータに含まれ、データ受信時に必要なメモリマップ配置を示すデータによって決定される方法である。第３番目の方法は、受信された実際のデータおよびプログラムに含まれ、これを表示あるいは実行する際に必要となるメモリマップ配置を示す実行データにより決定される方法である。特に、第２番目および第３番目の方法は、放送されるメニューデータおよび実行データに基づいてメモリマップの配置を設定できるため、放送されるデータの容量、種類によって最適な配置を放送時に指定できる。
【０２１０】
図３８は、図３７におけるサブルーチンステップＳ１０３またはＳ１０８において、ＣＰＵ３０によって実行される動作を示したフローチャートである。以下、この図３８を参照して、データ放送受信時におけるＣＰＵ３０の動作を説明する。
【０２１１】
まず、ＣＰＵ３０は、アドレスバスＢにアドレス信号を出力し、データバスに論理チャンネルデータを出力し、制御信号Ｂに含まれる信号ＰＡＷＲをローレベルにセットすることにより、図５のデータ放送デコーダ８０に論理チャンネルをセットする（ステップＳ２０１）。次に、ＣＰＵ３０は、受信プログラム（マスクＲＯＭ７２に格納されている）に従って、次フレームでＴＶモニタ２２に出力すべき画像・音声（例えば、ユーザの待機を促すメッセージ）のデータの処理を、ビデオプロセッサ４０およびオーディオプロセッサ４６と協働して行う（ステップＳ２０２）。次に、ＣＰＵ３０は、ビデオプロセッサ４０からブランキング期間における割り込み指示ＮＭＩが来るのを待機する（ステップＳ２０３）。当該割り込み指示ＮＭＩを受け取ると、ＣＰＵ３０は、図１７のプリフィックスデータ数カウンタ５１４をアクセスし、そこに格納されているプリフィックスデータ数を確認する（ステップＳ２０４）。ＣＰＵ３０は、プリフィックスデータ数の確認結果に基づいて、データメモリ４５４内にデータが格納されているか否かを判断する（ステップＳ２０５）。データメモリ４５４内にデータが格納されていない場合は、転送すべきデータが溜まっていないと判断し、ステップＳ２０２の動作に戻る。
【０２１２】
一方、データメモリ４５４内にデータが格納されている場合、ＣＰＵ３０は、図１６のＯＲループ４８３に読み出し指示を与えることにより、Ｄ−ＦＦ４８６をリセットする（ステップＳ２０６）。次に、ＣＰＵ３０は、プリフィックスメモリ４５２内にバッファリングされたプリフィックスデータをＤＭＡ転送する（ステップＳ２０７）。プリフィックスデータの転送先は、前述のステップＳ１０３では、ワークＲＡＭ３２であり、ステップＳ１０８では、疑似ＳＲＡＭ７４である。次に、ＣＰＵ３０は、ＯＲループ４８３内のＤ−ＦＦ４８６に記憶されたエラーフラグの状態を確認する（ステップＳ２０８）。ＣＰＵ３０は、このエラーフラグの状態に基づいて、何らかのエラーが生じているか否かを判断する（ステップＳ２０９）。前述したように、Ｄ−ＦＦ４８６に記憶されたエラーフラグが論理１の場合、データメモリ４５４内に格納されているデータパケットのいずれかにエラーが生じている。
【０２１３】
当該エラーフラグが論理１で、何らかのエラーが発生している場合、ＣＰＵ３０は、すでにワークＲＡＭ３２または疑似ＳＲＡＭ７４に転送されたプリフィックスデータを参照することにより、どのパケットにどのようなエラーが生じているかを確認し、再受信処理の準備を行う（ステップＳ２１０）。なお、ここで確認されるエラーは、ＳＤＳＣエラーと、ＣＩエラーである。ステップＳ２０９でエラーが検出されない場合（Ｄ−ＦＦ４８６に記憶されたエラーフラグが論理０の場合）、またはステップＳ２１０の処理の後、ＣＰＵ３０は、データメモリ４５４内にバッファリングされたデータグループデータをＤＭＡ転送する（ステップＳ２１１）。データグループデータの転送先は、前述のステップＳ１０３では、ワークＲＡＭ３２であり、ステップＳ１０８では、疑似ＳＲＡＭ７４である。次に、ＣＰＵ３０は、データグループデータの全てを転送したか否かを判断する（ステップＳ２１２）。この判断は、終端パケットの検出に基づいて行われる。もし、終端パケットの転送が終了していない場合、ＣＰＵ３０は、再びステップＳ２０２の動作に戻り、残りのパケットデータの受信およびＤＭＡ転送を繰り返す。
【０２１４】
一方、終端パケットの転送が終了すると、ＣＰＵ３０は、ワークＲＡＭ３２または疑似ＳＲＡＭ７４に記憶されたプリフィックスデータ中のＣＲＣフラグ（ＳＤＳＣエラーを示すフラグの内、終端パケットに対応するフラグ）をチェックし（ステップＳ２１３）、受信データ内にＣＲＣエラーが生じているか否かを判断する（ステップＳ２１４）。ＣＲＣエラーが生じている場合、ＣＰＵ３０は、再受信処理の準備を行う（ステップＳ２１５）。ＣＲＣエラーが生じていない場合、またはステップＳ２１５の再受信準備が終了した後、ＣＰＵ３０は、データ放送受信処理を終了する。
【０２１５】
ところで、上記ステップＳ２０９において、受信データにエラーのあることが発見された場合の対処方法としては、エラーのあるデータパケットのみを再受信して転送する第１の方法と、データグループデータ全体を再受信して転送する第２の方法とがある。第１の方法は、短時間で処理が終了する反面、データ放送デコーダ８２内でＣＲＣ演算が行えないため、データ転送後にＣＰＵ３０が転送先のメモリの記憶内容からＣＲＣ演算を行う必要がある。その結果、ＣＲＣエラーが検出されると、再びデータグループデータ全体を再受信して転送する必要がある。そのため、本システムの受信性能や、現在の受信状態を考慮して、いずれの方法を選択するかを決めることが好ましい。例えば、雷によるインパルス性ノイズの混入時には、第１の方法が好ましい。また、降雨によって受信データ全体のＳ／Ｎ比が低下している場合は、第２の方法が好ましい。なお、上記ステップＳ２１４において、ＣＲＣエラーが発見された場合は、データグループデータ全体の再受信および転送が必要になるため、第２の方法により対処される。
【０２１６】
図３９は、図７に示すマップデコーダ１２０の他の構成例を示すブロック図である。なお、この図３９は、優先順位レジスタを設けることにより、各メモリ回路の優先順位をプログラマブルに設定することが可能なマップデコーダを例示している。
【０２１７】
図３９において、本マップデコーダは、図１０に示すマップデコーダの構成と同様に、プリデコード信号ＣＥ２Ｂ’を出力するＲＯＭデコーダ１６０’と、プリデコード信号ＣＥ１Ｂ’を出力するＰＳ−ＲＡＭデコーダ１６２’と、プリデコード信号ＣＥ３Ｂ’を出力するフラッシュデコーダ１６４’と、プリデコード信号ＣＥ４Ｂ’を出力するメモリユニットデコーダ１６６’とを備えている。しかしながら、これらデコーダ１６０’，１６２’，１６４’，１６６’は、前段のデコーダの出力が、後段のデコーダにデコード条件として与えられていない。従って、プリデコード信号ＣＥ１Ｂ’，ＣＥ２Ｂ’，ＣＥ３Ｂ’，ＣＥ４Ｂ’は、優先順位を持っておらず、メモリマップ上の同じ位置に複数のメモリが配置されている場合、ＣＰＵ３０が当該位置をアクセスすると、複数のプリデコード信号が同時にアクティブになる可能性がある。そこで、優先順位を持たないプリデコード信号に対して、優先順位を与えるために、アドレスデコーダ１７０と、優先順位設定レジスタ１７２と、セレクタＡ１７４と、セレクタＢ１７６と、優先順位回路１７８とがさらに設けられる。
【０２１８】
次に、図３９に示すマップデコーダの動作を説明する。ＣＰＵ３０は、優先順位設定レジスタ１７２に優先順位データ（マスクＲＯＭ７２／疑似ＳＲＡＭ７４／フラッシュメモリＡ７６／フラッシュメモリＢ１０６の優先順位を切り替えるためのデータ）を書き込む際に、アドレスバスＡ上に優先順位設定レジスタ１７２のＩ／Ｏポートアドレスを示すアドレス信号を出力し、データバス上に当該優先順位データを出力する。さらに、ＣＰＵ３０は、優先順位設定レジスタ１７２に、書き込み信号ＣＰＵＷＲＢを出力する。
【０２１９】
アドレスデコーダ１７０は、アドレスバスＡ上のアドレス信号をデコードして書き込み許可信号ＰＲＣＥを出力し、優先順位設定レジスタ１７２に与える。優先順位設定レジスタ１７２は、アドレスデコーダ１７０からの書き込み許可信号ＰＲＣＥおよびＣＰＵ３０からの書き込み信号ＣＰＵＷＲＢに応答して、データバス上の優先順位設定データを取り込んで記憶する。
【０２２０】
セレクタＡ１７４は、「４→１」セレクタを４回路内蔵しており、優先順位設定レジスタ１７２からの優先順位データに基づいて、各デコーダからのプリデコード信号の配列を切り替え、その優先順位を変更する。すなわち、セレクタＡ１７４は、優先順位の高いものが上から順番に並ぶように、プリデコード信号の配列を切り替える。
【０２２１】
優先順位回路１７８は、セレクタＡ１７４を上から順番（すなわち、優先順位の高い方から順番に）にサーチし、最初にアクティブになっている信号を検出し、当該信号をアクティブ（ローレベル）、他の信号を非アクティブ（ハイレベル）の状態にしてセレクタＢ１７６に出力する。また、セレクタＡ１７４から入力する信号がすべて非アクティブであった場合には、セレクタＢ１７６へ出力する信号を全て非アクティブにする。
【０２２２】
セレクタＢ１７６は、セレクタＡと同様の構成を有し、セレクタＡ１７４によって優先順位変更のために組み替えられた配線状態を元に戻し、各メモリ回路のためのチップイネーブル信号ＣＥ１Ｂ，ＣＥ２Ｂ，ＣＥ３Ｂ，ＣＥ４Ｂを出力する。優先順位回路１７８によって４本の信号線の内の１本だけがアクティブになる（または全てが非アクティブになる）ため、セレクタＢ１７６から出力される各メモリ回路のチップイネーブル信号は、同時に２本以上がアクティブになることは無い。また、優先順位設定レジスタ１７２に書き込む優先順位データを変更することにより、容易に各メモリ回路のアクセス優先順位を変えることができる。
【０２２３】
なお、以上説明した各実施例においては、各々異なる種類のメモリを対象としてメモリウィンドウを設定したが、同種のメモリに対するメモリウインドウを異なるメモリ領域上に設定してもよい。また、上記各実施例では、データ放送受信機用メモリカートリッジ内に収納されたメモリを管理の対象としているが、通常の家庭用ゲーム機のメモリカートリッジや、パーソナルコンピュータのメモリ装置にも本発明を適用できることは言うまでもない。
【０２２４】
【発明の効果】
請求項１の発明によれば、複数のメモリのそれぞれについて、アドレス空間の任意の領域に、アクセスが可能となるウインドウを移動可能に設定するようにしているので、使用するメモリの諸条件（種類、容量、使用状況）に応じて、アドレス空間上で柔軟にメモリを配置できる。また、アドレス空間上において、複数のウインドウが重なって設定された領域がアクセスされたときは、優先度指定手段によって指定された優先度に基づいて、当該重なったウインドウに対応する各メモリのアクセス優先度を制御するようにしているので、複数のメモリのアクセスが競合することがなく、読み出しデータの衝突による誤動作を未然に防止することができる。
【０２２５】
請求項３の発明によれば、ＣＰＵから各メモリの優先順位が書き込まれる記憶手段の記憶内容に基づいて、各メモリ間の優先度を指定するようにしているので、当該優先度を自由に変更することができる。
【０２２６】
請求項４の発明によれば、ＣＰＵから第１の設定情報記憶手段に対してシーケンシャルに設定されるウインドウ設定情報を、第２の設定情報記憶手段で一括的にラッチするようにしているので、アドレス空間上に各メモリのためのウインドウを同時に開くことができる。その結果、ＣＰＵは、ウインドウ変更途中のマップ状態を考慮する必要がなくなり、必要な処理を容易に行うことができる。
【図面の簡単な説明】
【図１】本発明の一実施例に係る衛星データ放送受信装置の構成を示す外観斜視図である。
【図２】図１の衛星データ放送受信装置を用いて構成された衛星データ放送受信システムの全体構成を示す外観斜視図である。
【図３】図２におけるゲーム機本体２の内部構成を示すブロック図である。
【図４】図２における衛星データ放送受信カートリッジ６の内部構成を示すブロック図である。
【図５】図２における衛星データ放送受信アダプタ４の内部構成を示すブロック図である。
【図６】図２におけるメモリユニット８の内部構成を示すブロック図である。
【図７】図４におけるマッピングコントローラ７０の内部構成を示すブロック図である。
【図８】図７におけるＩＲＱコントローラ１２６の内部構成を示すブロック図である。
【図９】図７におけるＰＳＲＡＭコントローラ１２４の内部構成を示すブロック図である。
【図１０】図７におけるマップデコーダ１２０の内部構成を示すブロック図である。
【図１１】図７におけるコントロールレジスタ１１０の内部構成を示すブロック図である。
【図１２】図５におけるデータ放送デコーダ８２の内部構成を示すブロック図である。
【図１３】図１２におけるチャンネルデテクタ４０６の内部構成の詳細を示すブロック図である。
【図１４】図１２におけるチャンネル１用のデコーダ／バッファ４０８ａの内部構成を示している。
【図１５】図１４におけるデータコントローラ４５０の内部構成の詳細を示すブロック図である。
【図１６】図１４におけるデータセレクタ４５６の内部構成の詳細を示すブロック図である。
【図１７】図１５におけるプリフィックスＦＩＦＯインターフェース４７２の内部構成の詳細を示すブロック図である。
【図１８】図１５におけるデータＦＩＦＯインターフェース４７４の内部構成の詳細を示すブロック図である。
【図１９】図１８におけるＥＭＰ／ＦＵＬデテクタ５３８の内部構成の詳細を示すブロック図である。
【図２０】図１９に示すＥＭＰ／ＦＵＬデテクタ５３８の動作を、各入力条件別に示す図である。
【図２１】図１３のビットカウンタ４２２から出力される各種信号のタイミングを示すタイムチャートである。
【図２２】図１４のデータメモリ４５４のライトタイミングを説明するためのタイムチャートである。
【図２３】図１４のデータメモリ４５４のリードタイミングを説明するためのタイムチャートである。
【図２４】ＣＰＵ３０が保有するアドレス空間に対応するメモリマップを示す図である。
【図２５】ＣＰＵ３０のメモリマップ上において、マスクＲＯＭ７２を割り付け可能な領域を示す図である。
【図２６】ＣＰＵ３０のメモリマップ上において、疑似ＳＲＡＭ７４を割り付け可能な領域を示す図である。
【図２７】ＣＰＵ３０のメモリマップ上において、フラッシュメモリＡ７６を割り付け可能な領域を示す図である。
【図２８】ＣＰＵ３０のメモリマップ上において、フラッシュメモリＢ１０６を割り付け可能な領域を示す図である。
【図２９】本実施例において、衛星データ放送受信時の信号の流れを示す図である。
【図３０】本実施例の衛星データ放送受信システムで採用されるデータ伝送の階層モデルを示す図である。
【図３１】図１０のＲＯＭデコーダ１６０において、マスクＲＯＭ７２のチップイネーブル信号ＣＥ２Ｂがアクティブ（ローレベル）になる条件を示す図である。
【図３２】図１０のＰＳ−ＲＡＭデコーダ１６２において、疑似ＳＲＡＭ７４のチップイネーブル信号ＣＥ１Ｂがアクティブ（ローレベル）になる条件を示す図である。
【図３３】図１０のフラッシュデコーダ１６４において、フラッシュメモリＡ７６のチップイネーブル信号ＣＥ３Ｂがアクティブ（ローレベル）になる条件を示す図である。
【図３４】図１０のメモリユニットデコーダ１６６において、フラッシュメモリＢ１０６のチップイネーブル信号ＣＥ４Ｂがアクティブ（ローレベル）になる条件を示す図である。
【図３５】本実施例において、データ放送を受信する場合に好適なメモリ配置を示す図である。
【図３６】本実施例において、フラッシュメモリＡ７６内に記憶されたゲームプログラムを動作させる場合に好適なメモリ配置を示す図である。
【図３７】本実施例において、図３５のメモリ配置でデータを受信し、受信後、図３６のメモリ配置でデータを表示（または、データをプログラムとして実行）する場合の動作を示すフローチャートである。
【図３８】図３７におけるサブルーチンステップＳ１０３またはＳ１０８において、ＣＰＵ３０によって実行される動作を示したフローチャートである。
【図３９】図７に示すマップデコーダ１２０の他の構成例を示すブロック図である。
【符号の説明】
２…ゲーム機本体
４…衛星データ放送受信アダプタ
６…衛星データ放送受信カートリッジ
８…メモリユニット８
１０…ハードディスク装置
【図１】
0003615588.tif 000002
【図２】
0003615588.tif 000003
【図３】
0003615588.tif 000004
【図４】
0003615588.tif 000005
【図５】
0003615588.tif 000006
【図６】
0003615588.tif 000007
【図７】
0003615588.tif 000008
【図８】
0003615588.tif 000009
【図９】
0003615588.tif 000010
【図１０】
0003615588.tif 000011
【図１１】
0003615588.tif 000012
【図１２】
0003615588.tif 000013
【図１３】
0003615588.tif 000014
【図１４】
0003615588.tif 000015
【図１５】
0003615588.tif 000016
【図１６】
0003615588.tif 000017
【図１７】
0003615588.tif 000018
【図１８】
0003615588.tif 000019
【図１９】
0003615588.tif 000020
【図２０】
0003615588.tif 000021
【図２１】
0003615588.tif 000022
【図２２】
0003615588.tif 000023
【図２３】
0003615588.tif 000024
【図２４】
0003615588.tif 000025
【図２５】
0003615588.tif 000026
【図２６】
0003615588.tif 000027
【図２７】
0003615588.tif 000028
【図２８】
0003615588.tif 000029
【図２９】
0003615588.tif 000030
【図３０】
0003615588.tif 000031
【図３１】
0003615588.tif 000032
【図３２】
0003615588.tif 000033
【図３３】
0003615588.tif 000034
【図３４】
0003615588.tif 000035
【図３５】
0003615588.tif 000036
【図３６】
0003615588.tif 000037
【図３７】
0003615588.tif 000038
【図３８】
0003615588.tif 000039
【図３９】
0003615588.tif 000040