1. 程式人生 > >FPGA開發之演算法開發 system Generator

FPGA開發之演算法開發 system Generator

    現在的FPGA演算法的實現有下面幾種方法: 1. Verilog/VHDL 語言的開發 ;   2. system Generator;                           3. ImpulsC 編譯器實現從 C程式碼到 HDL 語言; 4. Vivado HLS。 本文主要講述第二種方法的配置方法。

system Generator 

   System generator 可以和 ISE or Vivado 進行無縫連線。 但是需要有個版本的對應關係: http://www.xilinx.com/support/answers/17966.html 


System generator 安裝之後會在Simulin模組庫中新增一些Xilinx FPGA專用的模組庫,包括Basic Element,Communication,Control Logic,DataTypes,DSP,Math,Memory,Shared Momory,Tool等模組庫,只有使用這裡的模組才能進行FPGA演算法的模擬以及進行綜合等等。


         使用這些模組就可以簡單的選一些模組,連一些線就能自動生成你需要的HDL程式碼,將開發人員從底層枯燥的程式碼編寫中解脫出來,將更多的精力放在演算法上,非常完美的體現了工具為人服務的理念。

      ISE14.7 ,Vavido HLS 已經能夠使用C和C++生成HDL程式碼,那個主要是針對Xilinx公司7系列的FPGA,有興趣的同學可以嘗試。

      另外 Matlab2013a 將HDL coder作為一個獨立的工具新增進來,已經能夠支援Xilinx和Altera公司的FPGA。

一、System Generator快速入門


(一).Xilinx Blockset庫的基本介紹 


System Generator和Simulink是無縫連結的,可以在MATLAB標準工具欄中直接啟動,如圖1-1所示。這些模組都根據其功能劃分為不同的庫,為了易於使用,又在某些庫中添加了部分有廣泛應用的模組,所有的模組都按字母順序排列在Xilinx Index庫中。讀者需要注意的是:在Simulink環境中,只有通過Xilinx模組搭建的系統才能保證硬體可實現,其地位類似於HDL語言中的可綜合語句。



圖1-1 Xilinx DSP模組集 (Xilinx Blockset)

從設計流程中可以看出,熟悉Xilinx DSP基本模組庫是設計流程中的關鍵環節,只有掌握了基本模組的特性和功能,才能更好地實現演算法。由Xilinx模組庫和System Generator一起,可生成Xilinx可程式設計器件的最優邏輯,這屬於最低層的設計模組,地位等效於IP Core,共有90多個。Xilinx模組庫簡要說明如表1-1所列。

表1-1 System Generator庫的簡要說明

1.基本單元模組 (Basic Elements)

      基本單元模組庫中包含了數字邏輯的標準組件模組,使用這些模組可插入時間延遲、改變訊號速率、引入常數、計數器以及多路複用器等。此外,還包含了3個特殊的模組System Generator標誌、黑盒子模組(Black Box)以及邊界定義模組,後文將對其進行詳細說明。該庫中簡要的模組說明如表1-2所列。

表1-2 基本單元模組的說明列表

2.通訊模組 (communication )

通訊應用是FPGA的主要應用領域之一,因此Xilinx的通訊模組庫提供了用於實現數字通訊的各種函式,包括卷積編解碼、RS編解碼以及交織器等模組。該庫中簡要的模組說明如表1-3所列。

表1-3 通訊模組的說明列表

3.控制邏輯模組 (Control Logic)

控制邏輯主要包括了用於建立各種控制邏輯和狀態機的資源,包括了邏輯表示式模組、軟核控制器、複用器以及儲存器,其簡要說明如表1-4所列。

表1-4 控制邏輯模組的說明列表

4.資料型別模組 (Data Types)

資料型別模組主要用於訊號的資料型別轉換,包括移位、量化、並/串、串/並轉換以及精度調整模組,其簡要說明如表1-5所列。

表1-5 資料型別模組的說明列表

