- 相關(guān)推薦
CD-ROM格式數據的軟解碼模塊設計
摘要:介紹應用于嵌入式系統的CD-ROM格式數據軟解碼模塊的設計方法;分析CD-ROM格式的數據結構,給出EDC及ECC解碼算法的軟件實(shí)現方法以及該模塊的軟件流程圖。引言
CD-ROM是目前應用非常廣泛的大容量、低成本的存儲設備。為了減小誤碼率,原始數據經(jīng)過(guò)格式化編碼和信道編碼后,才寫(xiě)入CD-ROM盤(pán)片中;在讀取時(shí),則需經(jīng)過(guò)信道解碼和格式化解碼后才能得到所需的原始數據。CD-ROM數據的讀寫(xiě)過(guò)程如圖1所示。
在一般的音像設備(如VCD機)和個(gè)人電腦中,CD-ROM數據的解碼過(guò)程是由專(zhuān)用解碼芯片來(lái)完成的;而CD-ROM不但可以應用在音像設備和個(gè)人電腦中,還可以應用到需要讀取大量數據的嵌入式系統中。比如在車(chē)輛導般系統中,就可使用CD-ROM存放地理信息數據。嵌入式系統中的CD-ROM數據的解碼方法比較靈活,可以使用專(zhuān)用解碼芯片(暫稱(chēng)硬解碼),也可以通過(guò)處理器的解碼程序來(lái)完成(軟解碼)。相對于硬解碼來(lái)說(shuō),軟解碼有其獨特的優(yōu)點(diǎn)所在。因為它只需增加一個(gè)解碼程序模塊,就省掉了專(zhuān)用解碼芯片電路,簡(jiǎn)化了系統的硬件電路,降低了系統的成本。如圖1所示,CD-ROM數據經(jīng)過(guò)信道解碼后,得到的是以扇區結構組織的CD-ROM格式數據,還需進(jìn)行CD-ROM格式化解碼才能得到最終的用戶(hù)數據。本文介紹的就是嵌入式系統中CD-ROM格式數據軟解碼模塊的設計。
1 CD-ROM格式數據的扇區結構
CD-ROM數據是以扇區為基本單元進(jìn)行編碼處理的。經(jīng)過(guò)信道解碼處理后得到的扇區對于不同的數據來(lái)源,其結構是不同的。對于CD-DA(雙聲道的CD音頻)數據,由于沒(méi)有經(jīng)過(guò)格式化編碼,可以直接得到用戶(hù)數據;而CD-ROM數據和VCD數據都經(jīng)過(guò)CD-ROM格式化編碼成扇區結構,必須經(jīng)CD-ROM格式化解碼才能得到用戶(hù)數據。
CD-ROM扇區有兩種模式:模式1和模式2。其扇區結構如圖2所示。
由圖2可知,一個(gè)扇區的CD-ROM格式數據總共有2352字節。其中,兩種扇區模式都有12字節的同步信息和4字節的時(shí)間信息(頭信息)。如果是模式1,還有4字節的循環(huán)冗檢錯碼,8字節空字節,276字節的糾錯碼,其中包含172字節的P校驗字和104字節的Q校驗字,用戶(hù)數據只有2048字節。如果是模式2,除了同步信息和頭信息外,余下的2336字節全部都是用戶(hù)數據。
實(shí)際中,由于盤(pán)的制作材料的性能、盤(pán)制造生產(chǎn)技術(shù)水平的限制、驅動(dòng)器的性能以及使用不當等諸多原因,從盤(pán)上讀出的數據不可能完全正確。據統計,一片未使用過(guò)的只讀光盤(pán),原始誤碼率約為3×10 -4,沾有指紋的盤(pán)約為6×10 -4,有傷痕的盤(pán)約為5×10 -3。針對這種情況,光盤(pán)存儲系統采用了功能強大的錯誤檢測和糾正措施:CIRC、EDC、ECC。數據經(jīng)信道解碼后,由于采用CIRC糾錯處理,誤碼率由10 -4~10 -5降到10 -9以下。對于音頻和圖像數據來(lái)說(shuō),這樣的誤碼率已經(jīng)足夠。但要用到計算機文件數據,必須要求誤碼率為10 -12以下,因此必須采用二次糾錯處理。通過(guò)EDC和ECC校驗,可以達到這個(gè)要求。
所以,模式1主要用于存儲對錯誤非常敏感的數據,如計算機程序代碼等數據;而模式2則主要用于存儲對錯誤不敏感的數據,如圖像、音響等類(lèi)型的數據。
在模式2的基礎上,CD-ROM/XA格式又分為兩種形式(FORM):形式1和形式2。其扇區結構如圖3所示。我們常用的VCD就是采用CD-ROM/XA的形式2格式。
由上可知,除了扇區模式2可以直接得到2336字節的用戶(hù)數據外,CD-ROM格式解碼還必須進(jìn)行EDC檢錯和ECC糾錯處理。下面分別介紹EDC檢錯和ECC糾錯的原理和解碼算法。
2 CD-ROM扇區中的EDC檢錯原理及算法
CD-ROM扇區采用32位CRC(循環(huán)冗余校驗碼)檢錯碼,其生成多項式為
P(X)=(X 16 X 15 X 2 1)×(X 16 X 2 X 1)
對應的碼字是0x18001801B。計算CRC碼時(shí)用的數據塊是從扇區的開(kāi)頭到用戶(hù)數據區結束為止的數據字節。即將字節0~2063共2064字節的數據所對應的長(cháng)多項式整除P(X),得到32位的余式,放在2064~2067字節位置。這2068字節的數據對應的多項式是能夠被生成多項式P(X)整除的。如果不能整除,則表明數據有錯。所以,我們的解碼過(guò)程就將2068字節的數據組成的多項式來(lái)整除生成多項式,如果余式為0,則表明數據正確,否則數據有錯。
但我們不可能直接進(jìn)行長(cháng)除法操作,因為計算機不可能將一個(gè)2068×8位的極其長(cháng)的二進(jìn)制數直接拿來(lái)做長(cháng)除法。根據長(cháng)除法的規律,以字節(8比特)為單位進(jìn)行操作,每次除法將上一字節的所得的余數與本字節組合成新的數進(jìn)行除法運算。除式是33位的,因此,每個(gè)字節的除法須把這個(gè)字節的數左移24位,跟上次的余式組合成一個(gè)32位的二進(jìn)制數,來(lái)整除除式。主要實(shí)現現代碼如下:
for(i=0;i
【CD-ROM格式數據的軟解碼模塊設計】相關(guān)文章:
基于Tvp5150的低功耗視頻解碼模塊11-22
DMB-TH幀體數據處理模塊的研究設計11-22
數據建模論文格式06-29
VB5.0中數據庫查詢(xún)模塊的實(shí)現03-03
高速PCI總線(xiàn)接口模塊設計03-08
軟巖回采巷道支護設計03-19