国产专区欧美精品,911国产精品,国产精品人人爽人人做我的可爱,欧美午夜影院一区

基于NI LabVIEW 2010和NI RIO構建精確定時的嵌入式系統

2014-10-17 來源:微波射頻網 字號:

1、介紹

在構建嵌入式系統時,不論是為了確保控制循環能夠可靠的執行,還是保證I/O信號能夠被及時響應,或是讓處理速度達到系統應用的要求,定時都是其中的關鍵。構建一套可以滿足定時要求的系統,首先從硬件開始進行選擇,必須在尺寸、功耗、處理能力和延遲等方面進行很好的平衡。另外,嵌入式系統的軟件在執行調節、中斷響應和計算任務之間的時間平衡幾個方面扮演著重要的角色。

在考慮定時性能的前提下進行嵌入式軟硬件集成將是一件極其耗時的挑戰。但是,在NI LAbVIEW 2010軟件平臺和RIO硬件平臺的幫助下,構建一套可以滿足絕大部分系統應用需求的可靠的精確定時系統所需要付出的代價將極大降低。繼續深入下去,了解集成了實時CPU和FPGA的NI RIO硬件系統,以及定時特性是如何與LabVIEW 2010無縫集成的,可以幫助工程師、科學家和嵌入式設計人員們利用這套硬件系統構建出健壯的實時響應系統。

2、集成實時CPU和高性能FPGA的NI RIO硬件

NI嵌入式硬件的目標系統是基于RIO架構的,包括了一個一般用于運行實時操作系統的CPU和一套或多套FPGA。在這樣的集成架構下,用戶可以在FPGA上完成那些需要納秒級定時精度或者大量并行的任務;在CPU上完成諸如浮點計算等密集計算任務。FPGA和CPU之間通過PCI總線進行通信,通過NI-RIO驅動模塊提供的直接明了、功能強大的數據傳輸接口, 使用LabVIEW或C可以很容易的進行相關開發。

最終的結論是:NI-RIO是可以適用于范圍廣泛的嵌入式原型設計,并且具有很高靈活性的平臺。同時,由于NI-RIO框架是很多不同NI硬件目標系統的標準架構,例如NI Single-Board RIO和NI CompactRIO,用戶在部署軟件時,不論是堅固型系統還是經濟型系統,都可以最大限度地實現代碼的復用。

基于NI LabVIEW 2010和NI RIO構建精確定時的嵌入式系統

圖1. NI-RIO嵌入式設備均基于集成了CPU、FPGA和模塊化I/O的統一架構

例如,Ventura市航空中心使用LabVIEW和NI Single-Board RIO開發了一套火情監控系統,用于在聯邦快遞公司的運輸機上防控火災。在這套系統中,實時CPU負責運行確定性控制算法、網絡通訊和數據記錄,FPGA硬件上則執行其他的關鍵任務。

3、LabVIEW 2010和內置的定時特性簡化了確定性可靠系統的編程

LabVIEW不單可以使用圖形化的編程界面來編寫目標CPU(包括了運行實時操作系統的CPU)和FPGA(包括RIO目標硬件上的FPGA)程序,同時LabVIEW圖形化編程語言本身也是基于定時和同步概念而設計的。下面的一些例子將說明,LabVIEW結合Real-Time模塊和FPGA模塊是如何讓嵌入式系統的定時變得簡潔明了的。

4、LabVIEW Real-Time模塊集成的定時特性

使用Real-Time模塊和Timed Loop進行確定性的閉環系統編程

LabVIEW 2010 Real-Time模塊把LabVIEW圖形化編程擴展到了NI實時硬件系統(包括RIO設備)特定的第三方PC上。根據使用的目標硬件不同,LabVIEW Real-Time模塊會自動在目標硬件上部署與標準的VxWorks或ETS實時操作系統相對應的組件,以保證確定性和精確的實時性。

當使用LabVIEW Real-Time模塊進行閉環控制系統的編程時,通過使用Timed Loop,只需要輕點幾下鼠標,就可以實現周期性執行代碼,硬件控制循環速率同步,定義多種循環執行優先級,甚至可以指定某一循環在某一個CPU內核上執行。另外,用戶還可以選擇KHz、MHz或者自定義的外部時鐘來作為循環定時的基準時鐘。

基于NI LabVIEW 2010和NI RIO構建精確定時的嵌入式系統

圖2. LabVIEW Timed Loop可以讓用戶通過簡潔明了的方式實現配置循環定時、通過硬件I/O進行同步、控制實時代碼執行優先級、指定代碼執行CPU內核等

在多系統間實現Timed Loop的同步

在使用LabVIEW Real-Time模塊編程的嵌入式硬件設備上,用戶可以使用IEEE 1588同步協議進行多系統間的同步,以保證給定的任務在多系統上是同步執行的。根據用戶使用的硬件設備不同,IEEE 1588同步協議可以通過軟件、硬件或者軟硬結合這幾種不同方式來實現。

