畢業(yè)論文--基于vhdl的數(shù)字頻率計設(shè)計_第1頁
已閱讀1頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  科技學(xué)院2009屆本科畢業(yè)論文</p><p>  基于VHDL的數(shù)字頻率計設(shè)計</p><p><b>  2009年5月</b></p><p><b>  目 錄</b></p><p><b>  目 錄1</b></p>

2、<p><b>  中 文 摘 要2</b></p><p>  ABSTRACT3</p><p>  第一章 引 言4</p><p>  第二章 設(shè)計語言和軟件概述6</p><p>  2.1 EDA技術(shù)6</p><p>  2.2 VHDL語言介紹8</

3、p><p>  2.3 Max+plusⅡ軟件介紹9</p><p>  第三章 系統(tǒng)設(shè)計方法概述12</p><p>  3.1 電子系統(tǒng)的設(shè)計方法12</p><p>  3.2 “自頂向下”與“自頂向上”的設(shè)計方法14</p><p>  3.3系統(tǒng)組成16</p><p>  第

4、四章 數(shù)字頻率計的設(shè)計18</p><p>  4.1 測頻控制信號發(fā)生器18</p><p>  4.2 帶時鐘使能十進制計數(shù)器21</p><p>  4.3 7段顯示譯碼器LED724</p><p>  4.4 動態(tài)LED 數(shù)碼管顯示sm27</p><p>  4.5 本系統(tǒng)的頂層模塊31&

5、lt;/p><p>  第五章 總 結(jié)40</p><p><b>  參考文獻41</b></p><p><b>  致 謝42</b></p><p>  誠 信 責(zé) 任 書43</p><p>  基于VHDL的數(shù)字頻率計設(shè)計</p><

6、p><b>  中 文 摘 要</b></p><p>  隨著計算機技術(shù)、超大規(guī)模集成電路、EDA(Electronics Design Automation)技術(shù)的發(fā)展和可編程邏輯器件的廣泛應(yīng)用,傳統(tǒng)的自下而上的數(shù)字電路設(shè)計方法、工具、器件已遠遠落后于當(dāng)今信息技術(shù)的發(fā)展。基于EDA技術(shù)和硬件描述語言的自上而下的設(shè)計技術(shù)正在承擔(dān)起越來越多的數(shù)字系統(tǒng)設(shè)計任務(wù)。本論文采用自上向下的設(shè)計方

7、法,基于VHDL硬件描述語言設(shè)計了一種數(shù)字頻率計,并在Max+plusⅡ平臺上進行了仿真。</p><p>  關(guān)鍵詞: EDA,VHDL,Max+plusⅡ,數(shù)字頻率計</p><p><b>  ABSTRACT</b></p><p>  With the development of computer, VLSI and EDA and

8、 the application of programmable logic devices, the traditional bottom-up design method, tools and devices have been far behind the development of information technology. The top-down design method based on the EDA techn

9、ology and VHDL is used to design the digital system. In this paper, a digital cymometer is designed using the top-down method based on VHDL and then simulated on Max+plusⅡplatform.</p><p>  Keywords: EDA, V

10、HDL, Max+plusⅡ, digital cymometer</p><p><b>  第一章 引 言</b></p><p>  在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此頻率的測量就顯得更為重要。測量頻率的方法有多種,其中電子計數(shù)器測量頻率具有精度高、使用方便、測量迅速,以及便于實現(xiàn)測量過程自動化等

11、優(yōu)點,是頻率測量的重要手段之一。數(shù)字頻率計是計算機、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的電子測量儀器。它是一種用十進制數(shù)字顯示被測信號頻率的數(shù)字測量儀器。它的基本功能是測量正弦信號,方波信號及其他各種單位時間內(nèi)變化的物理量。在進行模擬、數(shù)字電路的設(shè)計、安裝、調(diào)試過程中,由于其使用十進制數(shù)顯示,測量迅速,精確度高,顯示直觀,經(jīng)常要用到頻率計。傳統(tǒng)的數(shù)字頻率計是由中大規(guī)模集成電路構(gòu)成,但這類頻率計會產(chǎn)生比較大的延時,測量范圍較小,精度

12、不高,可靠性差且電路復(fù)雜。隨著集成電路技術(shù)的發(fā)展,可以將整個系統(tǒng)集成到一個塊上,實現(xiàn)所謂的片上系統(tǒng)(SOC)。片上系統(tǒng)的實現(xiàn)將大大減小系統(tǒng)的體積,降低系統(tǒng)的成本,提高系統(tǒng)的處理速度和可靠性。</p><p>  數(shù)字頻率計測頻有兩種方式:一是直接測頻法,即在一定閘門時間內(nèi)測量被測信號的脈沖個數(shù);二是間接測頻法,如周期測頻法。直接測頻法適用于高頻信號的頻率測量,間接測頻法適用于低頻信號的頻率測量。本設(shè)計采用了直接測

