畢業(yè)設計---信號發(fā)生器設計_第1頁
已閱讀1頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  1 引言2</b></p><p>  2 信號發(fā)生器設計的總體方案3</p><p>  2.1 信號發(fā)生器的原理3</p><p>  2.2 EDA技術5</p><p>  2.3

2、 Verilog HDL的設計流程9</p><p>  2.4 EDA工具9</p><p>  2.5 基于FPGA的設計原理11</p><p>  3 信號發(fā)生器的硬件電路設計15</p><p>  3.1 實現三種波形(正弦波、方波和鋸齒波)的算法15</p><p>  3.2 系統(tǒng)

3、設計與實現16</p><p>  4 信號發(fā)生器的軟件設計20</p><p>  4.1 程序的流程圖20</p><p>  4.2 各個功能模塊的Verilog程序實現20</p><p>  5 系統(tǒng)測試及結果分析25</p><p>  5.1 系統(tǒng)測試25</p>&l

4、t;p>  5.2 信號發(fā)生器的輸出信號頻譜特性分析28</p><p>  5.3 設計中的幾個難點及解決辦法32</p><p>  5.4 設計中的不足之處及改進辦法33</p><p><b>  結 論34</b></p><p><b>  致 謝35</b>&

5、lt;/p><p><b>  參考文獻36</b></p><p><b>  附件A36</b></p><p><b>  1 引言</b></p><p>  信號發(fā)生器作為一種基本電子設備,無論是在教學、科研還是在部隊技術保障中,都有著廣泛的使用。信號發(fā)生器作為一種

6、通用電子測試儀器是軍隊進行科技戰(zhàn)爭不可缺少的一種測試儀器。因此,從理論到工程對信號的發(fā)生進行深入研究,不論是從教學科研角度,還是從部隊技術保障服務角度出發(fā)都有著積極的意義。隨著科學技術的發(fā)展和測量技術的進步,對信號發(fā)生器的要求越來越高,普通的信號發(fā)生器已無法滿足目標高、頻率切換速度快、切換相位連續(xù)、輸出信號噪聲低、可編程、全數字化易于集成、體積小、重量輕等優(yōu)點。</p><p>  1971年,美國學者J.Tie

7、rney等人撰寫的“A Digital Frequency Synthesizer”一文首次提出了以全數字技術,從相位概念出發(fā)直接合成所需波形的一種新合成原理。限于當時的技術和器件產能,它的性能指標尚不能與已有的技術盯比,故未受到重視。近幾年間,隨著微電子技術的迅速發(fā)展,直接數字頻率合成器(Direct Digital Frequency Synthesis簡稱DDS或DDFS)得到了飛速的發(fā)展,它以有別于其它頻率合成方法的優(yōu)越性能和特

8、點成為現代頻率合成技術中的佼佼者。具體體現在相對帶寬、頻率轉換時間短、頻率分辨率高、輸出相位連續(xù)、可產生寬帶正交信號及其他多種調制信號、可編程和全數字化、控制靈活方便等方面,并具有極高的性價比。</p><p>  根據DDS的特點,將其應用于信號發(fā)生器,可以大大提高信號發(fā)生器的分辨率,而且可以有效的降低成本、縮小體積。</p><p>  本設計用硬件描述語言Verilog來編程,用Al

9、tera公司的開發(fā)平臺QUARTUSⅡ6.0來仿真,最后下載到StratixⅡ系列的EP2S60器件中進行驗證。</p><p>  本設計第二部分說明了信號發(fā)生器的功能框圖,并進行了簡要的說明。另外,本設計還說明了EDA設計的基本方法、Verilog HDL設計的流程和EDA工具等。在硬件電路設計部分,主要說明了信號發(fā)生器的原理圖、各個功能模塊的硬件實現方法。第四部分主要說明了各功能模塊的Verilog 實現,

10、并給出了關鍵的功能模塊的代碼。最后,對本設計進行了系統(tǒng)測試和結果分析,并對輸出波形進行了誤差分析。</p><p>  2 信號發(fā)生器設計的總體方案</p><p>  2.1 信號發(fā)生器的原理</p><p>  本設計是基于直接數字頻率合成器(Direct Digital Synthesizer)原理的信號發(fā)生器。它是從相位概念出發(fā)直接合成所需波形的一種頻率

11、合成技術。一個信號發(fā)生器由相位累加器、加法器、波形選擇器、波形存儲ROM、D/A轉換器和低通濾波器(LPF)構成。信號發(fā)生器的原理框圖如圖2.1所示?!?lt;/p><p>  圖2.1 信號發(fā)生器的原理圖</p><p>  其中為頻率控制字、為相位控制字、為波形控制字、為參考時鐘頻率,為相位累加器的字長,為ROM數據位及D/A轉換器的字長。相位累加器在時鐘的控制下以步長作累加,輸出的位二

12、進制碼與相位控制字、波形控制字相加后作為波形ROM的地址,對波形ROM進行尋址,波形ROM輸出位的隔度碼經D/A轉換器變成階梯波,再經過低通濾波器平滑后就可以得到合成的信號波形。合成的信號波形形狀取決于波形ROM中存放的幅度碼,因此用信號發(fā)生器可以產生任意波形。 </p><p>  2.1.1 頻率預置與調節(jié)電路</p><p>  被稱為頻率控制字,也叫相位增量。信號發(fā)生器的輸出頻

13、率為:,為時鐘頻率。當時,信號發(fā)生器的輸出最低頻率(也即頻率分辨率)為而信號發(fā)生器的最大輸出頻率由Nyquist采樣定理決定,即,也就是說的最大值為。因此,只要足夠大,信號發(fā)生器可以得到很細的頻率間隔。要改變信號發(fā)生器的輸出頻率,只要改變頻率控制字即可。</p><p>  2.1.2 累加器 <

14、/p><p>  相位累加器由位加法器與位寄存器級聯(lián)構成。每來一個時鐘脈沖,加法器將頻率控制字與寄存器輸出的累加相位數據相加,再把相加后的結果送至寄存器的數據輸入端。寄存器將加法器在上一個時鐘作用后所產生的相位數據反饋到加法器的輸入端,以使加法器在不到一個時鐘作用不繼續(xù)與頻率控制字進行相加。這樣,相位累加器在時鐘的作用下,進行相位累加。當相位累加器累加滿量時就會產生一次溢出,完成一個周期性的動作。累加器原理如圖2.2

