基于VerilogHDL設(shè)計(jì)的定時(shí)器系統(tǒng)_第1頁(yè)
基于VerilogHDL設(shè)計(jì)的定時(shí)器系統(tǒng)_第2頁(yè)
基于VerilogHDL設(shè)計(jì)的定時(shí)器系統(tǒng)_第3頁(yè)
基于VerilogHDL設(shè)計(jì)的定時(shí)器系統(tǒng)_第4頁(yè)
基于VerilogHDL設(shè)計(jì)的定時(shí)器系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 基于Verilog HDL設(shè)計(jì)的數(shù)字時(shí)鐘設(shè)計(jì)報(bào)告 課題名稱: 數(shù)字時(shí)鐘設(shè)計(jì) 學(xué)校: 南通大學(xué) 學(xué)院: 電子信息學(xué)院 姓名: 杜軼群 學(xué)號(hào): 0911002133 班級(jí): 集成092 日期:2012年6月25日目錄第一節(jié) 引言.31.1概述.31.2本設(shè)計(jì)的任務(wù)和主要功能.3第二節(jié) 系統(tǒng)功能介紹.32.1系統(tǒng)總述.32.2系統(tǒng)設(shè)計(jì).4 2.3主要模塊.42.3.1分頻校時(shí)模塊.42.3.2半點(diǎn)整點(diǎn)報(bào)時(shí)???52.3.3計(jì)數(shù)器模塊.52.3.4顯示模塊.8第3節(jié) 仿真驗(yàn)證.93.1 仿真.93.2 設(shè)備選擇.93.3 引腳綁定.103.4 硬件驗(yàn)證.10第四節(jié) 課程設(shè)計(jì)總結(jié).10 附錄.11數(shù)字

2、時(shí)鐘設(shè)計(jì) 第一節(jié) 引言1.1概述 人類的計(jì)時(shí)器已有幾千年歷史。如今我們只需瞧一下鐘就能說(shuō)出時(shí)間,我們把這看成是很自然的事。但在長(zhǎng)達(dá)幾千年的時(shí)間里,根本就沒(méi)有任何測(cè)定時(shí)間的精確方法。人們通過(guò)太陽(yáng)在天空中的位置,或者通過(guò)像日晷或沙漏這樣的裝置來(lái)判斷時(shí)間。在沙漏中,是通過(guò)沙子從一個(gè)雙頭玻璃容器中漏落下來(lái)來(lái)指示時(shí)間的。至今為止,在中國(guó)歷史上有留下記載的四代計(jì)時(shí)器分別為:日晷、沙漏、機(jī)械鐘、石英鐘。目前在中國(guó)市場(chǎng)上,大多數(shù)家庭使用的普通時(shí)鐘即為石英鐘。本設(shè)計(jì)采用可編程芯片和VHDL語(yǔ)言進(jìn)行軟硬件設(shè)計(jì),不但可使硬件大為簡(jiǎn)化,而且穩(wěn)定性也有明顯提高。由于可編程芯片的頻率精度可達(dá)到50 MHz,因而計(jì)時(shí)精度很

3、高。1.2本設(shè)計(jì)的任務(wù)和主要功能 基本要求:能夠正確顯示時(shí)、分、秒,并有校時(shí)、半點(diǎn)報(bào)時(shí)和整點(diǎn)報(bào)時(shí)功能。要求能在數(shù)碼管上面正確顯示。 在完成基本要求的基礎(chǔ)上,可進(jìn)一步增加功能、提高性能,如增加鬧鈴功能。第二節(jié) 系統(tǒng)功能介紹2.1系統(tǒng)總述 本定時(shí)器的核心器件為EP2C35F672C6芯片。顯示采用6個(gè)七段數(shù)碼管,并采用共陽(yáng)接法。其系統(tǒng)原理如圖1所示。CPLD核心LED 數(shù)碼管分頻模塊計(jì)數(shù)器模塊顯示模塊校時(shí)圖1 數(shù)字時(shí)鐘系統(tǒng)原理圖2.2系統(tǒng)設(shè)計(jì)本系統(tǒng)共有四大模塊,分別為分頻校數(shù)模塊,半點(diǎn)整點(diǎn)報(bào)時(shí)模塊,計(jì)數(shù)器模塊和顯示模塊。其中分頻校時(shí)模塊是對(duì)外部來(lái)的50Hz的頻率進(jìn)行轉(zhuǎn)化。半點(diǎn)整點(diǎn)報(bào)時(shí)模塊則是在分鐘