5.DSP模組 

DSP模組是System Generator的核心,該庫包含了所有常用的DSP模組,其簡要說明如表1-6所列。

表1-6 DSP模組的說明列表

6.數學運算模組  (Math)

數學運算是任何程式所不可避免的,Xilinx提供了豐富的數學運算庫,包括基本四則運算、三角運算以及矩陣運算等,其簡要說明如表1-7所列。

表1-7 數學運算模組的說明列表

7.儲存器模組 (Memory)

該庫包含了所有Xilinx儲存器的Logic Core,其簡要說明如表1-8所列。

表1-8 儲存器模組的說明列表

8.共享儲存器模組 
  without it
共享儲存器模組主要用於共享儲存器操作。

表1-9 共享儲存器模組的說明列表

9.工具模組   (Tools)

工具模組包含了FPGA設計流程中常用的ModelSim、ChipScope、資源評估等模組以及演算法設計階段的濾波器設計等模組。該庫的模組在設計中起輔助作用,都是設計工具,一般不能生成HDL設計,其簡要說明如表1-10所列。

表1-10 工具模組的說明列表

(二).FPGA邊界定義模組 

System Generator是FPGA實現和演算法開發之間橋樑,通過兩個標準模組“Gateway In”和“Gateway Out”來定義Simulink模擬模型中FPGA的邊界。“Gateway In”模組標誌著FPGA邊界的開始,能夠將輸入的浮點轉換成定點數。“Gateway Out”模組標誌著FPGA邊界的結束,將晶片的輸出資料轉換成雙精度數。在Simulink環境中雙擊這兩個模組會彈出配置對話方塊,可以設定不同的轉換規則,如圖1-1所示。

圖1-1 轉換模組示意圖


3.System Generator標誌 

每個System Generator應用框圖都必須至少包含一個System Generator標誌,如圖1-2所示,否則會提示錯誤。標誌模組用來驅動整個FPGA實現過程,不與任何模組相連。雙擊標誌模組,可以開啟屬性編輯框,能夠設定目標網表、器件型號、目標效能以及系統時鐘頻率等指標。


圖1-2 System Generator標誌模組示意圖


4.建立簡易的DSP設計 

一旦定義了FPGA邊界就可以通過Xilinx DSP模組集合來建立各種DSP設計,包括濾波器、儲存器、算術運算器、邏輯和位元操作器等豐富資源,每個模組都有詳細的工作頻率和位元寬度定義。標準的Simulink模組不能在“Gateway In”和“Gateway Out”之間使用,但常用來產生測試資料以及對FPGA的輸出資料進行處理和分析。下面給出一個簡單的FPGA系統設計例項。 

例1-1 使用System Generator建立一個3輸入(a、b、c)的DSP48 模組的計算電路,使得輸出p=c+a*b,並利用標準的Simulink模組對延遲電路進行功能驗證。 

1)開啟Simulink庫瀏覽器並建立一個新的Simulink模型,並儲存為mydsp.mdl。 
2)在瀏覽器中選擇Xilinx DSP48 Macro 3.0 模組,並將其拖拽到my_DSP.mdl;按照同樣的方法新增邊界定義模組以及System Generator標誌模組。 
3)為了測試DSP計算電路,新增Simulink標準庫中的常數模組(Constant)和顯示器(Display)模組。其中常數模組用於向DSP計算電路灌資料,作為測試激勵;顯示器則用於觀測輸出資料。 
4)連線模組,將所有的獨立模組連成一個整體。其中Xilinx模組之間的埠可以直接相互連線,直接從一個埠拖拽滑鼠到另一個埠來完成,或選中目標模組,按住Ctrl鍵,再點選要連線的模組,Simulink即可自動將兩個模組連線起來;而Xilinx模組和非Xilinx模組之間的連線則需要邊界模組(Gateway)來銜接。經過連線的設計如圖1-3所示。

                                              

圖1-3 延遲模組以及測試平臺的組成架構