15、所示。</p><p>  圖2.2 累加器原理圖</p><p>  2.1.3 控制相位的加法器</p><p>  通過改變相位控制字可以控制輸出信號的相位參數。令相位加法器的字長為,當相位控制字由0躍變到時,波形存儲器的輸入為相位累加器的輸出與相位控制字之和,因而其輸出的幅度編碼相位會增加,從而使最后輸出的信號產生相移。</p><p

16、>  2.1.4 控制波形的轉換器</p><p>  通過改變波形控制字可以控制輸出信號的波形。由于波形存儲器中的小同波形是分塊存儲的,所以當波形控制字改變時,波形存儲器的輸入為改變相位后的地址與波形控制字(波形地址)之和,從而使最后輸出的信號產生相移。</p><p>  2.1.5 波形存儲器</p><p>  用相位累加器輸出的數據作為波形存儲器

17、的取樣地址,進行波形的相位-隔值轉換,即可在給定的時間上確定輸出的波形的抽樣幅值。位的尋址ROM相當于把0到的正弦信號離散成具有個樣值的序列,若波形ROM有位數據位,則個樣值的隔值以位一進制數值固化在ROM中,按照地址的不同可以輸出相應相位的正弦信號的幅值。相位一幅度變換原理圖如圖2.3所示。</p><p>  圖2.3 相位—幅度變換原理圖</p><p>  2.1.6 D/A轉

18、換器</p><p>  D/A轉換器的作用是把合成的正弦波數字量轉換成模擬量。正弦幅度量化序列經D/A轉換后變成了包絡為正弦波的階梯波。需要注意的是,頻率合成器對D/A轉換器的分辨率有一定的要求,D/A轉換器的分辨率越高,合成的正弦波臺階數就越多,輸出的波形的精度也就越高。</p><p>  2.1.7 低通濾波器</p><p>  對D/A輸出的階梯波進行

19、頻譜分析,可知中除主頻外,還存在分布在,2···兩邊處的非諧波分量,隔值包絡為辛格函數。因此,為了取出主頻,必須在D/A轉換器的輸出端接入截止頻率為的低通濾波器。</p><p>  2.2 EDA技術</p><p>  2.2.1 EDA設計的基本特點</p><p>  EDA代表了當今電子設計技術的最新發(fā)展方向,它的基本特征

20、是:設計人員按照“自頂向下”的設計方法,對整個系統(tǒng)進行方案設計和功能劃分,系統(tǒng)的關鍵電路用一片或幾片專用集成電路(ASIC)實現,然后采用硬件描述語言(HDL)完成系統(tǒng)行為級設計,最后通過綜合器和適配器生成最終的目標器件,這樣的設計方法被稱為高層次的電子設計方法。下面介紹與EDA基本特征有關的幾個概念。</p><p>  a)“自頂向下”的設計方法</p><p>  10年前,電子設計

21、的基本思路還是選用標準集成電路“自底向上”地構造出一個新的系統(tǒng),這樣的設計方法就如同一磚一瓦建造金字塔,不僅效率低、成本高而且容易出錯。</p><p>  高層次設計是一種“自頂向下”的全新設計方法,這種設計方法首先從系統(tǒng)設計入手,在頂層進行功能方框圖的劃分和結構設計。在方框圖一級進行仿真、糾錯,并用硬件描述語言對高層次的系統(tǒng)行為進行描述,在系統(tǒng)一級進行驗證。然后,用綜合優(yōu)化工具生成具體門電路的網絡表,其對應的

22、物理實現級可以是印刷電路板或專用集成電路。由于設計的主要仿真和調試過程是在高層次上完成的,這既有利于早期發(fā)現結構設計上的錯誤,避免設計工作的浪費,又減少了邏輯功能仿真的工作量,提高了設計的一次成功率。</p><p><b>  b) ASIC設計</b></p><p>  現代電子產品的復雜度日益提高,一個電子系統(tǒng)可能由數萬個中小規(guī)模集成電路構成,這就帶來了體積大

23、、功耗大、可靠性差的問題。解決這一問題的有效方法就是采用ASIC芯片進行設計。ASIC按照設計方法的不同可分為全定制ASIC、半定制ASIC和可編程ASIC(也稱為可編程邏輯器件)。</p><p>  設計全定制ASIC芯片時,設計師要定義芯片上所有晶體管的幾何圖形和工藝規(guī)則,最后將設計結果交由IC廠家去進行掩模制造,做出產品。這種設計方法的優(yōu)點是芯片可以獲得最優(yōu)的性能,即面積利用率高、速度快、功耗低,而缺點是

24、開發(fā)周期長、費用高,只適合大批量產品開發(fā)。</p><p>  半定制ASIC芯片的版圖設計方法分為門陣列設計法和標準單元設計法,這兩種方法都是約束性的設計方法,其主要目的就是簡化設計,以犧牲芯片性能為代價來縮短開發(fā)時間。</p><p>  可編程邏輯芯片與上述掩模ASIC的不同之處在于:設計人員完成版圖設計后,在實驗室內就可以燒制出自己的芯片,無須IC廠家的參與,大大縮短了開發(fā)周期。&

25、lt;/p><p>  可編程邏輯器件自70年代以來,經歷了PAL、GAL、CPLD、FPGA幾個發(fā)展階段,其中CPLD/FPGA屬高密度可編程邏輯器件,目前集成度已高達200萬門/片,它將掩模ASIC集成度高的優(yōu)點和可編程邏輯器件設計生產方便的特點結合在一起,特別適合于樣品研制或小批量產品開發(fā),使產品能以最快的速度上市,而當市場擴大時,它可以很容易地轉由掩模ASIC實現,因此開發(fā)風險也大為降低。</p>

26、<p>  上述ASIC芯片,尤其是CPLD/FPGA器件,已成為現代高層次電子設計方法的實現載體。</p><p><b>  c) 硬件描述語言</b></p><p>  硬件描述語言(HDL)是一種用于設計硬件電子系統(tǒng)的計算機語言,它用軟件編程的方式來描述電子系統(tǒng)的邏輯功能、電路結構和連接形式,與傳統(tǒng)的門級描述方式相比,它更適合大規(guī)模系統(tǒng)的設計。

