版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> FPGA課程設計 </b></p><p><b> 報</b></p><p><b> 告</b></p><p><b> 書</b></p><p> 題 目:基于FPGA多功能電子鐘設計
2、 </p><p> 學 院: 電氣工程與自動化 </p><p> 專業(yè)班級: 電信12-3班 </p><p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p> 第一章
3、 FPGA簡介2</p><p> 1.2 FPGA基本結構2</p><p> 1.3 FPGA系統(tǒng)設計流程3</p><p> 第二章 系統(tǒng)電路設計4</p><p> 2.1電子鐘的設計方案選擇4</p><p> 2.2總體設計方案4</p><p> 2.3
4、顯示電路設計5</p><p> 2.3.1分頻器電路7</p><p> 2.3.2掃描電路電路7</p><p> 2.3.3 BCD碼多路選擇器7</p><p> 2.3.4 BCD譯碼器7</p><p> 2.3.5位選碼電路8</p><p> 2.4電子時
5、鐘計數器電路設計8</p><p> 2.4.1秒和分計數器設計8</p><p> 2.4.2小時計數器設計10</p><p><b> 總 結12</b></p><p><b> 參考文獻13</b></p><p><b> 附錄14
6、</b></p><p><b> 摘 要</b></p><p> 本文介紹了多功能電子鐘的現狀及發(fā)展動態(tài),多功能電子鐘的應用,多功能電子鐘的基本原理和實現方法以及系統(tǒng)構建理論。針對現行電子鐘設計方案實現起來相對復雜、誤差偏大等弊端,對以FPGA為核心器件的電子鐘方案進行了實驗研究,利用EDA技術自頂向下的設計方法,設計電子鐘各模塊及相應具體電路,
7、通過編譯、仿真并下載到FPGA實驗平臺進行測試,運行結果表明:系統(tǒng)能以較小的誤差顯示時、分、秒,并且當走時不準時,可以通過相應設置鍵實現校時。 </p><p> 關鍵詞:多功能電子鐘;EDA;FPGA</p><p> 第一章 FPGA簡介</p><p> 1.1 FPGA概述</p><p> FPGA是現場可編程門陣列(F
8、ield Programmable Gate Array)的簡稱,與之相應的CPLD是復雜可編程邏輯器件(Complex Programmable Logic Device)的簡稱,兩者的功能基本相同,只是實現原理略有不同,有時可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件或CPLD/PGFA。CPLD/PGFA幾乎能完成任何數字器件的功能,上至高性能CPU,下至簡單的74電路。它如同一張白紙或是一堆積木,工程師可以通過傳統(tǒng)的原理圖輸入或硬
9、件描述語言自由的設計一個數字系統(tǒng)。通過軟件仿真可以事先驗證設計的正確性,在PCB完成以后,利用CPLD/FPGA的在線修改功能,隨時修改設計而不必改動硬件電路。使用CPLD/FPGA開發(fā)數字電路,可以大大縮短設計時間,減少PCB面積,提高系統(tǒng)的可靠性。這些優(yōu)點使得CPLD/FPGA技術在20世紀90年代以后得到飛速的發(fā)展,同時也大大推動了EDA軟件和硬件描述語言HDL的進步。</p><p> 1.2 FPG
10、A基本結構</p><p> FPGA具有掩膜可編程門陣列的通用結構,它由邏輯功能塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來實現不同的設計。</p><p> FPGA一般由3種可編程電路和一個用于存放編程數據的靜態(tài)存儲器SRAM組成。這3種可編程電路是:可編程邏輯模塊(CLB—Configurable Logic Block)、輸入/輸出模塊(IOB—I/O Block)和
11、互連資源(IR—Interconnect Resource)??删幊踢壿嬆KCLB是實現邏輯功能的基本單元,它們通常規(guī)則的排列成一個陣列,散布于整個芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長度的連接線段和一些可編程連接開關,它們將各個CLB之間或CLB、IOB之間以及IOB之間連接起來,構成特定功能的電路。</p><p> (1
12、)CLB是FPGA的主要組成部分。它主要由邏輯函數發(fā)生器、觸發(fā)器、數據選擇器等電路組成。CLB中3個邏輯函數發(fā)生器分別是G、F和H,相應的輸出是G’、F’和H’。G有4個輸入變量G1、G2、G3和G4;F也有4個輸入變量F1、F2、F3和F4。這兩個函數發(fā)生器是完全獨立的,均可以實現4輸入變量的任意組合邏輯函數。邏輯函數發(fā)生器H有3個輸入信號;前兩個是函數發(fā)生器的輸出G’和F’,而另一個輸入信號是來自信號變換電路的輸出H1。這個函數發(fā)生
13、器能實現3輸入變量的各種組合函數。這3個函數發(fā)生器結合起來,可實現多達9變量的邏輯函數。</p><p> CLB中有許多不同規(guī)格的數據選擇器(四選一、二選一等),通過對CLB內部數據選擇器的編程,邏輯函數發(fā)生器G、F和H的輸出可以連接到CLB輸出端X或Y,并用來選擇觸發(fā)器的激勵輸入信號、時鐘有效邊沿、時鐘使能信號以及輸出信號。這些數據選擇器的地址控制信號均由編程信息提供,從而實現所需的電路結構。</p&
14、gt;<p> CLB中的邏輯函數發(fā)生器F和G均為查找表結構,其工作原理類似于ROM。F和G的輸入等效于ROM的地址碼,通過查找ROM中的地址表可以得到相應的組合邏輯函數輸出。另外,邏輯函數發(fā)生器F和G還可以作為器件內高速RAM或小的可讀寫存儲器使用,它由信號變換電路控制。</p><p> (2)輸入/輸出模塊IOB。IOB提供了器件引腳和內部邏輯陣列之間的連接。它主要由輸入觸發(fā)器、輸入緩沖器
15、和輸出觸發(fā)/鎖存器、輸出緩沖器組成 。</p><p> 每個IOB控制一個引腳,它們可被配置為輸入、輸出或雙向I/O功能。當IOB控制的引腳被定義為輸入時,通過該引腳的輸入信號先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到MUX,另一路延時幾個納秒(或者沒有延時)后送到輸入通路D觸發(fā)器,再送到數據選擇器。通過編程給數據選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來自輸入緩沖器,還是來自觸發(fā)
16、器。</p><p> 當IOB控制的引腳被定義為輸出時,CLB陣列的輸出信號OUT也可以有兩條傳輸途徑:一條是直接經MUX送至輸出緩沖器,另一條是先存入輸出通路D觸發(fā)器,再送至輸出緩沖器。</p><p> IOB輸出端配有兩只MOS管,它們的柵極均可編程,使MOS管導通或截止,分別經上拉電阻接通VCC、地線或者不接通,用以改善輸出波形和負載能力。</p><p&
17、gt; (3)可編程互連資源IR??删幊袒ミB資源IR可以將FPGA內部的CLB和CLB之間、CLB和IOB之間連接起來,構成各種具有復雜功能的系統(tǒng)。IR主要由許多金屬線段構成,這些金屬線段帶有可編程開關,通過自動布線實現各種電路的連接。</p><p> 1.3 FPGA系統(tǒng)設計流程</p><p><b> 流程說明:</b></p><
18、p> (1)工程師按照“自頂向下”的設計方法進行系統(tǒng)劃分。</p><p> (2)輸入VHDL代碼,這是設計中最為普遍的輸入方式。此外,還可以采用圖形輸入方式,這種輸入方式具有直觀、容易理解的優(yōu)點。</p><p> (3)將以上的設計輸入編譯成標準的VHDL文件。</p><p> (4)進行代碼級的功能仿真,主要是檢驗系統(tǒng)功能設計的正確性。這一步
19、驟適用于大型設計,因為對于大型設計來說,在綜合前對源代碼仿真,就可以大大減少設計重復的次數和時間。一般情況下,這一仿真步驟可略去。</p><p> (5)利用綜合器對VHDL源代碼進行綜合優(yōu)化處理,生成門級描述的網絡表文件,這是將高層次描述轉化為硬件電路的關鍵步驟。綜合優(yōu)化是針對ASIC芯片供應商的某一產品系列進行的,所以綜合的過程要在相應的廠家綜合庫的支持下才能完成。</p><p>
20、; (6)利用產生的網絡表文件進行適配前的時序仿真,仿真過程不涉及具體器件的硬件特性,是較為粗略的。一般的設計,也可略去這一步驟。</p><p> (7)利用適配器將綜合后的網絡表文件針對某一具體的目標器件進行邏輯映射操作,包括底層器件配置、邏輯分割、邏輯優(yōu)化和布局布線。</p><p> (8)在適配完成后,產生多項設計結果:a.適配報告,包括芯片內部資源利用情況,設計的布爾方程
21、描述情況等;b.適配后的仿真模型;c.器件編程文件。根據適配后的仿真模型,可以進行適配后時序仿真,因為已經得到器件的實際硬件特性(如時延特性),所以仿真結果能比較精確的預期未來芯片的實際性能。如果仿真結果達不到設計要求,就修改VHDL源代碼或選擇不同速度和品質的器件,直至滿足設計要求。最后將適配器產生的器件編程文件通過編程器或下載電纜載入到目標芯片CPLD/FPGA中。</p><p> 第二章 系統(tǒng)電路設計
22、</p><p> 2.1 電子鐘的設計方案選擇</p><p> 數字電子鐘的設計方法有多種,例如,可用中小規(guī)模集成電路組成電子鐘;也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘;還可以利用單片機來實現電子鐘等等</p><p> 方案一:運用單片機內部的定時/計數器來實現電子時鐘的方法,該方案設計由單片機AT89S51芯片和LED數
23、碼管為核心,輔以必要的電路,構成了一個單片機電子時鐘。</p><p> 時鐘的基本顯示原理:時鐘開始顯示為0時0分0秒,也就是數碼管顯示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分鐘加1,10秒位回0。依次類推,時鐘最大的顯示值為23小時59分59秒。這里只要確定了1秒的定時時間, 其它位均以此為基準往上累加。</p><p> 方
24、案二:采用專用的時鐘芯片實現,通過單片機讀取時鐘芯片的計時時間,在數碼管上顯示出來,就可以實現電子時鐘功能,典型的時鐘芯片有:DS1302,DS12887,X1203,PCF8583等都可以實現電子時鐘功能。</p><p> 方案三:采用FPGA來實現電子時鐘功能,運用VHDL語言來描述電子時鐘的各個功能模塊。將電子時鐘分為六十進制計數器和二十四進制計數器兩個基本的功能模塊,然后將兩個六十進制計數器和一個二十
25、四進制計數器相級聯(lián),就構成一個具有時、分、秒的電子時鐘。</p><p> 比較方案一、方案二和方案三:方案一是用軟件實現,即用單片機內部的可編程定時/計數器來實現,但誤差很大,主要用在對時間精度要求不高的場合;方案二是用專門的時鐘芯片實現,在對時間精度要求很高的情況下,通常采用這種方法,但該方案還具備日歷功能,造成功能上的浪費;方案三是采用FPGA實現,運用VHDL語言描述,設計方法簡單,而且運用有源晶振作為
26、系統(tǒng)的時鐘源,通過分頻得到1HZ的信號,計時精度很高,不低于方案二的計時精度,而且運用VHDL語言來描述電子時鐘是完全的硬件實現。</p><p> 通過以上比較,系統(tǒng)中采用FPGA來實現電子時鐘功能。</p><p> 2.2 總體設計方案</p><p> 設計一個顯示時(2位)、分(2位)、秒(2位)共六位的多功能電子鐘,它的主要功能是進行準確的計時。利
27、用VHDL語言對硬件進行描述,通過下載到FPGA之中進行硬件驗證。系統(tǒng)采用4MHz的石英晶體振蕩器作為時鐘源,經過分頻之后得到1HZ的秒鐘信號,秒計滿60即得1分鐘,分計滿60便得1小時的信號,小時計滿24即得一天,電子時鐘的外觀圖如圖2.1所示。其中有六個按鍵用于調整時間,復位等功能。具體功能如下:</p><p> 圖2.1 電子鐘的外觀圖</p><p><b> O
28、K鍵:開始計時。</b></p><p> SET鍵:與調時、調分、調秒鍵配合,可以調整到指定的時間。</p><p> RESET鍵:清零。</p><p> 電子時鐘硬件總體框圖如圖2.2所示。</p><p> 圖2.2 電子時鐘硬件總體框圖</p><p> 在每個功能模塊分項設計和組合
29、前,先簡單介紹一下每個方塊的功能作用。</p><p> ?。?)分頻器通過分頻將4MHz的信號分頻為1Hz的秒信號和100Hz的同步掃描時鐘信號。</p><p> ?。?)1Hz的秒信號輸入到秒計數電路,當計數器溢出時,向分計數器進位,當分計數器溢出時,向時計數器進位。</p><p> ?。?)BCD譯碼電路是將計數器的十六進制計數值轉換為數碼管顯示所需要的段
30、碼。</p><p> (4)位碼電路是用來選通某一位數碼管,使其顯示數字。</p><p> ?。?)掃描同步電路作用控制同一個數碼管的段碼和位碼同步,同時對多個數碼管輪流掃描。</p><p> ?。?)鍵盤控制電路作用是啟動電子時鐘計時,設定時間等。</p><p> 2.3 顯示電路設計</p><p>
31、 顯示電路有LCD和LED顯示電路,系統(tǒng)中選用LED顯示電路,LED器件是一種發(fā)光二極管顯示器。</p><p><b> 其特點如下:</b></p><p> ?。?)LED顯示器具備穩(wěn)定、高速、簡單的系統(tǒng);</p><p> ?。?)LED顯示結構簡單、性能穩(wěn)定;</p><p> ?。?)LED顯示應用在成熟
32、的生產技術上。</p><p> 發(fā)光二極管組成的顯示器是單片機應用產品中最常用的廉價輸出設備。八段發(fā)光二極管結構如圖2.3所示。</p><p> 圖2.3 八段發(fā)光二極管外型</p><p> 發(fā)光二極管的陽極連在一起的稱為共陽極顯示器,陰極連在一起的稱為共陰極顯示器。1位顯示器有8個發(fā)光二極管組成,其中7個發(fā)光二極管a~g控制7個筆段的亮或暗,另一個控制
33、一個小數點的亮和暗,這種筆畫式的八段顯示器能顯示的字符少。字符的形象有些失真,但控制方便,使用簡單。</p><p> 圖2.4 共陰極數碼管</p><p> 圖2.5 共陽極數碼管</p><p> 顯示器的顯示方法有靜態(tài)和動態(tài)兩種方法。顯示器位數較少時,采用靜態(tài)顯示的方法是合適的。當位數較多時,用靜態(tài)顯示所需的I/O太多,一般采用動態(tài)顯示方法,所以在系統(tǒng)
34、中我們采用動態(tài)顯示。</p><p> 此類數碼管的工作特點是:</p><p> ?。?)數碼管片選端清0時,對應位的數碼管才有可能亮;</p><p> ?。?)每次只能有一個片選端清0,即只能動態(tài)移位顯示相應的數據;</p><p> ?。?)控制器通過控制數碼管顯示相應數字要用查表子程序來實現。</p><p&g
35、t; 系統(tǒng)中顯示電路是由分頻電路、掃描電路、BCD碼多路選擇器、位選碼電路和BCD譯碼器構成的。</p><p> 數碼管動態(tài)掃描電路如圖2.6所示,其中FPQ為分頻器,通過分頻得到掃描時鐘信號,時鐘信號為100Hz;SCAN為掃描電路,它是由狀態(tài)機組成的,循環(huán)掃描數碼管,使得數碼管穩(wěn)定的顯示數據;BCDYMQ為BCD譯碼器,作用是將計數器輸出的十六進制數轉換為數碼管顯示所需要的段碼;BIT為位碼,作用是輪流
36、選擇數碼管的位。</p><p> 圖2.6 數碼管動態(tài)掃描電路</p><p> 2.3.1 分頻器電路</p><p> 掃描電路所需要的掃描時鐘信號為100Hz,是通過分頻器將系統(tǒng)的4MHz時鐘信號經過10000分頻之后,再通過四分頻得到的。系統(tǒng)中采用四個十進制計數器相級聯(lián)實現10000分頻,然后通過兩個T觸發(fā)器實現四分頻得到100Hz信號。十進制計數
37、器的VHDL語言描述見附錄程序1。</p><p> 2.3.2 掃描電路電路</p><p> 掃描電路是動態(tài)數碼管顯示的核心部件,通過掃描電路使得同一位數碼管的段碼、位碼能夠同步選擇并穩(wěn)定顯示數據。其VHDL語言描述見附錄程序2.</p><p> 圖2.7 掃描電路仿真圖</p><p> 掃描電路是由四位二進制計數器組成的狀態(tài)
38、機構成的,其仿真圖如圖3.7所示。其中SCAN為掃描時鐘信號輸入端,COMCLK為狀態(tài)輸出端。</p><p> 2.3.3 BCD碼多路選擇器</p><p> BCD碼多路選擇器是輸入的四位的BCD碼根據掃描電路的輸出進行選擇,然后通過BCD譯碼器將對應的BCD碼轉換成顯示所需要的段碼。見附錄程序3。</p><p> 2.3.4 BCD譯碼器</p
39、><p> BCD譯碼器是將輸入的四位二進制數轉換成七段顯示代碼,通過對應的顯示代碼驅動LED顯示相應的數據,其仿真波形如圖2.8所示。其VHDL語言描述見附錄程序4.</p><p> 圖2.8 BCD譯碼器仿真波形</p><p> 2.3.5 位選碼電路</p><p> 位選碼電路的作用是在掃描電路作用下,依次輸出對應的數碼管的位
40、選碼。其仿真波形如圖2.9所示。程序見附錄程序5.</p><p> 圖2.9 位選碼仿真波形</p><p> 2.4 電子時鐘計數器電路設計</p><p> 電子時鐘是由兩個60進制計數器和一個二十四進制計數器組成的,其中二十四進制計數器用于時計數器,60進制計數器用于秒和分計數器。</p><p> 2.4.1 秒和分計數器設
41、計</p><p> 秒和分計數器是由六十進制計數器組成的,而六十進制計數器是由一個十進制計數器和一個六進制計數器組成的 。</p><p> ?。?)系統(tǒng)中采用的十進制計數器采用74161來設計,</p><p> 其設計原理圖如圖2.10所示,其中CLK為外部時鐘脈沖輸入端,Q0~Q3為計數器計數值輸出端,CNT為進位輸出端,ENT為十進制計數器使能端,CL
42、RN為十進制計數器清零端,十進制計數器仿真圖如圖2.11所示。</p><p> 圖3.10 十進制計數器原理圖</p><p> 圖3.11 十進制計數器仿真圖</p><p> ?。?)六進制計數器設計</p><p> 系統(tǒng)中采用的六進制計數器采用74161來設計,其設計原理圖如圖2.12所示,其中CLK1為外部時鐘脈沖輸入端,Q
43、Q0~QQ3為計數器計數值輸出端,CNT1為進位輸出端,ENT1為十進制計數器使能端,CLRN1為十進制計數器清零端,六進制計數器仿真圖如圖2.13所示。</p><p> 圖2.12 六進制計數器原理圖</p><p> 圖2.13 六進制計數器仿真圖時序圖</p><p> (3)六十進制計數器設計</p><p> 系統(tǒng)中采用的
44、十進制計數器與六進制計數器級聯(lián)構成六十進制計數器,其設計原理圖如圖2.14所示,其中CLK2為外部時鐘脈沖輸入端,Q0~Q7為計數器計數值輸出端,CNT2為進位輸出端,ENT2為十進制計數器使能端,CLRN2為十進制計數器清零端,其中CNT10、CNT6是十進制計數器和六進制計數器所生成的封裝庫。</p><p> 圖2.14 六十進制計數器原理圖</p><p> 2.4.2 小時計
45、數器設計</p><p> 電子時鐘電路的小時計數器是由二十四進制計數器組成的,系統(tǒng)需要將二十四進制計數器的計數值分解為兩位的BCD碼,然后再送到數碼管上顯示。</p><p> ?。?)二十四進制計數器</p><p> 其仿真圖如圖2.15所示。二十四進制計數器的VHDL語言描述見附錄程序6。</p><p> 圖2.15 二十四進
46、制計數器仿真波形</p><p> 由二十四進制計數器生成的圖標文件如圖2.16所示:</p><p> 圖2.16 二十四進制計數器圖標</p><p> (2)二十四進制計數器計數值分解電路</p><p> 時計數器分為時個位和時十位,所以需要將二十四進制計數器的計數值分為BCD碼十位和BCD碼個位,其仿真圖如圖2.17所示,
47、它生成的圖標文件如圖2.18所示。其VHDL語言描述見附錄程序7。</p><p> 圖2.17 二十四進制計數器的計數值分解為十位和個位仿真圖</p><p> 圖2.18 二十四進制計數器的計數值分解為十位和個位生成的圖標</p><p> (3)時計數器總體電路</p><p> 時鐘系統(tǒng)總體電路如圖2.19所示,其中CNT10
48、為十進制計數器,CNT6為六進制計數器;CNT23為二十四進制計數器;ZHHUAN為將二十四進制計數器的計數值分解為十位數據和個位數據的轉換電路;CLK2為輸入的秒信號;ENT2為使能信號,高電平有效。</p><p> 圖2.19時鐘系統(tǒng)總體</p><p> 鍵盤的硬件結構為獨立式鍵盤,直接連到EPF10K10LC84-4芯片的引腳上,其特點是便于編程操作 。</p>
49、<p> ?。?)開始/停止鍵KEY的設計</p><p> 我們將此鍵經去抖后連接一T觸發(fā)器,使其輸出為電平方式,即按鍵盤一次,電平進行一次翻轉。輸出Q0端接74161芯片的ENT端,從而達到了控制秒表的啟動停止。其原理圖如圖2.20所示。</p><p> 圖2.20 KEY的MAX+plusII原理圖</p><p> (2) 清零鍵KEY1
50、的設計</p><p> 為了使鍵盤達到按下清零,松開恢復的功能,KEY1鍵我們應用脈沖輸出方式,即按鍵盤一次,輸出一個脈沖信號。輸出端Q0連接74161芯片的CLRN端。這樣在按下鍵盤時輸出為低電平使能CLRN,松開后為高電平,禁止了該引腳。電路圖如圖2.21所示。</p><p> 圖2.21 KEY1鍵的MAX+plusII原理圖</p><p><
51、;b> 總結</b></p><p> 以上對電子鐘從硬件設計方案的選擇到用硬件描述語言的設計,都進行了詳細的介紹。現在對本次設計工作進行一次總結。</p><p> 在確定題目后,根據題目內容我首先閱讀了大量的相關書籍和資料,這使我在腦海中產生出設計的雛形,接下來就這個構想將整個設計分為VHDL硬件描述語言的裝置器件FPGA/CPLD的介紹、VHDL語言對電子鐘的
52、設計(七段顯示器的顯示設計、時間計數跟時間顯示、彈跳現象的消除及時間設定和顯示)部分。分別對每一部分翻閱了相關的資料,逐步的選定方案與電路設計程序。</p><p> 在用VHDL語言編好后,在計算機上又對程序進行了編譯、下載到芯片及仿真,修改了程序中的錯誤,這樣整個系統(tǒng)基本完成,最后對圖紙進行了整理,撰寫了這篇論文,至此,全部設計都進行完畢。VHDL語言通俗易懂,并且更有益撐握模塊工作原理,從而能夠更好的理解
53、系統(tǒng)功能。它還具有很強的電路描述和建模能力,能從多個層次對數字系統(tǒng)進行建模和描述,從而大大地簡化了設計任務,提高了設計的效率和可靠性。</p><p> VHDL支持各種模式的設計方法,具有良好的適應性,并且具有良好的電路行為描述和系統(tǒng)描述能力,在語言易讀性和層次化結構化設計表面表現了強大的生命力和應用潛力</p><p> 本次設計重點在于對VHDL語言的應用,以電子鐘作為一個具體的
54、模型進行設計。在整個設計的過程中雖然力求合理規(guī)范,也存在著一些缺憾,比如,在對電子鐘的設計中,有些功能模塊的設計不是最簡便的方式,同時肯定還有欠考慮的地方??傊?,在系統(tǒng)的軟硬件設計上由于能力所限,不一定是最佳選擇;一些設計方案可能存在不足,這些有待進一步檢驗。</p><p> 在這次的論文設計中,我感覺自己得到了一個難得的鍛煉機會,設計中能將自己所學的理論知識同實踐相結合起來,獨立的進行分析、設計;而且培養(yǎng)出
55、來一套有計劃,有步驟進行設計的習慣,將對今后的工作學習有非常大的幫助,在設計中查閱了大量的資料,豐富了自己的知識,擴展了視野;加強了對計算機的應用能力。通過此次設計,進一步掌握了有關數字鐘的工作原理及相關設計知識。特別是對其各工作模塊的功能有了更深一步的了解。</p><p> 在設計過程中,對VHDL語言的運用能力也得到了提高。同時,還深刻體會到了VHDL在功能設計中所具有的優(yōu)越性。</p>&
56、lt;p><b> 參考文獻</b></p><p> [1] 林明權. VHDL 數字控制系統(tǒng)設計范例[M]. 北京:電子工業(yè)出版社.2006 </p><p> [2] 盧毅,賴杰. VHDL與數字設計[M]. 北京:科技出版社出版 .2001</p><p> [3] 潘松,黃繼業(yè). EDA技術實用教程[M]. 北京:科技
57、出版社.2009 </p><p> [4] 徐偉業(yè),江冰,虞湘賓. CPLD/FPGA的發(fā)展與應用之比較[J].現代電子技術.2007[5] 武玉華,裴榮琪,李莉,周玉坤.多功能電子鐘ASIC設計[J],現代電子技術.200 </p><p> [6] 楊暉,張風言. 大規(guī)??删幊踢壿嬈骷c數字系統(tǒng)設計[M]. 北京:航空航天大</p><p> 學出版社
58、.2001 </p><p> [7] 褚振勇,翁木云. FPGA 設計及應用[M]. 西安:電子科技大學出版社.2001 </p><p> [8] 朱明程. 可編程邏輯系統(tǒng)的VHDL設計技術[M]. 南京:東南大學出版社.2007 </p><p> [9] 羅映祥. 基于Multisim 9的數字電子鐘設計與仿真[J]. 現代電子技術.2010<
59、/p><p> [10] 候伯享,顧新. VHDL硬件描述語言與數字邏輯電路設計[M]. 西安:電子科技大學出版社.2003</p><p> [11] Altera Corporation. Altera Digital Library[J]. Alter 2006 </p><p> [12] Xilinx Inc. Data Book 2001[J]. Xi
60、linx,2001 </p><p> [13] VHDL Language Reference Guide[J], Aldec Inc.Henderson NV USA,1999</p><p> [14] VHDL Reference Guide,Xilinx Inc.San Jose USA[J],2006</p><p><b>
61、 附錄</b></p><p><b> 程序1</b></p><p> LIBRARY IEEE;</p><p> USE IEEE. STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><
62、p> ENTITY CNT10 IS</p><p> PORT(CLK,RST,EN:IN STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> COUT:OUT STD_LOGIC);</p><p> END CNT10;</p&
63、gt;<p> ARCHITECTURE behav OF CNT10 IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK,RST,EN)</p><p> VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);</p>&
64、lt;p><b> BEGIN</b></p><p> IF RST= '1' THEN CQI:= (OTHERS =>'0'); </p><p> ELSIF CLK'EVENT AND CLK='1' THEN </p><p> IF EN =
65、 '1' THEN </p><p> IF CQI < "1001" THEN CQI := CQI + 1; </p><p> ELSE CQI:= (OTHERS =>'0'); </p><p><b>
66、 END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> IF CQI = "1001" THEN COUT <= '1'; </p><p> EL
67、SE COUT <= '0';</p><p><b> END IF;</b></p><p> CQ <= CQI; </p><p> END PROCESS;</p><p> END behav;</p>
68、<p> 其中,CLK為外部脈沖輸入端;RST為復位端,高電平有效,EN為使能端,高電平有效;CO為計數器的計數值輸出端;COUT為進位輸出端。</p><p><b> 程序2</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p>
69、<p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY SCAN IS</p><p><b> PORT( </b></p><p> SCAN:IN STD_LOGIC; </p><p> COMCLK:OUT STD_LOGI
70、C_VECTOR(1 DOWNTO 0)); </p><p><b> END;</b></p><p> ARCHITECTURE BEHAVE OF SCAN IS</p><p> SIGNAL Q:STD_LOGIC_VECTOR(1 DOWNTO 0):="00"; </p><p&g
71、t;<b> BEGIN</b></p><p> PROCESS(SCAN)</p><p><b> BEGIN</b></p><p> IF SCAN'EVENT AND SCAN='1' THEN</p><p> IF Q=3 THEN</p>
72、;<p><b> Q<="00";</b></p><p><b> ELSE</b></p><p><b> Q<=Q+1;</b></p><p><b> END IF;</b></p><p&g
73、t;<b> END IF;</b></p><p> END PROCESS;</p><p> COMCLK<=Q; </p><p><b> END;</b></p><p><b> 程序3</b></p><p>
74、; LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY BCDMUX IS</p><p> PORT( CLK:IN STD_LOGIC_VECTOR(1 DOWNTO 0); </p><p> BCDDATA:IN STD_LOGIC_VECT
75、OR(15 DOWNTO 0); </p><p> BCDLED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); </p><p><b> END;</b></p><p> ARCHITECTURE BEHAVE OF BCDMUX IS</p><p><b> BEGI
76、N</b></p><p> BCDLED(3 DOWNTO 0)<=BCDDATA(3 DOWNTO 0) AFTER 5 ms WHEN CLK="00" ELSE</p><p> BCDDATA(7 DOWNTO 4) AFTER 5 ms WHEN CLK="01" ELSE</p><p>
77、 BCDDATA(11 DOWNTO 8) AFTER 5 ms WHEN CLK="10" ELSE</p><p> BCDDATA(15 DOWNTO 12) AFTER 5 ms ;</p><p><b> END;</b></p><p> 其中,CLK為輸入選擇,BCDDATA 為輸入數據,BCDLED為
78、輸出數據。</p><p><b> 程序4</b></p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> USE ieee.std_logic_unsigned.all;</p><p> ENTIT
79、Y bcdymq IS</p><p><b> PORT ( </b></p><p> bcdin :IN std_logic_vector(3 DOWNTO 0);</p><p> bcdout :BUFFER std_logic_vector(7 DOWNTO 0)</p><p&g
80、t;<b> );</b></p><p> END bcdymq;</p><p> ARCHITECTURE behave OF bcdymq IS </p><p><b> BEGIN </b></p><p> bcdout(7 DOWNTO 0)<="00111
81、111" WHEN bcdin(3 DOWNTO 0)="0000" ELSE --0</p><p> "00000110" WHEN bcdin(3 DOWNTO 0)="0001" ELSE --1 </p><p> "01011011" WHEN bcdin(3 DOWNTO 0)=
82、"0010" ELSE --2</p><p> "01001111" WHEN bcdin(3 DOWNTO 0)="0011" ELSE --3</p><p> "01100110" WHEN bcdin(3 DOWNTO 0)="0100" ELSE --4</p&g
83、t;<p> "01101101" WHEN bcdin(3 DOWNTO 0)="0101" ELSE --5</p><p> "01111101" WHEN bcdin(3 DOWNTO 0)="0110" ELSE --6</p><p> "00000111"
84、; WHEN bcdin(3 DOWNTO 0)="0111" ELSE --7</p><p> "01111111" WHEN bcdin(3 DOWNTO 0)="1000" ELSE --8</p><p> "01101111" WHEN bcdin(3 DOWNTO 0)="100
85、1" ELSE --9</p><p> "01110111" WHEN bcdin(3 DOWNTO 0)="1010" ELSE --A</p><p> "01111100" WHEN bcdin(3 DOWNTO 0)="1011" ELSE --B</p><p
86、> "00111001" WHEN bcdin(3 DOWNTO 0)="1100" ELSE --C</p><p> "01011110" WHEN bcdin(3 DOWNTO 0)="1101" ELSE --D</p><p> "01111001" WHEN bc
87、din(3 DOWNTO 0)="1110" ELSE --E</p><p> "01110001" WHEN bcdin(3 DOWNTO 0)="1111" ELSE --F</p><p> ZZZZZZZZ"; </p><p> END behave;</p>
88、<p> 其中,bcdin為四位二進制數輸入端,bcdout為七段顯示代碼輸出端</p><p><b> 程序5</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY BIT IS</
89、p><p> PORT( CLK:IN STD_LOGIC_VECTOR(1 DOWNTO 0); </p><p> LEDENABLE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); </p><p><b> END;</b></p><p> ARCHITECTURE
90、BEHAVE OF BIT IS</p><p><b> BEGIN</b></p><p> LEDENABLE<="1110" WHEN CLK="00" ELSE</p><p> "1101" WHEN CLK="01" ELSE</p&
91、gt;<p> "1011" WHEN CLK="10" ELSE</p><p><b> "0111";</b></p><p><b> END;</b></p><p> 其中,CLK為掃描選擇信號輸入端,LEDENABLE為位選碼數
92、據輸出端</p><p><b> 程序6</b></p><p> LIBRARY IEEE;</p><p> USE IEEE. STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> EN
93、TITY CNT23 IS</p><p> PORT(CLK,RST,EN:IN STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p> COUT:OUT STD_LOGIC);</p><p> END CNT23;</p><
94、p> ARCHITECTURE behav OF CNT23 IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK,RST,EN)</p><p> VARIABLE CQI:STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p>&
95、lt;b> BEGIN</b></p><p> IF RST= '1' THEN CQI:= (OTHERS =>'0'); ----計數器復位 </p><p> ELSIF CLK'EVENT AND CLK='1' THEN ----檢測時鐘上升沿</p><p&g
96、t; IF EN = '1' THEN ----檢測是否允許計數</p><p> IF CQI < "10111" THEN CQI := CQI + 1; ----允許計數</p><p> ELSE CQI:= (OTHERS =>'0');
97、----大于23,計數值清零</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> IF CQI = "10111" THEN COUT
98、 <= '1'; </p><p> ----計數大于23,輸出進位信號</p><p> ELSE COUT <= '0';</p><p><b> END IF;</b></p><p> CQ <= CQI;
99、 --將計數值向端口輸出</p><p> END PROCESS;</p><p> END behav;</p><p> 其中,CLK為外部脈沖輸入端,RST為復位端,高電平有效,EN為使能端,高電平有效,CQ為計數脈沖輸出端,COUT為進位輸出端。</p><p><b> 程序7</b><
100、/p><p> LIBRARY IEEE;</p><p> USE IEEE. STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY zhhuan IS</p><p><b> PORT(&l
101、t;/b></p><p> interg : IN INTEGER RANGE 0 TO 23;</p><p> ten : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> one : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END zh
102、huan;</p><p> ARCHITECTURE behav OF zhhuan IS</p><p><b> BEGIN</b></p><p> PROCESS(INTERG)</p><p><b> BEGIN</b></p><p> CA
103、SE interg is</p><p> when 0|10|20 => one<="0000";</p><p> when 1|11|21 => one<="0001";</p><p> when 2|12|22 => one<="0010"
104、;</p><p> when 3|13|23 => one<="0011";</p><p> when 4|14 => one<="0100";</p><p> when 5|15 => one<="0101";</p><p&
105、gt; when 6|16 => one<="0110";</p><p> when 7|17 => one<="0111";</p><p> when 8|18 => one<="1000";</p><p> when 9|19 =>
106、 one<="1001";</p><p> when others=>one<="1110";</p><p><b> END CASE;</b></p><p> CASE interg is</p><p> when 0|1|2|3|
107、4|5|6|7|8|9 => ten<="0000";</p><p> when 10|11|12|13|14|15|16|17|18|19 => ten<="0001";</p><p> when 20|21|22|23 => ten<="0010";</p>&
108、lt;p> when others => ten<="1110"; </p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> END behav;</p><p> 其中interg為輸入的十進制數據
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子鐘課程設計--多功能電子鐘
- 多功能旋轉電子鐘課程設計
- 基于fpga電子鐘設計
- 多功能數字電子鐘課程設計
- 基于fpga的電子鐘設計
- 數字電子課程設計報告---多功能電子鐘
- 微機原理-多功能電子鐘課程設計
- 基于fpga的多功能數字鐘課程設計
- 基于fpga的電子鐘設計
- 數電課程設計--- 多功能電子鐘設計
- 多功能數字電子鐘-數電課程設計
- 基于單片機的多功能電子鐘課程設計
- 單片機課程設計--多功能數字電子鐘
- 單片機課程設計— 多功能數字電子鐘
- 單片機課程設計報告---多功能電子鐘
- 基于fpga多功能數字鐘設計
- 電子鐘課程設計----數字電子鐘的設計
- 基于fpga的lcd字符顯示電子鐘設計
- eda電子鐘課程設計----電子鐘的設計
- 以電子鐘為主的多功能設計課程設計報告
評論
0/150
提交評論