畢業(yè)論文-基于fpga數(shù)字時鐘的設(shè)計【精校排版】_第1頁
已閱讀1頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)設(shè)計(論文)</p><p><b> ?。?0 屆)</b></p><p>  基于FPGA數(shù)字時鐘的設(shè)計</p><p><b>  目錄</b></p><p><b>  摘要III</b></p><p> 

2、 AbstractIV</p><p><b>  前言1</b></p><p>  第一章 FPGA簡介2</p><p>  1.1 FPGA概述2</p><p>  1.2 FPGA基本結(jié)構(gòu)2</p><p>  1.3 FPGA的工作原理4</p>&

3、lt;p>  1.4 FPGA的設(shè)計流程4</p><p>  1.4.1 設(shè)計輸入5</p><p>  1.4.2 設(shè)計仿真6</p><p>  1.4.3 實現(xiàn)6</p><p>  第二章 數(shù)字時鐘設(shè)計及MAX+PLUSE II的介紹7</p><p>  2.1 數(shù)字時鐘的原理

4、7</p><p>  2.2 數(shù)字時鐘的構(gòu)成7</p><p>  2.3 數(shù)字鐘的功能要求8</p><p>  2.4 MAX+PLUSⅡ開發(fā)平臺簡介9</p><p>  2.5 MAX+PLUSⅡ的功能9</p><p>  2.6 MAX+PLUSⅡ的設(shè)計向?qū)?</p>&

5、lt;p>  第三章 程序設(shè)計與實驗仿真11</p><p>  3.1 主程序代碼設(shè)計與仿真結(jié)果11</p><p>  3.1.1 主程序源代碼11</p><p>  3.1.2 實驗仿真結(jié)果15</p><p>  3.2 24進(jìn)制代碼設(shè)計與仿真結(jié)果15</p><p>  3.2.1

6、 24進(jìn)制源代碼15</p><p>  3.2.2 實驗仿真結(jié)果17</p><p>  3.3 60進(jìn)制代碼設(shè)計與仿真結(jié)果18</p><p>  3.3.1 60進(jìn)制源代碼18</p><p>  3.3.2 實驗仿真結(jié)果20</p><p>  3.4 去抖代碼設(shè)計與仿真結(jié)果22<

7、;/p><p>  3.4.1 按鍵抖動產(chǎn)生原因分析22</p><p>  3.4.2 按鍵消抖電路設(shè)計原理22</p><p>  3.4.3 按鍵消抖電路設(shè)計22</p><p>  3.4.4 去抖源代碼23</p><p>  3.4.5 實驗仿真結(jié)果25</p><p&g

8、t;<b>  總結(jié)28</b></p><p><b>  參考文獻(xiàn)29</b></p><p><b>  附錄30</b></p><p><b>  致謝36</b></p><p>  基于FPGA數(shù)字時鐘的研究</p>&

9、lt;p><b>  摘要</b></p><p>  本文是在前人研究成果的基礎(chǔ)上,面向?qū)嶋H應(yīng)用的需求在MAX+PLUSⅡ開發(fā)環(huán)境下,用VHDL硬件描述語言設(shè)計了一個可以在FPGA芯片上實現(xiàn)的數(shù)字時鐘.通過將設(shè)計代碼下載到FPGA的開發(fā)平臺Altera DE2開發(fā)板上進(jìn)行了功能驗證. 采用VHDL硬件描述語言描述數(shù)字時鐘的功能,完成對各模塊的功能仿真,通過分析仿真波形表明設(shè)計的數(shù)字時

10、鐘完成了預(yù)期的功能。</p><p>  隨著現(xiàn)代芯片工藝的改進(jìn),F(xiàn)PGA的等效系統(tǒng)門達(dá)到到幾百萬門,而且工作頻率也隨之提高。FPGA也就大量的在電子產(chǎn)品中出現(xiàn)。在通信行業(yè),傳輸網(wǎng),醫(yī)療儀器,各種電子儀器,安防監(jiān)控,電力系統(tǒng),汽車電子,消費類電子中都大面積的使用。FPGA器件高集成度、可現(xiàn)場修改、開發(fā)周期短等優(yōu)點滿足了從軍用到民用、從高端到低端的大多數(shù)電子設(shè)計領(lǐng)域的需求。</p><p>

11、  縱觀現(xiàn)場可編程邏輯器件的發(fā)展歷史,其之所以具有巨大的市場吸引力,根本在于:FPGA不僅可以使電子系統(tǒng)小型化、低功耗、高可靠性,而且其開發(fā)周期短、開發(fā)軟件投入少、芯片價格不斷降低,促使FPGA越來越多地取代了ASIC的市場;越來越多的功能模塊集成到了FPGA中,實現(xiàn)你想實現(xiàn)的任何數(shù)字電路,可以定制各種電路;減少受制于專用芯片的束縛,真正為自己的產(chǎn)品量身定做,在設(shè)計的過程中可以靈活的更改設(shè)計。</p><p> 

12、 數(shù)字電路的發(fā)展經(jīng)歷了由電子管、半導(dǎo)體分立器件到集成電路等幾個時代。從60年代開始,數(shù)字集成器件以雙極型工藝制成了小規(guī)模邏輯器件。隨后發(fā)展到中規(guī)模邏輯器件;70年代末,微處理器的出現(xiàn),使數(shù)字集成電路的性能產(chǎn)生質(zhì)的飛躍。數(shù)字集成器件所用的材料以硅材料為主,在高速電路中,也使用化合物半導(dǎo)體材料,例如砷化鎵等。邏輯門是數(shù)字電路中一種重要的邏輯單元電路 。近年來,可編程邏輯器件PLD特別是現(xiàn)場可編程門陣列FPGA的飛速進(jìn)步,使數(shù)字電子技術(shù)開創(chuàng)了

13、新局面,不僅規(guī)模大,而且將硬件與軟件相結(jié)合,使器件的功能更加完善,使用更靈活。</p><p>  關(guān)鍵詞:數(shù)字時鐘;FPGA技術(shù);VHDL語言設(shè)計</p><p>  Based on FPGA digital clock research </p><p><b>  Abstract</b></p><p>  T

14、his paper is on the basis of predecessors' achievements, the demand for practical application in MAX+PLUSⅡ development environment, use VHDLhardware description language design a chip in the FPGA realizing digital cl

15、ock. Through FPGA design code downloaded to the development platform Altera DE2 development board. Validate the function by VHDL language description hardware description digital clock function and the completion of the

