《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 利用FPGA和DSP直接控制硬盤實現存儲控制的方法
利用FPGA和DSP直接控制硬盤實現存儲控制的方法
摘要: 數據存儲是數據采集過程中的一個重要環節,目前大部分數據存儲系統都是用內置工控機的方法完成數據保存任務,這種方法系統功耗大,硬件成本高,不適用于具有內記功能要求的系統。本系統采用FPGA和DSP直接控制硬盤進行數據存儲,并采用一片FIFO 作為數據緩存,設計思路比較新穎,硬件結構簡單,成本低,直接控制硬盤的方法可將系統功耗降至最低,具有自動內記功能,能及時存儲采集到的數據。本系統已經應用于某信號采集設備中,實踐證明可滿足使用要求,能夠滿足80Khz數據采樣率系統的存盤要求。
關鍵詞: FPGA DSP 硬盤 FIFO
Abstract:
Key words :

       1 引言

  數據存儲是數據采集過程中的一個重要環節,目前大部分數據存儲系統都是用內置工控機的方法完成數據保存任務,這種方法系統功耗大,硬件成本高,不適用于具有內記功能要求的系統。本系統采用FPGADSP直接控制硬盤進行數據存儲,并采用一片FIFO 作為數據緩存,設計思路比較新穎,硬件結構簡單,成本低,直接控制硬盤的方法可將系統功耗降至最低,具有自動內記功能,能及時存儲采集到的數據。本系統已經應用于某信號采集設備中,實踐證明可滿足使用要求,能夠滿足80Khz數據采樣率系統的存盤要求。

  2 系統實現方案

  本設計采用FPGA和DSP直接控制硬盤[1][2],并采用一片FIFO作為數據緩存,系統采用DSP完成文件管理工作,利用FPGA實現DSP與硬盤的接口。具體框圖如圖1所示。

  圖1 方案實現框圖

  首先由采集控制板FPGA將FIFO復位,需要儲存數據時數據流直接將數據寫入FIFO,當存儲控制板FPGA查詢到FIFO的狀態為非空時就輸出BIO信號通知DSP啟動存盤程序。DSP先訪問硬盤確定所需參數,如下一個文件應使用的文件名,保存文件的邏輯扇區號等。然后DSP向硬盤發出存盤命令,當硬盤響應控制命令后,DSP通知FPGA可以向硬盤傳輸數據。存盤時FPGA從FIFO中讀出數據并將數據打包,由8bit變為16bit,并寫入硬盤數據寄存器。當存滿40M時,DSP通知采集控制系統已寫滿一個文件,采集控制系統將FIFO復位完成一次存盤操作。

  3 存儲控制程序流程

  程序啟動后,首先將硬盤Device register中的SRST置1使硬盤復位,在硬盤復位后讀取MBR0和BPB0,在FAT中找到Special Sector并檢查是否有標志位0x55FF,如果沒有則說明硬盤是第1次被使用,如果有則從中讀取參數準備傳輸數據。

  (1) 為了在每次啟動程序后能迅速查找到應使用的文件名、下一個空簇的位置、正在使用的磁盤等參數,將硬盤第3簇中第1扇區標志為Special Sector,用于儲存這些參數。

  (2)每個磁盤被劃分出200M空間為保留區,當發現磁盤空間不足200M時即顯示磁盤已滿,不在用當前磁盤存儲數據而是使用下一個磁盤。

  (3)每個磁盤第2簇為目錄區,因使用短文件名無子目錄,所以當每簇為16扇區時目錄區共可儲存256個文件名。

  (4)數據文件大小固定為40M。

  如果硬盤是第一次被使用,則主機順次讀取MBR0、BPB0、MBR1、BPB1直到查詢到最后一個硬盤分區,并將相關參數如每個分區的大小、分區的邏輯地址、每個分區數據空間起始段的邏輯地址、FAT表邏輯地址等信息寫入Special Sector,并做一個文件的目錄(32字節)將第一個文件命名為“000.dat”。

  當FAT中第三簇被標志為壞簇時,表明已經在硬盤上劃分Special Sector并已存入硬盤參數。主機從Special Sector中讀取下一個可用空簇,并計算這一簇在FAT中的位置并將FAT讀入C54的RAM中,讀取Special Sector中的文件名及相關參數并將其寫入目錄區。然后查詢BIO,當BIO為低電平時開始傳輸數據(參見儲存板接口),傳輸數據時FPGA啟動元件 trans_data,由主機發出XF作為啟動信號。FPGA從FIFO中每讀出2Bytes向硬盤寫一次,連續寫256次,即向硬盤傳輸512字節數據。主機每發出一個XF下降沿FPGA就從FIFO中讀取512字節數據并存入硬盤。

  傳輸40M數據結束后,主機將根據傳輸的扇區數填寫FAT表,判斷硬盤空間是否小于200M、已儲存的文件數是否大于256,如果為真則再次存儲數據時將使用下一個磁盤分區。

  4 硬盤操作控制流程

  我們一般習慣稱硬盤接口為IDE接口[3],對硬盤的操作如讀寫扇區,發送命令等都是通過讀寫寄存器來完成的,每向硬盤發送一組命令后都要讀取狀態寄存器中的信息,通過狀態寄存器的值來判斷硬盤是否已經執行完所發送的命令。

  4.1 硬盤啟動操作

  硬盤加電后應先將硬盤復位,硬盤復位方式有三種,本設計采用的是將SRST置1,當SRST被置1后硬盤立即復位,這時應至少等待2ms才讀取Status register。如果Status register的值為80h,則表明硬盤已完成復位。硬盤啟動流程見圖2。

  圖2 硬盤啟動程序流程圖

  圖3 扇區讀寫操作程序流程圖

  4.2 扇區讀寫操作

  首先應向硬盤發送命令參數,將要讀寫的扇區數目寫入Sector count register,將扇區的邏輯地址寫入LBA High register、LBA Mid register和LBA Low register,將要接收命令的設備號寫入Device register。流程見圖3。

  LBA=(柱面編號×磁頭數+磁頭編號)×扇區數+扇區編號-1

  將命令READ SECTOR或WRITE SECTOR寫入Command register后,在400ns內Status register的值并不可靠,所以需等待400ns才能讀取Status register,這段等待時間可以通過讀取Alternate Status register和Error register度過,讀取的數值應被丟棄。當狀態寄存器的值為58h時,表示硬盤已經可以從Data register接收或傳輸數據。

  4.3 DMA操作流程

  DMA操作與I/O操作相似,流程見圖4,首先應向硬盤發送命令參數,將要讀寫的扇區數目寫入 Sector count register,將扇區的邏輯地址寫入LBA High register、LBA Mid register和LBA Low register,將要接收命令的設備號寫入Device register。將命令READ DMA或 WRITE DMA寫入Command register后,在400ns內Status register的值并不可靠,所以需等待400ns才能讀取Status register,這段等待時間可以通過讀取Alternate Status register和Error register度過,讀取的數值應被丟棄。當狀態寄存器值為58h時主機應給出DMA初始化時序開始傳輸數據。

  圖4  DMA操作流程圖

  5 設計中的重點

  5.1 采樣率問題

  數據采集及存儲系統一般都有采樣率要求,采樣率一般要求大于50K,才能滿足快速實時采集數據的要求。本系統中速度較慢的環節是硬盤存儲環節,硬盤接口設計存盤速度為7.8Mbyte/S,顯然采集速率與存盤速率并不匹配,解決的措施為采用一片 FIFO作為數據緩沖區。由于對硬盤操作過程中,需不斷查詢其狀態,而硬盤狀態改變時間又不確定,所以要選用存儲深度較大的FIFO作為緩存,IDT公司的72V2101滿足設計要求[5]。工作時數據直接將數據寫入FIFO,FPGA查詢FIFO的狀態,為非空時,協調DSP訪問硬盤,進行存儲操作,這樣采用FIFO作為緩存的方案解決了速率匹配問題[4],當采樣率為80k時,數據流為5Mbyte/S,本系統設計存盤速度為7.8Mbyte/S,可以滿足80K以內數據采樣率系統的存盤要求。

  5.2 硬盤存儲地址問題

  硬盤中數據如何存儲是本設計中另一個重點問題,主要考慮文件存儲的地址及文件目錄情況。本設計中硬盤文件的存儲采用FAT32文件系統,引導扇區記錄了文件分配表的地址、個數、大小、簇的大小等信息。文件邏輯地址=數據段起始地址+(簇號— RootClus)×SecPerClus;數據段起始地址=BPB地址+RsvdSecCn+FATSz32×NumFATs。)文件目錄設計采用短文件名,每個文件名和相關信息占用32字節,每個磁盤第2簇為目錄區,因使用短文件名無子目錄,所以當每簇為16扇區時目錄區共可儲存256個文件名。

  6 結束語

  本系統數據存儲量較大,較傳統使用工控機進行數據存儲功耗較低,適合于工作環境局限、系統要求具有自動內記功能的工況下。本系統已經應用于某信號采集設備中,實踐證明可滿足使用要求,系統工作穩定,沒有數據溢出現象。當然本系統還有一定不足,如不能存儲任意長度數據文件,只能存儲40M長度文件,還需進一步完善。

 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 日本亚州视频在线八a| 永久免费av无码网站大全| 国产成人亚洲精品无码青青草原| 99在线精品免费视频| 很黄很刺激很爽的免费视频| 久久久久波多野结衣高潮| 最近免费中文字幕完整7| 亚洲国产精品午夜电影| 激情综合五月天| 免费国产剧情视频在线观看| 精品无人区一区二区三区| 国产一区二区三区在线观看免费 | 天堂在线ww小说| 一区二区视频在线免费观看| 成人综合国产乱在线| 久久丁香五月天综合网| 日韩一级在线视频| 亚洲AV无码一区二区二三区软件 | 国产乱码精品一区二区三区四川人 | 亚洲精品无码mv在线观看| 男女真实无遮挡xx00动态图120秒| 午夜福利一区二区三区在线观看 | 国产v片成人影院在线观看| 香蕉视频在线观看黄| 国产成人精选免费视频| 北岛玲日韩精品一区二区三区| 国产精品真实对白精彩久久| 91手机在线视频| 欧美日韩视频在线第一区| 亚洲视频免费看| 玉蒲团之天下第一| 免费看污成人午夜网站| 精品无码人妻一区二区三区| 国产3级在线观看| 色八a级在线观看| 国产三级精品三级在专区| 蹂躏国际女刑警之屈服| 国产亚洲综合色就色| 野花香高清在线观看视频播放免费| 国产国语对白露脸| 香蕉在线视频播放|