FPGA-DSP嵌入式系統(tǒng)設計_第1頁
FPGA-DSP嵌入式系統(tǒng)設計_第2頁
FPGA-DSP嵌入式系統(tǒng)設計_第3頁
FPGA-DSP嵌入式系統(tǒng)設計_第4頁
FPGA-DSP嵌入式系統(tǒng)設計_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第7章FPGADSP嵌入式系統(tǒng)設計

§7.1設計流程概述

DSP(DigitalSignalProcessing)技術(shù)在通信、圖像處理增強、數(shù)據(jù)獲取、雷達及

視頻處理等等領(lǐng)域有著廣泛的應用,因此,DSP的使用也不只存在唯一的方法,而是要根據(jù)

不同的目的提出不同的解決方案??删幊绦酒腇PGA逐漸成為這些解決方案中的一個重

要的組成部分。預計用于DSP的可編程芯片的產(chǎn)量將以平均每年41.6%的比率增長,到

2005年,產(chǎn)量已達到17.8億美元。

通常,DSP算法的實現(xiàn)有兩種途徑:低速的用于普通目的的可編程DSP芯片;高速的

用于特定目的的固定功能DSP芯片組和ASIC(ApplicationSpecificIntegratedCircuit)芯片。

而FPGA是DSP設計人員的另一種選擇。大多數(shù)FPGA是由邏輯單元陣列、各個邏輯單元

之間的可編程互連線、I/O管腿和其他一些如片上的存儲器之類的資源組成的。其中邏輯單

元是由1個四輸入的查找表和1個觸發(fā)器構(gòu)成的。

與普通的DSP芯片相比,F(xiàn)PGA芯片能夠更好地實現(xiàn)并行處理,從而提高了性能并節(jié)

省/能源。如算法中使用/14個MAC(Multiply&Accumulate),與只有1到4個MAC

的通用DSP芯片不同,在FPGA中可以配置14個乘法器,以實現(xiàn)并發(fā)處理。而這種流水線

結(jié)構(gòu)的數(shù)據(jù)流可以使信號負載最小化,從而節(jié)省指令和數(shù)據(jù)存取的系統(tǒng)開銷。此外,因為芯

片所消耗的能量與它的時鐘頻率成正比,F(xiàn)PGA可以將輸入的數(shù)據(jù)流分離開,并將它們作為

幾個并行的數(shù)據(jù)流進行處理,從而工作在一個較低的時鐘頻率下,這樣做也就節(jié)省了能源。

相對來講,FPGA設計的靈活性和適應性更強。而與ASIC芯片相比,FPGA可以反復使用,并

且在產(chǎn)品制成后還能重新更改設計。這樣做有三點好處:修補bug;加入新的功能;使系統(tǒng)

適應新的標準。使用FPGA的現(xiàn)場可編程能力,不但避免/高額的開發(fā)費用,而且滿足產(chǎn)品

的上市需求。

雖然有如此多的優(yōu)點,但是目前FPGA在DSP應用上所占用的份額并不大,而且主要

是用做協(xié)處理器,以輔助DSP芯片完成一些計算密集型的算法。這種現(xiàn)象的造成主要有兩

方面的原因。一方面,在軟件上,DSP與FPGA之間有著巨大的隔閡。生活在軟件世界的DSP

程序員要學習如寄存器、門、VHDL代碼等等新的知識才能進入電子工程的世界。這兩類

設計人員不但完成設計時所使用的工具不一樣,而且,在設計中所考慮的問題也不同。表1

表示了他們之間的差異。另一方面,在硬件上,原先的FPGA芯片沒有集成專門的乘法器,

只能依靠用戶自己編輯乘法器。乘法器的實現(xiàn)比較耗費以查找表為主的系統(tǒng)資源,所以在編

輯完并行的MAC后,FPGA所剩的資源無幾,從而限制了FPGA的使用。正是由于這兩個主

要的因素,使FPGA無法在DSP領(lǐng)域中有更大的作為。

表7-1

DSP設計者FPGA設計者

設計方法CC++,匯編VHDL/Verilog編程

MATLAB.SimuLink綜合,映射,布局布線

設計問題信噪比,誤碼率,采樣率腿到腿延時,流水線和邏輯層次,布局規(guī)劃

橫亙在軟件間的隔閡和硬件結(jié)構(gòu)上的差異限制了FPGA的DSP應用,但是現(xiàn)在這項工

作變得簡單了,Xilinx公司提出了一整套的解決方案。不但出現(xiàn)了IP(InlelleclualProperly)

核(Core)形式的DSP算法和將這些IP核集成到FPGA設計的工具軟件,而且出現(xiàn)了新的

FPGA芯片。軟件上一個重要的代表是XlremeDSP系列軟件包,主要包括:

MathWorks公司的Matlab和Xilinx公司的SystemGenerator負責系統(tǒng)級設計:

MentorGraphics公司的FPGAAdvantage或Synplicity公司的SynplifyPro做HDL綜合;

ModelTechnology公司的ModelSim負責仿真;

Xilinx公司的FoundationSeriesISE負責硬件實現(xiàn),

圖7-1表示使用Xtreme設計DSP算法的流程。在硬件方面,Xilinx公司推出最新的

VirtcxII系列FPGA芯片。它內(nèi)置了192個18X18bit的高性能組合乘法器,支持高達