27、例如一個32位的加法器,利用圖形輸入軟件需要輸入500至1000個門,而利用VHDL語言只需要書寫一行“A=B+C”即可。而且VHDL語言可讀性強,易于修改和發(fā)現錯誤。早期的硬件描述語言,如ABEL、HDL、AHDL,由不同的EDA廠商開發(fā),互不兼容,而且不支持多層次設計,層次間翻譯工作要由人工完成。為了克服以上不足,1985年美國國防部正式推出了高速集成電路硬件描述語言VHDL。1987年IEEE采納VHDL為硬件描述語言標準(IEE

28、ESTD-1076)。</p><p>  d) EDA系統(tǒng)框架結構</p><p>  EDA系統(tǒng)框架結構(Framework)是一套配置和使用EDA軟件包的規(guī)范。目前主要的EDA系統(tǒng)都建立了框架結構,如Cadence公司的DesignFramework和Mentor公司的FalconFramework,而且這些框架結構都遵守國際CFI組織制定的統(tǒng)一技術標準??蚣芙Y構能將來自不同EDA廠

29、商的工具軟件進行優(yōu)化組合,集成在一個易于管理的統(tǒng)一的環(huán)境之下,而且還支持任務之間、設計師之間以及整個產品開發(fā)過程中的信息傳輸與共享,是并行工程和自頂向下設計方法的實現基礎。</p><p>  2.2.2 EDA設計的基本方法</p><p>  EDA技術的每一次進步,都引起了設計層次上的一次飛躍。物理級設計主要指IC版圖設計,一般由半導體廠家完成,對電子工程師沒有太大的意義,因此本文

30、重點介紹電路級設計和系統(tǒng)級設計。</p><p><b>  電路級設計</b></p><p>  電子工程師接受系統(tǒng)設計任務后,首先確定設計方案,并選擇能實現該方案的合適元器件,然后根據具體的元器件設計電路原理圖。接著進行第一次仿真,其中包括數字電路的邏輯模擬、故障分析,模擬電路的交直流分析、瞬態(tài)分析。在進行系統(tǒng)仿真時,必須要有元件模型庫的支持,計算機上模擬的輸入

31、輸出波形代替了實際電路調試中的信號源和示波器。這一次仿真主要是檢驗設計方案在功能方面的正確性。</p><p>  仿真通過后,根據原理圖產生的電氣連接網絡表進行PCB板的自動布局布線。在制作PCB板之前還可以進行PCB后分析,其中包括熱分析、噪聲及竄擾分析、電磁兼容分析、可靠性分析等,并可將分析后的結果參數反標回電路圖,進行第二次仿真,也稱為后仿真。后仿真主要是檢驗PCB板在實際工作環(huán)境中的可行性。</p

32、><p>  由此可見,電路級的EDA技術使電子工程師在實際的電子系統(tǒng)產生前,就可以全面地了解系統(tǒng)的功能特性和物理特性,從而將開發(fā)風險消滅在設計階段,縮短了開發(fā)時間,降低了開發(fā)成本。</p><p><b>  系統(tǒng)級設計</b></p><p>  進入90年代以來,電子信息類產品的開發(fā)明顯呈現兩個特點:一是產品復雜程度提高;二是產品上市時限緊迫

33、。然而,電路級設計本質上是基于門級描述的單層次設計,設計的所有工作(包括設計輸入、仿真和分析、設計修改等)都是在基本邏輯門這一層次上進行的,顯然這種設計方法不能適應新的形勢,一種高層次的電子設計方法,也即系統(tǒng)級設計方法,應運而生。</p><p>  高層次設計是一種“概念驅動式”設計,設計人員無須通過門級原理圖描述電路,而是針對設計目標進行功能描述。由于擺脫了電路細節(jié)的束縛,設計人員可以把精力集中于創(chuàng)造性的方案

34、與概念的構思上,一旦這些概念構思以高層次描述的形式輸入計算機,EDA系統(tǒng)就能以規(guī)則驅動的方式自動完成整個設計。這樣,新的概念就能迅速有效地成為產品,大大縮短了產品的研制周期。不僅如此,高層次設計只是定義系統(tǒng)的行為特性,可以不涉及實現工藝,因此還可以在廠家綜合庫的支持下,利用綜合優(yōu)化工具將高層次描述轉換成針對某種工藝優(yōu)化的網絡表,使工藝轉化變得輕而易舉。首先,工程師按照“自頂向下”的設計方法進行系統(tǒng)劃分。其次,輸入Verilog HDL代

35、碼,這是高層次設計中最為普遍的輸入方式。此外,還可以采用圖形輸入方式(框圖、狀態(tài)圖等),這種輸入方式具有直觀、容易理解的優(yōu)點。第三步是,將以上的設計輸入編譯成標準的Verilog HDL文件。第四步是進行代碼級的功能仿真,主要是檢驗系統(tǒng)功能設計的正確性。這一步驟適用大型設計,因為對于大型設計來說,在綜合前對源代碼仿真,就可以大大減少設計重復的次數和時間。一般情況下,這一仿真步驟可略去。第五步是</p><p> 

36、 2.3 Verilog HDL的設計流程</p><p>  現代集成電路制造工藝技術的改進,使得在一個芯片上集成數十乃至數百萬個器件成為可能,但我們很難設想僅由一個設計師獨立設計如此大規(guī)模的電路而不出現錯誤。利用層次化、結構化的設計方法,一個完整的硬件設計任務首先由總設計師劃分為若干個可操作的模塊,編制出相應的模型(行為的或結構的),通過仿真加以驗證后,再把這些模塊分配給下一層的設計師,這就允許多個設計者同

37、時設計一個硬件系統(tǒng)中的不同模塊,其中每個設計者負責自己所承擔的部分;而由上一層設計師對其下層設計者完成的設計用行為級上層模塊對其所做的設計進行驗證。圖3.3為自頂向下(TOP-DOWN)的示意圖,以設計樹的形式繪出。</p><p>  自頂向下的設計(即TOP_DOWN設計)是從系統(tǒng)級開始,把系統(tǒng)劃分為基本單元,然后再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接用EDA元件庫中的元件來實

