摘 要: 基于FPGA的全自動多功能數(shù)字拷貝機(jī)的設(shè)計與實現(xiàn),,提出了一種切實可行的數(shù)字拷貝機(jī)的FPGA實現(xiàn)方法,。
關(guān)鍵詞: 數(shù)字拷貝機(jī) FPGA ATA/IDE DMA 數(shù)據(jù)傳輸
?
光盤拷貝機(jī)通常由一臺CD-ROM驅(qū)動器、數(shù)臺CD-R或CD-RW刻錄機(jī)和一個拷貝控制器組成,??截惪刂破魇紫葟腃D-ROM驅(qū)動器中讀出源盤數(shù)據(jù),然后將數(shù)據(jù)流分多路" title="多路">多路傳輸?shù)礁鱾€刻錄機(jī),,控制所有的刻錄機(jī)同步刻錄CD-R光盤,。目前市場上的光盤拷貝機(jī)主要有聯(lián)機(jī)拷貝機(jī)、脫機(jī)拷貝機(jī)和自動拷貝機(jī)三種類型,。
(1)聯(lián)機(jī)拷貝機(jī)
聯(lián)機(jī)光盤拷貝機(jī)由一臺通用PC機(jī)和一個裝有SCSI接口刻錄機(jī)的塔式機(jī)箱組成,,塔箱與PC機(jī)之間用SCSI電纜相連。聯(lián)機(jī)拷貝機(jī)使用PC機(jī)作為光盤拷貝機(jī)控制器,,并利用專門的CD-R拷貝軟件將刻錄數(shù)據(jù)通過SCSI母線傳輸給各個刻錄機(jī),。由于聯(lián)機(jī)拷貝機(jī)采用軟件進(jìn)行數(shù)據(jù)分配和多路傳輸,所以數(shù)據(jù)傳輸速度較低,。為了避免產(chǎn)生緩存器欠載運行(Buffer Underrun)錯誤,,一般將SCSI接口上連接的刻錄機(jī)數(shù)量限制在4臺以內(nèi),。
(2)脫機(jī)拷貝機(jī)
脫機(jī)拷貝機(jī)是所有CD-R光盤拷貝機(jī)中使用最簡單的一種,也是使用最多的一種,。脫機(jī)拷貝機(jī)使用專用的硬件控制器進(jìn)行源盤讀取和多路數(shù)據(jù)傳輸,。因此數(shù)據(jù)傳輸?shù)乃俣群芸欤灰桩a(chǎn)生緩存器欠載運行錯誤,,復(fù)制CD-R光盤的成功率高于聯(lián)機(jī)拷貝機(jī),。
(3)自動拷貝機(jī)
自動拷貝機(jī)是在脫機(jī)拷貝機(jī)的基礎(chǔ)上又增加了一套機(jī)械手裝置,用機(jī)械手自動將CD-R空盤放入刻錄機(jī),。完成拷貝后,,機(jī)械手將已刻錄的CD-R光盤從刻錄機(jī)中取出,再放入新的CD-R空盤,。有些自動拷貝機(jī)帶有光盤打印機(jī),,可直接在CD-R光盤背面打印用戶設(shè)計的盤標(biāo)。
??? 本設(shè)計應(yīng)用Xilinx(R) SpartanTM-3 FPGA,、CoolRunnerTM II CPLD和微處理器來開發(fā)ATA/IDE接口之間用于數(shù)據(jù)存儲的脫機(jī)數(shù)字拷貝機(jī)。
1 數(shù)字拷貝機(jī)系統(tǒng)硬件部分
1.1 系統(tǒng)組成和工作原理
數(shù)字拷貝機(jī)系統(tǒng)由FPGA,、CPLD、4MB Flash、4MBDRAM,、256MB SDRAM,、微型處理器和操控按鈕、液晶顯示屏,、IDE/ATA接口等組成,。數(shù)字拷貝機(jī)系統(tǒng)框圖如圖1所示。其中FPGA和MPU組成控制單元,,F(xiàn)lash為BOOT單元,,SDRAM和DRAM為存儲交換單元,CPLD為加密單元,,按鈕和顯示屏為人機(jī)接口單元,。
系統(tǒng)通過各模塊之間的相互協(xié)作,完成數(shù)據(jù)的高速傳輸,、自動拷貝功能,。
(1)系統(tǒng)硬件連接好之后,系統(tǒng)上電" title="上電">上電(連接5V直流電源),;
(2)系統(tǒng)自檢,,CPU調(diào)用BIOS中自檢程序檢查各端口的連接狀態(tài),并反饋給顯示器告知用戶,。調(diào)用初始化程序,,加載FPGA核,;
(3)液晶顯示屏顯示操作菜單,通過鍵盤操作可以方便地實現(xiàn)自檢,、拷貝,、設(shè)置等功能。將液晶顯示器的數(shù)據(jù)線與CPLD相連,,充分應(yīng)用CPLD在系統(tǒng)中的加密程序,,其目的是對顯示器所顯示的數(shù)據(jù)加密,從而在實際生產(chǎn)中保護(hù)知識產(chǎn)權(quán)和名譽(yù)權(quán),;
(4)系統(tǒng)中CPLD器件的主要作用是對FPGA核加密,。當(dāng)系統(tǒng)啟動時,原先存儲在Flash中的FPGA核經(jīng)過CPLD的加密程序再加載到FPGA中,,達(dá)到保護(hù)IP的目的,;
(5)IP下載到FPGA后,在拷貝狀態(tài)時,,I/O" title="I/O">I/O口向DMAC申請數(shù)據(jù)傳輸?shù)腄MA請求,,DMAC經(jīng)CPU同意后獲得總線控制權(quán),并通知I/O,,準(zhǔn)備數(shù)據(jù)傳輸,。DMAC將從I/O接收到的數(shù)據(jù)放到SDRAM存儲器暫時存儲;輸出數(shù)據(jù)時,,DMAC從SDRAM中取出數(shù)據(jù),,放到DMAC的緩沖器,再發(fā)送到輸出I/O口,,實現(xiàn)數(shù)據(jù)拷貝,。
系統(tǒng)中DRAM的主要作用是擴(kuò)展CPU內(nèi)存。例如液晶顯示和數(shù)據(jù)交換等過程中的一些數(shù)據(jù)和資料需要在這里調(diào)用和存放,,以加快系統(tǒng)速度,。
1.2 系統(tǒng)組成模塊分析
整個電路可劃分成二個功能模塊。
(1)非數(shù)據(jù)拷貝期的CPU控制模塊" title="控制模塊">控制模塊:用于系統(tǒng)上電后,,數(shù)據(jù)拷貝之前的系統(tǒng)初始化,、系統(tǒng)配置檢測、菜單顯示和操作以及數(shù)據(jù)拷貝后數(shù)據(jù)的校驗,、系統(tǒng)安全退出等,。
(2)數(shù)據(jù)拷貝期的DMA數(shù)據(jù)傳輸模塊:用于數(shù)據(jù)拷貝期FPGA中內(nèi)構(gòu)的DMAC與CPU的通信、控制數(shù)據(jù)與內(nèi)存之間的傳輸及FPGA與外設(shè)IDE/ATA接口之間的數(shù)據(jù)傳輸?shù)取?/P>
1.2.1 非數(shù)據(jù)拷貝期的CPU控制模塊
非數(shù)據(jù)拷貝期的CPU控制模塊原理如圖2所示,。
此功能模塊中的Flash是一個重要的環(huán)節(jié),,主要起B(yǎng)OOT UP的作用。4MB的Flash與CPU,、FPGA,、DRAM和CPLD均有聯(lián)系,,而且Flash中存儲了很多與系統(tǒng)有重要關(guān)系的數(shù)據(jù),相當(dāng)于BIOS,。其中有用于整個系統(tǒng)運行的主程序,,有用于數(shù)據(jù)DMA模式傳輸?shù)腇PGA核(IP),還有一些令系統(tǒng)初始化的程序和自檢程序等,。當(dāng)系統(tǒng)上電時,,在CPU的控制下啟動整個系統(tǒng),F(xiàn)lash將其中的IP核經(jīng)過CPLD加密,,下載到FPGA中,,為拷貝做好準(zhǔn)備。同時,,鍵盤的接口連接至CPU,,由CPU控制按下按鍵后的操作;液晶顯示器的數(shù)據(jù)線與CPLD相連,,CPLD將要顯示的某些信息作為密鑰進(jìn)行加密,,防止他人盜用。
1.2.2 數(shù)據(jù)拷貝期的DMA數(shù)據(jù)傳輸模塊
在這個模塊中,,主要由FPGA構(gòu)成的一個DMA控制器控制IDE/ATA設(shè)備與拷貝機(jī)內(nèi)存之間的數(shù)據(jù)交換,。選用的FPGA為SpartanTM-3E系列器件,它是開創(chuàng)性的低成本Spartan系列的第7類器件,,也是采用先進(jìn)的90nm工藝技術(shù)生產(chǎn)的第三類Xilinx器件系列。 Spartan-3E FPGA有高達(dá)160萬的系統(tǒng)門,、376個I/O,、1.8MB的塊RAM,并且具有業(yè)界單位邏輯成本最低的通用平臺FPGA架構(gòu),。FPGA所實現(xiàn)DMAC控制器的內(nèi)部邏輯結(jié)構(gòu)如圖3所示,。
DMA控制器提供地址碼以指明I/O設(shè)備變換數(shù)據(jù)的存儲器起始地址;提供讀/寫脈沖,,以規(guī)定數(shù)據(jù)在存儲器與I/O設(shè)備之間的傳輸方向,;修改內(nèi)存地址指針并計算傳送的字節(jié)數(shù),以判斷何時傳送結(jié)束,。具體信號時序如下:
(1)I/O設(shè)備向DMAC發(fā)出請求信號DRQ,;
(2)DMAC向CPU發(fā)出總線請求信號HRQ;
(3)CPU向DMAC發(fā)出總線響應(yīng)信號HLDA,,此時,,DMAC獲得總線控制權(quán);
(4)DMAC向I/O設(shè)備發(fā)出DMA響應(yīng)信號DACK,,表示DMAC已控制了總線,,允許I/O設(shè)備與存儲器交換數(shù)據(jù),;
(5)DMAC按地址寄存器的內(nèi)容發(fā)出16位地址信號作為存儲地址的選擇,同時地址寄存器的內(nèi)容加1(或減1,,由編程定),;
(6)DMAC發(fā)出IORC信號到I/O設(shè)備,將I/O設(shè)備數(shù)據(jù)讀入總線,,同時發(fā)出MEMW信號,,將數(shù)據(jù)總線的數(shù)據(jù)寫入由地址總線選中的內(nèi)存單元;
(7)字節(jié)計數(shù)器減1,;
(8)重復(fù)(5),、(6)、(7)步驟,,直至字節(jié)計數(shù)器為0,,數(shù)據(jù)塊的DMA方式傳送工作完成。這時,,DMAC的HRQ降為低電平(HRO=0),,總線控制權(quán)交給CPU。
數(shù)據(jù)拷貝期的DMA數(shù)據(jù)傳輸模塊原理如圖4所示,。
?
?
2 數(shù)字拷貝機(jī)系統(tǒng)軟件流程
非數(shù)據(jù)拷貝期系統(tǒng)主程序流程如圖5所示,。數(shù)據(jù)拷貝期FPGA內(nèi)部DMA控制器的程序流程如圖6所示??截悪C(jī)數(shù)據(jù)輸入輸出IDE端口的程序流程如圖7所示,。
檢查CDROM是否就緒程序:
void TestUnitReady(void)
{
unsigned char TempCyc;
unsigned char TempS,;
for(TempCyc=0,;TempCyc<12;TempCyc++)
PacketTemp[TempCyc]=0x00,;
do
{
SendPacket(1),;//若CD-ROM不在就緒狀態(tài)則跳過DRQ檢測
TempS=CDStatusREG& 0x89;//通過CDStatusREG & 0x89判斷ERR,、DRQ,、BSY中是否有1?
}
while(TempS),;
//PacketCommand失敗時認(rèn)為CD-ROM未就緒,,再次發(fā)送Test Unit Ready
Command
}
系統(tǒng)經(jīng)過了ISE開發(fā)環(huán)境的設(shè)計、仿真,、定時分析,,其目的是測試設(shè)計的邏輯功能和延時特性,仿真包括功能仿真和時序仿真,,ISE6.1中能夠提供和完成這些功能,。仿真結(jié)果符合實際需要,。
(1)系統(tǒng)能實現(xiàn)拷貝、測試,、對比校對,。
(2)在拷貝之前的菜單可以選擇燒錄速率(CD to CD、DVD to DVD)等,。
(3)系統(tǒng)可進(jìn)行人性化設(shè)定,,包括語言設(shè)定、CD寫模式設(shè)定,、拷貝模式設(shè)定,、蜂鳴器及空閑狀態(tài)屏幕保護(hù)設(shè)定等。
(4)常用工具設(shè)定,,包括光盤信息,、預(yù)掃描、系統(tǒng)信息,、設(shè)備信息和更新固件等,。
本系統(tǒng)符合當(dāng)前技術(shù)的主流,有著廣闊的技術(shù)前景,。
參考文獻(xiàn)
1 何 寧,,熊劍平,蔣昌龍等.基于FPGA的實時持續(xù)數(shù)據(jù)記錄系統(tǒng)設(shè)計[J].微電子學(xué)與計算機(jī),,2003,;(1)
2 黃志偉,王 彥,,陳 瓊等.FPGA系統(tǒng)設(shè)計與實踐[M].北京:電子工業(yè)" title="電子工業(yè)">電子工業(yè)出版社,,2005
3 EDA先鋒工作室.FPGA/CPLD設(shè)計工具——Xilinx ISE使用詳解[M].北京:人民郵電出版社,2005
4 任曉東,,文 博.CPLD/FPGA高級應(yīng)用開發(fā)指南[M].北京:電子工業(yè)出版社,2003