13、量法,在一定閘門時間內(nèi)測量被測信號的脈沖個數(shù)[10]。</p><p>  在信息技術(shù)高度發(fā)展的今天,電子系統(tǒng)數(shù)字化已成為有目共睹的趨勢。</p><p>  EDA 工具為開發(fā)平臺, 利用VHDL(Very High Speed Integrated Circuit Hardware Description Language, 超高速集成電路硬件描述語言) 工業(yè)標(biāo)準(zhǔn)硬件描述語言, 其主要

14、用于數(shù)字系統(tǒng)的結(jié)構(gòu)、功能和接口,采用自頂向下和基于庫的設(shè)計, 設(shè)計者不但可以不必了解硬件結(jié)構(gòu)設(shè)計, 而且將使系統(tǒng)大大簡化, 提高整體的性能和可靠性[9]。</p><p>  第二章 設(shè)計語言和軟件概述</p><p>  2.1 EDA技術(shù)</p><p>  微電子技術(shù)的進步主要表現(xiàn)在大規(guī)模集成電路加工技術(shù)即半導(dǎo)體工藝技術(shù)的發(fā)展上,使得表征半導(dǎo)體工藝水平的線寬

15、已經(jīng)達到了60nm,并還在不斷地縮小,而在硅片單位面積上,集成了更多的晶體管。集成電路設(shè)計正在不斷地向超大規(guī)模、極低功耗和超高速的方向發(fā)展,專用集成電路ASIC(Application Specific Integrated Circuit)的設(shè)計成本不斷降低,在功能上,現(xiàn)代的集成電路已能夠?qū)崿F(xiàn)單片電子系統(tǒng)SOC(System On a Chip)[3]。 現(xiàn)代電子設(shè)計技術(shù)的核心已日趨轉(zhuǎn)向基于計算機的電子設(shè)計自動化技術(shù),即ED

16、A(Electronic Design Automation)技術(shù)。EDA技術(shù)就是依賴功能強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言HDL(Hardware Description Language)為系統(tǒng)邏輯描述手段完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合、布局布線以及邏輯優(yōu)化和仿真測試,直至實現(xiàn)既定的電子線路系統(tǒng)功能。EDA技術(shù)使得設(shè)計者的工作僅限于利用軟件的方式,即利用硬件描述語言和EDA軟件來完成對系統(tǒng)硬

17、件功能的實現(xiàn),這是</p><p>  2.2 VHDL語言介紹</p><p>  硬件描述語言(hardware description language,HDL)是電子系統(tǒng)硬件行為描述、結(jié)構(gòu)描述。數(shù)據(jù)流描述的語言。目前利用硬件描述語言可以進行數(shù)字電子系統(tǒng)的設(shè)計。隨著研究的深入,利用硬件描述語言進行模擬電子系統(tǒng)設(shè)計或混合電子系統(tǒng)設(shè)計也正在探索中。</p><p>

18、;  國外硬件描述語言種類很多,有的從Pascal發(fā)展而來,也有一些從C語言發(fā)展而來。有些HDL成為IEEE標(biāo)準(zhǔn),但大部分是企業(yè)標(biāo)準(zhǔn)。VHDL來源于美國軍方,其他的硬件描述語言則多來源于民間公司。在我國比較有影響的有兩種硬件描述語言:VHDL語言和Verilog HDL語言。這兩種語言已成為IEEE標(biāo)準(zhǔn)語言。</p><p>  VHDL(Very High Speed Integrated Circuit Ha

19、rdware Description Language,超高速集成電路硬件描述語言)誕生于1982 年,是由美國國防部開發(fā)的一種快設(shè)計電路的工具,目前已成為IEEE 的一種工業(yè)標(biāo)準(zhǔn)硬件描述語言。相比傳統(tǒng)的電路系統(tǒng)的設(shè)計方法,VHDL具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下(Top to Down)和基于庫(LibraryBased)的設(shè)計的特點。并且已經(jīng)成為系統(tǒng)描述的國際公認標(biāo)準(zhǔn),得到眾多EDA公司的支持。相比傳統(tǒng)的電路系統(tǒng)的設(shè)計

20、方法,VHDL 具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下和基于庫的設(shè)計的特點,因此設(shè)計者可以不必了解硬件結(jié)構(gòu)。</p><p>  VHDL語言覆蓋面廣,描述能力強,能支持硬件的設(shè)計、驗證、綜合和測試,是一種多層次的硬件描述語言。其設(shè)計描述可以是描述電路具體組成的結(jié)構(gòu)描述,也可以是描述電路功能的行為描述。這些描述可以從最抽象的系統(tǒng)級直到最精確的邏輯級,甚至門級。</p><p>  

21、VHDL對電路的行為進行描述,并進行仿真和糾錯,然后在系統(tǒng)一級進行驗證,最后再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網(wǎng)表,下載到具體的CPLD器件中去,從而實現(xiàn)可編程的專用集成電路的設(shè)計。</p><p>  運用VHDL語言設(shè)計系統(tǒng)一般采用自頂向下分層設(shè)計的方法,首先從系統(tǒng)級功能設(shè)計開始,對系統(tǒng)高層模塊進行行為描述和功能仿真。系統(tǒng)的功能驗證完成后,將抽象的高層設(shè)計自頂向下逐級細化,直到與所用可編程邏輯器件相

