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