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