版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 論文題目: 函數(shù)信號(hào)發(fā)生器的FPGA設(shè)計(jì) </p><p> 學(xué) 院: </p><p> 專業(yè)年級(jí): </p><p> 學(xué) 號(hào): </p&
2、gt;<p> 姓 名: </p><p> 指導(dǎo)教師、職稱: </p><p> 2010 年 5 月 16 日</p><p> Design Of Signal Generator based on FPGA</p
3、><p> College: Computer and Information Science </p><p> Specialty and Grade:</p><p> Electronic Information Engineering ,2006 </p><p> Number:
4、 </p><p> Name: </p><p> Advisor: </p><p> Submitted time: May 16, 20
5、10 </p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p> 1 引言- 1 -</p><p> 1.1 編寫函數(shù)信號(hào)發(fā)生器的目的及意義- 1 -
6、</p><p> 1.2本設(shè)計(jì)的主要內(nèi)容- 2 -</p><p> 2 FPGA概述- 3 -</p><p> 2.1 FPGA技術(shù)的發(fā)展歷程和動(dòng)向- 3 -</p><p> 2.2 FPGA的設(shè)計(jì)方法- 3 -</p><p> 2.3 FPGA的設(shè)計(jì)流程- 4 -</p>
7、<p> 2.3.1 基于“自頂向下”設(shè)計(jì)方法的FPGA設(shè)計(jì)流程- 4 -</p><p> 2.3.2 基于“自頂向下”設(shè)計(jì)流程的優(yōu)點(diǎn)- 5 -</p><p> 2.4 VHDL硬件描述語(yǔ)言介紹- 5 -</p><p> 2.4.1 VHDL語(yǔ)言的發(fā)展歷史- 5 -</p><p> 2.4.2 VHDL語(yǔ)言
8、的特點(diǎn)- 6 -</p><p> 2.4.3 VHDL語(yǔ)言的開(kāi)發(fā)流程- 7 -</p><p> 2.4.4 VHDL語(yǔ)言設(shè)計(jì)總結(jié)- 7 -</p><p> 2.5 Quartus II軟件介紹- 9 -</p><p> 2.5.1 Quartus II 概述- 9 -</p><p> 2.
9、5.2 Quartus II的設(shè)計(jì)流程- 10 -</p><p> 2.5.3 Quartus II設(shè)計(jì)方法- 10 -</p><p> 3 函數(shù)信號(hào)發(fā)生器的FPGA設(shè)計(jì)- 12 -</p><p> 3.1 三角波信號(hào)發(fā)生器的設(shè)計(jì)- 12 -</p><p> 3.1.1 三角波的VHDL描述- 12 -</p&
10、gt;<p> 3.1.2 三角波信號(hào)發(fā)生器的邏輯電路圖- 13 -</p><p> 3.2 正弦波信號(hào)發(fā)生器的設(shè)計(jì)- 14 -</p><p> 3.2.1 正弦波的VHDL描述- 14 -</p><p> 3.2.2 正弦波信號(hào)發(fā)生器的邏輯電路圖- 17 -</p><p> 3.3 方波信號(hào)發(fā)生器的設(shè)
11、計(jì)- 18 -</p><p> 3.3.1 方波的VHDL描述- 18 -</p><p> 3.3.2 方波信號(hào)發(fā)生器的邏輯電路圖- 20 -</p><p> 3.4 波形選擇模塊的設(shè)計(jì)- 20 -</p><p> 3.4.1 波形選擇模塊的VHDL描述- 20 -</p><p> 3.4
12、.2 波形選擇模塊的邏輯電路圖- 22 -</p><p> 3.5 頂層模塊的設(shè)計(jì)- 22 -</p><p> 3.5.1 頂層模塊的VHDL描述- 22 -</p><p> 3.5.2 頂層模塊的邏輯電路圖- 24 -</p><p> 4 函數(shù)信號(hào)發(fā)生器的仿真結(jié)果及分析- 25 -</p><p
13、> 4.1 三角波信號(hào)發(fā)生器的仿真結(jié)果及分析- 25 -</p><p> 4.2 正弦波信號(hào)發(fā)生器的仿真結(jié)果及分析- 26 -</p><p> 4.3 方波信號(hào)發(fā)生器的仿真結(jié)果及分析- 26 -</p><p> 5 結(jié)束語(yǔ)- 27 -</p><p> 5.1 總結(jié)- 27 -</p><p
14、> 5.2 下一步展望- 27 -</p><p> 參考文獻(xiàn)- 28 -</p><p> 致 謝- 29 -</p><p><b> 摘要</b></p><p> 函數(shù)信號(hào)發(fā)生器是各種測(cè)試和實(shí)驗(yàn)過(guò)程中不可缺少的工具,在通信、測(cè)量、雷達(dá)、控制、教學(xué)等領(lǐng)域應(yīng)用十分廣泛。在科技飛速發(fā)展的今天,F(xiàn)P
15、GA在函數(shù)信號(hào)發(fā)生器的領(lǐng)域的應(yīng)用已經(jīng)非常普遍。隨著我國(guó)經(jīng)濟(jì)和科技的發(fā)展,對(duì)相應(yīng)的測(cè)試儀器和測(cè)試手段也提出了更高的要求,信號(hào)發(fā)生器己成為測(cè)試儀器中至關(guān)重要的一類,因此開(kāi)發(fā)信號(hào)發(fā)生器具有重大意義。</p><p> 函數(shù)信號(hào)發(fā)生器能夠產(chǎn)生正弦波、方波、三角波等等各波形信號(hào),還能夠?qū)⑵渲腥我鈨煞N信號(hào)或三種信號(hào)疊加產(chǎn)生疊加波形。波形頻率可以調(diào)節(jié),通過(guò)撥碼開(kāi)關(guān)可以選擇波形以不同頻率輸出。輸出的波形信息是8位二進(jìn)制數(shù)字量,
16、可通過(guò)D/A期間轉(zhuǎn)換為模擬量后進(jìn)行放大輸出。</p><p> 設(shè)計(jì)通過(guò)硬件描述語(yǔ)言VHDL來(lái)實(shí)現(xiàn),并使用 Altera的QuartusII軟件進(jìn)行編譯、調(diào)試與仿真,驗(yàn)證了函數(shù)信號(hào)發(fā)生器完全可以實(shí)現(xiàn)預(yù)定的功能。</p><p> 關(guān)鍵詞:函數(shù)信號(hào)發(fā)生器;FPGA;VHDL;Quartus II軟件</p><p><b> Abstract</
17、b></p><p> Function signal generator is the most essential tool in all kinds of test and experiment. It is very widely used in communications, measuring, radar, control, teaching etc .In the days of rapi
18、d development of science and technology, FPGA has been prevalently applied in the field of function signal generator . Along with the fast development of economy and science in our country, the corresponding testing inst
19、rument and test method entail higher speed and quality, signal generator has become a vi</p><p> Function signal generator can generate sine wave, triangular, square, etc. various waveform signal, including
20、 superposition waveform produced by any two or three kinds of signals. Because wave frequency is adjustable so dial through code switch it can output different frequency waveform . The output waveform information is 8 bi
21、nary Numbers,also it can be transformed to analog through the D/A to be amplified and then output.</p><p> The design is accomplished by the VHDL hardware description language and use QuartusII software fo
22、r compile, debug and simulation. It is verified to prove that the function signal generator can achieve predetermined function.</p><p> Key words: Function signal generator; FPGA;VHDL; QuartusII software.&
23、lt;/p><p><b> 1 引言</b></p><p> 1.1 編寫函數(shù)信號(hào)發(fā)生器的目的及意義</p><p> 函數(shù)信號(hào)發(fā)生器是各種測(cè)試和實(shí)驗(yàn)過(guò)程中不可缺少的工具,在電子工程、通信工程、自動(dòng)控制、遙測(cè)控制、測(cè)量?jī)x器、儀表和計(jì)算機(jī)等技術(shù)領(lǐng)域,應(yīng)用十分地廣泛;并且在這些技術(shù)領(lǐng)域,經(jīng)常需要用到各種各樣波形的函數(shù)信號(hào)發(fā)生器。不論是在生產(chǎn)、
24、科研還是教學(xué)上,信號(hào)發(fā)生器都是電子工程師信號(hào)仿真實(shí)驗(yàn)的最佳工具,而且,信號(hào)發(fā)生器的設(shè)計(jì)方法多,設(shè)計(jì)技術(shù)也越來(lái)越先進(jìn)。隨著集成電路的迅速發(fā)展,用集成電路可很方便地構(gòu)成各種波形的函數(shù)信號(hào)發(fā)生器。用集成電路實(shí)現(xiàn)的各種波形的函數(shù)信號(hào)發(fā)生器與其它各種波形的函數(shù)信號(hào)發(fā)生器相比,其波形質(zhì)量、幅度和頻率穩(wěn)定性等性能指標(biāo),都有了很大的提高。</p><p> 同時(shí),隨著我國(guó)經(jīng)濟(jì)和科技的發(fā)展,對(duì)相應(yīng)的測(cè)試儀器和測(cè)試手段也提出了更高
25、的要求,信號(hào)發(fā)生器己成為測(cè)試儀器中至關(guān)重要的一類,因此開(kāi)發(fā)信號(hào)發(fā)生器具有重大意義。但傳統(tǒng)的信號(hào)發(fā)生器大多采用專用芯片或單片機(jī)或模擬電路,成本高或控制方式不靈活或波形種類較少等不能滿足要求。</p><p> 函數(shù)信號(hào)發(fā)生器能夠產(chǎn)生正弦波、方波、三角波等等各波形信號(hào),還能夠?qū)⑵渲腥我鈨煞N信號(hào)或三種信號(hào)疊加產(chǎn)生疊加波形。波形頻率可以調(diào)節(jié),通過(guò)撥碼開(kāi)關(guān)可以選擇波形以不同頻率輸出。輸出的波形信息是8位二進(jìn)制數(shù)字量,可通
26、過(guò)D/A期間轉(zhuǎn)換為模擬量后進(jìn)行放大輸出。</p><p> 目前我國(guó)在研制函數(shù)信號(hào)發(fā)生器等方面有可喜的成果。但總的來(lái)說(shuō),我國(guó)函數(shù)信號(hào)發(fā)生器還沒(méi)有形成真正的產(chǎn)業(yè)。中國(guó)在函數(shù)信號(hào)發(fā)生器這個(gè)產(chǎn)業(yè)的發(fā)展中,出現(xiàn)了很多的問(wèn)題。如產(chǎn)業(yè)結(jié)構(gòu)不合理、產(chǎn)業(yè)集中于勞動(dòng)力密集型產(chǎn)品;技術(shù)密集型產(chǎn)品明顯落后于發(fā)達(dá)工業(yè)國(guó)家;生產(chǎn)要素決定性作用正在削弱;產(chǎn)業(yè)能源消耗大、產(chǎn)出率低、環(huán)境污染嚴(yán)重、對(duì)自然資源破壞力大;企業(yè)總體規(guī)模偏小,技術(shù)創(chuàng)新
27、能力薄弱、管理水平落后等。就目前國(guó)內(nèi)的成熟產(chǎn)品來(lái)看,核心部分多為專用芯片,存在著成本高、控制不靈活等特點(diǎn),并且我國(guó)目前函數(shù)信號(hào)發(fā)生器的種類和性能都與國(guó)外同類產(chǎn)品存在著較大的差距。因此,開(kāi)發(fā)出高性價(jià)比的函數(shù)信號(hào)發(fā)生器,保持與國(guó)外同類產(chǎn)品在性價(jià)比上的優(yōu)勢(shì),打破國(guó)外技術(shù)壟斷和封鎖,對(duì)發(fā)展我國(guó)電子產(chǎn)業(yè)有非常重大的意義,具有廣泛的應(yīng)用前景,加緊對(duì)這類產(chǎn)品的研制顯得非常緊迫。</p><p> 本課題利用FPGA(File
28、d Programmable Gate Array的縮寫,即現(xiàn)場(chǎng)可編程邏輯門陣列)技術(shù)進(jìn)行設(shè)計(jì);使用超高速集成電路硬件描述語(yǔ)言(VHSIC Hardware Description Language),簡(jiǎn)稱VHDL語(yǔ)言實(shí)現(xiàn);同時(shí),利用Altera的QuartusII軟件進(jìn)行編程、調(diào)試、仿真,其可提供一個(gè)非常容易適應(yīng)特定設(shè)計(jì)所需要的完整的多平臺(tái)設(shè)計(jì)環(huán)境。本設(shè)計(jì)驗(yàn)證了函數(shù)信號(hào)發(fā)生器的完全可以實(shí)現(xiàn)預(yù)定的功能,具有一定的實(shí)用性。</p&g
29、t;<p> 1.2本設(shè)計(jì)的主要內(nèi)容</p><p> 在熟悉FPGA設(shè)計(jì)相關(guān)知識(shí)的基礎(chǔ)上,設(shè)計(jì)一種函數(shù)信號(hào)發(fā)生器,能穩(wěn)定地產(chǎn)生方波、正弦波、三角波等等各波形,并設(shè)置一個(gè)波形選擇開(kāi)關(guān),通過(guò)此開(kāi)關(guān)可以選擇以上各波形之一并輸出。</p><p> 本設(shè)計(jì)采用自上而下的切割重組設(shè)計(jì)方法。因此,設(shè)計(jì)的第一個(gè)步驟就是劃分確定整體的結(jié)構(gòu),將設(shè)計(jì)劃分為幾個(gè)小塊,然后把這些小塊一一實(shí)現(xiàn)
30、,最后再把這些小塊組合起來(lái),實(shí)現(xiàn)整個(gè)FPGA預(yù)定的功能。同時(shí)研究函數(shù)信號(hào)發(fā)生器的原理,編寫相應(yīng)的代碼,利用Quartus II軟件工具進(jìn)行仿真調(diào)試。</p><p><b> 2 FPGA概述</b></p><p> 2.1 FPGA技術(shù)的發(fā)展歷程和動(dòng)向</p><p> FPGA是英文Field Programmable Gate A
31、rray的縮寫,即現(xiàn)場(chǎng)可編程門陣列[9],它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。作為一種可編程邏輯器件,F(xiàn)PGA的出現(xiàn)是可編程邏輯器件發(fā)展變化的必然,它的出現(xiàn)推動(dòng)著可編程邏輯器件的進(jìn)一步發(fā)展。因此說(shuō),了解了可編程邏輯器件的發(fā)展歷程,也就了解了FPGA的發(fā)展歷程。</p><p> 可編程邏輯器件[5](Programmable Logic Device,PLD)是20世紀(jì)70年代發(fā)
32、展起來(lái)的一種新型器件。它的應(yīng)用不僅簡(jiǎn)化了電路設(shè)計(jì),降低了成本,提高了系統(tǒng)的可靠性,而且給數(shù)字系統(tǒng)的設(shè)計(jì)方式帶來(lái)了革命性的變化。可編程邏輯器件的發(fā)展是以微電子制作技術(shù)的不斷進(jìn)步為基礎(chǔ)的,其結(jié)構(gòu)和工藝的變化經(jīng)歷了一個(gè)不斷發(fā)展變革的過(guò)程。</p><p> 20世紀(jì)70年代,早期的可編程邏輯器件只有可編程只讀存儲(chǔ)器(PROM)、紫外線可擦除只讀存儲(chǔ)器(EPROM)和電可擦除只讀存儲(chǔ)器(EEPROM)3種。</p
33、><p> 隨后,出現(xiàn)了一類結(jié)構(gòu)稍微復(fù)雜的可編程芯片,即可編程邏輯陣列(Programmable Logic Array,PLA)。PLA在結(jié)構(gòu)上由一個(gè)可編程的與陣列和可編程的或陳列構(gòu)成,陣列規(guī)模小,編程過(guò)程復(fù)雜繁瑣。PLA既有現(xiàn)場(chǎng)可編程的,也有掩膜可編程的。在這之后出現(xiàn)了可編程陣列邏輯(Programmable Array Logic,PAL)器件。</p><p> 這些早期的PLD器
34、件的一個(gè)共同特點(diǎn)是可以實(shí)現(xiàn)速度特性較好的邏輯功能,但由于其結(jié)構(gòu)過(guò)于簡(jiǎn)單,因此,只能用于實(shí)現(xiàn)較小規(guī)模的電路設(shè)計(jì)。</p><p> 為了彌補(bǔ)這一缺陷,20世紀(jì)80年代中期,著名的可編程邏輯器件廠商Altera和Xilinx分別推出了擴(kuò)展型的復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)和類似于標(biāo)準(zhǔn)門陣列的現(xiàn)場(chǎng)可編程門陣列(Field Programmable G
35、ate Array,F(xiàn)PGA)。</p><p> 如今,F(xiàn)PGA器件已成為當(dāng)前主流的可編程邏輯器件之一。經(jīng)過(guò)近20年的發(fā)展,可編程邏輯器件已經(jīng)取得了長(zhǎng)足的進(jìn)步,資源更加豐富,使用越來(lái)越方便。將來(lái)的可編程邏輯器件,密度會(huì)更高、速度會(huì)更快、功耗會(huì)更低,同時(shí)還會(huì)增加更多新的功能,向著集成了可編程邏輯、CPU、存儲(chǔ)器等組件的可編程單片系統(tǒng)(System On Programmable Chip ,SOPC)方向發(fā)展。
36、</p><p> 2.2 FPGA的設(shè)計(jì)方法</p><p> FPGA的常用設(shè)計(jì)方法包括“自頂向下”和“自下而上”[6]。目前大規(guī)模FPGA設(shè)計(jì)一般選擇“自頂向下”的設(shè)計(jì)方法。所謂“自頂向下”設(shè)計(jì)方法,簡(jiǎn)單地說(shuō),就是采用可完全獨(dú)立于芯片廠商及其產(chǎn)品結(jié)構(gòu)的描述語(yǔ)言,在功能級(jí)對(duì)設(shè)計(jì)產(chǎn)品進(jìn)行定義,并結(jié)合功能仿真技術(shù),以確保設(shè)計(jì)的正確性,在功能定義完成后,利用邏輯綜合技術(shù),把功能描述轉(zhuǎn)換成
37、某一具體結(jié)構(gòu)芯片的網(wǎng)表文件,輸出給廠商的布局布線器進(jìn)行布局布線。布局布線結(jié)果還可反標(biāo)回同一仿真器,進(jìn)行包括功能和時(shí)序的后驗(yàn)證,以保證布局布線所帶來(lái)的門延時(shí)和線延時(shí)不會(huì)影響設(shè)計(jì)的性能。</p><p> “自頂向下”設(shè)計(jì)方法的優(yōu)越性是顯而易見(jiàn)的。首先,由于功能描述可完全獨(dú)立于芯片結(jié)構(gòu),在設(shè)計(jì)的最初階段,設(shè)計(jì)師可不受芯片結(jié)構(gòu)的約束,集中精力進(jìn)行產(chǎn)品設(shè)計(jì),進(jìn)而避免了傳統(tǒng)設(shè)計(jì)方法所帶來(lái)的重新再設(shè)計(jì)風(fēng)險(xiǎn),大大縮短了設(shè)計(jì)周
38、期。</p><p> 其次,設(shè)計(jì)的再利用得到保證。目前的電子產(chǎn)品正向模塊化方向發(fā)展。所謂模塊化就是對(duì)以往設(shè)計(jì)成果進(jìn)行修改、組合和再利用,產(chǎn)生全新的或派生設(shè)計(jì)。而“自頂向下”設(shè)計(jì)方法的功能描述可與芯片結(jié)構(gòu)無(wú)關(guān)。因此,可以以一種IP(Intelligence Property 知識(shí)產(chǎn)權(quán))的方式進(jìn)行存檔,以便將來(lái)重新利用。</p><p> 第三,設(shè)計(jì)規(guī)模大大提高。簡(jiǎn)單的語(yǔ)言描述即可完成復(fù)
39、雜的功能,而不需要手工繪圖。</p><p> 第四,芯片選擇更加靈活。設(shè)計(jì)師可在較短的時(shí)間內(nèi)采用各種結(jié)構(gòu)芯片來(lái)完成同一功能描述,從而在設(shè)計(jì)規(guī)模、速度、芯片價(jià)格及系統(tǒng)性能要求等方面進(jìn)行平衡,選擇最佳結(jié)果。目前,最為常用的功能描述方法是采用均已成為國(guó)際標(biāo)準(zhǔn)的兩種硬件描述語(yǔ)言VHDL和Veilog HDL。</p><p> 2.3 FPGA的設(shè)計(jì)流程</p><p&g
40、t; 2.3.1 基于“自頂向下”設(shè)計(jì)方法的FPGA設(shè)計(jì)流程</p><p> FPGA開(kāi)發(fā)采用的是一種高層次設(shè)計(jì)方法[4],這是一種“自頂向下”的方法,適應(yīng)了當(dāng)今芯片開(kāi)發(fā)的復(fù)雜程度提高、上市時(shí)間緊迫的特點(diǎn)。</p><p> 這種設(shè)計(jì)方法首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框的劃分和結(jié)構(gòu)設(shè)計(jì),在方框圖一級(jí)進(jìn)行仿真、糾錯(cuò),并用硬件描述語(yǔ)言對(duì)高層次的系統(tǒng)進(jìn)行描述,在系統(tǒng)一級(jí)(層)進(jìn)行驗(yàn)
41、證。然后用綜合優(yōu)化工具生成具體門電路的網(wǎng)表,其對(duì)應(yīng)的物理實(shí)現(xiàn)級(jí)(層)可以是印刷電路板或?qū)S眉呻娐?。由于設(shè)計(jì)的主要仿真和調(diào)試過(guò)程是在高層次上完成的,這不僅有利于早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)上的錯(cuò)誤,避免設(shè)計(jì)工作的浪費(fèi),而且也減少了邏輯功能仿真的工作量,提高了設(shè)計(jì)的一次成功率。其設(shè)計(jì)流程步驟如下:</p><p> ?。?)按照“自頂向下”的設(shè)計(jì)方法進(jìn)行系統(tǒng)劃分。</p><p> (2)輸入VHDL
42、代碼。這是高層次設(shè)計(jì)中最為普遍的輸入方式,用任何文本編輯器都可以。此外,還可以采用圖形輸入方式(如框圖、狀態(tài)圖等),這種輸入方式具有直觀、容易理解的優(yōu)點(diǎn)。</p><p> ?。?)將以上的設(shè)計(jì)輸入編譯成標(biāo)準(zhǔn)的VHDL文件,然后將文件調(diào)入仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確。對(duì)于大型設(shè)計(jì),進(jìn)行代碼級(jí)的功能仿真主要是檢驗(yàn)系統(tǒng)功能設(shè)計(jì)的正確性,因?yàn)閷?duì)于大型設(shè)計(jì),綜合、試配要花費(fèi)數(shù)小時(shí),在綜合前對(duì)源代碼仿真,就可
43、以大大減少設(shè)計(jì)重復(fù)的次數(shù)和時(shí)間。</p><p> (4)利用綜合器對(duì)源代碼進(jìn)行綜合優(yōu)化處理,生成門級(jí)描述的網(wǎng)表文件,即將源文件調(diào)入邏輯綜合軟件進(jìn)行邏輯分析處理。</p><p> ?。?)如果整個(gè)設(shè)計(jì)超出器件的宏單元或I/0單元資源,可以將設(shè)計(jì)劃分到多片同系列的器件中。</p><p> (6)將適配器產(chǎn)生的器件編程文件通過(guò)編程器或下載電纜載入到目標(biāo)芯片F(xiàn)PG
44、A中。</p><p> 2.3.2 基于“自頂向下”設(shè)計(jì)流程的優(yōu)點(diǎn)</p><p> 基于“自頂向下”設(shè)計(jì)流程的優(yōu)點(diǎn)[7]如下:</p><p> ?。?)設(shè)計(jì)流程從功能描述開(kāi)始到物理實(shí)現(xiàn)的完成與設(shè)計(jì)人員的開(kāi)發(fā)思路符合,方便設(shè)計(jì)人員進(jìn)行開(kāi)發(fā)。</p><p> (2)功能設(shè)計(jì)完全獨(dú)立于物理實(shí)現(xiàn)。</p><p>
45、; (3)設(shè)計(jì)再利用較方便。設(shè)計(jì)結(jié)果完全可以以一種知識(shí)產(chǎn)權(quán)(Intellectual Property,IP)的方式作為設(shè)計(jì)成果,應(yīng)用于其他電子產(chǎn)品設(shè)計(jì)中,做到設(shè)計(jì)成果再利用。</p><p> (4)易于設(shè)計(jì)的更改。</p><p> ?。?)設(shè)計(jì)并處理大規(guī)模、復(fù)雜電路。目前的FPGA器件正向高集成度、深亞微米工藝發(fā)展。為設(shè)計(jì)系統(tǒng)的小型化、低功耗、高可靠性等提供了集成的手段。<
46、/p><p> (6)設(shè)計(jì)周期縮短,生產(chǎn)率大大提高,產(chǎn)品上市時(shí)間提前,性能明顯提高,產(chǎn)品競(jìng)爭(zhēng)力加強(qiáng)。據(jù)統(tǒng)計(jì),采用“自頂向下”設(shè)計(jì)流程的生產(chǎn)率可達(dá)到傳統(tǒng)設(shè)計(jì)方法的2-4倍。</p><p> FPGA是近幾年集成電路中發(fā)展最快的產(chǎn)品。隨著可編程邏輯器件的高速發(fā)展,可編程邏輯器件將進(jìn)一步擴(kuò)大其領(lǐng)地,向著更高密度和更大容量方向邁進(jìn)。</p><p> 2.4 VHDL硬
47、件描述語(yǔ)言介紹</p><p> 目前,硬件描述語(yǔ)言可謂是百家爭(zhēng)鳴,有VHDL、Superlog、Verilog、SystemC、Cynlib、C++、C Level等。本設(shè)計(jì)采用VHDL語(yǔ)言來(lái)編寫程序的。</p><p> 2.4.1 VHDL語(yǔ)言的發(fā)展歷史</p><p> VHDL語(yǔ)言的基礎(chǔ)知識(shí)與其他高級(jí)語(yǔ)言有許多相同之處[1],但因VHDL語(yǔ)言是一種描
48、述硬件電路的語(yǔ)言,故其基礎(chǔ)知識(shí)也有自己的特點(diǎn),如VHDL語(yǔ)言中信號(hào)是一種特有的對(duì)象。VHDL語(yǔ)言還可以由設(shè)計(jì)人員自己定義數(shù)據(jù)類型,這一點(diǎn)也是其他高級(jí)語(yǔ)言做不到的。</p><p> 自從硬件描述語(yǔ)言產(chǎn)生以后,眾多EDA公司和科研單位紛紛研制開(kāi)發(fā)了適應(yīng)自身EDA開(kāi)發(fā)工具的硬件描述語(yǔ)言。這些硬件描述語(yǔ)言具有很大的差異,并且只能在本公司的EDA開(kāi)發(fā)工具上使用,這大大限制了硬件描述語(yǔ)言的使用。因些電路設(shè)計(jì)人員需要一種強(qiáng)
49、大的面向設(shè)計(jì)的多層次、多領(lǐng)域并得到了廣大EDA廠商認(rèn)同的標(biāo)準(zhǔn)化硬件描述語(yǔ)言。</p><p> ?。?)20世紀(jì)70年代末和80年代初,美國(guó)國(guó)防部提出了VHSIC(Very High Speed Integrated Circuit)計(jì)劃,VHSIC計(jì)劃的目標(biāo)是為下一代集成電路的生產(chǎn)、實(shí)現(xiàn)階段性的工藝極限以及完成10萬(wàn)門級(jí)以上的設(shè)計(jì),建立一項(xiàng)新的描述方法。</p><p> ?。?)198
50、1年,美國(guó)國(guó)防部提出了一種新的硬件描述語(yǔ)言——超高速集成電路硬件描述語(yǔ)言(VHSIC Hardware Description Language),簡(jiǎn)稱VHDL語(yǔ)言。這個(gè)語(yǔ)言只是一個(gè)使電路文體化的一種標(biāo)準(zhǔn),目的是使文本描述的電路設(shè)計(jì)能夠?yàn)槠渌怂斫?,同時(shí)也可以作為一種模型語(yǔ)言并能采用軟件進(jìn)行模擬。</p><p> ?。?)1986年,IEEE致力于VHDL語(yǔ)言的標(biāo)準(zhǔn)化工作,并成立了一個(gè)VHDL語(yǔ)言標(biāo)準(zhǔn)化小組。
51、經(jīng)過(guò)多次反復(fù)的修改與擴(kuò)充,直到1987年12月,VHDL語(yǔ)言才被接納為IEEE 1076標(biāo)準(zhǔn)。1988年,Milstd454規(guī)定所有為美國(guó)國(guó)防部設(shè)計(jì)的ASIC產(chǎn)品必須采用VHDL語(yǔ)言來(lái)進(jìn)行描述。1993年,IEEE 1076標(biāo)準(zhǔn)被修訂,更新為新的VHDL語(yǔ)言標(biāo)準(zhǔn)IEEE 1164。1996年,IEEE1076.3成為VHDL語(yǔ)言的綜合標(biāo)準(zhǔn)。</p><p> 2.4.2 VHDL語(yǔ)言的特點(diǎn)</p>
52、<p> VHDL語(yǔ)言能夠成為標(biāo)準(zhǔn)化的硬件描述語(yǔ)言并獲得廣泛應(yīng)用,它自身必然具有很多其他硬件描述語(yǔ)言所不具備的優(yōu)點(diǎn)。但是它也并不是一種完全理想的硬件描述語(yǔ)言。同樣,它也具有一些自身的缺點(diǎn),或者說(shuō)VHDL語(yǔ)言還有一些需要不斷完善的地方。圖2-1為VHDL硬件描述語(yǔ)言的優(yōu)缺點(diǎn)對(duì)照。</p><p> 圖2-1 VHDL優(yōu)缺點(diǎn)對(duì)照</p><p> 2.4.3 VHDL語(yǔ)言的開(kāi)
53、發(fā)流程</p><p> VHDL語(yǔ)言作為一種標(biāo)準(zhǔn)化的硬件描述語(yǔ)言[3],在對(duì)硬件電路進(jìn)行描述的過(guò)程中應(yīng)該遵循一定的流程。對(duì)于設(shè)計(jì)人員來(lái)說(shuō),掌握VHDL語(yǔ)言的開(kāi)發(fā)流程圖和開(kāi)發(fā)步驟是具有普遍指導(dǎo)意義的。采用VHDL語(yǔ)言進(jìn)行硬件電路設(shè)計(jì)的流程圖如圖2-2所示。</p><p> 圖2-2 VHDL設(shè)計(jì)流程圖</p><p> 2.4.4 VHDL語(yǔ)言設(shè)計(jì)總結(jié)<
54、;/p><p> 通過(guò)前面對(duì)VHDL的學(xué)習(xí),基本掌握了基于FPGA的VHDL語(yǔ)言的設(shè)計(jì)方法和理念。以下是基于FPGA的VHDL設(shè)計(jì)的一些經(jīng)驗(yàn)。</p><p> 養(yǎng)成良好的編程習(xí)慣是非常重要的[2],特別是在剛開(kāi)始學(xué)習(xí)VHDL設(shè)計(jì)時(shí),一定要注意編寫代碼的格式和風(fēng)格,這對(duì)以后的學(xué)習(xí)和工作都有重大的促進(jìn)意義。</p><p> 良好的編程習(xí)慣就是在滿足功能和性能目標(biāo)的
55、前提下,增強(qiáng)代碼的可讀性、可移植性。良好的代碼編寫風(fēng)格的通則簡(jiǎn)要地概括如下:</p><p> ?。?)對(duì)所有的信號(hào)名、變量名和端口名都用小寫,這樣做是為了和業(yè)界的習(xí)慣保持一致;對(duì)常量名和用戶定義的類型用大寫。</p><p> ?。?)使用有意義的信號(hào)名、端口名、函數(shù)名和參數(shù)名。</p><p> ?。?)信號(hào)名長(zhǎng)度不要太長(zhǎng),要注意簡(jiǎn)潔明了。對(duì)于超過(guò)28個(gè)字符的信
56、號(hào)名,有些EDA工具不能夠識(shí)別,再者太長(zhǎng)的信號(hào)名也不容易記憶。因此,在描述清楚的前提下,根據(jù)信號(hào)本身的功能,盡可能采用較短的信號(hào)命名,最好是利用信號(hào)功能的英文單詞縮寫來(lái)命名。</p><p> ?。?)對(duì)于時(shí)鐘信號(hào)使用clk作為信號(hào)名,如果設(shè)計(jì)中存在多個(gè)時(shí)鐘,使用clk作為時(shí)鐘信號(hào)的前綴,如clk1、clk2、clk_interace等。</p><p> ?。?)對(duì)來(lái)自同一驅(qū)動(dòng)源的信號(hào),
57、在不同的子模塊中采用相同的名字,這要求在芯片總體設(shè)計(jì)時(shí)就定義好頂層子模塊間連線的名字,端口和連接端口的信號(hào)盡可能采用相同的名字。</p><p> ?。?)對(duì)于低電平有效的信號(hào),應(yīng)該以一個(gè)下劃線跟一個(gè)小字母b或n表示(a2b_req_n、a2b_req_b)。注意,在同一個(gè)設(shè)計(jì)中要使用同一個(gè)小寫字母表示低電平有效。</p><p> (7)對(duì)于復(fù)位信號(hào)使用rst作為信號(hào)名,如果復(fù)位信號(hào)是
58、低電平有效,建議使用rst_n。</p><p> (8)盡量遵守業(yè)界已經(jīng)習(xí)慣的一些約定。如*_r表示寄存器輸出,*_a表示異步信號(hào)等等一些習(xí)慣的約定。</p><p> ?。?)在源文件、批處理文件的開(kāi)始處應(yīng)該包含一個(gè)文件頭,文件頭是程序中很重要的一部分,有助于程序閱讀者對(duì)程序的理解,提高程序的可讀性。文件頭一般包含如下的內(nèi)容:文件名,設(shè)計(jì)者,模塊名,模塊的實(shí)現(xiàn)功能概述,使用的仿真軟件
59、以及軟件運(yùn)行的平臺(tái),使用的綜合工具以及工具運(yùn)行的平臺(tái),文件創(chuàng)建時(shí)間,文件修改時(shí)間。</p><p> ?。?0)使用適當(dāng)簡(jiǎn)短的語(yǔ)句注釋所有的進(jìn)程、函數(shù)、端口含義、信號(hào)含義、變量含義及信號(hào)組、變量組的意義等。注釋應(yīng)在代碼附近,要求簡(jiǎn)明扼要,只要足夠說(shuō)明設(shè)計(jì)意圖即可,避免過(guò)于復(fù)雜。</p><p> (11)每一行語(yǔ)句獨(dú)立成行。</p><p> ?。?2)建議采用縮
60、進(jìn)提高續(xù)行和嵌套語(yǔ)句的可讀性。</p><p> ?。?3)在RTL源碼的設(shè)計(jì)中任何元素,包括端口、信號(hào)變量函數(shù)、任務(wù)、模塊等的命名都不能取Verilog和VHDL的保留字。例如:將輸出端口命名為out,就和VHDL的保留字OUT相同,編譯時(shí)就會(huì)報(bào)錯(cuò)。</p><p> ?。?4)在進(jìn)行模塊的端口申明時(shí),每行只申明一個(gè)端口,并建議采用以下順序:輸入信號(hào)的clk、rst、enables ot
61、her control signals、data and adderss signals,然后再申明輸出信號(hào)的clk、rst、enables other control signals、data signals。</p><p> ?。?5)在例化模塊時(shí),使用名字顯式映射而不要采用位置相關(guān)的映射,這樣可以提高代碼的可讀性和避免編譯連線錯(cuò)誤。</p><p> ?。?6)如果同一段代碼要重復(fù)
62、多次,盡可能使用函數(shù),如果有可能,可以將函數(shù)通用化,以使得它可以復(fù)用。</p><p> (17)盡可能使用循環(huán)語(yǔ)句和寄存器組來(lái)提高源代碼的可讀性,這樣可以有效地減少代碼行數(shù)。</p><p> ?。?8)代碼編寫時(shí)的數(shù)據(jù)類型只使用IEEE定義的標(biāo)準(zhǔn)類型。</p><p> (19)在設(shè)計(jì)中不要直接使用數(shù)字,作為例外,可以使用0和1。</p>&l
63、t;p> ?。?0)不要在源代碼中使用嵌入式的dc_shell綜合命令。</p><p> ?。?1)在設(shè)計(jì)中避免實(shí)例化具體的門級(jí)電路。</p><p> 2.5 Quartus II軟件介紹</p><p> 2.5.1 Quartus II 概述</p><p> Quartus II是Altera公司的綜合性PLD開(kāi)發(fā)軟件[
64、8],支持原理圖、VHDL、Verilog-HDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。</p><p> Altera公司的Quartus II軟件提供完整的多平臺(tái)設(shè)計(jì)環(huán)境,能夠直接滿足特定的設(shè)計(jì)需要,為FPGA/CPLD開(kāi)發(fā)提供全面的設(shè)計(jì)環(huán)境。設(shè)計(jì)軟件提供完整的
65、多平臺(tái)設(shè)計(jì)環(huán)境,能夠直接滿足特定設(shè)計(jì)需要,為可編程芯片系統(tǒng)(SOPC)提供全面的設(shè)計(jì)環(huán)境。Quartus II軟件含有FPGA和CPLD設(shè)計(jì)所有階段的解決方案。在Quartus II軟件中,設(shè)計(jì)者可以依照個(gè)人偏好,自定義開(kāi)發(fā)環(huán)境的布局、菜單、命令和圖表等。</p><p> Quartus II的前身——MAX+plus II,雖然是一個(gè)非常成功的開(kāi)發(fā)環(huán)境,但是隨著集成電路的發(fā)展,規(guī)模的飛速擴(kuò)大,MAX+plu
66、s II這種基于底層的開(kāi)發(fā)環(huán)境越來(lái)越不能滿足現(xiàn)在對(duì)系統(tǒng)級(jí)開(kāi)發(fā)的要求,隨著用戶要求的不斷提高,Altera公司終于發(fā)布了它的替代產(chǎn)品——Quartus II。</p><p> Quartus II軟件的一些特性及功能如下:</p><p> ?、啪幾g和時(shí)序逼近的增強(qiáng)特性。</p><p> ⑵時(shí)序估算迅速提高時(shí)序性能。</p><p>
67、?、荢OPC Builder——提高設(shè)計(jì)效率。</p><p> ?、菼/O引腳分配和確認(rèn)。</p><p> ?、蒆ardCopy II結(jié)構(gòu)化ASIC HardCopy II移植支持。</p><p><b> ⑹OS支持。</b></p><p> ?、薗uartus II軟件增加的器件支持。</p>
68、<p> 2.5.2 Quartus II的設(shè)計(jì)流程</p><p> 用戶首先對(duì)所做項(xiàng)目進(jìn)行設(shè)計(jì)[10],明確設(shè)計(jì)目的、設(shè)計(jì)要求。然后利用原理圖輸入方式或文本輸入方式進(jìn)行設(shè)計(jì)輸入。輸入完成后進(jìn)行編譯,若編譯過(guò)程中發(fā)現(xiàn)錯(cuò)誤,則應(yīng)檢查設(shè)計(jì)輸入以修改錯(cuò)誤,直至沒(méi)有錯(cuò)誤產(chǎn)生。編譯完成后進(jìn)行仿真,檢查是否達(dá)到設(shè)計(jì)要求,若未達(dá)到要求,需重新檢查設(shè)計(jì)輸入及編譯過(guò)程,不斷迭代、收斂直至滿足設(shè)計(jì)要求。最后將設(shè)計(jì)配
69、置到目標(biāo)器件中進(jìn)行硬件驗(yàn)證與測(cè)試。</p><p> Quartus II的設(shè)計(jì)流程圖如圖2-3所示。</p><p> 圖2-3 Quartus II的設(shè)計(jì)流程圖</p><p> 2.5.3 Quartus II設(shè)計(jì)方法</p><p> 在建立新設(shè)計(jì)時(shí),應(yīng)重視和考慮Quartus II軟件提供的設(shè)計(jì)方法,包括自上而下或自下而上的
70、漸進(jìn)式設(shè)計(jì)流程,以及基于模塊的設(shè)計(jì)流程。不管是否使用EDA設(shè)計(jì)輸入和綜合工具,都可以使用這些設(shè)計(jì)流程。</p><p> 自上而下與自下而上的設(shè)計(jì)方法比較:</p><p> Quartus II軟件同時(shí)支持自上而下和自下而上的編譯過(guò)程。在自上而下的編譯過(guò)程中,一個(gè)設(shè)計(jì)人員或工程負(fù)責(zé)人在軟件中對(duì)整個(gè)設(shè)計(jì)進(jìn)行編譯。不同的設(shè)計(jì)人員或者IP提供者設(shè)計(jì)并驗(yàn)證設(shè)計(jì)的不同部分,工程負(fù)責(zé)人在設(shè)計(jì)實(shí)體
71、完成后將其加入到工程中。工程負(fù)責(zé)人從整體上編譯并優(yōu)化頂層工程。在設(shè)計(jì)中完成的部分得到適配結(jié)果,當(dāng)設(shè)計(jì)的其他部分改動(dòng)時(shí),其性能保持不變。</p><p> 在自下而上的設(shè)計(jì)過(guò)程中,每個(gè)設(shè)計(jì)人員在各自的工程中對(duì)其設(shè)計(jì)進(jìn)行優(yōu)化后,將每一個(gè)底層工程集成到一個(gè)頂層工程中。漸進(jìn)式編譯提供導(dǎo)出和導(dǎo)入功能來(lái)實(shí)現(xiàn)這種設(shè)計(jì)方法。</p><p> 作為底層模塊設(shè)計(jì)人員,可以針對(duì)設(shè)計(jì),導(dǎo)出優(yōu)化后的網(wǎng)表和一組
72、分配。然后,工程負(fù)責(zé)人將每一個(gè)設(shè)計(jì)模塊作為設(shè)計(jì)分區(qū)導(dǎo)入到頂層工程中。在這種情況下,工程負(fù)責(zé)人必須指導(dǎo)底層模塊設(shè)計(jì)人員,保證每一分區(qū)使用適當(dāng)?shù)钠骷Y源。</p><p> 在完整的漸進(jìn)式編譯流程中,如果以前出于保持性能不變的原因而采用自下而上的方法,那么現(xiàn)在可以采用自上而下方法來(lái)達(dá)到同樣的目的。這一功能之所以重要出于兩方面的原因。第一,自上而下流程要比對(duì)應(yīng)的自下而上流程執(zhí)行起來(lái)簡(jiǎn)單一些。第二,自上而下的方法為設(shè)計(jì)
73、軟件提供整個(gè)設(shè)計(jì)的信息,因此,可以進(jìn)行全局優(yōu)化,而在自下而上的設(shè)計(jì)方法中,軟件在編譯每一個(gè)底層分區(qū)時(shí),并不知道頂層設(shè)計(jì)其他分區(qū)的情況,因此,必須進(jìn)行資源均衡和時(shí)序預(yù)算。</p><p> 3 函數(shù)信號(hào)發(fā)生器的FPGA設(shè)計(jì)</p><p> 3.1 三角波信號(hào)發(fā)生器的設(shè)計(jì)</p><p> 3.1.1 三角波的VHDL描述</p><p>
74、; delta.vhd:設(shè)定一個(gè)變量n,定義其范圍為“00000111”到“11111000”,每到一個(gè)脈沖,分別對(duì)它進(jìn)行+8或-8,然后把改變后的n送到輸出y,生成了三角波信號(hào)。三角波產(chǎn)生電路的VHDL描述如下。</p><p> ----------------------------------delta.vhd(三角波) ----------------------------------</p
75、><p> LIBRARY IEEE;</p><p> USE ieee.std_logic_1164.ALL;</p><p> USE ieee.std_logic_unsigned.ALL;</p><p> ENTITY delta IS</p><p> PORT(clk,clr:in std_log
76、ic;</p><p> y:OUT std_logic_vector(7 DOWNTO 0));</p><p> END delta;</p><p> ARCHITECTURE rtl OF delta IS</p><p><b> BEGIN</b></p><p> PROC
77、ESS(clk,clr)</p><p> VARIABLE n:std_logic_vector(7 DOWNTO 0);</p><p> VARIABLE f:std_logic; </p><p><b> BEGIN</b></p><p> IF clr=
78、'0'THEN </p><p> n:="00000000";</p><p> ELSIF CLK'EVENT AND clk='1'THEN</p><p> IF f='0'THEN</p><p
79、> IF n="11111000"THEN</p><p> n:="11111111";</p><p><b> f:='1';</b></p><p><b> ELSE</b></p><p><b> n:=
80、n+8;</b></p><p><b> END IF;</b></p><p><b> ELSE</b></p><p> IF n="00000111"THEN</p><p> n:="00000000";</p>
81、<p><b> f:='0';</b></p><p><b> ELSE</b></p><p><b> n:=n-8;</b></p><p><b> END IF;</b></p><p><b>
82、 END IF;</b></p><p><b> END IF;</b></p><p><b> y<=n;</b></p><p> END PROCESS;</p><p><b> END rtl;</b></p><p&
83、gt; 3.1.2 三角波信號(hào)發(fā)生器的邏輯電路圖</p><p> 通過(guò)電路觀察器(RTL Viewer)可查看設(shè)計(jì)文件通過(guò)分析與綜合之后生成的邏輯電路構(gòu)成。三角波信號(hào)發(fā)生器的RTL圖如圖3-1所示。</p><p> 圖3-1 三角波信號(hào)發(fā)生器的RTL圖</p><p> 3.2 正弦波信號(hào)發(fā)生器的設(shè)計(jì)</p><p> 3.2.
84、1 正弦波的VHDL描述</p><p> sin.vhd:通過(guò)定義正弦數(shù)據(jù)表,每到一個(gè)脈沖,逐次查找并輸出相應(yīng)的正弦數(shù)據(jù),生成了正弦波形。當(dāng)給輸入信號(hào)clr賦于1值時(shí),檢測(cè)到時(shí)鐘clk的上升沿。如果tmp達(dá)到63時(shí)則清0,否則tmp就做加1的操作。正弦波產(chǎn)生電路的VHDL描述如下。</p><p> ---------------------------------- sin.vhd
85、(正弦波) ----------------------------------</p><p> LIBRARY IEEE;</p><p> USE ieee.std_logic_1164.ALL;</p><p> USE ieee.std_logic_unsigned.ALL;</p><p> USE ieee.std_lo
86、gic_ARITH.ALL;</p><p> ENTITY sin IS</p><p> PORT(clk,clr:IN std_logic;</p><p> d:OUT std_logic_vector(7 DOWNTO 0)); </p><p><b> END;</b></p>
87、<p> ARCHITECTURE rtl OF sin IS</p><p><b> BEGIN</b></p><p> PROCESS(clk,clr)</p><p> VARIABLE tmp:integer RANGE 0 TO 63;</p><p><b> BEGIN&
88、lt;/b></p><p> IF clr='0'THEN</p><p> d<="00000000";</p><p> ELSIF clk'event AND clk='1'THEN </p><p> IF tmp=63 THE
89、N </p><p> tmp:=0; </p><p><b> ELSE</b></p><p> tmp:=tmp+1; </p><p>&
90、lt;b> END IF; </b></p><p> CASE tmp IS </p><p> WHEN 00=>d<=conv_std_logic_vector(255,8);</p><p> WHEN 01=>d<=conv_std_logic_ve
91、ctor(254,8);</p><p> WHEN 02=>d<=conv_std_logic_vector(252,8);</p><p> WHEN 03=>d<=conv_std_logic_vector(249,8);</p><p> WHEN 04=>d<=conv_std_logic_vector(245,8
92、);</p><p> WHEN 05=>d<=conv_std_logic_vector(239,8);</p><p> WHEN 06=>d<=conv_std_logic_vector(233,8);</p><p> WHEN 07=>d<=conv_std_logic_vector(225,8);</p&g
93、t;<p> WHEN 08=>d<=conv_std_logic_vector(217,8);</p><p> WHEN 09=>d<=conv_std_logic_vector(207,8);</p><p> WHEN 10=>d<=conv_std_logic_vector(197,8);</p><p&
94、gt; WHEN 11=>d<=conv_std_logic_vector(186,8);</p><p> WHEN 12=>d<=conv_std_logic_vector(174,8);</p><p> WHEN 13=>d<=conv_std_logic_vector(162,8);</p><p> WHEN
95、14=>d<=conv_std_logic_vector(150,8);</p><p> WHEN 15=>d<=conv_std_logic_vector(137,8);</p><p> WHEN 16=>d<=conv_std_logic_vector(124,8);</p><p> WHEN 17=>d&l
96、t;=conv_std_logic_vector(112,8);</p><p> WHEN 18=>d<=conv_std_logic_vector(99,8); </p><p> WHEN 19=>d<=conv_std_logic_vector(87,8); </p><p> WHEN 20=>d<=conv_st
97、d_logic_vector(75,8);</p><p> WHEN 21=>d<=conv_std_logic_vector(64,8); </p><p> WHEN 22=>d<=conv_std_logic_vector(53,8); </p><p> WHEN 23=>d<=conv_std_logic_vec
98、tor(43,8);</p><p> WHEN 24=>d<=conv_std_logic_vector(34,8); </p><p> WHEN 25=>d<=conv_std_logic_vector(26,8); </p><p> WHEN 26=>d<=conv_std_logic_vector(19,8);&
99、lt;/p><p> WHEN 27=>d<=conv_std_logic_vector(13,8); </p><p> WHEN 28=>d<=conv_std_logic_vector(8,8); </p><p> WHEN 29=>d<=conv_std_logic_vector(4,8);</p>&
100、lt;p> WHEN 30=>d<=conv_std_logic_vector(1,8); </p><p> WHEN 31=>d<=conv_std_logic_vector(0,8); </p><p> WHEN 32=>d<=conv_std_logic_vector(0,8);</p><p> WHE
101、N 33=>d<=conv_std_logic_vector(1,8); </p><p> WHEN 34=>d<=conv_std_logic_vector(4,8); </p><p> WHEN 35=>d<=conv_std_logic_vector(8,8);</p><p> WHEN 36=>d&l
102、t;=conv_std_logic_vector(13,8); </p><p> WHEN 37=>d<=conv_std_logic_vector(19,8); </p><p> WHEN 38=>d<=conv_std_logic_vector(26,8);</p><p> WHEN 39=>d<=conv_std
103、_logic_vector(34,8); </p><p> WHEN 40=>d<=conv_std_logic_vector(43,8); </p><p> WHEN 41=>d<=conv_std_logic_vector(53,8);</p><p> WHEN 42=>d<=conv_std_logic_vect
104、or(64,8); </p><p> WHEN 43=>d<=conv_std_logic_vector(75,8); </p><p> WHEN 44=>d<=conv_std_logic_vector(87,8);</p><p> WHEN 45=>d<=conv_std_logic_vector(99,8); &
105、lt;/p><p> WHEN 46=>d<=conv_std_logic_vector(112,8);</p><p> WHEN 47=>d<=conv_std_logic_vector(124,8);</p><p> WHEN 48=>d<=conv_std_logic_vector(137,8);</p>
106、<p> WHEN 49=>d<=conv_std_logic_vector(150,8);</p><p> WHEN 50=>d<=conv_std_logic_vector(162,8);</p><p> WHEN 51=>d<=conv_std_logic_vector(174,8);</p><p>
107、 WHEN 52=>d<=conv_std_logic_vector(186,8);</p><p> WHEN 53=>d<=conv_std_logic_vector(197,8);</p><p> WHEN 54=>d<=conv_std_logic_vector(207,8);</p><p> WHEN 55=
108、>d<=conv_std_logic_vector(217,8);</p><p> WHEN 56=>d<=conv_std_logic_vector(225,8);</p><p> WHEN 57=>d<=conv_std_logic_vector(233,8);</p><p> WHEN 58=>d<=
109、conv_std_logic_vector(239,8);</p><p> WHEN 59=>d<=conv_std_logic_vector(245,8);</p><p> WHEN 60=>d<=conv_std_logic_vector(249,8);</p><p> WHEN 61=>d<=conv_std_l
110、ogic_vector(252,8);</p><p> WHEN 62=>d<=conv_std_logic_vector(254,8);</p><p> WHEN 63=>d<=conv_std_logic_vector(255,8); </p><p> WHEN OTHERS=>NULL;</p><
111、p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END rtl;</b></p><p> 3.2.2 正弦波信號(hào)發(fā)生器的邏輯電路圖</p&g
112、t;<p> 正弦波信號(hào)發(fā)生器的RTL圖如圖3-2所示。</p><p> 圖3-2 正弦波信號(hào)發(fā)生器的RTL圖</p><p> 3.3 方波信號(hào)發(fā)生器的設(shè)計(jì)</p><p> 3.3.1 方波的VHDL描述</p><p> square.vhd:設(shè)定一個(gè)變量cnt,每到一個(gè)脈沖,檢測(cè)它是否小于31,若小于31,則
113、把高電平送到輸出,并對(duì)cnt+1,否則就輸出低電平,并賦值cnt為0,生成了方波信號(hào)。方波產(chǎn)生電路的VHDL描述如下。</p><p> ---------------------------------- square .vhd(方波) ----------------------------------</p><p> LIBRARY IEEE;</p><p
114、> USE ieee.std_logic_1164.ALL;</p><p> ENTITY square IS</p><p> PORT(clk,clr:IN std_logic;</p><p> q:OUT std_logic_vector(7 DOWNTO 0)); </p><p&
115、gt;<b> END;</b></p><p> ARCHITECTURE rtl OF square IS</p><p> SIGNAL a:std_logic;</p><p><b> BEGIN</b></p><p> PROCESS(clk,clr)</p>
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 函數(shù)信號(hào)發(fā)生器的fpga設(shè)計(jì)畢業(yè)論文
- 基于fpga的函數(shù)信號(hào)發(fā)生器設(shè)計(jì)畢業(yè)論文
- 函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)【畢業(yè)論文】
- 簡(jiǎn)易函數(shù)信號(hào)發(fā)生器設(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文 基于fpga的信號(hào)發(fā)生器設(shè)計(jì)
- 畢業(yè)論文--基于fpga的信號(hào)發(fā)生器設(shè)計(jì)
- 基于fpga的dds信號(hào)發(fā)生器設(shè)計(jì)【畢業(yè)論文】
- 基于fpga的正交信號(hào)發(fā)生器設(shè)計(jì)【畢業(yè)論文】
- 多波形函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)-畢業(yè)論文
- 多波形函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)-畢業(yè)論文
- 基于FPGA的函數(shù)信號(hào)發(fā)生器設(shè)計(jì).pdf
- 基于fpga的智能函數(shù)發(fā)生器畢業(yè)論文
- dds信號(hào)發(fā)生器的fpga實(shí)現(xiàn)【畢業(yè)論文】
- 基于fpga的dds信號(hào)發(fā)生器-畢業(yè)論文
- 畢業(yè)論文--多功能函數(shù)信號(hào)發(fā)生器
- 基于fpga的任意信號(hào)發(fā)生器畢業(yè)論文
- 合成信號(hào)發(fā)生器設(shè)計(jì)畢業(yè)論文
- 函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 函數(shù)信號(hào)發(fā)生器-畢業(yè)設(shè)計(jì)
- 函數(shù)信號(hào)發(fā)生器(畢業(yè)設(shè)計(jì))
評(píng)論
0/150
提交評(píng)論