新聞中心

EEPW首頁 > 測試測量 > 設計應用 > 使用LabVIEW FPGA模塊設計IP核

使用LabVIEW FPGA模塊設計IP核

作者: 時間:2012-06-11 來源:網(wǎng)絡 收藏

33.gif

圖3:使用 8.20 VI scoped指定存儲塊

相似地,使用塊存儲器來緩存數(shù)據(jù)的 FIFO函數(shù),是基于一個在項目中創(chuàng)建的FIFO資源。在LabVIEW 8.0中,如果您決定使用一個IP代碼模塊中的FIFO,該IP的用戶需要在應用項目中手動創(chuàng)建相關的FIFO資源。為免除對IP代碼模塊用戶的這一額外需求,我們建議對于LabVIEW FPGA 8.0中的任何IP代碼模塊避免使用FIFO。

在LabVIEW 8.20中,您可以選擇創(chuàng)建一個VI-Scoped FIFO配置以一個VI專用FIFO存儲塊。這一操作與指定VI-Scoped存儲塊的方式相同。

44.gif

圖4:使用LabVIEW FPGA 8.20 VI范圍指定FIFO

無論存儲器如何被IP代碼模塊或應用的其他部分使用,都從FPGA上可用的公共塊存儲器上分配存儲空間,存儲空間的大小取決于目標平臺中所使用的特定FPGA。因此,對于IP代碼模塊的使用者,重要的是知道IP使用了多少存儲器。這一信息應當包含在文檔和上下文感知的幫助文件中。使用IP模塊的開發(fā)人員必須明確了解應用中不同部分所使用的塊存儲器的大小,以防止編譯過程中可能的存儲溢出。

定時獨立性

為使IP模塊能夠自由運用于LabVIEW FPGA應用中,該代碼模塊不應對主應用的定時產(chǎn)生明顯影響。例如,在處理來自一個積分編碼器的一對數(shù)字輸入信號時,解碼位置信息的代碼模塊不應當顯著延遲調(diào)用它的應用程序。這就意味著,該IP代碼模塊子VI應當快速、高效地執(zhí)行其操作。在大多數(shù)情況下,這要求子VI中不應存在任何循環(huán)結構。而且,子VI也不應使用任何等待或其他延遲代碼運行的定時函數(shù)。如若定時或循環(huán)功能需要作為主應用的一部分,那么應當在調(diào)用它的VI中實現(xiàn)這些功能。下面的框圖展示了一個積分解碼器的實現(xiàn)。該范例使用局部變量存儲IP代碼模塊一次調(diào)用以及下一次調(diào)用(其詳細描述見下段)的狀態(tài)信息。

55.gif

圖5:一個積分解碼器IP代碼模塊范例

使IP代碼模塊定時獨立于調(diào)用者的指導方針,存在一個例外:如果該IP代碼模塊目的在于為其調(diào)用應用提供定時功能。此類IP代碼模塊的例子便是一個數(shù)據(jù)采集掃描時鐘例程。下面的框圖展示了一個簡單的IP代碼模塊,它實現(xiàn)了一個具有附加功能特性的掃描時鐘,附加功能就是驗證調(diào)用的應用程序是否能夠滿足指定的定時。這一增強的掃描時鐘可以快捷運用于多個不同的應用中。在此例中,IP代碼模塊的操作與定時依賴性應當以文檔的形式詳細描述,以便該IP的用戶了解其應用的定時行為將受到怎樣的影響。

66.gif

圖6:一個掃描時鐘IP代碼模塊范例

框圖獨立性

LabVIEW FPGA IP代碼模塊可以運用于使用不同編程模型的廣泛應用中。許多LabVIEW FPGA特性采用while循環(huán)和for循環(huán)編寫而成,這些循環(huán)并沒有對代碼、函數(shù)和其中所使用的VI作太多限制。然而,單周期定時循環(huán)可以運用于一些要求更短周期時長的應用。因此,如果可行的話,IP代碼模塊應當通過編寫使其可以運用于一個單周期定時循環(huán)中。這將對IP代碼模塊內(nèi)的代碼施加一定的限制。然而,這些限制與前述討論定時獨立性的部分中所介紹的指導方針相似。

避免在您的IP代碼模塊中使用任何循環(huán)。

使用局部變量存儲您的IP代碼模塊的一次調(diào)用以及下一次調(diào)用的狀態(tài)信息。

避免在您的IP模塊中使用任何定時函數(shù)。

避免在您的IP代碼模塊中使用與單周期定時循環(huán)不兼容的函數(shù),如商余函數(shù)。

一些應用或許使用了一個IP代碼模塊的多個拷貝,該代碼模塊應當無縫支持這樣的操作。如果代碼模塊子VI使用了任何局部變量存儲狀態(tài)信息,那么該子VI應當設置為可重入。這樣將在編譯過程中創(chuàng)建多個FPGA之上的子VI的實例,每個實例都擁有其專用存儲空間用于存放狀態(tài)信息。

文檔、測試與范例

在IP代碼模塊開發(fā)過程中,文檔、測試和范例構造也都應當成為開發(fā)過程中有意為之的一部分。其他不熟悉該代碼模塊的開發(fā)人員將在其自己的應用中使用該代碼并且需要掌握關于如何正確使用該IP的信息。

作為實現(xiàn)的一部分,每個將為其他開發(fā)人員使用的子VI都應當包含有LabVIEW上下文幫助。當幫助窗口打開并且鼠標光標懸浮于子VI上方時,該上下文幫助將顯示在LabVIEW中。該文檔應當包含關于VI操作/功能的一個基本描述,以及關于每個輸入輸出參數(shù)的基本描述。還應當注意任何其他關于子VI的編程限制或約束,如在單周期定時循環(huán)中的使用或塊存儲的利用率。關于VI及其參數(shù)的更詳細描述應當包含在一個單獨的用戶或參考手冊文檔中。

77.gif

圖7:PWM發(fā)生器IP的上下文幫助范例

一旦完成了IP代碼模塊的基本實現(xiàn),測試與范例構造就成了開發(fā)過程中的下一個邏輯步驟。測試將確保該IP代碼模塊在各種不同的應用中完成預期的操作。IP代碼模塊的測試應當仔細進行,覆蓋不同的輸入值和不同的編程場景,而不是僅僅覆蓋最初所考慮的內(nèi)容。對于每個IP,應當完成多個實例的測試以及在不同編程結構中的使用。

最終的IP代碼模塊應當包括一些基本范例和可能更高級的范例,以闡述該代碼模塊如何在應用中使用。通常,對于圍繞某個特定的IP的一項應用,這些范例將成為工作的起點。



評論


相關推薦

技術專區(qū)

關閉