作者:吳芝路,任廣輝,王桂玲
隨著遙測技術的發展,被測參數迅速增加,數據傳輸速率越來越高,對系統的存儲容量、體積、造價、穩定性等都提出了更高要求。為了實現較高的傳輸速率和較大的數據量,往往采用多處理機并行處理、傳輸和并行記錄技術。但這類系統對工作環境要求較高,加之體積大、占用系統機時等缺點,很難適用于受空間限制的特殊環境。因此,研制性能可靠、體積小、造價低的數據存儲系統是十分必要的。近年來作為數據存儲媒介的硬盤,以其容量大、接口智能化程度高、控制方便越來越受到人們的重視。充分發揮硬盤的優勢,脫離系統主機,可為用戶開發速度高、存儲量大、性能可靠的遙測數據存儲系統。
基于上述原因,本文提出了采用單片機控制硬盤對遙測數據進行實時存儲的方案,對數千秒遙測數據進行實時無丟失存儲,其最大優點是不占用系統機時。本系統的特點:
·采用PIO模式進行塊操作的寫盤方法,從而大大提高了硬盤的寫盤速度;
·以單片機為核心,采用I/O口與緩沖存儲器之間進行高速數據傳輸的方案,解決了高速遙測數據、CPU和硬盤三者工作速度不一致的矛盾;
·采用EPLD器件對部分電路進行集成,提高了系統的穩定性和可靠性,具有較好的通用性,可滿足多種場合的需要而無需改動任何硬件。
1 系統的硬件介紹
系統分為遙測數據采集和存儲兩部分,采集部分包括采集控制和串/并轉換電路;存儲部分有:幀計數、讀寫緩沖地址產生電路、讀寫控制電路及主存儲電路。結構框圖如圖1所示。
由于硬盤的工作時序與遙測數據的速率不匹配,從數據采集部分得到的并行數據需采用SRAM作數據緩存,然后在單片機的控制下,將SRAM中的數據直接存入硬盤。而硬盤的尋道時間相對于遙測數據的速率來講比較慢,因此采用適當的寫盤方法,提高硬盤的讀寫速度是本系統的重點之一。其難點在于如何利用單片機控制硬盤進行讀寫、復位、檢測等操作。
1.1 雙片交替式緩沖存儲器
由于時序不匹配,遙測數據無法直接存入硬盤,因此需要一個緩沖存儲器進行匹配或緩沖,使遙測數據和硬盤存儲可以分別按各自不同的時序和速度對緩沖存儲器SRAM進行操作,解決了不同時序的匹配問題。因此采用緩沖存儲方法,將遙測數據存滿一定容量的SRAM,再對其進行塊操作存儲,可極大地提高存儲的速度。為了實現遙測數據無丟失存儲,緩沖存儲器采用雙片交替式,即兩片SRAM分別交替地被寫入遙測數據。首先在地址產生電路控制下將遙測數據寫入其中一片SRAM,寫滿后發出溢出中斷,并且封閉地址產生電路及遙測數據的通路而接通硬盤地址和數據通路,等待CPU響應中斷后,讀取數據存入硬盤。與此同時,另一片SRAM的地址和數據端馬上被接通到地址產生電路和遙測數據通路上,接受遙測數據的寫入。同樣寫滿后發出中斷,切換至被讀取狀態。兩片SRAM如此交替地工作,連續不斷地將遙測數據緩存、寫盤,只要寫盤所用的時間不大于遙測數據寫滿SRAM的時間,數據就會無丟失地全部存儲。
1.2 采用MCS-51系列單片機驅動硬盤的方案
由于目前還沒有為單片機設計的專用硬盤驅動器及接口電路,利用單片機系統控制現有的硬盤驅動器,可極大地提高系統的性能價格比。因此,本系統采用單片機控制硬盤進行高速數據的存儲。
IDE接口的硬盤驅動器提供了兩種數據傳輸模式:DMA模式和PIO模式。由于PIO模式控制相對容易,提供了一種編程控制輸入輸出的快速傳輸方法。該模式采用了高速的數據塊I/O,以扇區為單位,用中斷請求方式與處理機進行批量數據交換。在扇區讀寫操作時,一次按16位長度通過內部的高速PIO數據寄存器實現傳輸。通常情況下,數據傳輸以扇區為單位,每傳輸一扇區數據產生一個中斷。在塊模式下以塊為單位,在讀寫一個塊期間,硬盤驅動器不產生中斷,這樣就大大地節省了時間。由于本系統遙測數據的碼速率提高到8Mb/s,對硬盤的寫盤速度要求非常高,因此本系統采用了塊傳輸模式以提高硬盤的讀寫速度。硬盤在讀寫16位數據時,PC機中使用INSW指令或OUTSW指令實現16位數據讀/寫操作,由I/O端口直接到內存。而在本系統中采用MCS-51系列單片機控制硬盤,使數據傳輸在硬盤端口寄存器與緩沖存儲器之間進行,不經過單片機,單片機只是對硬盤進行初始化,并發相應的寫命令。這樣,在單片機的控制下,兩片SRAM交替工作,實現了高速遙測數據無丟失存儲。
2 系統的軟件介紹
2.1 硬盤速度測試
硬盤的存取速度是決定8Mb/S碼速率硬盤存儲方案可行性的關鍵。是否存在足夠高速的硬盤與系統相配,是本系統方案能否實現的一個決定性問題。但是,利用現有的硬盤測試軟件只能比較幾種硬盤之間的優劣和差異,而不能比較同一硬盤采用不同寫盤方法的速度差異。為了得到一種較快的寫盤方法,在對硬盤讀寫原理進行深入剖析后,自己編程進行測試。以邁拓4.3GB硬盤為例,采用三種不同的寫盤方法:調用BIOS的INT13;利用非塊模式和塊模式寫盤;對硬盤速度進行測試。結果證明:采用PIO4及塊模式寫盤速度最快,可以達到3.496MB/s。完全可以滿足本系統的需要。
2.2 單片機控制硬盤讀寫操作
IDE接口是一種任務寄存器結構的接口,所有輸入輸出操作均通過對相應寄存器的讀/寫來完成的。如果主機要對硬盤機進行寫數據操作,首先進行(命令和參數)寄存器選擇,通過數據總線將相應的命令碼用IOW寫入命令寄存器,以及有關參數寫入硬盤參數寄存器。數據由數據總線(16位寬)傳遞至數據寄存器,通過數據寄存器存入緩存器。IDE接口會根據命令自動將數據寫到由參數寄存器指的磁道號、頭號、扇區號。硬盤的讀操作與寫操作相似,區別在于首先發出中斷請求,然后進行數據傳輸。IDE控制器端口寄存器地址分配見表1。
主狀態寄存器(CS0置0)反映硬盤控制器的操作狀態,決定查詢狀態后的不同流向。定義如下:
在向控制器發出命令之前,必須先檢測控制器是否忙碌(D7=1)。如果在規定時間內控制器一直忙碌,則置超時錯,否則表示控制器空閑可接受命令。
設計過程中,采用PIO模式以塊為單位進行讀寫操作,從硬盤讀數據的過程描述如下:
(1)在相關寄存器中寫入所需的參數,如讀取扇區的起始柱面號、磁頭號、扇區號、讀寫扇區數等;
(2)向命令寄存器中寫入命令代碼;
(3)驅動器置BSY位,準備數據傳輸;
(4)當驅動器準備好數據后,置DRQ位,清除BSY位,發出中斷請求;
(5)主機檢測到中斷,讀出狀態寄存器。測試ERR位,若為1則轉入出錯處理,否則循環使用IN指令通過數據寄存器讀一個扇區或一個塊的數據。
(6)驅動器清除DRQ位,如果還有要傳輸的數據。從第4步重復執行。
數據的寫入過程與讀出過程大致相似,區別在于首先進行數據傳輸,然后發出中斷請求,具體過程不再贅述。PIO模式編程的簡單流程圖見圖2。
實驗證明,本存儲方案可行,系統運行穩定,實現了遙測數據正確、無丟失存儲,并應用到實際系統中。
責任編輯:gt
-
單片機
+關注
關注
6037文章
44569瀏覽量
636218 -
cpu
+關注
關注
68文章
10873瀏覽量
212107 -
存儲系統
+關注
關注
2文章
413瀏覽量
40875
發布評論請先 登錄
相關推薦
評論