《FPGA數字信號處理設計流程》課件第4章_第1頁
《FPGA數字信號處理設計流程》課件第4章_第2頁
《FPGA數字信號處理設計流程》課件第4章_第3頁
《FPGA數字信號處理設計流程》課件第4章_第4頁
《FPGA數字信號處理設計流程》課件第4章_第5頁
已閱讀5頁,還剩341頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章SystemGenerator庫的構成4.1SystemGenerator模塊定義4.2在Simulink模型中引用XILINX模塊4.3XILINXBlockset庫4.4XILINXBlockset庫4.5XILINXReferenceBlockset庫4.6XILINXXtremeDSPKit庫4.7本章小結

4.1SystemGenerator模塊定義

XILINXBlockset、XILINXReferenceBlockset和XILINXXtremeDSPKit三個庫包含很多模塊,這些模塊就是XILINX模塊。SystemGenerator能夠基于設計人員用HDL語言開發的功能模塊和XILINXSmart-IP核完成數字系統的FPGA實現。在進行完整的系統級設計時,模型中通常包括測試環境,一般由任意的非XILINX模塊構成,但是在FPGA實現時,模型中的非XILINX模塊在編譯時是不會被綜合的。也就是說,只有XILINX模塊才會在FPGA硬件中實現。

4.2在Simulink模型中引用XILINX模塊

XILINX模塊可以從SimulinkLibraryBrowser中拖拽出來放在Simulink模型的窗口中。雙擊模塊的圖標,打開模塊的參數設置對話框,用戶可自定義參數以適應不同場合下的

應用。

XILINX模塊基于定點數運行,使用任意精度的算法類型。在XILINXBasicElement庫中可找到Gateway模塊,用來作為XILINX模塊和非XILINX模塊的接口,使XILINX模塊可以自由地用在Simulink的模型中。當然只有SystemGenerator庫中的XILINX模塊才可以被SystemGenerator轉換成相應的硬件。

4.3XILINXBlockset庫

XILINXBlockset庫包括了所有用在Simulink中構建數字信號處理系統和其他FPGA數字系統的模塊,按照各個模塊的具體功能將XILINXBlockset劃分成多個子庫,部分具有廣泛適用性的模塊出現在多個子庫中,比如GatewayOut模塊在BasicElements和DataTypes兩個子庫中都可以找到。XILINXBlockset庫一共劃分成如表4.3.1所示的10個子庫。下面介紹模塊參數配置中的公共項。

1.Precision

XILINXBlockset庫中的模塊在仿真計算時按任意精度定點數進行,大部分模塊的計算精度可由開發人員定義,包括位數(NumberofBits)和小數位(BinaryPoint),如圖4.3.1所示。圖4.3.1Precision項參數設置

2.ArithmeticType

在模塊的參數對話框中可以定義無符號位或帶符號位(二進制補碼)數作為模塊的輸出信號的數據類型,如圖4.3.2所示。

3.Numberofbits

定點數以何種數據格式進行存儲由其位數、小數位和運算類型決定,SystemGenerator支持的最大位數為4096,如圖4.3.2所示。圖4.3.2數據Type項參數設置

4.Binarypoint

小數位決定了一個定點二進制數的所有位數中有多少位是小數,小數位的數值必須介于0和位數之間,如圖4.3.2所示。

5.Overflow&Quantization

一旦開發人員定義了數據的精度,就會產生由溢出和量化帶來的誤差。當一數值超過了開發人員定義的數據所能表示的范圍,就產生了溢出誤差;當開發人員定義的數據的小數部分無法完全表示實際輸入的小數數值時,就出現量化誤差。

對于開發人員定義的任意精度數據,SystemGenerator都針對溢出和量化誤差提供了多種處理方式。當發生溢出時,開發人員有三種處理方式,當選擇Saturate模式時,將數據飽和在正的最大值或負的最小值;當選擇Wrap模式時,作繞回處理,即最大值加1結果是最小值,最小值減1得到最大值;當選擇Flagaserror模式時,將數據溢出標記到Simulink的錯誤報告中。

當出現量化誤差時,開發人員有兩種處理方式,當選擇Round模式時,將數據四舍五入到最接近的開發人員定義精度可表示的數值上;當選擇Truncate模式時,直接將開發人員定義精度無法表示部分數值丟棄。圖4.3.3表示處理溢出和量化的選項。圖4.3.3Overflow&Quantization項參數設置在使用SystemGenerator進行系統開發時需要注意整個數據流上各個模塊的溢出和量化的處理方式,這不但影響到在Simulink中的仿真結果,在生成硬件描述語言代碼時,同樣按照各個模塊的具體設置來進行,影響到最終設計的性能。現用兩個實驗對上述參數配置項進行說明。例1數據飽和實驗

本例以兩數相加為例,用以說明SystemGenerator中的相關模塊在處理數據飽和時的特性。實驗步驟如下:

1)建立模型

打開C:\SG\exercise\WrapandSaturate\add_overflow.mdl模型,如圖4.3.4所示。圖4.3.4數據飽和實驗仿真結構圖

AddSub和AddSub1模塊的輸出都設定為四位帶符號二進制整數,AddSub2模塊的輸出設定為五位帶符號二進制整數。

AddSub的Overflow項設定為Wrap;AddSub1的Overflow項設定為Saturate;AddSub2的Overflow項設定為Flagaserror。

2)仿真

單擊StartSimulink開始仿真,Display、Display1、Display2分別顯示-7、7、9。

3)分析

實驗的分析如表4.3.2所示。

例2采樣量化實驗

本例通過設定GatewayIn模塊的相關參數,以體現不同的采樣量化設置對采樣結果的影響。實驗步驟如下:

1)建立模型

用SimulinkLibraryBrowser的Simulink→Sources庫中的SineWave模塊替換design_flow設計的Constant模塊并另存到C:\SG\exercise\Wrap_and_Saturate\Wrap_and_Saturate.mdl,如圖4.3.5所示。圖4.3.5采樣量化實驗仿真結構圖

2)修改參數