38、現為止。</p><p>  對于設計開發(fā)整機電子產品的單位和個人來說,新產品的開發(fā)總是從系統(tǒng)設計入手,先進行方案的總體論證、功能描述、任務和指標的分配。隨著系統(tǒng)變得復雜和龐大,特別需要在樣機問世之前,對產品的全貌有一定的預見性。目前,EDA技術的發(fā)展使得設計師有可能實現真正的自頂向下的設計。</p><p>  2.4 EDA工具</p><p>  EDA開發(fā)

39、工具是指以計算機硬件和系統(tǒng)軟件為工作平臺,匯集了計算機圖</p><p>  圖2.4 TOP_DOWN設計思想</p><p>  學、拓撲邏輯學、計算數學以及人工智能等多種計算機應用學科的最新成果而開發(fā)出來的用于電子系統(tǒng)自動化設計的應用軟件?,F代數字系統(tǒng)設計技術的發(fā)展主要體現在EDA領域,而EDA技術的關鍵之一就是EDA開發(fā)工具。如果沒有EDA工具的支持,想要完成大規(guī)模、超大規(guī)模集成

40、電路或復雜數字系統(tǒng)的設計是不可想象的。</p><p>  QuartusⅡ是Altera公司推出的最新一代的可編程邏輯器件開發(fā)系統(tǒng)。與原先的MAX+PLUSⅡ相比,它具有更強大的功能,能夠適應更大規(guī)模、更復雜的可編程邏輯器件的開發(fā)。</p><p>  a) 支持多平臺工作。QuartusⅡ既可以工作于“PC+Microsoft Windows操作系統(tǒng)”或“PC+Red Hat Linu

41、x操作系統(tǒng)”上,又可以在多種工作站上運行。</p><p>  b) 提供與器件結構無關的設計環(huán)境。QuartusⅡ開發(fā)系統(tǒng)的核心—編譯器(compiler)不僅支持Altera公司原來的MAX和FLEX等系列的可編程邏輯器件,而且還支持APEX、Excalibur、Mercury、Stratix、Cyclone等新的器件系列,提供了一個真正與器件結構無關的可編程邏輯開發(fā)環(huán)境。設計者無須精通器件內部復雜的結構,只

42、要采用常見的設計輸入方法(如原理圖輸入、HDL輸入等)完成對設計的描述,QuartusⅡ就能自動地進行邏輯綜合和適配,將用戶輸入的設計文件編譯成可編程邏輯器件最終需要的編程文件格式。</p><p>  c) 完全集成化。QuartusⅡ的設計輸入、編譯處理、仿真和定時分析以及編程下載等工具都集成在統(tǒng)一的開發(fā)環(huán)境下,提高了設計的效率,縮短了開發(fā)周期。</p><p>  d) 具有開放的界

43、面。通過EDIF網表文件、參數畫模塊庫(LPM)、VHDL、Verilog HDL等形式,QuartusⅡ可以與Cadence、MentorGraphic、OrCAD、Synopsys、Synplicity及Viewlogic等許多公司提供的多種EDA工具接口。QuartusⅡ的Nativelink特性使其與其他符合工業(yè)標準的EDA工具之間的聯(lián)系更加緊密,用戶可以直接在QuartusⅡ開發(fā)環(huán)境中調用其他的EDA工具來完成設計輸入、綜合、

44、仿真和定時分析等工作。</p><p>  e) 支持硬件描述語言。QuartusⅡ支持三種HDL輸入、包括被列入IEEE標準的VHDL(1987版和1993版)和Verilog HDL(1995版和2001版)以及Altera公司自己開發(fā)的AHDL。</p><p>  f) 具有豐富的設計庫。QuartusⅡ提供豐富的庫單元供設計者調用,其中包括一些基本的邏輯單元(如邏輯門、觸發(fā)器等)

45、、74系列的器件和多種參數化的邏輯宏功能(megafunction)模塊(如乘法器、FIFO、RAM等)。調用庫單元進行設計,可以大大減輕設計人員的工作量,縮短設計周期。</p><p>  g) 提供強大的在線幫助。QuartusⅡ軟件不僅帶有詳細的使用說明,而且還加強了網絡功能,使用戶從軟件內部就可以直接通過Internet獲得Altera公司的技術支持。</p><p>  2.5

46、 基于FPGA的設計原理</p><p>  2.5.1 FPGA設計的特點</p><p>  現場可編程門陣列(Field Programmable Gate Array)簡稱FPGA,是大規(guī)模可編程器件,它具有速度高、規(guī)模大、可編程以及有強大的EDA軟件設計平臺的支持等特性,而信號發(fā)生器的實現依賴于高速、高性能的數字器件,所以選用FPGA實現信號發(fā)生器是十分適合的。</p&g

47、t;<p>  盡管FPGA、CPLD和其它類型PLD的結構各有其特點和長處,但概括起來,它們是由三大部分組成的:</p><p>  a) 一個二維的邏輯塊陣列,構成了PLD器件的邏輯組成核心。</p><p>  b) 輸入/輸出塊。</p><p>  c) 連接邏輯塊的互連資源。連線資源:由各種長度的連線線段組成,其中也有一些可編程的連接開關,

48、它們用于邏輯塊之間、邏輯塊與輸入/輸出塊之間的連接。</p><p>  對用戶而言,CPLD與FPGA的內部結構稍有不同,但用法一樣,0所以多數情況下,不加以區(qū)分。</p><p>  FPGA/CPLD芯片都是特殊的ASIC芯片,它們除了具有ASIC的特點之外,還具有以下幾個優(yōu)點:</p><p>  a) 隨著VLSI(Very Large Scale IC,

49、超大規(guī)模集成電路)工藝的不斷提高單一芯片內部可以容納上百萬個晶體管, FPGA/CPLD芯片的規(guī)模也越來越大,其單片邏輯門數已達到上百萬門,它所能實現的功能也越來越強,同時也可以實現系統(tǒng)集成。</p><p>  b) FPGA/CPLD芯片在出廠之前都做過百分之百的測試,不需要設計人員承擔投片風險和費用,設計人員只需在自己的實驗室里就可以通過相關的軟硬件環(huán)境來完成芯片的最終功能設計。所以, FPGA/CPLD的

