Overview
將第三方 IP 整合至 NI LabVIEW 軟體之後,即可擁有已針對 Xilinx FPGA 微調的多組演算法,並可再使用程式碼達到絕佳效能。LabVIEW FPGA Module 提供 2 種可匯入外部 IP 的方法:Component-Level Intellectual Property (CLIP) Node,還有整合 Xilinx Core Generator 的 IP Integration Node。此篇技術文章將解釋此 2 種方法。
Table of Contents
CLIP Node 介紹
CLIP Node 架構可將現有 FPGA IP 匯入 LabVIEW FPGA 硬體,並透過 LabVIEW FPGA 程式圖溝通硬體。IP 可為直接的 VHDL 形式,或如 EDIF Netlist 的中介 (Intermediate) 檔案。此篇技術文章將討論下列 2 種 CLIP:
User-defined CLIP - 可讓 VHDL 程式碼直接溝通 FPGA VI。
Socketed CLIP - 可讓 VHDL 程式碼直接溝通 FPGA VI,還有 LabVIEW FPGA Module 尚未銜接的 FPGA 針腳。某些 FPGA 系統可於 FPGA 中定義固定的 CLIP 插槽,以利使用者插入 Socketed CLIP。
一般來說,此功能是專提供予「僅具備初階數位設計經驗與 VHDL 基本知識」的使用者。若需要最新資訊,請參閱 LabVIEW FPGA Module 輔助說明中的「Using VHDL Code as Component-Level IP (FPGA Module)」。此篇文章將可進一步提供相關資訊。
透過 CLIP Node,不需變更任何程式碼即可輕鬆匯入 IP,且只要是可用於其他 FPGA 平台的作業,幾乎均可示例 (Instantiate) 之。
- 透過 LabVIEW 程式碼以平行執行 VHDL 程式碼
- 於多重時脈域中執行 VHDL 程式碼
- 包含編譯作業中的限制
- 直接溝通相同硬體上的 I/O 針腳
於 FPGA 應用中使用 CLIP
接著大略說明在 FPGA 應用中使用 CLIP 的步驟:
- 建立或擷取 IP
- 使用 Configure Component-Level IP Wizard 以定義 IP 介面,並建立 Declaration XML 檔案
- 使用 FPGA Target Properties 對話框,將 DEclaration 檔案新增至專案
- 將 CLIP 項目新增至專案
- 於 FPGA VI 中使用 CLIP 項目
建立或擷取 IP
可重複使用任何 CLIP 的 FPGA IP。若使用者已具備 VHDL (或其他數位設計) 經驗,則當然可撰寫程式碼,再透過 CLIP 將之匯入。但在一般情況下,往往必須透過 CLIP 匯入現有 IP。此 IP 可能事先以內部程式碼撰寫而成,或從其他程式碼所擷取而得。由於 NI 本身就是使用 LabVIEW FPGA 中的 Xilinx FPGA 與 Xilinx 工具鏈,因此可輕鬆透過 Xilinx Core Generator 建立相容的核心。同樣的,亦可使用 Xilinx 嵌入式開發組合 (EDK) 建立所需的軟體微處理器。此外,許多第三方 IP 亦提供多樣的訊號處理、匯流排解決方案,或特殊應用核心。
只要是在 VHDL 中擷取的 IP,使用者均可直接將之寫入,或透過 Netlist 檔案將之匯入。若要利用其他如 Verilog 的硬體描述語言 (HDL),則可使用 Xilinx 工具,先從 Verilog 程式碼建立 Netlist。當要開始使用 CLIP 時,必須先考慮數個要點 - 特別是資料傳輸時的資料類型限制。

表 1. 可用於 CLIP 介面中的資料類型
若 IP 所使用的邏輯向量均不屬於這些資料類型之一,則必須撰寫 VHDL 存取權 (Wrapper),以延長、截斷,或解開標準的 LabVIEW 類型,以吻合 IP 的資料寬度。可參閱範例線上教學,以了解應如何使用 VHDL Wrapper,將 12 位元數字擴充 16 位元,以利於 LabVIEW 中使用。此外,可參閱 LabVIEW FPGA Module 的輔助說明,了解 IP 的其他考量要點,包含外部時脈、跨時脈域、使用同步化暫存區、建置非同步化重設作業,並能搭配限制與層級。
使用 Configure Component-Level IP Wizard 以定義 IP 介面,並建立 Declaration XML 檔案
若要將 IP 的輸入與輸出對應至 LabVIEW 的 I/O,則可使用 Configure Component-Level IP 精靈功能建立 XML 檔案,以定義必要的 IP 特性。可對 FPGA 系統按下滑鼠右鍵,並點選 Properties。則 Properties 對話框將提供標示為「Component-Level IP」的區塊。按下「Create File」以建立 XML 檔案。
圖 1. 點選「Create File」以定義 Declaration XML 檔案。
選擇要代表 Top-level Component IP 的 VHDL 檔案。點選「Next」以繼續。
圖 2. 新增 Top-level Synthesis 檔案。
精靈程式中的提示功能,將設定 Declaration XML 檔案。
宣告 FPGA 系統屬性中的 CLIP
一旦建立 XML 檔案,為 IP 定義 LabVIEW 的介面之後,即必須宣告 (Declare) 專案中的 CLIP。可對 FPGA 系統按下滑鼠右鍵,並點選 Properties。則 Properties 對話框將提供標示為「Component-Level IP」的區塊。按下「Add」以宣告 CLIP 函式,並從瀏覽對話框中選擇 XML 檔案。
圖 3. 當要於 FPGA 系統上宣告 CLIP Node 時,系統將顯示此對話框。按下「Add」以瀏覽所需的 XML 檔案。
一旦選擇 XML 檔案而宣告 CLIP 之後,CLIP 宣告名稱 (於 XML 檔案中定義) 將與檔案路徑一同顯示。在此對話框中,使用者可針對所要匯入的不同 IP 區塊,宣告多個 CLIP Node。
將 CLIP 項目新增至 LabVIEW 專案
宣告 FPGA 中的 CLIP,並不會實際將之新增至專案。由於使用者可在單一 FPGA 上,為 1 組 CLIP 示例 (Instantiate) 多個實例 (Instance),因此必須以額外步驟將 CLIP 新增至專案。只要將 CLIP 連至 XML 檔案之後,即可對 FPGA 系統按下滑鼠右鍵,並點選 New » Component-Level IP。接著對話框可讓使用者選擇所需的 CLIP、給予此實例 1 個專屬名稱,再透過「Clock」訊號類型選擇時脈,以連接 CLIP 中的任何線路。