5)設定系統引數。雙擊“System Generator”模組,會出現系統設定對話方塊,如圖1-4所示。其中“Compilation”欄選擇編譯生成物件,包括HDL網表、FPGA配置位元流、NGC網表、EDK匯出工具、硬體協模擬型別以及時序分析檔案等6種類型,本例選擇HDL網表型別,會生成ISE工程以及相應的HDL程式碼;“Part”欄用於選擇晶片型號,本例選擇Zynq 7020。“Target”欄用於選擇目標檔案存放路徑,本例使用預設值,則會在mydelay.mdl所在資料夾中自動生成一個netlist的資料夾,用於存放相應的輸出檔案。綜合工具選擇XST,HDL語言選擇Verilog型別,系統時鐘設的週期為100ns,即為10MHz。 “Clock Pin Location”欄的文字框中輸入系統時鐘輸入管腳,則會自動生成管腳約束檔案(由於本例只是演示版,所以該項空閒)。此外,可選中“Create testbench”選項,自動生成設計的測試程式碼。各項引數確認無誤後,單擊“OK”鍵,儲存引數。




圖1-4 系統引數設定對話方塊

6)設定關鍵模組引數。雙擊“Gataway In”、“Gataway Out”模組,會彈出圖1-5和圖 1-6所示的對話方塊。Gataway In模組屬性可檢視輸入資料位寬和量化規則。



                                    圖1-5 Gataway In模組屬性對話方塊                                                                                          圖1-6Gataway Out模組屬性對話方塊

7)執行測試激勵。當引數設定完成後,點選工具欄的“run ”按鍵,即可執行Simulink模擬,可以看到顯示器輸出為46,表明設計的功能是正確的。 
8)生成HDL程式碼。單擊 system Generator 視窗的“Generate”按鍵,System Generator可自動將設計轉化成HDL程式碼。整個轉化過程的起始和結束提示介面分別如圖1-6和圖 1-7所示。

                                                 

圖1-6 自動生成程式碼過程的起始提示標誌                                圖1-7 自動生成程式碼過程的結束提示標誌

讀者可在相應的資料夾netlist 裡的 sysgen 子目錄中開啟“my_dsp.v”檔案,檢視相應的程式碼,使用者可將其作為子模組直接使用。


二、System Generator中的訊號型別

System Generator是面向硬體設計的工具,因此資料型別只能是定點的,而Simulink中的基本資料型別是雙精度浮點型,因此Xilinx模組和Simulink模組連線時需要通過邊界模組來轉換。“Gateway In”模組把浮點數轉換成定點數,“Gateway Out”把定點數轉換成浮點數。此外,對於Simulink中的連續時間訊號,還必須經過“Gateway In”模組的取樣轉換才能使用。 

System Generator中的資料型別命名規則是非常簡易且便於記憶的形式,如Fix_8_6表示此埠為8位元有符號數,其中6位元為小數部分。如果是無符號數,則帶有“Ufix”字首。在System Generator中,可通過選擇 “Format” 選單中的“Port/Signal Display Port Data Types”命令,來顯示所有埠的資料型別,形象顯示整個系統的資料精度。 

Xilinx模組基本上都是多形態的,即可根據輸入埠的資料型別來確定輸出資料型別,但在有些情況下需要擴充套件訊號寬度來保證不丟失有效資料。此外,也允許設計人員自定義模組的輸入、輸出資料的量化效果以及飽和處理。在圖8-14所示的“Gateway In”模組屬性對話方塊中,“Output type”選擇資料為布林型、有符號數還是無符號數;“Number of bits”即為定點數的位寬;“Binary point”為小數部分的寬度;“Quantization”選擇定點量化模式;“Overflow”用於設定飽和處理模式;“Sample period”用於對連續時間訊號的取樣。因此按照System Generator的資料形式命名規則,“Gateway In”模組的資料型別為Fix/Ufix_(Number of bits)_(Binary point )。 