雙擊SystemGenerator模塊,彈出模塊參數對話框,如圖4.3.6所示,將參數項Simulinksystemperiod(sec)的設定值改為0.01,則此時設計在Simulink中的仿真采樣時間為0.01s。圖4.3.6SystemGenerator模塊參數配置雙擊SineWave模塊,彈出模塊參數對話框,如圖4.3.7所示,將參數設定項Amplitude的設定參數改為“140”,將參數設定項Frequency(rad/sec)的設定參數改為“2*pi”,將參數設定項Sampletime的設定參數改為“0.01”,則此時SineWave模塊的輸出幅值為140,頻率為1Hz,采樣時間為0.01s的正弦波。

注意:pi=π。圖4.3.7SineWave模塊參數配置雙擊GatewayIn模塊,將Binarypoint改為8;Sampleperiod改為0.01。該模塊的溢出模式為Saturate,當發生數據溢出時,輸出保持輸入數據的正最大值或負最大值,如圖4.3.8所示。圖4.3.8GatewayIn模塊參數配置

3)?Saturate仿真

將仿真時間改為2s,如圖4.3.9所示。圖4.3.9設定仿真時間單擊StartSimulink開始仿真,雙擊Scope模塊查看仿真結果,單擊Autoscale按鈕便于觀看仿真結果,如圖4.3.10所示。圖4.3.10量化飽和仿真結果

4)?Wrap仿真

將GatewayIn模塊中的溢出模式改為Wrap。

單擊StartSimulink開始仿真,并得到如圖4.3.11所示的仿真結果。圖4.3.11量化溢出仿真結果

6.Latency

許多XILINXBlockset庫中的模塊都具有延遲選項,定義該模塊的輸出信號延遲多少個采樣周期后輸出。SystemGenerator中沒有專門的模塊或結構用于實現流水線,給模塊的輸出添加延遲可以理解為在其輸出端上存在有移位寄存器,用以調節模塊的處理時間,使得不同的模塊具有相同的處理時間,實現流水線,提高系統處理速度,如圖4.3.12所示。圖4.3.12Latency項參數設置

7.Overridewithdoubles

大多數的Simulink模塊使用雙精度浮點數進行運算并輸出,當一個雙精度浮點數信號經過SystemGenerator的GatewayIn模塊時轉換成定點數信號,再經過SystemGenerator的GatewayIn模塊時又轉回雙精度浮點數信號。在Simulink環境下,雙精度替換選項允許開發人員對整個設計進行基于雙精度浮點數的仿真,便于調試及確定定點數位寬。如果在調試過程出現量化誤差,可以設定整個設計或部分特定模塊按雙精度浮點數進行仿真,從而確定設計中出現量化誤差的模塊,如圖4.3.13所示。

但版本號為8.1和8.2的SystemGenerator并不支持這項功能。圖4.3.13Overridewithdoubles項參數設置

8.Providesynchronousresetport

選中該選項,SystemGenerator自動激活模塊的復位端(rst)。當復位信號有效時,模塊立即恢復到初始狀態,復位信號必須為布爾量(Boolean)信號,如圖4.3.14所示。

9.Provideenableport

選中該選項,SystemGenerator自動激活模塊的使能端(en)。當使能信號無效時,模塊保持當前狀態,直到使能信號或復位信號有效時模塊開始動作。復位信號的優先級高于使能信號,同樣,使能信號也必須為布爾量(Boolean)信號,如圖4.3.14所示。圖4.3.14ProvideSynchronousResetPort項參數設置

10.Sampleperiod

SystemGenerator根據特定的采樣率對數據流進行處理,通常每個模塊按照采樣率對輸入信號進行采樣并按照采樣率輸出信號,唯有UpSample和DownSample兩個模塊例外,分別用于實現提高、降低采樣率,如圖4.3.15所示。圖4.3.15Sampleperiod項參數設置

11.Specifyexplicitsampleperiod

如果選中該選項,開發人員可以按設計需要指定采樣周期。該選項經常用于構成反饋回路的設計中,在反饋回路中,SystemGenerator不能確定默認的采樣率,因為回路的存在使得比較器的輸入信號的采樣率依據于尚未確定的反饋信號的采樣率。在這種情況下,SystemGenerator需要開發人員指定采樣周期,如圖4.3.16所示。圖4.3.16Specifyexplicitsampleperiod項參數設置

12.UsebehavioralHDL(otherwiseusecore)

如果選中該選項,由MCode(MATLAB的M文件所用代碼)仿真來生成行為級硬件描述語言,否則由IP核構成硬件描述語言,如圖4.3.17所示。圖4.3.17UsebehavioralHDL項參數設置

13.Usepre-definedcoreplacementinformation

如果選中該選項,生成的IP核包括相關的布局信息,通常使得最終得到的硬件具有較高的處理速度。也正因為IP核的布局會受到相應的約束,將影響到后續布局布線階段的處理結果,如圖4.3.18所示。圖4.3.18Usepre-definedcoreplacementinformation項參數設置

14.Placementstyle

當IP核布局信息選項被選中后,開發人員才可以設定布局風格選項。該選項用于直接設定乘法器核在硬件上的布局,如圖4.3.18所示。

選中矩形(Rectangularshape)選項,FPGA上相關查找表(LUTs)分布比較松散;選中三角(Triangularpacking)選項,FPGA上相關查找表(LUTs)分布比較緊湊。

15.DefineFPGAareaforresourceestimation/FPGAarea(slices,FFs,BRAMs,LUTs,IOBs,emb.mults,TBUFs)

ResourceEstimator模塊需要調用這部分信息,用于估算ResourceEstimator模塊所在的SystemGenerator設計模型需要多少FPGA硬件資源,如圖4.3.19所示。圖4.3.19FPGAAreaEstimation項參數設置如果在SystemGenerator設計中包含有ResourceEstimator模塊,開發人員可以手動定義任意功能模塊的FPGA資源使用量。如果沒有輸入任何參數,ResourceEstimator模塊會自動計算相關數據并給出所需資源總量。