250MHz的數(shù)據(jù)率,內(nèi)部固化了并行的DSP數(shù)據(jù)模型。它的密度達到一千萬系統(tǒng)門,可以

運行600GMAC/so大大超出了當今通用DSP芯片的性能(TI的高端DSP芯片

TMS320C6000的定點系列C64x只能達到1.6—2.4GMAC/s)。設計方法和硬件結(jié)構(gòu)上的改

進使FPGA在DSP上的應用前景變得光明起來。

Xilinx公司同它的合作者琰合提出了XtremeDSP解決方案,它在系統(tǒng)結(jié)構(gòu)設計和基于FPGA

的DSP系統(tǒng)硬件實現(xiàn)之間建立起一座橋梁。SystemGenerator同Siniulink模型工具結(jié)合,可

以參數(shù)化、最優(yōu)化算法。它可以自動從行為級的系統(tǒng)模型轉(zhuǎn)換到FPGA實現(xiàn),其間不再需要

手工重設,大大節(jié)省了開發(fā)時間并降低了出錯概率。通過軟件,用戶可以在DSP函數(shù)的算

法、性能、節(jié)能、硅片面積中進行選取,可以快速地分析出它的運算速度和花費。

2

圖7-2基于模型的設計過程

XilinxFPGA支持用戶在同一個設計的不同部分創(chuàng)建自定義的字長。Xtreme支持不同

的比特數(shù)、流水線程度和實現(xiàn)的選擇方法。對于某些需要更多比特數(shù)來表示精度的通道,只

要更改IP的參數(shù),軟件就會自動適應新的數(shù)據(jù)配置。

Xtreme的配置靈活,用戶可以根據(jù)需要進行設置:若全部使用并行結(jié)構(gòu)就可以達到最

大的數(shù)據(jù)吞吐量,也可以由于降低了系統(tǒng)時鐘而節(jié)省能源:相反的,若全部使用串行結(jié)構(gòu)則

會使硅面積最小,節(jié)省花費,但同時仍能夠得到相當?shù)男阅堋?/p>

MATLAB作為線性系統(tǒng)的一種分析和仿真工具,在工程和計算科學上有著廣泛的應

用。它建立在向量、數(shù)組和矩陣的基礎上,結(jié)合了可視化的數(shù)學計算和強大的技術(shù)語言。內(nèi)

建的接口可以從指令、文件、外部數(shù)據(jù)庫和程序中迅速得到數(shù)據(jù)。Simulink作為MaHab的

一個工具箱(toolbox),在整個的DSP設計中起著舉足輕重的作用“它是一個交互式的工

具,用于對復雜的系統(tǒng)進行建模、仿真和分析。成為控制系統(tǒng)設計、DSP設計、通信系統(tǒng)設

計和其它仿真應用的首選工具。它的特性為:建立圖形式的模塊列表,模擬復雜系統(tǒng),評估

系統(tǒng)的性能,提高設計水平;建立模擬、數(shù)字或數(shù)模混合的信號系統(tǒng),控制邏輯器件;與

Matlab的結(jié)合;與Stateflow緊密結(jié)合,建立數(shù)據(jù)驅(qū)動行為的模型;廣泛利用DSP庫。

SystemGenerator是Xilinx公司的的一個模塊集(blocksct),它是simulink的一個插

件,其中設置了Xilinx特有的DSP功能的IP核,包括了基本DSP函數(shù)和邏輯算符,如FIR

(FiniteImpulseResponse)sFFT(FastFourierTransform)x存儲器、數(shù)學函數(shù)、轉(zhuǎn)換器、延

時線等等。這些預先定義好的模塊保證了FPGA實現(xiàn)時的位-bil和周期-cycle的正確。使用

它可以自動生成VHDL/VcriQg語言、測試向量以及可以使MudclSiw仿真的“.du”文件。

為了得到最佳的性能、密度和可預測性,SystemGeneral還會自動將特定的設計模塊映射

成高度優(yōu)化了的IP核模型。XilinxBlockset中的模塊,有的可以直接映射到硬件,有的對應

著IP核。它們中每個都可以根據(jù)設計要求更改參數(shù),支持雙精度和定點的算法。這個模塊

集是一個可以外部擴展的庫,使用的是C++的定點算法,所以用戶可以創(chuàng)建自己的基于C

++類的Simulink庫元件,在設計中它會被當作黑箱(Blackbox)處理。

有兩種可以實現(xiàn)HDL綜合的工具:MentorGraphics的FPGAAdvantage和Synplicity的

Synplifyo這兩個工具都可以將上一步(使用Simulink和XilinxSystemGenerator完成的設

3

ModelSim:SystemGenerator提供必要的接口與ModelSim仿真MentorGraphics

器連接,可以利用它做HDL協(xié)同仿真或?qū)崟r地輸入仿真結(jié)果到

Simulink/SystemGenerator仿真

設計校驗ChipScopePro:監(jiān)視FPGA的內(nèi)部測點,預測和診斷設計,探測Xilinx

和診斷結(jié)果可插入到Simulink/SystemGenerator內(nèi)

§7.2FPGA設計DSP技術(shù)

ISE實現(xiàn)軟件、SystemGenerator以及MATLAB/SimJ1ink工具之間都有相互配合的版本

問題,對廣ISE8.1以上的版本,要求相同序號的SystemGenerator版本,并配合使用

