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

基于FPGA控制的IDE磁盤(pán)陣列設(shè)計(jì)

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

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

?

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

?


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

?


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

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

?


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

?

?

?

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


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

?


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


參考文獻(xiàn)
[1] Friedhelm Schmidt.SCSI總線和IDE接口協(xié)議、應(yīng)用和編程(第二版)[M].中國(guó)電力出版社,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] 黃新財(cái),佃松宜,汪道輝.基于FPGA的高速連續(xù)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].微機(jī)計(jì)算機(jī)信息,2005,2(58):2-5.
[5] 候伯亨,顧新.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)-電子工程師必備知識(shí)(修訂版)[M].西安:西安電子科技大學(xué)出版社,1998.

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