如果開發人員希望自行定義設計中的每一功能模塊的FPGA資源使用量,就必須選中DefineFPGAareaforresourceestimation選項,ResourceEstimator模塊才會在處理時嚴格按照開發人員設定的參數進行計算;否則ResourceEstimator模塊的計算結果會覆蓋開發人員設定的任意參數。一共有七個參數需要輸入FPGAarea欄,在填寫時需要注意其先后順序。七個參數依次表示本模塊slices、觸發器(FFs)、塊狀RAM(BRAMs)、查找表(LUTs)、IO模塊(IOBs)、嵌入式乘法器(emb.mults)、三態緩存器(TBUFs)的使用量。

ResourceEstimator模塊進行處理時僅考慮需要占用硬件資源的模塊,略過不占用硬件資源的模塊,如ClockEnableProbe模塊等。雖然Slice和LUT、FF是有關聯的(每個Slice中包含有兩個LUT和兩個FF),但在計算使用資源量時需要分別計算,因為在一個Slice中,不一定同時用到LUT和FF,并且不同的設計會有不同的結果。

部分XILINX模塊不支持自動資源估計,FPGAarea欄中的數據不能自動生成,如果開發人員沒有給定這些數據,MATLAB會給出一條警告信息。

16.Pipelineformaximumperformance

在使用IP核構成設計模塊時可在其內部構成流水線結構以提高處理速度,選中該選項SystemGenerator可以最大限度利用模塊的延遲時間構成流水線結構,如圖4.3.20所示。圖4.3.20Pipelineformaximumperformance項參數設置

4.4XILINXBlockset庫

1.SystemGenerator

該模塊列于BasicElements、Tools和Index三個子庫中。

SystemGenerator模塊給定整個系統控制和仿真的參數,并用于工程的生成。一個Simulink模型如果包含有XILINXBlockset庫中的任意模塊,都必須至少包含一個SystemGenerator模塊。通過設定SystemGenerator模塊決定怎樣進行工程的生成和仿真。模塊參數對話框如圖4.4.1所示。圖4.4.1SystemGenerator模塊可配置參數對話框模塊參數說明:

Compilation:設定編譯類型,直接影響到代碼生成器的生成結果。

Part:選擇所使用的FPGA芯片。

Targetdirectory:設定相關文件的導出路徑,當輸入為“./netlist”時表示導出路徑為當前MATLAB工作路徑下的netlist文件夾。

Synthesistool:設定設計使用的綜合工具。可選Synplicity公司的SynplifyPro、Synplify以及XILINX公司的XST。

Hardwaredescriptionlanguage:設定設計編譯時使用的硬件描述語言。可選VHDL或Verilog。

FPGAclockperiod:以納秒(ns)為單位設定硬件時鐘周期。

Clockpinlocation:定義硬件時鐘的管腳位置。該信息同樣由約束文件傳給XILINX執行工具。

Createtestbench:要求SystemGenerator創建硬件描述語言testbench測試文件。

Importasconfigurablesubsystem:當SystemGenerator模塊位于子系統時需要開發人員設定,要求SystemGenerator完成兩件事:一為構造一個實現該子系統功能的模塊;二為構造一個實現該子系統功能的子模塊,可嵌入到不同設計中。

Provideclockenableclearpin:要求SystemGenerator在生成的設計的頂層模塊上增加一個ce_clr端口。ce_clr信號可復位系統時鐘,使得該設計可以進行動態控制,僅在需要的時刻動作。

Overridewithdoubles:設定Simulink為雙精度仿真。

Simulinksystemperiod:以秒為單位定義Simulink仿真系統周期。

Blockicondisplay:定義Simulink中各個SystemGenerator的模塊圖的顯示風格。共有如下六種顯示風格:圖4.4.2Default模式仿真結構圖

Samplerates:圖標顯示輸入/輸出端口上歸一化采樣周期,如圖4.4.3所示。圖4.4.3Samplerates模式仿真結構圖

Pipelinestages:圖標顯示從輸入端口到輸出端口的延遲,便于設計實現流水線結構,如圖4.4.4所示。圖4.4.4Pipelinestage模式仿真結構圖

HDLportnames:圖標顯示輸入/輸出端口名,如圖4.4.5所示。圖4.4.5HDLportnames模式仿真結構圖

Inputdatatypes:圖標顯示輸入端的數據格式,如圖4.4.6所示。圖4.4.6Inputdatatypes模式仿真結構圖

Outputdatatypes:圖標顯示輸出端的數據格式,如圖4.4.7所示。圖4.4.7Outputdatatypes模式仿真結構圖

2.Accumulator

該模塊列于Math和Index兩個子庫中。

Accumulator模塊用于實現依據縮放因數的累計加法器或累計減法器。模塊的當前輸入數據與乘上了反饋縮放因數的模塊內存儲數據相加減,反饋縮放因數是模塊參數。模塊的延遲(latency)始終為1個時鐘周期。模塊有兩個輸入b和rst,一個輸出q,其中輸出q端與輸入b端的數據格式相同,其數值如下所示:圖4.4.8Accumulator模塊參數對話框模塊參數說明:

Operation:確定Accumulator模塊實現累計加法器或累計減法器。

Feedbackscaling:指定反饋縮放因數。

Reinitializewithinput?'b'onreset:當選中該選項且復位信號有效時,輸出q端復位到輸入b端數值,否則復位到0。

3.AddressableShiftRegister

該模塊列于BasicElements、Memory和Index三個子庫中。

AddressableShiftRegister模塊是一個長度可變的移位寄存器,其中的任意一個寄存器中的數據都可由其對應地址讀到。

AddressableShiftRegister模塊可以簡單地認為是一串寄存器,每一個寄存器的輸出都接到一個多路選擇器上,多路選擇器即對應模塊的地址(addr)輸入端,多路選擇器的輸出則對應模塊的輸出q端,如圖4.4.9所示。圖4.4.9AddressableShiftRegister模塊功能原理圖

