




已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
NJUST多功能數(shù)字鐘設(shè)計基于VerilogHDL語言 學(xué)院: 電子工程與光電技術(shù)學(xué)院學(xué)號: 912104220139 姓名: 匡鑫 指導(dǎo)教師: 譚雪琴 2014年11月21日星期五摘要:基于FPGA平臺,運用Verilog語言編寫設(shè)計一多功能數(shù)字鐘,包括基本的時鐘,校時校分,整點報時功能。擴展鬧鐘,秒表,萬年歷,鍵盤輸入功能。Abstract:FPGA-based platform, using Verilog language to design a multi-functional digital clock, including basic function of clock, school hours, school minutes,the whole point timekeeping. And extended function of alarm clock, stopwatch, calendar, keyboard input.關(guān)鍵詞:多功能數(shù)字鐘,可編程邏輯器件,EDA設(shè)計,VerilogKeywords:multi-functional digital clock, FPGA, EDA disign, Verilog目錄1 設(shè)計要求22 設(shè)計方案選擇及思路分析23 各子模塊設(shè)計原理和分析33.1 分頻模塊33.2 時分秒模塊53.3 時分調(diào)整模塊63.4 報時模塊73.5 掃描顯示模塊73.6 秒表模塊93.7 鬧鐘模塊103.8 萬年歷模塊123.9 鍵盤掃描模塊134 調(diào)試仿真155 編程下載166 結(jié)論167 參考文獻(xiàn)178 實驗感想179 源代碼171 設(shè)計要求基于FPGA可編程邏輯器件,用quatusII軟件設(shè)計一個多功能數(shù)字鐘,其基本要求如下: 1.有基礎(chǔ)的計時顯示功能,即時、分、秒顯示在6個七段管上2.K0,K1,K2,K3分別為系統(tǒng)使能(暫停),時鐘清零,校時,校分開關(guān)。由于按鍵是長期處于“1”狀態(tài),故在這里采用低電平“0”為有效電平(本人認(rèn)為原要求中“1”為有效電平不合理)。3. 使時鐘具有整點報時功能(當(dāng)時鐘計到5953”時開始報時,在5953”, 5955”,5957”時報時頻率為500Hz,5959”時報時頻率為1KHz, )。提高部分要求:添加按鍵:K4,K5分別為設(shè)置位選擇,設(shè)置位加一。K6,K7為組合功能選擇,當(dāng)K6K7值:(11)為時鐘功能,(10)為秒表功能,(01)為鬧鐘設(shè)置,(00)為萬年歷功能。 1.鬧時功能,按動方式鍵,使電路工作于預(yù)置狀態(tài),此時顯示器與時鐘脫開,而與預(yù)置計數(shù)器相連,利用前面手動校時,校分方式進(jìn)行預(yù)置,預(yù)置后回到正常模式。當(dāng)計時計至預(yù)置的時間時,揚聲器發(fā)出鬧鈴信號,時間為半分鐘,鬧鈴信號可以用開關(guān)“止鬧”,按下此開關(guān)后,鬧鈴聲立刻中止,正常情況下應(yīng)將此開關(guān)釋放,否則無鬧時作用。2.秒表功能。按start鍵開始計秒,按stop鍵停止計秒并保持顯示數(shù)不變,直到復(fù)位信號加入。3.萬年歷功能,4使用4*4矩陣鍵盤輸入設(shè)置信號2 設(shè)計方案選擇及思路分析 由于之前參加過華為杯電子設(shè)計大賽,當(dāng)時采用的是VerilogHDL語言,而且EDA實驗一曾經(jīng)做過用器件搭數(shù)字鐘的實驗,如果再用原理圖方法的話沒有挑戰(zhàn)性,而且VerilogHDL語言更為靈活方便,因此決定采用其完成本次電子設(shè)計。設(shè)計的總體部分按照要求可以分為基本模塊:分頻模塊、時鐘計時及調(diào)整模塊、掃描顯示。附加模塊:萬年歷、整點報時、鬧鐘功能和秒表功能。其總體設(shè)計框圖如下:嗡鳴器鬧鐘報時秒表日月年計數(shù)分頻秒分時計數(shù)掃描顯示3 各子模塊設(shè)計原理和分析3.1 分頻模塊初步分析后面所需要的信號頻率,分頻器的功能主要有4個:分別是產(chǎn)生計時用的標(biāo)準(zhǔn)秒脈沖1HZ信號;鬧鐘及萬年歷設(shè)置時用的2HZ閃爍信號整點報時及顯示掃描用的1kHZ高音頻信號和500HZ低音頻信號。分析系統(tǒng)時鐘為48M,經(jīng)過48K的分頻后得到1K信號,再經(jīng)過2分頻可以得到500HZ方波,1K經(jīng)過5分頻得到200HZ信號,最后100分頻得到的2HZ信號,再2分頻得到1HZ的時鐘。原理框圖如下圖5所示。1HZ2HZ200HZ1K48M500HZ 圖5 分頻信號框圖 Verilog設(shè)計分頻器很簡單,在偶數(shù)分頻時,在輸入脈沖下直接計數(shù)到所分頻數(shù)的一半,然后翻轉(zhuǎn)即可。如:always(posedge clk)begin f1k=(count48k48000/2)?1b1:1b0; if(count48k=48000-1)count48k=0; elsecount48k=count48k+1;end但是奇數(shù)分頻則要復(fù)雜得多,若奇數(shù)分頻不要求占空比為50%,原理同偶數(shù)分頻,可計數(shù)到(N-1)/2翻轉(zhuǎn),此時占空比接近50%。但如果要求占空比為準(zhǔn)確的50%,通過查閱資料得知也可以實現(xiàn)的。原理如下圖always (posedge f1k) /上升沿計數(shù)if(count5p=4) count5p=0;elsecount5p=count5p+1;/posedge wave /上升沿波形always (posedge f1k ) begin if(count5p2)f200p =1; elsef200p =0;end /negedge counteralways (negedge f1k ) /下降沿計數(shù)if(count5n=4) count5n=0;elsecount5n=count5n+1;/negedge wavealways (negedge f1k) /下降沿波形begin if(count5n2)f200n =1; elsef200n =0;end assign f200hz=f200n|f200p; /波形相或仿真波形如下,clk設(shè)置頻率為4800M,則f1k的周期為10us,仿真結(jié)果正確。3.2 時分秒模塊均用BCD碼來保存便于后期顯示,時分秒的情況基本相同,現(xiàn)詳細(xì)分析秒的進(jìn)位情況。用4位寄存器來保存秒個位,4位寄存器來保存秒十位。時分秒一共需要24位寄存器。在1HZ的脈沖下,秒個位計數(shù),當(dāng)滿10時即4ha時向秒十位進(jìn)位,秒個位清零;秒十位滿6即4h6時向分個位進(jìn)位,秒十位清零以此類推,特別在時十位處理時有些不同,當(dāng)小時整體滿24即8h24時,清零,(向天進(jìn)位,為以后萬年歷做鋪墊)。代碼如下,(此處把年月日的計數(shù)一起處理)beginsecond3:0=second3:0+1b1;if(second3:0=4ha)beginsecond3:0=4h0;second7:4=second7:4+1b1;if(second7:4=4h6)beginsecond7:4=4h0;minute3:0=minute3:0+1b1;if(minute3:0=4ha)beginminute3:0=4h0;minute7:4=minute7:4+1b1;if(minute7:4=4h6)beginminute7:4=4h0;hour3:0=hour3:0+1b1;if(hour3:0=4ha)beginhour3:0=4h0;hour7:4=hour7:4+1b1;if(hour=8h24)beginhour7:4=4h0;day3:0=day3:0+1b1;if(day3:0=4ha)beginday3:0=4h0;day7:4=day7:4+1b1;if(day7:4=4h3)beginday7:4=4h0;month3:0=month3:0+1b1;if(month3:0=4ha)beginmonth3:0=4h0;month7:4=month7:4+1b1;if(month7:0=8h12)beginmonth=8h0;year=year+1;endendendendendendendendendendend仿真波形:仿真結(jié)果正確3.3 時分調(diào)整模塊調(diào)整模塊的功能包括暫停計時,清零,校時,校分。在Verilog中很容易實現(xiàn),暫停:在時分秒計數(shù)模塊前加一個條件,當(dāng)key0不等于0時計時,那么低電平0有效時就不計時,即暫停。清零:always(posedge clk_1hz or negedge key1)/key1控制清零beginif(key1=0)/clearbeginhour=8b0;minute=8b0;second=8b0;end校時和校分一致,當(dāng)key2=0時,時個位加一,個位滿十時,向十位進(jìn)一位。校時:else if(key7:6=2b11 & key2=0)beginhour3:0=hour3:0+1b1;if(hour3:0=4ha)beginhour3:0=4h0;hour7:4=hour7:4+1;if(hour7:4=4h6)hour7:4=4h0;endend校分:else if(key7:6=2b11 & key3=0)beginminute3:0=minute3:0+1b1;if(minute3:0=4ha)beginminute3:0=4h0;minute7:4=minute7:4+1;if(minute7:4=4h6)minute7:4=4h0;endend3.4 報時模塊以分和秒為敏感表,檢測當(dāng)分為59時,秒為53,55,57時,beep_r寄存器放入500hz;秒為59時,beep_r寄存器放入1khz。always(minute or second)if(minute=8h59) /59分鐘時case(second) /秒為53、55、57低音報時 8h53,8h55, 8h57:beep_r=clk_500hz;8h59:beep_r=clk_1k;default:beep_r=1b0;endcaseelsebeep_r=1b0;3.5 掃描顯示模塊掃描顯示模塊是一個重點模塊,理解其工作原理很重要。先定義一個32位的寄存器裝載要顯示的內(nèi)容,方便在功能擴展時直接把想要顯示的內(nèi)容送到該寄存器就行了。采用掃描顯示,只要掃描的周期小于10ms,人眼就感覺不到閃爍。通過1k的頻率控制掃描,一共掃描8位,則顯示的頻率為125hz,掃描周期為8ms。這樣還可以節(jié)省管腳,方便操作。原理簡述,通過快速循環(huán)掃描產(chǎn)生8位的位碼和段碼,循環(huán)因子當(dāng)然也是8.在循環(huán)中把8位中對應(yīng)的當(dāng)前位的位碼置為0,同時把該為對應(yīng)的數(shù)保存到寄存器。同時把剛才寄存器中的值翻譯為對應(yīng)的七段管碼值送到段碼中。always(posedge clk_1k)begin/display_function chosecase(key7:6)2b11:display=hour,4ha,minute,4ha,second;/正常計時2b10:display=hour1,4ha,minute1,4ha,second1;/設(shè)置鬧鐘2b01:display=min,4ha,sec,4ha,ms;/秒表2b00:display=year,month,day;/萬年歷endcasecase(count1)3d0:dis_data=display3:0;3d1:dis_data=display7:4;3d2:dis_data=display11:8;3d3:dis_data=display15:12;3d4:dis_data=display19:16;3d5:dis_data=display23:20;3d6:dis_data=display27:24;3d7:dis_data=display31:28;endcasecase(count1)3d0:dig_r=8b11111110;3d1:dig_r=8b11111101;3d2:dig_r=8b11111011;3d3:dig_r=8b11110111;3d4:dig_r=8b11101111;3d5:dig_r=8b11011111;3d6:dig_r=8b10111111;3d7:dig_r=8b01111111;endcasecount1=count1+1; case(dis_data)4h0:seg_r=8hc0;4h1:seg_r=8hf9;4h2:seg_r=8ha4;4h3:seg_r=8hb0;4h4:seg_r=8h99;4h5:seg_r=8h92;4h6:seg_r=8h82;4h7:seg_r=8hf8;4h8:seg_r=8h80;4h9:seg_r=8h90;4ha:seg_r=8hbf;default:seg_r=8hff; endcaseend3.6 秒表模塊秒表模塊是一個相對獨立的模塊,用單獨的分、秒、毫秒寄存器計數(shù)。通過key6:7=10來選擇功能,key4清零,key5暫停。秒表的計數(shù)模塊與時分秒的大同小異。/先把1k的信號分頻為0.01s的信號always(posedge clk_1k)beginf100hz=(count1010/2)?1b1:1b0;if(count10=10-1)count10=0;elsecount10=count10+1;endalways(posedge f100hz )beginif(key7:4=4b0111)/若沒有暫停,(key4=1)beginms3:0=ms3:0+1b1;if(ms3:0=4ha)beginms3:0=4h0;ms7:4=ms7:4+1b1;if(ms7:4=4ha)beginms7:4=4h0;sec3:0=sec3:0+1b1;if(sec3:0=4ha)beginsec3:0=4h0;sec7:4=sec7:4+1b1;if(sec7:4=4h6)beginsec7:4=4h0;min3:0=min3:0+1b1;if(min3:0=4ha)beginmin3:0=4h0;min7:4=min7:4+1b1;endif(min=8h60)min=8h0;endendendendendelse if(key4=0)/清零beginms=0;sec=0;min=0;endend3.7 鬧鐘模塊鬧鐘模塊主要包括存儲時分的寄存器,設(shè)置鬧鐘,鬧鐘音樂,對比是否到達(dá)設(shè)定時刻幾個子模塊。其中音樂模塊最為復(fù)雜,也是本設(shè)計的亮點,單獨在一個文件中編寫。/設(shè)置鬧鐘always(negedge key)if(key7:6=2b01) /選擇鬧鐘設(shè)置beginif(!key2)hour1=hour+1;else if(!key3)minute1=minute1+1;end/對比是否到達(dá)設(shè)定時刻always(minute or second)if(minute=minute1&hour=hour1)beep2=beep1;elsebeep2=1b0;/調(diào)用音樂模塊cannon music(.clk(clk),.beep1(beep1);/音樂模塊,采用曲子cannon片段產(chǎn)生音樂原理:對嗡鳴器而言,每個音調(diào)都有其對應(yīng)的頻率。在當(dāng)前節(jié)拍時,給出相應(yīng)的頻率的脈沖即可發(fā)出對應(yīng)的音調(diào)。通過查找相關(guān)資料得出音調(diào)與頻率的對應(yīng)關(guān)系如下:音符 頻率/HZ 半周期/us(N) -低1DO 262 1908 #1DO# 277 1805低2RE 294 1700 #2RE# 311 1608低3MI 330 1516 #3MI# 340 1470低4FA 349 1433 #4FA# 370 1350低5SO 392 1276 #5SO# 415 1205低6LA 440 1136 #6LA# 466 1072低7SI 494 1012 #7SI# 524 0954中1DO 523 0956 #1DO# 554 0903中2RE 578 0842 #2RE# 622 0804中3MI 659 0759 #3MI# 682 0733中4FA 698 0716 #4FA# 740 0676中5SO 784 0638 #5SO# 831 0602中6LA 880 0568 #6LA# 932 0536中7SI 988 0506 #7SI# 1046 478高1DO 1046 478 #1DO# 1109 451高2RE 1175 426 #2RE# 1245 402高3MI 1318 372 #3MI# 1356 368高4FA 1397 358 #4FA# 1480 338高5SO 1568 319 #5S0# 1661 292高6LA 1760 284 #6LA# 1865 268高7SI 1976 253 #7SI# 2066 242(來自百度知道)卡農(nóng)簡譜:然后通過計算定義好每個音階對應(yīng)的頻率。250ms為一個節(jié)拍,把每一個節(jié)拍的頻率送到beep即可播放音樂。代碼太長,放到最后。3.8 萬年歷模塊萬年歷的存儲計數(shù)模塊在前面已經(jīng)和時分秒一起完成,這里只需要調(diào)整設(shè)置模塊。這里采用另外一種設(shè)置的方式,移位設(shè)置。萬年歷一共有三組數(shù),共8位,若分別用一個鍵去設(shè)置,太浪費資源,而且如果是年的話要從0到2014一個一個累加設(shè)置也不現(xiàn)實。故采用移位設(shè)置,每一位分別設(shè)置,并控制每一位的最大值。這樣只需要兩個鍵即可完成功能,一個移位,一個控制累加。其中,為了突出當(dāng)前正在設(shè)置的位,將該位閃爍。閃爍的方法是用一個低頻信號(2hz)與原來的高頻掃描的位碼相或。這樣低頻信號為“1”時會掩蓋該位的位碼,使其不顯示,只要在低頻信號為“0”時才正常顯示。/設(shè)置萬年歷reg 2:0setpoint;always(negedge key4)if(key7:6=2b00 & key4=0)setpoint=setpoint+1;always(negedge key5)if(key7:6=2b00 & key5=0)case(setpoint)3d0:begin day3:0=day3:0+1; if(day3:0=4ha)day3:0=4h0; dig_blink0=clk_2hz;end3d1:begin day7:4=day7:4+1; if(day7:4=4h3)day7:4=4h0; dig_blink1=clk_2hz;end3d2:begin month3:0=month3:0+1; if(month3:0=4ha)month3:0=4h0; dig_blink2=clk_2hz;end3d3:begin month7:4=month7:4+1; if(month7:4=4h2)month7:4=4h0; dig_blink3=clk_2hz;end3d4:begin year3:0=year3:0+1; if(year3:0=4ha)year3:0=4h0; dig_blink4=clk_2hz;end3d5:begin year7:4=year7:4+1; if(year7:4=4ha)year7:4=4h0; dig_blink5=clk_2hz;end3d6:begin year11:8=year11:8+1; if(year11:8=4ha)year11:8=4h0; dig_blink6=clk_2hz;end3d7:begin year15:9=year15:9+1; if(year15:9=4ha)year15:9=4h0; dig_blink7=clk_2hz;endendcase3.9 鍵盤掃描模塊通過前面的操作發(fā)現(xiàn)單獨的操作按鍵進(jìn)行數(shù)碼的設(shè)置不太方便,若能夠?qū)?*4矩陣鍵盤利用起來,必將方便的多。鍵盤掃描的原理如下:keyout14:key5key8的管腳keyin14:key1key4的管腳(通過跳線進(jìn)行復(fù)用)矩陣鍵盤的鍵值讀取是通過逐行掃描判斷實現(xiàn)的,如上圖所示,矩陣鍵盤的掃描流程是這樣的,剛開始在KEYOUT4:1輸出1110(KEYOUT1輸出低電平),延時一段時間后讀取KEYIN的狀態(tài),由于KEYIN接有上拉電阻,平時無按鍵時值為1111,若讀取的值不為1111,則說明S1、S5、S9、S13有按鍵按下,KEYIN1-KEYIN4的每一位對應(yīng)一個按鍵(如KEYIN4:1的值為1110,說明S1按下);掃描完一行之后繼續(xù)掃描第二行,KEYOUT4:1輸出1101(KEYOUT2輸出低電平),通讀取KEYIN的值可判斷S2、S6、S10、S14按鍵的值。以此類推通過定義6個狀態(tài),0狀態(tài)監(jiān)測有按鍵按下,1-4掃描是哪一列按下,若檢測到有按下,立即轉(zhuǎn)到5狀態(tài),在按下時重復(fù)保存下當(dāng)前的行和列。若均無按下,回到0狀態(tài)等待按下。主要代碼實現(xiàn):always (posedge clk_500khz or negedge reset)if(!reset) begin col=4b0000;state=3d0;endelse begin case (state)3d0: begincol3:0=4b0000;key_flag=1b0;if(row3:0!=4b1111) begin state=3d1;col3:0=4b1110;end /有鍵按下,掃描第一列else state=3d0;end 3d1: beginif(row3:0!=4b1111) begin state=3d5;end /判斷是否是第一列else begin state=3d2;col3:0=4b1101;end /掃描第二列end 3d2:begin if(row3:0!=4b1111) begin state=3d5;end /判斷是否是第二列else begin state=3d3;col3:0=4b1011;end /掃描第三列end3d3:begin if(row3:0!=4b1111) begin state=3d5;end /判斷是否是第三列else begin state=3d4;col3:0=4b0111;end /掃描第四列end3d4:begin if(row3:0!=4b1111) begin state=3d5;end /判斷是否是第一行else state=3d0;end3d5:begin if(row3:0!=4b1111) begincol_reg=col; /保存掃描列值row_reg=row; /保存掃描行值state=3d5;key_flag=1b1; /有鍵按下endelsebegin state=0;endendendcase end always (clk_500khz or col_reg or row_reg) begin if(key_flag=1b1) begin case (col_reg,row_reg) 8b1110_1110:key_value=8h7; 8b1110_1101:key_value=8h4; 8b1110_1011:key_value=8h1; 8b1110_0111:key_value=8h0; 8b1101_1110:key_value=8h8; 8b1101_1101:key_value=8h5; 8b1101_1011:key_value=8h2; 8b1101_0111:key_value=8ha; 8b1011_1110:key_value=8h9; 8b1011_1101:key_value=8h6; 8b1011_1011:key_value=8h3; 8b1011_0111:key_value=8hb; 8b0111_1110:key_value=8hf; 8b0111_1101:key_value=8he; 8b0111_1011:key_value=8hd; 8b0111_0111:key_value=8hc; endcase end end 4 調(diào)試仿真由于之前比賽就有過太多的失敗和教訓(xùn),不過也積累了不少經(jīng)驗,所以總體在軟件使用方面不存在障礙。提幾點十分重要的地方,當(dāng)然老師上課也都說過的。1.軟件必須完全破解,否則無法使用高級功能,也不能使用cycloneIII系列FPGA芯片。2.所有的文件必須在英文路徑下面,否則會有意想不到的各種問題。3.以前我不知道仿真的信號可以自由分組,以方便觀察組合值,以前都是默認(rèn)的總線才有分組的??偠灾瑢懞玫捻椖啃枰幾g,然后根據(jù)提示的錯誤進(jìn)行修改就行。仿真時需要新建波形文件,選擇感興趣的端口,設(shè)置好輸入信號,使能,時鐘,功能選擇等等。仿真,然后查看輸出波形??偟姆抡娌ㄐ稳缦拢? 編程下載分配好管腳,注意把沒有用到的管腳定義為三態(tài)輸入。再次編譯。分配好管腳如下:6 結(jié)論成功地運用VerilogHDL設(shè)計出多功能數(shù)字鐘,完成所有基本功能,并且添加了秒表,鬧鐘,萬年歷功能。7 參考文獻(xiàn)EDA實驗與實踐.周立功主編數(shù)字邏輯電路與系統(tǒng)設(shè)計.蔣立平主編Verilog_HDL_華為入門教程8 實驗感想遇到了很多的問題,基本上都是Verilog的問題,畢竟沒有系統(tǒng)的學(xué)習(xí)過,下面包括幾個典型的:1. 只能在一個進(jìn)程中操作寄存器,不然會有沖突。剛開始很不理解,而且覺得限制了很多的功能。比如想在多種信號條件去操作同一個寄存器。解決方法是將所有觸發(fā)信號寫入敏感表,在進(jìn)程中用if語句判斷到底是哪一個信號觸發(fā)的,從而做出相應(yīng)的操作。2. 不能多次賦值給網(wǎng)線類型,其實這個問題與前面一個問題有相似之處。解決方法是先將多個要賦值的信號邏輯運算后再進(jìn)行賦值,比如或和與運算。(前面一個問題通過if語句進(jìn)行邏輯運算的)3. 在賦值時不能偷懶,最好指定好數(shù)據(jù)的位,如4h0,不然會出現(xiàn)意想不到的錯誤。4. if條件語句(如果包含)必須至少有一個條件指向其中一個敏感事件(邊界標(biāo)識符)5. 設(shè)計流程最好采用并行設(shè)計,在多個always進(jìn)程中處理時序邏輯或組合邏輯。這樣有利于問題的簡化。通過此次電子設(shè)計,再次復(fù)習(xí)學(xué)習(xí)了一遍Verilog HDL,對其中數(shù)據(jù)流的操作又有了更多的理解。當(dāng)然,還是停留在表面,以后還需要更加深入的學(xué)習(xí),這樣運用起來才會。Verilog HDL很強大,既包括低級的邏輯門,又包括高級的數(shù)學(xué)運算。其模塊化和結(jié)構(gòu)化足以設(shè)計大型的數(shù)字電路。個人認(rèn)為硬件描述語言通過語言主要是直接操作寄存器和網(wǎng)線,從而綜合時序邏輯電路和組合邏輯電路,理論上可以設(shè)計出任何邏輯功能的電路。9 源代碼1.module clock(clk,clk_1hz,clk_2hz,clk_500hz,clk_1k,key_in,dig,seg,beep);input clk,clk_1hz,clk_2hz,clk_500hz,clk_1k;input 7:0 key_in;/key0:en,key1:clear,key2:jiaoshi,key3:jiaofen,key4:,key5,key6,key7:function chooseoutput 7:0dig;output 7:0seg;output beep;wire beep1;reg beep2;reg beep_r;/output 7:0hour,minute,second;assign dig=dig_r | dig_blink;assign seg=seg_r;assign beep=beep_r|beep2;/nao zhong,bao shireg 7:0key_r1,key_r2,key_r3;wire 7:0key;reg 7:0seg_r;/segment choosereg 7:0dig_r,dig_blink;/digit choosereg 7:0hour,minute,second;reg 7:0month,day;reg 15:0year;reg 7:0hour1,minute1,second1;/nao zhongreg 7:0min,sec,ms;/miao biaoreg 3:0dis_data;/the data you want display nowreg 2:0count1;reg 32:0display;/all the data series to displayreg f50hz,f100hz;reg 4:0count20;reg 3:0count10;/去抖動電路/assign key=(key_r1 | key_r2 | key_r3);/T=20msalways(posedge clk_1k)beginf50hz=(count2020/2)?1b1:1b0;if(count20=20-1)count20=0;elsecount20=count20+1;endalways(posedge f50hz)beginkey_r1=key_in;key_r2=key_r1;key_r3minute-hour/-day-month-year/always(posedge clk_1hz or negedge key1 or negedge key2 or negedge key3)always(posedge clk_1hz or negedge key1)beginif(key1=0)/clearbeginhour=8b0;minute=8b0;second=8b0;endelse if(key7:6=2b11 & key2=0)beginhour3:0=hour3:0+1b1;if(hour3:0=4ha)beginhour3:0=4h0;hour7:4=hour7:4+1;if(hour7:4=4h6)hour7:4=4h0;endendelse if(key7:6=2b11 & key3=0)beginminute3:0=minute3:0+1b1;if(minute3:0=4ha)beginminute3:0=4h0;minute7:4=minute7:4+1;if(minute7:4=4h6)minute7:4=4h0;endendelse if(key0)/no pausebeginsecond3:0=second3:0+1b1;if(second3:0=4ha)beginsecond3:0=4h0;second7:4=second7:4+1b1;if(second7:4=4h6)beginsecond7:4=4h0;minute3:0=minute3:0+1b1;if(minute3:0=4ha)beginminute3:0=4h0;minute7:4=minute7:4+1b1;if(minute7:4=4h6)beginminute7:4=4h0;hour3:0=hour3:0+1b1;if(hour3:0=4ha)beginhour3:0=4h0;hour7:4=hour7:4+1b1;if(hour=8h24)beginhour7:4=4h0;day3:0=day3:0+1b1;if(day3:0=4ha)beginday3:0=4h0;day7:4=day7:4+1b1;if(day7:4=4h3)beginday7:4=4h0;month3:0=month3:0+1b1;if(month3:0=4ha)beginmonth3:0=4h0;month7:4=month7:4+1b1;if(month7:0=8h12)beginmonth=8h0;year=year+1;endendendendendendendendendendendend/設(shè)置鬧鐘always(negedge key)if(key7:6=2b01)beginif(!key2)hour1=hour+1;else if(!key3)minute1=minute1+1;end/秒表always(posedge clk_1k)beginf100hz=(count1010/2)?1b1:1b0;if(count10=10-1)count10=0;elsecount10=count10+1;endalways(posedge f100hz )beginif(key7:4=4b0111)beginms3:0=ms3:0+1b1;if(ms3:0=4ha)beginms3:0=4h0;ms7:4=ms7:4+1b1;if(ms7:4=4ha)beginms7:4=4
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 聚焦海上成品油運輸合同新篇章
- 瑜伽課程預(yù)約合同
- 酒店經(jīng)營轉(zhuǎn)讓合同范本
- 草莓購銷合同范本
- 工程項目合同廉政承諾書范文
- 誠信標(biāo)志合作合同范本
- 人工智能在醫(yī)療保健中的創(chuàng)新考核試卷
- 木材切削刀具的選用與磨損分析考核試卷
- 云母制品在太陽能熱水器中的應(yīng)用考核試卷
- 安全網(wǎng)絡(luò)數(shù)據(jù)安全應(yīng)急響應(yīng)考核試卷
- 2025年上半年潛江市城市建設(shè)發(fā)展集團招聘工作人員【52人】易考易錯模擬試題(共500題)試卷后附參考答案
- 旋轉(zhuǎn)類機電設(shè)備故障預(yù)測、診斷研究
- 新媒體營銷(第三版) 課件全套 林海 項目1-6 新媒體營銷認(rèn)知-新媒體營銷數(shù)據(jù)分析
- 愚公移山英文 -中國故事英文版課件
- DB52∕T 1413-2019 黎平牛-行業(yè)標(biāo)準(zhǔn)
- 公園綠化養(yǎng)護景觀綠化維護項目迎接重大節(jié)會活動的保障措施
- 國內(nèi)外旅游公共服務(wù)研究的文獻(xiàn)綜述
- 集團公司各職能部管控分權(quán)手冊
- 機車電測儀表使用及檢修
- PMS顏色對照表
- 2012年北京大學(xué)醫(yī)學(xué)部外國留學(xué)生本科入學(xué)考試
評論
0/150
提交評論