22、對應(yīng)的邏輯描述。</p><p>  2.3 Max+plusⅡ軟件介紹</p><p>  Max+plusⅡ是Altera公司提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大可編程邏輯器件的供應(yīng)商之一。Max+plusⅡ界面友好,使用便捷,被譽為業(yè)界最易用易學(xué)的EDA軟件。在Max+plusⅡ上可以完成設(shè)計輸入、元件適配、時序仿真和功能仿真、編程下載整個流程,它提供了一

23、種與結(jié)構(gòu)無關(guān)的設(shè)計環(huán)境,是設(shè)計者能方便地進行設(shè)計輸入、快速處理和器件編程。</p><p>  Max+plusⅡ開發(fā)系統(tǒng)的特點:</p><p><b>  1、開放的界面</b></p><p>  Max+plusⅡ支持與Cadence,Exemplarlogic,Mentor Graphics,Synplicty,Viewlogic和其

24、它公司所提供的EDA工具接口。</p><p><b>  2、與結(jié)構(gòu)無關(guān)</b></p><p>  Max+plusⅡ系統(tǒng)的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可編程邏輯器件,提供了世界上唯一真正與結(jié)構(gòu)無關(guān)的可編程邏輯設(shè)計環(huán)境。</p>

25、;<p><b>  3、完全集成化</b></p><p>  Max+plusⅡ的設(shè)計輸入、處理與較驗功能全部集成在統(tǒng)一的開發(fā)環(huán)境下,這樣可以加快動態(tài)調(diào)試、縮短開發(fā)周期。</p><p><b>  4、豐富的設(shè)計庫</b></p><p>  Max+plusⅡ提供豐富的庫單元供設(shè)計者調(diào)用,其中包括74

26、系列的全部器件和多種特殊的邏輯功能(Macro-Function)以及新型的參數(shù)化的兆功能(Mage-Function)。</p><p><b>  5、模塊化工具</b></p><p>  設(shè)計人員可以從各種設(shè)計輸入、處理和較驗選項中進行選擇從而使設(shè)計環(huán)境用戶化。</p><p>  6、硬件描述語言(HDL)</p>&l

27、t;p>  Max+plusⅡ軟件支持各種HDL設(shè)計輸入選項,包括VHDL、Verilog HDL和Altera自己的硬件描述語言AHDL。</p><p>  7、Opencore特征</p><p>  Max+plusⅡ軟件具有開放核的特點,允許設(shè)計人員添加自己認為有價值的宏函數(shù)。</p><p>  第三章 系統(tǒng)設(shè)計方法概述</p>&l

28、t;p>  3.1 電子系統(tǒng)的設(shè)計方法</p><p>  現(xiàn)代電子系統(tǒng)一般由模擬子系統(tǒng)、數(shù)字子系統(tǒng)和微處理器子系統(tǒng)三大部分組成。從概念上講,凡是利用數(shù)字技術(shù)處理和傳輸信息的電子系統(tǒng)都可以稱為數(shù)字系統(tǒng)。傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計只能對電路板進行設(shè)計,通過設(shè)計電路板來實現(xiàn)系統(tǒng)功能[4]。利用EDA工具,采用可編程器件,通過設(shè)計芯片來實現(xiàn)系統(tǒng)功能,這種方法稱為基于芯片的設(shè)計方法。新的設(shè)計方法能夠由設(shè)計者定義器件的內(nèi)部邏

29、輯,將原來由電路板設(shè)計完成的大部分工作放在芯片的設(shè)計中進行。這樣不僅可以通過芯片設(shè)計實現(xiàn)多種數(shù)字邏輯系統(tǒng),而且由于管腳定義的靈活性,大大減輕了電路圖設(shè)計和電路板設(shè)計的工作量和難度,從而有效的增強了設(shè)計的靈活性,提高了工作效率。同時,基于芯片的設(shè)計可以認減少芯片的數(shù)量,縮小系統(tǒng)體積,降低能源消耗。如圖3.1[6]所示為電子系統(tǒng)的傳統(tǒng)設(shè)計方法和基于芯片的設(shè)計方法比照。</p><p>  圖3.1〔a)傳統(tǒng)設(shè)計方法

30、 (b)基于芯片設(shè)計方法</p><p>  可編程邏輯器件和EDA技術(shù)給今天的硬件系統(tǒng)設(shè)計者提供了強有力的工具,使得電子系統(tǒng)的設(shè)計方法發(fā)生了質(zhì)的變化?,F(xiàn)在,只要擁有一臺計算機、一套相應(yīng)的EDA軟件和空白的可編程邏輯器件芯片,在實驗室里就可以完成數(shù)字系統(tǒng)的設(shè)計和生產(chǎn)。</p><p>  3.2 “自頂向下”與“自頂向上”的設(shè)計方法</p><p>  過