16、function of each module, through the analysis and simulation wa</p><p>  With modern chip technology improvement, FPGA equivalent system door to door, and work to millions of frequency increases. The FPGA al

17、so lots of appeared in electronic products. In communications industry, transmission network medical devices and various kinds of electronic equipment, safety monitoring, power system, automotive electronics, consumer el

18、ectronics in the use of large area. The FPGA device high level of integration, the modification, short development cycle has advantages such as ci</p><p>  Throughout field programmable logic devices on the

19、development of history, it's of great attraction to market, depend on: the FPGA can not only make electronic systems, miniaturization, low power consumption, high reliability, and its developing software short develo

20、pment cycle, less input, chip prices are lower, prompting the FPGA increasingly replaced the ASIC market; More and more function module integration, realize you to FPGA any digital circuit to realize, can customize vario

21、us circuit; R</p><p>  The development of digital circuit experience from vacuum tubes, semiconductor division device to integrated circuits and so on several times. Since the 1960s, digital integrated devic

22、es to start a bipolar workmanship the small-scale logic devices. Then developed to scale logic devices in; In the late 1970s, microprocessors has made the performance of digital IC produce quality leap. Digital integrate

23、d device used materials with silicone material is given priority to, in high-speed circuit, also</p><p>  Keywords:Digital clock, FPGA technology, VHDL language design </p><p><b>  前言</

24、b></p><p>  當(dāng)今社會的標(biāo)志之一就是信息產(chǎn)品的廣泛使用,而且產(chǎn)品的性能是越來越強(qiáng),產(chǎn)品的復(fù)雜程度也越來越高,更新步伐更是越來越快。支撐信息電子產(chǎn)品高速發(fā)展的基礎(chǔ)就是微電子制造工藝水平的提高和電子產(chǎn)品設(shè)計開發(fā)技術(shù)的發(fā)展。前者以微細(xì)加工技術(shù)為代表,而后者的代表就是電子設(shè)計自動化技術(shù)。 </p><p>  本設(shè)計采用的VHDL是一種全方位的硬件描述語言,具有極強(qiáng)的描述能力,能

25、支持系統(tǒng)行為級、寄存器傳輸級和邏輯門級三個不同層次的設(shè)計;支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描述形式的混合描述、覆蓋面廣、抽象能力強(qiáng),因此在實際應(yīng)用中是越來越廣泛。ASIC是專用的系統(tǒng)集成電路,是一種帶有邏輯處理的加速器。而FPGA是特殊的ASIC芯片,與其他的ASIC芯片相比,它具有設(shè)計開發(fā)周期短、設(shè)計制造成本低、開發(fā)工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無需測試、質(zhì)量穩(wěn)定以及可實時在線檢測等優(yōu)點。</p><p>  鐘表的數(shù)字化給人們

26、生活帶來了極大的方便,且大大地擴(kuò)展了鐘表原先的報時功能。如定時自動報警、定時啟閉器、定時開關(guān)烘箱,各種定時電氣的自動啟用等,所有這些都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字時鐘及擴(kuò)大其應(yīng)用,有著非常實用的意義。</p><p><b>  FPGA簡介</b></p><p>  1.1 FPGA概述</p><p>  FPGA是現(xiàn)場可編程

27、門陣列(Fied Programmable Gate Array)的簡稱,是一種高密度的可編程邏輯器件,與之相應(yīng)的CPLD是復(fù)雜可編程邏輯器件(Complex Programmable Logic Device)的簡稱,兩者的功能基本相同,只是實現(xiàn)原理略有不同,所以有時可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件或CPLD/PGFA。CPLD/FPGA幾乎能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡單的74電路。它如同一堆積木,工程

28、師可以通過傳統(tǒng)的原理圖輸入或硬件描述語言自由的設(shè)計一個數(shù)字系統(tǒng)。通過軟件仿真可以事先驗證設(shè)計的正確性,在PCB完成以后,利用CPLD/FPGA的在線修改功能,隨時修改設(shè)計而不必改動硬件電路。使用CPLD/FPGA開發(fā)數(shù)字電路,可大大縮短設(shè)計時間,減少PCB面積,提高系統(tǒng)的可靠性。這些優(yōu)點使得CPLD/FPGA技術(shù)在20世紀(jì)90年代以后得到了飛速的發(fā)展,同時也大大推動了EDA軟件和硬件描述語言HDL的進(jìn)步。</p><

29、p>  1.2 FPGA基本結(jié)構(gòu)</p><p>  FPGA具有掩膜可編程門列的通用結(jié)構(gòu),它是由邏輯功能塊排成陣列,由可編程的互聯(lián)資源連接這些邏輯功能塊來實現(xiàn)不同的設(shè)計。</p><p>  FPGA一般由3種可編程電路和一個用于存放編程數(shù)據(jù)的靜態(tài)存儲器SRAM組成的。這3種可編程電路是:可編程邏輯模塊(CLB—Configurable Logic Block)、輸入/輸出模塊(

30、IOB—I/O Block)和互聯(lián)資源(IR—Intercinnect Resource)??删幊踢壿嬆KCLB是實現(xiàn)邏輯功能的基本單元,它們通常規(guī)則的排列成一個陣列,散布也整個芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常L排列在芯片的四周;可編程互聯(lián)資源包括各種長度的連接線段和一些可編程連接開關(guān),它們將各個CLB之間或CLB、IOB之間及IOB之間連接起來,構(gòu)成了特定功能的電路。</p>

31、;<p>  1、CLB是FPGA的主要組成部分。圖1-1是CLB的基本結(jié)構(gòu)框圖,它主要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器等電路組成。 CLB中3個邏輯函數(shù)發(fā)生器分別是G、F和H,相應(yīng)的輸出是G’、F’和H’。G有4個輸入變量G1、G2、G3和G4;F也有4個輸入變量F1、F2、F3和F4。這兩個函數(shù)發(fā)生器是完全獨立的,均可以實現(xiàn)4輸入變量的任意組合邏輯函數(shù)。邏輯函數(shù)發(fā)生器H有3個輸入信號;前兩個是函數(shù)發(fā)生器的輸出G’和

