版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 1 引言2</b></p><p> 2 信號(hào)發(fā)生器設(shè)計(jì)的總體方案3</p><p> 2.1 信號(hào)發(fā)生器的原理3</p><p> 2.2 EDA技術(shù)5</p><p> 2.3
2、 Verilog HDL的設(shè)計(jì)流程9</p><p> 2.4 EDA工具9</p><p> 2.5 基于FPGA的設(shè)計(jì)原理11</p><p> 3 信號(hào)發(fā)生器的硬件電路設(shè)計(jì)15</p><p> 3.1 實(shí)現(xiàn)三種波形(正弦波、方波和鋸齒波)的算法15</p><p> 3.2 系統(tǒng)
3、設(shè)計(jì)與實(shí)現(xiàn)16</p><p> 4 信號(hào)發(fā)生器的軟件設(shè)計(jì)20</p><p> 4.1 程序的流程圖20</p><p> 4.2 各個(gè)功能模塊的Verilog程序?qū)崿F(xiàn)20</p><p> 5 系統(tǒng)測(cè)試及結(jié)果分析25</p><p> 5.1 系統(tǒng)測(cè)試25</p>&l
4、t;p> 5.2 信號(hào)發(fā)生器的輸出信號(hào)頻譜特性分析28</p><p> 5.3 設(shè)計(jì)中的幾個(gè)難點(diǎn)及解決辦法32</p><p> 5.4 設(shè)計(jì)中的不足之處及改進(jìn)辦法33</p><p><b> 結(jié) 論34</b></p><p><b> 致 謝35</b>&
5、lt;/p><p><b> 參考文獻(xiàn)36</b></p><p><b> 附件A36</b></p><p><b> 1 引言</b></p><p> 信號(hào)發(fā)生器作為一種基本電子設(shè)備,無論是在教學(xué)、科研還是在部隊(duì)技術(shù)保障中,都有著廣泛的使用。信號(hào)發(fā)生器作為一種
6、通用電子測(cè)試儀器是軍隊(duì)進(jìn)行科技戰(zhàn)爭(zhēng)不可缺少的一種測(cè)試儀器。因此,從理論到工程對(duì)信號(hào)的發(fā)生進(jìn)行深入研究,不論是從教學(xué)科研角度,還是從部隊(duì)技術(shù)保障服務(wù)角度出發(fā)都有著積極的意義。隨著科學(xué)技術(shù)的發(fā)展和測(cè)量技術(shù)的進(jìn)步,對(duì)信號(hào)發(fā)生器的要求越來越高,普通的信號(hào)發(fā)生器已無法滿足目標(biāo)高、頻率切換速度快、切換相位連續(xù)、輸出信號(hào)噪聲低、可編程、全數(shù)字化易于集成、體積小、重量輕等優(yōu)點(diǎn)。</p><p> 1971年,美國(guó)學(xué)者J.Tie
7、rney等人撰寫的“A Digital Frequency Synthesizer”一文首次提出了以全數(shù)字技術(shù),從相位概念出發(fā)直接合成所需波形的一種新合成原理。限于當(dāng)時(shí)的技術(shù)和器件產(chǎn)能,它的性能指標(biāo)尚不能與已有的技術(shù)盯比,故未受到重視。近幾年間,隨著微電子技術(shù)的迅速發(fā)展,直接數(shù)字頻率合成器(Direct Digital Frequency Synthesis簡(jiǎn)稱DDS或DDFS)得到了飛速的發(fā)展,它以有別于其它頻率合成方法的優(yōu)越性能和特
8、點(diǎn)成為現(xiàn)代頻率合成技術(shù)中的佼佼者。具體體現(xiàn)在相對(duì)帶寬、頻率轉(zhuǎn)換時(shí)間短、頻率分辨率高、輸出相位連續(xù)、可產(chǎn)生寬帶正交信號(hào)及其他多種調(diào)制信號(hào)、可編程和全數(shù)字化、控制靈活方便等方面,并具有極高的性價(jià)比。</p><p> 根據(jù)DDS的特點(diǎn),將其應(yīng)用于信號(hào)發(fā)生器,可以大大提高信號(hào)發(fā)生器的分辨率,而且可以有效的降低成本、縮小體積。</p><p> 本設(shè)計(jì)用硬件描述語言Verilog來編程,用Al
9、tera公司的開發(fā)平臺(tái)QUARTUSⅡ6.0來仿真,最后下載到StratixⅡ系列的EP2S60器件中進(jìn)行驗(yàn)證。</p><p> 本設(shè)計(jì)第二部分說明了信號(hào)發(fā)生器的功能框圖,并進(jìn)行了簡(jiǎn)要的說明。另外,本設(shè)計(jì)還說明了EDA設(shè)計(jì)的基本方法、Verilog HDL設(shè)計(jì)的流程和EDA工具等。在硬件電路設(shè)計(jì)部分,主要說明了信號(hào)發(fā)生器的原理圖、各個(gè)功能模塊的硬件實(shí)現(xiàn)方法。第四部分主要說明了各功能模塊的Verilog 實(shí)現(xiàn),
10、并給出了關(guān)鍵的功能模塊的代碼。最后,對(duì)本設(shè)計(jì)進(jìn)行了系統(tǒng)測(cè)試和結(jié)果分析,并對(duì)輸出波形進(jìn)行了誤差分析。</p><p> 2 信號(hào)發(fā)生器設(shè)計(jì)的總體方案</p><p> 2.1 信號(hào)發(fā)生器的原理</p><p> 本設(shè)計(jì)是基于直接數(shù)字頻率合成器(Direct Digital Synthesizer)原理的信號(hào)發(fā)生器。它是從相位概念出發(fā)直接合成所需波形的一種頻率
11、合成技術(shù)。一個(gè)信號(hào)發(fā)生器由相位累加器、加法器、波形選擇器、波形存儲(chǔ)ROM、D/A轉(zhuǎn)換器和低通濾波器(LPF)構(gòu)成。信號(hào)發(fā)生器的原理框圖如圖2.1所示?!?lt;/p><p> 圖2.1 信號(hào)發(fā)生器的原理圖</p><p> 其中為頻率控制字、為相位控制字、為波形控制字、為參考時(shí)鐘頻率,為相位累加器的字長(zhǎng),為ROM數(shù)據(jù)位及D/A轉(zhuǎn)換器的字長(zhǎng)。相位累加器在時(shí)鐘的控制下以步長(zhǎng)作累加,輸出的位二
12、進(jìn)制碼與相位控制字、波形控制字相加后作為波形ROM的地址,對(duì)波形ROM進(jìn)行尋址,波形ROM輸出位的隔度碼經(jīng)D/A轉(zhuǎn)換器變成階梯波,再經(jīng)過低通濾波器平滑后就可以得到合成的信號(hào)波形。合成的信號(hào)波形形狀取決于波形ROM中存放的幅度碼,因此用信號(hào)發(fā)生器可以產(chǎn)生任意波形。 </p><p> 2.1.1 頻率預(yù)置與調(diào)節(jié)電路</p><p> 被稱為頻率控制字,也叫相位增量。信號(hào)發(fā)生器的輸出頻
13、率為:,為時(shí)鐘頻率。當(dāng)時(shí),信號(hào)發(fā)生器的輸出最低頻率(也即頻率分辨率)為而信號(hào)發(fā)生器的最大輸出頻率由Nyquist采樣定理決定,即,也就是說的最大值為。因此,只要足夠大,信號(hào)發(fā)生器可以得到很細(xì)的頻率間隔。要改變信號(hào)發(fā)生器的輸出頻率,只要改變頻率控制字即可。</p><p> 2.1.2 累加器 <
14、/p><p> 相位累加器由位加法器與位寄存器級(jí)聯(lián)構(gòu)成。每來一個(gè)時(shí)鐘脈沖,加法器將頻率控制字與寄存器輸出的累加相位數(shù)據(jù)相加,再把相加后的結(jié)果送至寄存器的數(shù)據(jù)輸入端。寄存器將加法器在上一個(gè)時(shí)鐘作用后所產(chǎn)生的相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在不到一個(gè)時(shí)鐘作用不繼續(xù)與頻率控制字進(jìn)行相加。這樣,相位累加器在時(shí)鐘的作用下,進(jìn)行相位累加。當(dāng)相位累加器累加滿量時(shí)就會(huì)產(chǎn)生一次溢出,完成一個(gè)周期性的動(dòng)作。累加器原理如圖2.2
15、所示。</p><p> 圖2.2 累加器原理圖</p><p> 2.1.3 控制相位的加法器</p><p> 通過改變相位控制字可以控制輸出信號(hào)的相位參數(shù)。令相位加法器的字長(zhǎng)為,當(dāng)相位控制字由0躍變到時(shí),波形存儲(chǔ)器的輸入為相位累加器的輸出與相位控制字之和,因而其輸出的幅度編碼相位會(huì)增加,從而使最后輸出的信號(hào)產(chǎn)生相移。</p><p
16、> 2.1.4 控制波形的轉(zhuǎn)換器</p><p> 通過改變波形控制字可以控制輸出信號(hào)的波形。由于波形存儲(chǔ)器中的小同波形是分塊存儲(chǔ)的,所以當(dāng)波形控制字改變時(shí),波形存儲(chǔ)器的輸入為改變相位后的地址與波形控制字(波形地址)之和,從而使最后輸出的信號(hào)產(chǎn)生相移。</p><p> 2.1.5 波形存儲(chǔ)器</p><p> 用相位累加器輸出的數(shù)據(jù)作為波形存儲(chǔ)器
17、的取樣地址,進(jìn)行波形的相位-隔值轉(zhuǎn)換,即可在給定的時(shí)間上確定輸出的波形的抽樣幅值。位的尋址ROM相當(dāng)于把0到的正弦信號(hào)離散成具有個(gè)樣值的序列,若波形ROM有位數(shù)據(jù)位,則個(gè)樣值的隔值以位一進(jìn)制數(shù)值固化在ROM中,按照地址的不同可以輸出相應(yīng)相位的正弦信號(hào)的幅值。相位一幅度變換原理圖如圖2.3所示。</p><p> 圖2.3 相位—幅度變換原理圖</p><p> 2.1.6 D/A轉(zhuǎn)
18、換器</p><p> D/A轉(zhuǎn)換器的作用是把合成的正弦波數(shù)字量轉(zhuǎn)換成模擬量。正弦幅度量化序列經(jīng)D/A轉(zhuǎn)換后變成了包絡(luò)為正弦波的階梯波。需要注意的是,頻率合成器對(duì)D/A轉(zhuǎn)換器的分辨率有一定的要求,D/A轉(zhuǎn)換器的分辨率越高,合成的正弦波臺(tái)階數(shù)就越多,輸出的波形的精度也就越高。</p><p> 2.1.7 低通濾波器</p><p> 對(duì)D/A輸出的階梯波進(jìn)行
19、頻譜分析,可知中除主頻外,還存在分布在,2···兩邊處的非諧波分量,隔值包絡(luò)為辛格函數(shù)。因此,為了取出主頻,必須在D/A轉(zhuǎn)換器的輸出端接入截止頻率為的低通濾波器。</p><p> 2.2 EDA技術(shù)</p><p> 2.2.1 EDA設(shè)計(jì)的基本特點(diǎn)</p><p> EDA代表了當(dāng)今電子設(shè)計(jì)技術(shù)的最新發(fā)展方向,它的基本特征
20、是:設(shè)計(jì)人員按照“自頂向下”的設(shè)計(jì)方法,對(duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成電路(ASIC)實(shí)現(xiàn),然后采用硬件描述語言(HDL)完成系統(tǒng)行為級(jí)設(shè)計(jì),最后通過綜合器和適配器生成最終的目標(biāo)器件,這樣的設(shè)計(jì)方法被稱為高層次的電子設(shè)計(jì)方法。下面介紹與EDA基本特征有關(guān)的幾個(gè)概念。</p><p> a)“自頂向下”的設(shè)計(jì)方法</p><p> 10年前,電子設(shè)計(jì)
21、的基本思路還是選用標(biāo)準(zhǔn)集成電路“自底向上”地構(gòu)造出一個(gè)新的系統(tǒng),這樣的設(shè)計(jì)方法就如同一磚一瓦建造金字塔,不僅效率低、成本高而且容易出錯(cuò)。</p><p> 高層次設(shè)計(jì)是一種“自頂向下”的全新設(shè)計(jì)方法,這種設(shè)計(jì)方法首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì)。在方框圖一級(jí)進(jìn)行仿真、糾錯(cuò),并用硬件描述語言對(duì)高層次的系統(tǒng)行為進(jìn)行描述,在系統(tǒng)一級(jí)進(jìn)行驗(yàn)證。然后,用綜合優(yōu)化工具生成具體門電路的網(wǎng)絡(luò)表,其對(duì)應(yīng)的
22、物理實(shí)現(xiàn)級(jí)可以是印刷電路板或?qū)S眉呻娐贰S捎谠O(shè)計(jì)的主要仿真和調(diào)試過程是在高層次上完成的,這既有利于早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)上的錯(cuò)誤,避免設(shè)計(jì)工作的浪費(fèi),又減少了邏輯功能仿真的工作量,提高了設(shè)計(jì)的一次成功率。</p><p><b> b) ASIC設(shè)計(jì)</b></p><p> 現(xiàn)代電子產(chǎn)品的復(fù)雜度日益提高,一個(gè)電子系統(tǒng)可能由數(shù)萬個(gè)中小規(guī)模集成電路構(gòu)成,這就帶來了體積大
23、、功耗大、可靠性差的問題。解決這一問題的有效方法就是采用ASIC芯片進(jìn)行設(shè)計(jì)。ASIC按照設(shè)計(jì)方法的不同可分為全定制ASIC、半定制ASIC和可編程ASIC(也稱為可編程邏輯器件)。</p><p> 設(shè)計(jì)全定制ASIC芯片時(shí),設(shè)計(jì)師要定義芯片上所有晶體管的幾何圖形和工藝規(guī)則,最后將設(shè)計(jì)結(jié)果交由IC廠家去進(jìn)行掩模制造,做出產(chǎn)品。這種設(shè)計(jì)方法的優(yōu)點(diǎn)是芯片可以獲得最優(yōu)的性能,即面積利用率高、速度快、功耗低,而缺點(diǎn)是
24、開發(fā)周期長(zhǎng)、費(fèi)用高,只適合大批量產(chǎn)品開發(fā)。</p><p> 半定制ASIC芯片的版圖設(shè)計(jì)方法分為門陣列設(shè)計(jì)法和標(biāo)準(zhǔn)單元設(shè)計(jì)法,這兩種方法都是約束性的設(shè)計(jì)方法,其主要目的就是簡(jiǎn)化設(shè)計(jì),以犧牲芯片性能為代價(jià)來縮短開發(fā)時(shí)間。</p><p> 可編程邏輯芯片與上述掩模ASIC的不同之處在于:設(shè)計(jì)人員完成版圖設(shè)計(jì)后,在實(shí)驗(yàn)室內(nèi)就可以燒制出自己的芯片,無須IC廠家的參與,大大縮短了開發(fā)周期。&
25、lt;/p><p> 可編程邏輯器件自70年代以來,經(jīng)歷了PAL、GAL、CPLD、FPGA幾個(gè)發(fā)展階段,其中CPLD/FPGA屬高密度可編程邏輯器件,目前集成度已高達(dá)200萬門/片,它將掩模ASIC集成度高的優(yōu)點(diǎn)和可編程邏輯器件設(shè)計(jì)生產(chǎn)方便的特點(diǎn)結(jié)合在一起,特別適合于樣品研制或小批量產(chǎn)品開發(fā),使產(chǎn)品能以最快的速度上市,而當(dāng)市場(chǎng)擴(kuò)大時(shí),它可以很容易地轉(zhuǎn)由掩模ASIC實(shí)現(xiàn),因此開發(fā)風(fēng)險(xiǎn)也大為降低。</p>
26、<p> 上述ASIC芯片,尤其是CPLD/FPGA器件,已成為現(xiàn)代高層次電子設(shè)計(jì)方法的實(shí)現(xiàn)載體。</p><p><b> c) 硬件描述語言</b></p><p> 硬件描述語言(HDL)是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它用軟件編程的方式來描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳統(tǒng)的門級(jí)描述方式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計(jì)。
27、例如一個(gè)32位的加法器,利用圖形輸入軟件需要輸入500至1000個(gè)門,而利用VHDL語言只需要書寫一行“A=B+C”即可。而且VHDL語言可讀性強(qiáng),易于修改和發(fā)現(xiàn)錯(cuò)誤。早期的硬件描述語言,如ABEL、HDL、AHDL,由不同的EDA廠商開發(fā),互不兼容,而且不支持多層次設(shè)計(jì),層次間翻譯工作要由人工完成。為了克服以上不足,1985年美國(guó)國(guó)防部正式推出了高速集成電路硬件描述語言VHDL。1987年IEEE采納VHDL為硬件描述語言標(biāo)準(zhǔn)(IEE
28、ESTD-1076)。</p><p> d) EDA系統(tǒng)框架結(jié)構(gòu)</p><p> EDA系統(tǒng)框架結(jié)構(gòu)(Framework)是一套配置和使用EDA軟件包的規(guī)范。目前主要的EDA系統(tǒng)都建立了框架結(jié)構(gòu),如Cadence公司的DesignFramework和Mentor公司的FalconFramework,而且這些框架結(jié)構(gòu)都遵守國(guó)際CFI組織制定的統(tǒng)一技術(shù)標(biāo)準(zhǔn)??蚣芙Y(jié)構(gòu)能將來自不同EDA廠
29、商的工具軟件進(jìn)行優(yōu)化組合,集成在一個(gè)易于管理的統(tǒng)一的環(huán)境之下,而且還支持任務(wù)之間、設(shè)計(jì)師之間以及整個(gè)產(chǎn)品開發(fā)過程中的信息傳輸與共享,是并行工程和自頂向下設(shè)計(jì)方法的實(shí)現(xiàn)基礎(chǔ)。</p><p> 2.2.2 EDA設(shè)計(jì)的基本方法</p><p> EDA技術(shù)的每一次進(jìn)步,都引起了設(shè)計(jì)層次上的一次飛躍。物理級(jí)設(shè)計(jì)主要指IC版圖設(shè)計(jì),一般由半導(dǎo)體廠家完成,對(duì)電子工程師沒有太大的意義,因此本文
30、重點(diǎn)介紹電路級(jí)設(shè)計(jì)和系統(tǒng)級(jí)設(shè)計(jì)。</p><p><b> 電路級(jí)設(shè)計(jì)</b></p><p> 電子工程師接受系統(tǒng)設(shè)計(jì)任務(wù)后,首先確定設(shè)計(jì)方案,并選擇能實(shí)現(xiàn)該方案的合適元器件,然后根據(jù)具體的元器件設(shè)計(jì)電路原理圖。接著進(jìn)行第一次仿真,其中包括數(shù)字電路的邏輯模擬、故障分析,模擬電路的交直流分析、瞬態(tài)分析。在進(jìn)行系統(tǒng)仿真時(shí),必須要有元件模型庫的支持,計(jì)算機(jī)上模擬的輸入
31、輸出波形代替了實(shí)際電路調(diào)試中的信號(hào)源和示波器。這一次仿真主要是檢驗(yàn)設(shè)計(jì)方案在功能方面的正確性。</p><p> 仿真通過后,根據(jù)原理圖產(chǎn)生的電氣連接網(wǎng)絡(luò)表進(jìn)行PCB板的自動(dòng)布局布線。在制作PCB板之前還可以進(jìn)行PCB后分析,其中包括熱分析、噪聲及竄擾分析、電磁兼容分析、可靠性分析等,并可將分析后的結(jié)果參數(shù)反標(biāo)回電路圖,進(jìn)行第二次仿真,也稱為后仿真。后仿真主要是檢驗(yàn)PCB板在實(shí)際工作環(huán)境中的可行性。</p
32、><p> 由此可見,電路級(jí)的EDA技術(shù)使電子工程師在實(shí)際的電子系統(tǒng)產(chǎn)生前,就可以全面地了解系統(tǒng)的功能特性和物理特性,從而將開發(fā)風(fēng)險(xiǎn)消滅在設(shè)計(jì)階段,縮短了開發(fā)時(shí)間,降低了開發(fā)成本。</p><p><b> 系統(tǒng)級(jí)設(shè)計(jì)</b></p><p> 進(jìn)入90年代以來,電子信息類產(chǎn)品的開發(fā)明顯呈現(xiàn)兩個(gè)特點(diǎn):一是產(chǎn)品復(fù)雜程度提高;二是產(chǎn)品上市時(shí)限緊迫
33、。然而,電路級(jí)設(shè)計(jì)本質(zhì)上是基于門級(jí)描述的單層次設(shè)計(jì),設(shè)計(jì)的所有工作(包括設(shè)計(jì)輸入、仿真和分析、設(shè)計(jì)修改等)都是在基本邏輯門這一層次上進(jìn)行的,顯然這種設(shè)計(jì)方法不能適應(yīng)新的形勢(shì),一種高層次的電子設(shè)計(jì)方法,也即系統(tǒng)級(jí)設(shè)計(jì)方法,應(yīng)運(yùn)而生。</p><p> 高層次設(shè)計(jì)是一種“概念驅(qū)動(dòng)式”設(shè)計(jì),設(shè)計(jì)人員無須通過門級(jí)原理圖描述電路,而是針對(duì)設(shè)計(jì)目標(biāo)進(jìn)行功能描述。由于擺脫了電路細(xì)節(jié)的束縛,設(shè)計(jì)人員可以把精力集中于創(chuàng)造性的方案
34、與概念的構(gòu)思上,一旦這些概念構(gòu)思以高層次描述的形式輸入計(jì)算機(jī),EDA系統(tǒng)就能以規(guī)則驅(qū)動(dòng)的方式自動(dòng)完成整個(gè)設(shè)計(jì)。這樣,新的概念就能迅速有效地成為產(chǎn)品,大大縮短了產(chǎn)品的研制周期。不僅如此,高層次設(shè)計(jì)只是定義系統(tǒng)的行為特性,可以不涉及實(shí)現(xiàn)工藝,因此還可以在廠家綜合庫的支持下,利用綜合優(yōu)化工具將高層次描述轉(zhuǎn)換成針對(duì)某種工藝優(yōu)化的網(wǎng)絡(luò)表,使工藝轉(zhuǎn)化變得輕而易舉。首先,工程師按照“自頂向下”的設(shè)計(jì)方法進(jìn)行系統(tǒng)劃分。其次,輸入Verilog HDL代
35、碼,這是高層次設(shè)計(jì)中最為普遍的輸入方式。此外,還可以采用圖形輸入方式(框圖、狀態(tài)圖等),這種輸入方式具有直觀、容易理解的優(yōu)點(diǎn)。第三步是,將以上的設(shè)計(jì)輸入編譯成標(biāo)準(zhǔn)的Verilog HDL文件。第四步是進(jìn)行代碼級(jí)的功能仿真,主要是檢驗(yàn)系統(tǒng)功能設(shè)計(jì)的正確性。這一步驟適用大型設(shè)計(jì),因?yàn)閷?duì)于大型設(shè)計(jì)來說,在綜合前對(duì)源代碼仿真,就可以大大減少設(shè)計(jì)重復(fù)的次數(shù)和時(shí)間。一般情況下,這一仿真步驟可略去。第五步是</p><p>
36、 2.3 Verilog HDL的設(shè)計(jì)流程</p><p> 現(xiàn)代集成電路制造工藝技術(shù)的改進(jìn),使得在一個(gè)芯片上集成數(shù)十乃至數(shù)百萬個(gè)器件成為可能,但我們很難設(shè)想僅由一個(gè)設(shè)計(jì)師獨(dú)立設(shè)計(jì)如此大規(guī)模的電路而不出現(xiàn)錯(cuò)誤。利用層次化、結(jié)構(gòu)化的設(shè)計(jì)方法,一個(gè)完整的硬件設(shè)計(jì)任務(wù)首先由總設(shè)計(jì)師劃分為若干個(gè)可操作的模塊,編制出相應(yīng)的模型(行為的或結(jié)構(gòu)的),通過仿真加以驗(yàn)證后,再把這些模塊分配給下一層的設(shè)計(jì)師,這就允許多個(gè)設(shè)計(jì)者同
37、時(shí)設(shè)計(jì)一個(gè)硬件系統(tǒng)中的不同模塊,其中每個(gè)設(shè)計(jì)者負(fù)責(zé)自己所承擔(dān)的部分;而由上一層設(shè)計(jì)師對(duì)其下層設(shè)計(jì)者完成的設(shè)計(jì)用行為級(jí)上層模塊對(duì)其所做的設(shè)計(jì)進(jìn)行驗(yàn)證。圖3.3為自頂向下(TOP-DOWN)的示意圖,以設(shè)計(jì)樹的形式繪出。</p><p> 自頂向下的設(shè)計(jì)(即TOP_DOWN設(shè)計(jì))是從系統(tǒng)級(jí)開始,把系統(tǒng)劃分為基本單元,然后再把每個(gè)基本單元?jiǎng)澐譃橄乱粚哟蔚幕締卧恢边@樣做下去,直到可以直接用EDA元件庫中的元件來實(shí)
38、現(xiàn)為止。</p><p> 對(duì)于設(shè)計(jì)開發(fā)整機(jī)電子產(chǎn)品的單位和個(gè)人來說,新產(chǎn)品的開發(fā)總是從系統(tǒng)設(shè)計(jì)入手,先進(jìn)行方案的總體論證、功能描述、任務(wù)和指標(biāo)的分配。隨著系統(tǒng)變得復(fù)雜和龐大,特別需要在樣機(jī)問世之前,對(duì)產(chǎn)品的全貌有一定的預(yù)見性。目前,EDA技術(shù)的發(fā)展使得設(shè)計(jì)師有可能實(shí)現(xiàn)真正的自頂向下的設(shè)計(jì)。</p><p> 2.4 EDA工具</p><p> EDA開發(fā)
39、工具是指以計(jì)算機(jī)硬件和系統(tǒng)軟件為工作平臺(tái),匯集了計(jì)算機(jī)圖</p><p> 圖2.4 TOP_DOWN設(shè)計(jì)思想</p><p> 學(xué)、拓?fù)溥壿媽W(xué)、計(jì)算數(shù)學(xué)以及人工智能等多種計(jì)算機(jī)應(yīng)用學(xué)科的最新成果而開發(fā)出來的用于電子系統(tǒng)自動(dòng)化設(shè)計(jì)的應(yīng)用軟件。現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)技術(shù)的發(fā)展主要體現(xiàn)在EDA領(lǐng)域,而EDA技術(shù)的關(guān)鍵之一就是EDA開發(fā)工具。如果沒有EDA工具的支持,想要完成大規(guī)模、超大規(guī)模集成
40、電路或復(fù)雜數(shù)字系統(tǒng)的設(shè)計(jì)是不可想象的。</p><p> QuartusⅡ是Altera公司推出的最新一代的可編程邏輯器件開發(fā)系統(tǒng)。與原先的MAX+PLUSⅡ相比,它具有更強(qiáng)大的功能,能夠適應(yīng)更大規(guī)模、更復(fù)雜的可編程邏輯器件的開發(fā)。</p><p> a) 支持多平臺(tái)工作。QuartusⅡ既可以工作于“PC+Microsoft Windows操作系統(tǒng)”或“PC+Red Hat Linu
41、x操作系統(tǒng)”上,又可以在多種工作站上運(yùn)行。</p><p> b) 提供與器件結(jié)構(gòu)無關(guān)的設(shè)計(jì)環(huán)境。QuartusⅡ開發(fā)系統(tǒng)的核心—編譯器(compiler)不僅支持Altera公司原來的MAX和FLEX等系列的可編程邏輯器件,而且還支持APEX、Excalibur、Mercury、Stratix、Cyclone等新的器件系列,提供了一個(gè)真正與器件結(jié)構(gòu)無關(guān)的可編程邏輯開發(fā)環(huán)境。設(shè)計(jì)者無須精通器件內(nèi)部復(fù)雜的結(jié)構(gòu),只
42、要采用常見的設(shè)計(jì)輸入方法(如原理圖輸入、HDL輸入等)完成對(duì)設(shè)計(jì)的描述,QuartusⅡ就能自動(dòng)地進(jìn)行邏輯綜合和適配,將用戶輸入的設(shè)計(jì)文件編譯成可編程邏輯器件最終需要的編程文件格式。</p><p> c) 完全集成化。QuartusⅡ的設(shè)計(jì)輸入、編譯處理、仿真和定時(shí)分析以及編程下載等工具都集成在統(tǒng)一的開發(fā)環(huán)境下,提高了設(shè)計(jì)的效率,縮短了開發(fā)周期。</p><p> d) 具有開放的界
43、面。通過EDIF網(wǎng)表文件、參數(shù)畫模塊庫(LPM)、VHDL、Verilog HDL等形式,QuartusⅡ可以與Cadence、MentorGraphic、OrCAD、Synopsys、Synplicity及Viewlogic等許多公司提供的多種EDA工具接口。QuartusⅡ的Nativelink特性使其與其他符合工業(yè)標(biāo)準(zhǔn)的EDA工具之間的聯(lián)系更加緊密,用戶可以直接在QuartusⅡ開發(fā)環(huán)境中調(diào)用其他的EDA工具來完成設(shè)計(jì)輸入、綜合、
44、仿真和定時(shí)分析等工作。</p><p> e) 支持硬件描述語言。QuartusⅡ支持三種HDL輸入、包括被列入IEEE標(biāo)準(zhǔn)的VHDL(1987版和1993版)和Verilog HDL(1995版和2001版)以及Altera公司自己開發(fā)的AHDL。</p><p> f) 具有豐富的設(shè)計(jì)庫。QuartusⅡ提供豐富的庫單元供設(shè)計(jì)者調(diào)用,其中包括一些基本的邏輯單元(如邏輯門、觸發(fā)器等)
45、、74系列的器件和多種參數(shù)化的邏輯宏功能(megafunction)模塊(如乘法器、FIFO、RAM等)。調(diào)用庫單元進(jìn)行設(shè)計(jì),可以大大減輕設(shè)計(jì)人員的工作量,縮短設(shè)計(jì)周期。</p><p> g) 提供強(qiáng)大的在線幫助。QuartusⅡ軟件不僅帶有詳細(xì)的使用說明,而且還加強(qiáng)了網(wǎng)絡(luò)功能,使用戶從軟件內(nèi)部就可以直接通過Internet獲得Altera公司的技術(shù)支持。</p><p> 2.5
46、 基于FPGA的設(shè)計(jì)原理</p><p> 2.5.1 FPGA設(shè)計(jì)的特點(diǎn)</p><p> 現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array)簡(jiǎn)稱FPGA,是大規(guī)模可編程器件,它具有速度高、規(guī)模大、可編程以及有強(qiáng)大的EDA軟件設(shè)計(jì)平臺(tái)的支持等特性,而信號(hào)發(fā)生器的實(shí)現(xiàn)依賴于高速、高性能的數(shù)字器件,所以選用FPGA實(shí)現(xiàn)信號(hào)發(fā)生器是十分適合的。</p&g
47、t;<p> 盡管FPGA、CPLD和其它類型PLD的結(jié)構(gòu)各有其特點(diǎn)和長(zhǎng)處,但概括起來,它們是由三大部分組成的:</p><p> a) 一個(gè)二維的邏輯塊陣列,構(gòu)成了PLD器件的邏輯組成核心。</p><p> b) 輸入/輸出塊。</p><p> c) 連接邏輯塊的互連資源。連線資源:由各種長(zhǎng)度的連線線段組成,其中也有一些可編程的連接開關(guān),
48、它們用于邏輯塊之間、邏輯塊與輸入/輸出塊之間的連接。</p><p> 對(duì)用戶而言,CPLD與FPGA的內(nèi)部結(jié)構(gòu)稍有不同,但用法一樣,0所以多數(shù)情況下,不加以區(qū)分。</p><p> FPGA/CPLD芯片都是特殊的ASIC芯片,它們除了具有ASIC的特點(diǎn)之外,還具有以下幾個(gè)優(yōu)點(diǎn):</p><p> a) 隨著VLSI(Very Large Scale IC,
49、超大規(guī)模集成電路)工藝的不斷提高單一芯片內(nèi)部可以容納上百萬個(gè)晶體管, FPGA/CPLD芯片的規(guī)模也越來越大,其單片邏輯門數(shù)已達(dá)到上百萬門,它所能實(shí)現(xiàn)的功能也越來越強(qiáng),同時(shí)也可以實(shí)現(xiàn)系統(tǒng)集成。</p><p> b) FPGA/CPLD芯片在出廠之前都做過百分之百的測(cè)試,不需要設(shè)計(jì)人員承擔(dān)投片風(fēng)險(xiǎn)和費(fèi)用,設(shè)計(jì)人員只需在自己的實(shí)驗(yàn)室里就可以通過相關(guān)的軟硬件環(huán)境來完成芯片的最終功能設(shè)計(jì)。所以, FPGA/CPLD的
50、資金投入小,節(jié)省了許多潛在的花費(fèi)。</p><p> c) 用戶可以反復(fù)地編程、擦除、使用或者在外圍電路不動(dòng)的情況下用不同軟件就可實(shí)現(xiàn)不同的功能。所以,用FPGA/PLD 試制樣片,能以最快的速度占領(lǐng)市場(chǎng)。 FPGA/CPLD軟件包中有各種輸入工具和仿真工具,及版圖設(shè)計(jì)工具和編程器等全線產(chǎn)品,電路設(shè)計(jì)人員在很短的時(shí)間內(nèi)就可完成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯片的制作。 當(dāng)電路有少量改動(dòng)時(shí),更能顯示出FP
51、GA/CPLD的優(yōu)勢(shì)。電路設(shè)計(jì)人員使用FPGA/CPLD進(jìn)行電路設(shè)計(jì)時(shí),不需要具備專門的IC(集成電路)深層次的知識(shí), FPGA/CPLD軟件易學(xué)易用,可以使設(shè)計(jì)人員更能集中精力進(jìn)行電路設(shè)計(jì),快速將產(chǎn)品推向市場(chǎng)。 </p><p> 本設(shè)計(jì)中用的是StratixⅡ系列器件,現(xiàn)在將對(duì)其做簡(jiǎn)單的介紹。</p><p> StratixⅡ系列是Altera應(yīng)用非常廣泛的產(chǎn)品。這些器件具有比較
52、高的集成度及豐富的寄存器資源,采用了快速、可預(yù)測(cè)延時(shí)的連續(xù)式布線結(jié)構(gòu),是一種將CPLD和FPGA的優(yōu)點(diǎn)結(jié)合于一體的器件,具有較高的性價(jià)比。</p><p> StratixⅡ系列器件的集成度從幾萬門到幾十萬門,具有業(yè)界首創(chuàng)的自適應(yīng)FPGA體系。StratixⅡ系列器件具有以下一些特點(diǎn):</p><p> a) 高密度。10000到250000典型門。</p><p&
53、gt; b) 功能強(qiáng)大的I/O引腳。每個(gè)引腳都是獨(dú)立的三態(tài)門結(jié)構(gòu),具有可編程的速率控制。</p><p> c) 嵌入式陣列塊(EAB)。每個(gè)EAB提供2K比特位,可用來作存儲(chǔ)器使用或者用來實(shí)現(xiàn)一般的邏輯功能。</p><p> d) 邏輯單元采用查找表(LUT)結(jié)構(gòu)。</p><p> e) 具有快速通道(Fast Track)連線,速度快并可預(yù)測(cè)延時(shí)。&
54、lt;/p><p> f) 具有實(shí)現(xiàn)快速加法器和計(jì)數(shù)器的專用進(jìn)位鏈和實(shí)現(xiàn)高速、多輸入邏輯函數(shù)的專用級(jí)連鏈。</p><p> 為了滿足本系統(tǒng)的需要,本設(shè)計(jì)選用Altera公司不久前發(fā)布的嶄新體系的大容量StratixⅡ系列FPGA。本設(shè)計(jì)用了StratixⅡ器件系列的第一個(gè)型號(hào)是EP2S60器件。StratixⅡFPGA是具有業(yè)界首創(chuàng)的自適應(yīng)FPGA體系,在單個(gè)器件中具有雙倍多的邏輯容量,
55、比第一代Stratix器件速度快50%。StratixⅡFPGA采用新的邏輯結(jié)構(gòu),它由“自適應(yīng)邏輯模塊”(ALM)組成,允許相鄰功能之間共享邏輯。每個(gè)ALM還有兩個(gè)可編程寄存器、兩個(gè)加法器、一個(gè)進(jìn)位鏈、一個(gè)加法樹鏈和一個(gè)寄存器鏈,這些都能更高效地利用器件的容量。StratixⅡ期間的邏輯是Stratix FPGA的兩倍多,將近180000個(gè)等效邏輯單元(LE)。</p><p> 2.5.2 FPGA設(shè)計(jì)的原
56、理</p><p><b> a) 系統(tǒng)設(shè)計(jì)</b></p><p> 1) 規(guī)格設(shè)計(jì)。規(guī)格設(shè)計(jì)是系統(tǒng)級(jí)設(shè)計(jì)的第一步,即設(shè)計(jì)者通過分析用戶的要求,明確系統(tǒng)的功能和應(yīng)達(dá)到的性能指標(biāo),并以系統(tǒng)說明書的形式作為用戶與設(shè)計(jì)者之間的協(xié)議和進(jìn)一步設(shè)計(jì)的依據(jù)。在系統(tǒng)說明書中,可以用多種形式對(duì)系統(tǒng)的功能和指標(biāo)進(jìn)行說明,如文字、圖形、符號(hào)、表達(dá)式以及類似于程序的形式語言等,應(yīng)力求簡(jiǎn)
57、單易懂、無二義性,并反復(fù)檢查,盡早發(fā)現(xiàn)并糾正潛在的錯(cuò)誤。 </p><p> 2) 確定系統(tǒng)的實(shí)現(xiàn)方案并進(jìn)行系統(tǒng)功能劃分和算法設(shè)計(jì)。這部分工作的結(jié)果通常是系統(tǒng)結(jié)構(gòu)框圖、算法狀態(tài)圖(ASM圖)和必要的文字說明。</p><p> 以上這些富有創(chuàng)造性的工作和傳統(tǒng)設(shè)計(jì)方法中的基本相同,主要依賴于設(shè)計(jì)師的經(jīng)驗(yàn)和創(chuàng)造力,仍然需要由設(shè)計(jì)者自己完成,只不過在基于FPGA的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)方法中,
58、這些工作不再受市場(chǎng)上標(biāo)準(zhǔn)邏輯器件的局限。</p><p> 3) 高層次描述。一般是采用VHDL、Verilog HDL等高級(jí)硬件描述語言在算法級(jí)對(duì)系統(tǒng)進(jìn)行行為描述,有時(shí)也可以采用比較直觀的圖形輸入方式(方框圖、狀態(tài)圖等)。</p><p> 4) 算法級(jí)功能仿真。主要是檢驗(yàn)系統(tǒng)算法設(shè)計(jì)的正確性。</p><p> b) FPGA芯片設(shè)計(jì)</p>
59、<p> 1) RTL級(jí)HDL描述。目前高層次的綜合工具還不是很完善,有些行為描述語句還不能被綜合,所以要想利用綜合工具自動(dòng)地將設(shè)計(jì)的HDL描述轉(zhuǎn)化成具體的硬件電路必須針對(duì)具體的綜合工具,將一些高層次的描述轉(zhuǎn)化成可綜合的RTL級(jí)描述。</p><p> 2) RTL級(jí)功能仿真。檢查RTL級(jí)HDL所描述的系統(tǒng)功能是否正確,一般這一步可以省略。</p><p> 3) 邏輯綜
60、合。利用綜合工具將RTL級(jí)HDL源代碼轉(zhuǎn)化成門級(jí)網(wǎng)表,這是將抽象的描述轉(zhuǎn)化為具體硬件電路的關(guān)鍵步驟。</p><p> 4) 門級(jí)功能仿真。從系統(tǒng)邏輯功能方面檢查系統(tǒng)設(shè)計(jì)的正確性。</p><p> 5) 適配。利用適配器將綜合后的門級(jí)網(wǎng)表針對(duì)某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,包括底層器件配置、邏輯劃分、布局布線和延時(shí)信息的提取等。適配完成后將產(chǎn)生多項(xiàng)結(jié)果,包括時(shí)延信息的仿真模型、器
61、件編程文件。</p><p> 6) 時(shí)序仿真和定時(shí)分析。因?yàn)檫m配后的仿真模型中含有器件的實(shí)際硬件特性,如時(shí)延特性,所以時(shí)序仿真和定時(shí)分析的結(jié)果能比較精確地預(yù)期未來芯片的實(shí)性能。</p><p> 7) FPGA編程。將適配器產(chǎn)生的器件編程文件通過編程器件或通過電纜載入到目標(biāo)芯片中,這樣空白的可編程邏輯器件就成了具有特定功能的FPGA芯片。</p><p>
62、3 信號(hào)發(fā)生器的硬件電路設(shè)計(jì)</p><p> 3.1 實(shí)現(xiàn)三種波形(正弦波、方波和鋸齒波)的算法</p><p> 3.1.1 實(shí)現(xiàn)正弦波的算法</p><p> 理想的正弦波信號(hào)可表示成</p><p><b> (3.1)</b></p><p> 說明在振幅和初相確定后,頻
63、率由相位唯一確定 </p><p><b> (3.2)</b></p><p> 信號(hào)發(fā)生器利用式(3.2)中與時(shí)間成線性關(guān)系的原理進(jìn)行頻率合成的,在時(shí)間間隔內(nèi),正弦信號(hào)的相位增量與正弦信號(hào)的頻率構(gòu)成一一對(duì)應(yīng)關(guān)系 </p><p><b> (3.3)</b></p><p>
64、為了說明信號(hào)發(fā)生器的相位量化的工作原理,可將正弦波一個(gè)完整周期內(nèi)相位的變化用相位圓表示,其相位與幅度一一對(duì)應(yīng),即相位圓上的每一點(diǎn)均對(duì)應(yīng)輸出一個(gè)特定的幅度值。 </p><p> 一個(gè)位的相位累加器對(duì)應(yīng)相位圓上個(gè)相位點(diǎn),其最低相位分辨率為。對(duì)應(yīng)的也有個(gè)幅度值,該幅度值存儲(chǔ)于波形存儲(chǔ)器中,在頻率控制字的作用下,相位累加器給出不同的相位碼(用其高位地址碼)對(duì)波形存儲(chǔ)器尋址,完成相位-幅度的變換,經(jīng)數(shù)模轉(zhuǎn)換器變成階梯正
65、弦波信號(hào),再通過低通濾波器平滑,便得到模擬正弦波輸出。在圖4.1所示方框圖中的時(shí)鐘電路是由一個(gè)高穩(wěn)定的晶體振蕩器產(chǎn)生的,提供信號(hào)發(fā)生器中各部件同步工作。頻率控制字送到位相位累加器中的加法器數(shù)據(jù)輸入端,相位累加器在時(shí)鐘頻率的作用下,不斷對(duì)頻率控制數(shù)據(jù)進(jìn)行線性相位累加,當(dāng)相位累加器累積到滿量時(shí)就會(huì)產(chǎn)生一次溢出,累加器的溢出頻率就是信號(hào)發(fā)生器輸出信號(hào)的頻率。由此可看出,相位累加器實(shí)際上是一個(gè)模數(shù)2為基準(zhǔn)、受頻率數(shù)據(jù)控制字而改變的計(jì)數(shù)器,它累積
66、了每一個(gè)參考周期內(nèi)合成信號(hào)的相位變化,這些相位值的高位對(duì)ROM尋址。在ROM中寫入了個(gè)正弦數(shù)據(jù),每個(gè)數(shù)據(jù)為位。不同的頻率控制字 導(dǎo)致相位累加器的不同相位增量,這樣從ROM輸出的正弦波形的頻率不同,ROM輸出的位二進(jìn)制數(shù)送到DAC進(jìn)行D/A變換,得到量化的階梯形正弦波輸出,最后經(jīng)低通濾波器濾除高頻分量,平滑后得到模擬的正弦波</p><p> 考慮到正弦函數(shù)的對(duì)稱性:在范圍內(nèi),正弦函數(shù)已為奇對(duì)稱,在內(nèi),已為軸對(duì)稱
67、。因此,可以在正弦函數(shù)表中只存儲(chǔ)角度在</p><p> 的函數(shù)值,并且這些值都是正值。這樣,通過一個(gè)正弦表的前1/4周期就可以經(jīng)過適當(dāng)變換得到正弦的整個(gè)周期碼表,節(jié)省了將近3/4的資源,非??捎^。</p><p> 3.1.2 實(shí)現(xiàn)方波的算法</p><p> 方波是這三種波形中最容易實(shí)現(xiàn)的波形。它無需像實(shí)現(xiàn)正弦波那樣需要制表,可以用直接賦值的方法實(shí)現(xiàn),而
68、且修改的方法也很簡(jiǎn)單,只要判斷相位累加器中數(shù)據(jù)的大小:當(dāng)數(shù)據(jù)小于1000 0000 0000 0000(二進(jìn)制數(shù))時(shí),使輸出為正值;當(dāng)數(shù)據(jù)大于1000 0000 0000 0000(二進(jìn)制數(shù))時(shí),使輸出為零。當(dāng)需要調(diào)節(jié)方波的幅度時(shí),只要改動(dòng)輸出的正數(shù)值即可。</p><p> 3.1.3 鋸齒波的實(shí)現(xiàn)算法</p><p> 在實(shí)現(xiàn)鋸齒波時(shí),也可以采用查表的方法,這樣就需要制表,因此需
69、要占用FPGA的存儲(chǔ)器資源。在這里,本設(shè)計(jì)用另一種方法實(shí)現(xiàn)鋸齒波:將相位累加器的低幾位(根據(jù)需要)直接送DAC輸入,就可產(chǎn)生鋸齒波。</p><p> 3.2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</p><p> 3.2.1 參數(shù)選取</p><p> 由已知條件=16,=8,= 66.54MHz,存儲(chǔ)器容量2K可知:</p><p> a) 存儲(chǔ)器
70、可分為64×8 bit使用。</p><p> b) 頻率步進(jìn),此時(shí)。</p><p> c) 最大頻率=33.27MHz,然而,此時(shí)每周期只采樣2點(diǎn),難以保證輸出精度。為了保持輸出精度,規(guī)定最低每周期采樣4點(diǎn),此時(shí)==4096,=16.635MHz。但本設(shè)計(jì)只要求輸出頻率范圍為1KHz~1MHz。</p><p><b> d) 相位步進(jìn)
71、。</b></p><p> 綜上所述,正弦波形存儲(chǔ)器存儲(chǔ)64個(gè)7位采樣點(diǎn):頻率控制,頻率步進(jìn)(最小輸出頻率)1KHz,最大輸出頻率1MHz。</p><p> 3.2.2 系統(tǒng)設(shè)計(jì)</p><p><b> a) 波形存儲(chǔ)</b></p><p> 方波和鋸齒波由于直接實(shí)現(xiàn),因此不需要存儲(chǔ)其波形值
72、。在本設(shè)計(jì)中,只存儲(chǔ)正弦波的64個(gè)采樣點(diǎn)即可。</p><p><b> b) 按鍵消抖實(shí)現(xiàn)</b></p><p> 在按鍵過程中,由于機(jī)械顫抖和系統(tǒng)處理速度極快,如果沒有消抖過程,系統(tǒng)會(huì)把一次按鍵當(dāng)成多次來處理,造成和預(yù)料的結(jié)果不一致。在本設(shè)計(jì)中,用軟件來實(shí)現(xiàn)按鍵消抖。其原理是:機(jī)械顫抖過程一般為10ms到50ms,用軟件來延遲該時(shí)間,然后再判斷輸入。如果此時(shí)
73、仍為高或低,則輸入該值。</p><p> c) 掃頻的實(shí)現(xiàn)方法</p><p> 在本設(shè)計(jì)中,要求信號(hào)發(fā)生器具有可掃頻輸出的功能。所謂掃頻,是指信號(hào)能連續(xù)從小到大輸出(在該系統(tǒng)能輸出的頻率范圍內(nèi))。實(shí)現(xiàn)的方法很簡(jiǎn)單,只要在每次相位累加器產(chǎn)生溢出時(shí),讓頻率控制字寄存器加1即可。</p><p><b> d) 動(dòng)態(tài)顯示</b></p
74、><p> 為了能直觀的看到信號(hào)發(fā)生器輸出信號(hào)的頻率,本設(shè)計(jì)用數(shù)碼管來顯示其頻率。只要知道頻率控制字寄存器的值,然后將二進(jìn)制轉(zhuǎn)換成BCD碼,再轉(zhuǎn)換成可用來顯示的七段碼,送數(shù)碼管顯示即可。為了減少輸出端口,可以用動(dòng)態(tài)掃描的方法。</p><p><b> e) 系統(tǒng)設(shè)計(jì)</b></p><p> 由波形選擇方式,設(shè)計(jì)圖3.1所示系統(tǒng)模型。<
75、;/p><p> 3.2.3 系統(tǒng)實(shí)現(xiàn)</p><p> 圖3.1 信號(hào)發(fā)生器系統(tǒng)模型</p><p> a) 本次實(shí)現(xiàn)系統(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位,高電平時(shí),將頻率控制字寫入頻率控制字寄存器。</p><p> 3) 掃頻輸出控制端(SC):1位,高電平時(shí),使信號(hào)掃頻輸出;</p><p> 4) 波形控制端(FB_B、ZXB_B和JCB_B):都是1位,ZXB_B為高時(shí)輸出正弦波;FB_B為高時(shí)輸出方波;JCB_B為高時(shí)輸出鋸齒波;</p><p> 5) 復(fù)位端(reset):1位,高
78、電平是系統(tǒng)復(fù)位;</p><p> 6) 時(shí)鐘輸入端(sysclk):1位,為參考頻率的輸入端;</p><p> 7) 數(shù)據(jù)輸出端(DACOUT):8位,接DAC,以輸出模擬波形;</p><p> 8) 顯示輸出端(led_sig):7位,接共陰極數(shù)碼管可以顯示輸出頻率;</p><p> 9) 顯示輸出選擇端(led_sel):
79、4位,和led_sig共同構(gòu)成動(dòng)態(tài)掃描顯示。</p><p> c) 主要功能模塊說明</p><p><b> 1) 相位累加器</b></p><p> 相位累加器是該信號(hào)發(fā)生器的核心部分。相位累加器的設(shè)計(jì)目前一般都采用比較流行的電子設(shè)計(jì)自動(dòng)化技術(shù),它的應(yīng)用使電子系統(tǒng)設(shè)計(jì)具有了更大的靈活性,用戶可以根據(jù)自己的需要,利用硬件描述語言設(shè)計(jì)
80、出符合自己要求的電路,但如何在有限的芯片資源下提高相位累加其的速度也就成為設(shè)計(jì)的關(guān)鍵。本設(shè)計(jì)利用流水線技術(shù)加法器與寄存器結(jié)合在一起進(jìn)行相位累加器設(shè)計(jì)的方案。由于StratixⅡ系列提供的IP Core具有功能齊全、安全可靠、使用方便等特點(diǎn),故累加器模塊選取IP Core中的Accumulator單元。</p><p><b> 2) 加法器</b></p><p>
81、 本設(shè)計(jì)共用到1個(gè)加法器,通過IP Core中的Adder & Subtracter單元實(shí)現(xiàn)。</p><p><b> 3) 波形選擇器</b></p><p> 本設(shè)計(jì)用到一個(gè)波形選擇器,來實(shí)現(xiàn)波形的選擇。通過IP Core中的MUX單元實(shí)現(xiàn)。</p><p><b> 4) 波形存儲(chǔ)器</b><
82、/p><p> 圖3.2 信號(hào)發(fā)生器原理圖</p><p> 波形存儲(chǔ)器用來存儲(chǔ)波形數(shù)據(jù)。通過IP Core中的Single Port Block Memory實(shí)現(xiàn)。最后完成的原理圖如圖3.2所示。</p><p> 4 信號(hào)發(fā)生器的軟件設(shè)計(jì)</p><p> 4.1 程序的流程圖</p><p> 為了能
83、更方便、簡(jiǎn)單地編程,本設(shè)計(jì)先畫出程序的數(shù)據(jù)流向,即流程圖,然后再根據(jù)流程圖來編寫程序。</p><p> 首先,根據(jù)要求,如果系統(tǒng)復(fù)位信號(hào)(reset)為高電平時(shí),輸出為零,數(shù)碼管顯示為零。如果reset為低電平,系統(tǒng)可以正常工作,此時(shí),將輸入信號(hào)進(jìn)行消抖,判斷WS是否為高電平,若不是,繼續(xù)判斷;若是,則將頻率控制字(FCW)送頻率控制字寄存器。同時(shí),計(jì)算輸出頻率模塊開始計(jì)算輸出頻率,并將數(shù)據(jù)送數(shù)碼管顯示。其次
84、,相位累加器以頻率控制字為步長(zhǎng),不斷累加。根據(jù)波形輸入字來判斷輸出那種波形:當(dāng)FB_B有效時(shí),為方波輸出,在相位寄存器數(shù)據(jù)的前半值時(shí),輸出一個(gè)正值,在相位寄存器數(shù)據(jù)的后半值時(shí),輸出一個(gè)負(fù)數(shù)。經(jīng)D/A轉(zhuǎn)換,即可得到方波;當(dāng)JCB_B有效時(shí),把相位累加器的低幾位送D/A轉(zhuǎn)換器,就可以得到鋸齒波;當(dāng)ZXB_B有效時(shí),以相位累加器的輸出數(shù)據(jù)為地址,對(duì)ROM尋址,把ROM輸出的數(shù)據(jù)經(jīng)D/A轉(zhuǎn)換,就可以得到正弦波。最后,還要判斷相位累加器有沒有溢出
85、,如果有溢出,并且掃頻控制信號(hào)(SC)為高電平,應(yīng)該使頻率控制字寄存器加1,即實(shí)現(xiàn)掃頻輸出??偵纤?,可以得到如圖4.1所示的流程圖。</p><p> 4.2 各個(gè)功能模塊的Verilog程序?qū)崿F(xiàn)</p><p> 4.2.1 消抖模塊</p><p> 在硬件電路設(shè)計(jì)部分,已經(jīng)說明了消抖模塊的作用。在這里,主要說明如何用Verilog來編程實(shí)現(xiàn)。消抖電
86、路一般有兩種設(shè)計(jì)方法。一種是利用軟件消抖,如上一章所述;另一種方法是設(shè)計(jì)RS觸發(fā)器來消抖,但它不能有效地防止干擾,所以,一般不用。以下是基于第一種方法實(shí)現(xiàn)消抖的Verilog程序。為了突出消抖,在這里省略了端口定義。</p><p> always @(WS or reset or FB_B or JCB_B or ZXB_B)//WS、reset、FB_B、JCB_B、ZXB_B);//為輸入信號(hào)</p
87、><p><b> begin </b></p><p> delay(count_times);//任務(wù)調(diào)用</p><p> begin //經(jīng)過消抖之后的輸出</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;//該任務(wù)用來對(duì)輸入信號(hào)消抖</p><p> input[15:0] times;</p><p><b> begin<
90、;/b></p><p> repeat(times)@(posedge sysclk);//該語句用來延時(shí)</p><p><b> end</b></p><p><b> endtask</b></p><p> 4.2.2 相位累加器模塊</p><p&g
91、t; 在相位累加器中,實(shí)現(xiàn)掃頻輸出是一個(gè)關(guān)鍵問題。在這里,本設(shè)計(jì)只說明如何用Verilog來編程實(shí)現(xiàn)掃頻輸出。實(shí)現(xiàn)的程序?yàn)椋?lt;/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、器中加法器的進(jìn)位</p><p> FCW_FF=FCW_FF+14'b1;// 輸出,在它的上升沿使頻</p><p> 4.2.3 波形選擇器模塊</p><p> 在該模塊中,首先要實(shí)現(xiàn)波形控制字的寄存,即要設(shè)計(jì)一個(gè)寄存器。方波和鋸齒波的程序?qū)崿F(xiàn)非常簡(jiǎn)單,在這里重點(diǎn)說明正弦波是如何編程實(shí)現(xiàn)的。在硬件電路設(shè)計(jì)部分提到,本設(shè)計(jì)在ROM中只存儲(chǔ)了1/
94、4個(gè)周期的正弦波幅值。以下程序說明了如何用程序來實(shí)現(xiàn)一個(gè)完整的正弦波波形。</p><p> always @(posedge sysclk or posedge reset_delay)//正弦波輸出實(shí)現(xiàn)</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> 硬件設(shè)計(jì)部分已經(jīng)指出,為減少FPGA的端口占用,在顯示輸出頻率時(shí)可以用動(dòng)態(tài)掃描的方法實(shí)現(xiàn)。以下程序說明了如何實(shí)現(xiàn)動(dòng)態(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//向顯示的數(shù)碼管送數(shù)據(jù)</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> 以上只是實(shí)現(xiàn)各個(gè)功能模塊的關(guān)鍵代碼,完整的程序見附錄A。</p><p> 5 系統(tǒng)測(cè)試及結(jié)果分析</p>
110、<p><b> 5.1 系統(tǒng)測(cè)試</b></p><p> 本系統(tǒng)用QUARTUSⅡ6.0軟件來方真。當(dāng)掃頻輸出控制信號(hào)為0,即SC=1,運(yùn)行結(jié)果如下圖5.1~5.3所示。</p><p> 當(dāng)FB_B為1時(shí),表示輸出為方波,設(shè)頻率控制字為768時(shí),時(shí)序仿真波形如圖5.1所示。</p><p> 當(dāng)JCB_B為1時(shí),表
111、示輸出為鋸齒波,設(shè)頻率控制字為768時(shí),時(shí)序仿真波形如下圖5.2所示。</p><p> 當(dāng)ZXB_B為1時(shí),表示輸出為正弦波,設(shè)頻率控制字為768時(shí),時(shí)序仿真波形如下圖5.3所示。</p><p> 從圖5.1~5.3可以看出,控制字為768時(shí),頻率輸出顯示(led_sig)在顯示控</p><p> 圖5.1 方波時(shí)序分析結(jié)果</p>&l
112、t;p> 制(led_sel)從低位到高位分別輸出1時(shí),led_sig依次輸出1111 1111(二進(jìn)制數(shù),對(duì)應(yīng)數(shù)碼管的8)、1011 1111(二進(jìn)制數(shù),對(duì)應(yīng)數(shù)碼管的6)、1110 0000(二進(jìn)制數(shù),對(duì)應(yīng)數(shù)碼管的7)和1111 1110(二進(jìn)制數(shù),對(duì)應(yīng)數(shù)碼管的0)。數(shù)據(jù)輸出(DACOUT)分別為方波、</p><p> 圖5.2 鋸齒波時(shí)序分析結(jié)</p><p> 圖5.
113、3 正弦波時(shí)序分析結(jié)果</p><p> 鋸齒波和正弦波的幅值數(shù)字量,送數(shù)模轉(zhuǎn)換器(DAC),即可輸出方波、鋸齒波和正弦波。當(dāng)掃頻輸出控制信號(hào)為高電平,即SC=1,運(yùn)行結(jié)果如圖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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---信號(hào)發(fā)生器設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---信號(hào)發(fā)生器的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----合成信號(hào)發(fā)生器設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---簡(jiǎn)易信號(hào)發(fā)生器設(shè)計(jì)
- 函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 函數(shù)信號(hào)發(fā)生器-畢業(yè)設(shè)計(jì)
- 函數(shù)信號(hào)發(fā)生器(畢業(yè)設(shè)計(jì))
- 正弦信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----函數(shù)信號(hào)發(fā)生器
- 信號(hào)波形發(fā)生器的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 實(shí)用信號(hào)發(fā)生器的設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 多功能信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 電工系畢業(yè)設(shè)計(jì)--信號(hào)發(fā)生器
- 多功能信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 多功能信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 寬頻信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 基于fpga信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--多功能信號(hào)發(fā)生器
- 畢業(yè)設(shè)計(jì)論文-正弦信號(hào)發(fā)生器的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---簡(jiǎn)易多功能信號(hào)發(fā)生器設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論