<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的可重構智能儀器設計

          基于FPGA的可重構智能儀器設計

          作者: 時間:2011-10-08 來源:網絡 收藏
          3 可軟件

          本文引用地址:http://www.ex-cimer.com/article/150135.htm

            3.1 可軟件結構

            可的軟件結構如圖 5 所示。

            系統軟件模塊庫:包含軟件控制模塊、RS232 通訊模塊、模數轉換模塊、數模轉換模塊、 顯示模塊和DI、DO 開關量模塊。通過軟件控制模塊選擇其他的模塊進行組合就可以實現不 同的軟件功能,從而達到重構的目的。

            HAL 程序庫實際上包含了各種不同的硬件驅動,包括MAX232 驅動、AD 轉換芯片驅 動、DA 轉換芯片驅動、 的I/O 引腳驅動等。

            通過選擇軟件模塊庫中的軟件模塊,就可以調用 HAL 程序庫中相應的硬件驅動,從而 實現上層應用程序對底層硬件的控制。軟件模塊的可重構性對應了底層硬件的可重構性。

            3.2 HAL 的可重構儀器軟件開發(fā)

            硬件抽象層(HAL, Hardware Abstraction Layer),是指在應用程序和系統硬件之間的一 個系統庫(System Library),為嵌入式系統與硬件通信的程序提供簡單的設備驅動接口。 SOPC Builder 是一個自動化的SOPC 硬件系統工具。HAL 的軟件系統由兩個Nios II 工 程所構建,用戶的程序包含在一個工程中(用戶應用工程),該工程依賴一個獨立的系統庫 工程(HAL 系統庫工程)。用戶應用工程包含開發(fā)的所有代碼,編譯該工程可以產生可執(zhí)行 文件。HAL 系統庫工程包含涉及處理器硬件接口的所有信息。系統庫工程依賴于由SOPC Builder 產生的擴展名為.ptf 的Nios II 處理器系統。

            由于該工程的依賴結構,如果 SOPC Builder 生成的系統改變(即.ptf 文件已修改),則 Nios II IDE 管理HAL 系統庫并且修改驅動配置來正確的反應系統硬件。HAL 系統庫將用戶 程序與底層硬件變化分離開來,這樣,用戶可以不用考慮自己的程序是否與目標硬件匹配來 開發(fā)和調試代碼,簡而言之,HAL 系統庫的程序和目標硬件是同步的。

            由于 HAL 系統庫中包含有各種不同的硬件驅動,用戶可以根據特定的需要調用 HAL 系統庫中的相應硬件驅動,從而實現對不同硬件系統的控制,來達到可重構的目的。本文所設計的基于HAL 系統庫的可重構智能儀器軟件系統如6 示。在系統軟件控制界 面中選擇了某一功能后,該功能就會調用HAL 程序庫中相應的一些硬件驅動,從而實現對 硬件設備的控制。

            4 系統分析

            基于 的可重構智能儀器主要是針對目前測試儀器生產出來后功能不能改變、維護 費費用過高、資源浪費嚴重等問題。提出基于 的可重構智能儀器的硬件結構和軟件結 構,實現了八種不同的功能,借鑒虛擬儀器的思想,開發(fā)了基于FPGA 的可重構智能儀器演 示系統,該系統具有A/D 采集、D/A 輸出和開關量控制三種功能。

            本文作者創(chuàng)新點:基于SOPC技術進行可重構設計;采用了FPGA增強型配置芯片EPC16; 軟件重構采用了應用框架的復用技術。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();