版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> ?。?0 屆)</b></p><p> 基于FPGA數(shù)字時(shí)鐘的設(shè)計(jì)</p><p><b> 目錄</b></p><p><b> 摘要III</b></p><p>
2、 AbstractIV</p><p><b> 前言1</b></p><p> 第一章 FPGA簡(jiǎn)介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è)計(jì)流程4</p><p> 1.4.1 設(shè)計(jì)輸入5</p><p> 1.4.2 設(shè)計(jì)仿真6</p><p> 1.4.3 實(shí)現(xiàn)6</p><p> 第二章 數(shù)字時(shí)鐘設(shè)計(jì)及MAX+PLUSE II的介紹7</p><p> 2.1 數(shù)字時(shí)鐘的原理
4、7</p><p> 2.2 數(shù)字時(shí)鐘的構(gòu)成7</p><p> 2.3 數(shù)字鐘的功能要求8</p><p> 2.4 MAX+PLUSⅡ開(kāi)發(fā)平臺(tái)簡(jiǎn)介9</p><p> 2.5 MAX+PLUSⅡ的功能9</p><p> 2.6 MAX+PLUSⅡ的設(shè)計(jì)向?qū)?</p>&
5、lt;p> 第三章 程序設(shè)計(jì)與實(shí)驗(yàn)仿真11</p><p> 3.1 主程序代碼設(shè)計(jì)與仿真結(jié)果11</p><p> 3.1.1 主程序源代碼11</p><p> 3.1.2 實(shí)驗(yàn)仿真結(jié)果15</p><p> 3.2 24進(jìn)制代碼設(shè)計(jì)與仿真結(jié)果15</p><p> 3.2.1
6、 24進(jìn)制源代碼15</p><p> 3.2.2 實(shí)驗(yàn)仿真結(jié)果17</p><p> 3.3 60進(jìn)制代碼設(shè)計(jì)與仿真結(jié)果18</p><p> 3.3.1 60進(jìn)制源代碼18</p><p> 3.3.2 實(shí)驗(yàn)仿真結(jié)果20</p><p> 3.4 去抖代碼設(shè)計(jì)與仿真結(jié)果22<
7、;/p><p> 3.4.1 按鍵抖動(dòng)產(chǎn)生原因分析22</p><p> 3.4.2 按鍵消抖電路設(shè)計(jì)原理22</p><p> 3.4.3 按鍵消抖電路設(shè)計(jì)22</p><p> 3.4.4 去抖源代碼23</p><p> 3.4.5 實(shí)驗(yàn)仿真結(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ù)字時(shí)鐘的研究</p>&
9、lt;p><b> 摘要</b></p><p> 本文是在前人研究成果的基礎(chǔ)上,面向?qū)嶋H應(yīng)用的需求在MAX+PLUSⅡ開(kāi)發(fā)環(huán)境下,用VHDL硬件描述語(yǔ)言設(shè)計(jì)了一個(gè)可以在FPGA芯片上實(shí)現(xiàn)的數(shù)字時(shí)鐘.通過(guò)將設(shè)計(jì)代碼下載到FPGA的開(kāi)發(fā)平臺(tái)Altera DE2開(kāi)發(fā)板上進(jìn)行了功能驗(yàn)證. 采用VHDL硬件描述語(yǔ)言描述數(shù)字時(shí)鐘的功能,完成對(duì)各模塊的功能仿真,通過(guò)分析仿真波形表明設(shè)計(jì)的數(shù)字時(shí)
10、鐘完成了預(yù)期的功能。</p><p> 隨著現(xiàn)代芯片工藝的改進(jìn),F(xiàn)PGA的等效系統(tǒng)門達(dá)到到幾百萬(wàn)門,而且工作頻率也隨之提高。FPGA也就大量的在電子產(chǎn)品中出現(xiàn)。在通信行業(yè),傳輸網(wǎng),醫(yī)療儀器,各種電子儀器,安防監(jiān)控,電力系統(tǒng),汽車電子,消費(fèi)類電子中都大面積的使用。FPGA器件高集成度、可現(xiàn)場(chǎng)修改、開(kāi)發(fā)周期短等優(yōu)點(diǎn)滿足了從軍用到民用、從高端到低端的大多數(shù)電子設(shè)計(jì)領(lǐng)域的需求。</p><p>
11、 縱觀現(xiàn)場(chǎng)可編程邏輯器件的發(fā)展歷史,其之所以具有巨大的市場(chǎng)吸引力,根本在于:FPGA不僅可以使電子系統(tǒng)小型化、低功耗、高可靠性,而且其開(kāi)發(fā)周期短、開(kāi)發(fā)軟件投入少、芯片價(jià)格不斷降低,促使FPGA越來(lái)越多地取代了ASIC的市場(chǎng);越來(lái)越多的功能模塊集成到了FPGA中,實(shí)現(xiàn)你想實(shí)現(xiàn)的任何數(shù)字電路,可以定制各種電路;減少受制于專用芯片的束縛,真正為自己的產(chǎn)品量身定做,在設(shè)計(jì)的過(guò)程中可以靈活的更改設(shè)計(jì)。</p><p>
12、 數(shù)字電路的發(fā)展經(jīng)歷了由電子管、半導(dǎo)體分立器件到集成電路等幾個(gè)時(shí)代。從60年代開(kāi)始,數(shù)字集成器件以雙極型工藝制成了小規(guī)模邏輯器件。隨后發(fā)展到中規(guī)模邏輯器件;70年代末,微處理器的出現(xiàn),使數(shù)字集成電路的性能產(chǎn)生質(zhì)的飛躍。數(shù)字集成器件所用的材料以硅材料為主,在高速電路中,也使用化合物半導(dǎo)體材料,例如砷化鎵等。邏輯門是數(shù)字電路中一種重要的邏輯單元電路 。近年來(lái),可編程邏輯器件PLD特別是現(xiàn)場(chǎng)可編程門陣列FPGA的飛速進(jìn)步,使數(shù)字電子技術(shù)開(kāi)創(chuàng)了
13、新局面,不僅規(guī)模大,而且將硬件與軟件相結(jié)合,使器件的功能更加完善,使用更靈活。</p><p> 關(guān)鍵詞:數(shù)字時(shí)鐘;FPGA技術(shù);VHDL語(yǔ)言設(shè)計(jì)</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)今社會(huì)的標(biāo)志之一就是信息產(chǎn)品的廣泛使用,而且產(chǎn)品的性能是越來(lái)越強(qiáng),產(chǎn)品的復(fù)雜程度也越來(lái)越高,更新步伐更是越來(lái)越快。支撐信息電子產(chǎn)品高速發(fā)展的基礎(chǔ)就是微電子制造工藝水平的提高和電子產(chǎn)品設(shè)計(jì)開(kāi)發(fā)技術(shù)的發(fā)展。前者以微細(xì)加工技術(shù)為代表,而后者的代表就是電子設(shè)計(jì)自動(dòng)化技術(shù)。 </p><p> 本設(shè)計(jì)采用的VHDL是一種全方位的硬件描述語(yǔ)言,具有極強(qiáng)的描述能力,能
25、支持系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和邏輯門級(jí)三個(gè)不同層次的設(shè)計(jì);支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描述形式的混合描述、覆蓋面廣、抽象能力強(qiáng),因此在實(shí)際應(yīng)用中是越來(lái)越廣泛。ASIC是專用的系統(tǒng)集成電路,是一種帶有邏輯處理的加速器。而FPGA是特殊的ASIC芯片,與其他的ASIC芯片相比,它具有設(shè)計(jì)開(kāi)發(fā)周期短、設(shè)計(jì)制造成本低、開(kāi)發(fā)工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無(wú)需測(cè)試、質(zhì)量穩(wěn)定以及可實(shí)時(shí)在線檢測(cè)等優(yōu)點(diǎn)。</p><p> 鐘表的數(shù)字化給人們
26、生活帶來(lái)了極大的方便,且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。如定時(shí)自動(dòng)報(bào)警、定時(shí)啟閉器、定時(shí)開(kāi)關(guān)烘箱,各種定時(shí)電氣的自動(dòng)啟用等,所有這些都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字時(shí)鐘及擴(kuò)大其應(yīng)用,有著非常實(shí)用的意義。</p><p><b> FPGA簡(jiǎn)介</b></p><p> 1.1 FPGA概述</p><p> FPGA是現(xiàn)場(chǎng)可編程
27、門陣列(Fied Programmable Gate Array)的簡(jiǎn)稱,是一種高密度的可編程邏輯器件,與之相應(yīng)的CPLD是復(fù)雜可編程邏輯器件(Complex Programmable Logic Device)的簡(jiǎn)稱,兩者的功能基本相同,只是實(shí)現(xiàn)原理略有不同,所以有時(shí)可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件或CPLD/PGFA。CPLD/FPGA幾乎能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡(jiǎn)單的74電路。它如同一堆積木,工程
28、師可以通過(guò)傳統(tǒng)的原理圖輸入或硬件描述語(yǔ)言自由的設(shè)計(jì)一個(gè)數(shù)字系統(tǒng)。通過(guò)軟件仿真可以事先驗(yàn)證設(shè)計(jì)的正確性,在PCB完成以后,利用CPLD/FPGA的在線修改功能,隨時(shí)修改設(shè)計(jì)而不必改動(dòng)硬件電路。使用CPLD/FPGA開(kāi)發(fā)數(shù)字電路,可大大縮短設(shè)計(jì)時(shí)間,減少PCB面積,提高系統(tǒng)的可靠性。這些優(yōu)點(diǎn)使得CPLD/FPGA技術(shù)在20世紀(jì)90年代以后得到了飛速的發(fā)展,同時(shí)也大大推動(dòng)了EDA軟件和硬件描述語(yǔ)言HDL的進(jìn)步。</p><
29、p> 1.2 FPGA基本結(jié)構(gòu)</p><p> FPGA具有掩膜可編程門列的通用結(jié)構(gòu),它是由邏輯功能塊排成陣列,由可編程的互聯(lián)資源連接這些邏輯功能塊來(lái)實(shí)現(xiàn)不同的設(shè)計(jì)。</p><p> FPGA一般由3種可編程電路和一個(gè)用于存放編程數(shù)據(jù)的靜態(tài)存儲(chǔ)器SRAM組成的。這3種可編程電路是:可編程邏輯模塊(CLB—Configurable Logic Block)、輸入/輸出模塊(
30、IOB—I/O Block)和互聯(lián)資源(IR—Intercinnect Resource)??删幊踢壿嬆KCLB是實(shí)現(xiàn)邏輯功能的基本單元,它們通常規(guī)則的排列成一個(gè)陣列,散布也整個(gè)芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常L排列在芯片的四周;可編程互聯(lián)資源包括各種長(zhǎng)度的連接線段和一些可編程連接開(kāi)關(guān),它們將各個(gè)CLB之間或CLB、IOB之間及IOB之間連接起來(lái),構(gòu)成了特定功能的電路。</p>
31、;<p> 1、CLB是FPGA的主要組成部分。圖1-1是CLB的基本結(jié)構(gòu)框圖,它主要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器等電路組成。 CLB中3個(gè)邏輯函數(shù)發(fā)生器分別是G、F和H,相應(yīng)的輸出是G’、F’和H’。G有4個(gè)輸入變量G1、G2、G3和G4;F也有4個(gè)輸入變量F1、F2、F3和F4。這兩個(gè)函數(shù)發(fā)生器是完全獨(dú)立的,均可以實(shí)現(xiàn)4輸入變量的任意組合邏輯函數(shù)。邏輯函數(shù)發(fā)生器H有3個(gè)輸入信號(hào);前兩個(gè)是函數(shù)發(fā)生器的輸出G’和
32、F’,而另一個(gè)輸入信號(hào)是來(lái)自信號(hào)變換電路的輸出H1。這個(gè)函數(shù)發(fā)生器能實(shí)現(xiàn)3輸入變量的各種組合函數(shù)。這3個(gè)函數(shù)發(fā)生器結(jié)合起來(lái),可實(shí)現(xiàn)多達(dá)9變量的邏輯函數(shù)。</p><p> 圖1.1 CLB基本結(jié)構(gòu)框圖</p><p> CLB中有許多不同規(guī)格的輸了選擇器(四選一、二選一等),通過(guò)對(duì)CLB內(nèi)部數(shù)據(jù)選擇器的編程,邏輯函數(shù)發(fā)生器G、F和H的輸出可以連接到CLB輸出端X和Y,并用來(lái)選擇觸發(fā)器
33、的激勵(lì)輸入信號(hào)、時(shí)鐘有效邊沿、時(shí)鐘使能信號(hào)及輸出信號(hào)。這些數(shù)據(jù)選擇器的地址控制信號(hào)均是由編程信息提供,從而實(shí)現(xiàn)所需的電路結(jié)構(gòu)。</p><p> CLB中的邏輯函數(shù)發(fā)生器F和G均為查找表結(jié)構(gòu),其工作原理類似于ROM。F和G的輸入等效于ROM的地址碼,通過(guò)查找ROM中的地址表可得到相應(yīng)的組合邏輯函數(shù)輸出。另一方面,邏輯函數(shù)發(fā)生器F和G還可以作為器件內(nèi)高速RAM或小的可讀寫存儲(chǔ)器使用,它是由信號(hào)變換電路控制。<
34、;/p><p> 2、輸入/輸出模塊IOB。IOB提供了器件引腳和內(nèi)部邏輯陣列之間的連接。IOB主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā)/鎖存器、輸出緩沖器組成。</p><p> 每個(gè)IOB控制一個(gè)引腳。它們可被配置為輸入、輸出或雙向I/O功能。當(dāng)IOB控制的引腳被定義為輸入時(shí),通過(guò)該引腳的輸入信號(hào)先將其送入輸入緩沖器。緩沖器的輸出分為兩路:一路可以直接送到MUX,另一路經(jīng)延時(shí)幾納秒(或者
35、不延時(shí))送到輸入通路D觸發(fā)器,在送到數(shù)據(jù)選擇器。通過(guò)編程給數(shù)據(jù)選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來(lái)自輸入緩沖器,還是來(lái)自觸發(fā)器。</p><p> 當(dāng)IOB控制的引腳被定義為輸出時(shí),CLB陣列的輸出信號(hào)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之間連接起來(lái),構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。IR主要是由許多金屬線段構(gòu)成,這些金屬線段是帶有可編程開(kāi)關(guān)的,通過(guò)自動(dòng)布線實(shí)現(xiàn)各種電路的連接[1]。</p><p>
37、; 1.3 FPGA的工作原理</p><p> 目前,Xilinx公司生產(chǎn)的FPGA都是采用SRAM工藝的查處表(Look-Up-Table)結(jié)構(gòu),通過(guò)燒寫文件改變查找表內(nèi)容的方法實(shí)現(xiàn)對(duì)FPGA的重復(fù)配置,在使用時(shí)需要外接一個(gè)片外存儲(chǔ)器以保持程序。上電時(shí),F(xiàn)PGA將外部存儲(chǔ)器中的數(shù)據(jù)讀入片內(nèi)RAM,完成配置以后,進(jìn)入工作狀態(tài);掉電后FPGA恢復(fù)白片,內(nèi)部邏輯消失。由數(shù)字電路的基本知識(shí)可以知道,對(duì)于一個(gè)n輸
38、入的邏輯運(yùn)算,不管是與非運(yùn)算還是異或運(yùn)算等,最多只可能存在2n種結(jié)果。所以,如果事先將相應(yīng)的結(jié)果存放于一個(gè)存儲(chǔ)單元,就相當(dāng)于實(shí)現(xiàn)了與非門電路的功能。FPGA的原理也是如此,它通過(guò)燒寫文件去配置查找表的內(nèi)容,從而在相同的電路情況下實(shí)現(xiàn)了不同的邏輯功能。</p><p> 查找表(Look-Up-Table)簡(jiǎn)稱為L(zhǎng)UT,LUT本質(zhì)上就是一個(gè)RAM。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成是4位
39、地址線的RAM。當(dāng)用戶通過(guò)原理圖或HDL語(yǔ)言描述一個(gè)邏輯電路后,PLD/FPGA開(kāi)發(fā)軟件就會(huì)自動(dòng)計(jì)算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)寫入RAM,這樣,每輸入有一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址去進(jìn)行查找表,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出即可[2]。</p><p> 1.4 FPGA的設(shè)計(jì)流程</p><p> FPGA的基本開(kāi)發(fā)流程主要包括設(shè)計(jì)輸入(Design en
40、try)、設(shè)計(jì)仿真(Simulation)、設(shè)計(jì)綜合(Synthesize)、布局布線(Place&route)、和配置(Configuration)這五個(gè)主要步驟。集成綜合環(huán)境(ISE)的功能涵蓋了FPGA開(kāi)發(fā)的全部過(guò)程,其開(kāi)發(fā)流程如圖1.2所示。</p><p> 圖1.2 FPGA開(kāi)發(fā)流程圖</p><p> 1.4.1 設(shè)計(jì)輸入</p><p&g
41、t; 設(shè)計(jì)輸入時(shí)是根據(jù)工程師的設(shè)計(jì)方法所設(shè)計(jì)的功能描述給EDA軟件,通常所用的設(shè)計(jì)輸入方法有硬件描述語(yǔ)言HDL和原理圖設(shè)計(jì)方法。原理圖設(shè)計(jì)輸入法再早期應(yīng)用得比較廣泛,它根據(jù)設(shè)計(jì)要求,選用器件,繪制原理圖,完成輸入過(guò)程。這種方法的優(yōu)點(diǎn)是直觀、便于理解、元件庫(kù)資料豐富。但是在大型設(shè)計(jì)中,這種方法的可維護(hù)性較差,不利于模塊建設(shè)與重用。</p><p> ISE提供的設(shè)計(jì)輸入工具包括用于HDL代碼輸入和查看報(bào)告的文本
42、編譯器(ISE Text Editor)、用于原理圖編輯的工具ECS(Enginerring Capture System)、用于生成IP Core的Core Generator、用于狀態(tài)機(jī)設(shè)計(jì)的StateCAD以及用于約束文件編輯的Constraint Editor等。</p><p> 綜合優(yōu)化(Synthesizer)是指將HDL語(yǔ)言、原理圖等設(shè)計(jì)輸入翻譯成由與門、或門、非門、RAM、寄存器等基本邏輯單元
43、組成的邏輯連接(網(wǎng)表),并根據(jù)目標(biāo)與要求(約束條件)優(yōu)化成所生成的邏輯連接,輸出edf和edn等文件,供FPGA廠家的布局線器進(jìn)行實(shí)現(xiàn)。綜合工具有Xilinx ISE集成的XST(Xilinx Synthesis Technology),還有比較流行且高效的Mentor Graphics公司的Synplify。Synplify綜合工具綜合出的結(jié)果占用面積小,工作頻率高,綜合速度快。</p><p> ISE的綜
44、合工具不但包括了Xilinx自身提供的綜合工具XST,同時(shí)還可以內(nèi)嵌Mentor Graphics公司的Leonardospectrum和Synplify公司的Synplify,實(shí)現(xiàn)無(wú)縫連接。</p><p> 1.4.2 設(shè)計(jì)仿真</p><p> 設(shè)計(jì)仿真主要有功能仿真和時(shí)序仿真兩種。</p><p> 功能仿真是驗(yàn)證電路功能是否符合設(shè)計(jì)要求,也叫做前仿
45、真,此時(shí)的仿真沒(méi)有延時(shí)消息,對(duì)于初步的功能檢測(cè)非常的方便。仿真前,要先利用波形編輯器和硬件描述語(yǔ)言等建立波形文件和測(cè)試向量(即將所關(guān)心的輸入信號(hào)組合成序列),仿真結(jié)果將會(huì)生成報(bào)告文件和輸出信號(hào)波形,從中便可觀察到各個(gè)節(jié)點(diǎn)的信號(hào)變化。如果發(fā)現(xiàn)錯(cuò)誤,則返回設(shè)計(jì)中修改邏輯設(shè)計(jì)。</p><p> 時(shí)序仿真在布局布線之后,又稱做后仿真后延時(shí)仿真。由于不同器件的內(nèi)部延時(shí)是不一樣的,不同的布局布線方案也給延時(shí)造成不同的影響
46、,因此在處理設(shè)計(jì)后,對(duì)于系統(tǒng)各模塊進(jìn)行時(shí)序仿真,分析其時(shí)序關(guān)系,估計(jì)設(shè)計(jì)的性能,以及檢查和消除競(jìng)爭(zhēng)冒險(xiǎn)等是非常必要的。在時(shí)序仿真中,應(yīng)該將布局布線的延時(shí)文件反標(biāo)到設(shè)計(jì)中,使仿真既包含延時(shí)消息,又包含延時(shí)消息。與功能仿真相比,這種后仿真包含的延時(shí)信息最為全面、準(zhǔn)確,能較好地反映芯片的實(shí)際工作情況。</p><p><b> 1.4.3 實(shí)現(xiàn)</b></p><p>
47、 綜合結(jié)果的本質(zhì)是一些有與門、或門、非門觸發(fā)器,RAM等基本邏輯單元組成的邏輯網(wǎng)表,它與芯片實(shí)際的配置情況還有較大的差距。此時(shí)應(yīng)該使用FPGA廠商提供的工具軟件,根據(jù)所選芯片的型號(hào),將綜合輸出的邏輯網(wǎng)表適配到具體的FPGA器件上,這個(gè)過(guò)程就叫做實(shí)現(xiàn)過(guò)程。Xilinx的實(shí)現(xiàn)過(guò)程分為:翻譯(Translate)、映射(Map)和布局布線(Place&Route)等三個(gè)步驟。因?yàn)橹挥衅骷_(kāi)發(fā)商最了解器件的內(nèi)部結(jié)構(gòu),所以實(shí)現(xiàn)步驟必須選
48、用器件開(kāi)發(fā)商提供的工具軟件[3]。</p><p> 數(shù)字時(shí)鐘及MAXP+LUSEII的簡(jiǎn)介</p><p> 2.1 數(shù)字時(shí)鐘的原理</p><p> 數(shù)字時(shí)鐘是使用4個(gè)兩位的計(jì)數(shù)器來(lái)實(shí)現(xiàn)的,即百分秒計(jì)數(shù)器、秒計(jì)數(shù)器、分計(jì)數(shù)器和小時(shí)計(jì)數(shù)器。每個(gè)計(jì)數(shù)器又分別使用高地位2個(gè)計(jì)數(shù)器來(lái)實(shí)現(xiàn)。其中百分秒數(shù)器是100進(jìn)制計(jì)數(shù)器(高位10進(jìn)制計(jì)數(shù)器,地位10進(jìn)制計(jì)數(shù)器)
49、,秒計(jì)數(shù)器和分計(jì)數(shù)器是60進(jìn)制計(jì)數(shù)器(高位6進(jìn)制計(jì)數(shù)器,地位10進(jìn)制計(jì)數(shù)器),小時(shí)計(jì)數(shù)器是24進(jìn)制計(jì)數(shù)器(高位2進(jìn)制計(jì)數(shù)器,地位10進(jìn)制計(jì)數(shù)器)。</p><p> 數(shù)字時(shí)鐘首先是百分秒計(jì)數(shù)器按照系統(tǒng)時(shí)鐘CLK__50進(jìn)行計(jì)數(shù),計(jì)數(shù)滿100后向秒計(jì)數(shù)器進(jìn)位。秒計(jì)數(shù)器以百分秒計(jì)數(shù)器的進(jìn)位位cnl為時(shí)鐘進(jìn)行計(jì)數(shù),計(jì)數(shù)滿60后向分計(jì)數(shù)器進(jìn)位。分計(jì)數(shù)器以秒計(jì)數(shù)器的進(jìn)位位cn2為時(shí)鐘進(jìn)行計(jì)數(shù),計(jì)數(shù)滿60后向小時(shí)計(jì)數(shù)器進(jìn)位
50、。小時(shí)計(jì)數(shù)器以分計(jì)數(shù)器的進(jìn)位位cn3為時(shí)鐘進(jìn)行計(jì)數(shù),計(jì)數(shù)滿24后整個(gè)系統(tǒng)從0開(kāi)始重新進(jìn)行計(jì)數(shù)。</p><p> 圖2.1 數(shù)字時(shí)鐘的原理圖</p><p> 2.2 數(shù)字時(shí)鐘的構(gòu)成</p><p> 數(shù)字鐘實(shí)際上是一個(gè)對(duì)標(biāo)準(zhǔn)頻率(1HZ)進(jìn)行計(jì)數(shù)的計(jì)數(shù)電路。由于計(jì)數(shù)的起始時(shí)間不可能與標(biāo)準(zhǔn)時(shí)間一致,故需在電路上加一個(gè)校時(shí)電路,同時(shí)標(biāo)準(zhǔn)的1HZ時(shí)間信號(hào)必須做
51、到準(zhǔn)確穩(wěn)定。通常使用石英晶體振蕩電路構(gòu)成數(shù)字鐘。圖2-1所示為數(shù)字鐘的一般構(gòu)成框圖。它主要包括時(shí)間基準(zhǔn)電路、計(jì)數(shù)器電路、控制電路、譯碼和顯示電路。其中的控制邏輯電路比較靈活多樣,不斷完善它可以增強(qiáng)數(shù)字鐘的功能。</p><p> 圖2.2 數(shù)字鐘的一般構(gòu)成框圖</p><p> 2.3 數(shù)字鐘的功能要求</p><p> 時(shí)鐘功能:完成分/時(shí)的正確計(jì)數(shù)并顯
52、示,秒由于數(shù)碼管數(shù)目的限制,采取發(fā)光二極管做提示;</p><p> 鬧鐘定時(shí):實(shí)現(xiàn)定時(shí)提醒及定時(shí)報(bào)時(shí),利用蜂鳴器發(fā)出報(bào)時(shí)聲音;</p><p> 鐘校時(shí):當(dāng)人為時(shí)鐘不準(zhǔn)確時(shí),可以分別對(duì)分/時(shí)鐘進(jìn)行調(diào)整;</p><p> 秒表功能:利用4個(gè)數(shù)碼管完成秒表顯示:其精確度達(dá)100ms,可以暫停,并可隨時(shí)記時(shí)、暫停后記錄數(shù)據(jù),最大計(jì)時(shí)為999.9s。</p&
53、gt;<p> 數(shù)字時(shí)鐘是可植入自動(dòng)控制、測(cè)試等系統(tǒng)內(nèi)部的,作為系統(tǒng)的時(shí)鐘源,可以為系統(tǒng)提供時(shí)信號(hào)或中斷控制的時(shí)間基準(zhǔn),具有廣泛的用途,基于PFGA的數(shù)字時(shí)鐘的設(shè)計(jì),體現(xiàn)了現(xiàn)代數(shù)字電路設(shè)計(jì)芯片的思想,而且這種設(shè)計(jì)方法縮短了產(chǎn)品的設(shè)計(jì)周期和調(diào)試周期,提高了設(shè)計(jì)的可靠性和成功性,充分體現(xiàn)了可編程邏輯器件在數(shù)字電路設(shè)計(jì)中的優(yōu)越性[4]。</p><p> 2.4 MAX+PLUSⅡ開(kāi)發(fā)平臺(tái)簡(jiǎn)介<
54、;/p><p> 軟件介紹:MAX+PLUSⅡ是美國(guó)Altera公司開(kāi)發(fā)的一種全集成化的可編程邏輯設(shè)計(jì)軟件平臺(tái)。具有豐富的圖形界面和完整、可即時(shí)訪問(wèn)的在線文檔。提供一個(gè)真正與結(jié)構(gòu)無(wú)關(guān)的可編程邏輯設(shè)計(jì)環(huán)境; 全集成化的一套可編程邏輯開(kāi)發(fā)工具; 提供多種輸入方式;可方便與其它工業(yè)標(biāo)準(zhǔn)設(shè)計(jì)輸入、綜合與校驗(yàn)工具鏈接。在進(jìn)行原理圖輸入時(shí),可以直接放置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è)計(jì)輸入、處理與校驗(yàn)功能一起提供了全集成化的一套可編程邏輯開(kāi)發(fā)工具,可加快動(dòng)態(tài)調(diào)試,縮短開(kāi)發(fā)周期。<
56、;/p><p> MAX+PLUS II 支持各種HDL 設(shè)計(jì)輸入,包括VHDL、Verilog 和Altera 的AHDL。</p><p> MAX+PLUS II 可與其他工業(yè)標(biāo)準(zhǔn)設(shè)計(jì)輸入、綜合與校驗(yàn)工具鏈接。與CAE 工具的接口符合EDIF200 和209、參數(shù)化模塊庫(kù)(LPM)、Verilog、VHDL 及其它標(biāo)準(zhǔn)。設(shè)計(jì)者可使用Altera 或標(biāo)準(zhǔn)CAE 設(shè)計(jì)輸入工具去建立邏輯設(shè)
57、計(jì),使用MAX+PLUS II 編譯器對(duì)Altera器件設(shè)計(jì)進(jìn)行編譯,并使用Altera 或其它CAE 校驗(yàn)工具進(jìn)行器件或板級(jí)仿真。</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è)計(jì)包括四個(gè)階段:設(shè)計(jì)輸入、設(shè)計(jì)處理、設(shè)計(jì)驗(yàn)證和器件編程。</p><p> 2.6 MAX+PLUSⅡ設(shè)計(jì)向?qū)?lt;/p><p> 安裝授權(quán)MAX+PLUSⅡ軟件后,就可以使用它進(jìn)行電子系統(tǒng)設(shè)計(jì),不論設(shè)計(jì)是使用圖形輸入方式還是文本輸入方式,設(shè)計(jì)流程是通用的,如圖2.3所示[5]。</p><p> 圖2.3 設(shè)計(jì)流程圖<
59、;/p><p> 第三章 程序設(shè)計(jì)與實(shí)驗(yàn)仿真</p><p> 3.1 主程序代碼設(shè)計(jì)與仿真結(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時(shí)鐘輸入</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)時(shí)和計(jì)時(shí)狀態(tài)切換按鍵</p><p> -- key1為調(diào)時(shí)按鍵</p><p> -- key0為清零按鍵</p><p> end newclock;</p><p> architecture a of newclock is</p><p> co
63、mponent counter60 --六十進(jìn)制計(jì)數(shù)器原件例化說(shuō)明</p><p> end component;</p><p> component counter24 --二十四進(jìn)制計(jì)數(shù)器原件例化說(shuō)明</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)時(shí)</b></p><p><b> --01調(diào)時(shí)</b></p><p><b> --10調(diào)秒</b></p><p><b> --11計(jì)時(shí)</b></p><p>
67、 signal match : std_logic; --用于指示時(shí)、分、秒中哪一個(gè)是當(dāng)前調(diào)整對(duì)象</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); --秒計(jì)數(shù)器元件例化</p><p> u2: counter60 por
69、t map(clk,dbm,enb(1),clr,ecm,cym);--分計(jì)數(shù)器元件例化</p><p> u3: counter24 port map(clk,dbh,enb(2),clr,ech,cyh);--小時(shí)計(jì)數(shù)器元件例化</p><p> gen:for i in 0 to 6 generate --七段LED的段碼輸出生成語(yǔ)句</p><p>
70、 為節(jié)省6個(gè)七段顯示器顯示所需的電流消耗,可利用視覺(jué)暫留原理來(lái)讓七段顯示器輪流顯示。將分與秒4個(gè)數(shù)字共享一組七段顯示器組,其中必須使用同步掃描電路,將各個(gè)數(shù)字的7個(gè)信號(hào)分別接至a,b,c,d,e,f,g端口,同時(shí)觸發(fā)該數(shù)字所對(duì)應(yīng)的七段顯示器的電源引腳。視覺(jué)暫留原理要求每一數(shù)字在1秒內(nèi)必須亮32次。即在(1/32)s內(nèi),4個(gè)數(shù)字要輪流亮一次,故每個(gè)數(shù)字最多可連續(xù)亮(1/128)s,然后等待(3/128)s后再亮一次,因此省了3/4的電能消
71、耗。視覺(jué)暫留效應(yīng)讓我們感覺(jué)到,相隔(1/32)s亮一次的燈似乎一直都亮著。同理,顯示小時(shí)的2個(gè)數(shù)字,仍然使用四合一七段顯示器組。只是放棄其中的2個(gè)七段顯示器不用即可。</p><p> fdiv:block --分頻塊語(yǔ)句</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è)計(jì)是一個(gè)顯時(shí)(2位)、分(2位)、秒(2位)供6位數(shù)字的多功能電子鐘。不但可以作為鬧鐘,也可以作為計(jì)時(shí)器。為化簡(jiǎn)設(shè)計(jì)與驗(yàn)證,用信號(hào)發(fā)生器輸出的1024Hz作為系統(tǒng)頻率(時(shí)鐘)。因此將其除以1024,即得1Hz的秒鐘信號(hào),秒計(jì)滿60即得1分鐘,分計(jì)滿60即得1小時(shí)的信號(hào),小時(shí)計(jì)滿24即
73、得一天。</p><p> 輸出顯示采用四合一七段顯示器來(lái)顯示分與秒共四個(gè)數(shù)字,另外2個(gè)數(shù)字的小時(shí)顯示也采用四合一七段顯示器來(lái)顯示,只是讓其中2個(gè)數(shù)字不用即可。利用視覺(jué)暫留效應(yīng),讓4個(gè)七段顯示器輪流供電顯示,即進(jìn)行輸出顯示掃描。由于需要1024Hz的時(shí)鐘掃描信號(hào),本系統(tǒng)輸入時(shí)鐘的信號(hào)直接采用信號(hào)發(fā)生器的1024Hz信號(hào)。另外,還需加一個(gè)除以1024的分頻器,用來(lái)實(shí)現(xiàn)系統(tǒng)輸入信號(hào)產(chǎn)生的一個(gè)1Hz的時(shí)鐘信號(hào)[6]。
74、</p><p> 譯碼器的電路圖入圖3.1所示</p><p> 圖3.1 譯碼器的電路圖</p><p> 在一般電路中,數(shù)值均以二進(jìn)制的形式存儲(chǔ)于計(jì)算,但是要將其輸出至七段顯示器顯示時(shí),則必須提供一個(gè)電路模塊專門將二進(jìn)制轉(zhuǎn)換成十進(jìn)制供輸出使用。此處以查表方式來(lái)設(shè)計(jì)轉(zhuǎn)換電路,使用并行語(yǔ)句with_select列出0~9等十種對(duì)照數(shù)值狀況。</p&g
75、t;<p> 此處,定義一些功能模塊間整體共享的傳遞信號(hào),以整體和所有塊的功能。這些信號(hào)將成為各個(gè)模塊的外部輸入或輸出信號(hào),如:</p><p> hzl: 表示1s的時(shí)鐘;</p><p> n_sec.n_min:表示正常持續(xù)不斷的計(jì)數(shù)時(shí)間—分與秒,整數(shù)形式;</p><p> o_hour: 表示正常持續(xù)不斷的計(jì)數(shù)時(shí)
76、間—小時(shí),整數(shù)形式;</p><p> a_sec.a_min:表示鬧鐘的計(jì)數(shù)時(shí)間--分與秒,整數(shù)形式;</p><p> a_hour: 表示鬧鐘的計(jì)數(shù)時(shí)間--時(shí),整數(shù)形式;</p><p> s_sec.s_min: 表示定時(shí)器的計(jì)數(shù)時(shí)間--分與秒,整數(shù)形式;</p><p> s_hour: 表示定時(shí)器的計(jì)
77、數(shù)時(shí)間--小時(shí),整數(shù)形式;</p><p> second,minute:表示被選擇輸出的計(jì)數(shù)器時(shí)間--分與秒,整數(shù)形式;</p><p> hour: 表示被選擇輸出的計(jì)數(shù)器時(shí)間--時(shí),整數(shù)形式;</p><p> sec_one,sec_ten,min_one,min_ten:表示被選擇輸出的計(jì)數(shù)器時(shí)--分與秒的個(gè)位數(shù)與十位數(shù),BCD形式;
78、</p><p> hour_one,hour_ten:表示被選擇輸出的計(jì)數(shù)器時(shí)間--小時(shí)個(gè)位數(shù)與十位數(shù),BCD形式;</p><p> sec7_one,sec7_ten,min7_one,min7_ten:表示被選擇輸出的計(jì)數(shù)器時(shí)--分與秒的個(gè)位數(shù)與十位數(shù),七段顯示器形式;</p><p> houe7_one,hour7_ten:表示被選擇輸出的計(jì)數(shù)器時(shí)
79、--分與秒的個(gè)位數(shù)與十位數(shù),七段顯示器形式;</p><p> stop_index: 表示定時(shí)器時(shí)鐘的指針;</p><p> alarm_index: 表示鬧鐘的設(shè)定時(shí)間結(jié)束的指針。</p><p> QuartusII編譯器是由一系列處理模塊構(gòu)成的,這些模塊負(fù)責(zé)對(duì)設(shè)計(jì)項(xiàng)目的檢錯(cuò),邏輯綜合和結(jié)構(gòu)綜合。即將設(shè)計(jì)項(xiàng)目適配進(jìn)FPGA/CPLD目標(biāo)器中,
80、同時(shí)產(chǎn)生多種用途的輸出文件,如功能和時(shí)序仿真文件,器件編程的目標(biāo)文件等。編譯器首先從工程設(shè)計(jì)文件間的層次結(jié)構(gòu)描述中提取信息,包括每個(gè)低層次文件中的錯(cuò)誤信息,供設(shè)計(jì)者排除,然后將這些層次構(gòu)建產(chǎn)生一個(gè)結(jié)構(gòu)化的以網(wǎng)表文件表達(dá)的電路原理圖文件,并把各層次中所有的文件結(jié)合成一個(gè)數(shù)據(jù)包,以便更有效地處理。下面首先選擇Processing菜單的“Start Compilation”項(xiàng),啟動(dòng)全程編譯。注意這里所謂的編譯(Compilation)包括Qu
81、artusII對(duì)設(shè)計(jì)輸入的多項(xiàng)處理操作,其中包括排錯(cuò)、數(shù)據(jù)網(wǎng)表文件提取、邏輯綜合、適配、裝配文件(仿真文件與編程配置文件)生成,以及基于目標(biāo)器件的工程時(shí)序分析等。如果工程中的文件有錯(cuò)誤,在下方的Processing處理欄中會(huì)顯示出來(lái)。對(duì)于Processing欄顯示出的語(yǔ)句格式錯(cuò)誤,可雙擊此條文,即彈出vhdl文件,在閃動(dòng)的光標(biāo)處(或附近)可發(fā)現(xiàn)文件中的錯(cuò)誤。再次進(jìn)行編譯直至排除所有錯(cuò)誤。會(huì)發(fā)現(xiàn)在Processi</p>&
82、lt;p> 3.1.2 實(shí)驗(yàn)仿真結(jié)果</p><p> 模塊實(shí)驗(yàn)波形仿真如圖3.2所示</p><p> 圖3.2 主程序波形仿真</p><p> 在1Hz的觸發(fā)信號(hào)下,若撥動(dòng)開(kāi)關(guān)stop=1,且按住調(diào)秒鍵不放,則計(jì)數(shù)器定時(shí)一直切換撥動(dòng)開(kāi)關(guān)ok=1時(shí),定時(shí)10秒,接著自動(dòng)計(jì)時(shí)到0,在送出index=1的指針信號(hào)。</p><p
83、> 調(diào)整輸出級(jí)采用運(yùn)放作射極跟隨器,使調(diào)整管的輸出電壓精確地與D/A 轉(zhuǎn)換器輸出電壓保持一致。調(diào)整管采用大功率達(dá)林頓管,確保電路的輸出電流值達(dá)到設(shè)計(jì)要求。數(shù)控電源各部分工作所需的±12V 和+5V 電源由固定集成穩(wěn)壓器7812、7912、和7805 提供,調(diào)整管所需輸入電壓,經(jīng)簡(jiǎn)單整流,濾波即可得到,但要求能提供2A 的電流。</p><p> 輸出電壓的調(diào)整,主要是運(yùn)用輸出跟隨器來(lái)完成的,此
84、反饋電路的主要作用是,把輸出電壓反饋到NE5534 的輸入級(jí)的反向輸入端,當(dāng)同相輸入IN+和反向輸入端IN-有差別時(shí),調(diào)整輸出電壓使之趨于穩(wěn)定,從而達(dá)到調(diào)整輸出電壓的目的。</p><p> 3.2 60進(jìn)制代碼設(shè)計(jì)與仿真結(jié)果</p><p> 3.2.1 60進(jìn)制計(jì)數(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> 個(gè)位數(shù)信號(hào)one(0~9)ten(0~5)先以整數(shù)形式出現(xiàn),計(jì)算完成后再轉(zhuǎn)換成矢量形式(oens與tens),便于以后轉(zhuǎn)成七段LED顯示碼。十進(jìn)制需2位的位矢量,為統(tǒng)一以后的七段顯示器輸出需要,此處是以4為的位矢量表述。If_then語(yǔ)句與適當(dāng)?shù)臈l件進(jìn)位適合時(shí)
93、鐘計(jì)時(shí),十進(jìn)制的進(jìn)位的進(jìn)位歸零必須配合個(gè)位數(shù)的進(jìn)位歸零,而個(gè)位數(shù)的進(jìn)位歸零則不必配合十進(jìn)制的進(jìn)位歸零,所以在if_then語(yǔ)句中,分?jǐn)?shù)的計(jì)數(shù)以秒數(shù)的進(jìn)位輸出full_sec作為觸發(fā)[8]。</p><p> 3.2.2 仿真結(jié)果</p><p> 模塊實(shí)驗(yàn)波形仿真如圖3.3所示</p><p> 圖3.3 60進(jìn)制波形仿真</p><p
94、> 設(shè)定兩個(gè)系統(tǒng)輸入信號(hào)后,可觀察到系統(tǒng)輸出信號(hào)與波形,在計(jì)數(shù)達(dá)到59以后,即進(jìn)位到00(60)。</p><p> 電路符號(hào)如圖3.4所示</p><p> 圖3.4 數(shù)字鐘圖元符號(hào)</p><p> 60進(jìn)制仿真芯片如圖3.5所示</p><p> 圖3.5 60進(jìn)制芯片圖</p><p>
95、3.3 24進(jìn)制代碼設(shè)計(jì)與仿真結(jié)果</p><p> 3.3.1 24進(jìn)制計(jì)數(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時(shí),檢查是否同時(shí)為23小時(shí),再?zèng)Q定進(jìn)位與否。因此個(gè)位數(shù)字信號(hào)與十位信號(hào)先以整數(shù)形式出現(xiàn),計(jì)算完成后再轉(zhuǎn)換成位矢量形式,便于以后轉(zhuǎn)成LED顯示碼。為統(tǒng)一以后的七段顯示器輸出顯示的需要,此處已4為的位矢量表示。個(gè)位數(shù)的進(jìn)位歸零在十位進(jìn)制位2時(shí),必須在個(gè)位等于3是進(jìn)位,同時(shí)送出進(jìn)位指針full=1,1小時(shí)后將指針歸零[9]。</p><
104、;p> 3.3.2 仿真結(jié)果</p><p> 模塊實(shí)驗(yàn)波形仿真如圖3.6所示</p><p> 圖3.6 24進(jìn)制波形仿真</p><p> 設(shè)定兩個(gè)系統(tǒng)輸入信號(hào)后,可觀察到系統(tǒng)輸出信號(hào)與波形,在計(jì)數(shù)達(dá)到23以后,即進(jìn)位到00(24)。</p><p> 電路符號(hào)如圖3.7所示</p><p>
105、 圖3.7 數(shù)字鐘圖元符號(hào)</p><p> 24進(jìn)制仿真芯片如圖3.8所示</p><p> 圖3.8 24進(jìn)制芯片圖</p><p> 3.4 去抖代碼設(shè)計(jì)與仿真結(jié)果</p><p> 按鍵開(kāi)關(guān)是電子設(shè)備實(shí)現(xiàn)人機(jī)對(duì)話的重要器件之一。由于大部分按鍵是機(jī)械觸點(diǎn),在觸點(diǎn)閉合和斷開(kāi)時(shí)都會(huì)產(chǎn)生抖動(dòng)。為避免抖動(dòng)引起誤動(dòng)作造成系統(tǒng)的不穩(wěn)定
106、,就要求消除按鍵的抖動(dòng),確保按鍵每按一次只做一次響應(yīng)。隨著可編程邏輯器件的綜合性能的不斷提高,它已經(jīng)象單片機(jī)一樣。廣泛應(yīng)用在各種數(shù)字邏輯領(lǐng)域。用可編程邏輯器件直接獲取鍵盤信息也得到廣泛的應(yīng)用。這里提出用VHDL語(yǔ)言編程的有限狀態(tài)機(jī)的設(shè)計(jì)方法來(lái)實(shí)現(xiàn)按鍵的消抖,經(jīng)仿真分析和下載實(shí)現(xiàn),這種方法設(shè)計(jì)的消抖電路能夠很好地實(shí)現(xiàn)電路功能,進(jìn)行快速按鍵時(shí)都能保證每按一次做一次的響應(yīng),且性能穩(wěn)定。</p><p> 3.4.1
107、 按鍵抖動(dòng)產(chǎn)生原因分析</p><p> 絕大多數(shù)按鍵都是機(jī)械式開(kāi)關(guān)結(jié)構(gòu),由于機(jī)械式開(kāi)關(guān)的核心部件為彈性金屬簧片,因而在開(kāi)關(guān)切換的瞬間會(huì)在接觸點(diǎn)出現(xiàn)來(lái)回彈跳的現(xiàn)象。雖然只是進(jìn)行了一次按鍵,結(jié)果在按鍵信號(hào)穩(wěn)定的前后出現(xiàn)了多個(gè)脈沖,如圖1所示。如果將這樣的信號(hào)直接送給微處理器掃描采集的話,將可能把按鍵穩(wěn)定前后出現(xiàn)的脈沖信號(hào)當(dāng)作按鍵信號(hào),這就出現(xiàn)人為的一次按鍵但微處理器以為多次按鍵現(xiàn)象。為了確保按鍵識(shí)別的準(zhǔn)確性,在按
108、鍵信號(hào)抖動(dòng)的情況下不能進(jìn)入狀態(tài)輸入,為此就必須對(duì)按鍵進(jìn)行消抖處理,消除抖動(dòng)時(shí)不穩(wěn)定、隨機(jī)的電壓信號(hào)。機(jī)械式按鍵的抖動(dòng)次數(shù)、抖動(dòng)時(shí)間、抖動(dòng)波形都是隨機(jī)的。不同類型的按鍵其最長(zhǎng)抖動(dòng)時(shí)間也有差別,抖動(dòng)時(shí)間的長(zhǎng)短和按鍵的機(jī)械特性有關(guān),一般為5~10 ms,但是,有些按鍵的抖動(dòng)時(shí)間可達(dá)到20 ms,甚至更長(zhǎng)。所以,在具體設(shè)計(jì)中要具體分析,根據(jù)實(shí)際情況來(lái)調(diào)整設(shè)計(jì)</p><p> 3.4.2 按鍵消抖電路設(shè)計(jì)原理<
109、/p><p> 按鍵消抖的關(guān)鍵是提取穩(wěn)定的低電平(或高電平)狀態(tài),濾除按鍵穩(wěn)定前后的抖動(dòng)脈沖。在用基于VHDL語(yǔ)言的時(shí)序邏輯電路設(shè)計(jì)按鍵消抖電路時(shí),可以用一個(gè)時(shí)鐘脈沖信號(hào)對(duì)按鍵狀態(tài)進(jìn)行取樣,當(dāng)?shù)谝淮尾蓸拥降碗娖綍r(shí),啟動(dòng)延時(shí)電路,延時(shí)結(jié)束后,再對(duì)按鍵信號(hào)進(jìn)行連續(xù)三次取樣,如果三次取樣都為低電平,則可以認(rèn)為按鍵已經(jīng)處在穩(wěn)定狀態(tài),這時(shí)輸出一個(gè)低電平的按鍵確認(rèn)信號(hào),如果連續(xù)三次的取樣中,至少有一次是高電平,則認(rèn)為按鍵仍處在
110、抖動(dòng)狀態(tài),此時(shí)不進(jìn)行按鍵確認(rèn),按鍵輸出信號(hào)為高電平。</p><p> 3.4.3 按鍵消抖電路設(shè)計(jì)</p><p> 該控制電路采用VHDL語(yǔ)言的有限狀態(tài)機(jī)的設(shè)計(jì)方法來(lái)描述和實(shí)現(xiàn),其狀態(tài)轉(zhuǎn)換圖如圖3.9所示。</p><p> 圖3.9 按鍵消抖電路狀態(tài)轉(zhuǎn)換圖</p><p> 電路的復(fù)位信號(hào)Reset有效時(shí),電路進(jìn)入復(fù)位狀態(tài)S
111、0,在S0狀態(tài)下時(shí)鐘信號(hào)CLK以一定的頻率采樣按鍵輸入信號(hào)Key_in,如果采樣到Key_in=‘1’則停留在S0狀態(tài),并繼續(xù)采樣按鍵輸入信號(hào)的狀態(tài),一旦采樣到輸入信號(hào)是低電平,即Key_in=‘0’,則轉(zhuǎn)入S1延時(shí)狀態(tài),進(jìn)行消抖延時(shí),當(dāng)延時(shí)結(jié)束時(shí)Delay_end=‘1’,則轉(zhuǎn)入在S2狀態(tài),在此狀態(tài)下時(shí)鐘信號(hào)CLK以一定頻率采樣按鍵輸入Key_in的狀態(tài),如果采樣到Key_in為高電平即Key_in=‘1’則轉(zhuǎn)回狀態(tài)S0,表示按鍵仍處
112、在抖動(dòng)狀態(tài),如果采樣到Key_in=‘O’,則轉(zhuǎn)入狀態(tài)S3;狀態(tài)S3,S4的轉(zhuǎn)換過(guò)程和條件跟S2相同,在S4狀態(tài)下,如果Key_in=‘0’則轉(zhuǎn)入S5狀態(tài),當(dāng)?shù)竭_(dá)狀態(tài)S5時(shí).表示經(jīng)過(guò)S2,S3,S4三個(gè)連續(xù)狀態(tài)檢測(cè)按鍵輸入Key_in的狀態(tài)都為‘0’,則認(rèn)為按鍵處在穩(wěn)定狀態(tài),并在S5輸出按鍵確認(rèn)信號(hào)Key_confirm=‘1’。同時(shí)在狀態(tài)S5下時(shí)鐘信號(hào)CLK檢測(cè)按鍵輸入狀態(tài),當(dāng)檢測(cè)到按鍵輸入Key_in=‘0’,表示按鍵仍未釋放,則停
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-基于fpga數(shù)字秒表電路的設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga數(shù)字基帶信號(hào)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga的des算法【精校排版】
- 基于fpga數(shù)字時(shí)鐘設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文-基于fpga的uart控制器設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga的lcd12864的驅(qū)動(dòng)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-數(shù)字溫度計(jì)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字秒表設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于veriloghdl的數(shù)字鐘系統(tǒng)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-數(shù)字電容測(cè)量?jī)x設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字鐘設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga六層電梯控制系統(tǒng)【精校排版】
- 畢業(yè)論文-基于fpga偽隨機(jī)序列與誤碼檢測(cè)【精校排版】
- 畢業(yè)論文-單片機(jī)日歷時(shí)鐘開(kāi)發(fā)【精校排版】
- 畢業(yè)論文-數(shù)字頻率計(jì)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于labview的數(shù)字濾波器設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于proteus的數(shù)字溫度計(jì)設(shè)計(jì)與仿真【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字電子鐘【精校排版】
評(píng)論
0/150
提交評(píng)論