4、顯示為0和30的時(shí)候,分別亮紅LED0和綠LED0。計(jì)數(shù)器模塊則是對(duì)時(shí)分秒的邏輯定義和計(jì)數(shù)。顯示模塊則包括數(shù)碼管譯碼和將OUT0到OUT6顯示到數(shù)碼管上。設(shè)計(jì)時(shí)可將外部的時(shí)鐘信號(hào)clock輸入進(jìn)分頻模塊,此時(shí)系統(tǒng)通過(guò)分頻將輸出控制信號(hào)div,以控制秒位。而秒位產(chǎn)生的進(jìn)位信號(hào)mt則能夠控制分位。分位的進(jìn)位信號(hào)nt又能控制時(shí)位,這樣就形成了電子時(shí)鐘。在計(jì)數(shù)的同時(shí)將時(shí)分秒每位輸出送到譯碼器。譯碼器模塊可對(duì)輸入的四位進(jìn)行譯碼,在6個(gè)七段數(shù)碼管上顯示出來(lái)。reset:當(dāng)該鍵為高時(shí),校時(shí)為00:00:00;key:用key鍵快速的校時(shí)。s1:半點(diǎn)報(bào)時(shí),半點(diǎn)時(shí)自動(dòng)控制LED燈亮;s2:整點(diǎn)報(bào)時(shí),整點(diǎn)時(shí)自動(dòng)控

5、制LED燈亮;七段數(shù)碼管用于顯示定時(shí)數(shù)字。2.3主要模塊2.3.1分頻校時(shí)模塊系統(tǒng)所給clock是50MHZ,將其分頻為1HZ,即周期為1S,用于計(jì)數(shù)。當(dāng)key鍵為1時(shí),輸出的div的頻率增加到10倍,由此可以進(jìn)行校時(shí)。always(posedge clock)/分頻校時(shí)begin if(key) begin if (count=2500000) begin div<=1;count<=count+1;endelse if(count=5000000)begin div<=0;count<=0;endelse count<=count+1; end else be

6、ginif (count=25000000) begin div<=1;count<=count+1;endelse if(count=50000000)begin div<=0;count<=0;endelse count<=count+1;endend輸出一個(gè)div信號(hào)對(duì)下面的計(jì)數(shù)模塊進(jìn)行控制。2.3.2半點(diǎn)整點(diǎn)報(bào)時(shí)模塊always(posedge div)begin begin if(min=30) /當(dāng)半點(diǎn)時(shí)s1等于1,紅LED0亮 s1<=1; else s1<=0; end begin if(min=0) /當(dāng)整點(diǎn)時(shí)s2等于1,綠LED0亮

7、 s2<=1; else s2<=0; endend 2.3.3計(jì)數(shù)器模塊用分頻模塊中的div信號(hào),對(duì)計(jì)數(shù)部分進(jìn)行控制。當(dāng)sec達(dá)到59時(shí),產(chǎn)生一個(gè)進(jìn)位信號(hào)mt,來(lái)控制分鐘部分,如果reset為1時(shí),則對(duì)秒位進(jìn)行清零。/秒位計(jì)數(shù)always (posedge div or posedge reset) if(reset=1) sec<=0; else begin if(sec=59) begin sec<=0; /秒為60進(jìn)制計(jì)數(shù)器 tun<=1; /每60秒產(chǎn)生一個(gè)進(jìn)位信號(hào)tun end else begin sec<=sec+1; tun<=0;

8、/進(jìn)位信號(hào)置0 end end assign mt=tun; /生成分的控制信號(hào) 用秒位模塊中來(lái)的進(jìn)位信號(hào)mt,對(duì)分位部分進(jìn)行控制。當(dāng)min達(dá)到59時(shí),產(chǎn)生一個(gè)進(jìn)位信號(hào)nt,來(lái)控制時(shí)位部分,如果reset為1時(shí),則對(duì)分位進(jìn)行清零。/分位計(jì)數(shù) always(posedge mt or posedge reset)if(reset=1) min<=0; else begin if(min=59) /分鐘為60進(jìn)制計(jì)數(shù)器 begin min<=0; mod<=1; s2<=mod; /每60分產(chǎn)生一個(gè)小時(shí)的進(jìn)位 end else begin min<=min+1; mo

