




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、安康學院FPGA/SOP設計報告書課題名稱:基于FPGA勺電子表設計與實現(xiàn)姓 名:劉玲學 號:0828024057院 系:電子與信息工程系專 業(yè):電子信息工程指導教師:王慶春崔智軍時 間:2011年6月12日-7月10日設計項目成績評定表一、設計任務及要求:1、 設計任務:利用 Quartusll 軟件,設計一個多功能數(shù)字鐘,要求顯示格式為小時一分鐘一秒鐘,調整時間的按鍵用按鍵模塊的k1 和 k2,k1 調節(jié)小時,每按下一次,小時增加一個小時,k2 調整分鐘,每按下一次,分鐘增加一分鐘。還要通過按 鍵來控制時鐘與秒表顯示的切換功能,按鍵 k 沒按下時為時鐘顯示功能,按下 時為秒表顯示功能。Re
2、t 按鍵復位,復位后全部顯示 0000 00。2、 要 求:設計一個多功能數(shù)字鐘,要求顯示格式為小時一分鐘一秒鐘,調整時間的按鍵用按鍵模塊的 k1 和 k2, k1 調節(jié)小時,每按下一次,小時增加一個小時, k2 調整分鐘,每按下一次,分鐘增加一分鐘。指導教師簽名:年 月 日二、指導教師評語:指導教師簽名:年 月 日三、成績評定:指導教師簽名:年 月 日四、系部意見:系部蓋章:_年 月 日設計報告書目錄一、設計目的.1.二、設計原理.1.2.1、.時、分、秒計時器.1.22、校時電路.1.三、設計過程.2.3.1、整個系統(tǒng)設計框圖.23.2、各模塊電路設計.2五、課程設計體會與收獲 .6.六、
3、設計問題及問題解決 .7.七、參考文獻.7.附錄.8.、設計目的1、熟悉數(shù)字集成電路的引腳安排。2、掌握 EDA 芯片的邏輯功能及使用方法。3、了解 Quartus 軟件的應用。4、掌握在 Quartus 環(huán)境下 VHDL 弋碼仿真的實現(xiàn)。5、了解數(shù)字電子表的功能工作模塊及工作原理。二、設計原理數(shù)字時鐘電路由秒、分、時 5 個計數(shù)模塊和 6 個顯示譯碼模塊組成。秒計數(shù) 模塊的計數(shù)時鐘 elk 為 1Hz 的標準信號。當數(shù)字鐘處于正常計時狀態(tài)時,秒計數(shù) 器的進位輸出信號 e 作為分鐘模塊的計數(shù)信號,分計數(shù)模塊的進位輸出 e 為小時 模塊的計數(shù)信號。數(shù)字鐘除了正常計時外,還能夠調整時間。在本文中,
4、通過手動 調節(jié) din 的 3 個輸入量的高低電平而分別實現(xiàn)對秒、分、時的調整。2.1、時、分、秒計時器時計時器為一個 24 進制計數(shù)器,分、秒計時器均為 60 進制計數(shù)器。當秒計時器接受到一個秒脈沖時,秒計數(shù)器開始從1 計數(shù)到 60,此時秒顯示器將顯示 00、01、02、59、00;每當秒計數(shù)器數(shù)到 00 時,就會產生一個 脈沖輸出送至分計時器,此時分計數(shù)器數(shù)值在原有基礎上加1,其顯示器將顯示00、01、02、59、00;每當分計數(shù)器數(shù)到 00 時,就會產生一個脈沖輸出送 至時計時器,此時時計數(shù)器數(shù)值在原有基礎上加 1,其顯示器將顯示 00、01、02、.、23、00。即當數(shù)字鐘運行到 23
5、 點 59 分 59 秒時,當秒計時器在接受一個秒脈沖, 數(shù)字鐘將自動顯示 00 點 00 分 00 秒。2.2、校時電路當開關撥至校時檔時,電子鐘秒計時工作,通過時、分校時開關分別對時、 分進行校對,開關每按 1 次,與開關對應的時或分計數(shù)器加 1,當調至需要的時 與分時,撥動 reset 開關,電子鐘從設置的時間開始往后計時。三、設計過程3.1、整個系統(tǒng)設計框圖a.數(shù)字電子表系統(tǒng)方框圖如圖 1 所示圖 1 數(shù)字電子表系統(tǒng)框圖秒計數(shù)器的計數(shù)時鐘信號為 1Hz 的標準信號,可以由 CPLD 板上提供的 20MHZ 的信號通過分頻得到。秒計數(shù)器的進位輸出信號作為分鐘計數(shù)器的計數(shù)信號,分鐘計數(shù)器的
6、進位輸出信號又作為小時計數(shù)器的計數(shù)信號。設計一個同時顯示時、分、秒6 個數(shù)字的數(shù)字鐘,則需要 6 個七段顯示器。VHDL 程序代碼見附錄:程序 13.2、各模塊電路設計3.2.1、分頻器模塊由于實驗臺僅提供 50MHZ 頻率, 所以, 需要通過分頻器電路分出所需頻率 的信號,對于時鐘來說,最基本的是 1HZ 信號,而對于數(shù)碼管掃描最基本的是 1KHZ,秒表是100HZ,所以先通過分頻器把 50MHZ 分頻為 1HZ、100HZ 和 1KHZ。3.2.2、秒、分、時計數(shù)器模塊a.24 進制計數(shù)器(1)VHDL 程序代碼見附錄:程序 2(2)仿真圖:如圖 2圖 224 進制電路結構符號圖b.60
7、進制計數(shù)器(1) VHDL 程序代碼見附錄程序 3圖 360 進制電路結構符號圖秒、分計數(shù)模塊都是 60 進制的加法計數(shù)器,時計數(shù)模塊是 24 進制計數(shù)器與一般的標準計數(shù)器不同的是秒、 分、時計數(shù)模塊中分別添加了調節(jié)秒、 分和小時的功能323、動態(tài)顯示輸出模塊為了得到正確的顯示內容,需要將秒、分和小時的每一位輸出信號輸入至7段譯碼電路來得到相應的顯示信息.通過 6 進制計數(shù)器來控制位譯碼器,以得到 哪一個7 段數(shù)碼(共 6 個)管被點亮,同時用該計數(shù)器選擇 6 位二進制的顯示內容 輸入 7 段譯碼器.可以得到所有的數(shù)碼管同時顯示相應數(shù)字的效果 .324、功能控制模塊系統(tǒng)提供的有 4 個搖頭開關
8、,我們可以通過這些開關來達到清零,暫停以及調 整時間的功能,每個開關旁邊對應的有三個管腳,中間的管腳是輸出管腳,上下兩 個分別接輸入信號,即高低電平,若上面的管腳接高電平,下面的管腳接低電平,那么當開關撥到下方時,中間的管腳輸出的就是高電平,若把開關撥到上方時,輸 出管腳輸出低電平325 、調整時間模塊利用剩下的兩個開關組件實現(xiàn)該功能。其思想是通過一個開關的控制選擇要 調整的位,加入另外一個頻率較大的時鐘讓其進行計數(shù),當達到了要調整的時間 后,通過另一個開關的控制保存調整好的時間。具體實現(xiàn)為加入調整時間的模塊 用來控制時鐘、分鐘、秒鐘的計數(shù)。 VHD 程序代碼見附錄程序 4四、系統(tǒng)調試與下載驗
9、證將程序下載到 FPG 器件中進行硬件測試。4.1、在 Quartus 環(huán)境下仿真結果見以下圖形i COBWTTLMH jrfaO ;(T41|*PE考- *Euer-,rfcpw *5D| iv斗3fT圖 4 功能仿真圖4.2、下載顯示輸出結果如下圖所示圖 5 秒控制顯示圖圖 6 小時-分控制顯示圖圖 7 小時控制顯示圖五、課程設計體會與收獲這次最大的收獲就是學會了很系統(tǒng)地去解決一個實際問題,學會了巧妙運用模塊化的思想。在整個電路設計與實現(xiàn)中,最成功的地方就是有條理地將功能細 化,分成一個一個小的功能來實現(xiàn)。在這個過程中,我更深刻地體會從分立元件到中下規(guī)模集成電路再到大規(guī)模集成電路的組成過程
10、。同時也更加深入地了解了Quarterii 這一軟件的更多的功六、設計問題及問題解決1 編譯通過后,下載到硬件上之后,發(fā)現(xiàn)程序并沒有預期的效果。如顯示 亂序而沒有規(guī)律等等,當加入適當?shù)倪x通信號或者脈沖后發(fā)現(xiàn)問題得到了解決。 所以必須在實踐中不斷地修改以得到正確的結論。2高電平有效還是低電平有效,這是一個非常容易忽視的問題,有時就知 道這個端口要控制信號但不考慮好什么電平有效,造成錯誤,使得使能端或者清零端的出現(xiàn)錯誤控制信號。并且到底是脈沖控制,還是邊沿控制一定要清楚。在 實驗時候可以避免一些不必要的麻煩。3引腳重復使用也是一個問題,有時候輸出信號必須輸出到一個特定的引 腳。而輸出來自兩路信號,
11、這時候必須加入一個選擇器件選擇輸出信號輸出。在實際調試的時候我們必須耐心思考,遇到問題針對問題出現(xiàn)的原因認真思考 以解決問題。七、參考文獻1 侯伯亨,顧新.VHDL 硬件描述語言與數(shù)字電路邏輯設計M .西安:西安電子科技大學出版社,2001.2 潘松,黃繼業(yè).EDA 技術實用教程M .北京:科學出版社,2002.3 李國洪,沈明山.可編程器件 EDA 技術與實踐M .北京:機械工業(yè)出版社,2004.4 張淑驊.基于 FPGA 的數(shù)字秒表的 VHDL 設計J .大眾科技,2006陳意軍基于 VHDL 的 FPGA 開發(fā)J .電子與封裝,2006 (3)module clock_LCD (clk_
12、50m,reset,adj,mode,SWO,SW1,SW2,dp01,dp34,dp67,dp25,HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7,/system in put clock;/system reset; low voltage reset/in put clock adjust/in put clock mode/clock test en able/led speed contr/led turn ON/OFF/SEG dot for mode flag;/output to 8 SEG附錄程序 1/-/ Title: clock_LPM t
13、op Module/ Desig n: eda/ Author: wqc328/ Compa ny: AKU_eie/-/ File:clk_ge n.v/ Gen erated:Sun Mar 25 11:26:41 2011/ From:in terface descripti on file/ By:Itf2Vhdl ver. 1.20/- / Descripti on :/ / Clock_LPM top module/ /-LEDG,LEDR,/output to LED 18+8LCD_DA TA, oLCD_ON, oLCD_RW, oLCD_EN, oLCD_RS);in pu
14、t clk_50m,reset,adj,mode,SW0,SW1,SW2;output1:0 dp01,dp34,dp67,dp25;output6:0 HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7; output17:0 LEDR;output7:0 LEDG;output7:0 LCD_DATA;/ LCD Data bus 8 bitsoutputoLCD_ON;/ LCD Power ON/OFFoutputoLCD_RW;/ LCD Read/Write Select, 0 = Write, 1ReadoutputoLCD_EN;/ LCD En a
15、bleoutputoLCD_RS;/ LCD Comma nd/Data Select, 0 = Comma nd1 = Datawire clk_50m, clk_33m,clk_1;wire adj,mode,SW0,SW1;wire 24:0 clk;wire rco_sec,rco_ min ,rco_hour;wire clk_sec,clk_ min ,clk_hour;wire1:0 dp01,dp34,dp67,dp25;wire6:0 HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7;wire6:0 HEX00,HEX01,HEX03,HEX04
16、,HEX06,HEX07; wire31:0 iDIG;wire1:0 modf;wire clk_led1,clk_led;wire17:0 LEDR;wire7:0 LEDG;wire 7:0 LCD_DATA;/ LCD Data bus 8 bitswireoLCD_ON;/LCD Power ON/OFFwireoLCD_RW;/LCD Read/Write Select, 0 = Write, 1 = ReadwireoLCD_EN;/LCD En ablewireoLCD_RS;/LCD Comma nd/Data Select, 0 = Comma nd,1DataPLL50M
17、 U1 (.i nclk0(clk_50m),.c0(clk_33m);clk_gen U2(.clk_33m(clk_33m),.rst(reset),.cou nt(clk);assign clk_ 仁(SW0=1b1) ?clk20 : clk24;adjustU3(.clk_1(clk_1), .adj(adj), .sec_co(rco_sec), .min _co(rco_min), .mode(mode), .rst(reset), .clk_sec(clk_sec), .clk_min(clk_min), .clk_hour(clk_hour), .mod(modf);/cou
18、n ter_ in put;/mmode select;/system reset/output clock clk;/adjust flagassign dp25=2b11;assign dp01=2b11;assign dp34=2b11;assign dp67=2b11;/31-30-29-28 27-26-25-24 $23-22-21-20/19-18-17-16 15-14-13-12 $11-10-09-08/07-06-05-04 03-02-01-00assig niDIG11:8=4d10;assig niDIG23:20=4d10;assig niDIG31:30,iDI
19、G19,iDIG7=4b0000;COUNT_60 U4 (.clk(clk_sec),.rst(reset),.rco(rco_sec),.q(iDIG6:0);/count in put clock;/system reset;/carry output/BCD code outputCOUNT_60 U5 (.clk(clk_mi n),/co unt in putclock;.rst(reset), .rco(rco_min), .q(iDIG18:12);/system reset;/carry output/BCD code outputCOUNT_24 U6 (.clk(clk_
20、hour),.rst(reset), .rco(rco_hour), .q(iDIG29:24);sem_drive U7 (.oSEGO(HEXOO),.oSEG1(HEX01),.oSEG2(HEX2),.oSEG3(HEX03),.oSEG4(HEX04),.oSEG5(HEX5),.oSEG6(HEX06),.oSEG7(HEX07),.iDIG(iDIG);assig n HEX0,HEX1=(modf!=2b01)/count in put clock;/system reset;/carry output/output to 8 SEG/in put 8-BCD code (4*
21、8=32bit)? HEX00,HEX01:(!clk23=1b1) ? HEX00,HEX01 : 7d127,7d127;assig n HEX3,HEX4=(modf!=2b10)? HEX03,HEX04:(!clk23=1b1) ? HEX03,HEX04 : 7d127,7d127;assig n HEX6,HEX7=(modf!=2b11)? HEX06,HEX07:(!clk23=1b1) ? HEX06,HEX07 : 7d127,7d127;assig n clk_led1=(SW 仁=1b1) ? clk21 : clk20;assig n clk_led =(SW2=1
22、b1) ? clk_led1: 1b0;led_c ontrol U8 (.clk(clk_led),/system clock;.rst(reset), 丄EDG(LEDG), .LEDR(LEDR);/system reset;/output to LEDG;/output to LEDR;lcdU9(.iCLK(clk_33m),/clk_MHZ .iRST_N(reset), /reset/LCD Side丄 CD_DA TA(LCD_DATA), 丄CD_RW(oLCD_RW), .LCD_EN(oLCD_EN), .LCD_RS(oLCD_RS),丄 CD_ON(oLCD_ON),
23、.in 3(iDIG31:24),in2(iDIG19:12),in1(iDIG7:0), clk_4(clk23);en dmodule程序 2/-/ Title:COUNTER_24/ Desig n:eda/ Author:wqc328/ Compa ny:AKU_eie/-/ File:clk_ge n.v/ Gen erated:Sun Mar 25 11:26:41 2011/ From:in terface descripti on file/ By:Itf2Vhdl ver. 1.20/-/ Descripti on :/ BCD cou nter_24 for hour mo
24、dule/-module COUNT_24 (clk,/co unt in putclock;rst,/system reset;rco,/carry outputq);/BCD code outputin put clk,rst;output reg rco;output 5:0 q;wire clk,rst;reg 5:0 q;reg en;/*always (posedge clk or n egedge rst)if (!rst) q3:0=4d0;else if (q3:0=4d8) begin q3:0=q3:0+1b1; en=1b1; endelse if (q3:0=4d9
25、| q=6h23) begin q3:0=4d0;en=1b0;endbegin q3:0=q3:0+1b1; en=1bO; endalways (posedge clk or n egedge rst)if (!rst) q5:4=2d0;module COUNT_60 (clk,/co unt in put clock;rst,/system reset;rco,/carry outputq);/BCD code outputin put clk,rst; output reg rco; output 6:0 q;wire clk,rst;reg 6:0 q;reg en;* alway
26、s (posedge elk or n egedge rst)else if (en)begin q5:4=q5:4+1b1; rco=1b0;else if (q=6h23) begin q5:4=2d0; rco=1b1;else ;en dmodule程序 3/-/ Title:COUNTER_60/ Desig n:eda/ Author:wqc328/ Compa ny:AKU_eie/-/ File:clk_ge n.v/ Gen erated:Sun Mar 25 11:26:41 2011/ From:in terface descripti on file/ By:Itf2V
27、hdl ver. 1.20/-/ Descripti on :/ BCD coun ter_60 for sec ond and minu ter module/_endendelseif (!rst) q3:0=4d0;else if(q3:0=4d8) begin q3:0=q3:0+1b1; en=1b1;endelse if (q3:0=4d9) begin q3:0=4d0; en =1b0;endelsebegin q3:0=q3:0+1b1; en =1b0; endalways (posedge clk or n egedge rst)if (!rst) q6:4=3d0;else if (en)beginif (q6:4=3d5) begin q6:4=3d0; rco=1b1;endelsebegin q6:4=q6:4+1b1; rcoCOUNT = 000;CHOOSEOUT = S1; LT COUNT =COUNT + 1CHOOSEOUT = S2; LT COUNT =COUNT + 1CHOOSEOUT = S3; LT COU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論