31、去,電子產(chǎn)品設(shè)計的基本思路一直是先選用標(biāo)準(zhǔn)通用集成電路片,再由這些芯片和其他元件自下而上的構(gòu)成電路、子系統(tǒng)和系統(tǒng)。這樣設(shè)計出的電子系統(tǒng)所用元件的種類和數(shù)量均較多,體積與功耗大,可靠性差。隨著集成電路技術(shù)的不斷進步,現(xiàn)在人們可以把數(shù)以億計的晶體管,幾萬門、幾十萬門、甚至幾百萬門的電路集成在一塊芯片上?;贓DA技術(shù)的設(shè)計方法為“自頂向下”設(shè)計,其步驟是采用可完全獨立于目標(biāo)器件芯片物理結(jié)構(gòu)的硬件描述語言,在系統(tǒng)的基本功能或行為級上對設(shè)計的產(chǎn)

32、品進行行為描述和定義,結(jié)合多層次的仿真技術(shù),在確保設(shè)計的可行性與正確性的前提下,完成功能確認。然后利用EDA工具的邏輯綜合功能,把功能描述轉(zhuǎn)換為某一具體目標(biāo)芯片的網(wǎng)表文件,經(jīng)編程器下載到可編程目標(biāo)芯片中(如FPGA芯片),使該芯片能夠?qū)崿F(xiàn)設(shè)計要求的功能。這樣,一塊芯片就是一個數(shù)字電路系統(tǒng)[5]。使電路系統(tǒng)體積大大減小,可靠性得到提高。半導(dǎo)體集成電路己由早期的單元集成、部件電路集成發(fā)展到整機電各集成和系統(tǒng)電路集成。電子系統(tǒng)的設(shè)計方法也由過

33、去的那種集成電路廠家提供通用芯片,整機系統(tǒng)用戶采用這些芯片組成電子系統(tǒng)的“bottom-up”(自底向上)方法改變?yōu)橐?lt;/p><p>  圖 3.2“自頂向下”與“自底向上”設(shè)計方法的步驟</p><p>  在“自頂向下”的設(shè)計中,首先需要進行行為設(shè)計,確定該電子系統(tǒng)或VLSI芯片的功能、性能及允許的芯片面積和成本等。接著進行結(jié)構(gòu)設(shè)計,根據(jù)該電子系統(tǒng)或芯片的特點,將其分解為接口清晰、相

34、互關(guān)系明確、盡可能簡單的子系統(tǒng),得到一個總體結(jié)構(gòu)。這個結(jié)構(gòu)可能包括算術(shù)運算單元、控制單元、數(shù)據(jù)通道、各種算法狀態(tài)機等。下一步是把結(jié)構(gòu)轉(zhuǎn)換成邏輯圖,即進行邏輯設(shè)計。接著進行電路設(shè)計,邏輯圖將進一步轉(zhuǎn)化成電路圖。在很多情況下,這時需進行硬件仿真,以最終確定邏輯設(shè)計的正確性。最后是進行版圖設(shè)計,即將電路圖轉(zhuǎn)化成版圖。</p><p>  傳統(tǒng)的硬件設(shè)計采用自底向上(bottom_up)的設(shè)計方法。這種設(shè)計方法在系統(tǒng)的設(shè)

35、計后期進行仿真和調(diào)試,一旦考慮不周,系統(tǒng)設(shè)計存在較大缺陷,就有可能重新設(shè)計系統(tǒng),使設(shè)計周期大大增加?!白缘紫蛏稀钡脑O(shè)計,一般是在系統(tǒng)劃分和分解的基礎(chǔ)上先進行單元設(shè)計,在單元的精心設(shè)計后逐步向上進行功能塊沒計,然后再進行子系統(tǒng)的設(shè)計,最后完成系統(tǒng)的總體設(shè)計。</p><p><b>  3.3系統(tǒng)組成</b></p><p>  系統(tǒng)組成框圖如圖3.3所示,它主要由4

36、個模塊組成,分別是: 測頻控制信號發(fā)生器電路,計數(shù)模塊電路,動態(tài)掃描電路sm和顯示譯碼驅(qū)動電路。因為是7位十進制數(shù)字頻率計,所以計數(shù)器szsn10需用7個。由于實驗硬件要求所以設(shè)計一個動態(tài)LED 數(shù)碼管顯示即掃描模塊[2]。當(dāng)系統(tǒng)正常工作時,脈沖發(fā)生器提供的1HZ 的輸入信號,經(jīng)過測頻控制信號發(fā)生器進行信號的變換,產(chǎn)生一個2秒的計數(shù)信號和一個清零信號,被測信號被送入計數(shù)模塊,計數(shù)模塊對輸入的矩形波進行計數(shù),然后將計數(shù)結(jié)果送入動態(tài)掃描電路