AddressableShiftRegister模塊支持最大寄存器數為1024個,最小為2個,因此地址輸入(addr)端口位寬介于1和10之間(包括1和10),數據輸入(d)端的位寬必須介于1和255之間(包括1和255)。AddressableShiftRegister模塊提供可選的使能(en)端口,如圖4.4.9所示,使能信號只與寄存器有關,因此當地址信號改變時數據輸出信號也隨即改變,與使能信號無關。在硬件實現上,數據輸出端口與地址輸入端口為異步邏輯關聯,在仿真時地址輸入端口的優先級高于數據輸入端口。

AddressableShiftRegister模塊參數對話框如圖4.4.10所示。圖4.4.10AddressableShiftRegister模塊參數對話框模塊參數說明:

Infermaximumlatency(depth)usingaddressportwidth:根據地址輸入端口位寬自動決定移位寄存器的最大延遲。

Maximumlatency(depth):設定移位寄存器深度,即寄存器個數。

Initialvaluevector:設定寄存器初始值。當初始向量大于寄存器個數時,丟棄向量中后半部分的多余數據;當寄存器個數大于初始向量時,添零補足。

4.AddSub

該模塊列于Math和Index兩個子庫中。

AddSub模塊用于實現加法或減法運算。模塊的功能運算可以是固定的,也可以由模式選擇信號動態配置模塊功能。圖4.4.11AddSub模塊參數對話框模塊參數說明:

Operation:設定AddSub模塊的功能為Addition、Subtraction或Addition/Subtraction。當選中Addition/Subtraction時模塊的功能由sub輸入信號端決定,其數據格式必須為布爾量(Boolean)。當sub信號為1時模塊進行減法運算,否則進行加法運算。

Providecarry-inport:AddSub模塊增加進位輸入(cin)端,其數據格式要求為布爾量(Boolean)或無符號定點數(Unsigned),只有當用戶自定義精度(userdefinedprecision)項選中時有效,并且要求模塊的數據輸入端口a和b的二進制小數位(binarypoint)為零,亦即此時AddSub模塊僅能處理整數運算。

Providecarry-outport:AddSub模塊增加進位輸出(cout)端,其數據格式為一位二進制無符號數,并要求數據輸出端(a+b)的整數位寬等于a、b兩個數據輸入端整數位寬中的較大者。

5.Assert

該模塊列于Index子庫中。

Assert模塊用于分別或同時聲明模型中的某個信號。該模塊在硬件實現時不占用任何資源。

Assert模塊參數對話框如圖4.4.12所示。圖4.4.12Assert模塊參數對話框模塊參數說明:

Asserttype:確定是否聲明信號上的數據類型。

Specifytype:確定聲明類型,由開發人員自行定義或按Assert模塊的輸入信號(type)的數據類型聲明。

Assertrate:確定是否聲明信號上的采樣速率。

Specifyrate:確定聲明類型,由開發人員自行定義或按Assert模塊的輸入信號(rate)的采樣速率聲明。

Provideoutputport:確定Assert模塊是否需要輸出,其輸出信號即為聲明后的信號。

Assert模塊通常用于Simulink無法確定信號的數據類型和采樣速率時人為地幫助Simulink進行確認并仿真。該模塊較多出現在模型中存在反饋時,如圖4.4.13所示,AddressableShiftRegister模塊的數據輸入端為模型的輸出端,模型的輸出端又需要由AddressableShiftRegister模塊的數據輸出端來確定,Simulink無法確定模型內部信號的數據類型,認為其為非法(illegal)信號。圖4.4.13未加Assert模塊的仿真結構圖圖4.4.14加Assert模塊的仿真結構圖

6.BitBasher

該模塊列于BasicElements、DataType和Index三個子庫中。

BitBasher模塊對輸入信號按位進行提取、并置、擴充等操作后輸出,開發人員可按Verilog代碼語法規則編寫符合設計要求的表達式。一個BitBasher模塊提供最多四個輸出和與之一一對應的表達式。模塊不占用任何硬件資源。

BitBasher模塊參數對話框如圖4.4.15和圖4.4.16所示。圖4.4.15BitBasher模塊Basic欄參數對話框圖4.4.16BitBasher模塊OutputType欄參數對話框模塊參數說明:

BitBasherExpression:按Verilog代碼語法規則編寫符合設計要求的輸出表達式。

Output:輸出端口編序。

Binarypoint:對應輸出端信號的二進制小數位。

7.BlackBox

該模塊列于BasicElements、ControlLogic和Index三個子庫中。

通過BlackBox模塊可以將VHDL或Verilog代碼轉換成MATLAB的m文件,并在Simulink中進行仿真。生成的新模塊與硬件描述語言設計的模塊具有相同的輸入/輸出端口和功能。圖4.4.17BlackBox模塊參數對話框模塊參數說明:

Blockconfigurationm-function:指定與BlackBox模塊對應的m文件。

Simulationmode:有Inactive、ISESimulation和Externalco-simulator三項可選。選擇Inactive時,Simulink進行仿真時忽略該模塊,將其輸出都置零;選擇ISESimulation時,使用ISE的仿真工具進行仿真;選擇Externalco-simulator時,使用第三方仿真軟件進行仿真,如ModelSim等。

BlackBox模塊的使用參見本書第5章的例1。

8.ChipScope

該模塊列于Tools和Index兩個子庫中。

ChipScope模塊可在設計模型中插入ChipScope模塊。將包含有ChipScope模塊的設計模型下載到FPGA后通過JTAG口可以進行實時硬件板級測試。圖4.4.18ChipScope模塊參數對話框模塊參數說明:

Numberoftriggerports:設置觸發端(triggerports)口數,最大支持16個觸發端。

Displaysettingsfortriggerport:設置觸發端口顯示,如果設置有N個觸發端,則該項有0至N-1可選。

Numberofmatchunits:設置匹配單元數,引入匹配單元可以將多個信號的組合作為信號捕獲觸發條件,增大信號檢測的靈活性。

Matchtype:該選項包括如下可選項。

Basic:實現=、<>比較操作。

BasicWithEdges:相對于Basic增加信號的延捕獲。

Extended:實現=、<>、>、<、<=、>=比較操作。

ExtendedWithEdges:相對于Extended增加信號的延捕獲。

Range:實現=、<>、>、<、<=、>=、

比較操作。

RangeWithEdges:相對于Range增加信號的延捕獲。

