《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 基于FPGA控制的IDE磁盤陣列設(shè)計

基于FPGA控制的IDE磁盤陣列設(shè)計

2008-11-04
作者:宋曉偉,,陳伯孝

  摘 要: 設(shè)計了一種基于FPGA控制的高速數(shù)據(jù)存儲系統(tǒng),。該系統(tǒng)采用FPGA實現(xiàn)了對四個符合ATA-6規(guī)范的,、RAID 0配置的IDE磁盤陣列的管理,,并配合四個SDRAM實現(xiàn)對數(shù)據(jù)的高速穩(wěn)定存儲,。該磁盤陣列同時掛四個IDE硬盤,,平均數(shù)據(jù)流達到200MB/s,峰值傳輸速率" title="傳輸速率">傳輸速率達到800MB/s,,也可以擴展更多硬盤,,構(gòu)成大容量" title="大容量">大容量的磁盤陣列。
  關(guān)鍵詞: FPGA,;IDE協(xié)議,;SDRAM;磁盤陣列,;PCI 9054

?

  隨著雷達技術(shù)的不斷發(fā)展,,如何高速穩(wěn)定地存儲回波數(shù)據(jù)已經(jīng)成為一個亟待解決的問題。當前高速存儲設(shè)備主要應用在服務(wù)器上,,不僅價格高昂,,而且功能可擴展性不強。因此,,本文使用FPGA實現(xiàn)符合ATA-6規(guī)范的IDE接口,,配合SDRAM組成了高速數(shù)據(jù)存儲系統(tǒng)。通過FPGA把四塊IDE硬盤配置成RAID 0陣列,,實現(xiàn)對數(shù)據(jù)的高速存儲,。實測時整個系統(tǒng)運行穩(wěn)定,平均存儲速率200MB/s,,配合板載的128MB內(nèi)存,,突發(fā)存儲速率可以達到800MB/s。采集過程中,,可以通過軟件實時觀測回波數(shù)據(jù)的IQ分解和脈沖壓縮,。
  作為采集數(shù)據(jù)系統(tǒng)主要考慮的是存儲容量、存儲速率和可操作性,。由于目前比較通用的FAT32或NTFS格式的采集數(shù)據(jù)系統(tǒng)用FPGA實現(xiàn)較困難,,因此,在自行定義的存儲格式及其傳輸協(xié)議的基礎(chǔ)上設(shè)計了一種實用的IDE硬盤陣列及其采集數(shù)據(jù)系統(tǒng),,并且通過使用PCI傳輸卡就可以把磁盤陣列中的數(shù)據(jù)導入計算機,,實現(xiàn)格式上的轉(zhuǎn)化。
1 系統(tǒng)設(shè)計
  為使系統(tǒng)的存儲速率最大化,,硬盤配置成RAID 0模式,。工作時,AD采樣后得到的信號首先分流成四路,,然后流向四個硬盤,,每一路磁盤的工作模式都相同。圖1給出其中某一路的存儲流程圖。

?


  由圖1可知,,分流后的AD數(shù)據(jù)首先暫存到FPGA內(nèi)部的FIFO 0中,,由于磁盤存儲數(shù)據(jù)時工作在Ultra DMA模式下,所以每傳輸一幀數(shù)據(jù),,F(xiàn)PGA都需要給磁盤一個CRC校驗結(jié)果,,磁盤會對FPGA給出的CRC校驗結(jié)果進行核對。如果正確,,磁盤就會存儲本幀數(shù)據(jù),;若出現(xiàn)錯誤,磁盤會拋棄本幀數(shù)據(jù),,并向FPGA報錯,。因此從FIFO 0讀取的數(shù)據(jù)不能直接流向硬盤,而必須流向一個大容量的高速緩存器件,,以便在CRC校驗結(jié)果出錯的情況下重新傳輸出錯幀數(shù)據(jù),。在本系統(tǒng)中高速緩存器件選用HY57V561620C(L)T(P),其數(shù)據(jù)吞吐率可以達到200MB/s,,容量為32MB,。
  數(shù)據(jù)存儲完成后,需要通過PCI卡導入到計算機中進行計算和分析,。導出數(shù)據(jù)的流程圖和存儲數(shù)據(jù)相似,,如圖2所示。

?


