<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA控制的IDE磁盤(pán)陣列設計

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

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

隨著(zhù)雷達技術(shù)的不斷發(fā)展,如何高速穩定地存儲回波數據已經(jīng)成為一個(gè)亟待解決的問(wèn)題。當前高速存儲設備主要應用在服務(wù)器上,不僅價(jià)格高昂,而且功能可擴展性不強。因此,本文使用實(shí)現符合ATA-6規范的IDE接口,配合SDRAM組成了系統。通過(guò)把四塊IDE硬盤(pán)配置成RAID 0陣列,實(shí)現對數據的高速存儲。實(shí)測時(shí)整個(gè)系統運行穩定,平均存儲速率200MB/s,配合板載的128MB內存,突發(fā)存儲速率可以達到800MB/s。采集過(guò)程中,可以通過(guò)軟件實(shí)時(shí)觀(guān)測回波數據的IQ分解和脈沖壓縮。

作為采集數據系統主要考慮的是存儲容量、存儲速率和可操作性。由于目前比較通用的FAT32或NTFS格式的采集數據系統用實(shí)現較困難,因此,在自行定義的存儲格式及其傳輸協(xié)議的基礎上設計了一種實(shí)用的IDE硬盤(pán)陣列及其采集數據系統,并且通過(guò)使用PCI傳輸卡就可以把磁盤(pán)陣列中的數據導入計算機,實(shí)現格式上的轉化。

1 系統設計

為使系統的存儲速率最大化,硬盤(pán)配置成RAID 0模式。工作時(shí),AD采樣后得到的信號首先分流成四路,然后流向四個(gè)硬盤(pán),每一路磁盤(pán)的工作模式都相同。圖1給出其中某一路的存儲流程圖。

本文引用地址:http://dyxdggzs.com/article/201706/349256.htm


由圖1可知,分流后的AD數據首先暫存到FPGA內部的FIFO 0中,由于磁盤(pán)存儲數據時(shí)工作在Ultra DMA模式下,所以每傳輸一幀數據,FPGA都需要給磁盤(pán)一個(gè)CRC校驗結果,磁盤(pán)會(huì )對FPGA給出的CRC校驗結果進(jìn)行核對。如果正確,磁盤(pán)就會(huì )存儲本幀數據;若出現錯誤,磁盤(pán)會(huì )拋棄本幀數據,并向FPGA報錯。因此從FIFO 0讀取的數據不能直接流向硬盤(pán),而必須流向一個(gè)大容量的高速緩存器件,以便在CRC校驗結果出錯的情況下重新傳輸出錯幀數據。在本系統中高速緩存器件選用HY57V561620C(L)T(P),其數據吞吐率可以達到200MB/s,容量為32MB。

數據存儲完成后,需要通過(guò)PCI卡導入到計算機中進(jìn)行計算和分析。導出數據的流程圖和存儲數據相似,如圖2所示。


2 IDE協(xié)議的FPGA實(shí)現

2.1 IDE協(xié)議簡(jiǎn)介

IDE(Integrated Drive Electronics)是集成磁盤(pán)電路設備, 其正式名稱(chēng)是AT-Attachment。它是Compaq公司為解決老式的ST506/412接口速度慢、開(kāi)發(fā)成本高而開(kāi)發(fā)出的硬盤(pán)標準。由于IDE接口的硬盤(pán)具有價(jià)格低廉、穩定性好、標準化程度高等優(yōu)點(diǎn),迅速得到普及[1]。

IDE接口硬盤(pán)的幾種傳輸模式有很明顯的區別,其經(jīng)歷了三個(gè)不同的技術(shù)變化,由PIO(Programmed I/O)模式,DMA(Direct Memory Access)模式,直到現在的Ultra DMA 模式。其中PIO模式的傳輸速率最慢,最老的PIO mode 0傳輸速率為3.3MB/s,最新的PIO mode 4傳輸速率為16.7MB/s。本文存儲數據時(shí)采用了Ultra DMA模式,最高速率100MB/s。在計算機上使用時(shí),PIO傳輸模式會(huì )大量占用中央處理器的資源;而后IDE接口及裝置開(kāi)始有了DMA的支持,DMA模式有Single-DMA和Multi-DMA兩種,與PIO模式相比達到了節省處理器資源的效果,但隨后被性能更好的Ultra DMA所取代。

2.2 IDE協(xié)議的軟件實(shí)現

FPGA對IDE硬盤(pán)的控制通過(guò)命令寄存器和控制寄存器實(shí)現,如表1所示[2]。其中帶“-”的信號(如“”)表示低電平有效。對磁盤(pán)進(jìn)行任何操作之前首先需要讀取特征寄存器,此寄存器指示磁盤(pán)是否處于空閑狀態(tài)。如果磁盤(pán)空閑,可以向命令寄存器寫(xiě)入需要執行的命令代碼。如果對磁盤(pán)進(jìn)行無(wú)數據操作,只需要寫(xiě)入命令字然后等待磁盤(pán)執行任務(wù)結束即可。如果執行的是讀(寫(xiě))操作,就需要通過(guò)扇區數寄存器確定讀(寫(xiě))扇區總數,通過(guò)扇區號寄存器和柱面寄存器確定讀(寫(xiě))地址。命令執行完畢后,FPGA需要讀狀態(tài)寄存器。如果ERR位有效,表明執行上一個(gè)命令的過(guò)程中產(chǎn)生了錯誤,具體錯誤類(lèi)型可以通過(guò)讀錯誤寄存器得到。


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




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


3 上位機軟件設計

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

數據采集過(guò)程中,磁盤(pán)系統配合PCI 9054卡可以得到當前回波的IQ數據以及脈沖壓縮結果。采集結束后,可以根據需要導出任何一部分數據。

本文采用FPGA實(shí)現了符合ATA-6規范的IDE協(xié)議,將硬盤(pán)組成磁盤(pán)陣列實(shí)現了對數據的高速穩定存儲, 平均數據流達到200MB/s,峰值傳輸速率達到800MB/s。在試驗階段先后使用了希捷、邁拓、西數等廠(chǎng)家的硬盤(pán)進(jìn)行試驗。經(jīng)過(guò)測試整個(gè)系統的運行比較穩定,長(cháng)時(shí)間采集不會(huì )出現數據丟失的情況。如果希望增強系統的抗震性,可以在板卡上掛IDE接口的固態(tài)盤(pán),整個(gè)系統的性能不會(huì )受到影響。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>