32、F’,而另一個輸入信號是來自信號變換電路的輸出H1。這個函數(shù)發(fā)生器能實現(xiàn)3輸入變量的各種組合函數(shù)。這3個函數(shù)發(fā)生器結(jié)合起來,可實現(xiàn)多達(dá)9變量的邏輯函數(shù)。</p><p>  圖1.1 CLB基本結(jié)構(gòu)框圖</p><p>  CLB中有許多不同規(guī)格的輸了選擇器(四選一、二選一等),通過對CLB內(nèi)部數(shù)據(jù)選擇器的編程,邏輯函數(shù)發(fā)生器G、F和H的輸出可以連接到CLB輸出端X和Y,并用來選擇觸發(fā)器

33、的激勵輸入信號、時鐘有效邊沿、時鐘使能信號及輸出信號。這些數(shù)據(jù)選擇器的地址控制信號均是由編程信息提供,從而實現(xiàn)所需的電路結(jié)構(gòu)。</p><p>  CLB中的邏輯函數(shù)發(fā)生器F和G均為查找表結(jié)構(gòu),其工作原理類似于ROM。F和G的輸入等效于ROM的地址碼,通過查找ROM中的地址表可得到相應(yīng)的組合邏輯函數(shù)輸出。另一方面,邏輯函數(shù)發(fā)生器F和G還可以作為器件內(nèi)高速RAM或小的可讀寫存儲器使用,它是由信號變換電路控制。<

34、;/p><p>  2、輸入/輸出模塊IOB。IOB提供了器件引腳和內(nèi)部邏輯陣列之間的連接。IOB主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā)/鎖存器、輸出緩沖器組成。</p><p>  每個IOB控制一個引腳。它們可被配置為輸入、輸出或雙向I/O功能。當(dāng)IOB控制的引腳被定義為輸入時,通過該引腳的輸入信號先將其送入輸入緩沖器。緩沖器的輸出分為兩路:一路可以直接送到MUX,另一路經(jīng)延時幾納秒(或者

35、不延時)送到輸入通路D觸發(fā)器,在送到數(shù)據(jù)選擇器。通過編程給數(shù)據(jù)選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來自輸入緩沖器,還是來自觸發(fā)器。</p><p>  當(dāng)IOB控制的引腳被定義為輸出時,CLB陣列的輸出信號OUT也可以有兩條傳輸途徑:一條是直接經(jīng)MUX送至輸出緩沖器,另一條是先存入輸出通路D觸發(fā)器,然后再送至輸出緩沖器。</p><p>  IOB輸出端配有兩只MOS管,

36、它們的柵極均是可編程的,使MOS管導(dǎo)通或截止,分別經(jīng)上拉電阻接通Vcc、地線或者不接通,用以改善輸出波形和負(fù)載能力。</p><p>  3、可編程互連資源IR??删幊袒ミB資源IR可以將FPGA內(nèi)部的CLB和CLB之間、CLB和IOB之間連接起來,構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。IR主要是由許多金屬線段構(gòu)成,這些金屬線段是帶有可編程開關(guān)的,通過自動布線實現(xiàn)各種電路的連接[1]。</p><p>

37、;  1.3 FPGA的工作原理</p><p>  目前,Xilinx公司生產(chǎn)的FPGA都是采用SRAM工藝的查處表(Look-Up-Table)結(jié)構(gòu),通過燒寫文件改變查找表內(nèi)容的方法實現(xiàn)對FPGA的重復(fù)配置,在使用時需要外接一個片外存儲器以保持程序。上電時,F(xiàn)PGA將外部存儲器中的數(shù)據(jù)讀入片內(nèi)RAM,完成配置以后,進(jìn)入工作狀態(tài);掉電后FPGA恢復(fù)白片,內(nèi)部邏輯消失。由數(shù)字電路的基本知識可以知道,對于一個n輸

38、入的邏輯運算,不管是與非運算還是異或運算等,最多只可能存在2n種結(jié)果。所以,如果事先將相應(yīng)的結(jié)果存放于一個存儲單元,就相當(dāng)于實現(xiàn)了與非門電路的功能。FPGA的原理也是如此,它通過燒寫文件去配置查找表的內(nèi)容,從而在相同的電路情況下實現(xiàn)了不同的邏輯功能。</p><p>  查找表(Look-Up-Table)簡稱為LUT,LUT本質(zhì)上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成是4位

39、地址線的RAM。當(dāng)用戶通過原理圖或HDL語言描述一個邏輯電路后,PLD/FPGA開發(fā)軟件就會自動計算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)寫入RAM,這樣,每輸入有一個信號進(jìn)行邏輯運算就等于輸入一個地址去進(jìn)行查找表,找出地址對應(yīng)的內(nèi)容,然后輸出即可[2]。</p><p>  1.4 FPGA的設(shè)計流程</p><p>  FPGA的基本開發(fā)流程主要包括設(shè)計輸入(Design en

40、try)、設(shè)計仿真(Simulation)、設(shè)計綜合(Synthesize)、布局布線(Place&route)、和配置(Configuration)這五個主要步驟。集成綜合環(huán)境(ISE)的功能涵蓋了FPGA開發(fā)的全部過程,其開發(fā)流程如圖1.2所示。</p><p>  圖1.2 FPGA開發(fā)流程圖</p><p>  1.4.1 設(shè)計輸入</p><p&g

41、t;  設(shè)計輸入時是根據(jù)工程師的設(shè)計方法所設(shè)計的功能描述給EDA軟件,通常所用的設(shè)計輸入方法有硬件描述語言HDL和原理圖設(shè)計方法。原理圖設(shè)計輸入法再早期應(yīng)用得比較廣泛,它根據(jù)設(shè)計要求,選用器件,繪制原理圖,完成輸入過程。這種方法的優(yōu)點是直觀、便于理解、元件庫資料豐富。但是在大型設(shè)計中,這種方法的可維護(hù)性較差,不利于模塊建設(shè)與重用。</p><p>  ISE提供的設(shè)計輸入工具包括用于HDL代碼輸入和查看報告的文本

42、編譯器(ISE Text Editor)、用于原理圖編輯的工具ECS(Enginerring Capture System)、用于生成IP Core的Core Generator、用于狀態(tài)機(jī)設(shè)計的StateCAD以及用于約束文件編輯的Constraint Editor等。</p><p>  綜合優(yōu)化(Synthesizer)是指將HDL語言、原理圖等設(shè)計輸入翻譯成由與門、或門、非門、RAM、寄存器等基本邏輯單元

43、組成的邏輯連接(網(wǎng)表),并根據(jù)目標(biāo)與要求(約束條件)優(yōu)化成所生成的邏輯連接,輸出edf和edn等文件,供FPGA廠家的布局線器進(jìn)行實現(xiàn)。綜合工具有Xilinx ISE集成的XST(Xilinx Synthesis Technology),還有比較流行且高效的Mentor Graphics公司的Synplify。Synplify綜合工具綜合出的結(jié)果占用面積小,工作頻率高,綜合速度快。</p><p>  ISE的綜

