English
PROGRAMMER'S GUIDECD通信I/F(CDパート)
戻る進む
CD通信インタフェースユーザーズマニュアル

CDブロックの構造


 ホストから見た、CDブロックの特徴と論理的な構造を以下に示します。

 (1)データ形式
 CDバッファはストリームを、デバイスによらない固定長(2352バイト)のセクタ単位で管理します。
 ただし、デバイスとの入出力では、1セクタ内の有効データ長が2352バイトに一致するとは限りません。ホストの場合、2048〜2352バイトの可変長の設定が可能です。

 (2)ストリーム選択回路
 ストリームを分離・格納する機能を、絞り・バッファ区画という仕組みで実現します。それらの機能を論理的な素子(セレクタ)とみなします。セレクタを組み合わせることで、必要なストリームを選択する回路を構築します。

 (3)デバイス
 CDやMPEGなどを、ストリームを発生・吸収する論理的なデバイスとみなします。ストリーム選択回路にデバイスを接続することで、ストリームの流れを制御します。

5.1 データフロー

 CDブロックに関する全体的なデータフローを図5.1に示します。

図5.1 CDブロック全体のデータフロー

5.2 ストリームの処理機構

 ストリームの流れに着目した、CDブロックの全体構成図を図5.2に示します。

図5.2 CDブロックの全体構成図

[各パーツの説明]
  1. デバイス  :ストリームを発生・吸収する。(ストリーム流出・流入デバイス)
  2. セレクタ  :絞りとバッファ区画から構成され、ストリームを選択する。
  3. 絞り    :設定した条件によってストリームを分離する。(条件に一致する/しない)
  4. バッファ区画:ストリームを格納し、外部からの要求によってデータを放出・消去する。

 各デバイスとセレクタには接続するためのコネクタがあります。デバイスとセレクタの入力・出力コネクタは、1対1に接続します。セレクタ間の接続もできます。

 区画を通さないコネクタ間の接続は、ストリームが定常的に流れます。区画に入ると停留します。未接続の出力コネクタから出力されたセクタは消去されます。

 デバイスは、必ずセレクタを通して接続します。デバイス出力コネクタは絞り入力コネクタにだけ、デバイス入力コネクタは区画出力コネクタにだけ接続できます。

5.3 セレクタの構造

 セレクタの処理機能は、接続先のセレクタやデバイスに依存しません。入力したストリームを分離・格納し、要求に応じて出力するだけです。
セレクタの構造を図5.3に示します。

図5.3 セレクタの構造(初期状態)

 セレクタの初期状態は、同じ番号の絞りと区画が、真出力コネクタと区画入力コネクタを通して接続している状態です。その他のコネクタは未接続です。

5.3.1 絞り

 絞りには、通過させるべきセクタの条件(FADの範囲、サブヘッダ)を設定します。条件に一致したセクタは真出力コネクタに出力され、接続先のバッファ区画に格納されます。それ以外のセクタは偽出力コネクタに出力されます。
 偽出力コネクタは、他の絞り入力コネクタに接続でき、次々と同様の選択処理がなされます。
 未接続の出力コネクタから出力されたセクタは消去されます。

図5.4 ストリーム選択処理の模式図

5.3.2 バッファ区画

 (1)バッファ区画の構造
 CDバッファは複数のバッファ区画に区分けされます。バッファ区画の構造を図5.5に示します。

図5.5 バッファ区画の構造

 (2)バッファ区画へのセクタの格納
 区画に入ったセクタは、区画の最後に格納されます。区画の最後のセクタ位置はバッファ区画サイズ−1に等しくなります。格納後、バッファ区画サイズは1だけ増えます。

 (3)バッファ区画からのセクタの放出と消去
 区画からセクタを放出する場合、放出元の区画のセクタを残すか、消去するか2通りの方法があります。(消去だけを指示することもできます。)
 例えば、ホストへの取り出しでは「取り出し」と「取り出し消去」に対応し、セレクタ間の流入出では「複写」と「移動」に対応します。

 (4)CDの1セクタ割り込みと格納先
 CDリードにおける1セクタ割り込み(割り込み要因レジスタのCSCTフラグ)は、セクタが区画に格納(または消去)された時点で、1セクタごとに発生します。CDブロックは最後にリードしたセクタの格納先区画番号を記憶し、ホストはその値を取得できます。
 ECC回数を複数回に設定した場合、1セクタ割り込みは等間隔で発生するとは限りません。エラー訂正のため、複数のセクタが一度に格納されることがあります。

5.3.3 コネクタ

 (1)バッファ区画から絞りへの接続(セクタデータの複写/移動)
 区画出力コネクタを絞り入力コネクタに接続し、セクタデータを流すことで、セクタデータの複写/移動が可能です。接続・流入出の過程は、1回のコマンド発行で実行されます。

図5.6 セクタデータの複写/移動

 (2)OR条件によるセレクタの接続(多対1接続)
 複数の絞りの真出力コネクタを、同一の区画入力コネクタに接続することができます。これにより、複数の条件のどれかに一致したセクタが格納できます。(OR条件:論理和条件)

図5.7 OR条件によるセレクタの接続

 (3)コネクタの種類と接続先
表5.1 コネクタの種類と接続先
      入力