37、進行選擇輸出,輸出結(jié)果由顯示譯碼驅(qū)動電路將二進制表示的(BCD碼)計數(shù)結(jié)果轉(zhuǎn)換成相應(yīng)的十進制結(jié)果,在數(shù)碼管上可以看到計數(shù)結(jié)果[8]。</p><p><b>  信號輸入</b></p><p>  圖3.3 系統(tǒng)組成框圖</p><p>  第四章 數(shù)字頻率計的設(shè)計</p><p>  4.1 測頻控制信號發(fā)生器&l

38、t;/p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity cpkzxh is</p><p><b>  port(<

39、/b></p><p>  clk: in std_logic;</p><p>  clr_jsh: out std_logic;</p><p>  jsen: out std_logic</p><p><b>  );</b></p><p>  end cpkzxh;</p&

40、gt;<p>  architecture behave of cpkzxh is</p><p>  signal div2clk: std_logic;</p><p><b>  begin</b></p><p>  process(clk)</p><p><b>  begin<

41、/b></p><p>  if clk'event and clk='1' then</p><p>  div2clk<=not div2clk;</p><p><b>  end if;</b></p><p>  end process;</p><p&g

42、t;  process(clk,div2clk)</p><p><b>  begin</b></p><p>  if div2clk='0' then </p><p>  clr_jsh<='1';</p><p>  else clr_jsh<='0'

43、;;</p><p><b>  end if;</b></p><p>  end process;</p><p>  jsen<=div2clk;</p><p>  end behave;</p><p>  圖4.1測頻控制信號發(fā)生器的VHDL編譯</p><p

44、>  圖4.2測頻控制信號發(fā)生器的仿真結(jié)果</p><p>  仿真分析:設(shè)輸入控制信號clk的頻率f1=1HZ,即T1=1s。則通過測頻控制信號發(fā)生器將產(chǎn)生一個2s的輸出信號jsen用來控制十進制時鐘計數(shù)器的時鐘輸入。還將產(chǎn)生一個與jsen相異的2s清零信號clr_jsh用于控制十進制時鐘計數(shù)器的清零,為下次計數(shù)做好準(zhǔn)備。</p><p>  4.2 帶時鐘使能十進制計數(shù)器<

45、/p><p>  library ieee; </p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity szsn10 is</p><p><b>  port (<

46、/b></p><p>  clk: in std_logic;</p><p>  clr: in std_logic;</p><p>  ena: in std_logic;</p><p>  cq: out std_logic_vector(3 downto 0);</p><p>  carry_ou

47、t: out std_logic</p><p><b>  );</b></p><p>  end szsn10;</p><p>  architecture behave of szsn10 is</p><p>  signal cq1: std_logic_vector(3 downto 0);</p&

48、gt;<p><b>  begin</b></p><p>  process(clk,clr,ena)</p><p><b>  begin</b></p><p>  if clr='1' then cq1<="0000";</p><p&

49、gt;  elsif clk'event and clk='1' then</p><p>  if ena='1' then</p><p>  if cq1<="1001" then cq1<=cq1+1;</p><p>  else cq1<="0000";&l

50、t;/p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(cq1)</

51、p><p><b>  begin</b></p><p>  if cq1="1001" then carry_out<='1';</p><p>  else carry_out<='0';</p><p><b>  end if;</b&

52、gt;</p><p>  end process;</p><p><b>  cq<=cq1;</b></p><p>  end behave;</p><p>  圖4.3 帶時鐘使能十進制計數(shù)器的VHDL編譯</p><p>  圖4.4 帶時鐘使能十進制計數(shù)器的仿真結(jié)果</

53、p><p>  仿真分析:設(shè)待測信號頻率f2=5HZ,即周期T2=200ms.則計數(shù)器測得信號數(shù)為f2/f1=5/1=5個。即當(dāng)使能信號ena為高電平,清零信號clr為低電平時,開始計數(shù),clk的每個上升沿計一次數(shù),因為在使能信號ena為高電平的范圍內(nèi)有5個上升沿,所以計數(shù)結(jié)果為5,即輸出0101。</p><p>  4.3 7段顯示譯碼器LED7</p><p>

54、  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity led7 is</p><p><b>  port(</b></p><

55、;p>  sin: in std_logic_vector(3 downto 0);</p><p>  dout: out std_logic_vector(6 downto 0)</p><p><b>  );</b></p><p><b>  end led7;</b></p><p&g

56、t;  architecture behave of led7 is</p><p><b>  begin</b></p><p>  process(sin)</p><p><b>  begin</b></p><p>  case sin is</p><p>  

57、when "0000" => dout <= "0111111";</p><p>  when "0001" => dout <= "0000110";</p><p>  when "0010" => dout <= "1011011&quo

58、t;;</p><p>  when "0011" => dout <= "1001111";</p><p>  when "0100" => dout <= "1100110";</p><p>  when "0101" => do

59、ut <= "1101101";</p><p>  when "0110" => dout <= "1111101";</p><p>  when "0111" => dout <= "0000111";</p><p>  when

60、 "1000" => dout <= "1111111";</p><p>  when "1001" => dout <= "1101111";</p><p>  when "1010" => dout <= "1110111";&

