前回(2006/7/19)の続きです。
Sync は同期信号です。
Sync は全てのデータに共通で、
その12バイトは次の通りです。
00h |
FFh |
FFh |
FFh |
FFh |
FFh |
FFh |
FFh |
FFh |
FFh |
FFh |
00h |
ヘッダは4バイトで、各表の Sector MSF Address と
Data mode を合わせた部分になります。
12 |
13 |
14 |
15 |
Minute (BCD) |
Second (BCD) |
Frame (BCD) |
Mode |
時間は、リードインを除き、CD全体のデータの基点からの経過時間で、BCD形式で表されます。
Mode は、正確には、0〜1 ビットでデータモードを表します。
2〜7 ビットにも意味はあるのですが、割愛します。0を入れておけば多分問題ありません。
Mode2 の Form1と2 にあるサブヘッダは、16〜19バイトと20〜23バイトとで同じ内容が2回続きます。
(繰り返されていることを確認することで、Mode2と認識します。)
16 (20) |
17 (21) |
18 (22) |
19 (23) |
File number |
Channel number |
Sub-mode |
Config information |
Sub-mode のビット5が0のときForm1、1のときForm2になります。
CRC (Cyclic Redundancy Check、巡回冗長検査) は誤りの検出に用いられます。
EDC (Error Detection Code、誤り検出符合) と紹介されている場合もありますが、
一般的なCRC?とは検査多項式が違なるためでしょう。
その検査多項式は、次のようになります。
P(x) = (x
16 + x
15 + x
2 +
1)×(x
16 + x
2 + x + 1)
P parity と Q parity は、ECC (Error Correction Code、誤り訂正符合) です。
リードソロモン積符号 (RSPC) というらしいです。
これらの検査訂正符号の詳しい内容は他の方に譲ります。 (勉強不足で申し訳ない。)