MATLAB/Sinwlink7.2以上的版本,如R2006a等。

SystemGenerators.1以上的版本,只要執(zhí)行SysGenInstall.exe的執(zhí)行文件,安裝時會自

動找到MATLAB/Sinnilink(R2006a)的安裝目錄,將Xilinx的Blocksct模塊集安裝到

Simulink中。

7.2.1浮點數(shù)與定點數(shù)的表示與轉(zhuǎn)換

在設計仿真中Simulink是利用雙精度數(shù)(double)表示數(shù)值,它是64位2的補碼浮點

數(shù),而雙精度數(shù)對FPGA是無效或不實際的。

當利用有限位數(shù)來表示二進制數(shù)時,二進制點的位置確定了所表示數(shù)的范圍和精度,

二者的關(guān)系是二進制點前面的位數(shù)多表示的數(shù)值的有效范圍大,精度就低,相反,二進制點

后面的位數(shù)多,數(shù)值精度提高,數(shù)值有效范圍減小。

例;16位數(shù)值0001011001101011-213+210+29+26+25+23+21+20

=4096+1024+512+64+32+8+2+1=5739

表示此數(shù)需要的二進制位數(shù)為

N=logioX/log|02=logio5739/logi02=3.7588/0.3010=12.4866

取最靠近的整數(shù)為13位。

已知16進制的數(shù)值可以按照如下方式進行二進制變換和計算數(shù)值

166B=900l011001101011

=(1*163)+(6*162)+(6*16*)+(B*l6°)

=(1*4096)+(6*256)+(6*16)+(11)=5739

對于DSP技術(shù)更好的方式理解2的補碼數(shù)是將具符號表示位看作為原始的二進制數(shù)的

相應的部分,這個要點是實現(xiàn)時只是這位有負的加權(quán)值,所以,2的補碼數(shù)值如下計算。

11111111=-27+26+25+24+23+22+2I+20

=-128+64+32+16+8+4+2+1

=-128+127

=T(io)

對于雙精度的64位2的補碼浮點數(shù),由于二進制點可以移動,所以在±9.233*1018之

間的任何數(shù)都可以表示,精度為1.08*10-19,也就是浮點數(shù)可以做到數(shù)值范圍大,精度高,

5

這也是雙精度的含義。由于硬件無法按照雙精度的要求志行實現(xiàn),所以要轉(zhuǎn)換成N位的定

點數(shù)。

1.在Simulink中Xilinx的模塊集有三種數(shù)據(jù)類型:

2.不帶符號的N位定點數(shù),表示為UFix_N_m,其中N為二進制位數(shù),m為二進制點

距離最低位的位置,最大精度為2m;

帶符號的N位定點數(shù),表示為Fix_N_m,其中N為二進制位數(shù),m為二進制點距離最低

位的位置,最大精度為2m;

布爾類型數(shù),總是定義為。或1,作為控制口的使能(CE)或復位(reset),所以不可

以設為無效。

例:數(shù)值為-2.261108,表示為Fix」6」3的格式,

101.1011110100101=-22+20+2-1+2-3+2-4+2-5+2-6+2-8+2-11+2-13=

-4+1+0.5+0.125+0.0625+0.03125+0.015625+0.00390625-0.(X)()48828125+0.0001220703125

=-2.2611083984375

.22212°2'12'22-32"42'52'62'72'82'92-102-112'122'13

Value=-2.261108...

Format=Ax_16_13

