《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 數(shù)字拷貝機的FPGA設計

數(shù)字拷貝機的FPGA設計

2008-04-01
作者:劉 佳,仇潤鶴

  摘 要: 基于FPGA的全自動多功能數(shù)字拷貝機的設計與實現(xiàn),提出了一種切實可行的數(shù)字拷貝機的FPGA實現(xiàn)方法。
  關(guān)鍵詞: 數(shù)字拷貝機 FPGA ATA/IDE DMA 數(shù)據(jù)傳輸

?

  光盤拷貝機通常由一臺CD-ROM驅(qū)動器、數(shù)臺CD-R或CD-RW刻錄機和一個拷貝控制器組成??截惪刂破魇紫葟腃D-ROM驅(qū)動器中讀出源盤數(shù)據(jù),然后將數(shù)據(jù)流分多路" title="多路">多路傳輸?shù)礁鱾€刻錄機,控制所有的刻錄機同步刻錄CD-R光盤。目前市場上的光盤拷貝機主要有聯(lián)機拷貝機、脫機拷貝機和自動拷貝機三種類型。
  (1)聯(lián)機拷貝機
  聯(lián)機光盤拷貝機由一臺通用PC機和一個裝有SCSI接口刻錄機的塔式機箱組成,塔箱與PC機之間用SCSI電纜相連。聯(lián)機拷貝機使用PC機作為光盤拷貝機控制器,并利用專門的CD-R拷貝軟件將刻錄數(shù)據(jù)通過SCSI母線傳輸給各個刻錄機。由于聯(lián)機拷貝機采用軟件進行數(shù)據(jù)分配和多路傳輸,所以數(shù)據(jù)傳輸速度較低。為了避免產(chǎn)生緩存器欠載運行(Buffer Underrun)錯誤,一般將SCSI接口上連接的刻錄機數(shù)量限制在4臺以內(nèi)。
  (2)脫機拷貝機
  脫機拷貝機是所有CD-R光盤拷貝機中使用最簡單的一種,也是使用最多的一種。脫機拷貝機使用專用的硬件控制器進行源盤讀取和多路數(shù)據(jù)傳輸。因此數(shù)據(jù)傳輸?shù)乃俣群芸?,不易產(chǎn)生緩存器欠載運行錯誤,復制CD-R光盤的成功率高于聯(lián)機拷貝機。
  (3)自動拷貝機
  自動拷貝機是在脫機拷貝機的基礎(chǔ)上又增加了一套機械手裝置,用機械手自動將CD-R空盤放入刻錄機。完成拷貝后,機械手將已刻錄的CD-R光盤從刻錄機中取出,再放入新的CD-R空盤。有些自動拷貝機帶有光盤打印機,可直接在CD-R光盤背面打印用戶設計的盤標。
??? 本設計應用Xilinx(R) SpartanTM-3 FPGA、CoolRunnerTM II CPLD和微處理器來開發(fā)ATA/IDE接口之間用于數(shù)據(jù)存儲的脫機數(shù)字拷貝機。
1 數(shù)字拷貝機系統(tǒng)硬件部分
1.1 系統(tǒng)組成和工作原理

  數(shù)字拷貝機系統(tǒng)由FPGA、CPLD、4MB Flash、4MBDRAM、256MB SDRAM、微型處理器和操控按鈕、液晶顯示屏、IDE/ATA接口等組成。數(shù)字拷貝機系統(tǒng)框圖如圖1所示。其中FPGA和MPU組成控制單元,F(xiàn)lash為BOOT單元,SDRAM和DRAM為存儲交換單元,CPLD為加密單元,按鈕和顯示屏為人機接口單元。


  系統(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ù)據(jù)線與CPLD相連,充分應用CPLD在系統(tǒng)中的加密程序,其目的是對顯示器所顯示的數(shù)據(jù)加密,從而在實際生產(chǎn)中保護知識產(chǎn)權(quán)和名譽權(quán);
  (4)系統(tǒng)中CPLD器件的主要作用是對FPGA核加密。當系統(tǒng)啟動時,原先存儲在Flash中的FPGA核經(jīng)過CPLD的加密程序再加載到FPGA中,達到保護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,準備數(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的主要作用是擴展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與外設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ù),相當于BIOS。其中有用于整個系統(tǒng)運行的主程序,有用于數(shù)據(jù)DMA模式傳輸?shù)腇PGA核(IP),還有一些令系統(tǒng)初始化的程序和自檢程序等。當系統(tǒng)上電時,在CPU的控制下啟動整個系統(tǒng),F(xiàn)lash將其中的IP核經(jīng)過CPLD加密,下載到FPGA中,為拷貝做好準備。同時,鍵盤的接口連接至CPU,由CPU控制按下按鍵后的操作;液晶顯示器的數(shù)據(jù)線與CPLD相連,CPLD將要顯示的某些信息作為密鑰進行加密,防止他人盜用。
