エピ27 CDを読んでみました。
***
CDを読んでみました。
顕微鏡でピットとランドを読むことを考えていたのですけど、大変そうなんです。単にピットとランドの様子を観察するだけなら簡単なのですけれど。
なので少し妥協して、CDプレーヤーで再生中の信号をオシロで読み取ることにしました。
***
音楽データを読み出して、更にはCIRCの誤り訂正処理を検証するには、フレームを連続的に読み出すことが必要です。
CIRCのクロスインターリーブで 108 フレームの遅延がありますし、98 フレームで1セクタ(1/75秒)になることを考慮すると、200 フレーム位は確保したいです。
すると、(1.2/4321800)*588*200 = 32.6 ミリは欲しいことになります。1枚で 50μm x 50μm の範囲を撮影できると仮定すると、何枚の写真になるか。
32/0.0050 = 640? えっ?
それから、32 ミリの長さだと直線とは言えなくて。XYステージを制御するか、CDをゆっくりと回転させながら撮影することになりそう。お金と時間があれば出来なくは無いことだけど。
どうしよう?
*
*
*
CDを回転させてピットとランドを読むなら、CDプレーヤーを利用するのが簡単よね?
***
CDプレーヤーの蓋を外して見てみると、光ピックアップの出力をモニタできる端子が基板に付いていました。ラッキー
これにオシロのプローブをあてるだけです。すると、...
良くあるアイパターンが表示されました。横軸は時間で単位はナノ秒(ns)です。縦軸は信号の電圧で単位はミリボルト(mV)です。
3Tの 694ns や4Tの 925ns の時間で、600mV のラインを通過しています。3Tと4Tとの間には隙間があって、分離されています。これがアイが開いているという状態。
それから3Tは正確に 694ns ではなくて、前後に揺れています。このゆれ幅がジッター。
*
8T(1851ns)とか無いのが気になります?
***
光ピックアップの信号から3T〜11Tの判定ができるかを確認しましょう。
先のアイパターンの図で 600mV を越えた後の波形をカットした図です。横軸は時間で、単位は[T]にしました。縦軸は電圧です。
3T〜7Tと10T、11Tは前後に隙間があって大丈夫そうです。8Tと9Tは無いので分からないですが、出現しないなら問題ないです。
*
判定方法は簡易に。600mV を通過した時間を記録して、前の通過時間と今の通過時間の差を求めて、これが隙間の中央より前か後かで判定することにしましょう。
そして、3Tと判定したなら "100" を、4Tなら "1000" をといった具合にチャネルビットを出力します。
11T+11Tが見つかるかな?
*
*
*
見つかりました。同期信号が。沢山見つかりました。最初に出てきたときには、キター!と嬉しくなりましたが、次々と出てきてそれはもうヤバイ感じです。
100000000001000000000010 010 ... 同期信号
01001000100000 000 ______________ ___ ... サブコード
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 100 ... 音楽データ(12 バイト分)
00100000010010 000 00100000010010 010
00100000010010 000 00100000010010 010 ... 訂正符号(4バイト分)
01001000100000 000 01001000100000 100
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 000
01001000100000 100 01001000100000 000 ... 音楽データ(12 バイト分)
00100000010010 000 00100000010010 000
00100000010010 000 00100000010010 000 ... 訂正符号(4バイト分)
100000000001000000000010 010 ... 次の同期信号
(以下、略)
次の同期信号までのチャネルビットは 588T あって、1フレーム分になっています。良い感じ。
チャネルビットの 01001000100000 はEFM復調すると 0x00 です。サブコードとかは 0x00 ですね。それと 00100000010010 は 0xFF です。訂正符号は 0xFF のようです。
これらを変換すると次にようになります。マージンビットは削ります(後述しますからね)。
100000000001000000000010 ... 同期信号
00 __ __ __ __ __ __ __ __ __ __ __ ... サブコード(1バイト)
00 00 00 00 00 00 00 00 00 00 00 00 ... 音楽データ(12 バイト)
FF FF FF FF __ __ __ __ __ __ __ __ ... 訂正符号C2(4バイト)
00 00 00 00 00 00 00 00 00 00 00 00 ... 音楽データ(12 バイト)
FF FF FF FF __ __ __ __ __ __ __ __ ... 訂正符号C1(4バイト)
100000000001000000000010 ... 次の同期信号
音楽データは全て 0x00 で、訂正符号は全て 0xFF。...、これは無音状態ですね。
実は1曲目の最初の1秒間は無音だったので、ここを狙って捕捉しました。確信犯です。はい。エピ4で確認してました。
無音状態だとサブコードが S0, S1, 0x00, 0x40 で変化する以外は、同じデータになって変化に乏しくて、だから8Tと9Tが出現しなかったのですね。多分。
***
誤り訂正処理では、...まず訂正符号を反転します。0xFF なので 0x00 になります。
そして、クロスインターリーブにより各フレームに分散した音楽データと訂正符号を集めて、重み付けの4パターンと積和します。
すると0になります! だって、0との掛け算ですから0で、0を何個足しても0は0。
つまり、エラー無しと判定できます。
C1は2フレームから集めるだけだけど、C2は 108 フレームの範囲に散らばっているので、集めるのに少し手間がかかりますが、エラー無しと判定できました。
***
CDを読めたし。エラー無しで良かったです。
でもエラーが発生した場合のことも気になりますね。
***
間違いの指摘とか疑問とか、ご意見・ご感想とかありましたら、どうぞ感想欄に!
***
2025.5.26 推敲。
2025.5.28 微推敲。
2025.5.31 微推敲。
2025.6.19 微推敲。
2025.8.11 推敲。




