版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文--基于vhdl的數(shù)字頻率計設(shè)計
- 數(shù)字頻率計畢業(yè)論文
- 數(shù)字頻率計畢業(yè)設(shè)計-- 數(shù)字頻率計設(shè)計
- 基于vhdl的數(shù)字頻率計設(shè)計-職業(yè)學(xué)院畢業(yè)論文
- 數(shù)字頻率計畢業(yè)設(shè)計-- 數(shù)字頻率計設(shè)計
- 數(shù)字頻率計的設(shè)計畢業(yè)論文
- 畢業(yè)論文--數(shù)字頻率計的設(shè)計
- 數(shù)字頻率計畢業(yè)論文 (2)
- 數(shù)字頻率計系統(tǒng)設(shè)計畢業(yè)論文
- 畢業(yè)設(shè)計---vhdl語言設(shè)計的數(shù)字頻率計
- 數(shù)字頻率計設(shè)計論文(cpld+vhdl編程)
- 基于fpga的數(shù)字頻率計設(shè)計【畢業(yè)論文】
- 基于matlab的數(shù)字頻率計設(shè)計畢業(yè)論文
- vhdl課程設(shè)計--簡易數(shù)字頻率計
- 基于eda的數(shù)字頻率計的設(shè)計畢業(yè)論文
- 數(shù)字頻率計設(shè)計
- 簡易數(shù)字頻率計設(shè)計論文
- 畢業(yè)論文-數(shù)字頻率計設(shè)計【精校排版】
- 畢業(yè)設(shè)計---數(shù)字頻率計
- 畢業(yè)設(shè)計--數(shù)字頻率計
評論
0/150
提交評論