61、lt;/p><p>  when "1011" => dout <= "1111100";</p><p>  when "1100" => dout <= "0111001";</p><p>  when "1101" => dout &

62、lt;= "1011110";</p><p>  when "1110" => dout <= "1111001";</p><p>  when "1111" => dout <= "1110001";</p><p>  when oth

63、ers => dout <= "0000000";</p><p><b>  end case;</b></p><p>  end process;</p><p>  end behave;</p><p>  圖4.5 7段顯示譯碼器LED7的VHDL編譯</p>

64、<p>  圖4.6 7段顯示譯碼器LED7仿真結(jié)果</p><p>  仿真結(jié)果:sin是要顯示的數(shù)字,dout是7段顯示譯碼器出來的數(shù)字。</p><p>  4.4 動態(tài)LED 數(shù)碼管顯示sm</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;<

65、;/p><p>  use ieee.std_logic_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  entity sel is</p><p><b>  port (</b></p><p>  qin1 : in

66、 std_logic_vector(3 downto 0);</p><p>  qin2 : in std_logic_vector(3 downto 0);</p><p>  qin3 : in std_logic_vector(3 downto 0);</p><p>  qin4 : in std_logic_vector(3 downto 0);

67、</p><p>  qin5 : in std_logic_vector(3 downto 0);</p><p>  qin6 : in std_logic_vector(3 downto 0);</p><p>  qin7 : in std_logic_vector(3 downto 0);</p><p>  qout : o

68、ut std_logic_vector(3 downto 0);</p><p>  sel : out std_logic_vector(2 downto 0);</p><p>  rst : in std_logic;</p><p>  clock : in std_logic</p><p><b>  );&l

69、t;/b></p><p><b>  end sel;</b></p><p>  architecture behave of sel is</p><p><b>  begin</b></p><p>  process(clock,rst)</p><p> 

70、 variable cnt:integer range 0 to 6;</p><p><b>  begin</b></p><p>  if(rst='0')then</p><p><b>  cnt:=0;</b></p><p>  sel<="111&qu

71、ot;;</p><p>  qout<="0000";</p><p>  elsif clock'event and clock='1' then</p><p>  if cnt=7 then</p><p><b>  cnt:=0;</b></p>

72、<p><b>  else</b></p><p>  cnt:=cnt+1;</p><p>  end if; </p><p>  case cnt is</p><p>  when 0=>qout<=qin1;</p><p>  sel <=&

73、quot;111";</p><p>  when 1=>qout<=qin2;</p><p>  sel <="110";</p><p>  when 2=>qout<=qin3;</p><p>  sel <="101";</p>&

74、lt;p>  when 3=>qout<=qin4;</p><p>  sel <="100";</p><p>  when 4=>qout<=qin5;</p><p>  sel <="011";</p><p>  when 5=>qout<

75、;=qin6;</p><p>  sel <="010";</p><p>  when 6=>qout<=qin7;</p><p>  sel <="001";</p><p>  when others=>qout<="0000";<

76、/p><p>  sel <="000";</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  end behave;</p&

77、gt;<p>  圖4.7動態(tài)LED 數(shù)碼管顯示sm的VHDL編譯</p><p>  圖4.8動態(tài)LED 數(shù)碼管顯示sm的仿真結(jié)果</p><p>  仿真結(jié)果: LED 數(shù)碼管的靜態(tài)顯示的編程方法較簡單,且專用系統(tǒng)的資源較少,但是由于LED 靜態(tài)顯示需要占用較多的I/O 口,且功耗較大,因此在大多數(shù)場合通常采用動態(tài)掃描的方法來控制LED數(shù)碼管的顯示。其原理是每個時鐘周期內(nèi)

78、只顯示一位數(shù)據(jù),延時一段時間后接著發(fā)送第2 個要顯示數(shù)據(jù)的段碼。依此類推,對各顯示器進行掃描,顯示器分時輪流工作。雖然每次只有1個LED 顯示,但由于人的視覺暫留現(xiàn)象,使我們?nèi)詴杏X所有的顯示器都在同時顯示。在此設(shè)計一個掃描顯示模塊sm來顯示。設(shè)clock=10ms,即頻率為100HZ,rst=2s。輸入為142的BCD碼形式,即qin1=0010,qin2=0100,qin3=0001,qin4=0000,qin5=0000,qin6

79、=0000,qin7=0000。所以按照動態(tài)LED數(shù)碼顯示管的工作原理,輸出就為當(dāng)se1=111時dout=qin1=0010,當(dāng)sel=110時dout=qin2=0100,當(dāng)sel=101時dout=qin3=0001,當(dāng)sel=100時dout=qin4=0000,當(dāng)sel=011時dout=qin5=0000,當(dāng)sel=010</p><p>  4.5 本系統(tǒng)的頂層模塊</p><