hlegerFraction(Sign:Fix=SignedValue

Format=SignWidthDecimalpointfromtheLSB(jFix=Unsignedvalue)

圖7-3數(shù)據(jù)類型

在基于模型的系統(tǒng)設計流程中,當Xilinx模塊集中的帶符號的定點數(shù)模塊需要與Simulink

的雙精度數(shù)模塊通信時,必須要進行數(shù)據(jù)類型的變換,這是基于模型的系統(tǒng)設計流程中重

要概念之一。

為了完成這個數(shù)據(jù)類型變換,要選擇Xilinx模塊集中的GatewayIn實現(xiàn)雙精度數(shù)到定點

數(shù)的轉(zhuǎn)換,或者選擇Xilinx模塊集中的GatewayOut實現(xiàn)定點數(shù)到雙精度數(shù)的轉(zhuǎn)換。

1.GatewayIn/Out兩個模塊可以通過選擇參數(shù)來控制如何實現(xiàn)雙精度數(shù)與定點

數(shù)之間的相互轉(zhuǎn)換。一般來說,主要由GatewayIn模塊的參數(shù)選擇來進行控制,除

了選擇帶符號或不帶符號定點數(shù)的位數(shù)和二進制點位置之外,還需要選擇以下兩

個參數(shù):

量化方式:截斷(Trancatc)或舍入(Round);

溢出方式:飽和(Saturate)或交迭(Wnip)。

當小數(shù)部分的位數(shù)不足以表示?個數(shù)值的小數(shù)部分時,將出現(xiàn)量化的情況,截斷是放棄最

低有效位右邊的所有位,當有兩個等距離最接近表示的數(shù)值,舍入將取最接近表示的數(shù)值,

或取偏離0最遠的數(shù)值。

6

DOUBLE

2。2$242^22212。242一?2~32送2.52/2-72~'2-"2*^2'^2"^2"^

OVERFLOW

QUANTIZATION

-Saturate

-Truncate

-Wrap

-Round

-FlagforError

圖7-4雙精度浮點數(shù)到定點數(shù)的轉(zhuǎn)換

例:完全精確數(shù)值為:001.10111101010000=-2.2607421875

截斷的結(jié)果為:Fix_12_9101.101111010=-2.26171875

舍入的結(jié)果為:Fix_12_9101.101111011=-2.259765625

取決于采用截斷還是舍入的方法,對于正的完全精確數(shù)值和無符號完全精確數(shù)值都會

有不同的輸出結(jié)果。

例:正的完全精確數(shù)值為:101.10111101010000=1.7392578125

截斷的結(jié)果為:Fix」2_9101.101111010=1.73828125

舍入的結(jié)果為:Fix」2_9101.101111011=1.740234375

例:無符號完全精確數(shù)值為:101.10111101010000=5.7392578125

截斷的結(jié)果為:Fix_12_9101.101111010=5.73828125

舍入的結(jié)果為:Fix」2_9101.101111011-5.7/10231375

當一個數(shù)值超出了表示的范圍將出現(xiàn)溢出,選擇飽和時,取最大的正值或最大的負值,

在定點數(shù)中選擇交迭時,就放棄超出最大有效位的任何有效位。在仿真的過程中出現(xiàn)溢

出將有溢出標志作為Simulink的錯誤產(chǎn)生。

例:完全精確的數(shù)值為:01101.1011=13.6875

飽和的結(jié)果為:Fix_7_4Oil.1111=3.9375

交迭的結(jié)果為:Fix_7_4101.1011=-2.3125

不論選擇哪種方式處理量化和溢出,產(chǎn)生的HDL模型和Simulink的模型將有相同的行

為特性。究竟選擇量化和溢出方式中的哪種,實際上取決丁設”的耍求和硬件的實現(xiàn),量

化方式中截斷不增加硬件,而舍入要增加進行進位的硬件資源,所以在滿足設計要求的情

況下,應盡量選擇截斷的量化方式。溢出方式中選擇飽和的方式可以防止輸出的振蕩,輸出

數(shù)據(jù)不再改變,實現(xiàn)上也要增加硬件的資源。

數(shù)據(jù)類型中的布爾(Boolean)類型是為模塊的控制口設計的,如模塊的時鐘使能(CE)

或復位(reset)口要選擇布爾類型,布爾類型是一位的非符號數(shù)的變量,與一位的非符號數(shù)

的區(qū)別是,一位的非符號數(shù)可以變?yōu)闊o效,但是布爾類型的數(shù)只定義為高或低電平的1或0

兩種情況,而不可以變?yōu)闊o效,否則控制口也將失效,系統(tǒng)無法工作。

7

例:定義以下的2的外碼二進制分數(shù)的格式和計算其數(shù)值:

1100011.01011

格式為:Fix_12_5,

數(shù)值為:-64+32+2+1+0.25+0.0625+0.03125=-917/32=-28.65625

I.例:什么格式應該利用來表示以下的信號:

2,最大值為+1,最小值為-1,量化為12位數(shù)據(jù):Fix」2_10;

1.最大值為0.8,最小值為0.2,量化為10位數(shù)據(jù):UFix_10_10;

2.最大值為278,最小值為-138,量化為11位數(shù)據(jù):Fix_ll_lo

3.例:求進行加法和乘法運算時,完全精度的輸出數(shù)據(jù)類型。

4.<Fix_12_9>+<Fix_8_3>=<Fix_15_9>

5.<Fix_8_7>*<UFix_8_6>=<Fix_16_13>

利用Xilinx的模塊集中的模塊創(chuàng)建一個SystemGenerator的設計,這些模塊是硬件可實現(xiàn)的

SysGen模型,此模型必須包含SystemGenerator模塊,SysGen模型要通過I/O模塊作為

Xilinx模塊集與其他的Simulink的模塊之間的接口,模型的輸入端通過Gatewayhi與

Simulink的源連接,模型的輸出端通過GalewayOutSimulink的沉及庫函數(shù)連接,如圖7-5

所示.模型的仿真和優(yōu)化就很方便。

'Simulink-:SysGenDataPathand;.…:「飛贏/一卜:

:Sources:;:helperblocks:;:sinks::