1.2.2 數(shù)據(jù)拷貝期的DMA數(shù)據(jù)傳輸模塊
  在這個模塊中,主要由FPGA構(gòu)成的一個DMA控制器控制IDE/ATA設備與拷貝機內(nèi)存之間的數(shù)據(jù)交換。選用的FPGA為SpartanTM-3E系列器件,它是開創(chuàng)性的低成本Spartan系列的第7類器件,也是采用先進的90nm工藝技術(shù)生產(chǎn)的第三類Xilinx器件系列。 Spartan-3E FPGA有高達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ù)據(jù)的存儲器起始地址;提供讀/寫脈沖,以規(guī)定數(shù)據(jù)在存儲器與I/O設備之間的傳輸方向;修改內(nèi)存地址指針并計算傳送的字節(jié)數(shù),以判斷何時傳送結(jié)束。具體信號時序如下:
  (1)I/O設備向DMAC發(fā)出請求信號DRQ;
  (2)DMAC向CPU發(fā)出總線請求信號HRQ;
  (3)CPU向DMAC發(fā)出總線響應信號HLDA,此時,DMAC獲得總線控制權(quán);
  (4)DMAC向I/O設備發(fā)出DMA響應信號DACK,表示DMAC已控制了總線,允許I/O設備與存儲器交換數(shù)據(jù);
  (5)DMAC按地址寄存器的內(nèi)容發(fā)出16位地址信號作為存儲地址的選擇,同時地址寄存器的內(nèi)容加1(或減1,由編程定);
  (6)DMAC發(fā)出IORC信號到I/O設備,將I/O設備數(shù)據(jù)讀入總線,同時發(fā)出MEMW信號,將數(shù)據(jù)總線的數(shù)據(jù)寫入由地址總線選中的內(nèi)存單元;
  (7)字節(jié)計數(shù)器減1;
  (8)重復(5)、(6)、(7)步驟,直至字節(jié)計數(shù)器為0,數(shù)據(jù)塊的DMA方式傳送工作完成。這時,DMAC的HRQ降為低電平(HRO=0),總線控制權(quán)交給CPU。
  數(shù)據(jù)拷貝期的DMA數(shù)據(jù)傳輸模塊原理如圖4所示。

?

?


2 數(shù)字拷貝機系統(tǒng)軟件流程
  非數(shù)據(jù)拷貝期系統(tǒng)主程序流程如圖5所示。數(shù)據(jù)拷貝期FPGA內(nèi)部DMA控制器的程序流程如圖6所示。拷貝機數(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失敗時認為CD-ROM未就緒,再次發(fā)送Test Unit Ready
Command
}
  系統(tǒng)經(jīng)過了ISE開發(fā)環(huán)境的設計、仿真、定時分析,其目的是測試設計的邏輯功能和延時特性,仿真包括功能仿真和時序仿真,ISE6.1中能夠提供和完成這些功能。仿真結(jié)果符合實際需要。


  (1)系統(tǒng)能實現(xiàn)拷貝、測試、對比校對。
  (2)在拷貝之前的菜單可以選擇燒錄速率(CD to CD、DVD to DVD)等。
  (3)系統(tǒng)可進行人性化設定,包括語言設定、CD寫模式設定、拷貝模式設定、蜂鳴器及空閑狀態(tài)屏幕保護設定等。
  (4)常用工具設定,包括光盤信息、預掃描、系統(tǒng)信息、設備信息和更新固件等。
  本系統(tǒng)符合當前技術(shù)的主流,有著廣闊的技術(shù)前景。
參考文獻
1 何 寧,熊劍平,蔣昌龍等.基于FPGA的實時持續(xù)數(shù)據(jù)記錄系統(tǒng)設計[J].微電子學與計算機,2003;(1)
2 黃志偉,王 彥,陳 瓊等.FPGA系統(tǒng)設計與實踐[M].北京:電子工業(yè)" title="電子工業(yè)">電子工業(yè)出版社,2005
3 EDA先鋒工作室.FPGA/CPLD設計工具——Xilinx ISE使用詳解[M].北京:人民郵電出版社,2005
4 任曉東,文 博.CPLD/FPGA高級應用開發(fā)指南[M].北京:電子工業(yè)出版社,2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。