9、d<=0; s2<=mod; /分鐘向小時(shí)的進(jìn)位信號(hào)置0 end if(min=30) s1<=1; else s1<=0; endassign nt=mod; /生成時(shí)的控制信號(hào)用分位模塊中來(lái)的進(jìn)位信號(hào)nt,對(duì)時(shí)位部分進(jìn)行控制。如果reset為1時(shí),則對(duì)時(shí)位進(jìn)行清零。/時(shí)位計(jì)數(shù)always(posedge nt or posedge reset) if(reset=1) hou<=0; else begin if(hou=24) /小時(shí)為24進(jìn)制計(jì)數(shù)器 hou<=0; else hou<=hou+1; end2.3.4顯示模塊通過(guò)譯碼顯示,在cloc

10、k或reset的上升沿時(shí)將信號(hào)輸出到數(shù)碼管上。六個(gè)譯碼器,分別代表小時(shí)分鐘秒數(shù)的高位和地位,hou2小時(shí)的高位為02,hou1小時(shí)的低位為04,min2分鐘的高位為05,min1分鐘的低位為09,sec2秒數(shù)的高位為05,sec2秒數(shù)的低位為09。下面以小時(shí)的高位為例:/譯碼輸出模塊always (posedge div or posedge reset)begin /數(shù)碼管譯碼顯示 case(sec1) 4'b0000: out1<=7'b0111111; /0 ,3F4'b0001: out1<=7'b0000110; /1 ,064'b

11、0010: out1<=7'b1011011; /2 ,5B4'b0011: out1<=7'b1001111; /3 ,4F4'b0100: out1<=7'b1100110; /4 ,664'b0101: out1<=7'b1101101; /5 ,6D4'b0110: out1<=7'b1111101; /6 ,7D4'b0111: out1<=7'b0000111; /7 ,074'b1000: out1<=7'b1111111; /8, 7

12、F4'b1001: out1<=7'b1101111; /9, 6Fdefault: out1<=7'b0111111; /0 ,3Fendcase end 第3節(jié) 仿真驗(yàn)證3.1 仿真從這張圖我們可以看到時(shí)鐘從00:00:00,開(kāi)始計(jì)時(shí),當(dāng)reset出現(xiàn)高電平時(shí),時(shí)鐘回零。當(dāng)reset不為高電平時(shí),則正常計(jì)數(shù)。3.2 設(shè)備選擇3.3 引腳綁定3.4 硬件驗(yàn)證將verilog源程序文件下載到DE2開(kāi)發(fā)板進(jìn)行硬件驗(yàn)證,完成檢測(cè)和調(diào)試。截圖如下: 第四節(jié) 課程設(shè)計(jì)總結(jié)兩個(gè)星期的Verilog課程設(shè)計(jì)結(jié)束了。在這兩個(gè)星期的設(shè)計(jì)中,我學(xué)到了很多東西。這次課程設(shè)計(jì)是第

13、一次每人一道題目,一個(gè)班里的同學(xué)無(wú)一重復(fù)。所以自從選過(guò)題目大家都開(kāi)始了緊張的工作,在各論壇、圖書館、中文數(shù)據(jù)庫(kù)查找資料后,最終確立了設(shè)計(jì)思路。整個(gè)過(guò)程現(xiàn)在總結(jié)起來(lái)遇到了許多困難,但正是這些困難。比如在計(jì)數(shù)模塊的設(shè)計(jì)部分,出現(xiàn)過(guò)時(shí)鐘不能顯示和顯示錯(cuò)誤的問(wèn)題,出現(xiàn)了兩次,第一是因?yàn)橥獠枯斎氲臅r(shí)鐘信號(hào)clock沒(méi)有成功的加到分頻器上;第二是因?yàn)檫壿嬌系腻e(cuò)位,進(jìn)行復(fù)位是沒(méi)有把寄存器里的值進(jìn)行清零。另外還有校數(shù)模塊的功能的實(shí)現(xiàn),在老師的指導(dǎo)之下,也終于完成了。我選擇了不同的方法去實(shí)現(xiàn),比如分頻的話因?yàn)檩斎霑r(shí)50Hz的信號(hào),所以對(duì)分頻器進(jìn)行設(shè)置分頻初值后將外部的信號(hào)轉(zhuǎn)化為1Hz的信號(hào)div。輸出部分則要用

