資料參考:http://www.ee.washington.edu/conselec/CE/kuhn/cdaudio2/95x7.htm
用CD 形式的數據儲存並不是一件簡單的事情。 通常, 一般人想像在電腦記憶的零與一很直接的被傳遞到CD上面的的凹塊與凸塊上。 令人遺憾,它不那麼容易。
從輸入數據開始接受一系列編碼的操作。 這些編碼的操作產生的parity bit去做錯誤偵測和改正。 數據也受這些插入處理的影響(表示在這個碟片上的臨近的數據不是來自進來的文件的臨近的數據)。
另外,EFM編碼改變了數據的物理形態使得消除臨近的"1"的可能性。這被做,是因為坑的邊緣 (並非坑本身) 在數據流裡描述為 l 。
A. 簡單的錯誤偵測和改正代碼
錯誤偵測和改正碼是任何數字化的存儲系統的操作的根本。 有數千種這樣的錯誤更正碼。 這些更正碼通常依賴使用另外的資料(通常叫parity bits)來實現錯誤察覺和改正訊息。
在簡單的二進制的奇偶校正裡, 一個parity bit是描述在詳細的數據流內的"1 "的總數是積數(1)或者偶數(0)。 (模數二的加法)。
例如,你想在下面的資料裡面放入parity bit。
1101 0000
"1 s"的總數是積數的,因此parity bit將是1。 資料可能被寫為
1101 0000 1
這裡最後數字就是parity bit。
即使你用簡單的binary parity checks也可以能變的很複雜,如果你多用了一個parity bit,例如,你可以用兩個parity bits,一個是用於前四個bits,另一個用於後四個bits
如下
1 1 0 1 0 0 0 0 P1 P2
x x x x 1
x x x x 0
如果使用足夠的parity bits, 錯誤能不僅被發現,也能被改正。 例如,考慮如果你使用4 parity bits,發生什麼。 第一個在前4 個bits上, 第2 個在5~8 個bits上,第3 個在1,2,5,6 bits,第4 個在2,3,6,7 bits。
1 1 0 1 0 0 0 0 P1 P2 P3 P4
x x x x 1
x x x x 0
x x x x 0
x x x x 1
現在,假設最後一個bit有錯誤。
1 2 3 4 5 6 7 8 P1 P2 P3 P4
1 1 0 1 0 0 0 0 1 0 0 1
x x x x 1
x x x x 1
x x x x 0
x x x x 1
P1,P3,P4與原本傳輸來的parity bit相同,而P2與原本不同,錯誤必定在第八個bit
不過令人遺憾地,在CD播放器方面使用大多數的錯誤偵測和改正演算法沒有二進製的檢驗碼在上面討論的那麼簡單。 雖然這些代碼的概述將被提出,但是代碼的詳細的分析不屬於這門課程的範圍。(譯者註:可以參考渦輪碼的相關課題) (感興趣的人可以參考W. Peterson, Error-Correcting Codes, MIT Press)