版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
9DSPBuilderEDAQuartusII來(lái)完成的,最為典型的設(shè)計(jì)流程,包括設(shè)計(jì)項(xiàng)目編輯(如用VHDL、綜合、仿真、適配、編程。但是對(duì)Altera2002年推出的DSPBuilderFPGA開(kāi)發(fā)板上。利用與DSPBuilderSOPC技術(shù)的一個(gè)組成部分。本章以兩個(gè)簡(jiǎn)單的電路模型設(shè)計(jì)為示例,詳細(xì)介紹、DSPBuilder、QuartusII三DSPBuilder是一個(gè)系統(tǒng)級(jí)(或算法級(jí))設(shè)計(jì)工具,它架構(gòu)在多個(gè)軟件工具之上,并把在了/Simlink圖形設(shè)計(jì)平臺(tái)上,而將QuartusII作為底層設(shè)計(jì)工具置于,最大程度地發(fā)揮了對(duì)種工具的優(yōu)勢(shì)。DSPBuilder依賴于MathWorks公司的數(shù)學(xué)分析工具/Simlink,以的Blockset出現(xiàn)??梢栽谥羞M(jìn)行圖形化設(shè)計(jì)和仿真,同時(shí)又通過(guò)piler把/ (.vhd的處理都由QuartusII來(lái)完成。設(shè)計(jì)周期)對(duì)于不同的應(yīng)用目標(biāo)將有不同的要求,涉及的軟件工具也不僅僅是和QuartusII,DSPBuilder針對(duì)不同情況提供了兩套設(shè)計(jì)流程,即自動(dòng)流程和手動(dòng)流程。/ 中進(jìn)行設(shè)計(jì)輸入。即在的/環(huán)境中建立一個(gè)mdl模型文件,用圖形方式調(diào)用DSPBuilder和其他庫(kù)中的圖形庫(kù)而已,同樣也涉及到其他EDA軟件。(QuartusII,HDL (QuartusII, ATOMNetlistQuartusQuartus圖9-1基于、DSPBuilder、QuartusII等工DSPBuilderEDA工具軟件(QuartusII 的.mdl文件這就需要一個(gè)轉(zhuǎn)換過(guò)程通過(guò) 的模型文件(后綴為.mdl)轉(zhuǎn)化成通用的硬件描述語(yǔ)言,VHDL文件。轉(zhuǎn)換獲此后的步驟是對(duì)以上頂層設(shè)計(jì)產(chǎn)VHDLRTL代碼和仿真文編譯適配(Synthesis配,直至在中完成FPGA的配置過(guò)程。但是,如果希望使用其它第3方的VHDL綜合器和仿真器(Synplify、LeonardoSpectrum和QuartusII綜合器及外,或是希望完成特定的適配設(shè)置,用于FPGA的配置。采用手動(dòng)流程時(shí),除了行為級(jí)和設(shè)計(jì)輸入外,其它過(guò)程與標(biāo)準(zhǔn)的基于VHDL的EDA設(shè)計(jì)流程是完全一致的。首先由基于 的DSPBuilder設(shè)計(jì)流程得到VHDL 模型文件*.mdl通過(guò) pilder轉(zhuǎn)換而成,送入綜合器進(jìn)行綜合。操作可能比較繁瑣,所以DSPBuilder的 piler相應(yīng)提供了一個(gè)接口,針對(duì)設(shè)計(jì),件,主要是EDIF網(wǎng)表文件(.edf電子設(shè)計(jì)交換格式文件)或VQM(.vqmVerilogQuartusMapFile,它們是一種參數(shù)可設(shè)置的,并含有具體器件系列硬件特征(如邏輯宏單元LCs、I/O單元、乘積項(xiàng)、M4K、嵌入式系統(tǒng)塊ESB等)的網(wǎng)表文件。QuartusII可以利用這些ATOM網(wǎng)表文件針對(duì)選定的具體器件進(jìn)行適配,包括布線、布局、結(jié)構(gòu)優(yōu)化等操作,最后產(chǎn)生時(shí)序仿真文件和FPGA目標(biāo)器件的編程與配置文件。在這一步,設(shè)計(jì)者可以在QuartusII中完成對(duì)Pin(引腳)的鎖定,更改一些約束條件等。DSPBuilderVHDLQuartusII強(qiáng)大的LogicLockSignalTapDSPBuilderDSPBuilder中直接到FPGA用戶開(kāi)發(fā)板上,或者通過(guò)QuartusII完成硬件的、測(cè)試。9-1VHDLDSPBuilderHDL仿真器是。DSPBuilderVHDL代碼時(shí),可以同時(shí)生DSPTestBench(測(cè)試平臺(tái))文件,DSPBuilderTestBench文件VHDLDSP模塊在中的仿真激勵(lì)相一致。通過(guò)TestBenchVHDL代碼與中設(shè)計(jì)模型的一致性。另外,DSPBuilder在產(chǎn)生TestBench的同時(shí),還產(chǎn)生了針對(duì)仿真的Tcl來(lái)簡(jiǎn)化用戶的操作,如包含了來(lái)自平臺(tái)上進(jìn)行仿真的激勵(lì)信號(hào)信息等,從而掩蓋后網(wǎng)表與中建立DSP模型的一致性。這就需要再次使用進(jìn)行仿真,這QuartusII適配后帶延時(shí)信息的網(wǎng)表文件(EDIFVHDL、Verilog格自動(dòng)流程:1 /手動(dòng)流程:1/
建模;2、系統(tǒng)仿真;3、DSPBuilder完成SinLUT。SinLUT是一個(gè)正弦函數(shù)值的查找表(LUT:LookUpTable)模塊,由遞增的地址獲得正弦波的量化值SinCtrlSinCtrl1位(bit)輸入,SinCtrlProduct就完成了對(duì)正弦波輸出有無(wú)的控制。SinOutD/A即可獲得正弦波的輸出模擬信號(hào)。設(shè)計(jì)者在利用DSPBuilder來(lái)進(jìn)行相關(guān)設(shè)計(jì)時(shí),關(guān)鍵的設(shè)計(jì)過(guò)程大都在的圖形仿真環(huán)境中進(jìn)行9-2 環(huán)境界面如圖9-3所示??梢钥吹剑闹鞔翱诮缑姹环指畛扇齻€(gè)窗口:Window(orkspaceHistory命令窗口中,可以鍵入命令,同時(shí)獲得對(duì)命令的響應(yīng)信息、出錯(cuò)警告提示圖9-3界在建立一個(gè)新的設(shè)計(jì)模型前,最好先建立一個(gè)新的文件夾,作為work(工作),并把當(dāng)前work切換到新建的文件夾下。可以使用Windows在外部建立,也可以使用命令來(lái)直接完成這些操作,例如在主窗口中令窗口中鍵入:cdmkdir/myprj/sinwavecd/myprj/sinwave其中e:/myprj/sinwave是新建的文件夾,是用作 命令,cd是切換工 命令。具體過(guò)程可以參見(jiàn)圖9-4(打 主界面中的“CurrentDirectory”的制定,同樣可以改變 當(dāng)成功地把當(dāng)前切換到新建的設(shè)計(jì)后(cd/myprj/sinwave入命令:pwd,之后可以在命令窗口鍵入“”命令,以開(kāi)啟的圖形Browser9-4打開(kāi)圖9- 在庫(kù)管理器的左側(cè)是library列表,其中“”庫(kù)是的基本模型在的庫(kù)管理器中可以看到“AlteraDSPBuilder”字樣出現(xiàn)在library列表中。在以下的DSPBuilder應(yīng)用中,主要是使用該庫(kù)中的組件、子模型來(lái)完成各項(xiàng)設(shè)計(jì),再使用被DSPBuilder轉(zhuǎn)化為VHDL程序 的模型文件(后綴為mdl,在出的子菜單項(xiàng)中選擇新建模型“model9-69-6建立新模 點(diǎn)擊AlteraDSPBuilderDSPAltLabAltLab,選中庫(kù)管理器右側(cè)的pilder組件,按住鼠標(biāo)右鍵拖動(dòng)pilder到新模型窗口中(9-7。注意:當(dāng)在庫(kù)管理器中選中模塊(Block)后,在庫(kù)管理器上方的提示欄中會(huì)(9-8)DSPBuilderArithmetic(算術(shù))AlteraDSPBuilderArithmetic條,則在庫(kù)管理器的右側(cè),可以看到IncrementDecrement模塊。按照放置pilderIncrementDecrement7.用鼠標(biāo)點(diǎn)擊在新建模型窗口中的IncrementDecrement模塊下面的文字“Increment“IncCount(9-8。然后9-2中描述IncCount模塊做成一個(gè)線性遞增的地址發(fā)生器,這就需要對(duì)IncCount模塊的參數(shù)進(jìn)行相應(yīng)的設(shè)置:雙擊新建模型中的圖9-9所示。在參數(shù)設(shè)置框的上半部分是該模塊的功能描述和使用說(shuō)明;框的下半部分是參數(shù)設(shè)置部分,對(duì)于IncrementDecrement模塊共有下面幾種參數(shù)可以設(shè)置:總線類型(BusType;輸出位寬(Numberofbits;增減方向(Direction;alue;是否使用控制輸入(UseControl時(shí)鐘相位選擇(ClockPhase圖9-7放 圖9-8遞增遞減模塊改名為圖9-9設(shè)置遞增遞減模 圖9-10LUT模TypeInteger2、有符號(hào)小數(shù)(SignedFractional;Integer找表(SinLUT)的地址為6位,所以輸出位寬設(shè)為6。UseControlInputs項(xiàng)可以不選。因?yàn)槿绻x中此項(xiàng),此模塊會(huì)出現(xiàn)兩個(gè)輸入端,分別是復(fù)位端和時(shí)鐘使能端。通常在圖中的元件的復(fù)位和時(shí)鐘使能端以及都是分別默默認(rèn)設(shè)置。設(shè)置完的框如圖9-10。然后點(diǎn)擊“OK”按鈕確認(rèn)。注意,若對(duì)DSPBuilder庫(kù)中模塊設(shè)置參數(shù)值不了解,可以在相應(yīng)模塊的參數(shù)設(shè)置新建模型窗口,按照IncCount的做法把新調(diào)入的LUT模塊的名字修改成“SinLUT”。6BusTypeSignedInteger;在“Array”編輯框中輸入計(jì)算查找表內(nèi)容的計(jì)算式。在此可以直接使用sin(正弦)sin 1pi即為常數(shù)π。上式的數(shù)值變化范圍是-1271272568位二82628次 2 3設(shè)置好的SinLUT參數(shù)如圖9-11所示。圖9-11設(shè)置 圖9-12Delay模塊及其參數(shù)設(shè)置在庫(kù)管理器的AlteraDSPBuilder庫(kù)中,選中Storage庫(kù)下的Delay模塊,放置到新建模型窗口。Delay模塊(9-12)是一個(gè)延時(shí)環(huán)節(jié)。在這里可以不修改其默認(rèn)參數(shù)設(shè)置。其具體的默認(rèn)參數(shù)設(shè)置見(jiàn)圖9-12。在Delay模塊的參數(shù)設(shè)置框中,參數(shù)“Depth”是描述信號(hào)延時(shí)深度的參數(shù)。1ClockPhaseSelection1時(shí)表示,每一主頻脈沖后,數(shù)據(jù)都能通過(guò),如果設(shè)置為01,則每隔一個(gè)脈沖通過(guò)一個(gè)數(shù)據(jù);若設(shè)0011,表示每隔兩個(gè)脈沖通過(guò)兩個(gè)脈沖;0100表示Delay在每隔第2個(gè)時(shí)鐘時(shí)被使能通過(guò),而在第1、3、4個(gè)時(shí)49-2把他們連接起來(lái)。把在庫(kù)管理器的AlteraDSPBuilder庫(kù)中,選中IO&Bus庫(kù),找到Input模塊,NodeType參數(shù)為“InputPort9-13VHDL文件中變成端口模式為“IN”,數(shù)據(jù)類型為STD_LOGIC的端口信號(hào)。
9-13設(shè)置 庫(kù)管理器的AlteraDSPBuilder庫(kù)中,選中Arithmentic庫(kù),找到Product模個(gè)Delay的SinLUT查表輸出,另一個(gè)是外部一位端口SinCtrl。按算法邏輯來(lái)看,實(shí)現(xiàn)了即乘積延時(shí)幾個(gè)時(shí)鐘周期后出現(xiàn)。選中“UseLPM”,表示允許采用LPM模塊。“UseDedicatedCircuitry”選項(xiàng)用于對(duì)FPGA中的模塊的選擇,如Stratix,CycloneII等器件中的DSP模塊。9-14設(shè)置乘法單 (圖9-15)置在新建模型窗口中。修改模塊的名字為SinOutSinOut是一個(gè)8位輸出端口接向FPGA的輸出端口與外面的8位D/A轉(zhuǎn)換器相接,通過(guò)D/A把8位數(shù)據(jù)轉(zhuǎn)換成1路模擬信號(hào)。雙擊SinOut模塊,打開(kāi)模塊參數(shù)設(shè)置框,設(shè)置SinOut的BusType參數(shù)為“SignedInteger,修改“numberofbits”參數(shù)為8,如圖9-15所示。該模塊在VHDL文件中將變成OUT端口模式的標(biāo)準(zhǔn)位矢量: 則最MSB被截去。此選項(xiàng)對(duì)輸入端口或常數(shù)節(jié)點(diǎn)類型是無(wú)效的。LSB被截去。此選項(xiàng)不適用于輸入和常數(shù)類型。 圖9-15設(shè)置 圖9-16Step模塊圖9-17Scope模13.這樣就完成了一個(gè)正弦波發(fā)生器的DSPBuilder模型設(shè)計(jì)。在進(jìn)行和piler編譯之前,先對(duì)設(shè)計(jì)進(jìn)行存盤操作:點(diǎn)擊新建模型窗口的“File”菜單,在下拉菜單中選擇“SaveSinout,模型文件為sinout.mdl。在保存完畢后,新建模型窗口的標(biāo)題欄就會(huì)顯示模型名稱。過(guò)長(zhǎng)。且只有對(duì)文件存盤后,才能使用piler進(jìn)行編譯mdl文件轉(zhuǎn)VHDL文的環(huán)境具有強(qiáng)大的圖形化功能。用DSPBuilder模塊設(shè)計(jì)好一個(gè)新的模型后,可以直接在中進(jìn)行算法級(jí)、系統(tǒng)級(jí)。對(duì)一個(gè)模型進(jìn)StepSinCtrl的按鍵使能操作。在庫(kù)管理器中,展開(kāi)Sources庫(kù)Sources庫(kù)中的Step模塊拖放sinout模型窗(如9-16。參照?qǐng)D9-2stepSinCtrl輸入端口相接。注意,凡是來(lái)自AlteraDSPBuilder庫(kù)以外的模塊,piler都不能將其變成硬件電路,即不會(huì)影響產(chǎn)生VHDL程序,但在啟動(dòng)仿真后能影響后面產(chǎn)生的仿真激勵(lì)文件。Step模塊的情況正是如此。在的庫(kù)管理器中,展開(kāi)庫(kù),選中其中的Sinks庫(kù),把Scope(示波器9-17)模塊拖放sinout模型窗口中。雙擊該模塊,打開(kāi)的是Scope窗口(9-18。圖中所示只有一個(gè)信號(hào)的波形觀察窗口,而如若希望可以多觀察幾路信號(hào),自然可以通過(guò)調(diào)用多個(gè)Scope模塊的方法來(lái)實(shí)現(xiàn),這里介紹通過(guò)修改scope參數(shù)來(lái)增加同一scope中打開(kāi)Scope參數(shù)設(shè)置框,見(jiàn)圖9-19。在Scope參數(shù)設(shè)置框中共有兩個(gè)選項(xiàng)頁(yè):“ernral(History(ofaxes2。在點(diǎn)擊“OKScope窗口增加了兩個(gè)波形觀察有相應(yīng)語(yǔ)句,因?yàn)闆](méi)有接上輸出端口模塊:AltBus或Output模塊。圖9-18Scope初始顯 圖9-19設(shè)置Scope參9-2sinout模型的全圖,準(zhǔn)備開(kāi)始仿真。在仿真前還需要設(shè)置一下與仿關(guān)的參數(shù)。先設(shè)置模型的仿真激勵(lì)。在sinout模型圖中只有一個(gè)輸入端口SinCtrl,需要設(shè)置與此相Step放置sinout模型窗Step模塊置對(duì)輸入端SinCtrl施加的激勵(lì)。在打開(kāi)的Step模塊參數(shù)設(shè)置框中,可以看到下列參數(shù)(詳見(jiàn)圖9-20):步進(jìn)間隔(steptime;初始值(Initialvalue;終值(Finalvalue;采樣時(shí)間(Sample“Enablezerocrossingdectection”都設(shè)為打勾。21Simulationparameters”菜單項(xiàng),如圖9-22所示。隨后,將彈出sinout模型的仿真參數(shù)設(shè)置框::Real-TimeWorkshop。其中“Solver”選項(xiàng)頁(yè)中完成仿真時(shí),基本的時(shí)間設(shè)置、步進(jìn)間隔和Scopescope9-24顯示了仿真結(jié)果,SinOut信SinCtrlSinOutSinCtrlSinCtrl1時(shí),SinOut波形是正弦波;當(dāng)SinCtrl為0時(shí),輸出為0。在Scope觀察窗中,可以使用中的按鈕來(lái)放大縮左鍵,可以放大波形。圖9-25是改成無(wú)符號(hào)輸出的波形。9-209-21sinout全圖9- 仿真圖9-24有符號(hào)輸出波形(系統(tǒng)級(jí)仿真 圖9-25無(wú)符號(hào)輸出波形(系統(tǒng)級(jí)仿真9-24127間變化,但一般的輸出的有符號(hào)數(shù)據(jù)上加上了128。原理是將乘法器輸出的8位有符號(hào)數(shù)的最取反并以無(wú)符號(hào)數(shù)輸出。圖9-25即是產(chǎn)生的仿真波形,可以看出整個(gè)波形在0以上。以下將對(duì)圖中出9-27)VHDL文件中將變成內(nèi)部信號(hào)Signal定義。BusConcatenation是總線合并模塊,其功能是將兩個(gè)總線按要求合并成一個(gè)總線,其輸出位寬數(shù)等于輸入的兩個(gè)總線位數(shù)之和,參數(shù)設(shè)置如圖9-30所示。Not模塊是反相器模塊,設(shè)置如圖9-32所示。9-26無(wú)符號(hào)整數(shù)SignedInteger輸出電圖9-27SinOut1模塊設(shè) 圖9-28ExtractBit模塊設(shè)圖9-29BusConversion模塊設(shè) 圖9-30BusConcatenation模塊設(shè)圖9-31SinOut1模塊設(shè) 圖9-32NOT模塊設(shè)piler 中完成后,就需要把設(shè)計(jì)轉(zhuǎn)到硬件上加以實(shí)現(xiàn)。這是整個(gè)DSPBuilder設(shè)計(jì)流程中最關(guān)鍵的一步,據(jù)此可以獲得針對(duì)FPGA的VHDLRTL代碼。雙擊sinout模型中的 piler模塊,將出現(xiàn)如圖9-33所示的框,點(diǎn)擊 yze( piler就 piler窗口(圖9-34。如果有警告(Warning)用不同的顏色提示有錯(cuò)誤的模塊(Block。當(dāng)pilerDSP模型有錯(cuò)誤時(shí),必須去除錯(cuò)誤才能繼續(xù)DSPBuilder流程。左側(cè)的項(xiàng)目設(shè)置選項(xiàng)“ProjectSetting要的器件系列,默認(rèn)為Stratix系列器件,對(duì)此可以修改。在此選為Cyclone系列。圖9-33雙 圖9-34打 piler窗針對(duì)具體的DSP開(kāi)發(fā)板的?!癝ynthesis(綜合)下拉選擇框可以選擇綜合器,共有三個(gè)選“Synpilfy”:SynpilicitySynpilfyProSynpilfy在這個(gè)例子中,可選擇QuartusII。“Optiizaton(“ProjectOptions)“TestBench選項(xiàng)頁(yè),選擇“GenerateStimuliforVHDLTestbench”生成含激勵(lì)的仿真測(cè)試文件,用于VHDL仿真。當(dāng)設(shè)置好“Device”和“Synthesis”后,右側(cè)的硬件編譯“HardwareCompilation”部分就會(huì)列出一個(gè)操作流程,見(jiàn)圖9-34。分別為:“ConvertMDLtoVHDL”:轉(zhuǎn)MDL文件VHDL“Synthesis”:對(duì)轉(zhuǎn)換好VHDL圖9-34中的第4步是隱去的,這一步實(shí)現(xiàn)在中,完成FPGA的硬件配置。這需要DSP開(kāi)發(fā)板的支持,當(dāng)“Device”選為“DSPBoard”時(shí),該一步才顯示出來(lái)。1的圖標(biāo),完成文件(*.mdl)VHDL文件的轉(zhuǎn)換。轉(zhuǎn)錯(cuò)提示(出錯(cuò)的原因多數(shù)是文件的安裝或文件本身有問(wèn)題。sinout模型生成的VHDL文件“sinout.vhd”可以在文件夾e:/myprj/sinwave中找到。sinout_DspBuilder_Report.htmlDSPBuilder報(bào)告文件中,詳盡地描述了模型中的模塊分別進(jìn)行了說(shuō)明(9-35。9-35sinout工程處理信在中進(jìn)行的仿真是屬于系統(tǒng)驗(yàn)證性質(zhì)的,是對(duì)mdl文件進(jìn)行的仿真,并沒(méi)有VHDLVHDLRTL級(jí)的,是針對(duì)具體的硬件結(jié)構(gòu)的,而在的中的模型仿真是算法級(jí)(系統(tǒng)級(jí))的。兩者之間有可能存在軟件理解上差異。轉(zhuǎn)換后的VHDL代碼實(shí)現(xiàn)可能與mdl模型描述的情況不完全相符。這就需要針對(duì)生成的RTL級(jí)VHDL代碼進(jìn)行功能仿真。當(dāng)在piler窗口選項(xiàng)頁(yè)中設(shè)定后Builder在“MDLtoVHDL”過(guò)程中會(huì)自動(dòng)生成針對(duì)HDL仿真器的測(cè)試文件。因此,在這里,需要使用對(duì)生成VHDL代碼進(jìn)行功能仿真。是一個(gè)基Verilog/VHDLMentorGraphicsModelTechnology的打開(kāi)9-36是tb_sinout.tcl來(lái)執(zhí)行。其中,tb_sinout.tclDSPBuilder的piler產(chǎn)生,若不存在,可再重復(fù)一次5.2.3小節(jié)的流程。如果一切配置正常的話,就37圖9-36準(zhǔn)備執(zhí)行tcl文 不過(guò)圖中顯示的仿真波形與中的仿真結(jié)果沒(méi)有可比性。點(diǎn)擊“wave”窗口工 中“Scale”為0.4。注意:用于仿真TestBench文件中的輸入信號(hào)激勵(lì)由piler根據(jù)的仿真結(jié)果產(chǎn)生。因此,若需要產(chǎn)生正確的仿真激勵(lì),必須先要在中進(jìn)圖9-38的信號(hào)設(shè) 圖9-39設(shè)為圖9-40sinout工程的仿真波形(RTL級(jí)仿真此外,如果要產(chǎn)生能用tcl仿真文VHDL文件中LPM模塊,因?yàn)橥ǔo(wú)法了解嵌在源程序中的LPM功能。因此在利用仿真前,應(yīng)在編輯窗中消SinLUTProduct模塊的“LPM”選擇,然后進(jìn)行一次系統(tǒng)仿真,再用piler將其轉(zhuǎn)VHDL程序tcl文件,進(jìn)行仿真。完成后再恢復(fù)“LPM”選項(xiàng),以便為QuartusII提供最后的時(shí)序仿真文件。完成的RTL級(jí)仿真只是功能仿真,其仿真結(jié)果并不能更精確地反映電路的 piler已將上的仿真信息轉(zhuǎn)變成了可用于QuartusII進(jìn)行時(shí)序仿真的激勵(lì)信息及相關(guān)仿真文件:…DSPBuilder已自動(dòng)建立好QuartusII工程文件:sinout.qpf(見(jiàn)9-41。注意,自動(dòng)產(chǎn)生這個(gè)工程文件的前提是必須在piler窗(9-34)中執(zhí)行完第二個(gè)2、上文中提到,在pilerQuartusIIQuartusII自動(dòng)QuartusIIQuartusIIQuartusII中進(jìn)行修改。所以這里須按照前面章節(jié)中敘述的方法選擇器件型號(hào)。選擇菜單“Assignments”→“Device…”,在相應(yīng)的框中選擇合→“StartCompilation3、雙擊9-41左側(cè)的工程名“sinout”,打開(kāi)VHDL文件,了解生成的程序,特別是端口實(shí)體的情況(圖9-42。然后再打開(kāi)已生成的仿真激勵(lì)文件sinout.vec(圖9-43。9-41打開(kāi)QuartusII工程進(jìn)行編譯和時(shí)9-43vwf文件:sinout.vwf。4、設(shè)置仿真文件路徑。選擇菜單“Assignments”→“Settings”,彈9-44窗口。在此窗左側(cè)的Category欄選擇SimulatorSettings項(xiàng),在右側(cè)的Simulationmode欄選擇Timing,即選擇時(shí)序仿真;在Simulationinput欄選擇仿真文件sinout.vwf。關(guān)閉此窗。單“Processing”→“SimulationReport9-45即為時(shí)序仿真波形。9-43打開(kāi)QuartusII工程的vec仿真激勵(lì)文9-45sinout工程的QuartusII仿真波形(門級(jí)時(shí)序仿真確定為EP1C6Q240C8,對(duì)D/A輸出的8位SinOut(7downto0)可分別接PIO31-PIO24, 從到pilerQuartusII的設(shè)計(jì)驗(yàn)證十分方便,在第一個(gè)流程后,即最后實(shí)現(xiàn)硬件信號(hào)輸出后,若再想改動(dòng)sinout.mdl圖,應(yīng)該注意兩點(diǎn):1、內(nèi)部電路結(jié)構(gòu)和設(shè)置可以改,但端口信號(hào)名不要改,如輸入的SinCtrl,SinOut,因?yàn)榇诵?-341個(gè)按紐,否則將可能把原來(lái)設(shè)定好/ /一個(gè)圖中,設(shè)計(jì)圖會(huì)顯得非常復(fù)雜、龐大,不利于閱讀和排錯(cuò)。這時(shí),就必須采用層次化設(shè)計(jì)方法來(lái)設(shè)計(jì)模型了。本節(jié)介紹DSPBuilder的層次化設(shè)計(jì)的基本步驟。在的SubSystem來(lái)完成子系統(tǒng)的封裝和調(diào)用。DSPBulider繼承了的子系統(tǒng)(SubSystem)DSP模型的層次化設(shè)計(jì)。下面以一個(gè)示例來(lái)具體說(shuō)明DSPBuilder的層次化設(shè)計(jì)。步驟如下:1subsint9-2連接起來(lái),并以文subsintsubsint模型窗口中,按住鼠標(biāo)左鍵,然后移動(dòng)鼠標(biāo)畫框,選中圖中除了piler、Step模塊以外的所(可以通過(guò)按住Shift鍵,用鼠2、在選中的模塊上點(diǎn)擊鼠標(biāo)右鍵,在彈出的右鍵菜單中(圖9-46),選擇“CreateSubSystem9-47subsint模型的原理圖,可以看到原來(lái)被選中的那些模塊和連線都了,只剩下一個(gè)新建立的子系統(tǒng)模塊:“Subsystem”。在新生成的Subsystem模塊上共有兩個(gè)端口:In1、Out1。3、修改子模塊名。事9-47顯示的subsint模型的頂層(TopLevel)原理圖。這統(tǒng)模塊封裝的原理圖(圖9-48??梢钥闯觯庋b后的模塊自動(dòng)增加了兩個(gè)的端口,即:In1和Out1。在打開(kāi)的子系統(tǒng)模塊中,可以任意地增刪模塊;放置仿真用的庫(kù)的模塊;引Scope”等。不過(guò)某些DSPBuilder庫(kù)的模塊只能放置在頂層原理圖中,比如piler模塊。假如在子系統(tǒng)模塊中放置了 piler模塊只可以進(jìn)行 piler來(lái)生成相應(yīng)的VHDL代碼。圖9-46準(zhǔn)備建立 圖9-47建立subsystem“OutSin(的singen子系統(tǒng)模塊上顯示出來(lái)。不需要任何的更新操作。9-51就是更改singen子系統(tǒng)端口名稱后,subsint模型頂層原理圖的顯示結(jié)果。如Input、Output,否則無(wú)法轉(zhuǎn)換成VHDL圖9-49修改子系統(tǒng) 圖9-50修改SubSystem的端9-51頂層圖的改際的電路。圖9-52是最后的subsint模型圖。下面列出了新增模塊需要修改的參數(shù)值:1)Singen子模塊中的元件設(shè)置同上一節(jié),且其中所有模塊的總線類型皆設(shè)為signedInteger。2)Offset模塊:(Altbus)庫(kù):AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設(shè)為“signedInteger”參數(shù)“BusType”設(shè)為“InternalNode”參數(shù)“numberofbits”設(shè)為“8”;其余為0ParallelAdderSubtractor模塊:(ParallelAdderSubtractor)庫(kù):AlteraDSPBuilder中Arithmetic庫(kù)ClockPhaseSelection設(shè)1。xSin模塊庫(kù):AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設(shè)為“UnsignedInteger”參數(shù)“BusType”設(shè)為“Outputport”參數(shù)“numberofbits”設(shè)為“85)庫(kù):AlteraDSPBuilder中IO&Bus庫(kù)參數(shù)“BusType”設(shè)為“SingleBit”參數(shù)“BusType”設(shè)為“Inputport”6)Constant庫(kù):AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設(shè)為“signedInteger”參數(shù)“ConstantValue”設(shè)為127; 中SignalRouting庫(kù)參數(shù)“NumberofInputs”設(shè)為“2”9-525-57含subsystemsubsint模建立subint模型后sinout模型的例子Step模塊的激勵(lì)參數(shù),啟動(dòng)subsint模型sinout模型的基礎(chǔ)上增加了波形的電壓偏移,其功能與9-26電路的功能是相9-53,9-54subsintScope波形顯示。在這個(gè)例子中,子系統(tǒng)singen中還含有一個(gè)Scope模塊,同樣也可以對(duì)相應(yīng)節(jié)點(diǎn)的波形進(jìn)行觀察。 圖9-53Scope1波形 圖9-54Scope波形不過(guò),雖然可以進(jìn)行仿真,但是還不能進(jìn)行piler分析。按照前面介紹的步驟作的subsint模型中的singen子系統(tǒng)模塊,必須進(jìn)行設(shè)置才可以讓piler識(shí)別為DSPBuilder的子系統(tǒng)。以下給出設(shè)置步驟:“Masksubsystem…”項(xiàng)(圖9-55,或該模塊。打開(kāi)“MaskEditor:singen”設(shè)置框。注意“Masksubsystem…”項(xiàng)在設(shè)置后即變?yōu)椤癊ditMask”項(xiàng)?!癕asktype”為“SubSystemAlteraBlockSet(子系統(tǒng)Altera模塊集。設(shè)置完“Masktype”后,pilerVHDLsinout模型生VHDL代碼有所不同,sinout模型成一VHDL文件(TestBench文件除外subsint模型在轉(zhuǎn)換后生成了兩個(gè)VHDL文件:subsint.vhdsingen.vhdsubsint.vhdVHDL文件,singen.vhdsingenVHDLpilerVHDL文件,在上一級(jí)的VHDL文件中加以例化調(diào)用。圖9-55SubSystem設(shè) 圖9-56編輯singen的“MaskBuilder平臺(tái)的DDS設(shè)計(jì)方法,然后給出幾個(gè)基于DDS的實(shí)用系統(tǒng)的設(shè)計(jì)方法。9-57DDS系圖中,DDSSubDDSFreqword(32位頻率字輸入、Phaseword(16位相位字輸入、Amp(10位幅度控制字輸入一個(gè)輸出,即10位DDSout輸出。注意10位高D/A是無(wú)符號(hào)9-57的輸出口應(yīng)該增加一些轉(zhuǎn)換IO&Bus中的“Constant”元件代替圖9-57中的Constant2。 的仿真停止時(shí)間StopTime為5,仿真步進(jìn)FixedStepSize為為1e-3。相位、頻率和幅度控制字輸入按圖9-57所示,則輸出波形即如圖9-59所示;若相位、頻率和幅度控制字輸入分別取500000000、4000000和89,則輸出波形如圖9-60所示。Freqword模塊庫(kù):AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設(shè)為“signedInteger”參數(shù)“NodeType”設(shè)為“Inputport”參數(shù)“numberofbits”設(shè)Phaseword庫(kù):AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設(shè)為“signedInteger”參數(shù)“NodeType”設(shè)為“Inputport”參數(shù)“numberofbits”設(shè)Amp模塊庫(kù):AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設(shè)為“signedInteger”參數(shù)“NodeType”設(shè)為“Inputport”參數(shù)“numberofbits”設(shè)DDSout模塊庫(kù):AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設(shè)為“signedInteger”參數(shù)“NodeType”設(shè)為“Outputport”參數(shù)“numberofbits”設(shè)為“10”ParallelAdderSubtractor模塊:(ParallelAdderSubtractor)庫(kù):AlteraDSPBuilder中Arithmetic庫(kù)參數(shù)“NumberofInputs”設(shè)為“2”參數(shù)“ClockPhaseDelay庫(kù):AlteraDSPBuilder中Storage庫(kù)Phaseword1庫(kù):AlteraDSPBuilder中IO&Bus參數(shù)“BusType”設(shè)為“signedInteger”參數(shù)“NodeType”設(shè)為“InternalNode”參數(shù)“numberofbits”設(shè)為“32”ParallelAdderSubtractor1模塊:(ParallelAdderSubtractor)庫(kù):AlteraDSPBuilder中Arithmetic庫(kù)參數(shù)“NumberofInputs”設(shè)為“2”參數(shù)“ClockPhase庫(kù):AlteraDSPBuilder中IO&Bus庫(kù)參數(shù)“InputBusType”設(shè)為“signedInteger”參數(shù)“Input[numberofbits].[]”設(shè)為32參數(shù)“OutputBusType”設(shè)為“Signed參數(shù)“Outputnumberofbits[.[]參數(shù)“InputBitConnectedtoOutputMSB”設(shè)為“31”參數(shù)“InputBitConnectedtoOutputLSB”設(shè)為“22”Product模塊庫(kù):AlteraDSPBuilder中Arithemtic庫(kù)參數(shù)“ClockPhaseSelection”設(shè)為“1”不選擇“UseLPM”庫(kù):AlteraDSPBuilder中IO&Bus庫(kù)參數(shù)“InputBusType”設(shè)為“signedInteger”參數(shù)“Input[numberofbits].[]”設(shè)為“20”參數(shù)“OutputBusType”設(shè)為“SignedInteger”參數(shù)“Output[numberofbits[.[]”設(shè)為“10”參數(shù)“InputBitConnectedtoOutputMSB”設(shè)為“18”參數(shù)“InputBitConnectedtoOutputLSB”設(shè)為“9”圖9-59DDS系統(tǒng)輸出波 圖9-60DDS系統(tǒng)輸出波由于FSK調(diào)制器實(shí)際上是DDS的簡(jiǎn)化應(yīng)用模型。二進(jìn)制數(shù)字頻率調(diào)制(2FSK)是利用二位不連續(xù)的FSK之分??煽氐恼倚盘?hào),利用數(shù)字基帶信號(hào)控制DDS的頻率字輸入,實(shí)現(xiàn)FSK調(diào)制。Out8DAC進(jìn)行數(shù)模轉(zhuǎn)換,然后經(jīng)低通濾波器后,產(chǎn)生最終的模擬輸出信號(hào)。FSK9-62所示,高電平控制的時(shí)候,正弦波的頻率較高,而低電平的時(shí),正好相反。最后通過(guò)pilerQuartusIIFPGA上完成硬件實(shí)現(xiàn)后,9-62FSK調(diào)制的Sinulink仿真結(jié)言,只要在基DDS結(jié)構(gòu)中增加一ROM查找表,在兩ROM中分別放置一對(duì)正交信號(hào)即可(如一個(gè)放置Sin表、另一個(gè)放置Cos表。DDSROM表后、D/A前在2003年的大學(xué)生電子設(shè)計(jì)競(jìng)賽C題中,有一項(xiàng)內(nèi)容要求設(shè)計(jì)一個(gè)數(shù)字移相信號(hào)發(fā)生器,要求輸出正弦信號(hào),一路為參考信號(hào),另一路是可數(shù)控的移相信號(hào),并且這可同步進(jìn)行幅度和頻率數(shù)控。即對(duì)于這輸出的正弦信號(hào)在相位、頻率和幅度3圖9-64就是一個(gè)基于DDS的數(shù)字移相信號(hào)發(fā)生器完整的設(shè)計(jì)。他們的仿真波ROM的地址信號(hào)。2-4譯,單片機(jī)要分4次才能對(duì)相位控制數(shù)賦值完畢9-65數(shù)字移相信號(hào)發(fā)生器輸出波幅度調(diào)制信號(hào)發(fā)生器是2005年大學(xué)生電子設(shè)計(jì)競(jìng)賽題中的一個(gè)設(shè)計(jì)項(xiàng)目。圖9-66是用DSPBuilderAMFPGA9-4FFF 號(hào),m是調(diào)制度0m1F
(1
4注意, 和 根據(jù)式9- 可以作出圖9- 電路模型其中元件ADDER1Dly1Bus5Bus3 ,進(jìn)入乘法器Pdt1的a端;進(jìn)入b端的是由SL輸入。9-41。和進(jìn)入第2Pdt2a端。 ,進(jìn)入乘法器Pdt2的b端9-66中,cst15輸入的數(shù)據(jù)控制調(diào)制信號(hào)頻率;cst9的數(shù)據(jù)控制調(diào)制度(9-67的調(diào)制度是0.79;cst16輸入的數(shù)據(jù)控制載波信號(hào)頻率。另外,DSPBuilder借助于的編碼IPCore,可以實(shí)現(xiàn)復(fù)雜的編碼、譯碼操作。m序列為例,用DSPBuilder構(gòu)建一個(gè)偽隨機(jī)序列發(fā)生器。m序列,即最長(zhǎng)線性反饋移位寄存器序列,是一種比較常見(jiàn)的偽隨機(jī)序列發(fā)生器,可由線性反饋寄存器(LinearFeedbackShiftRegisters,LFSR)來(lái)產(chǎn)生。如圖9-68。+++++z-z-z-z-z-9-68線性反饋移位寄存器的構(gòu)nF(x)Cix 5x5x2 6m序列的周期為2519-69DSPBuilder模型表述,這里采用相連的延時(shí)單元組作為移位寄存器,用異或(XOR)完成模二加運(yùn)算,輸出為mout。9-69DSPBuilder默認(rèn)的延時(shí)單元在開(kāi)始工作時(shí),內(nèi)容為0,而對(duì)于m序列來(lái)說(shuō),起始序列為全0,那么根據(jù)多項(xiàng)式,輸出序列也將為全0。全0序列不是正常的m序列。因此只要起始時(shí),寄存器中有一個(gè)為1,m序列就可以正常輸出。為此,對(duì)圖9-69的模型進(jìn)行修改,修改后的模型見(jiàn)圖9-70修改后的m序列發(fā)生器模圖9-71m序列發(fā)生 碼序列{xi},其中1in,xi取n
jR(j)xixxj 0j j即當(dāng)j0時(shí),碼的局部自相關(guān)函數(shù)達(dá)到峰值,其它j值時(shí),R(j)在1附近波動(dòng),可以用作幀同步的特殊碼組。符合上述自相關(guān)特性的碼組是存在的,比如72j0Rj)x2
7j1Rj)1j3,5,7Rj)0j2,4,6Rj)1。在環(huán)境中,建立一個(gè)DSPBuilder模型,檢出7位碼,序列1,MDL9-72幀同步檢出模9-73bxp1m1110010111101001101圖9-74bxn1m子系 圖9-75幀同步克碼檢測(cè)仿真結(jié)以上提到的在平臺(tái)上完成的諸多仿真都屬于算法級(jí)仿真,因?yàn)椴簧婕叭魏斡踩缫驗(yàn)橐褯](méi)有了提供的大量功能強(qiáng)大的仿真工具。因此最理想的方法是直接在平臺(tái)上將設(shè)計(jì)模型進(jìn)FPGA,利用AlteraDSPBuilderHIL(HardwaveintheLoop)模塊能很好地完成這種類型的仿真。圖9-76說(shuō)明HIL的功HIL可以在模型FPGA開(kāi)發(fā)板JTAG通信口建立一種聯(lián)系,從而實(shí)現(xiàn)基于/DSPBuilder平臺(tái)的硬件仿真。圖9-76插入HIL的模型硬件仿真說(shuō)明圖9-77掃頻濾波信號(hào)發(fā)生器模型圖,文件名freqsweep9-79所示,利用piler對(duì)掃頻濾波信號(hào)發(fā)生器進(jìn)行轉(zhuǎn)換、綜合和適配。分別按動(dòng)此框的按鈕1、2、3,使freqsweep.mdl轉(zhuǎn)化為一個(gè)QuartusII工程。關(guān)閉窗口圖9-80所示,刪去9-77中所有AlteraDSPBuilder庫(kù)元件構(gòu)成HIL9-81所示,HILAlteraDSPBuilderAltLab9-80雙擊圖9-80的HIL模塊,將彈出如圖9-82所示的HIL框。首先在“1.SelecttheQuartusIIproject”欄加入以上生成的工程:據(jù)類型,確定“3.Identitythesignedports”欄中各端口的數(shù)據(jù)類型。9-78掃頻濾波信號(hào)發(fā)生器算法(軟件)仿真波圖9- 圖9-81向圖中拖入HIL模BurstModeBurstlength1024(默認(rèn)FrameMode處線(USB-Blaster等)PC機(jī)與FPGA開(kāi)發(fā)板連好,并打開(kāi)電源。在圖9-83所示的框中,在FPGAdevice欄鍵入FPGA開(kāi)發(fā)板上的FPGA的型號(hào),EP1C6Q240C8注意PC機(jī)與FPGAJTAG口通信ProgramtheFPGAJTAGCableDeviceinchainFPGA板上測(cè)得的FPGA型號(hào)。如果編譯成功,在圖9-83所示的窗下方的信息欄將出現(xiàn)文字:Createdfreqsweep_HIL.sof。這就是針對(duì)此工程生成的文件名是freqsweep_HIL.sof。點(diǎn)擊圖9-83的ConfigureFPGA按紐,通過(guò)JTAG口將此文件進(jìn)FPGA中。如果下 piler變成VHDL。圖9-86利用編程模塊向FPGAFSKHIL9-879-90所示。由此圖可見(jiàn),輸入波形與輸出波形有一定FPGA9-62中是看不到這種延時(shí)的。在圖形編輯窗中也允許利用狀態(tài)機(jī)DSP系統(tǒng)中必態(tài)1位熱碼編碼方Moore狀態(tài)機(jī)。此表格模塊經(jīng)piler轉(zhuǎn)換后可以變VHDL的狀態(tài)機(jī)作為示例,在此使口RAM模塊(Dual-PortRAM)和狀態(tài)機(jī)模塊(StateMachineTable)完成一個(gè)FIFO器的設(shè)計(jì)。這兩個(gè)模塊可以分別從LibraryBrowser的AlteraDSPBuilder庫(kù)中的StateMachineFunctions子和StorageArithmetic子中獲得。構(gòu)成的電路及其仿真配置圖如圖9-91所示。RAM8rdad和wrad8位數(shù)據(jù)讀地址和寫地圖9-91由狀態(tài)機(jī)模塊和雙口RAM構(gòu)成的FIFO器電路9-91中的加減計(jì)數(shù)器Up_Down_Counter內(nèi)部電路如9-92所示。其中的加減計(jì)數(shù)器都是8位無(wú)符號(hào)整數(shù)總線類型計(jì)數(shù)器,并行加減法器的操作符是“-+”。如圖9-94所示。默認(rèn)的狀態(tài)機(jī)有5個(gè)輸入端和5個(gè)狀態(tài)。每一狀態(tài)以一個(gè)輸出信號(hào)端來(lái)代表。當(dāng)狀態(tài)機(jī)運(yùn)行時(shí),如果相應(yīng)的狀態(tài)等于當(dāng)前狀態(tài),則此輸出為電平1,所有其它輸出為0。在中,輸入和輸出是有符號(hào)整數(shù)表示的,而在VHDL中,輸入和輸出是由標(biāo)以下將敘述在DSPBuilder中狀態(tài)機(jī)的設(shè)計(jì)流程。在此以FIFO9-92加減計(jì)數(shù)器模塊Up_Down_CounterRAM的輸入端以及地址計(jì)數(shù)器的輸入端饋入控制信號(hào),其操作步地址計(jì)數(shù)器就遞增1,于是一個(gè)字節(jié)的數(shù)據(jù)就被壓進(jìn)(寫入)到RAM中去了;1,于是一個(gè)字節(jié)的數(shù)據(jù)就被彈出(被讀出RAM圖9-93狀態(tài)機(jī)轉(zhuǎn)換表 圖9-94庫(kù)中默認(rèn)狀態(tài)機(jī)表模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!=在設(shè)計(jì)中加入狀態(tài)機(jī)表格模塊,并為此模塊取一個(gè)9-95即為此模塊。此例中,模塊的fifo-controller9-95是改fifo_controller后的狀態(tài)機(jī)模塊。注意,必須雙擊該表格模塊,以便能設(shè)定狀態(tài)機(jī)的特性。當(dāng)出現(xiàn)“StateMachineBuilder”框9-96FIFO控制狀態(tài)機(jī)后的“Inputs”頁(yè)。定義的輸入信號(hào)是reset(默認(rèn)、count_in、pop、push。圖9-95狀態(tài)機(jī)模塊 圖9-96狀態(tài)機(jī)表的“Inputs”的“State”頁(yè),已作了對(duì)FIFO控制狀態(tài)機(jī)的狀態(tài)特性編輯。的工作方式(9-93所示ConditionalStatements”頁(yè)顯示的是狀態(tài)轉(zhuǎn)換表,表中含有狀態(tài)機(jī)的條件描述。其中條件描述由3部份組成:當(dāng)前態(tài)和次態(tài)狀態(tài)值必須是在“State9-2中是用于定義條件那么這個(gè)條件就可用1來(lái)表述。9--負(fù)1-1=22>22<22&與2或2(in1=in2)對(duì)于條件敘述表中所列的條件,狀態(tài)機(jī)是順序計(jì)算判斷的。例如如表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)先權(quán)的條件描述,而條件(push=1)&9-97狀態(tài)機(jī)表的“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. 本站所有資源如無(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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件公司總經(jīng)理聘任合同
- 河道整治自卸車租賃協(xié)議
- 政府機(jī)構(gòu)租賃合同-政府
- 垃圾處理保溫系統(tǒng)安裝協(xié)議
- 高空水電站設(shè)備維護(hù)合同
- 資產(chǎn)轉(zhuǎn)讓協(xié)議三篇
- 芹菜收購(gòu)合同范本(2篇)
- 公交車廣告違約終止合同通知書(shū)
- 集體合同培訓(xùn)材料
- 煙酒貨物運(yùn)輸合同范例
- illustrator練習(xí)試題附答案
- 華為公司管理決策流程
- 車輛理賠權(quán)益轉(zhuǎn)讓協(xié)議
- 《我的家鄉(xiāng)天津》課件
- 部編版四年級(jí)上冊(cè)《麻雀》說(shuō)課課件
- 操作規(guī)程倉(cāng)管員發(fā)貨員安全操作規(guī)程
- 監(jiān)理分包合同協(xié)議書(shū)
- 小學(xué)數(shù)學(xué)(2023版)五年級(jí)上冊(cè)課后習(xí)題月末綜合訓(xùn)練二(含答案)【可編輯可打印】
- 代辦身份證委托書(shū)海外
- 廣東省廣州市番禺區(qū)2022-2023學(xué)年三年級(jí)上學(xué)期期末語(yǔ)文試卷
- 管理實(shí)訓(xùn)第四章目標(biāo)管理的簡(jiǎn)單應(yīng)用
評(píng)論
0/150
提交評(píng)論