Usetriggerportsasdata:設置是否直接將觸發信號作為需要捕獲的信號。

Numberofdataports:設置捕獲信號端口數。

Depthofcapturebuffer:設置捕獲深度,支持2~16384的深度捕獲。

UseSRL16s(whenpossible):設置是否使用FPGA上嵌入的16位硬件移位寄存器。有關ChipScope模塊的使用可參見第5章例4。

小技巧:相對于ChipScopePro軟件,ChipScope模塊功能有明顯差距,在使用時可以僅用ChipScope設置觸發信號和捕獲信號,更多且更為復雜的捕獲條件可以由SystemGenerator生成工程后使用ChipScopePro作進一步的設置。

9.ClockEnableProbe

該模塊列于BasicElement和Index兩個子庫中。

ClockEnableProbe模塊的輸入為Simulink模型中的任意信號,輸出是與該信號的采樣率同頻率的脈沖布爾量(Boolean)信號,一般用于多采樣率系統。

ClockEnableProbe模塊參數對話框如圖4.4.19所示。圖4.4.19ClockEnableProbe模塊參數對話框

10.ClockProbe

該模塊列于Tool和Index兩個子庫中。

ClockProbe模塊生成一個50%占空比的方波信號,其周期與系統時鐘周期相同。在SystemGenerator生成代碼時該模塊被忽略。圖4.4.20ClockProbe模塊參數對話框

11.CMult

該模塊列于Math和Index兩個子庫中。

CMult模塊可以理解為一個增益環節,模塊將其輸入數據乘以一個常值作為模塊的輸出,這個常值可以是一個MATLAB的表達式,也可以是一個常數。

CMult模塊參數對話框如圖4.4.21所示。其中Value可用來設定模塊的增益數值。圖4.4.21CMult模塊參數對話框

12.Concat

該模塊列于BasicElement、DataType和Index三個子庫中。

Concat模塊將多個輸入端數據按位串聯后作為一個輸出端數據,并要求其數據為無符號二進制整數。

Concat模塊可以有2~1024個輸入端,但僅有一個輸出端,第一個和最后一個輸入端口分別標記為hi和lo,其他輸入端沒有標記。它們依次串聯構成一個數據后輸出,hi輸入端口數據為輸出數據的最高部分位,lo則為最低部分位。

Concat模塊參數對話框如圖4.4.22所示。其中Numberofinputs可用來設定輸入個數。圖4.4.22Concat模塊參數對話框

13.ConfigurableSubsystemManager

該模塊列于Tools和Index兩個子庫中。

ConfigurableSubsystemManager模塊擴展了用Simulink處理可配置子系統的能力,可在仿真及生成相關ISE工程文件時配置子系統功能。也可用于生成Simulink庫中的模塊,其功能由用戶基于現有XILINX模塊設計得到。

ConfigurableSubsystemManager模塊參數對話框如圖4.4.23所示。其中Whengenerating,use可用于指定哪個子系統需構成可配置子系統。圖4.4.23ConfigurableSubsystemManager模塊參數對話框

14.Constant

該模塊列于BasicElements、Control、Math和Index四個子庫中。

Constant模塊用于給出一個常量,常量可以是一個定點數、布爾量或一條DSP48(參見DSP48模塊的介紹)指令。該模塊類似于Simulink中的常數模塊,可直接連接到其他XILINX模塊的輸入端。

Constant模塊參數對話框如圖4.4.24和圖4.4.25所示。圖4.4.24Constant模塊Basic欄參數對話框圖4.4.25Constant模塊DSP48欄參數對話框模塊參數說明:

Type:用于選定輸出數據的類型,有Boolean、Signed(2’scomp)、Unsigned和DSP48instruction可選。

DSP48Instruction:可對具體的DSP48指令進行設置,用于完成在數字信號處理中經常用到的乘加運算。

Operationselect:有多條已定制完成的指令可供選擇。如果不能滿足設計要求,可選擇Custom項,并在CustomInstruction欄中設定指令功能,如圖4.4.26所示。圖4.4.26Operationselect項可選參數

15.Convert

該模塊列于BasicElements、DataTypes、Math和Index四個子庫中。

Convert模塊用于將其輸入信號按照設計要求轉換成相應的數據格式。比如將一個布爾量轉換成8位二進制定點數。

Convert模塊參數對話框如圖4.4.27和圖4.4.28所示。其中,Pipelineformaximumperformance用于設定是否在數據飽和處理、量化處理和輸出前增加寄存器,以實現流水線,從而提高數據處理速度和性能。圖4.4.27Convert模塊Basic欄參數對話框圖4.4.28Convert模塊Implementation欄參數對話框

16.ConvolutionalEncoder

該模塊列于Communication和Index兩個子庫中。

ConvolutionalEncoder模塊用于進行卷積編碼,通常位于兩個Viterbi解碼器之間,用于實現數字通信系統中的前向糾錯(ForwardErrorCorrection,FEC)功能。模塊共有2~4個輸入端和3~8個輸出端。其中,din輸入端要求其數據格式為一位二進制無符號數(UFix1_0),用于接受需要進行卷積編碼的數據;vin端要求輸入信號為布爾量,用于指明此時din端上的數據為有效數據,只有當數據有效時才開始進行卷積編碼;dout0~dout6輸出經卷積編碼后的數據,分別對應第一個至第七個;vout表示此時的輸出數據有效。

ConvolutionalEncoder模塊參數對話框如圖4.4.29所示。圖4.4.29ConvolutionalEncoder模塊參數對話框模塊參數說明:

Constraintlength:確定編碼器中移位寄存器的長度。

Convolutioncodearray(octal):十進制卷積編碼向量。

17.Counter

該模塊列于BasicElements、ControlLogic、Math和Index四個子庫中。

Counter模塊可實現加計數或減計數器的功能,輸出數據可以為帶符號數或無符號數。

Counter模塊參數對話框如圖4.4.30所示。圖4.4.30Counter模塊參數對話框模塊參數說明:

Countertype:設定計數器的類型為FreeRunning或CountLimited。