50、資金投入小,節(jié)省了許多潛在的花費。</p><p>  c) 用戶可以反復地編程、擦除、使用或者在外圍電路不動的情況下用不同軟件就可實現不同的功能。所以,用FPGA/PLD 試制樣片,能以最快的速度占領市場。 FPGA/CPLD軟件包中有各種輸入工具和仿真工具,及版圖設計工具和編程器等全線產品,電路設計人員在很短的時間內就可完成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯片的制作。 當電路有少量改動時,更能顯示出FP

51、GA/CPLD的優(yōu)勢。電路設計人員使用FPGA/CPLD進行電路設計時,不需要具備專門的IC(集成電路)深層次的知識, FPGA/CPLD軟件易學易用,可以使設計人員更能集中精力進行電路設計,快速將產品推向市場。 </p><p>  本設計中用的是StratixⅡ系列器件,現在將對其做簡單的介紹。</p><p>  StratixⅡ系列是Altera應用非常廣泛的產品。這些器件具有比較

52、高的集成度及豐富的寄存器資源,采用了快速、可預測延時的連續(xù)式布線結構,是一種將CPLD和FPGA的優(yōu)點結合于一體的器件,具有較高的性價比。</p><p>  StratixⅡ系列器件的集成度從幾萬門到幾十萬門,具有業(yè)界首創(chuàng)的自適應FPGA體系。StratixⅡ系列器件具有以下一些特點:</p><p>  a) 高密度。10000到250000典型門。</p><p&

53、gt;  b) 功能強大的I/O引腳。每個引腳都是獨立的三態(tài)門結構,具有可編程的速率控制。</p><p>  c) 嵌入式陣列塊(EAB)。每個EAB提供2K比特位,可用來作存儲器使用或者用來實現一般的邏輯功能。</p><p>  d) 邏輯單元采用查找表(LUT)結構。</p><p>  e) 具有快速通道(Fast Track)連線,速度快并可預測延時。&

54、lt;/p><p>  f) 具有實現快速加法器和計數器的專用進位鏈和實現高速、多輸入邏輯函數的專用級連鏈。</p><p>  為了滿足本系統(tǒng)的需要,本設計選用Altera公司不久前發(fā)布的嶄新體系的大容量StratixⅡ系列FPGA。本設計用了StratixⅡ器件系列的第一個型號是EP2S60器件。StratixⅡFPGA是具有業(yè)界首創(chuàng)的自適應FPGA體系,在單個器件中具有雙倍多的邏輯容量,

55、比第一代Stratix器件速度快50%。StratixⅡFPGA采用新的邏輯結構,它由“自適應邏輯模塊”(ALM)組成,允許相鄰功能之間共享邏輯。每個ALM還有兩個可編程寄存器、兩個加法器、一個進位鏈、一個加法樹鏈和一個寄存器鏈,這些都能更高效地利用器件的容量。StratixⅡ期間的邏輯是Stratix FPGA的兩倍多,將近180000個等效邏輯單元(LE)。</p><p>  2.5.2 FPGA設計的原

56、理</p><p><b>  a) 系統(tǒng)設計</b></p><p>  1) 規(guī)格設計。規(guī)格設計是系統(tǒng)級設計的第一步,即設計者通過分析用戶的要求,明確系統(tǒng)的功能和應達到的性能指標,并以系統(tǒng)說明書的形式作為用戶與設計者之間的協(xié)議和進一步設計的依據。在系統(tǒng)說明書中,可以用多種形式對系統(tǒng)的功能和指標進行說明,如文字、圖形、符號、表達式以及類似于程序的形式語言等,應力求簡

57、單易懂、無二義性,并反復檢查,盡早發(fā)現并糾正潛在的錯誤。 </p><p>  2) 確定系統(tǒng)的實現方案并進行系統(tǒng)功能劃分和算法設計。這部分工作的結果通常是系統(tǒng)結構框圖、算法狀態(tài)圖(ASM圖)和必要的文字說明。</p><p>  以上這些富有創(chuàng)造性的工作和傳統(tǒng)設計方法中的基本相同,主要依賴于設計師的經驗和創(chuàng)造力,仍然需要由設計者自己完成,只不過在基于FPGA的現代數字系統(tǒng)設計方法中,

58、這些工作不再受市場上標準邏輯器件的局限。</p><p>  3) 高層次描述。一般是采用VHDL、Verilog HDL等高級硬件描述語言在算法級對系統(tǒng)進行行為描述,有時也可以采用比較直觀的圖形輸入方式(方框圖、狀態(tài)圖等)。</p><p>  4) 算法級功能仿真。主要是檢驗系統(tǒng)算法設計的正確性。</p><p>  b) FPGA芯片設計</p>

59、<p>  1) RTL級HDL描述。目前高層次的綜合工具還不是很完善,有些行為描述語句還不能被綜合,所以要想利用綜合工具自動地將設計的HDL描述轉化成具體的硬件電路必須針對具體的綜合工具,將一些高層次的描述轉化成可綜合的RTL級描述。</p><p>  2) RTL級功能仿真。檢查RTL級HDL所描述的系統(tǒng)功能是否正確,一般這一步可以省略。</p><p>  3) 邏輯綜

60、合。利用綜合工具將RTL級HDL源代碼轉化成門級網表,這是將抽象的描述轉化為具體硬件電路的關鍵步驟。</p><p>  4) 門級功能仿真。從系統(tǒng)邏輯功能方面檢查系統(tǒng)設計的正確性。</p><p>  5) 適配。利用適配器將綜合后的門級網表針對某一具體的目標器件進行邏輯映射操作,包括底層器件配置、邏輯劃分、布局布線和延時信息的提取等。適配完成后將產生多項結果,包括時延信息的仿真模型、器

61、件編程文件。</p><p>  6) 時序仿真和定時分析。因為適配后的仿真模型中含有器件的實際硬件特性,如時延特性,所以時序仿真和定時分析的結果能比較精確地預期未來芯片的實性能。</p><p>  7) FPGA編程。將適配器產生的器件編程文件通過編程器件或通過電纜載入到目標芯片中,這樣空白的可編程邏輯器件就成了具有特定功能的FPGA芯片。</p><p>  

62、3 信號發(fā)生器的硬件電路設計</p><p>  3.1 實現三種波形(正弦波、方波和鋸齒波)的算法</p><p>  3.1.1 實現正弦波的算法</p><p>  理想的正弦波信號可表示成</p><p><b>  (3.1)</b></p><p>  說明在振幅和初相確定后,頻