44、合工具不但包括了Xilinx自身提供的綜合工具XST,同時還可以內(nèi)嵌Mentor Graphics公司的Leonardospectrum和Synplify公司的Synplify,實現(xiàn)無縫連接。</p><p>  1.4.2 設(shè)計仿真</p><p>  設(shè)計仿真主要有功能仿真和時序仿真兩種。</p><p>  功能仿真是驗證電路功能是否符合設(shè)計要求,也叫做前仿

45、真,此時的仿真沒有延時消息,對于初步的功能檢測非常的方便。仿真前,要先利用波形編輯器和硬件描述語言等建立波形文件和測試向量(即將所關(guān)心的輸入信號組合成序列),仿真結(jié)果將會生成報告文件和輸出信號波形,從中便可觀察到各個節(jié)點的信號變化。如果發(fā)現(xiàn)錯誤,則返回設(shè)計中修改邏輯設(shè)計。</p><p>  時序仿真在布局布線之后,又稱做后仿真后延時仿真。由于不同器件的內(nèi)部延時是不一樣的,不同的布局布線方案也給延時造成不同的影響

46、,因此在處理設(shè)計后,對于系統(tǒng)各模塊進(jìn)行時序仿真,分析其時序關(guān)系,估計設(shè)計的性能,以及檢查和消除競爭冒險等是非常必要的。在時序仿真中,應(yīng)該將布局布線的延時文件反標(biāo)到設(shè)計中,使仿真既包含延時消息,又包含延時消息。與功能仿真相比,這種后仿真包含的延時信息最為全面、準(zhǔn)確,能較好地反映芯片的實際工作情況。</p><p><b>  1.4.3 實現(xiàn)</b></p><p>

47、  綜合結(jié)果的本質(zhì)是一些有與門、或門、非門觸發(fā)器,RAM等基本邏輯單元組成的邏輯網(wǎng)表,它與芯片實際的配置情況還有較大的差距。此時應(yīng)該使用FPGA廠商提供的工具軟件,根據(jù)所選芯片的型號,將綜合輸出的邏輯網(wǎng)表適配到具體的FPGA器件上,這個過程就叫做實現(xiàn)過程。Xilinx的實現(xiàn)過程分為:翻譯(Translate)、映射(Map)和布局布線(Place&Route)等三個步驟。因為只有器件開發(fā)商最了解器件的內(nèi)部結(jié)構(gòu),所以實現(xiàn)步驟必須選

48、用器件開發(fā)商提供的工具軟件[3]。</p><p>  數(shù)字時鐘及MAXP+LUSEII的簡介</p><p>  2.1 數(shù)字時鐘的原理</p><p>  數(shù)字時鐘是使用4個兩位的計數(shù)器來實現(xiàn)的,即百分秒計數(shù)器、秒計數(shù)器、分計數(shù)器和小時計數(shù)器。每個計數(shù)器又分別使用高地位2個計數(shù)器來實現(xiàn)。其中百分秒數(shù)器是100進(jìn)制計數(shù)器(高位10進(jìn)制計數(shù)器,地位10進(jìn)制計數(shù)器)

49、,秒計數(shù)器和分計數(shù)器是60進(jìn)制計數(shù)器(高位6進(jìn)制計數(shù)器,地位10進(jìn)制計數(shù)器),小時計數(shù)器是24進(jìn)制計數(shù)器(高位2進(jìn)制計數(shù)器,地位10進(jìn)制計數(shù)器)。</p><p>  數(shù)字時鐘首先是百分秒計數(shù)器按照系統(tǒng)時鐘CLK__50進(jìn)行計數(shù),計數(shù)滿100后向秒計數(shù)器進(jìn)位。秒計數(shù)器以百分秒計數(shù)器的進(jìn)位位cnl為時鐘進(jìn)行計數(shù),計數(shù)滿60后向分計數(shù)器進(jìn)位。分計數(shù)器以秒計數(shù)器的進(jìn)位位cn2為時鐘進(jìn)行計數(shù),計數(shù)滿60后向小時計數(shù)器進(jìn)位

50、。小時計數(shù)器以分計數(shù)器的進(jìn)位位cn3為時鐘進(jìn)行計數(shù),計數(shù)滿24后整個系統(tǒng)從0開始重新進(jìn)行計數(shù)。</p><p>  圖2.1 數(shù)字時鐘的原理圖</p><p>  2.2 數(shù)字時鐘的構(gòu)成</p><p>  數(shù)字鐘實際上是一個對標(biāo)準(zhǔn)頻率(1HZ)進(jìn)行計數(shù)的計數(shù)電路。由于計數(shù)的起始時間不可能與標(biāo)準(zhǔn)時間一致,故需在電路上加一個校時電路,同時標(biāo)準(zhǔn)的1HZ時間信號必須做

51、到準(zhǔn)確穩(wěn)定。通常使用石英晶體振蕩電路構(gòu)成數(shù)字鐘。圖2-1所示為數(shù)字鐘的一般構(gòu)成框圖。它主要包括時間基準(zhǔn)電路、計數(shù)器電路、控制電路、譯碼和顯示電路。其中的控制邏輯電路比較靈活多樣,不斷完善它可以增強(qiáng)數(shù)字鐘的功能。</p><p>  圖2.2 數(shù)字鐘的一般構(gòu)成框圖</p><p>  2.3 數(shù)字鐘的功能要求</p><p>  時鐘功能:完成分/時的正確計數(shù)并顯

52、示,秒由于數(shù)碼管數(shù)目的限制,采取發(fā)光二極管做提示;</p><p>  鬧鐘定時:實現(xiàn)定時提醒及定時報時,利用蜂鳴器發(fā)出報時聲音;</p><p>  鐘校時:當(dāng)人為時鐘不準(zhǔn)確時,可以分別對分/時鐘進(jìn)行調(diào)整;</p><p>  秒表功能:利用4個數(shù)碼管完成秒表顯示:其精確度達(dá)100ms,可以暫停,并可隨時記時、暫停后記錄數(shù)據(jù),最大計時為999.9s。</p&