Counttovalue:如果選擇CountLimited型的計數器,可通過本項設定計數范圍。

Countdirection:設定計數器為加計數、減計數或由控制端控制加減計數。

Initialvalue:設定計數器的初始輸出值。

Step:設定單步增減量。

Provideloadport:選擇該選項后模塊增加load和din輸入管腳,當din腳信號有效時,load端的數據將直接在out腳上輸出。

18.DAFIR

該模塊列于DSP和Index兩個子庫中。

DAFIR(DistributedArithmeticFinite-ImpulseResponse)模塊用于實現一個FIR數字濾波器,或者一個多通道的FIR濾波器,并可設定FIR濾波器的拍數及其參數。該模塊可配置有1~8個輸入/輸出端口,模塊中參數的設置對模塊端口的影響極大。如果選擇串行輸入數據模塊,模塊有2個輸入端口和5個輸出端口,如圖4.4.31所示。圖4.4.31雙通道DAFIR模塊外觀圖圖4.4.31中,xn和yn端口分別為串行數據輸入/輸出端;vin和vout端口分別為串行數據輸入/輸出有效端,并要求為布爾量信號;rfd端口用于表示本模塊是否準備接受新數據,當其有效時進行數據輸入并開始相關計算,端口上的信號采樣率與輸入端xn上的采樣率相同;sel_in和sel_out端口分別表示濾波器當前輸入/輸出通道數。

如果選擇可重配置參數功能,模塊有4個輸入端口和2個輸出端口,如圖4.4.32所示。可重配置參數功能可以依據設計需要通過串行輸入的方式改變濾波器的相關參數。圖4.4.32參數重載入DAFIR模塊外觀圖圖4.4.33DAFIR模塊參數重載入時序圖圖4.4.34DAFIR模塊Basic欄參數對話框圖4.4.35DAFIR模塊Advanced欄參數對話框模塊參數說明:

Coefficients:濾波器參數向量。

Structure:選擇濾波器的結構,從而決定了濾波器的拍數。有InferredfromCoefficients、None、Symmetric、NegativeSymmetric、Half-BandFilter或InterpolateFIR六項可選。

Numberofchannels:有1~8可選,用于配置實現多通道濾波器。

Polyphasebehavior:配置輸入/輸出采樣比。

19.Delay

該模塊列于BasicElements、Memory和Index三個子庫中。

Delay模塊構成一個時延環節,或者理解為一個移位寄存器,可以配置其延遲時鐘周期的整數倍。

Delay模塊參數對話框如圖4.3.36所示。其中,Latency用于設置延遲時鐘周期個數。圖4.4.36Delay模塊參數對話框

20.Depuncture

該模塊列于Communication和Index兩個子庫中。

Depuncture模塊可在輸入數據的特定位置插入要求的數據,模塊的輸入/輸出數據要求均為無符號二進制整數。

Depuncture模塊參數對話框如圖4.4.37所示。圖4.4.37Depuncture模塊參數對話框模塊參數說明:

Puncturecode:指定需要插入數據的數據段。

Symboltoinsert:需要插入的數據。

21.DDS

該模塊列于DSP和Index兩個子庫中。

DDS(DirectDigitalSynthesizer)模塊是直接數字合成器,通常也稱為數控振蕩器(NumericallyControlledOscillator,NCO)。模塊用一個查找表生成正弦余弦波,并由一個數字積分器,即累加器,生成正弦余弦波的相位,即對應查找表的地址。

DDS模塊參數對話框如圖4.4.38所示。圖4.4.38DDS模塊參數對話框模塊參數說明:

Function:選擇輸出為正弦、余弦或同時輸出正弦和余弦。

Negativesine:對正弦輸出取反。

Negativecosine:對余弦輸出取反。

Channels:設定輸出通道數,有1~16個可選。

OutputFrequencyType:選擇輸出頻率為常值或受控于輸入數值。當選擇Programmalbe時,激活模塊的data和we兩個輸入端口,分別為輸入數據端和數據有效端。

Outputfrequencyarray(MHz):在OutputFrequencyType中設為Fixed時,通過本項設定每個輸出端口的頻率。

PhaseOffsetType:設定輸出波形相位偏置量,有無偏置量、固定偏置量和受控于輸入端口三者可選。

Phaseoffsetanglearray:設定每個輸出端口的相位偏置量,輸入的參數將自動乘上2π弧度。

Providechannelport:激活channel端,表示當前輸出端。

22.DisregardSubsystemForGeneration

該模塊列于Tools和Index兩個子庫中。

DisregardSubsystemForGeneration模塊被放置在子系統中,在生成ISE工程文件時忽略模塊所在子系統。自6.2版SystemGenerator以后本模塊極少被用到,在將來的版本中可能會被取消。

23.DownSample

該模塊列于BasicElements和Index兩個子庫中。

DownSample模塊用于降低模塊所在處信號的采樣率,并可設定整數倍的降采樣率。圖4.4.39DownSample模塊參數對話框模塊參數說明:

Samplingrate(numberofinputsamplesperoutputsample):設定整數倍的降采樣率。

Sample:設定采樣時刻,是在一幀的起始或結束時刻。

24.DSP48

該模塊列于DSP和Index兩個子庫中。

DSP48模塊是針對XILINX的Virtex-4系列器件中的數字信號處理硬件專用模塊DSP48,用以完成數字信號處理系統中經常出現的乘加運算。DSP48模塊包括一個18×18的帶符號數乘法器、一個48位的加法器和加法器輸入端上的可編程的多路選擇器,模塊的運算可動態調整。圖4.4.40DSP48模塊Basic欄參數對話框圖4.4.41DSP48模塊Pipeline欄參數對話框模塊參數說明:

BorBCINinput:選擇用于計算的數據b是從B端口上直接讀到或者從其他DSP48模塊的進位端讀到。

Consolidatecontrolport:當選中該項時將opmode、subtract、carry_in和carry_in_sel四個端口合并成一個端口op,該端口接收一個11位的數據,其中第0~6位為opmode數據段;第7位為subtract數據段;第8位為carry_in數據段;第9和第10位為carry_in_sel數據段。

