fpag綜合教程-高級篇dsp builder設計初步_第1頁
fpag綜合教程-高級篇dsp builder設計初步_第2頁
fpag綜合教程-高級篇dsp builder設計初步_第3頁
fpag綜合教程-高級篇dsp builder設計初步_第4頁
fpag綜合教程-高級篇dsp builder設計初步_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

9DSPBuilderEDAQuartusII來完成的,最為典型的設計流程,包括設計項目編輯(如用VHDL、綜合、仿真、適配、編程。但是對Altera2002年推出的DSPBuilderFPGA開發(fā)板上。利用與DSPBuilderSOPC技術的一個組成部分。本章以兩個簡單的電路模型設計為示例,詳細介紹、DSPBuilder、QuartusII三DSPBuilder是一個系統(tǒng)級(或算法級)設計工具,它架構在多個軟件工具之上,并把在了/Simlink圖形設計平臺上,而將QuartusII作為底層設計工具置于,最大程度地發(fā)揮了對種工具的優(yōu)勢。DSPBuilder依賴于MathWorks公司的數(shù)學分析工具/Simlink,以的Blockset出現(xiàn)??梢栽谥羞M行圖形化設計和仿真,同時又通過piler把/ (.vhd的處理都由QuartusII來完成。設計周期)對于不同的應用目標將有不同的要求,涉及的軟件工具也不僅僅是和QuartusII,DSPBuilder針對不同情況提供了兩套設計流程,即自動流程和手動流程。/ 中進行設計輸入。即在的/環(huán)境中建立一個mdl模型文件,用圖形方式調用DSPBuilder和其他庫中的圖形庫而已,同樣也涉及到其他EDA軟件。(QuartusII,HDL (QuartusII, ATOMNetlistQuartusQuartus圖9-1基于、DSPBuilder、QuartusII等工DSPBuilderEDA工具軟件(QuartusII 的.mdl文件這就需要一個轉換過程通過 的模型文件(后綴為.mdl)轉化成通用的硬件描述語言,VHDL文件。轉換獲此后的步驟是對以上頂層設計產VHDLRTL代碼和仿真文編譯適配(Synthesis配,直至在中完成FPGA的配置過程。但是,如果希望使用其它第3方的VHDL綜合器和仿真器(Synplify、LeonardoSpectrum和QuartusII綜合器及外,或是希望完成特定的適配設置,用于FPGA的配置。采用手動流程時,除了行為級和設計輸入外,其它過程與標準的基于VHDL的EDA設計流程是完全一致的。首先由基于 的DSPBuilder設計流程得到VHDL 模型文件*.mdl通過 pilder轉換而成,送入綜合器進行綜合。操作可能比較繁瑣,所以DSPBuilder的 piler相應提供了一個接口,針對設計,件,主要是EDIF網(wǎng)表文件(.edf電子設計交換格式文件)或VQM(.vqmVerilogQuartusMapFile,它們是一種參數(shù)可設置的,并含有具體器件系列硬件特征(如邏輯宏單元LCs、I/O單元、乘積項、M4K、嵌入式系統(tǒng)塊ESB等)的網(wǎng)表文件。QuartusII可以利用這些ATOM網(wǎng)表文件針對選定的具體器件進行適配,包括布線、布局、結構優(yōu)化等操作,最后產生時序仿真文件和FPGA目標器件的編程與配置文件。在這一步,設計者可以在QuartusII中完成對Pin(引腳)的鎖定,更改一些約束條件等。DSPBuilderVHDLQuartusII強大的LogicLockSignalTapDSPBuilderDSPBuilder中直接到FPGA用戶開發(fā)板上,或者通過QuartusII完成硬件的、測試。9-1VHDLDSPBuilderHDL仿真器是。DSPBuilderVHDL代碼時,可以同時生DSPTestBench(測試平臺)文件,DSPBuilderTestBench文件VHDLDSP模塊在中的仿真激勵相一致。通過TestBenchVHDL代碼與中設計模型的一致性。另外,DSPBuilder在產生TestBench的同時,還產生了針對仿真的Tcl來簡化用戶的操作,如包含了來自平臺上進行仿真的激勵信號信息等,從而掩蓋后網(wǎng)表與中建立DSP模型的一致性。這就需要再次使用進行仿真,這QuartusII適配后帶延時信息的網(wǎng)表文件(EDIFVHDL、Verilog格自動流程:1 /手動流程:1/

建模;2、系統(tǒng)仿真;3、DSPBuilder完成SinLUT。SinLUT是一個正弦函數(shù)值的查找表(LUT:LookUpTable)模塊,由遞增的地址獲得正弦波的量化值SinCtrlSinCtrl1位(bit)輸入,SinCtrlProduct就完成了對正弦波輸出有無的控制。SinOutD/A即可獲得正弦波的輸出模擬信號。設計者在利用DSPBuilder來進行相關設計時,關鍵的設計過程大都在的圖形仿真環(huán)境中進行9-2 環(huán)境界面如圖9-3所示??梢钥吹?,的主窗口界面被分割成三個窗口:Window(orkspaceHistory命令窗口中,可以鍵入命令,同時獲得對命令的響應信息、出錯警告提示圖9-3界在建立一個新的設計模型前,最好先建立一個新的文件夾,作為work(工作),并把當前work切換到新建的文件夾下。可以使用Windows在外部建立,也可以使用命令來直接完成這些操作,例如在主窗口中令窗口中鍵入:cdmkdir/myprj/sinwavecd/myprj/sinwave其中e:/myprj/sinwave是新建的文件夾,是用作 命令,cd是切換工 命令。具體過程可以參見圖9-4(打 主界面中的“CurrentDirectory”的制定,同樣可以改變 當成功地把當前切換到新建的設計后(cd/myprj/sinwave入命令:pwd,之后可以在命令窗口鍵入“”命令,以開啟的圖形Browser9-4打開圖9- 在庫管理器的左側是library列表,其中“”庫是的基本模型在的庫管理器中可以看到“AlteraDSPBuilder”字樣出現(xiàn)在library列表中。在以下的DSPBuilder應用中,主要是使用該庫中的組件、子模型來完成各項設計,再使用被DSPBuilder轉化為VHDL程序 的模型文件(后綴為mdl,在出的子菜單項中選擇新建模型“model9-69-6建立新模 點擊AlteraDSPBuilderDSPAltLabAltLab,選中庫管理器右側的pilder組件,按住鼠標右鍵拖動pilder到新模型窗口中(9-7。注意:當在庫管理器中選中模塊(Block)后,在庫管理器上方的提示欄中會(9-8)DSPBuilderArithmetic(算術)AlteraDSPBuilderArithmetic條,則在庫管理器的右側,可以看到IncrementDecrement模塊。按照放置pilderIncrementDecrement7.用鼠標點擊在新建模型窗口中的IncrementDecrement模塊下面的文字“Increment“IncCount(9-8。然后9-2中描述IncCount模塊做成一個線性遞增的地址發(fā)生器,這就需要對IncCount模塊的參數(shù)進行相應的設置:雙擊新建模型中的圖9-9所示。在參數(shù)設置框的上半部分是該模塊的功能描述和使用說明;框的下半部分是參數(shù)設置部分,對于IncrementDecrement模塊共有下面幾種參數(shù)可以設置:總線類型(BusType;輸出位寬(Numberofbits;增減方向(Direction;alue;是否使用控制輸入(UseControl時鐘相位選擇(ClockPhase圖9-7放 圖9-8遞增遞減模塊改名為圖9-9設置遞增遞減模 圖9-10LUT模TypeInteger2、有符號小數(shù)(SignedFractional;Integer找表(SinLUT)的地址為6位,所以輸出位寬設為6。UseControlInputs項可以不選。因為如果選中此項,此模塊會出現(xiàn)兩個輸入端,分別是復位端和時鐘使能端。通常在圖中的元件的復位和時鐘使能端以及都是分別默默認設置。設置完的框如圖9-10。然后點擊“OK”按鈕確認。注意,若對DSPBuilder庫中模塊設置參數(shù)值不了解,可以在相應模塊的參數(shù)設置新建模型窗口,按照IncCount的做法把新調入的LUT模塊的名字修改成“SinLUT”。6BusTypeSignedInteger;在“Array”編輯框中輸入計算查找表內容的計算式。在此可以直接使用sin(正弦)sin 1pi即為常數(shù)π。上式的數(shù)值變化范圍是-1271272568位二82628次 2 3設置好的SinLUT參數(shù)如圖9-11所示。圖9-11設置 圖9-12Delay模塊及其參數(shù)設置在庫管理器的AlteraDSPBuilder庫中,選中Storage庫下的Delay模塊,放置到新建模型窗口。Delay模塊(9-12)是一個延時環(huán)節(jié)。在這里可以不修改其默認參數(shù)設置。其具體的默認參數(shù)設置見圖9-12。在Delay模塊的參數(shù)設置框中,參數(shù)“Depth”是描述信號延時深度的參數(shù)。1ClockPhaseSelection1時表示,每一主頻脈沖后,數(shù)據(jù)都能通過,如果設置為01,則每隔一個脈沖通過一個數(shù)據(jù);若設0011,表示每隔兩個脈沖通過兩個脈沖;0100表示Delay在每隔第2個時鐘時被使能通過,而在第1、3、4個時49-2把他們連接起來。把在庫管理器的AlteraDSPBuilder庫中,選中IO&Bus庫,找到Input模塊,NodeType參數(shù)為“InputPort9-13VHDL文件中變成端口模式為“IN”,數(shù)據(jù)類型為STD_LOGIC的端口信號。

9-13設置 庫管理器的AlteraDSPBuilder庫中,選中Arithmentic庫,找到Product模個Delay的SinLUT查表輸出,另一個是外部一位端口SinCtrl。按算法邏輯來看,實現(xiàn)了即乘積延時幾個時鐘周期后出現(xiàn)。選中“UseLPM”,表示允許采用LPM模塊。“UseDedicatedCircuitry”選項用于對FPGA中的模塊的選擇,如Stratix,CycloneII等器件中的DSP模塊。9-14設置乘法單 (圖9-15)置在新建模型窗口中。修改模塊的名字為SinOutSinOut是一個8位輸出端口接向FPGA的輸出端口與外面的8位D/A轉換器相接,通過D/A把8位數(shù)據(jù)轉換成1路模擬信號。雙擊SinOut模塊,打開模塊參數(shù)設置框,設置SinOut的BusType參數(shù)為“SignedInteger,修改“numberofbits”參數(shù)為8,如圖9-15所示。該模塊在VHDL文件中將變成OUT端口模式的標準位矢量: 則最MSB被截去。此選項對輸入端口或常數(shù)節(jié)點類型是無效的。LSB被截去。此選項不適用于輸入和常數(shù)類型。 圖9-15設置 圖9-16Step模塊圖9-17Scope模13.這樣就完成了一個正弦波發(fā)生器的DSPBuilder模型設計。在進行和piler編譯之前,先對設計進行存盤操作:點擊新建模型窗口的“File”菜單,在下拉菜單中選擇“SaveSinout,模型文件為sinout.mdl。在保存完畢后,新建模型窗口的標題欄就會顯示模型名稱。過長。且只有對文件存盤后,才能使用piler進行編譯mdl文件轉VHDL文的環(huán)境具有強大的圖形化功能。用DSPBuilder模塊設計好一個新的模型后,可以直接在中進行算法級、系統(tǒng)級。對一個模型進StepSinCtrl的按鍵使能操作。在庫管理器中,展開Sources庫Sources庫中的Step模塊拖放sinout模型窗(如9-16。參照圖9-2stepSinCtrl輸入端口相接。注意,凡是來自AlteraDSPBuilder庫以外的模塊,piler都不能將其變成硬件電路,即不會影響產生VHDL程序,但在啟動仿真后能影響后面產生的仿真激勵文件。Step模塊的情況正是如此。在的庫管理器中,展開庫,選中其中的Sinks庫,把Scope(示波器9-17)模塊拖放sinout模型窗口中。雙擊該模塊,打開的是Scope窗口(9-18。圖中所示只有一個信號的波形觀察窗口,而如若希望可以多觀察幾路信號,自然可以通過調用多個Scope模塊的方法來實現(xiàn),這里介紹通過修改scope參數(shù)來增加同一scope中打開Scope參數(shù)設置框,見圖9-19。在Scope參數(shù)設置框中共有兩個選項頁:“ernral(History(ofaxes2。在點擊“OKScope窗口增加了兩個波形觀察有相應語句,因為沒有接上輸出端口模塊:AltBus或Output模塊。圖9-18Scope初始顯 圖9-19設置Scope參9-2sinout模型的全圖,準備開始仿真。在仿真前還需要設置一下與仿關的參數(shù)。先設置模型的仿真激勵。在sinout模型圖中只有一個輸入端口SinCtrl,需要設置與此相Step放置sinout模型窗Step模塊置對輸入端SinCtrl施加的激勵。在打開的Step模塊參數(shù)設置框中,可以看到下列參數(shù)(詳見圖9-20):步進間隔(steptime;初始值(Initialvalue;終值(Finalvalue;采樣時間(Sample“Enablezerocrossingdectection”都設為打勾。21Simulationparameters”菜單項,如圖9-22所示。隨后,將彈出sinout模型的仿真參數(shù)設置框::Real-TimeWorkshop。其中“Solver”選項頁中完成仿真時,基本的時間設置、步進間隔和Scopescope9-24顯示了仿真結果,SinOut信SinCtrlSinOutSinCtrlSinCtrl1時,SinOut波形是正弦波;當SinCtrl為0時,輸出為0。在Scope觀察窗中,可以使用中的按鈕來放大縮左鍵,可以放大波形。圖9-25是改成無符號輸出的波形。9-209-21sinout全圖9- 仿真圖9-24有符號輸出波形(系統(tǒng)級仿真 圖9-25無符號輸出波形(系統(tǒng)級仿真9-24127間變化,但一般的輸出的有符號數(shù)據(jù)上加上了128。原理是將乘法器輸出的8位有符號數(shù)的最取反并以無符號數(shù)輸出。圖9-25即是產生的仿真波形,可以看出整個波形在0以上。以下將對圖中出9-27)VHDL文件中將變成內部信號Signal定義。BusConcatenation是總線合并模塊,其功能是將兩個總線按要求合并成一個總線,其輸出位寬數(shù)等于輸入的兩個總線位數(shù)之和,參數(shù)設置如圖9-30所示。Not模塊是反相器模塊,設置如圖9-32所示。9-26無符號整數(shù)SignedInteger輸出電圖9-27SinOut1模塊設 圖9-28ExtractBit模塊設圖9-29BusConversion模塊設 圖9-30BusConcatenation模塊設圖9-31SinOut1模塊設 圖9-32NOT模塊設piler 中完成后,就需要把設計轉到硬件上加以實現(xiàn)。這是整個DSPBuilder設計流程中最關鍵的一步,據(jù)此可以獲得針對FPGA的VHDLRTL代碼。雙擊sinout模型中的 piler模塊,將出現(xiàn)如圖9-33所示的框,點擊 yze( piler就 piler窗口(圖9-34。如果有警告(Warning)用不同的顏色提示有錯誤的模塊(Block。當pilerDSP模型有錯誤時,必須去除錯誤才能繼續(xù)DSPBuilder流程。左側的項目設置選項“ProjectSetting要的器件系列,默認為Stratix系列器件,對此可以修改。在此選為Cyclone系列。圖9-33雙 圖9-34打 piler窗針對具體的DSP開發(fā)板的?!癝ynthesis(綜合)下拉選擇框可以選擇綜合器,共有三個選“Synpilfy”:SynpilicitySynpilfyProSynpilfy在這個例子中,可選擇QuartusII。“Optiizaton(“ProjectOptions)“TestBench選項頁,選擇“GenerateStimuliforVHDLTestbench”生成含激勵的仿真測試文件,用于VHDL仿真。當設置好“Device”和“Synthesis”后,右側的硬件編譯“HardwareCompilation”部分就會列出一個操作流程,見圖9-34。分別為:“ConvertMDLtoVHDL”:轉MDL文件VHDL“Synthesis”:對轉換好VHDL圖9-34中的第4步是隱去的,這一步實現(xiàn)在中,完成FPGA的硬件配置。這需要DSP開發(fā)板的支持,當“Device”選為“DSPBoard”時,該一步才顯示出來。1的圖標,完成文件(*.mdl)VHDL文件的轉換。轉錯提示(出錯的原因多數(shù)是文件的安裝或文件本身有問題。sinout模型生成的VHDL文件“sinout.vhd”可以在文件夾e:/myprj/sinwave中找到。sinout_DspBuilder_Report.htmlDSPBuilder報告文件中,詳盡地描述了模型中的模塊分別進行了說明(9-35。9-35sinout工程處理信在中進行的仿真是屬于系統(tǒng)驗證性質的,是對mdl文件進行的仿真,并沒有VHDLVHDLRTL級的,是針對具體的硬件結構的,而在的中的模型仿真是算法級(系統(tǒng)級)的。兩者之間有可能存在軟件理解上差異。轉換后的VHDL代碼實現(xiàn)可能與mdl模型描述的情況不完全相符。這就需要針對生成的RTL級VHDL代碼進行功能仿真。當在piler窗口選項頁中設定后Builder在“MDLtoVHDL”過程中會自動生成針對HDL仿真器的測試文件。因此,在這里,需要使用對生成VHDL代碼進行功能仿真。是一個基Verilog/VHDLMentorGraphicsModelTechnology的打開9-36是tb_sinout.tcl來執(zhí)行。其中,tb_sinout.tclDSPBuilder的piler產生,若不存在,可再重復一次5.2.3小節(jié)的流程。如果一切配置正常的話,就37圖9-36準備執(zhí)行tcl文 不過圖中顯示的仿真波形與中的仿真結果沒有可比性。點擊“wave”窗口工 中“Scale”為0.4。注意:用于仿真TestBench文件中的輸入信號激勵由piler根據(jù)的仿真結果產生。因此,若需要產生正確的仿真激勵,必須先要在中進圖9-38的信號設 圖9-39設為圖9-40sinout工程的仿真波形(RTL級仿真此外,如果要產生能用tcl仿真文VHDL文件中LPM模塊,因為通常無法了解嵌在源程序中的LPM功能。因此在利用仿真前,應在編輯窗中消SinLUTProduct模塊的“LPM”選擇,然后進行一次系統(tǒng)仿真,再用piler將其轉VHDL程序tcl文件,進行仿真。完成后再恢復“LPM”選項,以便為QuartusII提供最后的時序仿真文件。完成的RTL級仿真只是功能仿真,其仿真結果并不能更精確地反映電路的 piler已將上的仿真信息轉變成了可用于QuartusII進行時序仿真的激勵信息及相關仿真文件:…DSPBuilder已自動建立好QuartusII工程文件:sinout.qpf(見9-41。注意,自動產生這個工程文件的前提是必須在piler窗(9-34)中執(zhí)行完第二個2、上文中提到,在pilerQuartusIIQuartusII自動QuartusIIQuartusIIQuartusII中進行修改。所以這里須按照前面章節(jié)中敘述的方法選擇器件型號。選擇菜單“Assignments”→“Device…”,在相應的框中選擇合→“StartCompilation3、雙擊9-41左側的工程名“sinout”,打開VHDL文件,了解生成的程序,特別是端口實體的情況(圖9-42。然后再打開已生成的仿真激勵文件sinout.vec(圖9-43。9-41打開QuartusII工程進行編譯和時9-43vwf文件:sinout.vwf。4、設置仿真文件路徑。選擇菜單“Assignments”→“Settings”,彈9-44窗口。在此窗左側的Category欄選擇SimulatorSettings項,在右側的Simulationmode欄選擇Timing,即選擇時序仿真;在Simulationinput欄選擇仿真文件sinout.vwf。關閉此窗。單“Processing”→“SimulationReport9-45即為時序仿真波形。9-43打開QuartusII工程的vec仿真激勵文9-45sinout工程的QuartusII仿真波形(門級時序仿真確定為EP1C6Q240C8,對D/A輸出的8位SinOut(7downto0)可分別接PIO31-PIO24, 從到pilerQuartusII的設計驗證十分方便,在第一個流程后,即最后實現(xiàn)硬件信號輸出后,若再想改動sinout.mdl圖,應該注意兩點:1、內部電路結構和設置可以改,但端口信號名不要改,如輸入的SinCtrl,SinOut,因為此信9-341個按紐,否則將可能把原來設定好/ /一個圖中,設計圖會顯得非常復雜、龐大,不利于閱讀和排錯。這時,就必須采用層次化設計方法來設計模型了。本節(jié)介紹DSPBuilder的層次化設計的基本步驟。在的SubSystem來完成子系統(tǒng)的封裝和調用。DSPBulider繼承了的子系統(tǒng)(SubSystem)DSP模型的層次化設計。下面以一個示例來具體說明DSPBuilder的層次化設計。步驟如下:1subsint9-2連接起來,并以文subsintsubsint模型窗口中,按住鼠標左鍵,然后移動鼠標畫框,選中圖中除了piler、Step模塊以外的所(可以通過按住Shift鍵,用鼠2、在選中的模塊上點擊鼠標右鍵,在彈出的右鍵菜單中(圖9-46),選擇“CreateSubSystem9-47subsint模型的原理圖,可以看到原來被選中的那些模塊和連線都了,只剩下一個新建立的子系統(tǒng)模塊:“Subsystem”。在新生成的Subsystem模塊上共有兩個端口:In1、Out1。3、修改子模塊名。事9-47顯示的subsint模型的頂層(TopLevel)原理圖。這統(tǒng)模塊封裝的原理圖(圖9-48。可以看出,封裝后的模塊自動增加了兩個的端口,即:In1和Out1。在打開的子系統(tǒng)模塊中,可以任意地增刪模塊;放置仿真用的庫的模塊;引Scope”等。不過某些DSPBuilder庫的模塊只能放置在頂層原理圖中,比如piler模塊。假如在子系統(tǒng)模塊中放置了 piler模塊只可以進行 piler來生成相應的VHDL代碼。圖9-46準備建立 圖9-47建立subsystem“OutSin(的singen子系統(tǒng)模塊上顯示出來。不需要任何的更新操作。9-51就是更改singen子系統(tǒng)端口名稱后,subsint模型頂層原理圖的顯示結果。如Input、Output,否則無法轉換成VHDL圖9-49修改子系統(tǒng) 圖9-50修改SubSystem的端9-51頂層圖的改際的電路。圖9-52是最后的subsint模型圖。下面列出了新增模塊需要修改的參數(shù)值:1)Singen子模塊中的元件設置同上一節(jié),且其中所有模塊的總線類型皆設為signedInteger。2)Offset模塊:(Altbus)庫:AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設為“signedInteger”參數(shù)“BusType”設為“InternalNode”參數(shù)“numberofbits”設為“8”;其余為0ParallelAdderSubtractor模塊:(ParallelAdderSubtractor)庫:AlteraDSPBuilder中Arithmetic庫ClockPhaseSelection設1。xSin模塊庫:AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設為“UnsignedInteger”參數(shù)“BusType”設為“Outputport”參數(shù)“numberofbits”設為“85)庫:AlteraDSPBuilder中IO&Bus庫參數(shù)“BusType”設為“SingleBit”參數(shù)“BusType”設為“Inputport”6)Constant庫:AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設為“signedInteger”參數(shù)“ConstantValue”設為127; 中SignalRouting庫參數(shù)“NumberofInputs”設為“2”9-525-57含subsystemsubsint模建立subint模型后sinout模型的例子Step模塊的激勵參數(shù),啟動subsint模型sinout模型的基礎上增加了波形的電壓偏移,其功能與9-26電路的功能是相9-53,9-54subsintScope波形顯示。在這個例子中,子系統(tǒng)singen中還含有一個Scope模塊,同樣也可以對相應節(jié)點的波形進行觀察。 圖9-53Scope1波形 圖9-54Scope波形不過,雖然可以進行仿真,但是還不能進行piler分析。按照前面介紹的步驟作的subsint模型中的singen子系統(tǒng)模塊,必須進行設置才可以讓piler識別為DSPBuilder的子系統(tǒng)。以下給出設置步驟:“Masksubsystem…”項(圖9-55,或該模塊。打開“MaskEditor:singen”設置框。注意“Masksubsystem…”項在設置后即變?yōu)椤癊ditMask”項?!癕asktype”為“SubSystemAlteraBlockSet(子系統(tǒng)Altera模塊集。設置完“Masktype”后,pilerVHDLsinout模型生VHDL代碼有所不同,sinout模型成一VHDL文件(TestBench文件除外subsint模型在轉換后生成了兩個VHDL文件:subsint.vhdsingen.vhdsubsint.vhdVHDL文件,singen.vhdsingenVHDLpilerVHDL文件,在上一級的VHDL文件中加以例化調用。圖9-55SubSystem設 圖9-56編輯singen的“MaskBuilder平臺的DDS設計方法,然后給出幾個基于DDS的實用系統(tǒng)的設計方法。9-57DDS系圖中,DDSSubDDSFreqword(32位頻率字輸入、Phaseword(16位相位字輸入、Amp(10位幅度控制字輸入一個輸出,即10位DDSout輸出。注意10位高D/A是無符號9-57的輸出口應該增加一些轉換IO&Bus中的“Constant”元件代替圖9-57中的Constant2。 的仿真停止時間StopTime為5,仿真步進FixedStepSize為為1e-3。相位、頻率和幅度控制字輸入按圖9-57所示,則輸出波形即如圖9-59所示;若相位、頻率和幅度控制字輸入分別取500000000、4000000和89,則輸出波形如圖9-60所示。Freqword模塊庫:AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設為“signedInteger”參數(shù)“NodeType”設為“Inputport”參數(shù)“numberofbits”設Phaseword庫:AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設為“signedInteger”參數(shù)“NodeType”設為“Inputport”參數(shù)“numberofbits”設Amp模塊庫:AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設為“signedInteger”參數(shù)“NodeType”設為“Inputport”參數(shù)“numberofbits”設DDSout模塊庫:AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設為“signedInteger”參數(shù)“NodeType”設為“Outputport”參數(shù)“numberofbits”設為“10”ParallelAdderSubtractor模塊:(ParallelAdderSubtractor)庫:AlteraDSPBuilder中Arithmetic庫參數(shù)“NumberofInputs”設為“2”參數(shù)“ClockPhaseDelay庫:AlteraDSPBuilder中Storage庫Phaseword1庫:AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設為“signedInteger”參數(shù)“NodeType”設為“InternalNode”參數(shù)“numberofbits”設為“32”ParallelAdderSubtractor1模塊:(ParallelAdderSubtractor)庫:AlteraDSPBuilder中Arithmetic庫參數(shù)“NumberofInputs”設為“2”參數(shù)“ClockPhase庫:AlteraDSPBuilder中IO&Bus庫參數(shù)“InputBusType”設為“signedInteger”參數(shù)“Input[numberofbits].[]”設為32參數(shù)“OutputBusType”設為“Signed參數(shù)“Outputnumberofbits[.[]參數(shù)“InputBitConnectedtoOutputMSB”設為“31”參數(shù)“InputBitConnectedtoOutputLSB”設為“22”Product模塊庫:AlteraDSPBuilder中Arithemtic庫參數(shù)“ClockPhaseSelection”設為“1”不選擇“UseLPM”庫:AlteraDSPBuilder中IO&Bus庫參數(shù)“InputBusType”設為“signedInteger”參數(shù)“Input[numberofbits].[]”設為“20”參數(shù)“OutputBusType”設為“SignedInteger”參數(shù)“Output[numberofbits[.[]”設為“10”參數(shù)“InputBitConnectedtoOutputMSB”設為“18”參數(shù)“InputBitConnectedtoOutputLSB”設為“9”圖9-59DDS系統(tǒng)輸出波 圖9-60DDS系統(tǒng)輸出波由于FSK調制器實際上是DDS的簡化應用模型。二進制數(shù)字頻率調制(2FSK)是利用二位不連續(xù)的FSK之分。可控的正弦信號,利用數(shù)字基帶信號控制DDS的頻率字輸入,實現(xiàn)FSK調制。Out8DAC進行數(shù)模轉換,然后經低通濾波器后,產生最終的模擬輸出信號。FSK9-62所示,高電平控制的時候,正弦波的頻率較高,而低電平的時,正好相反。最后通過pilerQuartusIIFPGA上完成硬件實現(xiàn)后,9-62FSK調制的Sinulink仿真結言,只要在基DDS結構中增加一ROM查找表,在兩ROM中分別放置一對正交信號即可(如一個放置Sin表、另一個放置Cos表。DDSROM表后、D/A前在2003年的大學生電子設計競賽C題中,有一項內容要求設計一個數(shù)字移相信號發(fā)生器,要求輸出正弦信號,一路為參考信號,另一路是可數(shù)控的移相信號,并且這可同步進行幅度和頻率數(shù)控。即對于這輸出的正弦信號在相位、頻率和幅度3圖9-64就是一個基于DDS的數(shù)字移相信號發(fā)生器完整的設計。他們的仿真波ROM的地址信號。2-4譯,單片機要分4次才能對相位控制數(shù)賦值完畢9-65數(shù)字移相信號發(fā)生器輸出波幅度調制信號發(fā)生器是2005年大學生電子設計競賽題中的一個設計項目。圖9-66是用DSPBuilderAMFPGA9-4FFF 號,m是調制度0m1F

(1

4注意, 和 根據(jù)式9- 可以作出圖9- 電路模型其中元件ADDER1Dly1Bus5Bus3 ,進入乘法器Pdt1的a端;進入b端的是由SL輸入。9-41。和進入第2Pdt2a端。 ,進入乘法器Pdt2的b端9-66中,cst15輸入的數(shù)據(jù)控制調制信號頻率;cst9的數(shù)據(jù)控制調制度(9-67的調制度是0.79;cst16輸入的數(shù)據(jù)控制載波信號頻率。另外,DSPBuilder借助于的編碼IPCore,可以實現(xiàn)復雜的編碼、譯碼操作。m序列為例,用DSPBuilder構建一個偽隨機序列發(fā)生器。m序列,即最長線性反饋移位寄存器序列,是一種比較常見的偽隨機序列發(fā)生器,可由線性反饋寄存器(LinearFeedbackShiftRegisters,LFSR)來產生。如圖9-68。+++++z-z-z-z-z-9-68線性反饋移位寄存器的構nF(x)Cix 5x5x2 6m序列的周期為2519-69DSPBuilder模型表述,這里采用相連的延時單元組作為移位寄存器,用異或(XOR)完成模二加運算,輸出為mout。9-69DSPBuilder默認的延時單元在開始工作時,內容為0,而對于m序列來說,起始序列為全0,那么根據(jù)多項式,輸出序列也將為全0。全0序列不是正常的m序列。因此只要起始時,寄存器中有一個為1,m序列就可以正常輸出。為此,對圖9-69的模型進行修改,修改后的模型見圖9-70修改后的m序列發(fā)生器模圖9-71m序列發(fā)生 碼序列{xi},其中1in,xi取n

jR(j)xixxj 0j j即當j0時,碼的局部自相關函數(shù)達到峰值,其它j值時,R(j)在1附近波動,可以用作幀同步的特殊碼組。符合上述自相關特性的碼組是存在的,比如72j0Rj)x2

7j1Rj)1j3,5,7Rj)0j2,4,6Rj)1。在環(huán)境中,建立一個DSPBuilder模型,檢出7位碼,序列1,MDL9-72幀同步檢出模9-73bxp1m1110010111101001101圖9-74bxn1m子系 圖9-75幀同步克碼檢測仿真結以上提到的在平臺上完成的諸多仿真都屬于算法級仿真,因為不涉及任何硬如因為已沒有了提供的大量功能強大的仿真工具。因此最理想的方法是直接在平臺上將設計模型進FPGA,利用AlteraDSPBuilderHIL(HardwaveintheLoop)模塊能很好地完成這種類型的仿真。圖9-76說明HIL的功HIL可以在模型FPGA開發(fā)板JTAG通信口建立一種聯(lián)系,從而實現(xiàn)基于/DSPBuilder平臺的硬件仿真。圖9-76插入HIL的模型硬件仿真說明圖9-77掃頻濾波信號發(fā)生器模型圖,文件名freqsweep9-79所示,利用piler對掃頻濾波信號發(fā)生器進行轉換、綜合和適配。分別按動此框的按鈕1、2、3,使freqsweep.mdl轉化為一個QuartusII工程。關閉窗口圖9-80所示,刪去9-77中所有AlteraDSPBuilder庫元件構成HIL9-81所示,HILAlteraDSPBuilderAltLab9-80雙擊圖9-80的HIL模塊,將彈出如圖9-82所示的HIL框。首先在“1.SelecttheQuartusIIproject”欄加入以上生成的工程:據(jù)類型,確定“3.Identitythesignedports”欄中各端口的數(shù)據(jù)類型。9-78掃頻濾波信號發(fā)生器算法(軟件)仿真波圖9- 圖9-81向圖中拖入HIL模BurstModeBurstlength1024(默認FrameMode處線(USB-Blaster等)PC機與FPGA開發(fā)板連好,并打開電源。在圖9-83所示的框中,在FPGAdevice欄鍵入FPGA開發(fā)板上的FPGA的型號,EP1C6Q240C8注意PC機與FPGAJTAG口通信ProgramtheFPGAJTAGCableDeviceinchainFPGA板上測得的FPGA型號。如果編譯成功,在圖9-83所示的窗下方的信息欄將出現(xiàn)文字:Createdfreqsweep_HIL.sof。這就是針對此工程生成的文件名是freqsweep_HIL.sof。點擊圖9-83的ConfigureFPGA按紐,通過JTAG口將此文件進FPGA中。如果下 piler變成VHDL。圖9-86利用編程模塊向FPGAFSKHIL9-879-90所示。由此圖可見,輸入波形與輸出波形有一定FPGA9-62中是看不到這種延時的。在圖形編輯窗中也允許利用狀態(tài)機DSP系統(tǒng)中必態(tài)1位熱碼編碼方Moore狀態(tài)機。此表格模塊經piler轉換后可以變VHDL的狀態(tài)機作為示例,在此使口RAM模塊(Dual-PortRAM)和狀態(tài)機模塊(StateMachineTable)完成一個FIFO器的設計。這兩個模塊可以分別從LibraryBrowser的AlteraDSPBuilder庫中的StateMachineFunctions子和StorageArithmetic子中獲得。構成的電路及其仿真配置圖如圖9-91所示。RAM8rdad和wrad8位數(shù)據(jù)讀地址和寫地圖9-91由狀態(tài)機模塊和雙口RAM構成的FIFO器電路9-91中的加減計數(shù)器Up_Down_Counter內部電路如9-92所示。其中的加減計數(shù)器都是8位無符號整數(shù)總線類型計數(shù)器,并行加減法器的操作符是“-+”。如圖9-94所示。默認的狀態(tài)機有5個輸入端和5個狀態(tài)。每一狀態(tài)以一個輸出信號端來代表。當狀態(tài)機運行時,如果相應的狀態(tài)等于當前狀態(tài),則此輸出為電平1,所有其它輸出為0。在中,輸入和輸出是有符號整數(shù)表示的,而在VHDL中,輸入和輸出是由標以下將敘述在DSPBuilder中狀態(tài)機的設計流程。在此以FIFO9-92加減計數(shù)器模塊Up_Down_CounterRAM的輸入端以及地址計數(shù)器的輸入端饋入控制信號,其操作步地址計數(shù)器就遞增1,于是一個字節(jié)的數(shù)據(jù)就被壓進(寫入)到RAM中去了;1,于是一個字節(jié)的數(shù)據(jù)就被彈出(被讀出RAM圖9-93狀態(tài)機轉換表 圖9-94庫中默認狀態(tài)機表模9-(push=1)&(push=0)&(push=0)&(pop=1)&(count_in=push(pop=1)&(count_in!=(push=1)&(push=0)&(pop=1)&(count_in=(push=1)&(pop=1)&(count_in!=popnot(push=1)&(countpushnot(push=0)&pushnot(push=1)&(countpushnot(push=1)&(countpushnot(push=1)&(pop=1)&(count_in!=在設計中加入狀態(tài)機表格模塊,并為此模塊取一個9-95即為此模塊。此例中,模塊的fifo-controller9-95是改fifo_controller后的狀態(tài)機模塊。注意,必須雙擊該表格模塊,以便能設定狀態(tài)機的特性。當出現(xiàn)“StateMachineBuilder”框9-96FIFO控制狀態(tài)機后的“Inputs”頁。定義的輸入信號是reset(默認、count_in、pop、push。圖9-95狀態(tài)機模塊 圖9-96狀態(tài)機表的“Inputs”的“State”頁,已作了對FIFO控制狀態(tài)機的狀態(tài)特性編輯。的工作方式(9-93所示ConditionalStatements”頁顯示的是狀態(tài)轉換表,表中含有狀態(tài)機的條件描述。其中條件描述由3部份組成:當前態(tài)和次態(tài)狀態(tài)值必須是在“State9-2中是用于定義條件那么這個條件就可用1來表述。9--負1-1=22>22<22&與2或2(in1=in2)對于條件敘述表中所列的條件,狀態(tài)機是順序計算判斷的。例如如表9-3所示。9-(pop=1)&(count_in=pushpushnot(pop=1)&(count_in!=(push=1)&(pop1&count_in0)在表中的位置高于條件(push=1)&count_in=250),所以,前者就條件(pop=1)&(count_in!=0僅次于最高優(yōu)先權的條件描述,而條件(push=1)&9-97狀態(tài)機表的“StatesIF((pop_sig=1)AND(conut_in_sig=0))THENnext_state<=empty_st;ELSIF(push_sig=1)THENnext_state<=push_not_full_st;ELSIF(pop_sig=1)AND(conut_in_sig/=0))THENnext_state<=pop_not_empty_st;ELSIF(push_sig=1)AND(conut_in_sig=250))THENnext_state<=full_st;next_state<=idle_st;ENDIF;9-(pop=1)&(countin=(push=1)&(pop=1)&(c

溫馨提示

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

評論

0/150

提交評論