53、gt;<p>  數(shù)字時鐘是可植入自動控制、測試等系統(tǒng)內(nèi)部的,作為系統(tǒng)的時鐘源,可以為系統(tǒng)提供時信號或中斷控制的時間基準(zhǔn),具有廣泛的用途,基于PFGA的數(shù)字時鐘的設(shè)計,體現(xiàn)了現(xiàn)代數(shù)字電路設(shè)計芯片的思想,而且這種設(shè)計方法縮短了產(chǎn)品的設(shè)計周期和調(diào)試周期,提高了設(shè)計的可靠性和成功性,充分體現(xiàn)了可編程邏輯器件在數(shù)字電路設(shè)計中的優(yōu)越性[4]。</p><p>  2.4 MAX+PLUSⅡ開發(fā)平臺簡介<

54、;/p><p>  軟件介紹:MAX+PLUSⅡ是美國Altera公司開發(fā)的一種全集成化的可編程邏輯設(shè)計軟件平臺。具有豐富的圖形界面和完整、可即時訪問的在線文檔。提供一個真正與結(jié)構(gòu)無關(guān)的可編程邏輯設(shè)計環(huán)境; 全集成化的一套可編程邏輯開發(fā)工具; 提供多種輸入方式;可方便與其它工業(yè)標(biāo)準(zhǔn)設(shè)計輸入、綜合與校驗工具鏈接。在進(jìn)行原理圖輸入時,可以直接放置74 系列邏輯芯片。</p><p>  2.5

55、MAX+PLUSⅡ的功能</p><p>  MAX+PLUS II 的編譯核心支持Altera 的FLEX 10K、FLEX 8K、MAX9000、MAX7000、FLASHlogIC、MAX5000、Classic 系列可編程邏輯器件。</p><p>  MAX+PLUS II 的設(shè)計輸入、處理與校驗功能一起提供了全集成化的一套可編程邏輯開發(fā)工具,可加快動態(tài)調(diào)試,縮短開發(fā)周期。<

56、;/p><p>  MAX+PLUS II 支持各種HDL 設(shè)計輸入,包括VHDL、Verilog 和Altera 的AHDL。</p><p>  MAX+PLUS II 可與其他工業(yè)標(biāo)準(zhǔn)設(shè)計輸入、綜合與校驗工具鏈接。與CAE 工具的接口符合EDIF200 和209、參數(shù)化模塊庫(LPM)、Verilog、VHDL 及其它標(biāo)準(zhǔn)。設(shè)計者可使用Altera 或標(biāo)準(zhǔn)CAE 設(shè)計輸入工具去建立邏輯設(shè)

57、計,使用MAX+PLUS II 編譯器對Altera器件設(shè)計進(jìn)行編譯,并使用Altera 或其它CAE 校驗工具進(jìn)行器件或板級仿真。</p><p>  MAX+PLUSII 支持與Synopsys、ViewlogIC、Mentor Graphics、Cadence、Exemplar、Data I/O、Intergraph、Minc、OrCAD 等公司提供的工具接口。</p><p>  

58、使用MAX+PLUS II 進(jìn)行設(shè)計包括四個階段:設(shè)計輸入、設(shè)計處理、設(shè)計驗證和器件編程。</p><p>  2.6 MAX+PLUSⅡ設(shè)計向?qū)?lt;/p><p>  安裝授權(quán)MAX+PLUSⅡ軟件后,就可以使用它進(jìn)行電子系統(tǒng)設(shè)計,不論設(shè)計是使用圖形輸入方式還是文本輸入方式,設(shè)計流程是通用的,如圖2.3所示[5]。</p><p>  圖2.3 設(shè)計流程圖<

59、;/p><p>  第三章 程序設(shè)計與實驗仿真</p><p>  3.1 主程序代碼設(shè)計與仿真結(jié)果</p><p>  3.1.1 主程序源代碼</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  

60、use ieee.std_logic_arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity newclock is</p><p>  port( clk :in std_logic; --20MHz時鐘輸入</p&

61、gt;<p>  segout :out std_logic_vector(7 downto 0); --段碼輸出</p><p>  selout :out std_logic_vector(5 downto 0); --位選輸出</p><p>  key :instd_logic_vector(2 downto 0)); <

62、/p><p>  --key2為調(diào)時和計時狀態(tài)切換按鍵</p><p>  -- key1為調(diào)時按鍵</p><p>  -- key0為清零按鍵</p><p>  end newclock;</p><p>  architecture a of newclock is</p><p>  co

63、mponent counter60 --六十進(jìn)制計數(shù)器原件例化說明</p><p>  end component;</p><p>  component counter24 --二十四進(jìn)制計數(shù)器原件例化說明</p><p>  end component;</p><p>  signal cy

64、s,cym,cyh : std_logic;</p><p>  signal s : std_logic_vector(2 downto 0);</p><p>  signal num : std_logic_vector(3 downto 0);</p><p>  signal seg : std_logic_vector(6

65、downto 0);</p><p>  signal sel : std_logic_vector(5 downto 0);</p><p>  signal sample, dly_out,diff : std_logic;</p><p>  signal state : std_logic_vector (1 downto 0); --

66、當(dāng)前調(diào)整狀態(tài)</p><p><b>  --00調(diào)時</b></p><p><b>  --01調(diào)時</b></p><p><b>  --10調(diào)秒</b></p><p><b>  --11計時</b></p><p> 

67、 signal match : std_logic; --用于指示時、分、秒中哪一個是當(dāng)前調(diào)整對象</p><p>  signal glitter: std_logic; --閃爍顯示控制 </p><p><b>  begin</b></p><p>  conj:block</p>

68、<p>  signal adj,ecs,scm,ech,sc:std_logic;</p><p><b>  begin</b></p><p>  u1: counter60 port map(clk,dbs,enb(0),clr,ecs,cys); --秒計數(shù)器元件例化</p><p>  u2: counter60 por

69、t map(clk,dbm,enb(1),clr,ecm,cym);--分計數(shù)器元件例化</p><p>  u3: counter24 port map(clk,dbh,enb(2),clr,ech,cyh);--小時計數(shù)器元件例化</p><p>  gen:for i in 0 to 6 generate --七段LED的段碼輸出生成語句</p><p> 

70、 為節(jié)省6個七段顯示器顯示所需的電流消耗,可利用視覺暫留原理來讓七段顯示器輪流顯示。將分與秒4個數(shù)字共享一組七段顯示器組,其中必須使用同步掃描電路,將各個數(shù)字的7個信號分別接至a,b,c,d,e,f,g端口,同時觸發(fā)該數(shù)字所對應(yīng)的七段顯示器的電源引腳。視覺暫留原理要求每一數(shù)字在1秒內(nèi)必須亮32次。即在(1/32)s內(nèi),4個數(shù)字要輪流亮一次,故每個數(shù)字最多可連續(xù)亮(1/128)s,然后等待(3/128)s后再亮一次,因此省了3/4的電能消

