MULTLABDSPbuilder硬件模塊設(shè)計(jì)_第1頁(yè)
MULTLABDSPbuilder硬件模塊設(shè)計(jì)_第2頁(yè)
MULTLABDSPbuilder硬件模塊設(shè)計(jì)_第3頁(yè)
MULTLABDSPbuilder硬件模塊設(shè)計(jì)_第4頁(yè)
MULTLABDSPbuilder硬件模塊設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

-.z.第六章Matlab/Dspbuilder硬件模塊設(shè)計(jì)Matlab是國(guó)強(qiáng)大的數(shù)學(xué)分析工具,廣泛用于科學(xué)計(jì)算和工程計(jì)算,還可以進(jìn)行復(fù)雜的數(shù)字信號(hào)處理系統(tǒng)的建模、參數(shù)估計(jì)及性能分析。Simulink是Matlab的一個(gè)組成部分,用于圖形化建模仿真。DSPBuilder是Altera公司推出的一個(gè)面向DSP開發(fā)的系統(tǒng)級(jí)工具,它構(gòu)架在多個(gè)軟件工具之上,并把系統(tǒng)級(jí)(算法級(jí)建模)和RTL級(jí)(硬件實(shí)現(xiàn))兩個(gè)設(shè)計(jì)領(lǐng)域的設(shè)計(jì)工具連接起來(lái)放在Matlab/Simulink平臺(tái)上,而將QuartrsⅡ作為底層設(shè)計(jì)工具置于后臺(tái),從而最大程度地發(fā)揮了這三種工具的優(yōu)勢(shì)。DSPBuilder作為Simulink中的一個(gè)工具箱,使得用FPGA設(shè)計(jì)DSP系統(tǒng)完全可以通過(guò)Simulink的圖形化界面進(jìn)行,只要簡(jiǎn)單地進(jìn)行DSPBuilder工具箱中的模塊調(diào)用即可。Matlab/DSPBuilder尤其適用于一些在QuartusⅡ上不方便完成或不能完成的設(shè)計(jì)項(xiàng)目(如涉及算法類及模擬信號(hào)處理與生產(chǎn)方面的系統(tǒng)處理)。DSPBuilder還可以自動(dòng)完成大部分的設(shè)計(jì)過(guò)程和仿真,直到把設(shè)計(jì)文件下載到FPGA中。DSPBuilder提供了Quartus?II軟件和MATLAB/Simulink工具之間的接口。其具有如下特性:1.用于連接Mathwork的MATLAB(信號(hào)處理工具箱和濾波器設(shè)計(jì)工具箱),Simulink環(huán)境和Altera?的QuartusII設(shè)計(jì)軟件環(huán)境。2.支持Altera的DSP核,這些核均可以從Altera的上下載(例如:FIRpiler、Reed-Solomonpiler等等)。3.可以利用Altera的DSP開發(fā)板來(lái)快速的實(shí)現(xiàn)設(shè)計(jì)的原型。4.支持SignalTap?II邏輯分析儀(一種嵌入式的信號(hào)分析儀,它可以探測(cè)到DSP開發(fā)板上Altera器件部的信號(hào),并把數(shù)據(jù)引入到MATLAB的工作區(qū)以便于進(jìn)行可視化的分析)。5.包括了用戶可以創(chuàng)建的定制的邏輯,用于配合SOPCBuilder和Nios?II嵌入式處理器設(shè)計(jì)。6.包括了PLL塊,用于多時(shí)鐘設(shè)計(jì)。7.包括了狀態(tài)機(jī)塊。8.針對(duì)DSP系統(tǒng)的算法和實(shí)現(xiàn),支持統(tǒng)一的表示方法。9.根據(jù)MATLAB和Simulink的測(cè)試矢量,可以自動(dòng)生成VHDL測(cè)試激勵(lì)或QuartusII矢量文件(.vec)。10.自動(dòng)調(diào)用VHDL綜合器和QuartusII編譯器。11.仿真可以設(shè)定為比特或周期精度。12.提供多種的定點(diǎn)運(yùn)算和邏輯操作,用于配合使用Simulink軟件。13.支持多種Altera的器件:Strati*、Strati*II和Strati*G*器件;Cyclone和CycloneII器件;APE*II、APE*20KC和APE*20KE器件;Mercury器件;ACE*?1K器件;FLE*?10K和FLE*6000器件。利用Matlab和DSPBuilder進(jìn)行模塊設(shè)計(jì)也是SOPC技術(shù)的一個(gè)組成部分。這是由于利用Matlab/DSPBuilder/QuartrsⅡ可完成純硬件的DSP算法模型及實(shí)現(xiàn),從而構(gòu)成嵌入式系統(tǒng)外圍接口的協(xié)處理模塊,再進(jìn)一步構(gòu)成軟件程序中的精簡(jiǎn)指令,DSP模塊或其他功能模塊可以成為單片F(xiàn)PGA電路系統(tǒng)中的一個(gè)組成部分,而且通過(guò)Matlab/DSPBuilder,可以直接為Nios嵌入式處理器設(shè)計(jì)各類加速器,并以指令的形式加入到Nios的指令系統(tǒng),從而成為Nios系統(tǒng)的一個(gè)接口設(shè)備,與整個(gè)片嵌入式系統(tǒng)融為一體。即利用DSPBuilder和基本的NiosCPU,用戶可以根據(jù)項(xiàng)目的要求,自己構(gòu)建自己需要的DSP處理系統(tǒng)。本章主要介紹利用Matlab/DSPBuilder/QuartrsⅡ三個(gè)工具軟件聯(lián)合開發(fā)的設(shè)計(jì)流程。圖6—1為Matlab/DSPBuilder/QuartrsⅡ聯(lián)合應(yīng)用框圖。由圖6—1可見,設(shè)計(jì)流程從利用建立DSP電路模型開始,電路模型的建立可以是圖形化的,利用Simulink和DSPBuilder中提供的豐富的功能模塊和IP核進(jìn)行設(shè)計(jì)。DSPBuilder中包含了算術(shù)和存儲(chǔ)功能等設(shè)計(jì)模塊以及IP庫(kù)中的許多復(fù)雜功能模塊。電路中的功能模塊和IP的技術(shù)參數(shù)、數(shù)據(jù)格式、數(shù)據(jù)類型和總線寬度等都可以直接設(shè)置。電路模型設(shè)計(jì)完成后,可以進(jìn)行系統(tǒng)級(jí)的模型仿真,這與目標(biāo)器件和硬件系統(tǒng)沒有關(guān)系,是基于算法的仿真。下個(gè)步驟是利用置于Simulink電路模型界面的DSPBuilder的Signalpiler,將電路模型文件,即Simulink電路模塊文件(.mdl)轉(zhuǎn)換成RTL級(jí)的VHDL代碼表述和工具命令語(yǔ)言(Tcl)腳本。一旦獲得轉(zhuǎn)換好的VHDL描述,在Simulink中即可調(diào)用VHDL綜合器了,目前可選用的綜合器有QuartrsⅡ、LeonardoSpectru、和Synplify。由它們生成底層網(wǎng)表文件。在QuartrsⅡ進(jìn)行編譯優(yōu)化的過(guò)程中,會(huì)產(chǎn)生兩種詳細(xì)記錄電路硬件特點(diǎn)和優(yōu)化方式的底層電路描述的中間網(wǎng)表文件,即ATOMNetlist。然后調(diào)用QuartrsⅡ中的編譯器,根據(jù)網(wǎng)表文件及設(shè)置的優(yōu)化約束條件進(jìn)行布線布局和優(yōu)化設(shè)計(jì)的適配操作,最后生成編程文件和仿真文件(.pdf和.sof),它們可用于對(duì)目標(biāo)器件的編程配置和硬件實(shí)現(xiàn);與此同時(shí)可生成分別用于QuartrsⅡ的門級(jí)仿真文件和ModelSim的VHDL時(shí)序仿真文件,以及相應(yīng)的VHDL仿真激勵(lì)文件,以用于實(shí)時(shí)測(cè)試DSP系統(tǒng)的工作性能。圖6-1基于Matlab/Dspbuilder/QuartrsⅡ等工具6.1DSPBuilder元件庫(kù)簡(jiǎn)介打開Matlab環(huán)境??梢钥吹組atlab的主窗口界面被分割成三個(gè)窗口:命令窗口(mandWindow)、工作區(qū)(Workspace)、命令歷史(mandHistory)。使Matlab的CurrentDirectory指向所安裝的DSPBuilder的Altlib文件夾,點(diǎn)擊旁邊的simulink圖標(biāo)打開simulink庫(kù),如下圖6-2所示。圖6-2Matlab的CurrentDirectory在SimulinkLibraryBrowser的左面展開AlteraDSPBuilder可以看見DSPBuilder的元件庫(kù)如圖6-3所示,元件庫(kù)可以分為若干部分。其中有主控元件庫(kù)(AltLab)、算術(shù)元件庫(kù)(Arithmetic)、開發(fā)板庫(kù)(Boards)、復(fù)元件庫(kù)(ple*Type)、組合元件庫(kù)(Gate&Control)、總線元件庫(kù)(IO&Bus)、時(shí)鐘元件庫(kù)(RateChange)、SOPC元件庫(kù)(SOPCBuilderLinks)、狀態(tài)機(jī)功能元件庫(kù)(StateMachineFunctions)、時(shí)序元件和存儲(chǔ)器元件庫(kù)(Storage)、IP核元件庫(kù)(MegaCoreFunction)、視頻和圖象處理元件庫(kù)(VideoandImageProcessing)圖6-3DSPBuilder元件庫(kù)1、主控元件庫(kù)(AltLab),包含一些用于控制的模塊。主要有:數(shù)據(jù)觀察窗(BP)、FPGA編程器(Deviceprogrammer)、HDL引入模塊(HDLImport)、HDL子系統(tǒng)元件模塊(HDLSubSystem)、HIL硬件環(huán)境模塊(HIL)、邏輯分析儀探頭(Node)、硬件工程參數(shù)設(shè)置模塊(QuartusⅡGlobalProjectAssignment)、FPGA引腳鎖定模塊(QuartusⅡPoinoutAssignment)、MatLab模型至VHDL轉(zhuǎn)換器(Signalpiler)、邏輯分析儀(SignalTapⅡAnalysis)。2、算術(shù)元件庫(kù)(Arithmetic),包含一些與運(yùn)算相關(guān)聯(lián)的器件。主要有比較器(parator)、計(jì)數(shù)器(Counter)、差分器(Differentiator)、除法器(Divider)、增益乘法器(Gain)、地址發(fā)生器(IncerementDecrement)、積分器(Integrator)、乘法器(Multiplier)、乘法累加器(MultiplyAccumulate)。如圖6-4所示。圖6-4算術(shù)元件庫(kù)3、SOPC元件庫(kù)(SOPCBuilderLinks),在左側(cè)展開加號(hào)分別是SOPCAVALON總線模塊、SOPCAVALON總線端口模塊和SOPC用戶自定制指令端口。如圖6-5。圖6-5SOPC元件庫(kù)4、IP核元件庫(kù)(MegaCoreFunction),包含Altera公司設(shè)計(jì)好的IP核??梢允挂话愕脑O(shè)計(jì)者在不用全面了解所用IP核相關(guān)技術(shù)過(guò)多細(xì)節(jié)的情況下,在短期設(shè)計(jì)符合要求的系統(tǒng)。MegaCore是Altera的IPCore計(jì)劃中的一個(gè)組成部分,IP核元件庫(kù)所包含的IP核不附帶在DSPBuilder和QuartusⅡ中,需要單獨(dú)購(gòu)買。如圖6-6所示,IP核元件庫(kù)主要有CICIP核(cic)、FFTIP核(fft)、FIRIP核(fir)、NCOIP核(noc)、RSIP核、VITERBIIP核(viterbi)。圖6-6MegaCoreFunction元件庫(kù)6.2FSK調(diào)制器設(shè)計(jì)二進(jìn)制頻率調(diào)制(2FSK),是利用二進(jìn)制數(shù)字基帶信號(hào)控制載波進(jìn)行頻譜變換的過(guò)程。在發(fā)送端產(chǎn)生不同頻率的載波震蕩來(lái)傳輸數(shù)字信號(hào)“0”、“1FSK調(diào)制的方法有兩種:直接調(diào)頻法用數(shù)字基帶矩形脈沖控制一個(gè)振蕩器的*些參數(shù),直接改變振蕩頻率,輸出不同的頻率信號(hào)。頻率鍵控法用數(shù)字矩形脈沖控制電子開關(guān)在兩個(gè)振蕩器之間進(jìn)行轉(zhuǎn)換,從而輸出不同頻率的信號(hào)。建立設(shè)計(jì)模型1、們需要建立一個(gè)工作庫(kù),所以先新建一個(gè)文件夾FSK。2、使Matlab的CurrentDirectory指向所安裝的DSPBuilder的Altlib文件夾點(diǎn)擊上方的simulink圖標(biāo)打開simulink庫(kù),如下圖6-7所示。圖6-7Matlab的CurrentDirectory3、在SimulinkLibraryBrowser窗口中選擇File菜單,在出現(xiàn)的菜單中選擇New,在彈出的子菜單中選擇新建模型model。如圖6-8圖6-8新建Model4、放置Signalpilder。點(diǎn)擊simulink庫(kù)管理器左側(cè)的數(shù)形列表中的AlteraDSPBuilder條,使之展開DSPBuilder庫(kù),這時(shí)會(huì)出現(xiàn)一串樹形列表,對(duì)DSPBuider的子模塊(Block)進(jìn)行分組,展開其中的Altlab,選擇庫(kù)管理器右側(cè)的Signalpilder,拖動(dòng)到新的模型窗口。如圖6-9圖6-9Simulink庫(kù)中的DspBuilder5、圖6-5,為所需最終連接的Modle圖形。參照?qǐng)D6-10先放置Input2,Input2在DSPBuilder庫(kù)中的IO&Bus模塊中,選擇Input拖動(dòng)到新Model中,點(diǎn)擊圖形下面的文字Input可以更改名稱。雙擊打開參數(shù)設(shè)置窗口,Bustype可設(shè)為UnsignedInteger(無(wú)符號(hào)整數(shù)),numberofbits設(shè)為2。如圖6-11圖6-10FSK調(diào)制模型圖6-11input2參數(shù)設(shè)置Constant也同樣在IO&Bus模塊中,constant1設(shè)置為無(wú)符號(hào)整數(shù),numberofbits設(shè)為8,常數(shù)值(ConstantValue)設(shè)置為9,抽樣時(shí)間(Sampletime)為1,如圖6-12。Constant2除了Constantvalue設(shè)置為3外,其余設(shè)置同Constant1,這樣可以使數(shù)字基帶矩形脈沖的峰峰值在3到9之間。圖6-12constant1參數(shù)設(shè)置6、n-to-1Multiple*er和LUT同在Gate&Control模塊下,將它們拖到新建Model中將LUT改名為ROM10*10S,如圖6-13圖6-13LUE和n-to-1Multiple*er模塊其中n-to-1Multiple*er的數(shù)據(jù)輸入線(NumberofinputDataLine)設(shè)為2,pipeline設(shè)為1。ROM10*10S的busType設(shè)為signedInteger(有符號(hào)整數(shù)),輸出位numberofbits為8位,LUTAddressWidth(查找表地址線位寬)設(shè)為8。在MATLABArray編輯框中輸入計(jì)算查找表容的計(jì)算式。在此可以直接使用正弦(sin)函數(shù),在這里sin函數(shù)的調(diào)用格式為sin([起始值:步進(jìn)值:結(jié)束值])。ROM10*10S為一個(gè)輸入地址為8位,輸出地址為8位的正弦查找表模塊,輸入地址總線位有符號(hào)整數(shù)(SignedInterger)??梢栽O(shè)定起始值為0、結(jié)束值為2π,步進(jìn)值為2π/2^8。計(jì)算式可以寫成127*sin([0:2*pi/(2^8):2*pi]),其中pi即位常數(shù)π。在UseLPM處打勾,表示允許QuartusⅡ利用目標(biāo)器件中的嵌入式RAM(在EAB、ESB或M4K模塊中)來(lái)構(gòu)成ROM10*10S,即將生成的正弦波數(shù)據(jù)放在嵌入式RAM構(gòu)成的ROM中,這樣可以節(jié)省大量的邏輯資源。如圖6-14。圖6-14ROM10*10S參數(shù)設(shè)置7、在Arithmetic模塊下找到ParallelAdderSubtractor,改名為ADDER4,將輸入設(shè)為2,Add(+)Sub(-)設(shè)為++,其余不變,如圖6-15。圖6-15設(shè)置ADDER48、放置Delay模塊。在Storage庫(kù)下的Delay,放置到新建模型窗口并改名為Dly2。Delay是一個(gè)延時(shí)環(huán)節(jié)。在這里不修改其默認(rèn)參數(shù)設(shè)置。9、Bus7和Out8在IO&Bus庫(kù)下。找到AltBus,和output分別改名為Bus7和Out8。Bus7的BusType為SignedInteger,NodeType為InternalNode,numberofbit為8位。如圖6-16。圖6-16設(shè)置Bus7Out8的BusType也為Signedinteger類型8位。如圖6-17。圖6-17設(shè)置Out810、放置完所需的模塊后,按照?qǐng)D6-5連接好。這樣就完成了FSK調(diào)制模型的設(shè)計(jì)。在進(jìn)行仿真驗(yàn)證和Signalpiler編譯前,先對(duì)文件進(jìn)行存盤操作:點(diǎn)擊新建模型窗口的File菜單,選擇Save項(xiàng)。取名并保存在自己所建的文件夾FSK中。在本例中,新建模型取名為fsk,模型文件為fsk.mdl。保存完畢后,新建模型窗口的標(biāo)題欄會(huì)顯示模型的名稱,對(duì)模型取名后就可以使用Signalpiler進(jìn)行編譯了。在編譯前還需要進(jìn)行仿真驗(yàn)證。Simulink模型仿真用DSPBuilder模塊設(shè)計(jì)好一個(gè)新的模型后,可以直接在simulink中進(jìn)行算法級(jí)、系統(tǒng)級(jí)仿真驗(yàn)證。對(duì)一個(gè)模型進(jìn)行仿真,需要施加合適的激勵(lì)、一定的仿真步進(jìn)和仿真周期,添加合適的觀察點(diǎn)和觀察方式。需要強(qiáng)調(diào)的是:凡是來(lái)自AlteraDSPBuilder庫(kù)以外的模塊,Signalpiler都不能將其變成硬件電路,即不會(huì)影響生成的VHDL程序,但在啟動(dòng)Simulink仿真后能影響后面產(chǎn)生的仿真激勵(lì)文件,PulseGenerator模塊的情況正是如此。1、加入一個(gè)PulseGenerator模塊,在Simulink庫(kù)管理器中,展開simulink庫(kù),選中Sources庫(kù),把Sources庫(kù)中的PulseGenerator模塊拖放到FSK模型窗口中。2、添加波形觀察模塊。在simulink的庫(kù)管理器中,展開simulink庫(kù),選中其中的Sinks庫(kù),把Scope模塊拖放到FSK模型窗口中。雙擊該模塊,打開的是一個(gè)Scope窗口。用鼠標(biāo)點(diǎn)擊Scope模塊窗口上側(cè)工具欄的第二個(gè)工具按鈕:Parameters參數(shù)設(shè)置。打開Scope參數(shù)設(shè)置對(duì)話框,在Scope對(duì)話框中有兩個(gè)選項(xiàng)頁(yè):Gerneral和DataHistory。在Gerneral選項(xiàng)頁(yè)中,改變Numberofa*es參數(shù)為2。點(diǎn)擊“OK”后可以看到Scope窗口增加了兩個(gè)波形觀察窗。每個(gè)觀察窗都可以分別觀察信號(hào)波形,而且相對(duì)獨(dú)立。如圖6-18。圖6-18Scope設(shè)置3、按圖6-10連接FSK模型的全圖。先設(shè)置模型的仿真激勵(lì)。需要設(shè)置與此相連的模塊:PulseGenerator。雙擊放置在FSK模型窗口中的PulseGenerator模塊,設(shè)置對(duì)輸入端口施加的激勵(lì)。在打開的PulseGenerator模塊參數(shù)設(shè)置對(duì)話框中,可以看到下列參數(shù)如圖6-19。圖6-19PulseGenerator參數(shù)設(shè)置其中脈沖類型(PulseType)是基于時(shí)間的(Timebased),振幅(Amplitude)為1,周期(period)是1500秒,占空比(PulseWidth)為50%,相位延遲(Phasedelay)為0。4、點(diǎn)擊Simulation菜單,在下拉菜單中選擇configurationparameters如圖(6-20),將Stoptime設(shè)置成10000。FSK模型編輯窗中,在Simulation菜單下,選Start項(xiàng),開始仿真。等待仿真結(jié)束,雙擊Scope模塊,打開scope觀察窗。在Scope觀察窗中,可以使用工具欄中的按鈕來(lái)放大縮小波形,也可以使用工具欄上的“Autoscale”,使波形自動(dòng)適配波形觀察窗,用鼠標(biāo)左鍵,可以放大波形。圖6-21為FSK的仿真圖形。圖6-20FSK仿真停止時(shí)間圖6-21FSK仿真圖圖中可以清晰的看到在脈沖值為1和0時(shí),載波信號(hào)頻率隨脈沖信號(hào)值變化而變化,從而實(shí)現(xiàn)了2FSK。Signalpiler使用方法下面進(jìn)行設(shè)計(jì)流程中最為關(guān)鍵的一步,就是把DSPBuilder的設(shè)計(jì)轉(zhuǎn)到硬件上加以實(shí)現(xiàn)。在這一步,可以獲得針對(duì)特定FPGA芯片的VHDL代碼。1、雙擊FSK模型中的Signalpiler模塊,將出現(xiàn)如圖6-22所示的對(duì)話框,點(diǎn)擊Analyze(分析)按鈕后,Signalpiler就會(huì)對(duì)FSK模型進(jìn)行分析,檢查模型有無(wú)錯(cuò)誤,并在Matlab主窗口彈出對(duì)話框,并給出相關(guān)信息。圖6-22雙擊Signalpiler2、圖6-21中顯示了Signalpiler窗口,左側(cè)是項(xiàng)目設(shè)置選項(xiàng)ProjectSettingOptions,可以設(shè)置器件類型(Device)、綜合工具(SynthesisTool)以及優(yōu)化項(xiàng)目(Opimization);右側(cè)是硬件編譯流程Hardwarepilation;下方是信息框Messages。Signalpiler的設(shè)置都集中在項(xiàng)目設(shè)置選項(xiàng)部分。在Device下拉選擇框中選擇需要的器件系列,在此選為Cyclone系列。其具體的器件型號(hào),需由QuartusII自動(dòng)決定使用該器件系列中的*一個(gè)具體型號(hào)的器件,或在手動(dòng)流程中由用戶指定。圖6-21Signalpiler設(shè)置對(duì)話框3、當(dāng)設(shè)置好Device和Synthesis后,右側(cè)的硬件編譯Hardwarepilation部分就會(huì)列出一個(gè)操作流程,見圖6-21。分別為:①轉(zhuǎn)換MDL文件為VHDL文件(ConvertMDLtoVHDL)②綜合(Synthesis)③編譯適配(QuartusIIQuartus)先點(diǎn)擊步驟1的圖標(biāo),完成simulink文件(*.mdl)到VHDL文件的轉(zhuǎn)換。轉(zhuǎn)換完成后,在“Messages”信息提示框中,會(huì)顯示“Generatedtoplevel“fsk.vhd”files”,即頂層文件fsk.vhd完成轉(zhuǎn)換(圖4-34)。fsk模型生成的VHDL文件4、點(diǎn)擊步驟2的圖標(biāo),完成綜合過(guò)程。因?yàn)樽髠?cè)的設(shè)置,本例用QuartusII來(lái)完成綜合過(guò)程的,在綜合后生成原子網(wǎng)表供適配器使用,并自動(dòng)生成QuartusII可直接調(diào)用的工程。5、點(diǎn)擊步驟3的圖標(biāo),調(diào)用QuartusII完成編譯適配過(guò)程,生成編程文件:pof文件和sof文件(圖4-36)。編程文件可以直接用于FPGA的編程配置。如果想知道詳細(xì)的報(bào)告,點(diǎn)擊下面的ReportFile按鈕進(jìn)行查看。Fsk模型對(duì)應(yīng)的報(bào)告文件為fsk_DspBuilder_Report.html。使用QuartusII實(shí)現(xiàn)時(shí)序仿真雖然已經(jīng)進(jìn)行了算法級(jí)、系統(tǒng)級(jí)仿真驗(yàn)證,然而進(jìn)行門級(jí)的時(shí)序仿真仍然是十分重要的,Signalpiler已將MATLAB上的仿真信息轉(zhuǎn)變成了可用于QuartusII進(jìn)行時(shí)序仿真的激勵(lì)信息及相關(guān)仿真文件fsk_quartus.tcl,因此能容易地完成此項(xiàng)任務(wù)。1、打開QuartusII環(huán)境,選擇菜單File→OpenProject…,定位到fsk模型所在路徑目錄,打開DSPBuilder建立的QuartusII工程文件:fsk.quartus。2、上文中提到,在Signalpiler中的QuartusII編譯,具體的器件由QuartusII自動(dòng)決定,可實(shí)際使用中,器件往往不是QuartusII自動(dòng)選定的那個(gè)型號(hào),管腳也不是QuartusII自動(dòng)分配的管腳。這些都需要在QuartusII中進(jìn)行修改。所以這里須按照前面章節(jié)中敘述的方法選擇具體器件型號(hào),本例中使用的是EP1C6Q240C8,然后啟動(dòng)全程編譯,即執(zhí)行Startpilation。3、執(zhí)行菜單Processing→StartSimulation。圖6-22即為時(shí)序仿真波形,在圖中可以清楚的看到輸出數(shù)據(jù)隨著時(shí)鐘的變換交替的進(jìn)行頻率變換。如果這時(shí)看不到輸出的波形數(shù)據(jù),應(yīng)該回到MATLAB設(shè)計(jì)文件檢查,仿真、變換(注意這時(shí)只按Signalpiler中的第一按鈕!)。圖6-22時(shí)序仿真波形圖使用QuartusII硬件測(cè)試與硬件實(shí)現(xiàn)在此按照前面章節(jié)中介紹的方法鎖定管腳。打開fsk工程文件fsk.vhd,了解端口情況,選擇合適的電路模式。然后進(jìn)行編譯,完成適配過(guò)程。最后是進(jìn)行硬件的下載,連接好FPGA開發(fā)板。然后將實(shí)測(cè)結(jié)果與在計(jì)算機(jī)上進(jìn)行的時(shí)序仿真結(jié)果進(jìn)行比較。若再想改動(dòng)Simulink中的fsk.mdl圖,應(yīng)該注意兩點(diǎn):第一,部電路結(jié)構(gòu)和設(shè)置可以改,但端口信號(hào)名不要改,如輸入input2、out8,因?yàn)榇诵盘?hào)的引腳已被鎖定,不便改變第二,改動(dòng)out.mdl圖后只宜作系統(tǒng)仿真和VHDL文件轉(zhuǎn)換,不宜作綜合,即最多只能對(duì)圖6-17所示的界面執(zhí)行第1個(gè)按紐,否則將可能把原來(lái)設(shè)定好的引腳全部沖掉。為了保存引腳信息,綜合與適配兩項(xiàng)操作必須在進(jìn)入QuartusII后進(jìn)行。圖6-23為硬件實(shí)現(xiàn)后的輸出波形。圖6-23FSK調(diào)制波形6.3直接數(shù)字合成DDS設(shè)計(jì)直接數(shù)字合成DDS基本原理對(duì)于正弦信號(hào)發(fā)生器,它的輸出可以用下式來(lái)描述。(6-1)其中是指該信號(hào)發(fā)生器的輸出信號(hào)波形,指輸出信號(hào)對(duì)應(yīng)的頻率。上式的表述對(duì)于t式連續(xù)的,為了用數(shù)字邏輯實(shí)現(xiàn)該表達(dá)式,必須進(jìn)行離散化處理,用基準(zhǔn)時(shí)鐘clk進(jìn)行抽樣,令正弦信號(hào)的相位:(6-2)在一個(gè)clk周期,相位的變化量為:(6-3)其中指clk的頻率對(duì)于2π可以理解成“滿”相位,為了對(duì)進(jìn)行數(shù)字量化,把2π切割成份,由此每個(gè)clk周期的相位增量用量化值來(lái)表述:,且為整數(shù)。與(6-3)式聯(lián)立,可得:(6-4)顯然,信號(hào)發(fā)生器的輸出可描述為:(6-5)其中指前一個(gè)clk周期的相位值,同樣得出(6-6)圖6-24為DDS的基本結(jié)構(gòu)圖圖6-24基本DDS結(jié)構(gòu)用DSPBuilder設(shè)計(jì)DDSDDS采用了層次化的設(shè)計(jì)方法,即使用了Simulink的子系統(tǒng)(SubSystem)來(lái)完成DSP模型的層次化設(shè)計(jì)。我們可以用上面的例子進(jìn)行簡(jiǎn)單的介紹:在已經(jīng)建好的模型上進(jìn)行簡(jiǎn)單修改后,選擇除Signalpiler、PulseGenerator以外的模塊,單擊右鍵選擇CreateSubsystem如圖(6-25)。圖6-25FSK輸出的修改圖6-26為創(chuàng)建子系統(tǒng)模塊后的FSK圖形。用鼠標(biāo)雙擊Subsystem子系統(tǒng)模塊后,就會(huì)彈出fsk/Subsystem窗口,顯示子系統(tǒng)模塊封裝的原理圖。值得注意的是,有些DSPBuilder庫(kù)的模塊只能放在頂層原理圖中,如Signalpiler模塊。如果子系統(tǒng)中放置了Signalpiler模塊,只可以進(jìn)行Simulink仿真,而不能使用Signalpiler來(lái)生成相應(yīng)的VHDL代碼。圖6-26生成子系統(tǒng)后的FSK圖6-23為DDS的頂層設(shè)計(jì)圖,而圖6-24為其子系統(tǒng)Subsystem的結(jié)構(gòu)圖。圖6-24DDS頂層設(shè)計(jì)圖其中AMPL、PHASE、FREQ是simulink-Sources庫(kù)下的constant元件,Constantvalue分別為67、456、11456789,勾選Interpretvectorparametersas1-D選項(xiàng),Sampletime為inf;Input、input1、input2在AlteraDSPbuilder-IO&Bus庫(kù)下,BusType為Unsignedinterger,numberofbits分別為32、10、8;Output也在AlteraDSPbuilder-IO&Bus庫(kù)下,輸出位為10位有符號(hào)整數(shù)。圖6-25DDS子系統(tǒng)仿真時(shí)間為10000;ROM10*10S為AlteraDSPbuilder-storage庫(kù)下的LUT元件,BusType為有符號(hào)整數(shù),輸出為10位,LUTAddressWidth寬為10位,MATLABArray的輸出公式是511*sin([0:2*pi/(2^10):2*pi]),并勾選UseLPM和RegisterAddress選項(xiàng);Pdt2為AlteraDSPbuilder-Arithmetic庫(kù)的Product元件,Pipeline值為0,勾選UseLPM選項(xiàng);Bus1在AlteraDSPbuilder-IO&Bus庫(kù),是BusConversion元件,為有符號(hào)整數(shù),輸入18位,輸出10位,InputBittoOutputLSB為8。Bus7為AlteraDSPbuilder-IO&Bus下的AltBus元件,總線類型是有符號(hào)整數(shù),節(jié)點(diǎn)類型是部節(jié)點(diǎn)(InternalNode),32位;Adder4和Adder3設(shè)置相同,為在AlteraDSPbuilder-Arithmetic下的ParallelAdderSubtractor元件,NumberofInputs是2,Add(+)Sub(-)設(shè)為“++”,勾選Pipeline選項(xiàng),ClockPhaseSelection設(shè)置為1;Dly2是AlteraDSPbuilder-Storage下Delay元件,默認(rèn)設(shè)置;BusConversion在AlteraDSPbuilder-IO&Bus元件庫(kù),BusType為SignedInterger輸入為32位,輸出10位,InputBittoOutputLSB為22。圖6-26為DDS信號(hào)輸出波形。圖6-26DDS信號(hào)輸出AM調(diào)制器設(shè)計(jì)AM調(diào)制原理AM的調(diào)制原理是將要傳送的信息裝載到*一高頻(載波)信號(hào)上去的過(guò)程,幅度調(diào)制是用調(diào)制信號(hào)去控制載波的振幅,使其隨調(diào)制信號(hào)線型變化,而保持載波的頻率不變。圖6-27為在Maltlab下完成的AM全圖,主要分為4個(gè)區(qū)域:①區(qū)和④區(qū)為兩個(gè)正弦信號(hào)發(fā)生器,分別為調(diào)制信號(hào)和載波信號(hào);②區(qū)為控制區(qū),主要控制調(diào)制信號(hào)的幅度。當(dāng)t9選擇不同值時(shí),②區(qū)輸出不同的參數(shù)調(diào)整①區(qū)輸出正弦信號(hào)的幅度,使調(diào)制信號(hào)的輸出具有不同的幅度(如圖6-27)。圖6-28為Con9選擇1、3、6時(shí)輸出的調(diào)制信號(hào)。③區(qū)主要作用是將調(diào)制信號(hào)裝載到載波信號(hào)上去,實(shí)現(xiàn)信號(hào)的調(diào)制。圖6-27AM調(diào)制原理圖圖6-28受控的調(diào)制信號(hào)圖6-29AM調(diào)制信號(hào)AM調(diào)制器參數(shù)設(shè)置仿真時(shí)間設(shè)為100000,其它設(shè)置如下:1、①區(qū)正弦信號(hào)發(fā)生器的設(shè)置:Cst15:AlteraDSPBuilder-IO&Bus-ConstantBusType:UnsignedIntegernumberofbits:16Constant:20Sampletime:1Bus3:AlteraDSPBuilder-IO&Bus-AltBusBusType:UnsignedIntegerNodeType:InternalNodenumberofbits:16Adder1:AlteraDSPBuilder-Arithmetic-ParallelAdderSubtractornumberofinput:2Add(+)Sub(-):++ClockPhaseSelection:1Dly:AlteraDSPBuilder-Storage-Delay默認(rèn)設(shè)置Bus5:AlteraDSPBuilder-IO&Bus-BusConversionBusType:SignedIntegerInput[numberofbits]:16Output[numberofbits]:8InputBitConnectedtoOutputLSB:8ROM8*8S:AlteraDSPBuilder-Storage-LUTBusType:SignedIntegerOutput[numberofbits]:8LUTAddressWidth:8MATLABArray:127*sin([0:2*pi/(2^8):2*pi])勾選UseLPM和RegisterAddress項(xiàng)2、②區(qū)控制端參數(shù)設(shè)置:Mu*41:AlteraDSPBuilder-Gate&Control-nto1Multiple*erNumberofInputDataLine:8Pipeline:0SL:AlteraDSPBuilder-IO&Bus-inputBusType:UnsignedIntegerNodeType:InputPortnumberofbits:3t9:Simulink-sources-ConstantConstantvalue:6勾選Interpretvectorparametersas1-DSampletime:infCst8-14:AlteraDSPBuilder-IO&Bus-ConstantBusType:SignedFraction[numberofbits].[]:8[].[numberofbits]:8Sampletime:13、③區(qū)調(diào)制區(qū)參數(shù)設(shè)置Pdt1、Pdt2:AlteraDSPBuilder-Arithmetic-ProductPipeline:0勾選UseLPMADDER2、Adder3:AlteraDSPBuilder-Arithmetic-ParallelAdderSubtractornumberofinput:2Add(+)Sub(-):++ClockPhaseSelection:1勾選Pipeline選項(xiàng)。Bus1:AlteraDSPBuilder-IO&Bus-BusConversionBusType:SignedIntegerInput[numberofbits]:18Output[numberofbits]:10InputBitConnectedtoOutputLSB:8Cst3:AlteraDSPBuilder-IO&Bus-ConstantBusType:UnsignedIntegernumberofbits:8Constant:128Sampletime:1Cst4:AlteraDSPBuilder-IO&Bus-ConstantBusType:UnsignedIntegernumberofbits:10Constant:512Sampletime:1Adder2:AlteraDSPBuilder-Arithmetic-ParallelAdderSubtractornumberofinput:2Add(+)Sub(-):++ClockPhaseSelection:1AM_OUT:AlteraDSPBuilder-IO&Bus-outputBusType:UnsignedIntegerNodeType:OutputPortnumberofbits:104、④區(qū)正弦信號(hào)發(fā)生器的設(shè)置:Cst16:AlteraDSPBuilder-IO&Bus-ConstantBusType:UnsignedIntegernumberofbits:32Constant:88234567Sampletime:1Bus7:AlteraDSPBuilder-IO&Bus-AltBusBusType:UnsignedIntegerNodeType:InternalNodenumberofbits:32Adder4:AlteraDSPBuilder-Arithmetic-ParallelAdderSubtractornumberofinput:2Add(+)Sub(-):++ClockPhaseSelection:1勾選PipelineDly2:AlteraDSPBuilder-Storage-Delay默認(rèn)設(shè)置BusConversion:AlteraDSPBuilder-IO&Bus-BusConversionBusType:SignedIntegerInput[numberofbits]:32Output[numberofbits]:10InputBitConnectedtoOutputLSB:22ROM10*10S:AlteraDSPBuilder-Storage-LUTBusType:SignedIntegerOutput[numberofbits]:10LUTAddressWidth:10MATLABArray:511*sin([0:2*pi/(2^10):2*pi])勾選UseLPM和RegisterAddress項(xiàng)6.5FSK硬件環(huán)HIL仿真設(shè)計(jì)前面提到的在Simulink平臺(tái)上的仿真都屬于算法級(jí)仿真,是軟件仿真。如果想要求仿真結(jié)果能反映模塊的硬件特性,在Simulink平臺(tái)上的仿真就不能滿足要求。在QuartusⅡ平臺(tái)上的仿真盡管獲得了全硬件的仿真結(jié)果,但沒有Matlab提供的大量功能強(qiáng)大的仿真工具,一些特定功能的激勵(lì)信號(hào)難以獲得。因此最理想的方法是直接在Simulink平臺(tái)上將設(shè)計(jì)模型下載進(jìn)FPGA,利用Simulink提供的各類仿真工具進(jìn)行仿真。Altera的DSPBuilder提供的HIL(HardwareintheLoop)模塊能很好的完成這類仿真。HIL可以在Simulink模型與FPGA開發(fā)板間通過(guò)JTAG通信口建立一種聯(lián)系,從而實(shí)現(xiàn)基于Matlab/DSPBuilder平臺(tái)的硬件仿真。我們利用上文建立的FSK模型來(lái)舉例說(shuō)明基于HIL模塊的仿真流程。調(diào)出前面完成的FSK模型。將信號(hào)源PulseGenerator的參數(shù)和修改如下圖6-30。圖6-30PulseGenerator參數(shù)設(shè)置圖6-31FSK的仿真參數(shù)設(shè)置窗2、用Signalpiler對(duì)FSK模型進(jìn)行轉(zhuǎn)換、綜合和適配。按照?qǐng)D6-21的步驟,分別按動(dòng)對(duì)話框按鈕1、2、3,使fsk_HIL.mdl轉(zhuǎn)換成為一個(gè)QuartusⅡ工程。3、如圖6-32所示,刪去FSK圖中所有AlteraDSPBuilder庫(kù)元件構(gòu)成的電路,再引入HIL模塊(AlteraDSPBuilder-Altlab-HIL)。為穩(wěn)妥起見,將設(shè)計(jì)另存。圖6-32加入HIL模塊的FSK4、將PC機(jī)與FPGA開發(fā)板連接好,打開電源。雙擊圖6-32的HIL模塊,將彈出圖6-33所示的HIL參數(shù)設(shè)置對(duì)話框。首先在1.SelectQuartusⅡProject加入前面生成的FSK工程;然后在2.Selecttheclockpin欄選擇clock;根據(jù)電路圖輸入輸出端口的數(shù)據(jù)類型確定3.Identitythesignedport中各端口的數(shù)據(jù)類型在右欄的BurstMode處打勾;在Burstlength處鍵入1024(默認(rèn));在FrameMode處打勾,下面參數(shù)默認(rèn),點(diǎn)擊Ne*tpage按鈕,進(jìn)入下一頁(yè)進(jìn)入圖6-34界面。圖6-33HIL參數(shù)設(shè)置在圖6-34的FPGAdevice欄輸入你所應(yīng)用的FPGA型號(hào),如本書應(yīng)用的類型為EP1C6Q240C8。如果PC機(jī)與FPGA的JTAG口通信正常,則在ProgramtheFPGA欄下的JTAGCable欄將自動(dòng)顯示編程器類型;而Deviceinchain欄將自動(dòng)顯示已經(jīng)從FPGA板上測(cè)得的FPGA型號(hào)。點(diǎn)擊pilewithQuartusⅡ按鈕,進(jìn)行編譯,即將原來(lái)圖FSK模型已經(jīng)生成的工程文件與HIL模塊中輸入輸出信號(hào)緩沖模塊一起編譯成一個(gè)下載文件。以便進(jìn)行基于HIL第硬件仿真。如果編譯成功,會(huì)產(chǎn)生一個(gè)“.sof”文件,在圖6-34下方的信息欄出現(xiàn)文字:Createdfsd_HIL.sof.。下面點(diǎn)擊圖6-34的ConfigureFPGA按鈕,通過(guò)JTAG口將此文件下載到FPGA中。如果下載無(wú)誤,會(huì)在信息欄出現(xiàn)文字:Programmingsuccessful。圖6-34HIL模塊編輯與編程窗5、如圖6-35,將HIL模塊與外圍電路接好,運(yùn)行Simulink仿真。圖6-36為加入HIL模塊的FSK模型仿真波形。如圖所示,輸入波形與輸出波形有一定的相位差,這個(gè)相位差說(shuō)明信號(hào)在FPGA里有了延時(shí)。圖6-35加入HIL的FSK模塊圖6-36加入HIL后的FSK仿真6、利用AlteraDSPBuilder-Altlab-Deviceprogrammer,也可以進(jìn)行模塊編成,下載流程同上。如圖6-37。圖6-37利用編成模塊向FPGA下載6.6使用FIRIPCore設(shè)計(jì)FIR濾波器Altera為了使設(shè)計(jì)者也能在盡可能短的時(shí)間快速高效的設(shè)計(jì)出符合設(shè)計(jì)要求的項(xiàng)目,給設(shè)計(jì)者提供了大量的IPCore,使設(shè)計(jì)者在不用全面了解有關(guān)器件的情況下達(dá)到理想的設(shè)計(jì)效果。MegaCore是Altera的IPCore計(jì)劃中的一部分,F(xiàn)IRpiler作為一個(gè)MegaCore,不附帶在DSPBuilder和QuartusⅡ中,需要向Altera公司單獨(dú)購(gòu)買。Altera提供的FIRpiler是一個(gè)結(jié)合AlteraFPGA器件的FIRFilterFilterCore,DSPBuilder與FIRpiler可以緊密結(jié)合起來(lái),DSPBuilder提供了一個(gè)FIRCore的應(yīng)用環(huán)境和仿真驗(yàn)證環(huán)境。使用FIRCore之前,首先必須驗(yàn)證MatLab、DSPBuilder、QuartusⅡ以及IP核本身即FIRpiler等工具安裝正確。如果一切正常,就可以在Simulink庫(kù)管理的AlteraDSPBuilder庫(kù)中看到MegaCoreFunctions庫(kù),以及庫(kù)中含有的FIRpiler等IP模塊。下面通過(guò)一個(gè)高速低通的FIR濾波器,來(lái)介紹IP在Matlab工具上的基本使用方法。FIR濾波器核的使用在Simulink環(huán)境中新建一個(gè)模型,放置Signalpiler模塊和

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論