使用LabVIEW Real-Time模塊實現多硬件設備間的軟件同步,將Timed Loop設置為使用絕對時間源即可。在設置好Timed-Loop后,只需要再連接一個起始時間戳,然后選擇運行,就可以在多硬件設備間同時開始循環的執行。

基于NI LabVIEW 2010和NI RIO構建精確定時的嵌入式系統

圖3. 用戶可以使用LabVIEW Timed-Loop來實現IEEE 1588同步協議,在多個分布式的嵌入式設備中實現同步控制(上圖為NI CompactRIO)

使用NI Real-Time執行跟蹤工具包進行定時的細節分析

在LabVIEW Real-Time模塊下使用Real-Time執行跟蹤工具包,可以獲取線程和子VI的執行時間、優先級、繼承關系等多種詳細信息。通過這套工具包,不但可以幫助用戶優化實時程序的執行情況,更可以幫助用戶發現諸如優先級設置不當、資源競爭等潛在的不穩定因素。

在實時硬件上確定性的運行m文件

如果已經有了現成的m文件,用戶可以通過LabVIEW MathScript RT模塊,在使用LabVIEW Real-Time模塊編程的嵌入式系統中使用這些代碼。這種方式從根本上改變了以往從m文件到實時硬件代碼的復雜而繁瑣的遷移過程,使其變得簡潔而迅速。只需要將用戶的m文件通過MathScript節點嵌入到LabVIEW圖形代碼中,再在LabVIEW項目中將其拖放到實時硬件上,整個遷移過程就完成了。

5、LabVIEW FPGA模塊內置的定時特性

使用單周期定時循環優化FPGA程序

LabVIEW 2010 FPGA模塊中的單周期定時循環移除了循環內部的寄存器,用戶可以在其中最優化地運行與之相兼容的代碼。這項措施可以使那些需要在硬件上可靠運行的關鍵操作達到最高40MHz的循環速率。另外,在單周期定時循環內執行的代碼占用的FPGA資源更少,從而可以節省出更多的資源給其他的任務。

基于NI LabVIEW 2010和NI RIO構建精確定時的嵌入式系統

圖4. LabVIEW FPGA模塊中的單周期定時循環可以讓用戶的這部分代碼達到最高40MHz的循環速率

使用循環定時器來調整FPGA代碼的執行

想要在FPGA上周期性地執行操作其實很簡單,只需要在LabVIEW FPGA的代碼框圖里添加一個循環,然后在其中放置一個循環定時器就可以了。循環定時器的定時控制可以根據需要選擇循環周期為納秒級、微秒級或者毫秒級的不同硬件時鐘作為定時基準。在默認的40MHz時鐘速率下,循環定時器可以實現25ns整數倍的定時周期。

通過中斷對實時程序和FPGA程序的定時進行同步

在FPGA硬件系統中,用戶可以在FPGA程序中產生中斷,通知實時程序各種事件的發生,例如數據采集完畢,發生錯誤,任務已經完成等等。使用LabVIEW FPGA模塊中的相關中斷函數結合LabVIEW Real-Time模塊中的Wait on Interrupt方法,用戶可以實現整個嵌入式系統中CPU和FPGA之間的同步。一個系統中最多能夠使用32個中斷。

使用關鍵路徑高亮幫助確定系統瓶頸。

在開發過程中,確定和修正時序錯誤的FPGA代碼是一件耗時費力的事情。為了簡化這一過程,可以使用LabVIEW FPGA模塊的關鍵路徑高亮功能來突出關鍵路徑上的每一步操作,迅速跳轉到出現瓶頸的代碼部分,編寫更高效的代碼或者流水線來對瓶頸進行修正。

基于NI LabVIEW 2010和NI RIO構建精確定時的嵌入式系統

圖5. LabVIEW FPGA模塊的關鍵路徑高亮功能可以幫助用戶迅速確定FPGA程序中的瓶頸所在

6、在您的下一次嵌入式原型或設計中使用LabVIEW和NI RIO

NI RIO硬件設備和LabVIEW由于其短周期高可靠的開發特性,已經在數以千計的嵌入式原型或工程產品中得到成功應用。當您在計劃下一次的嵌入式設計時,請考慮這樣一套功能強大、擴展性強的成熟系統為您所帶來的時間和金錢成本上的節省,以及LabVIEW的圖形化編程、內置的定時特性以及數以百計的IP內核幫助您縮短的開發周期。

主題閱讀:NI  LabVIEW
主站蜘蛛池模板: 呼伦贝尔市| 弥渡县| 岑巩县| 海门市| 浑源县| 抚松县| 隆安县| 喜德县| 靖州| 余庆县| 白河县| 巴中市| 清远市| 大宁县| 游戏| 治县。| 怀来县| 上饶县| 古田县| 深水埗区| 定结县| 九江县| 阿拉善左旗| 乌鲁木齐县| 三亚市| 哈密市| 穆棱市| 竹山县| 两当县| 邵武市| 营山县| 绥德县| 新竹市| 商洛市| 云阳县| 黑水县| 诸城市| 车致| 枣庄市| 泸西县| 阳新县|