2 IDE協(xié)議的FPGA實現(xiàn)
2.1 IDE協(xié)議簡介

  IDE(Integrated Drive Electronics)是集成磁盤電路設(shè)備,, 其正式名稱是AT-Attachment,。它是Compaq公司為解決老式的ST506/412接口速度慢、開發(fā)成本高而開發(fā)出的硬盤標準,。由于IDE接口的硬盤具有價格低廉,、穩(wěn)定性好、標準化程度高等優(yōu)點,,迅速得到普及[1],。
  IDE接口硬盤的幾種傳輸模式" title="傳輸模式">傳輸模式有很明顯的區(qū)別,其經(jīng)歷了三個不同的技術(shù)變化,,由PIO(Programmed I/O)模式,,DMA(Direct Memory Access)模式,直到現(xiàn)在的Ultra DMA 模式,。其中PIO模式的傳輸速率最慢,,最老的PIO mode 0傳輸速率為3.3MB/s,最新的PIO mode 4傳輸速率為16.7MB/s,。本文存儲數(shù)據(jù)時采用了Ultra DMA模式,,最高速率100MB/s,。在計算機上使用時,PIO傳輸模式會大量占用中央處理器的資源,;而后IDE接口及裝置開始有了DMA的支持,,DMA模式有Single-DMA和Multi-DMA兩種,與PIO模式相比達到了節(jié)省處理器資源的效果,,但隨后被性能更好的Ultra DMA所取代。
2.2 IDE協(xié)議的軟件實現(xiàn)
  FPGA對IDE硬盤的控制通過命令寄存器和控制寄存器實現(xiàn),,如表1所示[2],。其中帶“-”的信號(如“”)表示低電平有效。對磁盤進行任何操作之前首先需要讀取特征寄存器,,此寄存器指示磁盤是否處于空閑狀態(tài),。如果磁盤空閑,可以向命令寄存器寫入需要執(zhí)行的命令代碼,。如果對磁盤進行無數(shù)據(jù)操作,,只需要寫入命令字然后等待磁盤執(zhí)行任務(wù)結(jié)束即可。如果執(zhí)行的是讀(寫)操作,,就需要通過扇區(qū)數(shù)寄存器確定讀(寫)扇區(qū)總數(shù),,通過扇區(qū)號寄存器和柱面寄存器確定讀(寫)地址。命令執(zhí)行完畢后,,F(xiàn)PGA需要讀狀態(tài)寄存器" title="狀態(tài)寄存器">狀態(tài)寄存器,。如果ERR位有效,表明執(zhí)行上一個命令的過程中產(chǎn)生了錯誤,,具體錯誤類型可以通過讀錯誤寄存器得到,。

?


  系統(tǒng)上電后要對硬盤進行復位操作,檢測到BSY位和DRQ位都為低電平時硬盤復位結(jié)束,。然后通過Set Feature和Set Multiple Mode等命令完成對硬盤的配置,。如圖3,對硬盤的配置以及讀(寫)命令的發(fā)送都是用PIO模式實現(xiàn)的,。圖4給出PIO模式的時序圖,,表2給出其時序要求[2]。下面以寫磁盤為例介紹磁盤工作在48位尋址時PIO命令的執(zhí)行:FPGA首先連續(xù)寫兩次磁盤的特征寄存器,,因為在PIO模式下此寄存器已經(jīng)廢棄,,所以值可以任意。然后連續(xù)寫兩次扇區(qū)數(shù)寄存器,,第一次寫入寫扇區(qū)總數(shù)的高8位,,第二次寫入寫扇區(qū)總數(shù)的低8位。再依次寫兩次扇區(qū)號寄存器,、柱面寄存器0,、柱面寄存器1,,順序?qū)懭肫鹗忌葏^(qū)地址的第24~31位、0~7位,、32~39位,、8~15位、40~47位,、16~23位,。至此,硬盤就可以確定寫數(shù)據(jù)的起始地址以及寫數(shù)據(jù)總量,。然后FPGA需要寫驅(qū)動器/磁頭寄存器以確定磁盤的尋址方式,。一般采用邏輯尋址。最后向命令寄存器中寫入命令碼34H,。參數(shù)發(fā)送完畢后,,F(xiàn)PGA至少等待400ns,然后讀可選狀態(tài)寄存器,,一旦檢測到BSY為低電平,、DRQ為高電平" title="高電平">高電平,就說明磁盤已經(jīng)就緒可以接收數(shù)據(jù),,此時只需按照PIO時序的要求向數(shù)據(jù)寄存器寫入數(shù)據(jù)即可,。數(shù)據(jù)寫入完成后,F(xiàn)PGA需等待磁盤給出的中斷信號INTRQ,,此信號有效后FPGA讀狀態(tài)寄存器,,整個寫扇區(qū)的命令執(zhí)行完畢,磁盤可以繼續(xù)接收其他命令,。