14、到譯碼器,因?yàn)闀r(shí)鐘模塊的信號(hào)是數(shù)字,并不是對(duì)七段數(shù)碼管的控制信號(hào),這是我們就要注意這里用到的共陽(yáng)極的七段數(shù)碼管。當(dāng)然不止這些,在設(shè)計(jì)過(guò)程中和仿真過(guò)程中許多步驟都讓我印象深刻、記憶猶新。最終的設(shè)計(jì)成功讓我的編程和使用Quartus 軟件的能力大為提高,這對(duì)于我來(lái)說(shuō)是一筆寶貴的財(cái)富。 當(dāng)今電子技術(shù)飛速發(fā)展,而其核心已日趨接近EDA設(shè)計(jì),所以學(xué)好EDA設(shè)計(jì)對(duì)我們來(lái)說(shuō)非常重要。這次課程設(shè)計(jì)給我一個(gè)拓展的平臺(tái),值得欣慰的是當(dāng)遇到了不同種類的問(wèn)題,我學(xué)會(huì)了怎樣解決問(wèn)題、怎樣尋找解決問(wèn)題的方法。參考文獻(xiàn)1張明 Verilog HDL實(shí)用教程M成都:電子科技大學(xué)出版社,19992Hyde D C.Buckne

15、ll Handbook on Verilog HDLComputer Science Department, Bucknell University Lewisburg,19953康華光電子技術(shù)基礎(chǔ)(數(shù)字部分)M.北京:高等教育出版社, 19884夏宇聞復(fù)雜數(shù)字電路與系統(tǒng)的Verilog HDL設(shè)計(jì)技術(shù)M 北京: 北京航空航天大學(xué)出版社,19985徐志軍 徐光輝 CPLD/FPGA的開(kāi)發(fā)與應(yīng)用M北京:電子工業(yè)出版 社,2002附錄/.完整程序module mm(clock,reset,key,out1,out2,out3,out4,out5,out6,s1,s2);input clock;in

16、put reset;input key;reg5:0 sec,min,hou;reg tun,mod;reg3:0 sec1,sec2,min1,min2,hou1,hou2;wire mt,nt;reg25:0 count;reg div;output6:0 out1,out2,out3,out4,out5,out6;reg6:0 out1,out2,out3,out4,out5,out6;output s1,s2;reg s1,s2;/設(shè)置初值initial begin tun=1; mod=1; min=0; hou=0; sec=0; sec1=0; sec2=0; min1=0; m

17、in2=0; hou1=0; hou2=0; end/分頻校數(shù)always(posedge clock)begin if(key) begin if (count=2500000) begin div<=1;count<=count+1;end /給出的div快10倍 else if(count=5000000)begin div<=0;count<=0;end else count<=count+1; end else begin if (count=25000000) begin div<=1;count<=count+1;end else if(

18、count=50000000)begin div<=0;count<=0;end else count<=count+1;endend/秒位計(jì)數(shù)always (posedge div or posedge reset) if(reset=1) sec<=0; else begin if(sec=59) begin sec<=0; /秒為60進(jìn)制計(jì)數(shù)器 tun<=1; /每60秒產(chǎn)生一個(gè)進(jìn)位信號(hào)tun end else begin sec<=sec+1; tun<=0; /進(jìn)位信號(hào)置0 end end assign mt=tun; /生成分的控制信

19、號(hào) /分位計(jì)數(shù)always(posedge mt or posedge reset) if(reset=1) min<=0; else begin if(min=59) /分鐘為60進(jìn)制計(jì)數(shù)器 begin min<=0; mod<=1; /每60分產(chǎn)生一個(gè)小時(shí)的進(jìn)位 end else begin min<=min+1; mod<=0; /分鐘向小時(shí)的進(jìn)位信號(hào)置0 end endassign nt=mod; /生成時(shí)的控制信號(hào)/半點(diǎn)整點(diǎn)報(bào)時(shí)always(posedge div)begin begin if(min=30) /當(dāng)半點(diǎn)時(shí)s1等于1,紅LED0亮 s1&l