71、耗。視覺暫留效應(yīng)讓我們感覺到,相隔(1/32)s亮一次的燈似乎一直都亮著。同理,顯示小時的2個數(shù)字,仍然使用四合一七段顯示器組。只是放棄其中的2個七段顯示器不用即可。</p><p>  fdiv:block --分頻塊語句</p><p>  bin_bcd : block --二進(jìn)制到BCD十進(jìn)制的轉(zhuǎn)換</p><p>  end block bin_b

72、cd;</p><p>  seven_seg: block --七段LED譯碼</p><p>  本設(shè)計是一個顯時(2位)、分(2位)、秒(2位)供6位數(shù)字的多功能電子鐘。不但可以作為鬧鐘,也可以作為計時器。為化簡設(shè)計與驗證,用信號發(fā)生器輸出的1024Hz作為系統(tǒng)頻率(時鐘)。因此將其除以1024,即得1Hz的秒鐘信號,秒計滿60即得1分鐘,分計滿60即得1小時的信號,小時計滿24即

73、得一天。</p><p>  輸出顯示采用四合一七段顯示器來顯示分與秒共四個數(shù)字,另外2個數(shù)字的小時顯示也采用四合一七段顯示器來顯示,只是讓其中2個數(shù)字不用即可。利用視覺暫留效應(yīng),讓4個七段顯示器輪流供電顯示,即進(jìn)行輸出顯示掃描。由于需要1024Hz的時鐘掃描信號,本系統(tǒng)輸入時鐘的信號直接采用信號發(fā)生器的1024Hz信號。另外,還需加一個除以1024的分頻器,用來實現(xiàn)系統(tǒng)輸入信號產(chǎn)生的一個1Hz的時鐘信號[6]。

74、</p><p>  譯碼器的電路圖入圖3.1所示</p><p>  圖3.1 譯碼器的電路圖</p><p>  在一般電路中,數(shù)值均以二進(jìn)制的形式存儲于計算,但是要將其輸出至七段顯示器顯示時,則必須提供一個電路模塊專門將二進(jìn)制轉(zhuǎn)換成十進(jìn)制供輸出使用。此處以查表方式來設(shè)計轉(zhuǎn)換電路,使用并行語句with_select列出0~9等十種對照數(shù)值狀況。</p&g

75、t;<p>  此處,定義一些功能模塊間整體共享的傳遞信號,以整體和所有塊的功能。這些信號將成為各個模塊的外部輸入或輸出信號,如:</p><p>  hzl: 表示1s的時鐘;</p><p>  n_sec.n_min:表示正常持續(xù)不斷的計數(shù)時間—分與秒,整數(shù)形式;</p><p>  o_hour: 表示正常持續(xù)不斷的計數(shù)時

76、間—小時,整數(shù)形式;</p><p>  a_sec.a_min:表示鬧鐘的計數(shù)時間--分與秒,整數(shù)形式;</p><p>  a_hour: 表示鬧鐘的計數(shù)時間--時,整數(shù)形式;</p><p>  s_sec.s_min: 表示定時器的計數(shù)時間--分與秒,整數(shù)形式;</p><p>  s_hour: 表示定時器的計

77、數(shù)時間--小時,整數(shù)形式;</p><p>  second,minute:表示被選擇輸出的計數(shù)器時間--分與秒,整數(shù)形式;</p><p>  hour: 表示被選擇輸出的計數(shù)器時間--時,整數(shù)形式;</p><p>  sec_one,sec_ten,min_one,min_ten:表示被選擇輸出的計數(shù)器時--分與秒的個位數(shù)與十位數(shù),BCD形式;

78、</p><p>  hour_one,hour_ten:表示被選擇輸出的計數(shù)器時間--小時個位數(shù)與十位數(shù),BCD形式;</p><p>  sec7_one,sec7_ten,min7_one,min7_ten:表示被選擇輸出的計數(shù)器時--分與秒的個位數(shù)與十位數(shù),七段顯示器形式;</p><p>  houe7_one,hour7_ten:表示被選擇輸出的計數(shù)器時

79、--分與秒的個位數(shù)與十位數(shù),七段顯示器形式;</p><p>  stop_index: 表示定時器時鐘的指針;</p><p>  alarm_index: 表示鬧鐘的設(shè)定時間結(jié)束的指針。</p><p>  QuartusII編譯器是由一系列處理模塊構(gòu)成的,這些模塊負(fù)責(zé)對設(shè)計項目的檢錯,邏輯綜合和結(jié)構(gòu)綜合。即將設(shè)計項目適配進(jìn)FPGA/CPLD目標(biāo)器中,

80、同時產(chǎn)生多種用途的輸出文件,如功能和時序仿真文件,器件編程的目標(biāo)文件等。編譯器首先從工程設(shè)計文件間的層次結(jié)構(gòu)描述中提取信息,包括每個低層次文件中的錯誤信息,供設(shè)計者排除,然后將這些層次構(gòu)建產(chǎn)生一個結(jié)構(gòu)化的以網(wǎng)表文件表達(dá)的電路原理圖文件,并把各層次中所有的文件結(jié)合成一個數(shù)據(jù)包,以便更有效地處理。下面首先選擇Processing菜單的“Start Compilation”項,啟動全程編譯。注意這里所謂的編譯(Compilation)包括Qu

81、artusII對設(shè)計輸入的多項處理操作,其中包括排錯、數(shù)據(jù)網(wǎng)表文件提取、邏輯綜合、適配、裝配文件(仿真文件與編程配置文件)生成,以及基于目標(biāo)器件的工程時序分析等。如果工程中的文件有錯誤,在下方的Processing處理欄中會顯示出來。對于Processing欄顯示出的語句格式錯誤,可雙擊此條文,即彈出vhdl文件,在閃動的光標(biāo)處(或附近)可發(fā)現(xiàn)文件中的錯誤。再次進(jìn)行編譯直至排除所有錯誤。會發(fā)現(xiàn)在Processi</p>&