ProvideCport:當該項選中時模塊增加C輸入端口,否則其值默認為零。

ProvidePCINport:當該選項選中時模塊增加PCIN輸入端口,用于接收其他DSP48模塊的PCOUT端口的輸出值。

ProvidePCOUTport:當該選項選中時模塊增加PCOUT輸出端口,用于輸出數據c的進位,于后續DSP48模塊的PCIN輸入端口相連。

ProvideBCOUTport:當該選項選中時模塊增加BCOUT輸出端口。

Provideglobalresetport:當該選項選中時模塊增加全局復位信號rst。

Provideglobalenableport:當該選項選中時模塊增加全局使能信號en。

LengthofApipeline:設定A輸入端口上的移位寄存器的長度。

LengthofB/BCINpipeline:設定B或BCIN輸入端口上的移位寄存器的長度。

PipelineC:設定是否在C輸入端口上增加寄存器。

PipelineP:設定是否在P輸入端口上增加寄存器。

Pipelinemultiplier:設定是否在乘法器的輸出上增加寄存器。

Pipelineopmode:設定是否在opmode輸入端口上增加寄存器。

Pipelinesubtract:設定是否在subtract輸入端口上增加寄存器。

Pipelinecarryin:設定是否在carryin輸入端口上增加寄存器。

Pipelinecarryinsel:設定是否在carryinsel輸入端口上增加寄存器。

25.DSP48Macro

該模塊列于DSP和Index兩個子庫中。

DSP48Macro模塊可根據設計要求對DSP48模塊具體功能進行動態配置,并簡化DSP48模塊的使用。圖4.4.42DSP48Macro模塊Basic欄參數對話框圖4.4.43DSP48Macro模塊Pipelining欄參數對話框模塊參數說明:

InputstoportA:設定對應DSP48模塊中的數據a的輸入數據。

InputstoportB:設定對應DSP48模塊中的數據b的輸入數據。

InputstoportC:設定對應DSP48模塊中的數據c的輸入數據。

Instructions:設定DSP48模塊的計算規則。

Pipelineoptions:有ExternalRegisters、NoExternalRegisters和Custom三項可選,當選擇ExternalRegisters時,DSP48模塊的多路選擇器的輸出端增加寄存器后作為模塊的輸出端口;當選擇NoExternalRegisters時,DSP48模塊的多路選擇器的輸出直接作為模塊的輸出端口;當選擇Custom時,開發人員可以根據設計要求自行配置是否使用寄存器及其個數。

26.DualPortRAM

該模塊列于ControlLogic、Memory和Index三個子庫中。

DualPortRAM模塊用于構成一個可以任意訪問的存儲器,其雙端口的特性使得可以以不同的采樣率和讀寫位寬進行訪問。圖4.4.44DualPortRAM模塊Basic欄參數對話框圖4.4.45DualPortRAM模塊Advanced欄參數對話框模塊參數說明:

Depth:設定A端口對應的存儲器的數據位寬,其數值必須為正整數;B端口對應的存儲器的位寬由從dinb端口寫入數據的位寬決定。

Initialvaluevector:設定A端口對應的存儲器中數據的初始值。

MemoryType:選擇以Distributedmemory或BlockRAM方式實現雙端口存儲器。如果選擇Distributedmemory,則應同時設定A端口為讀優先模式,B端口為只讀模式。

InitialvalueforportAoutputregister:設定當模塊處于復位狀態時A端口的輸出寄存器上的數據。

InitialvalueforportBoutputregister:設定當模塊處于復位狀態時B端口的輸出寄存器上的數據。

WriteModes(PortA/B):設定存儲器數據寫入模式,有寫優先(Readafterwrite)、讀優先(Readbeforewrite)和寫禁止(Noreadonwrite)三種模式可選。

27.EDKProcessor

該模塊列于ControlLogic和Index兩個子庫中。

EDKProcessor模塊使得在SystemGenerator中使用由XILINX的嵌入式EDK(EmbeddedDevelopmentKit)工具開發的嵌入式處理系統。

EDKProcessor模塊參數對話框如圖4.4.46和圖4.4.47所示。圖4.4.46EDKProcessor模塊Basic欄參數對話框圖4.4.47EDKProcessor模塊Simulation欄參數對話框模塊參數說明:

EDKproject:輸入EDK工程文件名(.xmp文件)。

Processortype:此欄在導入EDK工程后顯示所用的處理器。

Targetboard:此欄在導入EDK工程后顯示所用的開發板。

Configureprocessorfor:選擇將EDK處理器模塊配置成EDKpcoregeneration或HDLnetlisting。

Import:激活EDK導入向導。

MemoryMaps:羅列了處理器所用的全部存儲器。

Compilesoftwareprogram:調用XPS工具,對當前嵌入式處理器的軟件代碼進行編譯。

LaunchGDB:調用GDB工具進行調試。

Co-simulationmode:設定協同仿真模式,有SingleStep和SingleStepOnlyonSharedMemoryAccess兩種模式可選。

28.Expression

該模塊列于BasicElements、ControlLogic和Index三個子庫中。

Expression模塊通過輸入表達式的方式對輸入信號進行按位邏輯運算。圖4.4.48Expression模塊參數對話框模塊參數說明:

Expression:輸入邏輯運算表達式,模塊的輸入端口名與表達式中的命名相同。

Alignbinarypoint:對輸入數據小數點對齊后進行邏輯運算。可用的邏輯運算符如表4.4.1所示:

29.FDATool

該模塊列于DSP、Tools和Index三個子庫中

XILINXFDATool模塊全稱FilterDesignAssistantTool,是一個濾波器輔助設計工具。它提供了一個FDATool軟件作為MATLAB信號處理工具來使用的界面。此模塊在信號處理工具箱沒有安裝的情況下是不能使用及運行的。此模塊提供了一種定義FDATool對象和作為XILINX模塊來保存的方法,還提供了一種利用圖形界面定義數字濾波器的方法。

另外值得注意的是,在此模塊用于濾波器的設計時,在濾波器參數對話框中的Coefficients參數設定項中,應填寫“xlfda_numerator('FDATool')”。

