基于IDE電纜、驅動器和開關電源實現(xiàn)光盤復制機系統(tǒng)的設計
自1980年Philips和Sony公司推出的數(shù)字聲音標準的CD(Compact Disc)以來,CD就以其信息存儲量大、存儲時間長和容易攜帶等優(yōu)點,受到人們的青睞,并被廣泛應用于娛樂、發(fā)行、信息存儲和備份等方面。隨著近年來可擦寫光盤驅動器CD-R(CD-Record-able)的出現(xiàn)和廉價可寫光盤CD-WO(CD-Write Once)的漸漸普及,光盤的復制、刻錄變得容易起來。除了使用相當專用的光盤復制設備外,更多的辦法是借助于個人計算機或只有VIDEO的光盤錄像機進行復制,但其成本相對較高,復制過程也比較麻煩。所以自主型(獨立完成復制,不需計算機)光盤復制機應運而生,采用專門SCSI接口芯片的1對1復制機出現(xiàn)了。但由于SCSI接口的光盤驅動器額外成本較IDE接口的高,并且市場上大量使用的是IDE接口的光驅,因此,設計低成本的基于IDE接口的自主型光盤制機是對光盤復制市場的極大補充。
1、 自主型光盤復制機系統(tǒng)的主要功能指標和應用
主要功能指標為:
(1)一對一復制,按一鍵完成4倍速的仿真或刻錄功能;
(2)空間、時間和硬件資源最節(jié)省;
(3)系統(tǒng)增加IDE與PARALLEL口的轉換后,可作為PC機的外置式光盤驅動器;
(4)具有狀態(tài)顯示和自動完成、退出提示等;
(5)支持大多數(shù)工業(yè)標準的CD格式,如紅皮書、黃皮書、白皮書和綠皮書標準(AUDIO CD、VIDEO CD、DADA CD、MIXED MODE CD、PHOTO CD、GAME CD)等。
本系統(tǒng)可應用于學校、企事業(yè)機關和個人的光盤制作、多媒體演示、小量的分發(fā)、信息存儲和備份等。
2、 系統(tǒng)組成
系統(tǒng)組成如圖1所示。整個系統(tǒng)由1塊控制板、一條IDE電纜、一臺CD-R驅動器、一臺CD-ROM驅動器、開關電源以及系統(tǒng)界面構成。其中,控制板是整個光盤復制系統(tǒng)的核心,它控制著從CD-ROM內讀取原始數(shù)據(jù),然后寫入到CD-R中的空白光盤上。界面上只有狀態(tài)燈和一個選擇按鈕,按鈕經控制板讀取后,決定了寫入的模式。
3、核心硬件設計
(1)整個設計圍繞著對光驅的讀與寫操作、數(shù)據(jù)傳輸(分為PIO模式和DMA模式)、PID傳輸以及IDE設備與主機的握手通訊(如數(shù)據(jù)包、命令、任務、狀態(tài)等的發(fā)送和接收)進行。DMA是IDE的數(shù)據(jù)總線和主機的存儲器數(shù)據(jù)線SRAM間的直接傳輸。在IDE設備與主機通訊的基礎,ATAPI光盤讀寫命令及其它相關命令得以實現(xiàn),在這里設計的光盤復制機(兩個ATAPI)正是基于IDE設備的接口?! ≈鳈C與IDE接口的通訊通過IDE總線的CS0-、CS1-、DA2、DA1、DA0、DIOR-、DIOW-等信號來進行,相關功能見表1。
ATAPI的命令如TEST UNIT READY、MODE SENSE、READ TRACK INFORMATION、READ、WRITE等都是通過以上接口進行發(fā)送的,接收可以是PIO模式或DMA模式。
(2)光盤的讀寫速率是按75block(frame)/s來計算的。一個block等于2352個字節(jié),但用戶數(shù)據(jù)隨著CD格式的不同而不同,1倍速按每秒75個block讀寫,2倍速按每秒150個block讀寫。然而,4倍速復制并不是要求主機一次讀取300(4×75)個block大小的數(shù)據(jù)量,而是通過目標光盤刻錄速度的設置來完成的。通常有20~30個block(大約70~80K的數(shù)據(jù)量)讀寫速度就夠了,太小容易死機,太多則加大了對機存儲空間SRAM的要求。在這里我們選擇了64K×16bit的SRAM。
(3)支持Enhance IDE的設備都具有快速DMA功能。在光盤復制時,實現(xiàn)大量數(shù)據(jù)的快速讀寫DMA是必需的。在DMA外部工作頻率為12.5MHz時,一般能反動派到1.5M/s的傳輸能力,例如INTEL 82C37A。
(4)主機UP(CPU)選擇性價比較好的8032系列單片機,可支持40MHz的外部工作頻率。為了加強對知識的保護,也為了實現(xiàn)8位微機與16位SRAM以及大量外圍芯片的譯碼,選用了CPLD來增加其集成度,其設計采用原理圖+VHDL方式。
硬件設計簡圖如圖2所示。
4 、軟件實現(xiàn)
參考CD-WO規(guī)范,CD-WO的寫入方式主要有兩種:Track at once(軌道)和Disc/Session at once(分區(qū))。這和光盤的信息存放格式分類有極大的關系。在國內,多分區(qū)的光盤MULT-SESSION CD如MIXED CD、CD-I等較為少見,它們是數(shù)據(jù)區(qū)和音頻區(qū)的結合,一般第一個分區(qū)與其它分區(qū)不同。某些光盤用Track at once能夠成功地刻錄,而用Disc at once方式則失敗;反之亦然。
通常,Disc at once較為普遍,若寫入CUESheet則整個光盤的刻錄軌跡位置就固定了。而在實踐中發(fā)現(xiàn),對于MIXED-CD用Track at once更容易成功。圖3、圖4是兩種寫入方式的簡單過程。
實際的軟件編程要比這些復雜。對于經常調用的過程,通常都用匯編語言編寫,例如:從IDE接口寄存器中的讀寫(Read-Data-Reg,Write-Data-Reg,Read-Status-Reg,Write-CMD-pkt,Write-Task-Ide)等。而針對ATAPI的大多命令,都用C51編寫,例如:mode-select(),read-10(ad),write-10(ad),tray-out(),send-cue-sheet()等。
部分執(zhí)行程序的示例如下:
IDE接口地址定義部分 ;;IDE Interface Address
例如:IDE_STATUS EQU 81F7H
……
_Read_Status_Reg: ;;讀IDE驅動器設備狀態(tài)子程序
lcall _Drive_Select;選擇光驅
……
mov p1,#IDE_Lmode
mov DPTR,#IDE_STATUS
movx @DPTR,a ;DIOR valid
……
mov p1,#Sram64_Lmode
movx A,@DPTR
mov R7,A ;返回狀態(tài)到r7寄存器
ret
Write_Cmd_Pkt: nop ;寫6字命令包子程序
;寫6字事先已存入內空間
cmd_buffer
mov R0,#cmd_buffer
mov R1,#06H ;//6 words to write
send_pkt:
mov A,@R0
mov pl,#Sram64_Lmode
mov DPTR,#IDE_DATA_REG
movx @DPTR,A ;//write low byte
inc R0
;//類似的寫高字節(jié)到16位SRAM
……
;再將16bit從16位SRAM中一次寫入IDE設備
mov pl,#IDE_WMode ;select IDE device
mov DPTR,#IDE_DATA_REG
;//16bit packet command write
movx a,@DPTR ;DIOW valid
……
inc R0
djnz R1,send_pkt
ret
void send_cue_sh(USI par_len)
{//ATAPI CD-WO Command,10字節(jié) //命令字節(jié)初始化設備
……
do {
status=Read_Status_Reg(drv);
}while(status&0x80); //不忙時才可寫入
nonDMA_xfer_data 1(); //non DMA(PIO模式)
P1=SRAM32;
status=Read_Status_Reg(drv); //讀取返回的狀態(tài)
if(status&0x01) {
rqsense(); //ATAPI Command
}
}/*End of send_cue_sh */
基于非IDE專用接口芯片的自主型光盤復制機是對目前光盤復制市場的有益補充。其設計要求有較高的單片機、DMA傳輸以及CPLD等硬件知識和對CD、CDWO格式以及對ATAPI整個命令的了解。