63、率由相位唯一確定  </p><p><b>  (3.2)</b></p><p>  信號發(fā)生器利用式(3.2)中與時間成線性關系的原理進行頻率合成的,在時間間隔內,正弦信號的相位增量與正弦信號的頻率構成一一對應關系 </p><p><b>  (3.3)</b></p><p>  

64、為了說明信號發(fā)生器的相位量化的工作原理,可將正弦波一個完整周期內相位的變化用相位圓表示,其相位與幅度一一對應,即相位圓上的每一點均對應輸出一個特定的幅度值?!?lt;/p><p>  一個位的相位累加器對應相位圓上個相位點,其最低相位分辨率為。對應的也有個幅度值,該幅度值存儲于波形存儲器中,在頻率控制字的作用下,相位累加器給出不同的相位碼(用其高位地址碼)對波形存儲器尋址,完成相位-幅度的變換,經數模轉換器變成階梯正

65、弦波信號,再通過低通濾波器平滑,便得到模擬正弦波輸出。在圖4.1所示方框圖中的時鐘電路是由一個高穩(wěn)定的晶體振蕩器產生的,提供信號發(fā)生器中各部件同步工作。頻率控制字送到位相位累加器中的加法器數據輸入端,相位累加器在時鐘頻率的作用下,不斷對頻率控制數據進行線性相位累加,當相位累加器累積到滿量時就會產生一次溢出,累加器的溢出頻率就是信號發(fā)生器輸出信號的頻率。由此可看出,相位累加器實際上是一個模數2為基準、受頻率數據控制字而改變的計數器,它累積

66、了每一個參考周期內合成信號的相位變化,這些相位值的高位對ROM尋址。在ROM中寫入了個正弦數據,每個數據為位。不同的頻率控制字 導致相位累加器的不同相位增量,這樣從ROM輸出的正弦波形的頻率不同,ROM輸出的位二進制數送到DAC進行D/A變換,得到量化的階梯形正弦波輸出,最后經低通濾波器濾除高頻分量,平滑后得到模擬的正弦波</p><p>  考慮到正弦函數的對稱性:在范圍內,正弦函數已為奇對稱,在內,已為軸對稱

67、。因此,可以在正弦函數表中只存儲角度在</p><p>  的函數值,并且這些值都是正值。這樣,通過一個正弦表的前1/4周期就可以經過適當變換得到正弦的整個周期碼表,節(jié)省了將近3/4的資源,非??捎^。</p><p>  3.1.2 實現方波的算法</p><p>  方波是這三種波形中最容易實現的波形。它無需像實現正弦波那樣需要制表,可以用直接賦值的方法實現,而

68、且修改的方法也很簡單,只要判斷相位累加器中數據的大?。寒敂祿∮?000 0000 0000 0000(二進制數)時,使輸出為正值;當數據大于1000 0000 0000 0000(二進制數)時,使輸出為零。當需要調節(jié)方波的幅度時,只要改動輸出的正數值即可。</p><p>  3.1.3 鋸齒波的實現算法</p><p>  在實現鋸齒波時,也可以采用查表的方法,這樣就需要制表,因此需

69、要占用FPGA的存儲器資源。在這里,本設計用另一種方法實現鋸齒波:將相位累加器的低幾位(根據需要)直接送DAC輸入,就可產生鋸齒波。</p><p>  3.2 系統(tǒng)設計與實現</p><p>  3.2.1 參數選取</p><p>  由已知條件=16,=8,= 66.54MHz,存儲器容量2K可知:</p><p>  a) 存儲器

70、可分為64×8 bit使用。</p><p>  b) 頻率步進,此時。</p><p>  c) 最大頻率=33.27MHz,然而,此時每周期只采樣2點,難以保證輸出精度。為了保持輸出精度,規(guī)定最低每周期采樣4點,此時==4096,=16.635MHz。但本設計只要求輸出頻率范圍為1KHz~1MHz。</p><p><b>  d) 相位步進

71、。</b></p><p>  綜上所述,正弦波形存儲器存儲64個7位采樣點:頻率控制,頻率步進(最小輸出頻率)1KHz,最大輸出頻率1MHz。</p><p>  3.2.2 系統(tǒng)設計</p><p><b>  a) 波形存儲</b></p><p>  方波和鋸齒波由于直接實現,因此不需要存儲其波形值

72、。在本設計中,只存儲正弦波的64個采樣點即可。</p><p><b>  b) 按鍵消抖實現</b></p><p>  在按鍵過程中,由于機械顫抖和系統(tǒng)處理速度極快,如果沒有消抖過程,系統(tǒng)會把一次按鍵當成多次來處理,造成和預料的結果不一致。在本設計中,用軟件來實現按鍵消抖。其原理是:機械顫抖過程一般為10ms到50ms,用軟件來延遲該時間,然后再判斷輸入。如果此時

73、仍為高或低,則輸入該值。</p><p>  c) 掃頻的實現方法</p><p>  在本設計中,要求信號發(fā)生器具有可掃頻輸出的功能。所謂掃頻,是指信號能連續(xù)從小到大輸出(在該系統(tǒng)能輸出的頻率范圍內)。實現的方法很簡單,只要在每次相位累加器產生溢出時,讓頻率控制字寄存器加1即可。</p><p><b>  d) 動態(tài)顯示</b></p

74、><p>  為了能直觀的看到信號發(fā)生器輸出信號的頻率,本設計用數碼管來顯示其頻率。只要知道頻率控制字寄存器的值,然后將二進制轉換成BCD碼,再轉換成可用來顯示的七段碼,送數碼管顯示即可。為了減少輸出端口,可以用動態(tài)掃描的方法。</p><p><b>  e) 系統(tǒng)設計</b></p><p>  由波形選擇方式,設計圖3.1所示系統(tǒng)模型。<

75、;/p><p>  3.2.3 系統(tǒng)實現</p><p>  圖3.1 信號發(fā)生器系統(tǒng)模型</p><p>  a) 本次實現系統(tǒng)的環(huán)境如下:</p><p>  1) 硬件:Acer TraveIMate (Celeron IV 1.7GHz+256MDDR2100+20GHD)。</p><p>  2) 系統(tǒng):W