注:此模塊不使用任何硬件資源。

30.FFTv3_2

此模塊列于DSP和Index兩個子庫中

XILINXFFTv3_2模塊支持的器件有Virtex-4、Virtex-2、Virtex-2Pro和Spartan-3。FFT模塊為離散傅立葉變換(DFT)提供了一種有效算法。

該模塊根據不同的結構和實現方式有三種模式可供選擇。每種模式下端口分布情況都不一樣。模塊接口:

xn_re:輸入數據流的實數部分。

xn_im:輸入數據流的虛數部分。

start:一組數據輸入開始標記。當檢測到一組輸入數據中出現脈沖信號或某個一直為高的信號,則認為出現start信號。start信號必須是布爾型。

unload:當檢測到該輸入為高時,按自然順序讀取輸出端數據。

fwd:如果是0,則是離散傅立葉反變換,如果是1,則是離散傅立葉變換。信號fwd必須是布爾型。

fwd_we:當該信號有效時,讀入fwd端口信號,決定下一幀輸入數據的處理方式,fwd_we的信號類型必須是布爾型。

scale_sch:設定輸入數據的比例因數。

scale_sch_we:當該端口有效時,讀入scale_sch端口數據,作為下一幀輸入數據的比例因數。

注意:xn_re和xn_im兩個信號可以有相同的數據類型。

xk_re:輸出數據流的實數部分。

xk_im:輸出數據流的虛數部分。

xn_index:標識輸入數據的二進制位寬。

xk_index:標識輸出數據的二進制位寬。

rfd:在start信號有效后且xn_indexcount的值達到N-1時高電平有效。信號為布爾型。

busy:當模塊處理輸入數據流時輸出高電平,busy信號為布爾量。

edone:完成一次采樣數據處理的前一時鐘周期該信號保持高電平。

done:完成一次采樣數據處理后輸出高電平。

ovflo:當在Scaled模式下處理數據時,如果檢測到有數據溢出,該信號輸出高電平,信號為布爾型。圖4.4.49FFTv3_2模塊Basic欄參數對話框圖4.4.50FFTv3_2模塊Implementation欄參數對話框模塊參數說明:

Implementation:選擇Rsdix-4StreamingI/O,Radix-4BurstI/O,Radix-2MinimumResources和PipelinedStreamingI/O中的一個。

Numberofsamplepoints:采樣點的個數。

Outputordering:選擇輸出規則。

Scaling:選擇Unscaled、Scaled或者Blockfloatingpoint作為輸出數據類型。在Radix-4StreamingI/O中,沒有Blockfloatingpoint類型。

Roundingmode:選擇Truncation或者Convergentrounding應用到輸出端口上。

Phasefactorbitwidth:在8、12、16、20或者24之間,選擇一個作為相位因子的比特寬。

Enabledynamictransformsize:為輸入端口N和N_we選擇輸入數據幀的動態可變點長度。

Provideoverflowport:當Scaledscaling選中時,選擇輸出端口ovflo。

OptimizeforspeedusingDSP48:使用DSP48的速度最優化。

NumberofstagesusingblockRAM:將數據和相位因子存儲在RAM中。

Phasefactormemorytype:選擇相位因子存儲器類型為BlockRAM還是DistributedRAM。

Datamemorytype:選擇數據存儲器類型為BlockRAM還是分布式RAM。

31.FIFO

此模塊列于ControlLogic、Memory和Index三個子庫中。

FIFO模塊用于實現一組FIFO列。

模塊接口:

當寫使能信號有效時,模塊將數據輸入端口din上的數值寫入下一有效空地址單元;當讀使能信號re有效時,模塊通過數據輸出端口dout將輸入數據依次輸出。當FIFO中沒有空閑存儲空間時full端口置高;當FIFO中沒有數據時empty端口置高。%full端口用于表示FIFO中有多少存儲空間已滿。

FIFO模塊參數對話框如圖4.4.51所示。圖4.4.51FIFO模塊參數對話框模塊參數說明:

Depth:指定存儲數據位寬。

Bitsofprecisiontousefor%fullsignal:設定%full端口的數據位寬。

32.FIRComplierv1_0

此模塊列于DSP和Index兩個子庫中。

FIRComplier模塊用來執行高速的基于MAC的FIR濾波器,利用串聯DSP48實現。圖4.4.52FIRComplierv1_0模塊Basic欄參數對話框圖4.4.53FIRComplierv1_0模塊Implementation欄參數對話框模塊參數說明:

Filertype:允許用戶定義濾波器為下面所列類型中的一種:SingleRate表示單一數據率,即輸入和輸出數據率相同;Decimation表示輸出數據率比輸入的慢,由Sampleratechange決定差量;Interpolation表示輸出數據率比輸入的快,由Sampleratechange決定差量。

Sampleratechange:允許開發人員定義輸出對輸入采樣率的變化。

Numberofchannels:該模塊中數據通道的數量。

Hardwareover-simplingrate:定義輸入數據速率快于輸出數據速率的比例。

Coefficientvector:定義系數矢量為信號MATLAB行矢量。

Structure:定義系數結構,有InferredfromCoefficients、Non-Symmetric、Symmetric、HalfBand可選,系數矢量必須同指定的結構相吻合,除非當InferredfromCoefficients選中的情況下,將通過這些系數自動檢測結構。

Providevalidports:設定模塊的vin和vout端口。

Providecore_rdyport:設定模塊的一個core_rdy輸出端口。

Providerstandrfdport:設定模塊的rst和rfd端口。

Storageoptions:選擇Custom時,允許用戶使用存儲器存儲數據和系數。

Databuffer:指定用于存儲器存儲數據的存儲器類型。

Coefficientbuffer:指定用于存儲系數的存儲器類型。

MultipleDSP48columnsupport:指定使用Virtec-4驅動中DSP48的多列執行濾波器方式。

Firstcolumnlength:指定多列DSP48濾波器第一列的長度。

Crosscolumnpipelining:指定列與列之間的長度。

33.?FromFIFO

此模塊列于Index和SharedMemory兩個子庫中。

From

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論