図面 (/)
概要
請求項1
CPUが保有するアドレス空間上に複数のメモリを割り当てて管理する装置であって、前記複数のメモリについて、それぞれ異なる割当可能領域を設定する割当可能領域設定手段、前記複数のメモリのそれぞれについて、前記割当可能領域設定手段によって設定された前記アドレス空間の割当可能領域のうちの任意の領域に、アクセスが可能となるウインドウを移動可能に設定するウインドウ設定手段、前記CPUが実行する処理内容に応じて前記複数のメモリの前記アドレス空間上での配置位置を切り替えるメモリ配置切替手段、各前記メモリ間の優先度を指定するための優先度指定手段、および前記アドレス空間上において、複数のウインドウが重なって設定された領域がアクセスされたとき、前記優先度指定手段によって指定された優先度に基づいて、当該重なったウインドウに対応する各メモリのアクセス優先度を制御する優先度制御手段を備え、前記ウインドウ設定手段は、前記複数のメモリのそれぞれについて、前記メモリ配置切替手段によって切り替えられた配置位置に前記ウインドウを設定することを特徴とする、メモリ管理装置。
--
0003
そこで、従来は、バンク切り替えと呼ばれる手法によって、メモリの管理を行うようにしていた。このバンク切り替えの従来技術としては、以下のようなものがあった。
0004
(1)実公平3−30916号公報…キャラクタ用メモリのバンク切り替え技術を開示している
(2)特公平4−20492号公報…プログラムメモリのバンク切り替え技術を開示している
(3)特開昭63−245535号公報…複数レジスタによる複雑なバンク切り替え技術を開示している
(4)特開平3−92949号公報…ROMとRAMのメモリ切り替え技術を開示している
(5)特開平4−65738号公報…メモリのアクセス形態を変更する技術を開示している
(6)特開平4−130554号公報…ROMとRAM間のデータ転送技術を開示している
技術分野
0005
バンク切り替えには、大きく分けて2種類の技術がある。1つは、上記従来技術(1),(2),(3)のように、CPUが直接アクセスできるアドレス空間よりもさらに大容量のメモリを使用するために、このメモリを複数のバンクに分割し、メモリマップ上に配置されたエリアに指定のバンクを割り当てる技術である。もう1つは、上記従来技術(4),(5),(6)のように、メモリ効率やアクセスタイム向上のために、ビット幅を切り替えたり、高速アクセス可能なS−RAMの使用を目的としてROMとの切り替えを行う技術である。
0006
上述の2種のバンク切り替え技術において、前者のバンク切り替えは大容量化、後者のバンク切り替えはメモリの特殊化に対応するための解決策を示唆しているが、どちらも狭いメモリ空間上で大容量のメモリを使用するためのバンク切り替え技術であり、プログラムを作成する上で、特定のメモリを任意のメモリマップ上に設定するための融通性に欠ける。
0007
現在のように、CPUが広いメモリマップエリアを持つようになると、複数種類のメモリを広いCPUメモリマップ上にアプリケーション毎に最適に配置する要求が高まっている。しかしながら、従来のバンク切り替え技術では、このような要求に対応することができなかった。例えば、読み出し専用メモリであるROM、揮発性メモリであるDRAM(またはPSRAM)、書き込みに時間を要する不揮発性メモリであるフラッシュメモリを使用してデータ放送を受信する場合、ROM上のプログラムを使用してフラッシュメモリ上に受信データをストアしながらPSRAM上のプログラムを同時に(マルチタスクで)走らせる場合には、この3つをメモリマップ上に割り当てる必要がある。しかしながら、特定のアドレスエリアに固定された各メモリに対し、必要に応じて3つともバンク切り替えを行っていては、プログラムによるアドレス管理が煩雑になる。したがって、その時々によって、必要なメモリが、必要な場所に割り当てられ、それ以外の時にはメモリマップ上から消えているという操作ができれば、より柔軟なメモリ割り付けが可能になる。
発明が解決しようとする課題
0008
それゆえに、本発明の目的は、使用するメモリの諸条件(種類、容量、使用状況)に応じて、メモリマップ上で柔軟にメモリの管理が行えるメモリ管理装置を提供することである。
0009
請求項1に係る発明は、CPUが保有するアドレス空間上に複数のメモリを割り当てて管理する装置であって、
複数のメモリについて、それぞれ異なる割当可能領域を設定する割当可能領域設定手段、
複数のメモリのそれぞれについて、割当可能領域設定手段によって設定されたアドレス空間の割当可能領域のうちの任意の領域に、アクセスが可能となるウインドウを移動可能に設定するウインドウ設定手段、
CPUが実行する処理内容に応じて複数のメモリのアドレス空間上での配置位置を切り替えるメモリ配置切替手段、
各メモリ間の優先度を指定するための優先度指定手段、および
アドレス空間上において、複数のウインドウが重なって設定された領域がアクセスされたとき、優先度指定手段によって指定された優先度に基づいて、当該重なったウインドウに対応する各メモリのアクセス優先度を制御する優先度制御手段を備え、
ウインドウ設定手段は、複数のメモリのそれぞれについて、メモリ配置切替手段によって切り替えられた配置位置にウインドウを設定する。
0013
【作用】
周知のごとく、パーソナルコンピュータのディスプレイ表示方法において、複数種類の画像を表示する場合に、分割スクリーンという方法と、マルチウィンドウという方法とがある。前者は、例えば表示画面を上下に2分割し、上と下とで異なる画像を表示するというものであり、後者は、画面上に仮に設定した2つ以上の窓に対して、各々の画像を割り当てるという方法である。特に後者においては、各ウィンドウは重なって表示され、必要なウィンドウのみが最も前面に表示される。本発明は、メモリの配置手法に、このマルチウィンドウの概念を導入し、複数種類のメモリエリアを各々独立にマッピングし、優先度の高いメモリから順番にメモリマップの前面に配置することにより、柔軟なメモリ割り付けを実現している。従来のメモリバンク切り替えは、分割スクリーン方式の画像処理技術に対応し、本件のメモリ割り付けを使用することによって得られる効果は、この2つの方法を比較しても伺い知ることができる。
0014
請求項1に係る発明では、複数のメモリについて、それぞれ異なる割当可能領域を設定し、複数のメモリのそれぞれについて、アドレス空間の当該割当可能領域のうちの任意の領域に、アクセスが可能となるウインドウを移動可能に設定する。また、CPUが実行する処理内容に応じて複数のメモリのアドレス空間上での配置位置を切り替え、アドレス空間上において、複数のウインドウが重なって設定された領域がアクセスされたときは、優先度指定手段によって指定された優先度に基づいて、当該重なったウインドウに対応する各メモリのアクセス優先度を制御するようにしている。これによって、使用するメモリの諸条件(種類、容量、使用状況)に応じて、アドレス空間上で柔軟にメモリの管理が行える。
0015
また、請求項1に係る発明では、予め設定された優先順位に基づいて、各メモリ間の優先度を固定的に指定するようにしている。
0016
また、請求項1に係る発明は、CPUから各メモリの優先順位が書き込まれる記憶手段の記憶内容に基づいて、各メモリ間の優先度を指定するようにしている。これによって、当該優先度を自由に変更することができる。
0018
【実施例】
図1は、本発明の一実施例に係る衛星データ放送受信装置の構成を示す外観斜視図である。図1において、この衛星データ放送受信装置は、ゲーム機本体2と、衛星データ放送受信アダプタ4と、衛星データ放送受信カートリッジ6と、メモリユニット8と、ハードディスク装置10とを備えている。ハードディスク装置10は、衛星データ放送受信アダプタ4に装着される。ゲーム機本体2は、衛星データ放送受信アダプタ4の上に搭載される。メモリユニット8は、衛星データ放送受信カートリッジ6に装着される。衛星データ放送受信カートリッジ6は、ゲーム機本体2に装着される。ゲーム機本体2は、いわゆるテレビゲーム機であって、例えば、本出願人の製造販売に係る「スーパーファミコン(商品名;登録商標)」が用いられる。
0019
図2は、本実施例の衛星データ放送受信装置を用いて構成された衛星データ放送受信システムの構成を示す外観斜視図である。図2において、ゲーム機本体2には、コントローラ12と、TVモニタ22とが接続される。衛星データ放送受信アダプタ4には、ACアダプタ14が接続されるとともに、ビットストリーム分配器20を介して、BSチューナ18が接続される。BSチューナ18には、BSアンテナ16が接続される。ビットストリーム分配器20は、BSチューナ18からの放送データ(ビットストリーム)を、衛星データ放送受信アダプタ4に与えるとともに、他の衛星データ受信機器に対して当該信号を分配して供給する。
0020
図3は、図2におけるゲーム機本体2の内部構成を示すブロック図である。図3において、このゲーム機本体2は、CPU30と、ワークRAM32と、アドレスデコーダ34と、入出力ポート36と、コネクタA38と、ビデオプロセッサ(PPU)40と、ビデオRAM42と、ビデオエンコーダ44と、オーディオプロセッサ(APU)46と、オーディオRAM48と、ステレオサウンドの左用ミキサ50aと、右用ミキサ50bと、左用アンプ52aと、右用アンプ52bと、コネクタB54と、CIC56と、リセットスイッチ58と、リセット回路60と、パワースイッチ62と、電源回路64と、発振回路66とを備えている。
0021
CPU30は、DMA回路30aを内蔵しており、DMA動作時にはアドレスバスAおよびBに異なるアドレス信号を与え、アドレスバスAに接続された回路からアドレスバスBに接続された回路へ(または逆方向に)データを転送する。CPUは、コネクタA38からの割り込み信号IRQBおよびコネクタB54からの割り込み信号IRQBがワイヤードOR接続されて入力される。
0022
ワークRAM32は、基本的にはアドレスバスA上のメモリとして使用されるが、主としてプログラム動作上の補助情報を記憶するものであり、アドレスバスB上のポートからもアクセスが可能である。アドレスデコーダ34は、アドレスバスA上の信号に基づいて、各回路に対してチップイネーブル信号を供給する。入出力ポート36は、コントローラ12から操作情報を得る。コネクタA38は、衛星データ放送受信カートリッジ6に接続される。このコネクタA38には、アドレスバスAおよびBの両方が接続される。
0023
PPU40は、画像データの処理を行うものであり、作業用メモリとして用いられるビデオRAM42が接続される。ビデオエンコーダ44は、PPU40からのアナログRGB信号をコンポジットビデオ信号に変換し、TVモニタ22に供給する。
0024
APU46は、音声データの処理を行う。オーディオRAM48は、APU46の作業用メモリとして用いられる。ミキサ50aおよび50bは、APU46からの音声信号と、衛星からのPCM音声放送とを混合して出力する。アンプ52aおよび52bは、それぞれ、ミキサ50aおよび50bの出力信号を増幅し、TVモニタ22に供給する。
0025
コネクタB54は、衛星データ放送受信アダプタ4に接続される。このコネクタB54には、アドレスバスBは接続されるが、アドレスバスAは接続されない。CIC56は、カートリッジの真性を検査するためのセキュリティチップであり、その詳細が特公平5−27891号公報に詳細に開示されている。CIC56は、カートリッジが真正でない場合に、リセット信号を出力する。リセットスイッチ58は、操作者によって操作されたときに、リセット信号を出力する。リセット回路60は、CIC56からのリセット信号とリセットスイッチ58からのリセット信号とを混合し、CPU30、PPU40、APU46、コネクタA38およびコネクタB54に、リセット信号RESETBとして供給する。また、リセット回路60は、パワースイッチ62がONされたときにも、リセット信号RESETBを出力する。
0026
パワースイッチ62は、操作者によって操作されたときに、電源回路64を能動化する。電源回路64は、衛星データ放送受信アダプタ4からの供給電圧VDC(12V)を5Vに変換し、安定化させる。この5Vの電圧は、電源ラインMVccを介して各回路およびコネクタに供給される。特にコネクタB54を介して衛星データ放送受信アダプタ4に供給される5V電圧は、電源制御信号として使用される。発振回路66は、各プロセッサに、必要なクロック信号を与える。
0027
図4は、図2における衛星データ放送受信カートリッジ6の内部構成を示すブロック図である。図4において、この衛星データ放送受信カートリッジ6は、マッピングコントローラ70と、マスクROM72と、疑似SRAM74と、フラッシュメモリA76と、CIC78と、コネクタD80とを備えている。
0028
マッピングコントローラ70は、プログラムに従って、メモリマップ上における、マスクROM72、疑似SRAM74、フラッシュメモリA76およびメモリユニット8(コネクタD80に接続される)の配置を切り替える。マッピングコントローラ70の内部の詳細は、図7に示されている。
0029
マスクROM72は、主として放送受信プログラムや、初期画面表示等の基本的プログラムおよびデータを記憶する。CPU30のリードタイミングを示す信号CPURDBおよびマッピングコントローラ70からのチップイネーブル信号CE2Bが、それぞれ、アウトプットイネーブルコントロール端子OE1およびOE2に与えられる。
0030
疑似SRAM74は、主として放送データを一時記憶するものであり、マッピングコントローラ70からの信号PWEBによってリード/ライト制御が行われ、信号POEB/RFBによってアウトプットイネーブルおよびリフレッシュ制御が行われ、信号CE1Bによってチップイネーブル制御が行われる。
0031
フラッシュメモリA76は、主として放送データを長期的に記憶するものであり、CPU30からの信号CPURDBによってアウトプットイネーブル制御が行われ、信号CPUWRBでリード/ライト制御が行われる。また、フラッシュメモリA76は、マッピングコントローラ70からの信号WPBでライトプロテクト制御が行われ、信号CE3Bでチップイネーブル制御が行われる。CPU30からのデータ書き込み時には、信号RY/BYBがローレベルからハイレベルに変化することにより、書き込み完了をマッピングコントローラ70に知らせる。これに基づいてマッピングコントローラ70は、CPU30に対して信号IRQBを発生する。CIC78は、ゲーム機本体2内のCIC56と協動して、セキュリティ動作を行う。コネクタD80は、メモリユニット8に接続される。
0032
図5は、図2における衛星データ放送受信アダプタ4の内部構成を示すブロック図である。図5において、この衛星データ放送受信アダプタ4は、データ放送デコーダ82と、PCMデコーダ84と、左用アンプ86aと、右用アンプ86bと、EEP−ROM88と、ボルテージ・コントロールド・クリスタル・オシレータ(以下、「VXO」と略称する)90と、双方向バッファ92と、バスバッファ94,96と、コネクタC98と、LED100と、電源制御回路102と、LED104とを備えている。
0033
データ放送デコーダ82は、ビットストリーム分配器20を介して、BSチューナ18からビットストリーム信号BSTを入力し、この信号を増幅した後に信号BST02としてPCMデコーダ84に与える。PCMデコーダ84から出力される信号FDINは、ビットストリーム信号から分離された放送データであり、データ放送デコーダ82は、この信号FDINをデコードしてゲーム機本体2のCPU30が使用可能な形態のデータに変換する。信号VERは、当該アダプタ4のバージョン番号を設定するために用いられ、本実施例では0に設定されている。信号IRQBは、例えばハードディスク装置10からの割り込み要求が発生した場合に発生され、コネクタB54を介してCPU30に与えられる。データ放送デコーダ82の内部の詳細は、図12に示されている。
0034
PCMデコーダ84(例えば、松下電器産業株式会社製のMN88821)は、データ放送デコーダ82から与えられる信号BST02からPCM音声信号PCML,PCMRを取り出し、アンプ86a、86bを介して、ゲーム機本体2内のミキサ50a、50bに供給する。また、PCMデコーダ84は、フレーム同期信号FSYNC、ビットストリームクロック信号BSCKを生成してデータ放送デコーダ82に供給するとともに、放送データをシリアル信号FDINとしてデータ放送デコーダ82に供給する。プログラムによるPCMデコーダ84の制御は、PCMDバスの信号を介して行われる。データ放送デコーダ82は、PCMDバスをCPU30に結合するための入出力ポートを内蔵する。
0035
EEP−ROM88(例えば、セイコー電子株式会社製のS−2913CR)には、本体のシリアル番号が出荷時に記録されている。有料データ受信時は、この本体シリアル番号が参照され、有料放送受信登録ユーザーであるかどうかが判断される。EEP−ROM88に対する書き込み,読み出しの制御は、EEP−ROMバスの信号を介してソフトウェアにより行われる。データ放送デコーダ82は、EEP−ROMバスをCPU30に結合するための入出力ポートを内蔵する。
0036
VXO90(例えば、松下電器産業株式会社製のAN3913S)は、受信されたビットストリーム信号に同期したメインクロック信号MCKを発生する。メインクロック信号MCKはPCMデコーダ84に与えられ、これに基づいてビットストリームクロック信号BSCKが生成される。データ放送デコーダ82は、ビットストリームクロック信号BSCKとビットストリーム信号との位相を比較し、それらの位相誤差成分を信号P/DとしてVXO90にフィードバックをかける。これによってメインクロック信号MCK、ビットストリームクロック信号BSCKおよびビットストリーム信号の同期が達成される。信号STDBYは、プログラム制御のスタンバイ信号であり、スタンバイ時にはVXO90の発振が停止して消費電力が低減される。
0037
双方向バッファ92(例えば、米国テキサスインスツルメント社製の74LS245)は、データバス用のバスバッファである。この双方向バッファ92は、データ放送デコーダ82からの信号DIRによって、信号の向きが切り替えられる。すなわち、双方向バッファ92は、CPU30がデータを入力する場合にはコネクタB54方向にデータを出力し、CPU30がデータを出力する場合にはデータ放送デコーダ82およびコネクタC98方向にデータを出力するよう制御される。
0038
バスバッファ94(例えば、米国テキサスインスツルメント社製の74LS541)はアドレスバス用のバスバッファであり、バスバッファ96(例えば、米国テキサスインスツルメント社製の74LS541)は制御信号用のバスバッファである。コネクタC98には、例えばハードディスク装置10が接続され、数多くの受信データを長期間に渡って保存するのに用いられる。ハードディスク装置10と各メモリ間のデータ転送は、データバス、アドレスバスBを介して制御信号Bに基づいてDMA回路30aにより制御されるが、ハードディスク装置10への命令は、EXバスを介してソフトウェアにより与えられる。データ放送デコーダ82は、EXバスをCPU30に結合するための入出力ポートを内蔵する。
0039
LED(発光ダイオード)100は、ハードディスク装置10のアクセスランプ等に使用される。電源制御回路102は、衛星データ放送受信アダプタ4の電源を制御する。ゲーム機本体2から電源ラインMVccを介して5V電圧が供給されると、電源制御回路102は、ACアダプタ14から供給される12V電源を5V電圧に変換し、安定化してSVccとして、アダプタ4内の各回路およびコネクタに電源を供給する。LED104は、パワーオン時に点灯するパイロットランプである。
0040
図6は、図2におけるメモリユニット8の内部構成を示すブロック図である。図6において、このメモリユニット8は、フラッシュメモリB106を備えている。このフラッシュメモリB106は、主として長期的記憶に用いられ、他のカートリッジに差し替えて使用することにより、受信データを他のカートリッジでも利用可能になる。また、データ放送を受信できるカートリッジが複数個ある場合でもメモリユニット8を差し替えて使用できるため、カートリッジの単価を安くすることができる。なお、フラッシュメモリB106に接続された各信号線は、図4におけるフラッシュメモリA76に接続されたものと同等である。
0041
図7は、図4におけるマッピングコントローラ70の内部構成を示すブロック図である。図7において、このマッピングコントローラ70は、コントロールレジスタ110と、アドレスデコーダ112と、NANDゲート114と、スリーステートゲート116と、入力バッファ118と、マップデコーダ120と、アドレスセレクタ122と、PSRAMコントローラ124と、IRQコントローラ126とを備えている。
0042
コントロールレジスタ110は、各メモリのアドレスマッピングの変更や、IRQコントロール、ライトプロテクト等の指定を行う15種類のレジスタブロックを含む。CPU30から各レジスタへの書き込み時には、信号FE0〜FE14の内の1つがアクティブになってレジスタブロックを指定し、同時に信号CD7Iにより書き込みデータが与えられ、信号CPUWRBにより書き込みパルスが与えられる(データは、8ビット中の1ビットD7だけが使用される)。各レジスタブロックからCPU30への読み出し時には、信号FE0〜FE13でライト時と同様にレジスタを指定することにより、そのレジスタのデータがCD7Oとして出力される(信号FE14はリード不可)。アドレスデコーダ112から出力される信号Cは、信号FE0〜FE13の内どれかがアクティブの状態でハイレベルになる。そのため、NANDゲート114,インバータ115は、信号Cがハイレベルで、かつ信号CPURDBがローレベルの時にスリーステートゲート116の出力を許可する。これにより、データCD7OはデータバスD7に出力され、CPU30に読み込まれる。コントロールレジスタ110の内部構成の詳細は、図11に示されている。
0043
アドレスデコーダ112は、アドレスバスA上の信号をデコードすることにより、信号FE0〜FE14を生成する。また、アドレスデコーダ112は、信号FE0〜FE13のうちのどれかがアクティブの場合に、信号Cをハイレベルにする。さらに、アドレスデコーダ112は、各メモリが配置されるアドレスエリアをデコードし、その結果を信号ROMSELBとしてマップデコーダ120に与える。
0044
マップデコーダ120は、コントロールレジスタ110からのコントロール信号に基づいて、CPU30による特定アドレスアクセス時に、信号CE1B〜CE4Bのうちのどれかをアクティブにする。これによって、特定アドレスに指定のメモリ回路が割り当てられる。さらに、マップデコーダ120は、CIC78からのカートリッジ真偽判定出力R10に基づいて、フラッシュメモリ76へのライトプロテクト信号WPBを制御する。マップデコーダ120の内部構成の詳細は、図10に示されている。
0045
アドレスセレクタ122は、コントロールレジスタ110からの信号MAPMODEに基づいて、アドレスマップ上へのメモリ回路の割り当てパターンを制御する。このアドレスセレクタ122により、20モードと21モードという2種類のマップモードを選択できる。20モードでは、各メモリバンクの0000H〜7FFFHと8000H〜FFFFHに同じメモリイメージが配置される。ゲーム機本体においては、00H〜3FH,80H〜BFHバンクの0000H〜7FFFHにワークRAMやPPU、APU制御ポートが割り当てられているため、連続的にメモリを割り当てると0000H〜7FFFHの領域においてはメモリを読み出せないという不具合が生ずる。したがって、20モードに設定することによりメモリに無駄が生じない。しかし20モードでは、0000H〜7FFFHと8000H〜FFFFHに同じメモリイメージが配置されるため、実質上メモリ容量の上限がメモリマップエリアの1/2に制限される。したがって、大容量のメモリが必要な場合には、連続的にメモリを配置する方がよい。21モードは、メモリを連続的に配置するモードである。アドレスセレクタ122は、これら2つのマップモードを切り替える。
0047
IRQコントローラ126は、プログラムによる割り込み許可信号ENIRQ、割り込み終了信号SRCIRQおよびフラッシュメモリからの書き込み完了信号RY/BYBに基づいて、システムクロックSYSCKに同期した信号IRQBを生成し、CPU30に与える。信号IRQBは、同様にコントロールレジスタ110にも与えられ、信号SRCIRQの再リセットに使用される。IRQコントローラ126の内部構成の詳細は、図8に示されている。
0048
図8は、図7におけるIRQコントローラ126の内部構成を示すブロック図である。図8において、このIRQコントローラ126は、Dフリップフロップ(以下、D−FFと称す)130と、インバータ135と、D−FF134と、ORゲート136とを備えている。
0049
D−FF130は、フラッシュメモリ76の書き込み完了時に、信号RY/BYBがローレベルからハイレベルに変化したとき、この時点で信号ENIRQをラッチする。通常、このD−FF130は、ローレベルの状態を維持しているため、信号ENIRQがローレベルの場合には、たとえクロックが与えられたとしても状態は変化しない。従って、信号ENIRQがハイレベルの時のみ信号IRQBが発生される。
0050
D−FF130の状態がローレベルからハイレベルに変化すると、D−FF134のD入力はハイレベルからローレベルに変化する。D−FF134は、D入力がローレベルになった直後のシステムクロック(CPUの動作クロック)SYSCKの立ち上がりで、このローレベル信号をラッチする。これによって、信号IRQBがハイレベルからローレベルに変化し、CPU30に割り込みがかかる。D−FF134は、このようにして、信号IRQBの出力タイミングを調整する。
0051
ORゲート136は、信号IRQBが出力された後、プログラムによって信号SRCIRQがローレベルからハイレベルに変化させられると、ハイレベルを出力する。これによって、D−FF130がリセットされる。D−FF130の出力がローレベルになると、D−FF134のD入力はハイレベルとなり、次のSYSCKの立ち上がりで信号IRQBがハイレベルに戻る。信号IRQBがハイレベルになると、コントロールレジスタ110により、信号SRCIRQは自動的にハイレベルからローレベルに変化する。また、D−FF130とD−FF134は、リセット信号RESETBによってもクリア(およびセット)され、初期化される。
0052
図9は、図7におけるPSRAMコントローラ124の内部構成を示すブロック図である。図9において、このPSRAMコントローラ124は、D−FF140,142と、インバータ144と、ANDゲート146と、インバータ148と、反転入力のNANDゲート150と、反転入力のNORゲート152と、NANDゲート154と、インバータ156,158とを備えている。
0053
D−FF140は、D−FF142と、インバータ144,148と、ANDゲート146と協働して、システムリセット時の疑似SRAM74に対するリフレッシュ信号を生成する。通常使用状態(リセット信号RESETBがハイレベル)の時、D−FF140,142は、常にハイレベルの状態にセットされ、リフレッシュ信号の生成を行わない。リセット状態(リセット信号RESETBがローレベル)の時は、信号CE1Bが必ずハイレベルになり、CE端子入力がハイレベルになって、D−FF140が能動化される。その後、システムクロックとは非同期に動作するCIC78のためのクロック信号CICCKの最初の立ち上がりのパルスによってD−FF140にローレベルがセットされ、同様に最初の立ち下がりのパルスによってD−FF142にローレベルがセットされる。これにより、D−FF142は、この後リセット信号が再びハイレベルになるまでリフレッシュ信号をローレベルのまま維持する。
0054
NANDゲート150は、通常アクセス時の疑似SRAM74のアウトプットコントロールを行う。信号CE1Bがローレベルでかつ信号CPURDBがローレベルのときには、CPU30が疑似SRAM74をアクセスしている状態であり、この場合には、ローレベルを出力して疑似SRAM74からのデータ出力を許可する。
0055
NORゲート152には、リセット時のリフレッシュ、通常時のアウトプットコントロールとは別に、通常時のリフレッシュ制御として、信号REFRESHBが入力される。負入力のNORゲート152は、これら3種類の信号のどれか1つがアクティブになった場合、信号POEB/RFBを疑似SRAM74に与える。
0056
NANDゲート154は、インバータ156および158と協働して、疑似SRAM74への書き込み制御信号PWEBを生成する。NANDゲート154は、信号SYSCKがハイレベルで、かつプログラムによる疑似SRAM74への書き込み許可信号ENRAMWRがハイレベルで、かつ疑似SRAM74のチップイネーブル信号CE1Bがローレベル(アクティブ)で、かつCPU30からの書き込み制御信号CPUWRBがローレベル(アクティブ)の時に、疑似SRAM74への書き込み制御信号PWEBをアクティブにする。
0057
図10は、図7におけるマップデコーダ120の内部構成を示すブロック図である。図10において、このマップデコーダ120は、ROMデコーダ160と、PS−RAMデコーダ162と、フラッシュデコーダ164と、メモリユニットデコーダ166と、ANDゲート168とを備えている。
0058
ROMデコーダ160,PS−RAMデコーダ162,フラッシュデコーダ164およびメモリユニットデコーダ166は、アドレスバスAを介して与えられるアドレスをデコードすることにより、それぞれ、マスクROM72,疑似SRAM74,フラッシュメモリA76およびフラッシュメモリB106をイネーブル状態にするためのチップイネーブル信号CE2B,CE1B,CE3BおよびCE4Bを出力する。
0059
ここで、メモリ割り当て時のマスクROM72,疑似SRAM74,フラッシュメモリA76およびフラッシュメモリB106の優先順位は、一例として
マスクROM>疑似SRAM>フラッシュメモリA>フラッシュメモリB
に選ばれている。
0060
マスクROMエリアと疑似SRAMエリアが重なり、ROMデコーダ160およびPS−RAMデコーダ162が同時にアクティブになるべき場合でも、信号CE2Bにより、疑似SRAMデコーダ162はアクティブ化を阻害される。そのため、信号CE1Bが非アクティブ、信号CE2Bがアクティブとなり、マスクROM72が優先的にアクセスされる。
0061
同様に、信号CE2B、CE1Bのどちらかがアクティブの場合には、フラッシュデコーダ164のアクティブ化が阻害され、信号CE3Bはアクティブにならない。また、信号CE2B、CE1B、CE3Bのどれかがアクティブの場合には、メモリユニットデコーダ166のアクティブ化が阻害され、信号CE4Bはアクティブにならない。
0062
ANDゲート168の出力信号WPBは、フラッシュメモリA76およびフラッシュメモリB106への書き込み禁止指示信号ENFMWRとCIC78からの真偽判定結果R10のどちらがローレベル(アクティブ)になっても、ローレベルとなり、フラッシュメモリへの書き込みが禁止される。
0063
図11は、図7におけるコントロールレジスタ110の内部構成を示すブロック図である。図11において、このコントロールレジスタ110は、D−FF180と、インバータ181と、ORゲート182と、ANDゲート184と、D−FF186と、ANDゲート188と、レジスタブロック190〜300と、ORゲート198とを備えている。
0064
D−FF180は、通常、ローレベルの状態を保持しており、割り込みが入った(信号IRQBがローレベルになった)後に、プログラムによってこのレジスタ(信号FE0で指定される)に書き込みが行われた時のみ、ハイレベルの状態に移行する。D−FF180がハイレベル状態になると、IRQコントローラ126により、信号IRQBがハイレベルに戻される。これにより、D−FF180は再びローレベルになる。また、リセット信号RESETBがローレベル時(システムリセット時)にも、インンバータ181,ORゲート182により、D−FF180はリセットされる。
0065
CPU30が特定アドレスをアクセスすると、信号FE0がハイレベルになるため、ANDゲート184からは、信号IRQBの状態が信号RD0として出力される。この信号RD0は、ORゲート198,スリーステートゲート116(図7参照)を介して、CPU30に読み込まれる。D−FF186は、CPU30からこのレジスタ(信号FE1で指定される)に対して書き込みが行われた時、そのデータを保持し、割り込み許可信号ENIRQとして出力する。CPU30が特定アドレスをアクセスすると、信号FE1がハイレベルになるため、ANDゲート188からは、信号ENIRQの状態が信号RD1として出力される。この信号RD1は、ORゲート198,スリーステートゲート116を介して、CPU30に読み込まれる。
0066
レジスタブロック190は、D−FF192,194,ANDゲート196を含み、CPU30から書き込まれたマップモードを保持し、信号MAPMODEとして出力する。CPU30は、まず、D−FF192に対してマップモード設定データの書き込み信号FE2を発生し、次にD−FF194に対して書き込み信号FE14を発生する。信号FE14に応答して、D−FF192の状態がD−FF194にラッチされ、設定したマップモードが有効になる。このように2段階の設定手法をとる理由は、レジスタブロック190〜レジスタブロック300への設定を順次行い、これらの設定を同時に有効にすることにより、アドレスマップ変更時の移行期間のマップ状態を考慮する必要が無くなり、プログラムの作成が容易になるという利点があるからである。また、ANDゲート196により、現在のマップモードの設定値をCPU30からリードできる。なお、他のレジスタブロック200〜300もレジスタブロック190と同様の回路構成を有している。すなわち、レジスタブロック200〜300のそれぞれは、前段のD−FF202〜302と、後段のD−FF204〜304と、ANDゲート206〜306とを含む。
0067
CPU30が特定のレジスタブロックをリードすると、それに対応するレジスタブロックのみが、その出力(RD0〜RD13)にロー/ハイレベルの2つの状態を持つことができる。CPU30により指定されなかったレジスタブロックは、ANDゲート184,188,196〜306により、その出力がローレベルに固定される。各レジスタブロックの出力の論理和をとるORゲート198の出力信号CD7Oは、CPU30に指定されたレジスタブロックの出力がハイレベルの時にハイレベルになり、当該レジスタブロックの出力がローレベルの時にローレベルになる。すなわち、CPU30から指定されたレジスタブロックの内容が、信号CD7Oとして出力されることになる。
0068
図12は、図5におけるデータ放送デコーダ82の内部構成を示すブロック図である。図12において、このデータ放送デコーダ82は、アンプ/VXOコントローラ402と、プリデコーダ404と、チャンネルデテクタ406と、チャンネルデコーダ408と、ホストインターフェース410と、PCMデコーダインターフェース412と、EEPROMポート414と、拡張ポート416とを備えている。
0069
アンプ/VXOコントローラ402は、ビットストリーム信号BSTをアンプで増幅し、信号BST02としてPCMデコーダ84へ出力する。また、アンプ/VXOコントローラ402は、PCMデコーダ84からのビットストリームクロック信号BSCKとビットストリーム信号BSTとの位相誤差を検出し、VXO90に信号P/Dとしてフィードバックすることにより、クロック再生用のPLL回路を構成する。
0070
PCMデコーダ84は、信号BST02をデコードし、信号FDINとしてデータ放送デコーダ82に返す。プリデコーダ404は、信号FDINを受け、データチャンネルをデコードし、シリアルデータSDOとしてチャンネルデテクタ406に出力する。このプリデコーダ404は、システムシーケンサ404a、M・Sフレーム同期検出回路404bと、パケット斜めデインターリーブ回路404cと、BCH(16,5)誤り訂正回路404dと、SDSC(272,190)誤り訂正回路404eとを含む。
0071
システムシーケンサ404aは、クロックMCKを基に各種タイミング信号を生成し、デコードシーケンスをコントロールする。また、システムシーケンサ404aは、信号FDINに同期したPCMデコーダ84からのビットストリームクロックBSCKに基づいて、シリアルデータSDOに同期したビットクロックBTCKを生成し、チャンネルデテクタ406に出力する。さらに、システムシーケンサ404aは、シリアルデータSDOにおけるパケットの先頭を示す信号PSYNCを生成し、チャンネルデテクタ406に出力する。
0072
M・Sフレーム同期検出回路404bは、信号FDINのフレーム同期信号に基づいて、マスターフレームやスーパーフレームの同期検出を行う。パケット斜めデインターリーブ回路404cは、放送データをパケット毎のデータ列に並べ変える(通常、放送データは、誤り訂正の効率を上げるために、斜めインターリーブされて送信される)。
0073
BCH(16、5)誤り訂正回路404dは、デインターリーブされた放送データの各パケットのパケットヘッダ部の誤り訂正を行う。誤り訂正をしきれずにエラーが残った場合、BCH(16、5)誤り訂正回路404dは、信号HERRを出力して、ヘッダー部にエラーが発生したことを各ブロックに知らせる。
0074
SDSC(272,190)誤り訂正回路404eは、パケットデータ本体の誤り訂正を行う。誤り訂正をしきれずにエラーが残った場合、SDSC(272,190)誤り訂正回路404eは、信号PERRを出力して、データ本体にエラーが発生したことを各ブロックに知らせる。
0075
チャンネルデテクタ406は、チャンネルデコーダ408と協働して、CPU30が指定した論理チャンネルの放送データを抜き出し、CRC演算を行い、バッファリングし、CPU30へ出力する。また、チャンネルデテクタ406は、論理チャンネルの一致検出を行い、バッファリングの許可を与える。このチャンネルデテクタ406の内部構成の詳細は、図13に示されている。
0076
チャンネルデコーダ408は、CPU30が指定したチャンネルのデータをデコードし、バッファリングするための回路を2系統含む(チャンネル1デコーダ/バッファ408a,チャンネル2デコーダ/バッファ408b)。これらチャンネル1デコーダ/バッファ408a,チャンネル2デコーダ/バッファ408bは、同様の回路構成を有するが、その内部構成の詳細は、図14〜図19に詳細に示されている。
0078
PCMデコーダインターフェース412は、PCMデコーダ84とCPU30間のインターフェースを行う入出力ポートを含む。EEPROMポート414は、図5のEEPROM88とCPU30との間のインターフェースを行う入出力ポートを含む。EEPROM88は、シリアル入出力タイプを採用し、これに与えるチップセレクトCS,シリアルクロックSK,出力データDOおよび入力データDIが、全てプログラムによりコントロールされる。拡張ポート416は、例えばハードディスク等を接続するためのインターフェース用入出力ポートを含む。
0079
図13は、図12におけるチャンネルデテクタ406の内部構成の詳細を示すブロック図である。図13において、このチャンネルデテクタ406は、S−P変換回路420と、ビットカウンタ422と、設定レジスタ424と、チャンネル1用のLCI比較回路(以下「第1の比較回路」という)426と、D−FF428,430,436,438と、チャンネル2用のLCI比較回路(以下「第2の比較回路」という)434と、ANDゲート432,440とを備えている。
0080
S−P変換回路420は、プリデコーダ404からのシリアルデータSDOを8ビット単位のパラレルデータに変換する。ビットカウンタ422は、信号PSYNCによりクリアされ、信号BTCKによりアップカウントされるカウンタを含み、パケットデータをデコードするための各種信号を出力する。ビットカウンタ422から出力される各種信号のタイミングの詳細は、図21のタイムチャートに示されている。
0081
設定レジスタ424は、CPU30から設定される論理チャンネルデータを記憶する。論理チャンネルデータは、5ビットのLCI1データと、6ビットのLCI2データとを含み、本実施例ではこれを2系統持つ。信号WE0,WE1,WE2,WE3は、それぞれ、チャンネル1のLCI1データ,チャンネル1のLCI2データ,チャンネル2のLCI1データ,チャンネル2のLCI2データの書き込み許可信号であり、CPU30から出力される信号PAWRに同期して書き込まれる。RE0〜RE3は、設定データの読み出し許可信号である。設定レジスタ424に設定されたデータは、C1L1、C1L2、C2L1、C2L2データとして出力され、論理チャンネルデータの一致判定に利用される。同時に、設定レジスタ424には、データグループ構成を指示する信号CH1DGSTY,CH2DGSTYがCPU30から書き込まれる。これら信号CH1DGSTY,CH2DGSTYは、それぞれ1ビットの信号であり、上記LCI1データと同時に書き込まれる。
0082
次に、図21のタイムチャートを参照して、第1の比較回路426、D−FF428,430、ANDゲート432の動作を説明する。LCI1データはシリアルデータSDOの第1〜第5ビットに対応し、LCI2データはシリアルデータSDOの第17〜第22ビットに対応する。信号LCI1SYNCは、シリアルデータSDOの第5ビット目にハイレベルになる信号であり、第1の比較回路426およびD−FF428に与えられる。
0083
第1の比較回路426は、信号LCI1SYNCがハイレベルのときS−P変換420からのデータとC1L1データとを比較し、信号LCI1SYNCがローレベルのときS−P変換420からのデータとC1L2データとを比較する。第1の比較回路426は、比較の結果、両データが一致していればハイレベル信号を出力し、一致していなければローレベル信号を出力する。すなわち、シリアルデータSDOの第5ビット目のタイミングで論理チャンネルLCI1の一致/不一致が検査され、D−FF428に対してその結果が出力される。D−FF428は、信号LCI1SYNCがハイレベルでかつ信号BTCKの立ち上がりのタイミングで、第1の比較回路426の出力をラッチする。そのため、D−FF428は、結果的に論理チャンネルLCI1の比較結果を保持することになる。
0084
次に、シリアルデータSDOの第22ビット目においては、S−P変換420からはLCI2データが出力される。このタイミングでは、信号LCI1SYNCはローレベルである。そのため、第1の比較回路426は、S−P変換420からのデータとC1L2データとを比較し、その結果をD−FF430に出力する。D−FF430は、シリアルデータSDOの第22ビット目でハイレベルとなるLCI2SYNC信号を受け、信号BTCKの立ち上がりで第1の比較回路426の出力をラッチする。そのため、D−FF430は、結果的に論理チャンネルLCI2データの比較結果を保持することになる。D−FF428のLCI1比較結果データと、D−FF430のLCI2比較結果データとは、ANDゲート432に出力される。ANDゲート432は、ヘッダエラーが無い場合(信号HERRがローレベルの時)、両比較結果データが「一致」を示していれば、バッファリング許可信号CH1ENAをハイレベルにする。
0085
チャンネル2においても、上記と同様に、第2の比較回路434、D−FF436,438、ANDゲート440により、バッファリング許可信号CH2ENAが生成される。シリアルデータSDOの第30ビット目には、信号PFXSYNCがハイレベルになり、S−P変換420からは、プリフィックスデータ(SCC,CI,DTC)の計8ビットが出力される。このタイミングで信号BTCKが立ち上がると、D−FF442にはプリフィックスデータがラッチされる。ここで、SCCはスクランブルの有無を示す信号、CIはパケットの連続性を示すカウント値、DTCはデータグループの先頭と終端を示すフラグである。シリアルデータSDOの第288ビット目には、信号PERRLDがハイレベルになる。また、プリデコーダ404は、SDSC(272,190)誤り訂正の結果、訂正不能エラーが発生したかどうかのフラグをPERRとして出力する。このタイミングで信号BTCKが立ち上がると、D−FF444は、信号PERRをラッチする。
0086
ビットカウンタ422は、これら以外にも、8ビット単位でデータのタイミングを示す信号DATASYNCと、実データの終端タイミングを示す信号DBLASTと、当該パケットのプリフィックスデータと、実データおよびフラグのすべてがそろったことを示す信号PERRSYNCとを発生する。
0087
前述したように、本実施例では、デコーダ/バッファは2系統あるが(チャンネル1用のデコーダ/バッファ408aと、チャンネル2用のデコーダ/バッファ408b)、図14はそのうちのチャンネル1用のデコーダ/バッファ408aの内部構成を示している。なお、チャンネル2用のデコーダ/バッファ408bも、デコーダ/バッファ408aと同じ回路構造を持っているため、ここでは説明を省略する。図14において、このチャンネル1用のデコーダ/バッファ408aは、データコントローラ450と、プリフィックスメモリ452と、データメモリ454と、データセレクタ456とを備えている。
0088
データコントローラ450は、バッファリング許可信号CH1ENAを受け、データサイズのカウント、連続性指標CIのチェック、データグループ単位でのCRC演算を行い、バッファリングのためのアドレスを発生する。このデータコントローラ450の内部構成の詳細は、図15に示されている。プリフィックスメモリ452は、プリフィックスデータ記憶用バッファであり、データコントローラ内のプリフィックスFIFOインターフェース472(図15参照)により、FIFOメモリとして使用される。データメモリ454は、データグループデータ記憶用バッファであり、データコントローラ内のデータFIFOインターフェース474(図15参照)により、FIFOメモリとして使用される。データセレクタ456は、CPU30からのアクセスに対応し、プリフィックスデータ、データグループデータ、バッファリングされたパケット数のうちのどれかをCPU30に出力する。また、データセレクタ456は、内部にエラーフラグチェックのためのORループを含み、連続して転送した複数パケット分のエラーフラグにエラーがあったかどうかを簡単に判定することができる。このデータセレクタ456の内部構成の詳細は、図16に示されている。
0089
図15は、図14におけるデータコントローラ450の内部構成の詳細を示すブロック図である。図15において、このデータコントローラ450は、データグループシーケンサ460と、データサイズカウンタ462と、CIカウンタ464と、排他的論理和ゲート466と、CRC回路468と、ORゲート470と、プリフィックスFIFOインターフェース472と、データFIFOインターフェース474とを備えている。
0090
データグループシーケンサ460は、タイミング発生回路460aを含み、データサイズのカウント、CIのカウント、CRC演算、FIFOへのデータの書き込み等のタイミングを制御するためのタイミング信号を発生する。また、データグループシーケンサ460は、受信許可フラグレジスタ460bおよびクリアフラグレジスタ460cを含み、CPU30からの制御に従って、データ放送の受信許可または受信禁止とともに、バッファクリアを行う。
0091
以下に、各ブロックの説明を交え、データグループシーケンサ460の動作を説明する。
1)受信許可および禁止
CPU30が特定の番地にデータを書き込むと、CPU30から信号PAWRが、ホストインターフェース410内のアドレスデコーダ410cから信号WE10が与えられ、データバスB上のデータが許可フラグレジスタ460bに書き込まれる。許可フラグレジスタ460bの出力は、各ブロックへの制御信号の出力を許可し、これによりデータ放送受信が許可される。なお、制御信号の出力は、信号CH1ENAによっても制御される。すなわち、論理チャンネルが一致しない場合には、たとえ許可フラグがONになっていてもデータ放送は受信されない。また、データの受信開始は、先頭パケットであることを示すプリフィックスデータが入力されることによりトリガされるため、データグループの途中のパケットから受信されることはない。CPU30が特定番地をリードすると、信号RE10がアドレスデコーダ410cから与えられ、許可フラグレジスタ460bの内容をリードできる。
0092
CPU30が別の特定番地にデータを書き込むと、信号PAWR,WE11によりクリアフラグレジスタ460cにデータが書き込まれる。クリアフラグレジスタ460cにデータが書き込まれた場合、その出力信号BFCLRは、各ブロックに対するリセット信号として作用する。その後、クリアフラグレジスタ460cは、自動的にクリアされる。また、システムリセット信号RESETBが与えられた場合には、クリアフラグレジスタ460cにデータが書き込まれた時と同様に、信号BFCLRによるリセット動作を行う。
0093
2)データサイズカウンタ462の制御
データグループの構成は2種類あり、設定レジスタ424(図13参照)からの信号CH1DGSTY(CPU30により設定される)により識別される。このうち、第1のデータグループ構成では、転送データのサイズを示すデータDGSが与えられる。ここで、データグループとは、前述のパケットが複数個連なって構成されるもので、このデータグループの先頭パケットの最前部にデータグループヘッダが置かれ、その中にデータDGSが含まれる。データDGSは、先頭パケットの3〜5バイト目を占めるため、このタイミングで信号DSLDが発生し、データサイズカウンタ462に3バイト分のデータDGSがロードされる。
0094
その後、データサイズカウンタ462には、信号DATASYNCに基づいて信号DSDECが与えられ、信号BTCKの立ち上がりでダウンカウントカウントされる。これにより、データサイズカウンタ462は、複数パケットにまたがってデータサイズをダウンカウントし続け、データの残りが1になった時点で信号DSEQを発生する。なお、データサイズカウンタ462は、CRC演算を行うタイミングと、その結果をロードするタイミングとを決定するためのものであり、これによってデータのバッファリングを中止するものではない。すなわち、データのバッファリング中止は、プログラムにより上述のクリアフラグレジスタ460cをONにすることによって制御される。ハードウェア的には、システムリセットRESETBが発生しない限り、自動的にバッファリングが中止されることはない。
0095
3)CRC回路468の制御
CRC回路468は、転送されたデータグループデータにエラーがないかどうかをチェックするための回路であり、本実施例ではこれを自動的に行うことにより、ソフトウェアの負担を軽減している。CRC回路468は、本願出願人が出願人である特開平5−151007号公報に詳細に述べられる回路構造を基本とし、これを8ビットパラレルデータを入力とし、生成多項式を固定化した回路が用いられる。データグループの先頭パケットにおいて信号CRCCLRが発生すると、CRC演算の初期値が0に設定される。その後、信号DATASYNCに基づいて生成された信号CRCNXTに同期して、各データ毎にCRC演算が行われる。CRC演算においては、エラーが無い場合、演算結果が最終的に0になるため、CRC回路468は、演算結果が0であるかどうかを判定する回路を含む。CRC演算の終了時には、CRC回路468に信号CRCOKLDが与えられ、CRC演算結果が0であればローレベルが、0でなければハイレベルがラッチされる。
0096
CRC演算の終了タイミングは、データグループ構成によって異なる。第1のデータグループ構成の場合は、データサイズカウンタ462からの信号DSEQに基づいて信号CRCOKLDが生成され、第2のデータグループ構成の場合は、パケット終端を示すプリフィックスデータと当該パケットのデータの終わりを示す信号DBLASTに基づいて信号CRCOKLDが生成される。
0097
CRCの演算結果は、ORゲート470に出力される。このORゲート470は、CRC演算でエラーが発生したか、または訂正不能の誤りがあった場合(信号PERRLTがハイレベルの場合)には、信号CRCERRをハイレベルにして受信データに誤りがあることを示す。
0098
4)CIカウンタ464の制御
CIカウンタ464は、データグループ内における各パケットの連続性を確認するための回路である。各パケットのプリフィックスデータには、4ビットのCIデータが含まれており、同一データグループの連続するパケット毎に0、1、2、…というように連番がふってある(15の次は0にもどる)。信号CILDは、先頭パケットのプリフィクスデータのラッチタイミングを示す信号PFXSYNCがハイレベルになった次のビットタイミングで発生され、チャンネルデテクタ406内にラッチされたCIデータをCIカウンタ464にロードする。以降、信号PERRSYNCに同期してCIカウンタ464がアップカウントされる。CIカウンタ464のカウント値とパケットプリフィックスのCIデータは、排他的論理和ゲート466で比較され、不一致の場合には、信号CIERRがハイレベルとなりパケット連続性エラーを示す。具体的には、あるパケットにおいてヘッダーエラーが生じた場合(信号HERRがハイレベルの場合)には、チャンネルイネーブル信号(例えば、CH1ENA)がアクティブにならず、パケット抜けが生ずる。CIカウンタ464は、このようなパケット抜けを検出するために有効である。
0099
5)プリフィックスFIFOインターフェース472の制御
プリフィックスFIFOインターフェース472は、図14のチャンネル1プリフィックスメモリ452に対するアドレス信号を生成し、かつ、蓄えたプリフィックスデータの数(すなわち、パケット数)をカウントする。このとき、データグループシーケンサ460は、メモリへの書き込み制御信号PFIFOWRを、信号PERRSYNCに基づいて生成する。プリフィックスメモリ452が一杯になった時には、信号PFULが出力され、それ以上のデータ書き込みが禁止される。このプリフィックスFIFOインターフェース472の内部構成の詳細は、図17に示されている。
0100
6)データFIFOインターフェース474の制御
データFIFOインターフェース474は、図14のチャンネル1データメモリ454に対するアドレス信号を生成する。メモリへの書き込み制御信号DFIFOWRは、信号DATASYNCに基づいて生成される。データメモリ454が一杯になった時には、信号DFULが出力され、それ以上のデータ書き込みが禁止される。このデータFIFOインターフェース474の内部構成の詳細は、図18に示されている。
0101
図16は、図14におけるデータセレクタ456の内部構成の詳細を示すブロック図である。図16において、このデータセレクタ456は、D−FF480,482と、マルチプレクサ484と、ORループ483とを備えている。ORループ483は、ORゲート488,494と、D−FF486と、インバータ490と、遅延回路492とを含む。
0102
D−FF480は、通常動作時は、信号CLK19毎にデータをラッチし続けるが、プリフィックスメモリ452へのデータ書き込み時には、データをラッチしない。従って、D−FF480には、常にCPU30が次にリードすべきプリフィックスデータがラッチされる。D−FF482は、D−FF480と同様に、常にCPU30が次にリードすべきデータグループデータをラッチする。これらD−FF480,482の動作の詳細は、図22のタイミングチャートを用いて後述する。
0103
CPU30が特定番地をリードすると、その時のアドレス値に従って、ホストインターフェース410内のアドレスデコーダ410cから、信号RE20、PFIFORD、DFIFORD、RE21が出力される。これらの信号RE20、PFIFORD、DFIFORD、RE21は、マルチプレクサ484に入力され、それぞれ、入力端子I0、I1、I2、I3から入力されるデータを、データバスBに対して出力するよう、マルチプレクサ484の内部状態を切り替える。
0104
データPFCNT1は、現在バッファメモリ452,454にたまっているプリフィックスデータのカウント値(すなわち、受信したパケットの数)であり、信号RE20によって選択される。データC1PODは、プリフィックスメモリ452に蓄えられた、次にCPU30にリードされるべきプリフィックスデータであり、信号PFIFORDによって選択される。データC1DODは、データメモリ454に蓄えられた、次にCPU30にリードされるべきデータグループデータであり、信号DFIFORDによって選択される。入力端子I3には、ORループ483の出力が与えられ、信号RE21によって選択される。
0105
プリフィックスデータには、CIエラーフラグ、CRCエラーフラグ(SDSC誤り訂正不能エラーを含む)が含まれているが、多数のパケットデータがバッファメモリ454内に蓄えられている場合に、これらのエラーフラグを逐一チェックするには、長時間を要する。そのため、どれか1つでもエラーがあったかどうかをチェックするために、プリフィックスデータの時間軸方向に対するORが検出できれば、それだけCPU30の負担が減少する。ORループ483は、このような目的のために使用される。
0106
D−FF486は、バッファクリアを指示する信号BFCLRにより、ORゲート494を介してクリアされる。また、一旦、信号RE21がアクティブになり、D−FF486のデータがCPU30にリードされた直後にも、遅延回路492、ORゲート494を介してD−FF486がクリアされる。この状態で信号PFIFORDがアクティブになり、プリフィックスデータがデータバスBに出力されると、ORゲート488は、D−FF486の出力とプリフィックスデータとのORをとってD−FF486に与える。CPU30にプリフィックスデータが読み込まれ、信号PFIFORDが立ち下がる時に、D−FF486はORゲート488からのORデータをラッチする。ここで、さきほどのプリフィックスデータにエラーがあれば、そのビットがハイレベルになるが、エラーがなければそのビットはローレベルのままである。こうしてCPU30が順次プリフィックスデータをリードすることにより、1つでもエラーがあればD−FF486にハイレベルをラッチするよう、ORループを構成する。すべてのプリフィックスデータをリードし終わると、CPU30は、D−FF486の内容をリードし、エラーがあったかどうかをチェックする。
0107
図17は、図15におけるプリフィックスFIFOインターフェース472の内部構成の詳細を示すブロック図である。図17において、このプリフィックスFIFOインターフェース472は、タイミング発生回路500と、プリフィックスラッチ502と、ライト用ループカウンタ504と、リード用ループカウンタ506と、インバータ508と、ORゲート510と、アドレスマルチプレクサ512と、プリフィックスデータ数カウンタ514と、デコーダ516と、インバータ518とを備えている。
0108
放送データの書き込みタイミングは、CPU30の動作クロックSYSCKとは非同期に発生するため、タイミングによってはCPU30からのリードと同時に発生する場合がある。タイミング発生回路500は、データのリードまたはデータ数カウント値のリードと、データの書き込みまたはデータ数のアップカウント(または、ダウンカウント)とが同時に発生しないように、タイミングを調整する。基本的には、信号SYSCKがハイレベルの期間にデータリードまたはデータ数カウント値のリードが、信号SYSCKがローレベルの期間にデータのライトまたはアップカウント(およびダウンカウント)が発生するよう調整される。なお、D−FF480でリードデータをラッチしているため、データの書き込みタイミングが信号SYSCKのハイレベル期間にまでずれ込んでも問題は生じない。これによって、FIFOのライトサイクルを制御するクロックCLK19に9MHzという比較的遅いクロックを使用することができる。
0109
タイミング発生回路500は、データグループシーケンサ460からの書き込み制御信号PFIFOWRに基づいて、信号SYSCK,CLK19に同期した書き込み信号PWRENを生成する。プリフィックスメモリ452が満杯であることを示す信号PFULがアクティブの時には、信号PWRENは出力されない。また、タイミング発生回路500は、CPU30が特定番地をリードしたことを示す信号PFIFORDに基づいて、信号CLK19に同期した読み出し信号PRDENを生成する。プリフィックスメモリ452が空であることを示す信号PEMPがアクティブの場合には、信号PRDENは出力されない。さらに、タイミング信号500は、プリフィックスメモリ452へのデータライト時に発生するデータ数のアップカウントと同様のタイミングで、リード時のダウンカウントが発生するように、信号PDWを、読み出し制御信号DFIFORDおよびクロックSYSCKの立ち下がりに基づいて生成する。タイミング発生回路500の動作は、図22、図23のタイミングチャートを参照して、さらに詳細に述べられる。
0110
プリフィックスラッチ502は、プリフィックスデータをビットクロックBTCKに同期してラッチする。ここでラッチされるデータは、スクランブル情報SCC(2ビット)、先頭・終端パケット情報DTC(2ビット)のみであるが、これにパケット連続性エラーフラグCIERR、CRC演算結果(SDSCエラー訂正結果を含む)CRCERRを加えた計6ビットが、プリフィックスデータとしてプリフィックスメモリ452に与えられる。
0111
ライト用ループカウンタ504は、ライト時にプリフィックスメモリ452に与えるアドレス値を記憶する。また、ライト用ループカウンタ504は、データ書き込み信号PWRENが発生する毎に、1ずつアップカウントを行い、そのカウント値が最大値に到達すると、自動的に0に戻る。
0112
リード用ループカウンタ506は、リード時にプリフィックスメモリ452に与えるアドレス値を記憶する。リード用ループカウンタ506は、データ読み出し信号PRDENが発生する毎に、1ずつアップカウントを行い、そのカウント値が最大値に到達すると、自動的に0に戻る。
0113
信号PWRENがハイレベルになると、インバータ508は、ローアクティブのプリフィックスデータライトパルスC1PWEを、プリフィックスメモリ452に与える。信号PWRENが立ち上がってから信号C1PWEが立ち上がるまでの間、ORゲート510は、アドレスマルチプレクサ512にハイレベルのセレクト信号SELを与える。これによって、アドレスマルチプレクサ512は、書き込み期間の間だけ、ライト用ループカウンタ504からのアドレスデータを、アドレスC1PADRとしてプリフィックスメモリ452に出力する。信号SELがローレベルの間、アドレスマルチプレクサ512は、リード用ループカウンタ506からのアドレスデータを、アドレスC1PADRとしてプリフィックスメモリ452に出力する。
0114
プリフィックスデータ数カウンタ514は、7ビットの加算器と7ビットのD−FFとにより構成されたアップダウンカウンタであり、+1および+7FH(−1)を行うことにより、プリフィックスメモリ452にバッファリングされたプリフィックスデータの数(受信したパケットの数)をカウントする。
0115
デコーダ516は、プリフィックスデータ数カウンタ514からのカウント値が0の時に、信号PEMPをハイレベルにし、当該カウント値がプリフィックスメモリ452の記憶容量と同じになった時(本実施例では47H)に、信号PFULをハイレベルにする。
0116
インバータ518は、信号PWRENがハイレベルの時(データ書き込み時)に、D−FF480(図16参照)によるデータラッチを禁止する。D−FF480は、通常時はリードデータをラッチし続けるが、データ書き込み時には、インバータ518からの信号PFLATG1により、直前にラッチしたリードデータを保持する。
0117
図18は、図15におけるデータFIFOインターフェース474の内部構成の詳細を示すブロック図である。図18において、このデータFIFOインターフェース474は、大部分は、図17のプリフィックスFIFOインターフェース472と同様の回路構成を有している。すなわち、タイミング発生回路520、データラッチ522、ループカウンタ524、526、インバータ528、540、ORゲート530、アドレスマルチプレクサ532、インバータ540は、それぞれ、図17のタイミング発生回路500、プリフィックスラッチ502、ループカウンタ504、506、インバータ508、518、ORゲート510、アドレスマルチプレクサ512に相当しており、その説明を省略する。データFIFOインターフェース474は、図17のプリフィックスFIFOインターフェース472と異なる構成として、D−FF534,536と、EMP/FULデテクタ538とを備えている。
0118
D−FF534および536は、それぞれ、信号DWRENおよびDRDENを、信号CLK19の立ち上がりでラッチし、信号WCHKFFおよびRCHKFFとして、EMP/FULデテクタ538に出力する。
0119
プリフィックスデータは、1パケットに1バイトであり、プリフィックスメモリ452の最大値は、47H(71)バイトである。これに対して、放送データは、例えば1パケットにつき22バイトのデータを含み、データメモリ454は、22×71=1562バイトの記憶容量を持つ。しかし、プリフィックスメモリ452のデータと、データメモリ454のデータとは同時に読み出せないため、前述のデータ数カウンタ514だけではデータメモリ454のFULL、EMPTYは判断できない。したがって、データFIFOインターフェース474は、データメモリ454のFULL、EMPTYを判断するために、独自のEMP/FULデテクタ538を持つ。
0120
図19は、図18におけるEMP/FULデテクタ538の内部構成の詳細を示すブロック図である。図19において、このEMP/FULデテクタ538は、一致判定回路550と、加算データデコーダ552と、加算器/ラッチ554と、E/Fデコーダ556とを備えている。
0121
一致判定回路550は、ライト用ループカウンタ524からのライトアドレスWCと、リード用ループカウンタ538からのリードアドレスRCとの一致を判定し、一致を判定した場合には、ハイレベルの信号EQを出力する。加算データデコーダ552は、図20に示すように、各入力条件に対して所定の加算データを出力する。加算器/ラッチ554は、加算データデコーダ552からの加算データと、前回の演算結果とを加算し、信号CLK19の立ち上がりで加算結果をラッチする。E/Fデコーダ556は、加算器/ラッチ554にラッチされた加算結果に基づいて、信号DEMP、DFULを生成する。
0122
次に、図18および図19に示すEMP/FULデテクタ538の動作を説明する。まず、信号BFCLRにより、加算器554内のラッチは00(2進数2桁)になる(初期状態)。この時には、E/Fデコーダ556は、00をデコードし、信号DEMPにハイレベルを出力し、データメモリ454が空であることを示す。この状態で信号WCHKFFがハイレベルになると、
WCHKFF*EQ*DEMP*/RCHKFF=1
の条件式(なお、*はAND条件を、/はNOTを表している)が成立し、加算器/ラッチ554には加算データ01が与えられる。そのため、加算器/ラッチ554において、前回の加算結果00と、今回の加算データ01との加算結果が01となり、このデータが加算器/ラッチ554内に新たにラッチされる。E/Fデコーダ556は、加算器/ラッチ554のラッチデータ01をデコードして、信号DEMPをローレベルに下げ、信号RDYをハイレベルに上げる。この直後に、ライトアドレスWCの値とリードアドレスRCの値とが一致しなくなるため、その後はEQ=HIGHの条件が成り立たなくなる。すると、加算データは00となり、加算結果に変化は生じない。
0123
さらに、データライト動作が続き、データメモリ454が満杯になると、再びライトアドレスWCとリードアドレスRCは一致する。この時には、
WCHKFF*EQ*RDY*/RCHKFF=1
の条件式が成立するため、加算データ01が加算器/ラッチ554に与えられる。このとき、加算器/ラッチ554において、01+01=10が演算され、ラッチされる。そのため、E/Fデコーダ556において、信号RDYはローレベルに落ち、信号DFULがハイレベルとなる。信号DFULがハイレベルになると、これ以上のデータの書き込みは禁止される。
0124
次に、データリード動作が発生すると、信号RCHKFFがハイレベルになるため、
RCHKFF*EQ*DFUL*/WCHKFF=1
の条件式が成立し、加算データ11が加算器/ラッチ554に与えられる。このとき、加算器/ラッチ554において、10+11=(1)01となり、E/Fデコーダ556において、信号RDYが再びハイレベルになり、信号DFULはローレベルになる。このままデータリード動作を続けると、最終的には、
RCHKFF*EQ*RDY*/WCHKFF=1
の条件が成立して、加算データ11が加算器/ラッチ554に与えられ、加算結果が01+11=(1)00となって、EMPTYの状態に戻る。このようにして、EMP/FULデテクタ538は、信号DEMP、DFULを生成する。
0125
次に、図22のタイムチャートを参照して、データメモリ454(図14参照)のライトタイミングを説明する。
信号SYSCKは、例えば2.68MHzのクロック信号であり、CPU30の動作クロックとして用いられる。信号CLK19は、VXO90(図5参照)からのクロック信号MCKを2分周した9.216MHzのクロック信号であり、データメモリ454のリード/ライトクロックとして用いられる。信号BTCKは、2.048MHzのクロック信号であり、PCMデコーダ84(図5参照)からの信号FDINの同期クロックとして用いられる。クロック信号MCKの周波数は、VXO19により、例えばこのクロック信号BTCKの9倍の周波数18.432MHzに調整されている。
0126
図15のデータグループシーケンサ460が、信号DATASYNCに基づいて、信号DFIFOWRを出力すると、信号BTCKの立ち上がりで、図18のデータラッチ522にデータグループデータがラッチされる。信号DFIFOWRがハイレベルになった後、信号SYSCKが立ち下がってから2つ目の信号CLK19の立ち上がり(信号SYSCKの立ち下がりよりT1の後)に、信号DWRENがハイレベルになり、信号SELがハイレベルになってアドレスマルチプレクサ532がライト用アドレスADDWRをデータメモリ454に出力する。
0127
信号SYSCKが立ち下がってから3つ目の信号CLK19の立ち上がりによって、信号DWRENはローレベルになり、信号DWRENの反転信号C1DWEの立ち上がりにより、データメモリ454の番地ADDWRにデータラッチ522のデータが書き込まれる。インバータ528の影響で信号DWRENの立ち下がりよりも信号C1DWEの立ち上がりが遅れる。そのため、信号C1DWEが立ち上がるまでアドレスマルチプレクサ532がライト用アドレスをセレクトするよう、ORゲート530によって信号SELを遅延させる。3つ目の信号CLK19の立ち上がりでさらにライト用ループカウンタ524がアップカウントされるが、当該ループカウンタ524からの信号出力“ADDWR+1”は、インバータ528による遅延よりもさらに遅れるため、データメモリ454に与えるアドレス信号には影響が生じない。
0128
なお、プリフィックスメモリ452へのライトも上記と同様のタイミングで動作するが、プリフィックスデータ数カウンタ514は、やはり3つ目の信号CLK19の立ち上がりでカウントアップされる。
0129
図22におけるその他の信号は、受信データ数が1562バイトに達した場合のEMP/FULデテクタ538の動作を示している。図22を参照して、D−FF534は、信号DWRENを信号CLK19の1クロック分遅らせた信号WCHKFFを発生する。一致判定回路550は、信号EQをハイレベルにする。信号RDYは、ハイレベルであったため、加算データには01が発生し、信号CLK19の4つ目のクロックで加算データ10がラッチされる。これによって、信号RDYがローレベルになり、信号DFULがハイレベルになる。
0130
信号RDLATG1は、信号DWRENと同じタイミングでローレベルになり、信号CLK19の3つ目でのD−FF482によるデータラッチを禁止する。DーFF482には、信号CLK19の1つ目、2つ目、4つ目の立ち上がりで常にリードアドレスで示されるデータがラッチされており、CPU30からのデータリードを保証する。プリフィックスデータライトの場合も同様にD−FF480がCPU30からのプリフィックスデータリードを保証する。
0131
次に、図23のタイムチャートを参照して、データメモリ454のリードタイミングを説明する。
CPU30によるデータリードが発生すると、信号SYSCKの立ち上がりから1つめの信号CLK19の立ち上がりで、信号DRDENがハイレベルになる。これに伴い、信号CLK19の2つ目のクロックでリード用ループカウンタ526の値がインクリメントされるが、この2つ目のクロックでは、D−FF482にはまだインクリメントされる前のアドレスによって示されるデータがラッチされている。インクリメント後のアドレスで示されるデータがD−FF482にラッチされるタイミングは、信号CLK19の3つ目の立ち上がりであるが、周波数を考慮するとその前に必ずCPU30によるリード動作が発生する(信号CPURDの立ち上がりがリード動作のタイミング)ため、リードアドレスのインクリメントがCPU30のリード動作に影響を及ぼすことはない。
0132
図23におけるその他の信号は、バッファ内のデータ数が0になった場合のEMP/FULデテクタ538の動作を示している。D−FF536は、信号DRDENを信号CLK19の1クロック分遅らせた信号RCHKFFを発生する。一致判定回路550は、信号EQをハイレベルにする。信号RDYは、ハイレベルであったため、加算データには11が発生し、信号CLK19の3つ目のクロックで加算データ00がラッチされる。これによって、信号RDYがローレベルになり、信号DEMPがハイレベルになる。
0133
なお、プリフィックスメモリ452のリード時にも上記と同様のタイミングで動作するが、信号PDWはデータリードがあった後、信号SYSCKの立ち下がりから2つ目の信号CLK19の立ち上がり(リード時の信号SYSCKの立ち上がりから数えると4つ目の信号CLK19の立ち上がり)でハイレベルになり、その次の信号CLK19の立ち上がりでデータ数がデクリメントされる。このデクリメントのタイミングは、ライト時のインクリメントのタイミングと同じであるため、信号SYSCKに同期してデータ数が確定する。
0134
CPU30によるデータリードは、信号SYSCKがハイレベルの時に発生するが、次のCPUリードタイミングまでにはすべてのインクリメント、デクリメント動作は終了し、安定化するため、DMAで連続的にデータをリードした場合でも、問題無く動作する。
0135
次に、CPU30が管理するアドレス空間について説明する。図24は、CPU30が保有するアドレス空間に対応するメモリマップを示している。CPU30は、このメモリマップ上の斜線部の領域に、マスクROM72、疑似SRAM74、フラッシュメモリA76、フラッシュメモリB106を割り付けることにより、各メモリのアクセスを管理する。すなわち、CPU30は、限られた1つのアドレス空間内で、複数のメモリを一元的に管理することができる。なお、図24において、斜線部以外の領域は、CPU30の制御領域として固定的に用いられ、この部分においてワークRAM32等のアクセスが行われる。
0136
通常、各メモリの総容量は、CPU30のアドレス空間の容量を越えているため、同一の部分に複数のメモリが重ねて割り付けられる事態が生じる。本実施例では、各メモリにアクセスの優先順位を与えることにより、このような事態に対処している。すなわち、メモリマップの同一部分に複数のメモリが割り付けられている場合、優先順位の高いメモリの方が、優先順位の低いメモリよりも優先的にアクセスされる。本実施例では、一例として各メモリの優先順位を、優先順位の高い順から
マスクROM>疑似SRAM>フラッシュメモリA>フラッシュメモリB
と決めている。優先順位の高いメモリと低いメモリとを並列的にアクセスしたい場合は、いずれかのメモリの割り付け位置がメモリマップ上で移動される。
0137
図25は、CPU30のメモリマップ上において、マスクROM72を割り付け可能な領域を示している。図25において、マスクROM72は、領域#Aおよび/または#Bに割り付けることができる。なお、領域#Aと領域#Bは、同一のマスクROMのイメージを示している。
0138
図26は、CPU30のメモリマップ上において、疑似SRAM74を割り付け可能な領域を示している。なお、図26(a)は20モードにおける割付可能領域を示しており、図26(b)は21モードにおける割付可能領域を示している。図26(a)において、疑似SRAM74は、領域#A〜#Hのいずれか1つまたは複数に割り付けることができる。また、後述する信号RAMONがハイレベルのとき、疑似SRAM74は、領域*に常に割り付けられている。なお、領域#C’,#D’,#G’,#H’,#*’には、領域#C,#D,#G,#H,#*のイメージが現れている。図26(b)において、疑似SRAM74は、領域#A〜#Hのいずれか1つまたは複数に割り付けることができる。また、後述する信号RAMONがハイレベルのとき、領域#*には、領域#A〜#Hの6000H〜7FFFHのイメージが常に現れている。また、領域#A’〜#H’には、領域#A〜#Hの8000H〜FFFFHのイメージが常に現れている。
0139
図27は、CPU30のメモリマップ上において、フラッシュメモリA76を割り付け可能な領域を示している。なお、図27(a)は20モードにおける割付可能領域を示しており、図27(b)は21モードにおける割付可能領域を示している。図27(a)において、フラッシュメモリA76は、領域#A〜#Dのいずれか1つまたは複数に割り付けることができる。また、領域#B’,#D’には、領域#B,#Dのイメージが現れている。図27(b)において、領域#A〜#Dのいずれか1つまたは複数に割り付けることができる。また、領域#A’〜#D’には、領域#A〜#Dの8000H〜FFFFHのイメージが現れている。
0140
図28は、CPU30のメモリマップ上において、フラッシュメモリB106を割り付け可能な領域を示している。図28を図24と対比すれば明らかなごとく、フラッシュメモリB106は、メモリマップ上で各メモリを割付可能な領域の全てに割り付けることが可能である。
0141
図29は、図5に示す衛星データ放送受信アダプタ4における信号の流れを示している。また、図30は、本実施例の衛星データ放送受信システムで採用されるデータ伝送の階層モデルを示している。以下、これら図29および図30を参照して、本実施例の全体的な動作を説明する。
0142
(1)リセット時の動作
図3のパワースイッチ62がオンされると、電源回路64が動作を開始し、システム内の各部の電圧が上昇していく。これに伴って、リセット回路60内の所定のノードの電圧が上昇し、当該ノードが一定電圧以上になると、リセット回路60はリセット信号RESETBを一定時間アクティブ(この場合は、ローレベル)にする。また、リセット回路60は、リセットスイッチ58がオンされた場合にも、リセット信号RESETBを一定時間アクティブにする。このリセット信号RESETBは、コネクタA38を介して、衛星データ放送受信カートリッジ6内のマッピングコントローラ70(図4参照)に与えられる。
0143
マッピングコントローラ70において、リセット信号RESETBは、図7のコントロールレジスタ110に与えられる。このコントロールレジスタ110内において、リセット信号RESETBは、図11のインバータ181でハイレベル信号に反転された後、各レジスタブロック190〜300における後段のD−FF194〜304のクリア端子またはセット端子に与えられる。ここで、インバータ181の出力が、各レジスタブロックのD−FF194〜304のクリア端子に与えられるか、セット端子に与えられるかは、初期設定時における各メモリの配置をどうするかに応じて定められている。インバータ181の出力がクリア端子に与えられた場合、該当するD−FFは、論理0を保持し、そのQ出力はローレベルとなる。これに対し、インバータ181の出力がセット端子に与えられた場合、該当するD−FFは、論理1を保持し、そのQ出力はハイレベルとなる。
0144
ここで、レジスタブロック190〜300の内、少なくともレジスタブロック240および250については、インバータ181の出力がD−FF244,254のセット端子に与えられる。これは、図4のマスクROM72にCPU30の動作プログラムが格納されているため、CPU30が起動する前にマスクROM72を読み出し可能状態、すなわちメモリマップ上に配置しておく必要があるためである。もし、初期状態においてマスクROM72がメモリマップ上に配置されていないと、動作プログラムを読み出せないため、CPU30は起動できなくなる。この初期設定によって、少なくともコントロール信号ROMON0およびROMON1がハイレベルとなる。このハイレベルのコントロール信号ROMON0およびROMON1は、コントロールバスを介して、マップデコーダ120内のROMデコーダ160(図10参照)に与えられる。これによって、マスクROM72は、図25のメモリマップ上の領域#Aおよび#Bに配置されたことになる。
0145
(2)CPU起動時の動作
上記リセットによるメモリの初期配置が終了すると、CPU30が起動する。起動したCPU30は、マスクROM72から衛星データ放送受信の動作プログラムを読み出すために、マスクROM72に対応するアドレスデータをアドレスバスAに出力する。当該アドレスデータは、マッピングコントローラ70内のアドレスデコーダ112(図7参照)に与えられる。このアドレスデコーダ112は、与えられたアドレスデータがメモリマップ上の図24の斜線部で示す領域を指定しているとき、ローレベルの信号ROMSELBを出力する。また、当該アドレスデータは、マップデコーダ120内のROMデコーダ160に与えられる。このとき、ROMデコーダ160に与えられる各信号の論理状態は、以下のようになっている。
ROMON0=1
ROMON1=1
ROMSELB=0
RESETB=1
0146
図31は、ROMデコーダ160において、マスクROM72のチップイネーブル信号CE2Bがアクティブ(ローレベル)になる条件を示している。この図31において、A21〜A23は、CPU30からのアドレスデータ(A0〜A23)の22〜24ビット目の値を示している。信号ROMSELBが論理0で、かつアドレスデータの23および24ビット目がいずれも論理0の場合は、アドレスデータが図25における領域#Aのいずれかの部分を示していることになる。また、信号ROMSELBが論理0で、かつアドレスデータの23ビット目が論理0で、24ビット目が論理1の場合は、アドレスデータが図25における領域#Bのいずれかの部分を示していることになる。
0147
ROMデコーダ160に与えられる各信号の論理状態は、前述のようになっているため、ROMデコーダ160は、図31の条件に基づき、CPU30からのアドレスデータが現在のマスクROM72のメモリ配置にヒットしていることを判断し、マスクROM72を能動化させるためのチップイネーブル信号CE2Bをアクティブ(ローレベル)にする。これによって、マスクROM72の動作が許可され、CPU30は、マスクROM72をアクセス可能となる。
0148
(3)マスクROMの再配置動作
CPU30は、マスクROM72から衛星データ放送受信の動作プログラムを読み出すと、当該動作プログラムに従って、メモリマップ上でのマスクROM72の再配置すなわち割り付け位置の変更を行う。メモリマップ上では、現在、図25の領域#Aおよび#Bの両方にマスクROM72が割り付けられている。これでは使い勝手が悪く、メモリマップの使用効率も落ちるため、CPU30は、マスクROM72を領域#Aおよび#Bのいずれか一方に割り付ける。本実施例では、マスクROM72を領域#Aに割り付けている。
0149
(4)メニューデータの受信動作
次に、CPU30は、TVモニタ22上に初期画面(メーカー名や本システムのタイトル等)を表示し、現在放送中の番組メニューを入手するために、TCDと呼ばれる番組一覧データ(メニューデータ)を受信する。この受信動作の詳細を以下に説明する。
0150
A.論理チャンネルの設定
まず、CPU30は、マスクROM72から読み出したプログラムデータに従って、TCDのために予め定められている論理チャンネル(例えば、LCI1=2、LCI2=1)をデータ放送デコーダ82にセットする(図29のα1)。すなわち、CPU30は、チャンネル1LCI1のI/OポートアドレスをアドレスバスBに出力すると共に、データバスに論理チャンネルLCI1のデータ「2」を出力し、制御信号Bに含まれる信号PAWRをローレベルにセットする。データ放送デコーダ82は、バスバッファ94,96、双方向バッファ92を介して、これらの信号を入力する。データ放送デコーダ82内のホストインターフェース410(図12参照)は、内部のアドレスデコーダ410cによって、アドレスバスB上のチャンネル1LCI1のI/Oポートアドレスをデコードし、デコード信号C1L1LDを生成する。このデコード信号C1L1LDは、制御信号バスCDを介して、チャンネルデテクタ406に出力される。チャンネルデテクタ406内の設定レジスタ424(図13参照)は、デコード信号C1L1LDおよび制御信号PAWRを受けて、データバス上のデータ「2」を内部レジスタにストアする。これによって、設定レジスタ424からチャンネル1LCI比較回路426に、論理チャンネルLCI1を指定するデータ「2」が、信号線C1L1を介して入力され、放送によって送られてくるデータパケットのデータLCI1と比較される。
0151
次に、CPU30は、チャンネル1LCI2のI/OポートアドレスをアドレスバスBに出力すると共に、データバスに論理チャンネルLCI2のデータ「1」を出力し、制御信号Bに含まれる信号PAWRをローレベルにセットする。データ放送デコーダ82内のホストインターフェース410は、論理チャンネルLCI1のときと同様に、内部のアドレスデコーダ410cによってアドレスバスB上のチャンネル1LCI2のI/Oポートアドレスをデコードし、デコード信号C1L2LDを生成する。チャンネルデテクタ406内の設定レジスタ424は、上記デコード信号C1L2LDおよび制御信号PAWRを受けて、データバス上のデータ「1」を内部レジスタにストアし、信号線C1L2を介して、チャンネル1LCI比較回路426に出力する。チャンネル1LCI比較回路426では、設定レジスタ424から与えられたデータ「1」と、放送によって送られてくるデータパケットのデータLCI2とを比較する。
0152
B.バッファメモリの初期化と受信許可の付与
次に、CPU30は、チャンネル1のクリアフラグレジスタ460c(図15参照)を示すI/0ポートアドレスをアドレスバスBに出力すると共に、データバスにデータ「1」を出力し、制御信号Bに含まれる信号PAWRをローレベルにセットする。データ放送デコーダ82内のホストインターフェース410は、内部のアドレスデコーダ410cによってアドレスバスB上のクリアフラグレジスタアドレスをデコードし、デコード信号WE11を生成する。このデコード信号WE11は、制御信号バスCCを介して、チャンネルデコーダ408のデータコントローラ450内にあるデータグループシーケンサ460に出力される。
0153
データグループシーケンサ460内のクリアフラグレジスタ460cは、上記デコード信号WE11および制御信号PAWRを受けて、データバス上のデータ「1」を記憶する。これによって、データグループシーケンサ460は、内部の受信許可フラグレジスタ460bを受信禁止の状態に設定し、信号BFCLRを出力してチャンネル1用バッファメモリ452,454(図14参照)のクリアを行う。ただし、バッファメモリ452,454は、FIFOとして構成されているため、実際にデータが消去されるのではなく、データが空の状態になるようにアドレス操作が行われることにより、データの消去が実現される。この信号BFCLRは、システムリセット時にも同様に発生する。データ「1」が書き込まれたクリアフラグレジスタ460cは、バッファクリア後、自動的に0に戻る。
0154
次に、CPU30は、チャンネル1の受信許可フラグレジスタ460bを示すI/OポートアドレスをアドレスバスBに出力すると共に、データバスにデータ「1」を出力し、制御信号Bに含まれる信号PAWRをローレベルにセットする。データ放送デコーダ82内のホストインターフェース410は、内部のアドレスデコーダ410cによってアドレスバスB上の受信許可フラグレジスタアドレスをデコードし、デコード信号WE10を生成する。このデコード信号WE10は、制御信号バスCCを介して、チャンネルデコーダ408のデータコントローラ450内にあるデータグループシーケンサ460に出力される。データグループシーケンサ460内の許可フラグレジスタ460bは、上記デコード信号WE10および制御信号PAWRを受けて、データバス上のデータ「1」を記憶する。これによって、データグループシーケンサ460は、先頭パケット検出状態に移行する。
0155
C.パケットの生成
データ放送デコーダ82にビットストリーム信号BSTが入力されると、データ放送デコーダ82内のアンプ/VXOコントローラ402は、当該ビットストリーム信号BSTを増幅し、信号BST02としてPCMデコーダ84に出力する(図29のα2)。PCMデコーダ84は、与えられた信号BST02に対してビットデインターリーブを施した後、音声信号とデータとに分離する。分離された音声信号は、PCMデコーダ84でPCM復調された後、アンプ86a,86b、ミキサ50a、50b、アンプ52a,52bを介して、TVモニタ22に出力される。これによって、本システムは、通常の音楽番組を受信するために使用可能である。一方、分離されたデータは、PCMデコーダ84で信号FDINとしてデータ放送デコーダ82に戻される(図29のα3)。データ放送デコーダ82内において、プリデコーダ404は、信号FDINを、斜めデインターリーブ、BCH誤り訂正、SDSC誤り訂正等を施した後、パケット単位の信号SDOとして、ビットシリアルに、チャンネルデテクタ406に出力する(図29のα4)。
0156
上記信号SDOは、前述の図21に示すようなフォーマットを有している。チャンネルデテクタ406内のビットカウンタ422は、プリデコーダ404からのパケットの先頭を示す信号PSYNCおよびパケットデータのビットクロックBTCKに基づいて、各データを分離するためのタイミング信号LCI1SYNC、LCI2SYNC、PFXSYNC、DATASYNC、DBLAST、PERRLD、PERRSYNC(図21参照)を生成する。また、S−P変換回路420は、上記ビットクロックBTCKに同期して信号SDOをシフトし、8ビットパラレルのデータBSDATAとして、各ブロックに出力する(図29のα5)。
0157
D.論理チャンネルの比較
S−P変換回路420の働きにより、信号LCI1SYNCがハイレベルになるタイミングでは、すでにBSDATA上に、受信されたパケットのデータLCI1が5ビットパラレルデータとして出力されている(残り3ビットは冗長データ)。チャンネル1LCI比較回路426は、信号LCI1SYNCがハイレベルのときに、BSDATA上の値と、前述のC1L1上の値とを比較し、その結果をD−FF428に出力する。双方の値が一致している場合にはハイレベルが、一致していない場合にはローレベルが、D−FF428に出力され、上記LCI1SYNCがハイレベルでかつビットクロックBTCKの立ち上がりのタイミングで、D−FF428にその比較結果が書き込まれる。
0158
一方、信号LCI2SYNCがハイレベルになるタイミングでは、すでにBSDATA上に受信されたパケットのデータLCI2が6ビットパラレルデータとして出力されている(残り2ビットは冗長データ)。チャンネル1LCI比較回路426は、信号LCI1SYNCがローレベルのときに、BSDATA上の値と、前述のC1L2上の値とを比較し、その結果をD−FF430に出力する。双方の値が一致している場合にはハイレベルが、一致していない場合にはローレベルが、D−FF430に出力され、上記信号LCI2SYNCがハイレベルでかつビットクロックBTCKの立ち上がりのタイミングで、D−FF430にその出力結果が書き込まれる。
0159
ここで、受信データの論理チャンネルLCI1,LCI2の値が共に設定レジスタ424の設定値と一致した場合には、D−FF428,430からANDゲート432に共にハイレベルの信号が与えられる。また、信号HERRがハイレベルの場合には、プリデコーダ404においてBCH(16,5)誤り訂正が不可能であったことを示し、LCI1,LCI2の受信データが信用できないことを意味する。すなわち、信号HERRがローレベルでかつLCI1,LCI2の値が共に設定値と一致したときのみ、ANDゲート432は信号CH1ENAをハイレベルにし、パケットの受信(正確にはバッファリング)を許可する。これ以外の場合は、信号CH1ENAがローレベルとなり、パケットの受信が許可されない(図29のα6)。上記と同様の動作は、チャンネル2においても行われ、この場合には、信号線C2L1,C2L2、チャンネル2LCI比較回路434、D−FF436,438、ANDゲート440が使用される。
0160
E.プリフィックスデータの生成
次に、チャンネルデテクタ406内のD−FF442は、信号PFXSYNCに基づいて、8ビットのプリフィックスデータ(SCC,CI,DTC)を記憶し、8ビットパラレルの信号PRFXDTとして出力する(図29のα7)。また、D−FF444は、信号PERRLDに基づいて、SDSC(272,190)誤り訂正不可能を示す信号PERRを記憶し、信号PERRLTとして出力する。信号PERRは、上記パケットの最後のデータとして、プリデコーダ404から与えられる。
0161
F.データのバッファリング
チャンネルデコーダ408には、全く同じ回路が2回路用意されており、各々チャンネルデテクタ408からの信号CH1ENAおよびCH2ENAに基づいて動作する。その内の1つであるチャンネル1デコーダ/バッファ408a内のチャンネル1データコントローラ460(図14参照)は、以下の順序でデータのバッファリングを制御する。
a)先頭パケットの検出…初期化バッファリング開始
b)定常動作
データメモリ454への書き込みおよびアドレス制御
CRC演算、データサイズカウンタ462のデクリメント
CIカウントによるパケットの連続性チェック
プリフィックスメモリ452への書き込みおよびアドレス制御
c)終端パケットの検出…バッファリング停止
以下、上記各動作を順番に説明する。
0162
a)先頭パケットの検出
データコントローラ450内のデータグループシーケンサ460(図15参照)は、図30の階層4に示すデータグループを構成すべく、PRFXDT上のプリフィックスデータのDTCに基づいて、先頭のパケットと終端のパケットを検出する。例えば、前述の信号CH1ENAがハイレベルであり、パケットの受信が許可されていても、まだ先頭パケットが検出されていない状態では(先頭パケット未検出状態)、パケットのバッファリングは行わない。先頭パケットを検出すると、データグループシーケンサ460は、信号CILDをCIカウンタ464に与え、信号CRCCLRをCRC回路468に与えて、これら回路を初期化する。また、データグループの先頭から3〜5バイト目に受信されるデータグループサイズをデータサイズカウンタ462内にストアするべく、信号DSLDを出力する。
0163
b)定常動作
データメモリ454への書き込みおよびアドレス制御
データグループシーケンサ460は、信号DATASYNCに基づいて信号DFIFOWRを生成し、データFIFOインターフェース474に与える。データFIFOインターフェース474内のタイミング発生回路520(図18参照)は、信号DFIFOWRに基づいて信号DWRENを生成する。信号DWRENの生成には、CPU30からのデータリードと衝突しないタイミングが選ばれる。CPU30から出力された信号SYSCKがハイレベルの期間はCPU30がデータリードを行う期間であり、ローレベルの期間はメモリをアクセスしない期間であるため、この信号SYSCKに基づいてタイミング発生回路520が信号DWRENを生成する。信号DWRENは、インバータ528を介して、チャンネル1データメモリ454(図14参照)にデータの書き込み信号C1DWEとして与えられる。
0164
データラッチ522は、ビットクロックBTCKに基づいてデータBSDATAを常にラッチしており、前述のタイミング調整によって書き込みタイミングに遅延が生じてもデータが消失しないようにこれを保持する。ライト用ループカウンタ524は、書き込み時のアドレスを記憶している。アドレスマルチプレクサ532は、書き込みアドレスを、信号C1DADRとしてデータメモリ454に与える。
0165
これによって、データメモリ454にアドレス、データ、書き込み信号が与えられるため、当該データメモリ454に受信データが順次記憶される。また、リード用ループカウンタ524は、信号DWRENに基づいてアップカウントされ、データメモリ454への書き込みアドレスを歩進する。信号DWRENは、インバータ540を介して信号RDLATG1となり、前述のタイミング調整時のCPUリードデータ保持用ラッチのための書き込み禁止信号として使用される。これら書き込みタイミングの詳細は、図22に示されている。
0166
CRC演算、データサイズカウンタ462のデクリメント
図15のデータグループシーケンサ460は、信号DATASYNCに基づいて信号CRCNXTを生成し、CRC回路468に与える。CRC回路468は、信号CRCNXTを受けて、BSDATA上のデータグループの各データを順次CRC演算する。
0167
また、データグループシーケンサ460は、信号CRCNXTに同期して、信号DSDECをデータサイズカウンタ462に出力する。データサイズカウンタ462は、この信号DSDECを受けて、内部のデータサイズ値をデクリメントする。データサイズ値が0になると、データサイズカウンタ462は信号DSEQを出力し、データグループシーケンサ460に与える。データグループシーケンサ460は、信号DSEQを受けると、データグループの全データを受信し終えたと判断し、信号CRCOKLDをCRC回路468に与える。これによって、CRC回路468は、CRCの演算結果を内部レジスタにストアし、その結果をORゲート470に出力する。
0168
ORゲート470は、前述の信号PERRLTと、CRC演算結果とをORすることにより、どちらかにエラーがあった場合に、信号CRCERRをハイレベルにしてプリフィックスFIFOインターフェース472に与える。この信号CRCERRは、受信されたプリフィックスデータSCC、DTCと共に、図14のチャンネル1プリフィックスメモリ452に与えられて記憶されるが、CRCの演算結果については、データグループの終了時(すなわち終端パケット)においてのみ有効なフラグとなる。
0169
CIカウントによるパケットの連続性チェック
データグループシーケンサ460は、信号PERRSYNCに基づいて、信号CICNTENを生成する。CIカウンタ464は、先頭パケットで初期化したCI値を、パケット毎にインクリメントし、その結果をEXOR(排他的論理和)ゲート466に出力する。EXORゲート466は、CIカウンタ464からのカウント値と、プリフィックスとして受信されるCI値とが一致するかどうかを検出し、一致しない場合には信号CIERRをハイレベルにしてプリフィックスFIFOインターフェース472に出力する。一致しない場合は、受信状態が不良で、エラー訂正不可能なパケットが発生し、データグループにパケット抜けが発生したことを意味する。この信号CIERRは、信号CRCERRと共に、受信されたプリフィックスデータSCC、DTCと統合され、6ビットパラレルの信号C1PDとなって、図14のチャンネル1プリフィックスメモリ452に与えられて記憶される。
0170
プリフィックスメモリ452への書き込みおよびアドレス制御
図15のデータグループシーケンサ460は、信号PERRSYNCに基づいて信号PFIFOWRを生成し、プリフィックスFIFOインターフェース472に与える。プリフィックスFIFOインターフェース472内のタイミング発生回路500(図17参照)は、信号PFIFOWRに基づいて信号PWRENを生成する。信号PWRENの生成には、CPU30からのデータリードと衝突しないタイミングが選ばれる。そこで、前述の信号DWRENの場合と同様に、信号SYSCKに基づいてタイミング発生回路500が信号PWRENを生成する。信号PWRENは、インバータ508を介して信号C1PWEとなり、図14のチャンネル1プリフィックスメモリ452に、プリフィックスデータの書き込み信号として与えられる。
0171
図17のプリフィックスデータラッチ502は、ビットクロックBTCKに基づいて信号PRFXDTを常にラッチしており、前述のタイミング調整によって書き込みタイミングに遅延が生じてもプリフィックスデータが消失しないようにこれを保持する。ライト用ループカウンタ504は、書き込み時のアドレスを記憶している。アドレスマルチプレクサ512は、書き込みアドレスを信号C1PADRとしてプリフィックスメモリ452に与える。これによって、プリフィックスメモリ452にアドレス、データ、書き込み信号が与えられるため、プリフィックスメモリ452に順次受信プリフィックスデータが記憶される。
0172
また、ライト用ループカウンタ504は、信号C1PWEに基づいてインクリメントされ、図14のチャンネル1プリフィックスメモリ452への書き込みアドレスを歩進する。信号PWRENは、インバータ518を介して信号PFLATG1となり、前述のタイミング調整時のCPUリードデータ保持用ラッチのための書き込み禁止信号として使用される。これら書き込みタイミングの詳細は、図22に示される。また、プリフィックスデータ数カウンタ514は、信号PWRENに基づいてインクリメントされ、現在メモリに蓄えているパケット数をPFCNT1として出力する。
0173
c)終端パケットの検出
図15のデータグループシーケンサ460は、プリフィックスのDTCに基づいて終端パケットを検出する。データグループがスタイル1の場合には、前述のようにデータグループサイズのカウントによって信号CRCOKLDを生成するが、データグループがスタイル2の場合には、この終端パケットを示すDTCと信号DBLASTとに基づいて、信号CRCOKLDを生成する。パケット抜けやCRCエラーの場合を考慮し、終端パケットが検出されたとしても、CPU30から受信許可フラグ460cを禁止状態にセットしに行かない限り、本システムは、再度同じデータを受信し続ける。
0174
G.各データのリード
CPU30が特定のI/Oアドレスをリードすると、それに対応して、ホストインターフェース410内のアドレスデコーダ410cがデコード信号を生成する。例えば、図14のチャンネル1プリフィックスメモリ452からデータをリードする場合には、デコード信号PFIFORDがチャンネルデコーダ408に出力される。
0175
チャンネルデコーダ408内のデータセレクタ456は、信号PFIFORDを受けて、チャンネル1プリフィックスメモリ452からのプリフィックスデータC1PODをD−FF480で一旦ラッチした信号(すなわち、バッファリングされたプリフィックスデータ)をデータバスB上に出力する(図29のα8)。これによって、CPU30は、プリフィックスデータをリードできる。
0176
また、信号PFIFORDは、プリフィックスFIFOインターフェース472にも与えられ、タイミング発生回路500が、これに基づいて信号PRDENおよびPDWを生成する。信号PRDENは、リード用ループカウンタ506に作用し、リード用アドレスをインクリメントさせる。また、信号PDWは、プリフィックスデータ数カウンタ514に作用し、バッファリングしているパケットのカウント値をダウンカウントさせる。アドレスマルチプレクサ512は、データ書き込み時以外、常にリード用ループカウンタ506からのリードアドレス値を信号C1PADRとして出力する。
0177
同様に、CPU30は、チャンネル1データメモリ454の内容、プリフィックスデータ数カウンタ514の内容、ORループ483の内容をリードできる(図29のα9〜α11)。
0178
上記のようにして、CPU30は、バッファメモリ452,454から受信したデータを抜き出し、例えば本体内のワークRAM32にTCDを展開する。次に、CPU30は、プリフィックスデータのエラーフラグによって、展開したTCDに受信エラーが無いことを確認の後、これをメニューデータとしてTVモニタ22の画面上に表示する。
0179
(5)番組の選択動作
オペレータは、TVモニタ上に表示されたメニューを見て、受信したい番組名を選択する。CPU30は、オペレータによって選択された番組名を、対応する論理チャンネルデータに変換し、これを内部メモリに一旦記憶する。また、CPU30は、ワークRAM32上に展開されているTCDから、当該選択された番組に対応する使用メモリ容量、実行メモリマップ構成を抽出し、これに基づいてメモリマップ上での各メモリの配置を決定する。
0180
(6)メモリマップ上での各メモリの配置動作
次に、CPU30は、図21に示すメモリマップ上に、疑似SRAM74と、フラッシュメモリ76および106とを配置する。ここでは、一例として、疑似SRAM74をメモリマップ上に配置する動作の詳細について説明する。
0181
まず、CPU30は、疑似SRAM74のマッピング設定のためのI/OポートアドレスをアドレスバスAに出力するとともに、データバスAに設定値を出力し、制御信号Aに含まれる信号CPUWRBをローレベルにセットする。例えば、図35に示す位置に疑似SRAM74を配置する場合、RAMON=1、RAMMAP0=0、RAMMAP1=1、RAMMAP2=0に設定しなければならない。従って、CPU30は、アドレスバスA上にRAMONを示すI/Oポートアドレス値を出力し、データバス上にデータ「80H」を出力する。
0182
マッピングコントローラ70内のアドレスデコーダ112(図7参照)は、上記データバスA上のRAMONのI/Oポートアドレス値をデコードすることにより、デコード信号FE3をハイレベルにし、コントロールレジスタ110に出力する。データバスのD7は、バッファ118を介して信号CD7Iとしてコントロールレジスタ110に与えられる。このとき、データの値が「80H」であるため、CD7Iはハイレベルの信号となる。また、上記信号CPUWRBもコントロールレジスタ110に与えられる。
0183
前述したように、コントロールレジスタ110の内部には、前後段2個のD−FFとANDゲートとから成る複数のレジスタブロック190〜300が存在する(図11参照)。また、リセット信号は、各レジスタブロックに要求される初期値に対応して、各レジスタブロックのD−FFのセット端子またはクリア端子に、個別的に与えられる。信号FE3は、レジスタブロック200内に存在する前段のD−FF202の端子CEに書き込み許可信号として与えられる。また、信号CPUWRBは、同D−FF202のクロック端子に書き込み信号として与えられる。これによって、D−FF202には、CD7Iの値(ハイレベルすなわち論理1)が書き込まれる。
0184
次に、CPU30は、アドレスバスA上にRAMMAP0を示すI/Oポートアドレス値を出力し、データバス上にデータ「00H」を出力する。上記と同様にして、RAMMAP0に対応するレジスタブロック210内のD−FF212は、信号FE4を受けて、ローレベル(論理0)を記憶する。
0185
次に、CPU30は、アドレスバスA上にRAMMAP1を示すI/0ポートアドレス値を出力し、データバス上にデータ「80H]を出力する。上記と同様にして、RAMMAP1に対応するレジスタブロック220内のD−FF222は、信号FE5を受けて、ハイレベル(論理1)が書き込まれる。
0186
次に、CPU30は、アドレスバスA上にRAMMAP2を示すI/Oポートアドレス値を出力し、データバス上にデータ「00H」を出力する。上記と同様にして、RAMMAP2に対応するレジスタブロック230内のD−FF232は、信号FE6を受けて、ローレベル(論理0)が書き込まれる。
0187
さらに、CPU30は、アドレスバスA上にENMAPSTを示すI/Oポートアドレス値を出力し、データバス上にデータ「00H」を出力する。このデータはダミーデータであり、特に意味は無い。ENMAPSTへ書き込みを行うという動作によって、信号FE14がアドレスデコーダ112から各レジスタブロックの後段のD−FF194,204,214,…,304のCE端子に与えられる。同時に、信号CPUWRが各D−FF194,204,214,…,304クロック入力端子に与えられる。これによって、D−FF192,202,212,…,302に書き込まれたデータが、後段のD−FF194,204,214,…,304にそっくり移される。この時点で、先ほど書き込んだRAMON、RAMMAP0、RAMMAP1、RAMMAP2のデータが、信号RAMONおよび信号RAMMAP0〜2として、マップデコーダ120に出力される。このように、レジスタブロックに順次データを設定した後、一度に全設定値を有効化することにより、マッピング変更時の遷移期間中のメモリ配置を気にする必要がなくなる。その結果、容易にマッピング変更が行えるメモリマッピング変更システムを実現できる。
0188
上記のようにして各レジスタブロック190〜300に設定された内容は、マップデコーダ120に入力され、疑似SRAM74のためのチップイネーブル信号CE1Bの生成に使用される。
0189
なお、他のメモリ、すなわちフラッシュメモリ76および106をメモリマップ上に配置する動作も上記と同様にして行われる。参考のために、図32〜図34に各メモリ配置のために必要となる条件を示しておく。すなわち、図32は、PS−RAMデコーダ162において、疑似SRAM74のチップイネーブル信号CE1Bがアクティブ(ローレベル)になる条件を示している。また、図33は、フラッシュデコーダ164において、フラッシュメモリA76のチップイネーブル信号CE3Bがアクティブ(ローレベル)になる条件を示している。また、図34は、メモリユニットデコーダ166において、フラッシュメモリB106のチップイネーブル信号CE4Bがアクティブ(ローレベル)になる条件を示している。
0190
(7)実データの受信動作
次に、CPU30は、実際データ(TCD以外のデータ)を受信する。実データの受信動作は、基本的には前述のメニューデータの受信動作と同様である。すなわち、ユーザによって選択された番組に対応する論理チャンネルが、CPU30からデータ放送デコーダ82に対してセットされる。データ放送デコーダ82は、受信した放送データの中から、セットされた論理チャンネルに対応するパケットのみを抜き出し、バッファリングする。CPU30は、バッファメモリ452,454に格納されたデータを、メモリマップ上に配置されたメモリ(例えば、疑似SRAM74にDMA転送する。
(8)エラー検出動作
次に、メニューデータまたは実データを受信する際に実行されるエラー検出動作について説明する。本実施例では、誤りのない受信データを得るために、BCH誤り訂正と、SDSC誤り訂正と、CIカウンタ464によるパケットの連続性チェックと、CRC回路468によるCRC演算とを行っている。BCH誤り訂正は、受信データの各パケットのヘッダ部に含まれている誤りを訂正するために行われる。SDSC誤り訂正は、受信パケットデータの本体(ペイロード部)に含まれている誤りを訂正するために行われる。
0191
BCH誤り訂正において、誤り訂正をしきれずにエラーが残った場合、図12のBCH(16、5)誤り訂正回路404dは、信号HERRを出力する。この信号HERRは、チャンネルデテクタ406内のANDゲート432,440(図13参照)を閉じるように作用する。その結果、信号CH1ENA,CH2ENAをローレベルに強制する。これによって、図15のデータグループシーケンサ460が不能動化され、許可フラグレジスタ460bがオンされない。従って、図14のバッファメモリ452,454へのデータの書き込みが許可されない。
0192
SDSC誤り訂正において、誤り訂正をしきれずにエラーが残った場合、図12のSDSC(272,190)誤り訂正回路404eは、信号PERRを出力する。この信号PERRは、各パケットの終端部において図13のD−FF444にラッチされた後、信号PERRLTとしてデータコントローラ450におけるORゲート470で、CRC演算結果(CRCの演算結果ついては、データグループの終了時、すなわち終端パケットにおいてのみ有効なフラグとなる)と統合されて、信号CRCERRとなる。
0193
パケット抜けによって、受信データのCI値とCIカウンタ464のカウント値との不一致が生じた場合、EXORゲート466は、信号CIERRをハイレベルにする。
0194
上記信号CRCERRおよびCIERRは、プリフィックスFIFOインターフェース472において、プリフィックスデータ内に挿入され、6ビットのプリフィックスデータC1PIDとなってチャンネル1プリフィックスメモリ452に格納される。CPU30が、このチャンネル1プリフィックスメモリ452からデータを読み出すとき、チャンネル1データセレクタ456内のORループ483が各ビット毎に時間軸方向のORをとり、その結果をD−FFに記憶する。すなわち、各パケットのプリフィックスデータを時間軸方向に並べた複数のビット列において、信号CRCERRに対応するビット列中に1つでも論理1があると、ORループ483内のD−FF486の対応する記憶部が論理1を保持する。また、各パケットのプリフィックスデータを時間軸方向に並べた複数のビット列において、信号CIERRに対応するビット列中に1つでも論理1があると、D−FF486の対応する記憶部が論理1を保持する。従って、CPU30は、プリフィックスデータ読み出し終了後、D−FF486の記憶情報を読み出すことにより、バッファリングされている受信パケットに、SDSCエラー、CRCエラー、不連続性エラーが生じているか否かを知ることができる。このような手法によれば、各パケット毎にプリフィックスデータを調べる場合に比べて、プログラムの負担を大幅に軽減できる。
0195
なお、上記説明は、主としてチャンネル1に対する受信動作について述べたが、チャンネル2についても上記と同様の動作で受信が可能なことは言うまでもない。このように2つのチャンネル回路を並列的に設けることにより、一方のチャンネルでプログラムデータ等を受信しつつ、他方のチャンネルで音声データや表示データを受信することが可能となり、それをユーザに流すことで、受信中の退屈感を紛らわせることができる。
0196
図35は、データ放送を受信する場合に好適なメモリ配置を示している。メモリマップの制御領域以外の部分には、フラッシュメモリB106が全面的に配置されている。ただし、図示していないが、バンク7E,7Fには特別領域が予め設定されているため、フラッシュメモリB106は配置されていない。そのフラッシュメモリB106上にマスクROM72がROMON0=1によって配置され、疑似SRAM74がRAMMAP0=0、RAMMAP1=1、RAMMAP2=0、RAMON=1によって配置される。また、フラッシュメモリA76は、FMON=1、FMMAP0=0、FMMAP1=1によって図の位置に配置される。
0197
本実施例で使用したCPU30の特性として、割り込みベクトルがバンク0のFFF0H以降にセットされるため、マスクROM72を図35の位置に置くことにより、マスクROM72内の割り込みルーチンが使用可能となり、データ放送の受信が適切に行われる。CPU30は、受信データを、疑似SRAM74/フラッシュメモリA76/フラッシュメモリB106の任意のアドレスに書き込むことができる。
0198
ここで、疑似SRAM74の下に隠れているフラッシュメモリB106の一部分は、RAMON=0として、疑似SRAM74をメモリマップ上から消失させるか、またはRAMMAP0〜2の値を変更して、疑似SRAM74の位置を移動することによりアクセスできるようになる。さらに、RAMMAP0=0、RAMMAP1=0、RAMMAP2=1と設定することにより、疑似SRAM74を、フラッシュメモリA76の80〜8Fバンクにセットすることもできる。この場合、フラッシュメモリB106、フラッシュメモリA76、疑似SRAM74は、この領域において3層のメモリレイヤを持つことになる。
0199
なお、上記図35のメモリ配置は、マスクROM72に文字や静止画を表示するプログラムが予め内蔵されている場合、あるいは文字および静止画の放送データを受信しながら、これを画面に表示する場合に好適なメモリ配置である。
0200
図36は、フラッシュメモリA76内に記憶したゲームプログラムを動作させる場合に好適なメモリ配置を示す。この場合、CPU30がゲーム用の割り込みベクトルを使用できるように、フラッシュメモリA76を第0バンクに設定する必要があるため、図35に示すようなマスクROMエリアは排除し(ROMON0=0)、フラッシュメモリA76の位置を変更しなければならない(FMMAP0=0、FMMAP1=0)。しかし、ゲームプログラムからマスクROM72内に含まれる画像、音声制御サブルーチンを使用できれば便利であるため、ただ単にマスクROM72のメモリエリアを排除するだけでなく、マスクROM72を図36の位置に移動することが必要となる。
0201
この場合には、ROMON1=1と設定すればよい。ただし、上記画像、音声制御サブルーチンは、アドレス的にリロケータブルであること(プログラム上で絶対アドレスとして記述されていないこと)が要求される。また、マスクROM72の移動によって隠れてしまったフラッシュメモリB106のバンクA0〜BFの領域にアクセスしたい場合には、ROMON1=0とすることによりアクセスが可能となる。このように、各メモリをプログラムの状況に応じてメモリマップ上の最適の位置に配置することができる。
0202
ここで最適の位置とは、単にプログラム実行の邪魔にならない位置という意味もあるが、実開平4−78619号公報に開示されるように、CPUアドレスに対応してCPUクロック周波数が変化する場合に、高速のアクセススピードに対応するアドレス配置を指定できるという意味も含んでいる。また、逆にあえて低速のアクセススピードに対応するアドレスに配置し、不要輻射を低減するようメモリ配置を選択することもできる。さらに、従来のバンク設定のように、特定のバンク幅に影響されず、広範囲に渡って全メモリエリア(例えば、マスクROMエリアの16Mビット全て)がメモリマップ上に出現するため、データ転送時に頻繁にバンク切り替えを行う必要が無いという利点もある。
0204
通常、リセット時および電源投入時には、マスクROM72は、図35に示す位置に再配置されている(ステップS101)。次に、CPU30は、TVモニタ22上に初期画面(メーカー名や本システムのタイトル等)を表示した後(ステップS102)、マスクROM72に格納されたメニュー受信ルーチンを読み出して起動する(ステップS103)。このメニュー受信ルーチンにおいて、データ放送からのメニューデータの受信が行われるが、受信されたメニューデータは、通常、メモリマップ上の制御領域にあるワークRAM32にストアされる(ステップS104)。なお、メニューデータを疑似SRAM74に記憶させたい場合には、疑似SRAM74をメモリマップ上に配置してやる必要がある。