圖 4. 當要將 CLIP 的實例新增至專案時,系統將顯示此對話框。選擇 CLIP、將之命名,並設定時脈。
一旦按下對話框的 OK 之後,此 CLIP 與所有相關的輸出/入均將顯示於專案中,且標記為此實例名稱。

圖 5. 新增 CLIP 之後的專案,並顯示 IP 的所有 I/O 點。
於 CLIP 與 FPGA VI 之間傳送資料
到這裡為止,已經可於 CLIP 與 FPGA VI 之間傳送資料。若要開始傳輸資料,只要針對所需的 I/O 點,將之從專案拖曳至 FPGA 程式圖中即可。Your IP should have documentation on how to use the IP.舉例來說,許多 IP 區塊均使用某些類型的交握線路,以利傳輸資料。這些線路往往標示為「Data valid」或「Enable」。可透過 LabVIEW 邏輯,於正確時間傳送正確數值,以運作此 IP。使用者可將 CLIP I/O 置於 Single-Cycle Timed Loop (SCTL) 之內或之外。但請注意,若置於 SCTL 之內,則可能必須考量 Clock Domain Crossing (CDC) 並使用同步化暫存區。
圖 6. 完成的程式圖中央正運行 CLIP 的 Input/Output 節點。
IP Integration Node 介紹
IP Integration Node 即為 IP 存取權 (Wrapper),可根據 .xco 或 . vhd 檔案而斷行 (Warp) Xilinx IP 或客制化的 VHDL 模組。該節點並提供簡單易用的精靈功能,可逐步匯入檔案並設定介面。亦可支援精確週期的協同模擬,還有 FPGA 硬體執行作業。透過 IP Integration Node,可於 LabVIEW FPGA 應用中,輕鬆利用現成的第三方 IP。下列範例將透過 Xilinx Core Generator 建置此節點。
- 找到必要的 Xilinx 開發工具
- 產生 IP 核心
- 將 IP Integration Node 整合至程式圖中
找到必要的 Xilinx 開發工具
先從 C:\NIFPGA\programs\Xilinx11_5\ISE\bin\nt\coregen.exe 路徑中找到 Xilinx Core Generator。其內有大量 IP 核心可用以開發多種演算法。
產生 IP 核心
以 LabVIEW 所支援的 FPGA 系統建立新專案,如 Virtex2 xc2v3000 系統 (即 NI cRIO-9104 機箱的 FPGA)。從 IP Name 清單中選擇所需的 IP 函式。再按照相關步驟從 CoreGen 產生 IP 核心。
圖 7. 透過 Xilinx Core Generator 工具,即可產生 Xilinx IP。
將 IP Integration Node 整合至程式圖中
以 Xilinx Core Generator 專案所使用的相同 FPGA 系統,建立另 1 個專案。於 FPGA 系統之下建立新 VI。在新的 VI 中,可從程式圖上的 Programming 面板拖曳出 IP Integration Node,再對該節點連按 2 次滑鼠。再使用 IP Integration Node Properties 精靈,將 IP 整合至 LabVIEW FPGA Module。
在 IP Integration Node Properties 精靈的第一頁上,可將所有相關的 .vhd 與 .xco 檔案新增至 IP Source 清單,再選擇 IP 的頂端檔案。
由於 Xilinx Core Generator 已針對相同的系統產生 IP,因此可取消勾選 Regenerate IP?。但若 .xco 檔案是寫入 Xilinx Core Generator 之外,則必須先在 IP Integration Node 中產生 IP。點選 Generate 按鈕以產生 IP 的模擬模型。
剩下的步驟將繼續完成 IP 設定,包含時脈訊號的行為,還有 LabVIEW 程式圖所應顯示的端點。最後將 IP 節點置入程式圖中,即可搭配使用 LabVIEW FPGA 應用。
圖 8. 具備相關 IP 的 IP Integration Node。
CLIP 與 IP Integration Node 之間的差異
CLIP 與 IP Integration Node 是將外部 IP 匯入 LabVIEW FPGA 的 2 種不同方式。表 2 則列出之間的差異。
表 2. 比較 CLIP Node 與 IP Integration Node
相關資源
隨選教育訓練:透過 CLIP 將外部程式碼匯入 LabVIEW FPGA (僅限特定國家,且需具備 SSP 會員資格)
Legal
This tutorial (this "tutorial") was developed by National Instruments ("NI"). Although technical support of this tutorial may be made available by National Instruments, the content in this tutorial may not be completely tested and verified, and NI does not guarantee its quality in any way or that NI will continue to support this content with each new revision of related products and drivers. THIS TUTORIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE (http://ni.com/legal/termsofuse/unitedstates/us/).