82、lt;p>  3.1.2 實驗仿真結(jié)果</p><p>  模塊實驗波形仿真如圖3.2所示</p><p>  圖3.2 主程序波形仿真</p><p>  在1Hz的觸發(fā)信號下,若撥動開關(guān)stop=1,且按住調(diào)秒鍵不放,則計數(shù)器定時一直切換撥動開關(guān)ok=1時,定時10秒,接著自動計時到0,在送出index=1的指針信號。</p><p

83、>  調(diào)整輸出級采用運放作射極跟隨器,使調(diào)整管的輸出電壓精確地與D/A 轉(zhuǎn)換器輸出電壓保持一致。調(diào)整管采用大功率達(dá)林頓管,確保電路的輸出電流值達(dá)到設(shè)計要求。數(shù)控電源各部分工作所需的±12V 和+5V 電源由固定集成穩(wěn)壓器7812、7912、和7805 提供,調(diào)整管所需輸入電壓,經(jīng)簡單整流,濾波即可得到,但要求能提供2A 的電流。</p><p>  輸出電壓的調(diào)整,主要是運用輸出跟隨器來完成的,此

84、反饋電路的主要作用是,把輸出電壓反饋到NE5534 的輸入級的反向輸入端,當(dāng)同相輸入IN+和反向輸入端IN-有差別時,調(diào)整輸出電壓使之趨于穩(wěn)定,從而達(dá)到調(diào)整輸出電壓的目的。</p><p>  3.2 60進(jìn)制代碼設(shè)計與仿真結(jié)果</p><p>  3.2.1 60進(jìn)制計數(shù)器模塊</p><p>  library ieee;</p><p&

85、gt;  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity counter60 is</p><p>  port(cp : in

86、 std_logic; </p><p>  bin : out std_logic_vector (5 downto 0);</p><p>  s : in std_logic; </p><p>  clr : in std_logic; </p><p>  ec : in std_logic; <

87、;/p><p>  cy60 : out std_logic);</p><p>  end counter60;</p><p>  architecture a of counter60 is</p><p>  signal q : std_logic_vector (5 downto 0);</p><p>  

88、signal rst, dly : std_logic;</p><p><b>  begin</b></p><p>  process (cp,rst)</p><p><b>  begin</b></p><p>  if rst = '1'then</p>

89、<p>  q <= "000000";</p><p>  elsif cp'event and cp = '1'then</p><p>  dly <= q(5);</p><p>  if ec = '1'then </p><p><b> 

90、 q <= q+1;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  cy60 <= not q(5) and dly;</p>&

91、lt;p>  rst <= '1'when q=60 or clr='1'else</p><p><b>  '0';</b></p><p>  bin <= q when s = '1'else</p><p><b>  "000000

92、";</b></p><p><b>  end a; </b></p><p>  個位數(shù)信號one(0~9)ten(0~5)先以整數(shù)形式出現(xiàn),計算完成后再轉(zhuǎn)換成矢量形式(oens與tens),便于以后轉(zhuǎn)成七段LED顯示碼。十進(jìn)制需2位的位矢量,為統(tǒng)一以后的七段顯示器輸出需要,此處是以4為的位矢量表述。If_then語句與適當(dāng)?shù)臈l件進(jìn)位適合時

93、鐘計時,十進(jìn)制的進(jìn)位的進(jìn)位歸零必須配合個位數(shù)的進(jìn)位歸零,而個位數(shù)的進(jìn)位歸零則不必配合十進(jìn)制的進(jìn)位歸零,所以在if_then語句中,分?jǐn)?shù)的計數(shù)以秒數(shù)的進(jìn)位輸出full_sec作為觸發(fā)[8]。</p><p>  3.2.2 仿真結(jié)果</p><p>  模塊實驗波形仿真如圖3.3所示</p><p>  圖3.3 60進(jìn)制波形仿真</p><p

94、>  設(shè)定兩個系統(tǒng)輸入信號后,可觀察到系統(tǒng)輸出信號與波形,在計數(shù)達(dá)到59以后,即進(jìn)位到00(60)。</p><p>  電路符號如圖3.4所示</p><p>  圖3.4 數(shù)字鐘圖元符號</p><p>  60進(jìn)制仿真芯片如圖3.5所示</p><p>  圖3.5 60進(jìn)制芯片圖</p><p>  

95、3.3 24進(jìn)制代碼設(shè)計與仿真結(jié)果</p><p>  3.3.1 24進(jìn)制計數(shù)器模塊</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  u

96、se ieee.std_logic_unsigned.all;</p><p>  entity counter24 is</p><p>  port(cp : in std_logic; </p><p>  bin : out std_logic_vector (5 downto 0);</p><p>  s

97、 : in std_logic; </p><p>  clr : in std_logic; </p><p>  ec : in std_logic; </p><p>  cy24 : out std_logic);</p><p>  end counter24;</p><p>  

98、architecture a of counter24 is</p><p>  signal q : std_logic_vector (4 downto 0);</p><p>  signal rst, dly : std_logic;</p><p><b>  begin</b></p><p>  proce

99、ss (cp,rst)</p><p><b>  begin</b></p><p>  if rst = '1'then</p><p>  q <= "00000";</p><p>  elsif cp'event and cp = '1'then

100、</p><p>  dly <= q(4);</p><p>  if ec = '1'then </p><p><b>  q <= q+1;</b></p><p><b>  end if;</b></p><p><b>  

101、end if;</b></p><p>  end process; </p><p>  cy24 <= not q(4) and dly;</p><p>  rst <= '1'when q=24 or clr='1'else</p><p><b>  '0&#

102、39;;</b></p><p>  bin <= ('0'& q) when s = '1'else</p><p><b>  "000000";</b></p><p><b>  end a;</b></p><p&g

103、t;  24與60 結(jié)構(gòu)類似,只是講除以60改為除以24,并在接收60分進(jìn)位指針carry時,檢查是否同時為23小時,再決定進(jìn)位與否。因此個位數(shù)字信號與十位信號先以整數(shù)形式出現(xiàn),計算完成后再轉(zhuǎn)換成位矢量形式,便于以后轉(zhuǎn)成LED顯示碼。為統(tǒng)一以后的七段顯示器輸出顯示的需要,此處已4為的位矢量表示。個位數(shù)的進(jìn)位歸零在十位進(jìn)制位2時,必須在個位等于3是進(jìn)位,同時送出進(jìn)位指針full=1,1小時后將指針歸零[9]。</p><