此外,還有DSP48 instruction,顯示為“UFix_11_0”,是Xilinx針對數字訊號處理的專用模組,用於實現乘加運算。

三、 自動程式碼生成 

System Generator能夠自動地將設計編譯為低階的HDL描述,且編譯方式多樣,取決於System Generator標誌中的設定。為了生成HDL程式碼,還需要生成一些輔助下載的檔案工程檔案、約束檔案等,和用於驗證的測試程式碼(HDL testbench)。 

1.編譯並模擬System Generator模組 

前面已經提到要對一個System Generator的設計進行模擬或者將其轉化成硬體,則設計中必須包含一個System Generator生成標誌。也可以將多個生成標誌分佈於不同的層中(一層一個),在層狀結構中,處於別的層下的稱為從模組,不屬於從模組的則為主模組。但是特定的引數(如系統時鐘頻率)只能在主模組中設定。 

對於任一新增的模組,都可以在System Generator模組中指定其程式碼生成方式和模擬處理形式,要編譯整個系統,在頂層模組中利用System Generator模組生成程式碼即可。 

不同編譯型別的設定將會產生不同的輸出檔案,可選的編譯型別包括兩個網表文件型別(HDL網表和NGC網表)、位元流檔案型別、EDK匯出工具型別以及時序分析型別等4類。

  • HDL網表型別是最常用的網表結構,其相應的輸出結果包括HDL程式碼檔案、EDIF檔案和一些用於簡化下載過程的輔助檔案。設計結果可以直接被綜合工具(如XST等)綜合,也可以反饋到Xilinx物理設計工具(如ngdbuild、map、par和bitgen等)來產生配置FPGA的位元流檔案。編譯產生的檔案型別如ISE中是一致的。NGC網表型別的編譯結果和HDL網表類似,只是用NGC檔案代替了HDL程式碼檔案。
  • 位元流檔案型別的編譯結果是直接能夠配置FPGA的二進位制位元流檔案,並能直接在FPGA硬體平臺上直接執行的。如果安裝了硬體協模擬平臺,可以通過選擇“Hardware Co-simulation > XtremeDSP Development Kit > PCI and USB”,生成適合XtremeDSP開發板的二進位制位元流檔案。
  • EDK匯出工具型別的編譯結果是可以生成直接匯入Xilinx嵌入式開發工具(EDK)的工程檔案以及不同型別的硬體協模擬檔案。
  • 時序分析型別的編譯結果是該設計的時序分析報告。

2.編譯約束檔案 

在編譯一個設計時,System Generator會根據使用者的配置產生相應的約束檔案,通知下載配置工具如何處理設計輸入,不僅可以完成更高質量的實現,還能夠節省時間。 

約束檔案可控的指標包括:

  • 系統時鐘的週期;
  • 系統工作速度,和系統時鐘有關、設計的各個模組必須執行的速度;
  • 管腳分配;
  • 各個外部管腳以及內部埠的工作速度。

約束檔案的格式取決於System Generator模組的綜合工具:對於XST,其檔案為XCF格式;對於Synplify/Synplify Pro,則使用NCF檔案格式。 

系統時鐘在System Generator標誌中設定,編譯時將其寫入約束檔案,在實現時將其作為頭等目標。在實際設計中,常常包含速度不同的多條路徑,其中速度最高的採用系統時鐘約束,其餘路徑的驅動時鐘只能通過系統時鐘的整數倍分頻得到。當把設計轉成硬體實現時,“Gateway In”和“Gateway Out”模組就變成了輸入、輸出埠,其管腳分配和介面資料速率必須在其引數對話方塊中設定,編譯時會將其寫入I/O時序約束檔案中。 

3.HDL測試程式碼 

