使用LabVIEW FPGA模塊設計IP核
對于利用LabVIEW FPGA實現(xiàn)RIO目標平臺上的定制硬件的工程師與開發(fā)人員,他們可以很容易地利用所推薦的組件設計構建適合其應用的、可復用且可擴展的代碼模塊。基于已經(jīng)驗證的設計進行代碼模塊開發(fā),將使現(xiàn)有IP在未來應用中得到更好的復用,也可以使在不同開發(fā)人員和內部組織之間進行共享和交換的代碼更好服用。
本文引用地址:http://www.ex-cimer.com/article/193759.htm代碼模塊
任一項軟件開發(fā)工作均包括函數(shù)、子例程、對象和代碼模塊,以及其他較大架構的基礎構建模塊的開發(fā)。當設計一個應用時,各個函數(shù)與操作均被識別和實現(xiàn)。然后,這些構建模塊被組合與集成以形成更大的應用。通過長期開發(fā)不同應用的過程,一個開發(fā)小組或團隊將創(chuàng)建表示常見操作的代碼模塊庫,并對其進行復用以更快速地構建未來的應用。開發(fā)這樣的代碼庫目的是通過一次構建和測試函數(shù)并多次復用它,減少開發(fā)的總工作量。模塊化設計,除了促進現(xiàn)有代碼的復用外,還提高了代碼的可測試性與可維護性,從而允許開發(fā)人員和設計人員關注于應用相關的特性和代碼段。
每種編程語言以及某些情況下的編程環(huán)境都有一個優(yōu)選的代碼模塊設計模型,以便改進代碼模塊的實現(xiàn)與集成。該優(yōu)選設計可以因具體的開發(fā)人員而異,但通常一個開發(fā)組會根據(jù)共同的需要和考慮確定一組共享的設計準則。作為一種編程語言,LabVIEW自身擁有一組供世界各地的程序人員開發(fā)子VI使用的指導方針,以便子VI可以容易理解、而且運用于不同應用并由不同開發(fā)人員維護。LabVIEW FPGA,作為LabVIEW的一個子集,擁有其自身的一組用于利用FPGA特定行為構建代碼模塊(子VI)的指導方針,以便它們可以有效運用于廣泛的基于FPGA的應用。
可復用代碼——知識產(chǎn)權
FPGA平臺上的可復用代碼模塊通常稱為IP(知識產(chǎn)權)核——從傳統(tǒng)芯片設計長時間演化來的名稱。在LabVIEW FPGA中,這樣的IP核由常用于LabVIEW編程和LabVIEW工具集的子VI組成。LabVIEW FPGA中的子VI支持我們一次實現(xiàn)不同的函數(shù)與操作,優(yōu)化FPGA上的實現(xiàn),然后將其運用至不同的應用。為使這樣的子VI可以與不同的重疊需求和架構方便地協(xié)同使用,我們需要遵循某些基本指導方針,以確保子VI廣泛可用,而不是專為一項特定應用而優(yōu)化。
為進一步促進和改善LabVIEW FPGA IP的復用,代碼模塊應當除子VI源碼以外還包括一些組件。這些組件包括文檔、測試代碼和使用IP的基本范例。
在LabVIEW FPGA應用中,IP代碼模塊典型地用于一些操作的執(zhí)行,如通信協(xié)議(如SPI、I2C等)的編碼與解碼、數(shù)字信號處理、濾波、控制算法的實現(xiàn)、傳感器信號(如PWM、積分信號)的編碼/解碼和基準標定等。
開發(fā)LabVIEW FPGA IP的最基本指導方針便是,開發(fā)不僅獨立于其主應用、而且對其主應用不產(chǎn)生影響或不會有顯著要求的代碼模塊。IP代碼模塊與其主應用間的唯一需求或依賴性應當是子VI連接面板的接口。該文檔將闡述如何在LabVIEW FPGA IP中創(chuàng)建這樣的調用獨立的IP子VI,并展示一些相關范例。
I/O與資源的獨立性
為使LabVIEW FPGA IP便于應用于不同的應用,它應當獨立于任何輸入/輸出通道(I/O)或其他硬件資源,如FPGA塊存儲器。根據(jù)具體的應用,最終應用可以使用不同的RIO板卡或其他FPGA目標平臺。因此,IP代碼模塊不應根據(jù)一個特定類型的I/O資源進行編程。將IP模塊集成至最終應用的編程人員或開發(fā)人員將選擇使用某個特定的I/O資源。來自I/O資源數(shù)據(jù)與值,應當以參數(shù)的方式傳遞給IP模塊,或從IP模塊返回。
例如對于一個PWM輸出IP模塊,應用開發(fā)人員將為PWM輸出信號選用某條數(shù)字輸出線。在此例中,該PWM IP模塊應當產(chǎn)生并輸出信號的當前狀態(tài)。開發(fā)人員將把在更高層次VI中賦值給I/O資源。該I/O資源未嵌入在IP代碼模塊的框圖中。
圖1:一個調用PWM輸出IP代碼模塊(子VI)的應用VI的框圖
同樣的指導方針應用于任意輸入信號。例如,假設您在使用一個由數(shù)字濾波器設計工具包創(chuàng)建的模擬濾波器IP子VI,模擬數(shù)值應當自該濾波器子VI外部采集,然后傳遞給IP代碼模塊。
圖2:使用一個模擬濾波器IP子VI(直接FIR)。模擬數(shù)值在主VI采集并傳遞給濾波器IP。
獨立于I/O資源的IP代碼模塊的開發(fā),使其使用更為方便和靈活,并支持將其多次集成到一項應用,而不必定制該IP代碼模塊的每個實例。
塊存儲
除了I/O通道外,其他可能為LabVIEW FPGA IP使用的資源便是塊(用戶)存儲器。LabVIEW FPGA支持開發(fā)人員利用多個不同的函數(shù)訪問FPGA上的塊存儲器,其中包括存儲器讀/寫、FIFO、查詢表及其他函數(shù)。這些函數(shù)中的大多數(shù)均在塊存儲中創(chuàng)建了一個唯一的地址空間,以避免發(fā)生IP與該應用其他IP間的存儲器沖突。
然而,LabVIEW FPGA 8.0存儲器讀函數(shù)和存儲器寫函數(shù),對于其在作為當前FPGA功能特性一部分的任一VI中使用的所有實例,均使用了一個16 kB共有地址空間,這個共有地址空間被當前FPGA功能中任一VI的函數(shù)實例所使用。使用這些函數(shù)可能會與該應用其他部分使用的存儲器產(chǎn)生沖突,因此不應當使用這些函數(shù)。如果需要在利用LabVIEW FPGA 8.0(或者更早版本)開發(fā)的IP代碼模塊中支持隨機存儲訪問,您應當使用利用LabVIEW存儲器擴展應用程序創(chuàng)建的一個存儲器模塊。
在LabVIEW FPGA 8.20中,每個存儲器讀函數(shù)和存儲器寫函數(shù)引用一個特定的存儲塊(地址空間),典型情況下,它在LabVIEW項目中作為一項資源被創(chuàng)建。由于這些存儲塊在項目中被定義,因此,如果您將一個IP代碼模塊VI加載至一項新應用,它們不會自動轉遞給新的項目。為此,您可以在VI中定義一個存儲塊作為VI-Scoped存儲配置,而不是LabVIEW項目。這一VI-Scoped存儲塊可以在IP中創(chuàng)建并使用;對于任一使用該IP的新應用,它將被自動創(chuàng)建。
評論