???'''?

Gatewayblocksusedtointerface?,

>betweenSimulinkandSysGenblocks:一1

I_________________________________I

圖7-5Simulink模塊的設計模型

7.2.2采樣周期的設置

在SysGen模型中的每個SysGen信號必須被采樣,出現(xiàn)在等距離離散時間點上的瞬間稱為

采樣時間。在基于模型的Simulink建模設計中,每個模塊都有“采樣周期”,它常對應模塊

的功能如何計算和結(jié)果如何輸出,所以采樣周期是基于模型的系統(tǒng)設計流程中另一個重要

概念。

對于GatewayIn和模塊的w/o輸入的采樣周期必須明確設定,采樣周期也可以由其他

模塊的輸入采樣時間來驅(qū)動。采樣周期的單位可以認為是任意的,但是許多Simulink的源模

塊有一個時間要素,例如,1/44100的采樣周期意味著模塊的功能每間隔1/44100秒執(zhí)行一

次。當設置采樣周期時,要遵循奈奎斯特(Niquist)定理。一個模塊的采樣周期直接與其在

實際硬件中如何定時有關(guān)。

在SystemGenerator模塊的參數(shù)中必須設置Simulink的系統(tǒng)周期,對于單數(shù)據(jù)率的系統(tǒng),

8

Simulink的系統(tǒng)周期將與設計中設置的采樣周期相同。如圖7-6所示。

System

tn?ut1

—日制忡

2W

O?t

―5.惘I

SamplePeriod=1

圖7-6采樣周期的設宣

§7.3SystemGenerator模塊

在Xilinx模塊集中,對可以轉(zhuǎn)化為HDL代碼的模塊,其標示都以一個“X”型的水印

來區(qū)別于其它的Simulink模塊。對SysGen設計,XiIinx模塊集有一些十分重要和特殊的

模塊,要給以特別的注意。

1SystemGenerator模塊:

SystemGenerator模塊是一個極其重要的基本模塊,它不僅使得在Simulink下建立的

SysGen模型提供了層次化的表述能力,同時還必須由它來激活代碼生成器,以實現(xiàn)模型的

HDL代碼轉(zhuǎn)化。對于一個SysGen模型,至少要保證頂層有一個SystemGenerator模塊。

在一個SysGen模型中,SystemGenerator的參數(shù)選扭對話窗如圖7-7所示。在此窗口中,

要進行定制的參數(shù)有:

(1)XilinxSystemGenerator:

①目標器件的系列、型號、速度等級、封裝。

SysGen支持的器件系列有:Virtex-4,Virtex-IIPro,Virtex-II,Viilex-E,Virtex.

Spartan3E,Spartan3,Spartan-I【E和Spartan-I【系歹

②采用的綜合工具。

對于選用不同的綜合工具,要求生成的代碼也有一定的差別。目前支持的綜合工具

有:LeonardoSpectrum,SynplicitySynplifyPro,Synplify和XilinxXST。

③目標路徑。

設計的目標代碼保存的路徑。

④產(chǎn)生測試向量復選框。

如果選擇了該項,則在生成HDL代碼時可以將Simulink仿真輸入轉(zhuǎn)換成VHDL測試激勵向量,

將Simulink仿真輸出轉(zhuǎn)換成對應的VHDL測試輸出向量。這些向量可用于所產(chǎn)生的VHDL代

碼的行為仿真。

9

圖7-7SystemGenerator的參數(shù)選擇對話窗

(2)SystemPeriod(系統(tǒng)周期):分別設置Simulink的系統(tǒng)周期和實現(xiàn)硬件的系統(tǒng)

時鐘周期,前者默認的時間單位是秒,后者為納秒。

(3)HierarchicalControl(層次控制):

?OverridewithDoubles:

以雙精度浮點的方式仿真Xilinx模塊或Simulink模型,替代Xilinx模塊的定點方式。設置

為“OverridewilhDoubles”的Xilinx模塊顯示為灰色。關(guān)于Xilinx模塊的定點和浮點方

式在GatewayIn模塊和GatewayOut模塊的介紹中詳細闡述。在下拉選擇框中,可以指定

在進行Simulink仿真時,FPGA設計是根據(jù)

“AccordingtoBlockMasks”模塊的屏蔽情況,使用雙精度浮點信號取代定點信號:

“EverywhereinSubsystemM在子系統(tǒng)中使用雙精度浮點信號取代定點信號;

“NowhereinSubsystem”在子系統(tǒng)中不使用雙精度浮點信號取代定點信號。

②GenerateCores:選擇在生成VHDL代碼的過程中,是否生成XilinxLogiCOREs??蛇x

項有:

“AccordingtoBlockMasks”根據(jù)模塊的屏蔽情況生成XilinxLogiCOREs:

4"EverywhereAvailableM在任何可能的地方,都生成XilinxLogiCOREs,

“Nuwhcic”不生成XilinxLugiCOREso

設置好SystemGenerator的參數(shù)后,單擊Generate按鈕開始生成VHDL代碼。如果目標

目錄不存在,會提示創(chuàng)建該目錄。在代碼生成過程中,會顯示一個進度條來表示生成進度。

代碼生成后,會彈出一個確認信息窗,點擊確認即可。

2BlackBox模塊:

BlackBox模塊是一個十分重要的基本模塊,在Simulink環(huán)境里,并不是所有的硬件結(jié)

構(gòu)都可以通過Xilinx模塊集中的模塊進行組合來實現(xiàn);但為了能進行設計系統(tǒng)的模型仿真,

設計的Simulink模型又應該是一個完整的模型。黑匣子(BlackBox)模塊就是專門設計用

10

來解決這種矛盾.,提供Simulink模型與構(gòu)造的HDL源碼之間的接口。此外,在設計中,某

些組件可能已經(jīng)用VHDL或Verilog設計好了可直接調(diào)用,或者某些組件直接用VHDL編寫

比起在Simulink里建模要更為簡單些。這些情況下,都要選用BlackBox模塊。

BlackBox模塊的使用方法是:

(1)將BlackBox模塊添加到模型中;

對BlackBox模塊的要求:

1.與BlackBox模塊有關(guān)的VHDL7匕件必須遵從以卜SystemGenerator的要求和

規(guī)定:

2.實體名稱必須與設計中任何其他實體的名稱不同;

3.在頂層的實體中不允許雙向端口;

4.不是時鐘或時鐘使能的任何端口必須具有std」ogic_vector的數(shù)據(jù)類型;

5.是時鐘或時鐘使能的任何端口必須具有stdjogic的數(shù)據(jù)類型;

頂層的VHDL程序必須為每個Simulink中有關(guān)的采樣率設置分別的時鐘和時鐘使能端

口。

1.在blackBox的VHDL程序中時鐘和時鐘使能端口應該如下表示:

2.時鐘和時鐘便能信號必須成對地出現(xiàn):

3.雖然BlackBox可以有多個時鐘端口,但利用單個時鐘源驅(qū)動每個時鐘端口;

4.只有時鐘使能的速率是不同的;

5.每個時鐘的名稱(和每個時鐘使能的名稱)必須包含elk(和ce)的字符;

時鐘使能的名稱必須與相應的時鐘名稱相同,只是elk用ce代替。

時鐘和時鐘使能端口在BlackBox模塊的圖框中不可見。

BlackBox模塊必須通過一個MATLAB的M函數(shù)的文件描述它的接口,例如,端口和

generics,設計的實現(xiàn),通過HDL協(xié)同仿真的仿真模型等。

這個M函數(shù)文件的名稱應該在模塊參數(shù)對話框中進行規(guī)定。

1.M函數(shù)的配置文件要完成以下的工作:

規(guī)定HDL元件的頂層實體名稱,它應該與blackbox名稱一致;

2.例:this_block.setEntityName('fir_blackbox'):

3.選擇語言(即VHDL或Verilog);

4.例:this.block.setTopLevelLanguageCVHDL);

描述端口,包括類型、方向、位寬度、二進制點位置、名稱和采樣率;

例:this_block.ad(lSimulinkInport(,reset,);

thiS-block-addSimulinklnportCdin');

(his_block.addSimulinkOu(port('dout');

duul_psl.sclTypc('Fix_30_0');

5.定義由此blackbox的HDL要求的任何generics;

6.規(guī)定此blackbox的HDL和與此模塊有關(guān)的其它文件(例如EDIF);

例:this_block.addFile('fir.cdn');-addedentries

this_block.addFile('fir.mif);

this_block.addFile(Tir.vhd');

7.定義為此模塊的時鐘和時鐘使能;

8.定義是否此HDL有任何組合的通過反饋的路徑。

11

(2)如果在模型的項目路徑下含有VHDL文件,自動執(zhí)行一個配置向?qū)?,選擇相應的HDL

文件,如圖7-8所示;

Selectthefilethatcontainstheentitydescriptionforth...

圖7-8BlackBox參數(shù)定制對話窗

(3)設置BlackBox的參數(shù),如圖7-9所示。

?BlackBox(XilinxBlackBox)[Z~|[n][X-|

IncorporatesblackboxHDLandsimulationmodelintoaSystem

Generatordesign.

YoumustsupplyaBlackBoxwithcertaininformationabouttheHDL

componentyouwouldliketobringintoSystemGenerator.This

informationisprovidedthroughaMatlabfunction.

When"Simulationmode"issetto"Inactive泣youwilltypicalwantto

piovideaseparatesitnuhlionmodelbyusingaSimulationMuHiplexer.

When"Simulationmode"issetto"Externalco-simulato("zyoumust

includeaModdSimblockinthedesign.

BasicImplementation

Blockconfigurationm-function

fir_blackbox_config

SimulationmodeExternalco-$imulato(v

HDLco-$imuiatortouse(specifyhelperblockbyrame)

ModelSim

CancelHelpApply

圖7-9BlackBox參數(shù)設置對話框

BlackBox的參數(shù)包括以下幾項:

(1)BlockCongigurationM-Function:規(guī)定BlackBox模塊配置M函數(shù)的名稱。M函數(shù)

可以是手工編寫的,也可以是由配置向?qū)ё詣由傻摹?/p>

BlackBox必須通過MATLABM函數(shù)描述它的接口:例如端口、通用屬性(generics)、

12

它的實現(xiàn)、選項和HDL協(xié)同仿真的仿真模型等。

配置M函數(shù)完成以下任務:

1.規(guī)定與BlackBox模塊有關(guān)的HDL元件的頂層實體名稱;

2.規(guī)定使用的語言(VHAL或Verilog);

3.描述端口,包括類型、方向、位寬度、二進制點位置和采樣率;

4.定義由BlackBox模塊的HDL元件要求任何通用屬性(generics);

5.規(guī)定BlackBax模塊的HDL元件和與此模塊有關(guān)的其他文件(如EDIF);

6.定義模塊的E寸鐘和時鐘使能

7.說明是否HDL元件有任何通過反饋的組合路徑;

(2)SimulationMode:有"Inactive”和“UseHDLCo—Simulation”兩個選項。如果

是前者的話,那么在仿真是,將忽略輸入始終輸出零。如果是后者的話,則使用HDL協(xié)同仿

真。這時,需要在模型中新增一個ModelSim模塊,并在BlackBox模塊的“HDLCo-Simulator

ToUse(specifyhelperblockbyname)M中指定該ModelSim模塊。

(3)FPGAArea:提供用于資源使用估算的信息。

在生成代碼時,該子系統(tǒng)功能的硬件實現(xiàn)直接使用指定的VHDL文件。也可以使用

Verilog文件,但這時必須人工編寫模塊的M函數(shù)。講行仿真時.BlackBox模塊通過結(jié)合

SimulationMulliplexer模塊和ModelSim模塊有多種靈活的仿真方法。

3ModelSim模塊

1.ModelSimHDL協(xié)同仿真模塊配置和控制對一個或幾個BlackBox模塊的協(xié)同仿真。

這個模塊完成以下工作:

2.構(gòu)造為允許blackboxHDL在ModelSim中被仿真所需要的附加VHDL;

3.當Simulink仿真開始時引起ModelSim一個對話時間;

4.傳遞在Simulink和ModelSim之間的通信;

5.當blackboxHDL被編譯時報告是否有錯誤內(nèi)檢測;

當仿真完成時,如果合適終止ModelSim。

在仿真期間,每個ModelSim模塊引起一個ModelSim的拷貝,所以利用ModelSim一個

license,如果license是不足的,幾個blackboxe模塊可以共享此相同的模塊,除了靈活性差,

采用這個方式?jīng)]有東西損失,在ModelSim中的時間刻度匹配在Simulink中的時間刻度,即,

i.c.,onesecondofSimulink的一秒仿真時間對應ModelSim的一秒仿真時間。參數(shù)選擇如圖

7-10所示。

13

?ModelSim(ModelSimHDLCo-Simulation...匚]叵]區(qū)|

AllowotherblockstoscheduleHDLcosimulationtasks.

Notethatselecting"Skipcompilation"wheninappropriatecancause

simulationerrorsandfailures.Pleaserefertotheblockhelpfordetails.

BasicAdvanced

Runco-simulationindirectory:./modelsim

0Openwaveformviewer

回LeaveModelSimopenatendofsimulation

□Skipcompilation(usepreviousresults)

6kj[Cancel][Help][Apply

圖7-10ModelSim模塊參數(shù)選擇

4GatewayIn模塊和GatewayOut模塊:

對于Simulink仿真,通常的Simulink模型都是浮點仿真。而對于用Xilinx模塊實現(xiàn)的

設計,由于最終是要用FPGA完成一個硬件電路的實現(xiàn),因而在默認方式下,Simulink中的

Xilinx模塊是進行定點仿真,而其余的Simulink一般模塊是做浮點仿真。

Matlab10(接口模塊)組中的GatewayIn模塊和GatewayOut模塊提供了FPGA設計

(定點)和通常Simulink模塊(浮點)之間的接口功能。GatewayIn模塊將其它Simulink

模塊的雙精度浮點數(shù)據(jù)轉(zhuǎn)換成XilinxFPGA需要的定點數(shù)據(jù),而GatewayOut模塊則正好相

反??梢栽谝粋€實例中,選中“Format"菜單里的"Poridatatypes”來驗證。

但是有的時候,在用戶選擇定點寬度,或者用定點方式仿真FPGA設計沒有得到期望的

結(jié)果或結(jié)果不正確時,用戶就希望.可以選擇以雙精度浮點的方式仿真整個系統(tǒng)或特定的

某些模塊,以幫助發(fā)現(xiàn)FPGA設計的哪一部分存在量化錯誤。這時就可以通過設置Xilinx

模塊參數(shù)中的"OverridewithDouble”項,并配合以SystemGenerator模塊里的相應設置來

實現(xiàn)。

5.Concat模塊、Convert模塊、Reinterpret模塊和SIic.模塊

1.在以下的一些情況下,可以利用這些模塊來完成所需做的工作:

2.將兩個數(shù)據(jù)總線組合起來形成一個新的總線;

3.強迫進行包括位數(shù)和二進制點的數(shù)據(jù)類型變換;

4.重置無符號數(shù)為符號數(shù)或符號數(shù)為無符號數(shù);

5.在數(shù)據(jù)位增K時提取數(shù)據(jù)的指定位。

Concat模塊:

此模塊執(zhí)行兩個位矢量的連接,模塊的兩個輸入必須是無符號的整數(shù),例如兩個二進

制點位于0的無符號數(shù),或者利用Reinterpret模塊所提供的符號數(shù)變換為無符號數(shù)的能

力,達到擴展Concat模塊的功能,

Convert模塊:

Convert模塊可以把每個輸入采樣變換為所需算術(shù)類型的數(shù)。

1.一個數(shù)可以變換到2的補碼的符號數(shù)或無符號的數(shù)值;

14

2.總位數(shù)和二進制點由設計者規(guī)定;

3.舍入和量化選擇加到輸出數(shù)值;

取決于溢出和量化的選擇可以利用附加的硬件,而不利用LogiCoreo

在規(guī)定總位數(shù)和二進制點位置,符號或無符號的算術(shù)類型后,模塊首先排齊輸入和輸

出端口類型之間的二進制點,然后利用規(guī)定的總位數(shù)和二進制點,與利用的溢出和量

化選擇有關(guān),輸出可能按拋下的位相反地變化。飽和溢出改變小數(shù)的數(shù)值為得到飽和的

數(shù)值。舍入量化也可能影響到二進制點左邊的數(shù)值。

例:以下數(shù)值通過Convert模塊導致利用不同位數(shù)和二進制點有相同的結(jié)果。

原始數(shù)值:Fix_I0_801.10000000

變換為:Fix_7_4(XJI.100()

變換為:Fix_6_0000010.(舍入)000001.(結(jié)尾)

Reinterpret模塊:

為保持輸入端表示的數(shù)值,無任何考慮地強迫其輸出為新的類型。輸入端總的位數(shù)等于

輸出端總位數(shù),允許無符號位數(shù)據(jù)重置為符號位數(shù)據(jù),或符號位數(shù)據(jù)重置為無符號位數(shù)據(jù)。

也允許通過重新放置二進制點縮放數(shù)據(jù)。

例:重一以下的數(shù)值.迫使二講制點到位置5。

輸入數(shù)據(jù)為:Fix_10_801.10000000=4-1.5

輸出數(shù)據(jù)為:Fix_10_501100.0000(]=+12

Slice模塊

Slice模塊允許從輸入數(shù)據(jù)移位出一系列的位,產(chǎn)生一個新的數(shù)據(jù)值,輸出數(shù)據(jù)是無符

號數(shù),二進制點在位置。處。

例:取Fix_10_8符號數(shù)的4位移動,偏置最低位5位。

輸入數(shù)據(jù)為:Fix」0_801.1000000()=+1.5輸出數(shù)據(jù)為I1D()=

12

較高位位置+寬度:從MSB的頂位-0偏置,寬度-4

輸出數(shù)據(jù)為01100.00000=6

兩個位置定位:從MSB的頂位=-1偏置,從LSB的位=5偏置

輸出數(shù)據(jù)為01100.00000=12

模塊通用屬性

雙擊Xilinx的模塊,在彈出的參數(shù)設置對"話窗中,有一些參數(shù)的設置是具有普遍性的。

(1)ArithmeticType運算數(shù)據(jù)類型:指定輸出信號是無符號或帶符號(二進制補碼)。

(2)InipleiiieiilwithXilinxSiiiart-IPCore(ifpcib加)采用XilinxSiiiarl-IP核實現(xiàn):

復選項,選中則用實現(xiàn)核例示的VHDL代碼來實現(xiàn)該模塊,否則只生成可綜合的VHDL代

碼。如果不能完成核的例示,則自己生成可綜合的VHDL代碼。

(3)GenerateCore生成核:見前面介紹的幾個重要模塊

(4)UsePlacementInformationforCore對核使用布局要求:選中該項通常會加快核

的實現(xiàn),但由于添加了約束,可能導致布局布線失敗。

(5)Latency延遲:輸出延遲周期。

(6)Precision精度:缺省情況下為“Full",保證有足夠的精度不致出錯;用戶也可

15

以選擇"User?Defined”來自己設定。

(7)NumberofBits位數(shù):設置定點數(shù)的位長,其中包括"BinaryPoint”,設定二進

制小數(shù)點的位置。設置不合理,會導致溢出和量化錯誤。

(8)OverflowandQuantization溢出和量化錯誤處理:用戶對定點數(shù)設置不當,會導

致溢出和量化錯誤。發(fā)生溢出時,出錯處理可以是“Saturate”(輸出可表示的最大正值或

最小負值)、“Warp”(截頂)或“Error”(直接報錯)。發(fā)生量化錯誤時,出錯處理可以是

“Round”(舍入)或“Truncate”(截尾)。

(9)OverridewithDoubles:見前面介紹的幾個重要模塊。

(10)ProvideResetPort提供復位端:是否為模塊提供復位端口。

(11)ProvideEnablePort提供使能端:是否為模塊提供使能端口。

(12)UseExplicitSamplePeriod使用外部采樣周期:選中該項可較好的解決模型中的環(huán)路

時序。

(13)FPGAArea(Slices,FFs,LUTs,lOBs,EmbeddedMults,TBUFs)FPGA資源使用:

提供模塊資源使用的估算信息,以便“ResourceEstimator”模塊進行系統(tǒng)資源耗用估算。

一維數(shù)組中的數(shù)字分別對應相同位置上所指的硬件資源的耗用情況。

圖7/1計數(shù)器的各種參數(shù)選項

§7.4設計FIR濾波器

設計描述

?一個單通道、單速率濾波器的技術(shù)指標為:

?采樣頻率SamplingFrequency(Fs)=i.5MHz

?截止頻率1Fstop1=270kHz

?通帶頻率IFpass1=30()kHz

?通帶頻率2Fpass2=450khz

?截止頻率2Fstop2=480kHz

?通帶兩邊衰減Attenuationonbothsidesofthepassband=54dB

16

?通帶起伏Passbandripple=1

?兩個不同的信源利用來仿真此濾波器:

線性調(diào)頻chirp模塊,它在6KHz和10KHz規(guī)定的頻率之間掃描,不考慮瞬

時輸出頻率。

隨機信源發(fā)生器,它在-1.9至IJ1.9的范圍內(nèi)輸出均勻分布的隨機信號,均勻分布是

驅(qū)動定點濾波器更好的選擇,因為濾波器是受限的。

一產(chǎn)生FIR濾波器的系數(shù)

?利用MATLABconsole窗口,從d:/DSP/lab4目錄打開bandpass_filter.mdl

模塊,從XilinxBlocksct(DSP模塊集添加FDATool模塊到設計中。在

d:/DSP/lab4目錄中利用FDATool模塊為以下的技術(shù)指標產(chǎn)生FIR濾波器

的系數(shù)。

?采樣頻率SamplingFrequency(Fs)=1.5MHz

溫馨提示

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

評論

0/150

提交評論