?

?

?

  完成硬盤的復位和配置以后,,F(xiàn)PGA循環(huán)檢測有無讀寫命令。以寫硬盤為例介紹,,F(xiàn)PGA完成對硬盤的復位和配置后就進入到命令檢測狀態(tài),。一旦檢測到寫硬盤命令,程序進入到寫狀態(tài),。FPGA首先向硬盤命令寄存器和狀態(tài)寄存器寫入必要的信息,,然后等待DMARQ信號有效,進而對DMA通道進行初始化,。全部準備工作完成后,,F(xiàn)PGA內(nèi)部FIFO中的數(shù)據(jù)就可以存儲到硬盤中。數(shù)據(jù)在傳輸過程中,,硬盤隨時可能暫停傳輸,,一旦暫停,F(xiàn)PGA就只能等待硬盤再次就緒,。前一幀的DMA數(shù)據(jù)傳輸完畢后,,F(xiàn)PGA需要向硬盤發(fā)送CRC結(jié)果,,如果CRC結(jié)果正確硬盤就會接收當前數(shù)據(jù);如果錯誤,,硬盤就會向FPGA報錯,,此時數(shù)據(jù)就需要重新傳輸。圖5為寫硬盤流程圖,。讀硬盤的過程和寫過程相似,,本文不再詳細介紹。


3 上位機軟件設(shè)計
  整個磁盤系統(tǒng)通過VC界面進行管理,,操作界面如圖6,。軟件提供了最多四個采集通道,用戶可以根據(jù)自己的需要進行任意配置,。采集數(shù)據(jù)前,可以設(shè)置采集時鐘為外時鐘或內(nèi)時鐘,。觸發(fā)方式分:自動觸發(fā),、上升沿觸發(fā)、下降沿觸發(fā),、低電平采集,、高電平采集。針對雷達的特殊工作方式,,系統(tǒng)也可以工作在間斷采集模式下,。

?


????數(shù)據(jù)采集過程中,磁盤系統(tǒng)配合PCI 9054卡可以得到當前回波的IQ數(shù)據(jù)以及脈沖壓縮結(jié)果,。采集結(jié)束后,,可以根據(jù)需要導出任何一部分數(shù)據(jù)。
  本文采用FPGA實現(xiàn)了符合ATA-6規(guī)范的IDE協(xié)議,,將硬盤組成磁盤陣列實現(xiàn)了對數(shù)據(jù)的高速穩(wěn)定存儲, 平均數(shù)據(jù)流達到200MB/s,,峰值傳輸速率達到800MB/s。在試驗階段先后使用了希捷,、邁拓,、西數(shù)等廠家的硬盤進行試驗。經(jīng)過測試整個系統(tǒng)的運行比較穩(wěn)定,,長時間采集不會出現(xiàn)數(shù)據(jù)丟失的情況,。如果希望增強系統(tǒng)的抗震性,可以在板卡上掛IDE接口的固態(tài)盤,,整個系統(tǒng)的性能不會受到影響,。


參考文獻
[1] Friedhelm Schmidt.SCSI總線和IDE接口協(xié)議、應用和編程(第二版)[M].中國電力出版社,,2001.
[2] Technical committee.Information Technology-AT Attachment with Packet Interface-6(ATA/ATAPI-6)[S],,Revision 3a 14 December,,2001.
[3] CARDARILLI G C,LEANDRI A,,MARINUCCI P,,et al.Desigh of Fault Tolerant Solid State Mass Memory.IEEE?? TRANSACTION ON RELIABILITY[J],2003,,52(4):2-5.
[4] 黃新財,,佃松宜,汪道輝.基于FPGA的高速連續(xù)數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].微機計算機信息,,2005,,2(58):2-5.
[5] 候伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計-電子工程師必備知識(修訂版)[M].西安:西安電子科技大學出版社,,1998.

本站內(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,;郵箱:[email protected]