新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 一種用于飛行器下傳數據處理的高速數據采集存儲系統設計

        一種用于飛行器下傳數據處理的高速數據采集存儲系統設計

        作者: 時間:2018-09-12 來源:網絡 收藏

        0 引言
        隨著遙感技術的發展,遙感圖像的分辨率也越來越高。飛行器上搭載的遙感成像設備也從過去的低分辨率向現在的高分辨率在轉變。遙感成像設備分辨率提高的同時,也對飛行器的數據下傳鏈路提出了更高的帶寬要求。而相應的地面數據接受設備,也需要具備對高速實時數據的存儲和處理能力。同樣在測試設備方面,為了對大容量存儲設備進行的傳輸測試,相應的地面檢測設備也應該具備的輸出功能。因此,急需開發出具備高速實時數據接收和輸出功能的高速數據存儲系統。
        從目前此類系統的技術指標來看,往往只能達到100Mbps到150Mbps的數據接收和數據輸出功能。而根據目前的應用需求來看,高速數據流的數據傳輸速率往往在200Mbps以上甚至達到300Mbps。對于這種高速數據流,目前的系統就難以連續無錯的進行存儲和處理,往往會因為數據傳輸速率超過系統能處理的極限,導致出現丟失數據或者系統功能不正常,狀態不穩定等問題。
        本文中介紹的高速數據存儲系統的設計目標就是對傳輸速率最高為300Mbps的數據流進行無錯接收存儲,并能實現最高為300Mbps的高速數據流輸出,以便于對大容量存儲設備進行檢測。
        1 系統總體介紹
        高速數據存儲系統是在32位的計算機系統上實現的,數據傳輸也是利用32位,33MHz的PCI總線來完成。數據存儲是利用兩塊SATA接口的硬盤組成的RAID0磁盤陣列來實現的。整個系統的核心是數據傳輸接口卡,它完成外部數據到計算機內存的傳輸。然后運行的驅動程序再將內存中的數據存儲到硬盤上。因此,整個系統的設計也就分為數據傳輸接口卡的設計和驅動及應用程序設計兩大部分。
        2 數據傳輸接口卡設計
        數據傳輸接口卡從功能上分為PCI總線接口,存儲緩沖區,中斷模塊,傳輸控制模塊,緩沖區控制以及DMA控制六個模塊,如圖2-1中所示。當工作于數據輸入時,傳輸控制模塊根據緩沖區情況啟動傳輸,傳輸過程中緩沖區控制模塊將數據讀出送到PCI總線上,DMA控制模塊控制著PCI總線上數據傳輸的進行。傳輸結束以后,中斷模塊發出中斷信號提示驅動程序對傳輸到內存中的數據進行處理。下面主要介紹PCI總線接口模塊,DMA控制模塊,存儲緩沖區模塊以及傳輸控制模塊幾個核心模塊的設計。
        500)this.style.width=500;" border="0" />

        本文引用地址:http://www.104case.com/article/201809/388950.htm

        2.1 PCI總線接口模塊的設計
        PCI總線接口模塊完成的工作主要是PCI總線命令的解碼,地址以及數據的鎖存。實現PCI接口常用的方法是采用現成的PCI總線接口協議芯片(PLX905X系列等),如文獻[2]中數據采集板的設計就是采用的這種方法。但是由于這些協議芯片往往不是針對空間應用而專門開發的,從可靠性方面考慮,不能采用這種設計方案。在本方案中,整個接口的設計是在使用Xilinx公司提供的LogiCORE PCI v3.0的IP核(IP Core)的基礎上實現的。LogiCORE PCI v3.0是Xilinx公司提供的用于PCI總線接口設計的IP 核,在它的基礎上可以根據實際應用的需要很方便的定制和實現PCI總線接口。由于IP 核本身實現了配置空間以及總線命令的解碼和地址的鎖存,所以設計者只需要專注于PCI傳輸狀態機和本地控制信號的設計。采用這種實現方式雖然比直接使用PCI接口專用芯片更為復雜,但是整個設計可以集成于一片高可靠性的FPGA之中,從而有效的提高了整個設計的可靠性。
        2.2 DMA控制模塊的設計
        為了滿足高速率數據傳輸的需要,并且在數據傳輸的同時不占用CPU,所以必須采用DMA的方式來傳輸數據。由于PCI總線上的DMA傳輸是通過PCI設備本身的DMA控制功能來完成的,而不是依靠總線上單獨的DMA控制設備來實現,所以在設計時必須實現DMA控制模塊。DMA控制模塊在數據傳輸周期發出控制命令以及更新地址。其中傳輸地址控制可以依賴一組傳輸地址寄存器來實現,而傳輸的控制可以通過PCI傳輸狀態機給出的信號來產生控制信號。
        2.3 存儲緩沖區模塊的設計
        為了保證數據的連續不間斷傳輸,每次傳輸只傳輸半個緩沖區的數據,而外部數據總是在兩個半區之間切換儲存,因此不會造成數據的丟失和不連續。
        一個典型的PCI總線上的寫數據傳輸時序如圖2-2中所示。首先用于傳輸的數據必須要提前從本地的緩沖區中讀出,然后出現在總線AD信號線上,當IRDY信號和TRDY信號同時有效時(為低電平時),被目標設備獲取。當傳輸結束時,最后一個從本地緩沖區中預讀出的數據(如圖中陰影的數據3),并不會被傳輸到目標設備。而本地的緩沖區控制模塊會認為數據已經傳輸,這時如果不采取措施就會導致數據丟失。

        500)this.style.width=500;" border="0" />
        在傳輸結束的時候,PCI總線傳輸狀態機會切換到備份數據的狀態,在這個狀態下,緩沖區的控制模塊會檢測是否存在已經讀出而未傳輸的數據,如果存在這樣的情況,控制模塊則采取措施防止數據丟失。對于雙口RAM這種存儲結構而言,數據讀出以后,只要沒有在同一地址寫入數據,那么數據是不會丟失的,因此要實現前面的功能只需要簡單的修改一下讀指針目前指向的地址就可以實現。
        2.4 傳輸控制模塊的設計
        傳輸控制模塊的核心是一個傳輸控制狀態機。它通過檢測存儲緩沖區的情況,來控制傳輸的進行。當輸入緩沖區中數據存儲滿或輸出緩沖區空以后,自動請求一次數據傳輸,由此保證數據流的連續。
        3 驅動與應用程序的開發
        驅動程序的開發是采用標準的WDM(Windows Driver Model)設備驅動程序模型,利用DriverStudio的驅動程序開發工具包來進行開發的。關于WDM的驅動程序模型,限于篇幅的原因就不作詳細的介紹。
        一個典型的數據傳輸過程是這樣進行的。首先驅動程序完成設備的初始化,如在內存中開辟緩沖區,硬件設備的初始化等等。完成初始化以后硬件就處于等待傳輸的狀態。當用戶通過應用程序發出傳輸數據的指令以后,驅動程序處理這一請求,并對硬件發出指令開始數據傳輸。由于數據傳輸的時間可能比較長,所以應用程序采用多線程的設計,傳輸線程會等待驅動程序在傳輸結束時發出的信號,而同時應用程序還能完成與用戶的交互工作。當傳輸結束后,驅動程序向硬件寫入停止指令,中止傳輸,并向應用程序發出傳輸結束信號。驅動程序對應用程序的通信是通過創建Win32事件來實現通信的。
        4 設計的仿真和驗證
        為了驗證設計的正確性,首先需要對設計進行邏輯功能仿真。為了驗證設計是否能正常的工作在PCI總線上,那么就需要仿真PCI總線上的各種總線事務,驗證設計是否能響應各種總線命令。仿真是在Xilinx公司提供的PCI總線接口仿真實例的基礎上實現的。按照PCI總線規范設計了一個簡單的總線仲裁器,用來仿真主設備申請總線占用的過程。此外還設計了一個PCI總線上的從設備,用來仿真主設備與從設備之間的數據傳輸過程。此外還仿真了總線上對設備的自動配置過程。通過觀察仿真波形圖,發現設計完全滿足PCI總線的數據傳輸規范,而且數據傳輸的結果正確。
        在仿真驗證正確的基礎上,將設計實現于Xilinx公司型號為virtexII2v1000-fg456-5的FPGA中。將數據接口卡安裝于測試計算機上,利用數據接口卡的自回路數據傳輸功能以及單向輸入輸出功能,對系統進行了驗證和性能測試,結果如表格1中所示。
        從結果可以看出,當輸入輸出速率保持在160Mbps以下時,可以保證自身回路數據傳輸無錯進行,但是當速率提高到200Mbps以后,傳輸就會出現數據丟失,導致接收的數據與發送數據不一致。因此,為了保證數據的無錯傳輸,自身回路數據傳輸測試速率應該不高于160Mbps。

        500)this.style.width=500;" border="0" />

        單向輸入輸出測試時,當輸入速率或者輸出速率小于300Mbps,系統的功能是完全正確的,而當工作于400Mbps的時候,則會出現數據丟失的情況。與自身回路傳輸測試的數據比較可以看出,當在自身回路數據傳輸測試速率為200Mbps的時候,由于此時系統接收和輸出同時進行,共同分時使用總線,此時相當于單獨接收或者單獨輸出測試時400Mbps的傳輸速率。兩次測試結果的一致性也說明了測試的可靠性。
        5 結語
        通過對系統的測試驗證,證明了本設計能夠完全滿足高速實時數據流對數據采集存儲系統的要求。為了方便以后進一步的工作,在測試時也對緩沖區大小和傳輸速率之間的關系進行了簡單的測試。將緩沖區大小從8KB改變到16KB以后,傳輸速率只是稍微有些提高,對性能的改善十分不明顯。結果說明簡單的擴大硬件緩沖區并不會帶來數據傳輸速率的明顯改觀,同時還會占用FPGA內部寶貴的RAM資源。究其原因在于,數據傳輸速率主要受到32位/33MHzPCI總線帶寬自身的限制,以及硬盤讀寫的峰值速率的限制,而并不是緩沖區大小的影響。可以預見如果采用64位/66MHz的PCI總線并采用更多的磁盤來構成RAID磁盤陣列以提高磁盤讀寫速率,那么整體的性能會有很大的提升。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 贺兰县| 建湖县| 红安县| 茌平县| 遂平县| 巴林左旗| 天水市| 同江市| 孟州市| 禄丰县| 如皋市| 平舆县| 武隆县| 三台县| 察隅县| 卢氏县| 东至县| 德惠市| 陵水| 祁阳县| 大宁县| 夏河县| 广宁县| 仙居县| 左贡县| 通许县| 达拉特旗| 庄浪县| 蓬莱市| 宕昌县| 牡丹江市| 丹江口市| 伊吾县| 辽阳市| 济宁市| 登封市| 湛江市| 钟山县| 宣威市| 江孜县| 瑞丽市|