80、p>  在本測頻系統(tǒng)中,對標(biāo)準(zhǔn)頻率信號和被測信號進行測試功能的工作由CPLD來完成。其硬件電路的實現(xiàn)在前面己述,其軟件部分由VHDL語言實現(xiàn)。在以上四個器件正確設(shè)計的基礎(chǔ)上,再按設(shè)計原理圖的要求將這四種器件共十幾塊芯片連接起來,形成頂層文件。常用的方法是將頂層文件編成電路圖的形式,進行綜合仿真。這種方法雖然較簡單,但缺點是有可能使電路系統(tǒng)工作中出現(xiàn)“毛刺”,從而降低系統(tǒng)的可靠性。因此,在我的設(shè)計中最突出的地方是不用電路圖的形式編寫

81、頂層文件,而是用文本形式來編寫,即用VHDL語言來描述十幾塊芯片的連接,避免了系統(tǒng)在工作中出現(xiàn)“毛刺”現(xiàn)象,使系統(tǒng)的穩(wěn)定度和可靠性均得到提高。</p><p>  下面將給出由VHDL語言實現(xiàn)的頂層模塊程序。</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p

82、>  use ieee.std_logic_unsigned.all;</p><p>  entity d_f is</p><p><b>  port (</b></p><p>  fsin: in std_logic;</p><p>  clk: in std_logic;</p><

83、;p>  clock: in std_logic;</p><p>  rst: in std_logic;</p><p>  dout: out std_logic_vector(6 downto 0);</p><p>  sel: out std_logic_vector(2 downto 0)</p><p><b&

84、gt;  );</b></p><p><b>  end d_f;</b></p><p>  architecture behave of d_f is</p><p>  component szsn10</p><p><b>  port (</b></p>&l

85、t;p>  clk: in std_logic;</p><p>  clr: in std_logic;</p><p>  ena: in std_logic;</p><p>  cq: out std_logic_vector(3 downto 0);</p><p>  carry_out: out std_logic<

86、/p><p><b>  );</b></p><p>  end component;</p><p>  component cpkzxh</p><p><b>  port (</b></p><p>  clk: in std_logic;</p><

87、;p>  clr_jsh: out std_logic;</p><p>  jsen: out std_logic </p><p><b>  );</b></p><p>  end component;</p><p>  component led7</p><p><

88、b>  port (</b></p><p>  sin: in std_logic_vector(3 downto 0);</p><p>  dout: out std_logic_vector(6 downto 0)</p><p><b>  );</b></p><p>  end compo

89、nent;</p><p>  component sm</p><p><b>  port (</b></p><p>  qin1 : in std_logic_vector(3 downto 0);</p><p>  qin2 : in std_logic_vector(3 downto 0);</p&g

90、t;<p>  qin3 : in std_logic_vector(3 downto 0);</p><p>  qin4 : in std_logic_vector(3 downto 0);</p><p>  qin5 : in std_logic_vector(3 downto 0);</p><p>  qin6 : in std_logic

91、_vector(3 downto 0);</p><p>  qin7 : in std_logic_vector(3 downto 0);</p><p>  clock : in std_logic;</p><p>  qout : out std_logic_vector(3 downto 0);</p><p>  sel :

92、out std_logic_vector(2 downto 0); </p><p>  rst : in std_logic </p><p><b>  );</b></p><p>  end component ;</p><p>  signal clr_jsh1: std_logic; signal jsen

93、1: std_logic;</p><p>  signal carry_out1: std_logic;</p><p>  signal carry_out2: std_logic;</p><p>  signal carry_out3: std_logic;</p><p>  signal carry_out4: std_logic

94、;</p><p>  signal carry_out5: std_logic;</p><p>  signal carry_out6: std_logic;</p><p>  signal cq1: std_logic_vector(3 downto 0); </p><p>  signal cq2: std_logic_vec

95、tor(7 downto 4);</p><p>  signal cq3: std_logic_vector(11 downto 8);</p><p>  signal cq4: std_logic_vector(15 downto 12);</p><p>  signal cq5: std_logic_vector(19 downto 16);<

96、/p><p>  signal cq6: std_logic_vector(23 downto 20);</p><p>  signal cq7: std_logic_vector(27 downto 24);</p><p>  signal qout1: std_logic_vector(3 downto 0);</p><p>&l

97、t;b>  begin</b></p><p>  u1: cpkzxh port map (clk=>clk,jsen=>jsen1,clr_jsh=>clr_jsh1);</p><p>  u2: szsn10 port map (clk=>fsin,clr=>clr_jsh1,ena=>jsen1,carry_out=>c

98、arry_out1,cq=>cq1 (3 downto 0)</p><p><b>  );</b></p><p>  u3: szsn10 port map (clk=>carry_out1,clr=>clr_jsh1,ena=>jsen1,carry_out=>carry_out2,cq=>cq2(7 downto 4)&l

99、t;/p><p><b>  );</b></p><p>  u4: szsn10 port map (clk=>carry_out2,clr=>clr_jsh1,ena=>jsen1,carry_out=>carry_out3,cq=>cq3(11 downto 8)</p><p><b>  );&l