通常System Generator設計的位元寬度和工作頻率都是確定的,因此Simulink模擬結果也要在硬體上精確匹配,需要將HDL模擬結果和Simulink模擬結果進行比較,才能確認HDL程式碼的正確性。特別當其包含黑盒子模組時,這樣的驗證顯得格外重要。System Generator提供了自動生成測試程式碼的功能,並能給出HDL程式碼模擬正確與否的指示。 

假設設計的名字是<design>,雙擊頂層模組的System Generator標誌,將Compilation選項設為HDL Netlist,選中Create Testbench選項,然後點選Generate選項,不僅可以生成常用的設計檔案,還有下面的測試檔案:

  • <design>_tb.vhd/.v檔案,包含完整的HDL測試程式碼;
  • Various.dat檔案,包含了測試程式碼模擬時的測試激勵向量和期望向量; 
  • 指令碼Scripts vcom.do和vsim.do檔案,用於在Modelsim中完成測試程式碼的編譯和模擬,並將其結果和自動編譯產生的HDL測試向量進行比較。

Various.dat檔案是System Generator將通過“Gataway In/Out”模組的資料儲存下來而形成的,其中經過輸入模組的資料是測試激勵,而通過輸出模組的資料就是期望結果。測試程式碼只是簡單的封裝器,將測試激勵送進生成的HDL程式碼,然後對輸出結果和期望結果完成比較,給出正確指示。 

四、 編譯MATLAB設計生成FPGA程式碼

Xilinx公司提供了兩種方法將MATLAB設計.m檔案轉化為HDL設計,一種就是利用AccelDSP綜合器;另一種就是直接利用MCode模組。前者多應用於複雜或高速設計中,常用來完成高層次的IP核開發;而後者使用方便,支援MATLAB語言的有限子集,對實現算術運算、有限狀態機和邏輯控制是非常有用的。本節內容以介紹MCode模組為主。 

MCode模組實現的是裝載在裡面的.m函式的功能。此外,還能夠使用Xilinx的定點型別數對.m函式進行評估。該模組使用迴歸狀態變數以保證內部狀態穩定不變,其輸入、輸出埠都由.m函式確定。 

要使用MCode模組,必須實現編寫.m函式,且程式碼檔案必須和System Generator模型檔案放在同一個資料夾中,或者處於MATLAB路徑上的資料夾中。下面用兩個例項來說明如何使用MCode模組。 

例1-1 使用MATLAB編寫一個簡單的移位暫存器完成對輸入資料乘8以及除以4的操作,並使用MCode將其編譯成System Generator直接可用的定點模組。 

    .m 函式的生成是比較簡單的,我們只需要 new function ,然後將相應的函式程式碼輸入,並且儲存即可。

1.相關的.m函式程式碼為:

function [lsh3, rsh2] = xlsimpleshift(din) 
% [lsh3, rsh2] = xlsimpleshift(din) does a left shift 3 bits and a 
% right shift 2 bits. The shift operation is accomplished by 
% multiplication and division of power of two constant. 
lsh3 = din * 8; 
rsh2 = din / 4;

2.將.m函式新增到下列三個位置之一:

  • 模型檔案存放的位置;
  • 模型目錄下名字為private的子資料夾;
  • MATLAB路徑下。

然後,新建一個System Generator設計,新增MCode模組,雙擊模組,在彈出頁面中,通過Browse按鍵將.m函式和模型設計關聯起來,如圖1-8所示。 當我們想修改MCode 程式碼時候,我們只需要雙擊該模組,然後彈出屬性視窗,選擇 Edit M-File 即可。



圖1-8 MCode模組關聯介面示意圖

3.新增邊界模組、Sytem Generator模組、正弦波測試激勵以及示波器模組構成完整的設計,如圖1-9所示。



圖1-9 簡單移位模組設計示意圖

4.執行模擬,得到的結果如圖1-10所示,從中可以看出,設計是正確的,正確實現了.m檔案的功能。左圖將訊號放大了8倍,右圖將訊號縮小了4倍。



圖1-10 簡單移位模組模擬結果示意圖