104、;p>  3.3.2 仿真結(jié)果</p><p>  模塊實驗波形仿真如圖3.6所示</p><p>  圖3.6 24進(jìn)制波形仿真</p><p>  設(shè)定兩個系統(tǒng)輸入信號后,可觀察到系統(tǒng)輸出信號與波形,在計數(shù)達(dá)到23以后,即進(jìn)位到00(24)。</p><p>  電路符號如圖3.7所示</p><p> 

105、 圖3.7 數(shù)字鐘圖元符號</p><p>  24進(jìn)制仿真芯片如圖3.8所示</p><p>  圖3.8 24進(jìn)制芯片圖</p><p>  3.4 去抖代碼設(shè)計與仿真結(jié)果</p><p>  按鍵開關(guān)是電子設(shè)備實現(xiàn)人機(jī)對話的重要器件之一。由于大部分按鍵是機(jī)械觸點,在觸點閉合和斷開時都會產(chǎn)生抖動。為避免抖動引起誤動作造成系統(tǒng)的不穩(wěn)定

106、,就要求消除按鍵的抖動,確保按鍵每按一次只做一次響應(yīng)。隨著可編程邏輯器件的綜合性能的不斷提高,它已經(jīng)象單片機(jī)一樣。廣泛應(yīng)用在各種數(shù)字邏輯領(lǐng)域。用可編程邏輯器件直接獲取鍵盤信息也得到廣泛的應(yīng)用。這里提出用VHDL語言編程的有限狀態(tài)機(jī)的設(shè)計方法來實現(xiàn)按鍵的消抖,經(jīng)仿真分析和下載實現(xiàn),這種方法設(shè)計的消抖電路能夠很好地實現(xiàn)電路功能,進(jìn)行快速按鍵時都能保證每按一次做一次的響應(yīng),且性能穩(wěn)定。</p><p>  3.4.1

107、 按鍵抖動產(chǎn)生原因分析</p><p>  絕大多數(shù)按鍵都是機(jī)械式開關(guān)結(jié)構(gòu),由于機(jī)械式開關(guān)的核心部件為彈性金屬簧片,因而在開關(guān)切換的瞬間會在接觸點出現(xiàn)來回彈跳的現(xiàn)象。雖然只是進(jìn)行了一次按鍵,結(jié)果在按鍵信號穩(wěn)定的前后出現(xiàn)了多個脈沖,如圖1所示。如果將這樣的信號直接送給微處理器掃描采集的話,將可能把按鍵穩(wěn)定前后出現(xiàn)的脈沖信號當(dāng)作按鍵信號,這就出現(xiàn)人為的一次按鍵但微處理器以為多次按鍵現(xiàn)象。為了確保按鍵識別的準(zhǔn)確性,在按

108、鍵信號抖動的情況下不能進(jìn)入狀態(tài)輸入,為此就必須對按鍵進(jìn)行消抖處理,消除抖動時不穩(wěn)定、隨機(jī)的電壓信號。機(jī)械式按鍵的抖動次數(shù)、抖動時間、抖動波形都是隨機(jī)的。不同類型的按鍵其最長抖動時間也有差別,抖動時間的長短和按鍵的機(jī)械特性有關(guān),一般為5~10 ms,但是,有些按鍵的抖動時間可達(dá)到20 ms,甚至更長。所以,在具體設(shè)計中要具體分析,根據(jù)實際情況來調(diào)整設(shè)計</p><p>  3.4.2 按鍵消抖電路設(shè)計原理<

109、/p><p>  按鍵消抖的關(guān)鍵是提取穩(wěn)定的低電平(或高電平)狀態(tài),濾除按鍵穩(wěn)定前后的抖動脈沖。在用基于VHDL語言的時序邏輯電路設(shè)計按鍵消抖電路時,可以用一個時鐘脈沖信號對按鍵狀態(tài)進(jìn)行取樣,當(dāng)?shù)谝淮尾蓸拥降碗娖綍r,啟動延時電路,延時結(jié)束后,再對按鍵信號進(jìn)行連續(xù)三次取樣,如果三次取樣都為低電平,則可以認(rèn)為按鍵已經(jīng)處在穩(wěn)定狀態(tài),這時輸出一個低電平的按鍵確認(rèn)信號,如果連續(xù)三次的取樣中,至少有一次是高電平,則認(rèn)為按鍵仍處在

110、抖動狀態(tài),此時不進(jìn)行按鍵確認(rèn),按鍵輸出信號為高電平。</p><p>  3.4.3 按鍵消抖電路設(shè)計</p><p>  該控制電路采用VHDL語言的有限狀態(tài)機(jī)的設(shè)計方法來描述和實現(xiàn),其狀態(tài)轉(zhuǎn)換圖如圖3.9所示。</p><p>  圖3.9 按鍵消抖電路狀態(tài)轉(zhuǎn)換圖</p><p>  電路的復(fù)位信號Reset有效時,電路進(jìn)入復(fù)位狀態(tài)S

111、0,在S0狀態(tài)下時鐘信號CLK以一定的頻率采樣按鍵輸入信號Key_in,如果采樣到Key_in=‘1’則停留在S0狀態(tài),并繼續(xù)采樣按鍵輸入信號的狀態(tài),一旦采樣到輸入信號是低電平,即Key_in=‘0’,則轉(zhuǎn)入S1延時狀態(tài),進(jìn)行消抖延時,當(dāng)延時結(jié)束時Delay_end=‘1’,則轉(zhuǎn)入在S2狀態(tài),在此狀態(tài)下時鐘信號CLK以一定頻率采樣按鍵輸入Key_in的狀態(tài),如果采樣到Key_in為高電平即Key_in=‘1’則轉(zhuǎn)回狀態(tài)S0,表示按鍵仍處

112、在抖動狀態(tài),如果采樣到Key_in=‘O’,則轉(zhuǎn)入狀態(tài)S3;狀態(tài)S3,S4的轉(zhuǎn)換過程和條件跟S2相同,在S4狀態(tài)下,如果Key_in=‘0’則轉(zhuǎn)入S5狀態(tài),當(dāng)?shù)竭_(dá)狀態(tài)S5時.表示經(jīng)過S2,S3,S4三個連續(xù)狀態(tài)檢測按鍵輸入Key_in的狀態(tài)都為‘0’,則認(rèn)為按鍵處在穩(wěn)定狀態(tài),并在S5輸出按鍵確認(rèn)信號Key_confirm=‘1’。同時在狀態(tài)S5下時鐘信號CLK檢測按鍵輸入狀態(tài),當(dāng)檢測到按鍵輸入Key_in=‘0’,表示按鍵仍未釋放,則停

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論