100、t;/b></p><p>  u5: szsn10 port map (clk=>carry_out3,clr=>clr_jsh1,ena=>jsen1,carry_out=>carry_out4,cq=>cq4(15 downto 12)</p><p><b>  );</b></p><p>  u6

101、: szsn10 port map (clk=>carry_out4,clr=>clr_jsh1,ena=>jsen1,carry_out=>carry_out5,cq=>cq5(19 downto 16)</p><p><b>  );</b></p><p>  u7: szsn10 port map (clk=>carry_

102、out5,clr=>clr_jsh1,ena=>jsen1,carry_out=>carry_out6,cq=>cq6(23 downto 20)</p><p><b>  );</b></p><p>  u8: szsn10 port map (clk=>carry_out6,clr=>clr_jsh1,ena=>jse

103、n1,cq=>cq7(27 downto 24)</p><p><b>  );</b></p><p>  u9: sm port map (clock=>clock,rst=>rst,qin1=>cq1,qin2=>cq2,qin3=>cq3,qin4=>cq4,qin5=>cq5,qin6=>cq6,qin

104、7=>cq7,qout=>qout1,sel=>sel);</p><p>  u10: led7 port map (sin=>qout1,dout=>dout);</p><p>  end behave;</p><p>  4.9 本系統(tǒng)的頂層模塊4.10 本系統(tǒng)的頂層模塊的仿真結(jié)果</p><p>

105、  仿真分析:設(shè)clock周期為T1=10ms,即頻率F1=100HZ。clk周期為T2=1s,即頻率F2=1HZ。fsin周期為T3=200ms,即頻率F3=5HZ。所以頻率個數(shù)為5個。即當(dāng)sel=111時dout=1101101,當(dāng)sel=110時dout=0111111,當(dāng)se=l01時dout=011111,當(dāng)sel=100時dout=0111111,當(dāng)sel=011時dout=0111111,當(dāng)sel=010時dout=011

106、1111,當(dāng)sel=001時dout=0111111,當(dāng)sel=000時dout=0111111。</p><p>  第五章 總 結(jié) </p><p>  本次實驗使我體會到了理論和實際之間是有差別的,我們在掌握理論的同時要把理論放到實際中去。實驗中遇到了很多困難,理論上正確的但在實際中運行不起來。認識到單掌握理論是不夠的。要考慮到實際的外界和內(nèi)部之間的因素,之間的聯(lián)系,全方位的了

107、解問題,思考問題,理解問題,解決問題。我認為學(xué)習(xí)最好能在實踐中,掌握,鞏固自己的理論知識,得到更好的發(fā)展。</p><p><b>  參考文獻</b></p><p>  [1] 邢建平,曾繁泰.VHDL程序設(shè)計教程(第3版)[M].北京:清華大學(xué)出版社,2005</p><p>  [2] 潘松,黃繼業(yè) .EDA技術(shù)與VHDL(第2版)[M

108、].北京:清華大學(xué)出版社,2007</p><p>  [3] 趙明富,李立軍.EDA技術(shù)基礎(chǔ)[M].北京:北京大學(xué)出版社,2007</p><p>  [4] 唐穎,阮文海.基于FPGA/CPLD芯片的數(shù)字頻率計設(shè)計[M].浙江樹人大學(xué)學(xué)報,2002,2(6)</p><p>  [5] 王振紅,錢飛.基于VHDL語言的數(shù)字頻率計的設(shè)計[M].微電子學(xué).2002,

109、32(3)</p><p>  [6] 張璟.數(shù)字頻率計的VHDL源文件設(shè)計與仿真[M].中國水運(理論版).2006,4(6)</p><p>  [7] 聶輝.CPLD數(shù)字頻率計系統(tǒng)的研究與設(shè)計[M].重慶科技學(xué)院學(xué)報(自然科學(xué)版).2005,7(4)</p><p>  [8] 潘明.基于復(fù)雜可編程邏輯器件的數(shù)字頻率計設(shè)計[M].廣西學(xué)院學(xué)報.2002,18(

110、4)</p><p>  [9] 曾素瓊.EDA技術(shù)在數(shù)字電路中的探討[M].重慶:重慶大學(xué)出版社,2004.6</p><p>  [10] 楊曉慧,許紅梅,楊會玲.電子技術(shù)EDA實踐教程[M].北京:國防工業(yè)出版社,2005.8</p><p><b>  致 謝</b></p><p>  在本論文的寫作過程中,我

111、的導(dǎo)師陳茜老師傾注了大量的心血,從選題到開題報告,從寫作提綱,到一遍又一遍的指出每稿中的具體問題,嚴格把關(guān),循循善誘,在此我表示衷心感謝。同時我還要感謝在我學(xué)習(xí)期間給我極大關(guān)心和支持的各位老師以及關(guān)心我的同學(xué)和朋友。寫作畢業(yè)論文是一次系統(tǒng)學(xué)習(xí)的過程,畢業(yè)論文的完成,同樣也意味著新的學(xué)習(xí)生活的開始。</p><p><b>  誠 信 責(zé) 任 書</b></p><p>

溫馨提示

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

評論

0/150

提交評論