76、indowsXP (SP1+KB823980)英文版+中文語言包。</p><p>  3) 軟件:Altera公司的QUARTUSⅡ 6.0。</p><p><b>  b) 各端口說明</b></p><p>  1) 頻率控制字端(FCW):14位,最大16384輸出;</p><p>  2) 頻率控制字選通端

77、(WS):1位,高電平時,將頻率控制字寫入頻率控制字寄存器。</p><p>  3) 掃頻輸出控制端(SC):1位,高電平時,使信號掃頻輸出;</p><p>  4) 波形控制端(FB_B、ZXB_B和JCB_B):都是1位,ZXB_B為高時輸出正弦波;FB_B為高時輸出方波;JCB_B為高時輸出鋸齒波;</p><p>  5) 復位端(reset):1位,高

78、電平是系統(tǒng)復位;</p><p>  6) 時鐘輸入端(sysclk):1位,為參考頻率的輸入端;</p><p>  7) 數據輸出端(DACOUT):8位,接DAC,以輸出模擬波形;</p><p>  8) 顯示輸出端(led_sig):7位,接共陰極數碼管可以顯示輸出頻率;</p><p>  9) 顯示輸出選擇端(led_sel):

79、4位,和led_sig共同構成動態(tài)掃描顯示。</p><p>  c) 主要功能模塊說明</p><p><b>  1) 相位累加器</b></p><p>  相位累加器是該信號發(fā)生器的核心部分。相位累加器的設計目前一般都采用比較流行的電子設計自動化技術,它的應用使電子系統(tǒng)設計具有了更大的靈活性,用戶可以根據自己的需要,利用硬件描述語言設計

80、出符合自己要求的電路,但如何在有限的芯片資源下提高相位累加其的速度也就成為設計的關鍵。本設計利用流水線技術加法器與寄存器結合在一起進行相位累加器設計的方案。由于StratixⅡ系列提供的IP Core具有功能齊全、安全可靠、使用方便等特點,故累加器模塊選取IP Core中的Accumulator單元。</p><p><b>  2) 加法器</b></p><p>

81、  本設計共用到1個加法器,通過IP Core中的Adder & Subtracter單元實現。</p><p><b>  3) 波形選擇器</b></p><p>  本設計用到一個波形選擇器,來實現波形的選擇。通過IP Core中的MUX單元實現。</p><p><b>  4) 波形存儲器</b><

82、/p><p>  圖3.2 信號發(fā)生器原理圖</p><p>  波形存儲器用來存儲波形數據。通過IP Core中的Single Port Block Memory實現。最后完成的原理圖如圖3.2所示。</p><p>  4 信號發(fā)生器的軟件設計</p><p>  4.1 程序的流程圖</p><p>  為了能

83、更方便、簡單地編程,本設計先畫出程序的數據流向,即流程圖,然后再根據流程圖來編寫程序。</p><p>  首先,根據要求,如果系統(tǒng)復位信號(reset)為高電平時,輸出為零,數碼管顯示為零。如果reset為低電平,系統(tǒng)可以正常工作,此時,將輸入信號進行消抖,判斷WS是否為高電平,若不是,繼續(xù)判斷;若是,則將頻率控制字(FCW)送頻率控制字寄存器。同時,計算輸出頻率模塊開始計算輸出頻率,并將數據送數碼管顯示。其次

84、,相位累加器以頻率控制字為步長,不斷累加。根據波形輸入字來判斷輸出那種波形:當FB_B有效時,為方波輸出,在相位寄存器數據的前半值時,輸出一個正值,在相位寄存器數據的后半值時,輸出一個負數。經D/A轉換,即可得到方波;當JCB_B有效時,把相位累加器的低幾位送D/A轉換器,就可以得到鋸齒波;當ZXB_B有效時,以相位累加器的輸出數據為地址,對ROM尋址,把ROM輸出的數據經D/A轉換,就可以得到正弦波。最后,還要判斷相位累加器有沒有溢出

85、,如果有溢出,并且掃頻控制信號(SC)為高電平,應該使頻率控制字寄存器加1,即實現掃頻輸出??偵纤?,可以得到如圖4.1所示的流程圖。</p><p>  4.2 各個功能模塊的Verilog程序實現</p><p>  4.2.1 消抖模塊</p><p>  在硬件電路設計部分,已經說明了消抖模塊的作用。在這里,主要說明如何用Verilog來編程實現。消抖電

86、路一般有兩種設計方法。一種是利用軟件消抖,如上一章所述;另一種方法是設計RS觸發(fā)器來消抖,但它不能有效地防止干擾,所以,一般不用。以下是基于第一種方法實現消抖的Verilog程序。為了突出消抖,在這里省略了端口定義。</p><p>  always @(WS or reset or FB_B or JCB_B or ZXB_B)//WS、reset、FB_B、JCB_B、ZXB_B);//為輸入信號</p

87、><p><b>  begin </b></p><p>  delay(count_times);//任務調用</p><p>  begin //經過消抖之后的輸出</p><p>  WS_delay=WS?1'b1:1'b0;</p>&

88、lt;p>  reset_delay=reset?1'b1:1'b0;</p><p>  FB_B_delay=FB_B?1'b1:1'b0;</p><p>  JCB_B_delay=JCB_B?1'b1:1'b0;</p><p>  ZXB_B_delay=ZXB_B?1'b1:1'b0

89、;</p><p><b>  end</b></p><p><b>  end</b></p><p>  task delay;//該任務用來對輸入信號消抖</p><p>  input[15:0] times;</p><p><b>  begin<

90、;/b></p><p>  repeat(times)@(posedge sysclk);//該語句用來延時</p><p><b>  end</b></p><p><b>  endtask</b></p><p>  4.2.2 相位累加器模塊</p><p&g

91、t;  在相位累加器中,實現掃頻輸出是一個關鍵問題。在這里,本設計只說明如何用Verilog來編程實現掃頻輸出。實現的程序為:</p><p>  always@(FCW or reset_delay or WS_delay or Cout or SC)</p><p><b>  begin</b></p><p>  if (reset_

92、delay)</p><p>  FCW_FF=14'b0;//FCW_FF為頻率控制字寄存器</p><p>  else if(WS_delay)</p><p>  FCW_FF=FCW;</p><p>  else if(SC)</p><p>  @(posedge Cout)//Cout為相位累加