20、t;=1; else s1<=0; end begin if(min=0) /當(dāng)整點(diǎn)時(shí)s2等于1,綠LED0亮 s2<=1; else s2<=0; endend /時(shí)位計(jì)數(shù)always(posedge nt or posedge reset) if(reset=1) hou<=0; else begin if(hou=23) /小時(shí)為24進(jìn)制計(jì)數(shù)器 hou<=0; else hou<=hou+1; end/秒位轉(zhuǎn)化always (sec or reset) if(reset=1) begin sec1<=0; sec2<=0; end else

21、 begin sec1<=sec%10; /sec1為秒個(gè)位 sec2<=sec/10; /sec2為秒十位 end/分位轉(zhuǎn)化always(min or reset) if(reset=1) begin min1<=0; min2<=0; end else begin min1<=min%10; /min1為分個(gè)位 min2<=min/10; /min2為分十位 end/時(shí)位轉(zhuǎn)化always(hou or reset) if(reset=1) begin hou1<=0; hou2<=0; end else begin hou1<=hou%

22、10; /hou1為時(shí)個(gè)位 hou2<=hou/10; /hou2為時(shí)十位 end/譯碼輸出模塊always (posedge div or posedge reset)begin /數(shù)碼管譯碼顯示 case(sec1) 4'b0000: out1<=7'b0111111; /0 ,3F4'b0001: out1<=7'b0000110; /1 ,064'b0010: out1<=7'b1011011; /2 ,5B4'b0011: out1<=7'b1001111; /3 ,4F4'b010

23、0: out1<=7'b1100110; /4 ,664'b0101: out1<=7'b1101101; /5 ,6D4'b0110: out1<=7'b1111101; /6 ,7D4'b0111: out1<=7'b0000111; /7 ,074'b1000: out1<=7'b1111111; /8, 7F4'b1001: out1<=7'b1101111; /9, 6Fdefault: out1<=7'b0111111; /0 ,3Fendcas

24、e end always (posedge div or posedge reset)begin /數(shù)碼管譯碼顯示 case(sec2) 4'b0000: out2<=7'b0111111; /0 ,3F4'b0001: out2<=7'b0000110; /1 ,064'b0010: out2<=7'b1011011; /2 ,5B4'b0011: out2<=7'b1001111; /3 ,4F4'b0100: out2<=7'b1100110; /4 ,664'b0101

25、: out2<=7'b1101101; /5 ,6D4'b0110: out2<=7'b1111101; /6 ,7D4'b0111: out2<=7'b0000111; /7 ,074'b1000: out2<=7'b1111111; /8, 7F4'b1001: out2<=7'b1101111; /9, 6Fdefault: out2<=7'b0111111; /0 ,3Fendcase endalways (posedge div or posedge reset)beg

26、in /數(shù)碼管譯碼顯示 case(min1) 4'b0000: out3<=7'b0111111; /0 ,3F4'b0001: out3<=7'b0000110; /1 ,064'b0010: out3<=7'b1011011; /2 ,5B4'b0011: out3<=7'b1001111; /3 ,4F4'b0100: out3<=7'b1100110; /4 ,664'b0101: out3<=7'b1101101; /5 ,6D4'b0110:

27、out3<=7'b1111101; /6 ,7D4'b0111: out3<=7'b0000111; /7 ,074'b1000: out3<=7'b1111111; /8, 7F4'b1001: out3<=7'b1101111; /9, 6Fdefault: out3<=7'b0111111; /0 ,3Fendcase end always (posedge div or posedge reset)begin /數(shù)碼管譯碼顯示 case(min2) 4'b0000: out4<=

28、7'b0111111; /0 ,3F4'b0001: out4<=7'b0000110; /1 ,064'b0010: out4<=7'b1011011; /2 ,5B4'b0011: out4<=7'b1001111; /3 ,4F4'b0100: out4<=7'b1100110; /4 ,664'b0101: out4<=7'b1101101; /5 ,6D4'b0110: out4<=7'b1111101; /6 ,7D4'b0111: o

29、ut4<=7'b0000111; /7 ,074'b1000: out4<=7'b1111111; /8, 7F4'b1001: out4<=7'b1101111; /9, 6Fdefault: out4<=7'b0111111; /0 ,3Fendcase end always (posedge div or posedge reset)begin /數(shù)碼管譯碼顯示 case(hou1) 4'b0000: out5<=7'b0111111; /0 ,3F4'b0001: out5<=7'b0000110; /1 ,06

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論