5.自動生成程式碼,得到的Verilog檔案如下所列。

module myshift (

din, 
dout1, 
dout2 
); 

input [15:0] din; 
output [15:0] dout1; 
output [15:0] dout2; 

wire [15:0] din_net; 
wire [15:0] dout1_net; 
wire [15:0] dout2_net; 

assign din_net = din; 
assign dout1 = dout1_net; 
assign dout2 = dout2_net; 

mcode_6b96190926 mcode (   
          .e(1'b0), 
          .lk(1'b0), 
          .lr(1'b0), 
          .in(din_net), 
          .sh3(dout1_net), 
          .sh2(dout2_net) 
);

endmodule

五、子系統的建立和使用

System Generator設計經常作為大型HDL設計的一部分,本節就介紹如何使用System Generator來建立子系統模組,以及如何在整個系統中對其進行模擬。 

1.子系統的建立以及模擬方法 

子系統就是HDL語言中的模組,也類似於C++語言中的函式,是有效執行自頂向下設計的必備手段。如果將一個複雜設計完全在一個單獨設計中實現,則該設計的驗證和複查工作將是設計人員的噩夢。此外,從設計複用的角度講,子系統可以IP核的方式為多個設計使用,具有高的可重用性,能節省大系統的開發時間。 

建立子系統最簡單的方法就是利用NGC二進位制網表文件,將System Generator設計封裝成一個單獨的二進位制模組,這樣綜合工具將其作為黑盒子看待。在建立子系統時,管腳約束不能在Gataway模組中定義,同樣時鐘管腳也不能在System Generator模組中定義,應通過網表編輯器來指定物理約束,這是因為NGC網表中不僅包括了邏輯設計,還包括了設計的約束資訊。在複雜系統中建立子系統的設計流程如下所示:



圖1-11 建立子系統的設計流程

1)NGC網表文件 

如圖1-11所示,生成NGC網表是建立子系統的第一步。在System Generator標誌中將編譯生成檔案型別選為NGC List,如圖1-12所示。如果設計中有時鐘驅動電路,點選Generate後,會在目標資料夾生成“<design>_cw.ngc”檔案,否則會生成“<design>.ngc”檔案,其中<design>就是設計的名字。NGC網表文件包括設計中所有的邏輯和約束資訊,這意味著將System Generator生成的所有HDL檔案、核心以及約束等檔案封裝成一個單獨的檔案。



圖7-22 選擇編譯生成檔案型別

2)設計規則

在複雜系統中使用子模組時,必須遵循下面兩條規則。 

首先,不能在子模組設計檔案中出現“Gateway In”、“Gateway Out”以及System Generator標誌模組,否則NGDBuild工具會產生下面的警告: 

WARNING: NgdBuild:483 - Attribute "LOC" on "clk" is on the wrong type of 
object. Please see the Constraints Guide for more information on this 
attribute. 

其次,不能在綜合的時候往NGC網表文件中插入I/O快取器,否則會報錯。I/O快取器只能在頂層模組中使用。 

3)邏輯綜合 

當使用子系統的NGC網表文件綜合時,其流程如圖1-13所示。NGC模組可在頂層模組中以黑盒子的方式直接例化。為了簡化該過程,當通過NGC目標編譯後,System Generator提供了HDL例化模板,儲存在設計路徑,且以“<design>_cw.veo”命名。當選擇VHDL語言時,則其模板名為“<design>_cw.vho”。



圖1-13 綜合時的流程圖

4)模擬 

把System Generator模型編譯成NGC目標後,生成的HDL檔案卻只能完成HDL模擬,不能在ISE中綜合。由於HDL檔案不能包含在工程中,如果要在HDL模擬器中執行整個設計,就必須指定使用者.do檔案。除了HDL檔案之外,還需要將記憶體初始化檔案(.mif)和係數檔案(.coe)和HDL檔案放在同一資料夾中。 

2.可配置子系統的建立 