93、器中加法器的進位</p><p>  FCW_FF=FCW_FF+14'b1;// 輸出,在它的上升沿使頻</p><p>  4.2.3 波形選擇器模塊</p><p>  在該模塊中,首先要實現波形控制字的寄存,即要設計一個寄存器。方波和鋸齒波的程序實現非常簡單,在這里重點說明正弦波是如何編程實現的。在硬件電路設計部分提到,本設計在ROM中只存儲了1/

94、4個周期的正弦波幅值。以下程序說明了如何用程序來實現一個完整的正弦波波形。</p><p>  always @(posedge sysclk or posedge reset_delay)//正弦波輸出實現</p><p><b>  begin </b></p><p>  if(reset_delay)</p><p&

95、gt;<b>  begin</b></p><p>  phaseaddr<=6'b0;</p><p>  M16B_Accout_msb1_ff<=1'b0;</p><p>  M16B_Accout_msb2_ff<=1'b0;</p><p>  qwavesin_f

96、f<=7'h00;</p><p>  dac_ff<=8'h00;</p><p><b>  end</b></p><p>  else begin</p><p>  case(WCW_ff)//synopsys full_case</p><p>  2

97、9;b00: dac_ff<=7'b0;//零輸出</p><p>  2'b01: dac_ff<={1'b0,1'b0,M16B_Accout[15:10]};//鋸齒波</p><p>  2'b10: begin//方波輸出 //輸出</p><p>  if(!

98、M16B_Accout[15]) </p><p>  dac_ff<=data;</p><p><b>  else</b></p><p>  dac_ff<=-data;</p><p><b>  end</b></p><p>  2'b11:

99、 begin//正弦波輸出</p><p>  M16B_Accout_msb1_ff<=M16B_Accout[15];</p><p>  M16B_Accout_msb2_ff<=M16B_Accout_msb1_ff;</p><p>  qwavesin_ff<=qwavesin;</p><p>  if(M16

100、B_Accout[14])</p><p>  phaseaddr<=~M16B_Accout[13:8];</p><p><b>  else</b></p><p><b>  begin</b></p><p>  phaseaddr<=M16B_Accout[13:8];<

101、;/p><p>  dac_ff[7]<=~M16B_Accout_msb2_ff;</p><p><b>  end</b></p><p>  if(M16B_Accout_msb2_ff)</p><p>  dac_ff[6:0]<=~qwavesin_ff;</p><p>&

102、lt;b>  else</b></p><p>  dac_ff[6:0]<=qwavesin_ff;</p><p><b>  end</b></p><p><b>  endcase</b></p><p><b>  end</b></p

103、><p>  4.2.4 顯示模塊</p><p>  硬件設計部分已經指出,為減少FPGA的端口占用,在顯示輸出頻率時可以用動態(tài)掃描的方法實現。以下程序說明了如何實現動態(tài)掃描。</p><p>  if(reset_delay)</p><p>  led_scan_cnt <= 4'd15;</p><p&

104、gt;  else if(led_scan_cnt == 4'd8)</p><p>  led_scan_cnt <= 4'd0;</p><p><b>  else</b></p><p>  led_scan_cnt <= led_scan_cnt + 1'b1; </p><

105、;p><b>  end</b></p><p>  assignled_sel[0] = ((led_scan_cnt == 4'd0) || (led_scan_cnt == 4'd1))? 1'b1 : 1'b0;</p><p>  assignled_sel[1] = ((led_scan_cnt == 4

106、9;d2) || (led_scan_cnt == 4'd3))? 1'b1 : 1'b0;</p><p>  assignled_sel[2] = ((led_scan_cnt == 4'd4) || (led_scan_cnt == 4'd5))? 1'b1 : 1'b0;</p><p>  assignled_s

107、el[3] = ((led_scan_cnt == 4'd6) || (led_scan_cnt == 4'd7))? 1'b1 : 1'b0;</p><p>  always @(*) begin//向顯示的數碼管送數據</p><p>  if (led_sel[3] == 1'b1)led_sig <= led_value_

108、3 _sig;</p><p>  else if (led_sel[2] == 1'b1)led_sig <= led_value_2_sig; </p><p>  else if (led_sel[1] == 1'b1)led_sig <= led_value_1_sig; </p><p>  else if

109、 (led_sel[0] == 1'b1)led_sig <= led_value_0_sig; </p><p>  elseled_sig <= 7'b1111110;</p><p>  以上只是實現各個功能模塊的關鍵代碼,完整的程序見附錄A。</p><p>  5 系統(tǒng)測試及結果分析</p>

110、<p><b>  5.1 系統(tǒng)測試</b></p><p>  本系統(tǒng)用QUARTUSⅡ6.0軟件來方真。當掃頻輸出控制信號為0,即SC=1,運行結果如下圖5.1~5.3所示。</p><p>  當FB_B為1時,表示輸出為方波,設頻率控制字為768時,時序仿真波形如圖5.1所示。</p><p>  當JCB_B為1時,表

111、示輸出為鋸齒波,設頻率控制字為768時,時序仿真波形如下圖5.2所示。</p><p>  當ZXB_B為1時,表示輸出為正弦波,設頻率控制字為768時,時序仿真波形如下圖5.3所示。</p><p>  從圖5.1~5.3可以看出,控制字為768時,頻率輸出顯示(led_sig)在顯示控</p><p>  圖5.1 方波時序分析結果</p>&l

112、t;p>  制(led_sel)從低位到高位分別輸出1時,led_sig依次輸出1111 1111(二進制數,對應數碼管的8)、1011 1111(二進制數,對應數碼管的6)、1110 0000(二進制數,對應數碼管的7)和1111 1110(二進制數,對應數碼管的0)。數據輸出(DACOUT)分別為方波、</p><p>  圖5.2 鋸齒波時序分析結</p><p>  圖5.

113、3 正弦波時序分析結果</p><p>  鋸齒波和正弦波的幅值數字量,送數模轉換器(DAC),即可輸出方波、鋸齒波和正弦波。當掃頻輸出控制信號為高電平,即SC=1,運行結果如圖5.4(a)和5.4(b)所示(這里僅以</p><p>  圖5.4(a) 頻率沒有變化以前的仿真波形</p><p>  圖5.4(b) 輸出頻率變化以后的仿真波形</p&g

溫馨提示

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

評論

0/150

提交評論