出力      
絞り入力
区画入力
デバイス入力
デバイス出力
×
×
真出力
×
×
偽出力
×
×
区画出力
×
○:接続可(1対1)…1個の出力コネクタだけを1個の入力コネクタに接続可
△:接続可(多対1)…複数の出力コネクタを同一の入力コネクタに接続可(OR条件)
×:接続不可

 1つのコマンドで接続(切断)の単独処理をするか、接続と流入出の過程をまとめた複合処理をするかは、各デバイスに依存します。
 CD-ROMとMPEGデコーダは単独処理、その他(ホスト、複写/移動など)は複合処理です。

5.3.4 セレクタに関する注意事項

 (1)ストリーム処理でのエラー
 ストリーム処理でエラーが発生するのは、一般に次のような操作がなされた場合です。(ただし、CD-ROMデバイスの場合はエラーになりません。)

 (2)セレクタの設定有効タイミング
 セレクタの設定は、セレクタ設定コマンドを発行して、割り込み要因レジスタのESELフラグが1になった時点で有効になります。
 CD再生中にセレクタ設定コマンドを発行した場合、設定が有効となるFADは、CDレポートで返されるFADに対して+1フレーム以内(FAD〜FAD+1)です。ホストはマージンを考慮し、目標FADの10セクタ以上前に設定コマンドを発行してください。

 (3)接続切り換え時のセクタデータ
 CDリード中などセクタデータが流れているときに、別のセレクタへ接続を切り換えても、データ落ちは発生しません。つまり接続の切り替えによる一時的な切断時には、データの流れが保証されます。
 完全に切り離されてしまうと流出データは消去されます。

 (4)バッファ区画へのアクセス全般(セクタ位置やセクタ範囲を指定するコマンド全般)
 区画内のデータ数を越える位置や範囲など、無効な指定をした場合、コマンドはWAITを返します。
 次の場合は常にWAITを返します。

 区画にアクセスする前には、必ずバッファ区画のセクタ数の取得(CDC_GetSctNum)を実行して、セクタ数が0でないことを確認してください。

 (5)バッファ区画からの消去放出
 区画からセクタを消去して放出する処理の場合、エラー等で処理が中止されても、最初に指定したセクタ範囲のデータは全て消去されます。(セクタデータの取り出し消去や、移動など)

5.4 セクタのデータ形式

 (1)基本形式
 セクタのデータ形式は、基本的にCD-ROM XAのセクタ形式に準拠します。

図5.8 CD-ROM XAのセクタ形式

 (2)サブヘッダとユーザデータ(2048バイト)の扱い

  1. モード2(ヘッダのモード部が02H)以外のサブヘッダは0として扱います。

  2. モード1(ヘッダのモード部が01H)の場合だけ、ヘッダ直後にユーザデータがあります。それ以外は、モード2フォーム1と同じ位置にユーザデータがあるものとみなします。

  3. CD-ROMデバイス以外からユーザデータを区画に格納する場合は、モード2フォーム1と同じに扱います。先頭の24バイトは0になり、ユーザデータの後ろは不定です。

 (3) 絶対時間のBCDからFADへの変換
 ヘッダの絶対時間のBCD(分:秒:フレーム)は、次の式でFADに変換します。

FAD = {(M1×10+M2)×60+(S1×10+S2)}×75+(F1×10+F2)
[M1 M2 S1 S2 F1 F2]:絶対時間のBCD(6ケタ、3バイト)

 絶対時間は、値の正当性をチェックせず、常に上記の式で変換されます。

5.5 CDブロックの初期化

 CDブロック内部の情報内容は、各操作によって表5.2のように初期化されます。

表5.2 CDブロックの初期化内容
      操作
情報内容      
トレイが開く
トレイが閉まる
ソフトリセット
TOC/セッション情報
初期化される
TOCリードする
ファイル情報
初期化される
初期化される
ホスト情報
初期化される
CDブロックのレジスタ
初期化される
」は変化なし

 ソフトリセットを指定せずにCDブロックの初期化(CDC_CdInit)を実行しても、上記の情報はいずれも初期化されません。

 (1)TOC/セッション情報
 ディスクに固有の情報であり、トレイが開いた時だけ初期化されます。
 初期化されると情報未入力状態になります。
 トレイが閉まると自動的にTOCリードし、情報が保持されます。

 (2)ファイル情報
 CDブロックファイルシステムが保持する、ISO9660ファイルの情報です。
 初期化されると情報未入力状態になります。
 ファイル情報の読み込みは、ホストがコマンドで指示します。

 (3)ホスト情報
 主にホストの設定情報とバッファデータです。
 初期化されると初期値(原則として省略値に等しい)が設定されます。

 (4)CDブロックのレジスタ
 CDブロックのハードウェアに関する情報です。

 (5)トレイの開閉
 トレイが開くと、割り込み要因レジスタのDCHGとEFLSフラグが1になります。そのタイミングは、<OPEN>状態になるよりも前です。
 トレイの開閉操作は、コマンド/手動のどちらの場合でも同様です。トレイのオープン(CDC_CdOpen)を実行した場合、実際にトレイが開かなくても初期化されます。


戻る進む
PROGRAMMER'S GUIDECD通信I/F(CDパート)
Copyright SEGA ENTERPRISES, LTD., 1997