可配置子系統是一類可以作為標準元件使用的Simulink模組,但又和標準元件模組不同,其存在多種可選功能,每一種功能都可以實現,可以讓使用者靈活選擇。以可配置FIR濾波器為例,實現快速濾波器需要很多資源,而許多低速的濾波器卻只需要相對很少的資源,將其做成可配置的模組,就可以允許使用者根據實際情況在速度和硬體代價之間做出最優平衡。這體現了可配置子模組最大的優勢。 

1)定義一個可配置子模組 

可通過新建Simulink庫來定義可配置子系統,且可選模組的實現也由庫來管理。下面給出新建建庫的具體步驟: 

(1)新建一個空白庫,如圖1-14所示。



圖1-14 新建空白庫

(2)在庫裡新增基本例項模組,如圖1-15所示。基本例項模組可以是System Generator中的任意元件。



圖1-15 新增基本例項模組

(3)在庫裡面新增可配置子系統模版,如圖1-16所示。模版可以在Simulink庫瀏覽器中找到,其具體位置為“Simulink/Ports & Subsystems/Configurable Subsystem”。如果有需要,使用者可以修改該模版的名字。



圖1-16 新增可配置子系統模組

(4)儲存庫檔案,然後雙擊模版模組,會彈出如圖1-17所示的屬性配置介面。根據實現的需要選中相關模組的檢驗框。最後單擊“OK”再次儲存庫檔案。



圖1-17 屬性配置介面

2)使用可配置子系統

要在設計中使用可配置子系統,先按照上面的步驟定義子系統,然後開啟庫,將需要的模版模組拖到設計中合適的位置,這樣設計中就有了可配置子系統的例項,如圖1-18所示的FIR濾波器模組。



圖1-18 可配置子系統例項

在例項模組上點選右鍵,然後選擇Block Choice選項中的Xilinx DA FIR,將例項作為基礎實現模組使用。如圖1-19所示。



圖1-19 將例項作為基礎實現模組

3)在可配置子模組中新增和刪除例項模組

新增和刪除子系統是編輯、修改可配置子系統的基本操作,按照下面的步驟可以從可配置子系統中刪除例項模組: 

(1)開啟並解鎖子系統的庫;雙擊模版模組,然後在彈出的使用者介面中取消相應模組檢驗框的選定,單擊“OK”就可以刪除掉相應的子模組,如圖1-20所示;再儲存庫,重新編譯即可;最後仍需要在設計更新子系統。 
對於新增例項模組的步驟如下:首先,開啟並解鎖子系統的庫;然後將例項模組拖到子系統設計中,雙擊模版模組;在彈出的使用者介面中選中所需模組檢驗框,單擊“OK”即可,如圖1-21所示;再儲存庫,重新編譯;在已有的設計中更新子系統。



圖1-20 刪除子模組                                                                圖1-21 新增子系統

(2)生成可配置子模組的硬體電路

在System Generator中,模組可用於模擬和產生硬體。有時對於一個可配置子系統,最佳的方式是其既可以成為模擬基礎模組,也可以用來生成硬體電路。例如將可配置子系統在模擬時作為普通的模組來產生模擬結果,在實現時作為黑盒子產生功能電路的HDL程式碼,就是一種常用方式。System Generator提供了可配置子系統管理模組來達到上述目的,其使用方法如下: 

首先,開啟、解鎖可配置子系統的庫檔案(除了模版模組),然後雙擊該模組; 

其次,將可配置子系統管理模組拖到開啟的庫中,該管理模組可以在“Xilinx Blockset/Tools/ Configurable Subsystem Manager”路徑中找到,如圖1-22所示。



圖1-22 可配置子系統管理模組

最後,雙擊管理模組開啟其屬性配置GUI,選擇可配置子系統中生成硬體電路的模組,如圖1-23所示。單擊“OK”儲存子系統和庫檔案退出即可。



圖1-23 選擇可配置子系統的硬體模組