




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)及應(yīng)用秒表設(shè)計專 業(yè):班 級:姓 名:學(xué) 號:201*年*月一、設(shè)計要求1、秒表計時范圍 0999.999 秒;2、計時值采用字符型 LCD顯示;3、具有計時開始、停止、復(fù)位等功能。4、設(shè)計中時鐘輸入采用驗證電路板上的 50MHz作為基準(zhǔn);5、程序設(shè)計盡可能考慮模塊化、 參數(shù)化設(shè)計思想, 并遵循基本的格式規(guī)范, 添加適當(dāng)?shù)淖⑨尲拔臋n說明;6、采用模塊化設(shè)計方式,底層模塊必須進(jìn)行功能仿真;7、編寫設(shè)計總結(jié)報告。二、設(shè)計原理數(shù)字鐘的讀數(shù)電路是用兩個六十進(jìn)制和一個二十四進(jìn)制( 或十二進(jìn)制 ) 計數(shù)器實現(xiàn)的。六十進(jìn)制計數(shù)器應(yīng)由一個十進(jìn)制計數(shù)器與一個六進(jìn)制計數(shù)器組成, 分別對秒 (或分) 的個
2、位和十位進(jìn)行計數(shù)。本實驗用二十四進(jìn)制計數(shù)器作為 “時”位計數(shù)器, 它的計數(shù)序列是 00,01, 02,23,00,也就是當(dāng)計數(shù)器計到 23時 59分 59秒時,若再輸入一個秒 脈沖,計數(shù)器就進(jìn)到 00時 00分 00秒。數(shù)字鐘計數(shù)電路的設(shè)計可用反饋歸零法。當(dāng)計數(shù)器正常讀數(shù)時,反饋門不 起作用,只有當(dāng)進(jìn)位脈沖到來時, 反饋信號隨即將計數(shù)電路清零, 實現(xiàn)相應(yīng)模的 循環(huán)計數(shù)。以六十進(jìn)制為例,當(dāng)計數(shù)器從 00,01,02 ,,59 計數(shù)時,反饋門不起 作用,只有當(dāng)?shù)?60 個脈沖到來時,反饋信號隨即將計數(shù)電路清零,實現(xiàn)模為 60 的循環(huán)計數(shù)。通過對設(shè)計題目的分析,我將整體電路劃分為 5 個子電路來設(shè)計
3、,及分頻、 按鍵處理、時間計數(shù)、數(shù)據(jù)選擇和顯示模塊,而且還設(shè)置了復(fù)位信號,隨時可以 對電路進(jìn)行復(fù)位。1)分頻模塊通過對主頻信號 50MHZ的分頻來得到所需的 1000HZ的時鐘信 號,并將此作為之后子電路的標(biāo)準(zhǔn)時鐘, 實現(xiàn)同步電路的要求, 主要采用的是計 數(shù)的方法,當(dāng)寄存器記滿 50000 時產(chǎn)生輸出脈沖;2)按鍵處理模塊通過對 SW1按鍵的判別,并采用雙 D 寄存器的應(yīng)用,在標(biāo) 準(zhǔn)時鐘的觸發(fā)下產(chǎn)生 starop 脈沖,通過判別 starop 脈沖是否有高電平使 mode 信號發(fā)生高低電平的翻轉(zhuǎn), mode為高電平時允許計數(shù),為低電平時停止計數(shù);3)時間計數(shù)模塊以 10 進(jìn)制計數(shù)器為基礎(chǔ), 1
4、0 計數(shù)器設(shè)置了 en_in 的接收 進(jìn)位和 en_out 產(chǎn)生進(jìn)位,實現(xiàn)了全加器的功能; 然后用 10 進(jìn)制的計數(shù)器產(chǎn)生了 100 進(jìn)制的,再而產(chǎn)生 8 位 10 進(jìn)制的計數(shù)器子電路,取其中的低 7 位完成計數(shù) 模塊子電路的設(shè)計;4)數(shù)據(jù)選擇模塊式通過安檢處理模塊中產(chǎn)生的 mode信號和 SW2按鍵對計 數(shù)器產(chǎn)生的數(shù)據(jù)進(jìn)行處理,當(dāng) mode為高電平的時候?qū)⒂嫈?shù)器的產(chǎn)生的結(jié)果存入 lcd_data_in 寄存器中;為低電平時, lcd_data_in 內(nèi)容保持不變; SW2為高電 平時進(jìn)行清零操作,使得 lcd_data_in 寄存器中的內(nèi)容全部清零。5)顯示模塊是運用 LCD顯示器的顯示原理
5、,將 lcd_data_in 寄存器中的數(shù) 據(jù)按 4 位一組的模式賦值給 lcd_data_out 8 位寄存器的低 4 位,高四位為 4b0011,選擇的是數(shù)字字庫,實現(xiàn) LCD的數(shù)據(jù)輸入,并且產(chǎn)生 RS,RW,en,cont 這 4 位控制信號,控制 LCD的顯示。三、實驗程序1) 頂層文件module ms_clock(clk_50M,SW1,SW2,SW3, /SW1 暫停 / 繼續(xù) SW2清零 SW3復(fù)位 lcd_data_out,RS,RW,en,cont);input clk_50M; / 系統(tǒng)時鐘input SW1,SW2,SW3; / 按鍵output7:0 lcd_data
6、_out;output RS,RW;output en,cont;wire clk_50M;wire SW1,SW2,SW3;wire clk_1000;wire 3:0 ms_1,ms_2,ms_3,s_1,s_2,s_3,s_4;wire 27:0 lcd_data_in;wire 7:0 lcd_data_out;wire mode;wire starop;/ 分頻模塊 , 把 50MHZ的時鐘分頻為 1000HZ用于計數(shù)器計數(shù)f_div m1(clk_50M,SW3,clk_1000);/ 按鍵處理模塊anjian m2(clk_1000,SW3,SW1,mode,starop);/
7、時間計數(shù)主模塊time_counter m3(mode,clk_1000,SW3, ms_1,ms_2,ms_3,s_1,s_2,s_3,s_4);/ 數(shù)據(jù)選擇模塊kongzhim4(clk_1000,SW3,SW2,mode,ms_1,ms_2,ms_3,s_1,s_2,s_3,s_4,lcd_data_in);/ 顯示模塊display m5(clk_1000,SW3,lcd_data_in,lcd_data_out,RS,RW,en,cont);endmodule2) 按鍵處理模塊module anjian(clk,rst,SW1,mode,starop);input clk,rst,S
8、W1;output mode,starop;wire starop;reg 1:0 DQ1;reg mode;always (posedge clk or negedge rst) if (rst)DQ1=2b00;elseDQ1=DQ10,SW1;assign starop=DQ10&DQ11; always (posedge clk or negedge rst) if (rst)mode = 1b0;else if(starop) mode = mode; endmodule 編譯結(jié)果:仿真:3) 分頻模塊module f_div(clk_50M,clr,clk_1000);input
9、clk_50M;input clr;output clk_1000;reg clk_1000;reg 15:0 cnt_div;always (posedge clk_50M or negedge clr)beginif(clr)begin / 復(fù)位信號 cnt_div = 16b0;endelse if(cnt_div = 49999) begin clk_1000 = clk_1000; cnt_div = 16b0;endelse begin cnt_div = cnt_div+1b1;endendendmodule 編譯結(jié)果:仿真:4) 數(shù)據(jù)選擇模塊module kongzhi(clk
10、,rst,clear,mode,ms_1,ms_2,ms_3,s_1,s_2,s_3,s_4, lcd_data_in);input 3:0 ms_1,ms_2,ms_3,s_1,s_2,s_3,s_4; input clear,mode,clk,rst;output 27:0 lcd_data_in;reg 27:0 lcd_data_in;always (posedge clk or negedge rst)beginif(rst)beginlcd_data_in 27:0 =28b0;endelse if (clear)/clearbegin lcd_data_in 27:0 =28b0
11、; endelse /no actionbegincase(mode)1b1: /start begin lcd_data_in3:0= ms_1; lcd_data_in7:4= ms_2; lcd_data_in11:8= ms_3; lcd_data_in15:12= s_1; lcd_data_in19:16= s_2; lcd_data_in23:20= s_3; lcd_data_in27:24= s_4;end1b0: /stop begin lcd_data_in27:0=lcd_data_in27:0; endendcaseendendendmodule 編譯結(jié)果:5) 時間
12、計數(shù)模塊module time_counter(EN,clk,clr,ms_1,ms_2,ms_3,s_1,s_2,s_3,s_4);input EN,clk,clr;output 3:0ms_1,ms_2,ms_3;output 3:0s_1,s_2,s_3,s_4;wire en1,en2,en3,en4;wire 3:0s_5;counter_1 U0(EN,clk,clr,ms_1,ms_2,en1); counter_1 U1(en1,clk,clr,ms_3,s_1,en2);counter_1 U2(en2,clk,clr,s_2,s_3,en3);counter_1 U3(en
13、3,clk,clr,s_4,s_5,en4); endmodulea. counter_1 子電路module counter_1(EN,clk,clr,ms_1,ms_2,EO);input clk,clr,EN;output 3:0 ms_2;output 3:0 ms_1;output EO;wire ld,en1,en2;assign ld=1b0;assign EO=en2;cont_10 u0(clk,clr,ld,EN,ms_1,en1);cont_10 u1(clk,clr,ld,en1,ms_2,en2); endmoduleb. cont_10 子電路module cont
14、_10(clk,rst,ld,en_in,data_out,en_out);input clk,rst,ld,en_in;output 3:0data_out;output en_out;reg 3:0data_out;assign en_out=en_in & data_out3 & data_out0; always(posedge clk or negedge rst) if(rst)data_out=4b0000;else if(ld)data_out=4b0000;else if(en_in)beginif(data_out3 & data_out0) data_out=4b0000
15、;elsedata_out=data_out+1b1;endendmodule編譯結(jié)果:仿真:6) 顯示模塊module display(clk,rst,lcd_data_in,lcd_data_out,RS,RW,en,cont); input clk,rst;input 27:0 lcd_data_in;output7:0 lcd_data_out;output RS,RW;output en,cont;wire en_out;reg RS,RW;reg3:0 count;reg7:0 lcd_data_out;reg3:0 state;wire clk_out,clk_en,cont;r
16、eg en_tmp;parameter Warmup = 4b0000,Funcset = 4b0001,Dspoff = 4b0011,Clsdsp = 4b0010,Modeset = 4b0110,Dspon = 4b0111,Setaddr1 = 4b0101,Indata1 = 4b0100,Setaddr2 = 4b1101,Indata2 = 4b1100,Idle = 4b1000;clkdiv U1(clk,clk_out);assign cont = 1b0; always (posedge clk or negedge rst) if(!rst)en_tmp=0;else
17、en_tmp=clk_out;assign en= clk_out &en_tmp; assign clk_en = en_tmp & clk_out; always(posedge clk or negedge rst) begin if(!rst) begincount=0;state=Warmup;endelsebegincase(state)Warmup:beginif(clk_en)beginif(count=4b0111) beginstate=Funcset; count=0;endelse begin state=Warmup; count=count+4b0001; ende
18、ndendFuncset:beginif(clk_en)begin if(count=4b1111) begin state=Dspoff;count=0;endelsebeginstate=Funcset; count=count+4b0001;endendendDspoff:state=Clsdsp;Clsdsp:beginif(clk_en)beginif(count=4b0101)begin state=Modeset; count=0;endelsebeginstate=Clsdsp; count=count+4b0001;endendendModeset: beginif(clk_
19、en) state=Dspon; end Dspon:beginif(clk_en)beginif(count=4b0100)begin state=Setaddr1; count=0;endelsebegin state=Dspon; count=count+4b0001;endendendSetaddr1: beginif(clk_en) state=Indata1;endIndata1:beginif(clk_en)beginif(count=4b1101)begin state=Setaddr2; count=0;endelsebeginstate=Indata1; count=cou
20、nt+4b0001; endendendSetaddr2: beginif(clk_en) state=Indata2;endIndata2:beginif(clk_en)beginif(count=4b1001)begin state=Setaddr1; count=0;endelsebeginstate=Indata2; count=count+4b0001; endendenddefault:state=Warmup;endcaseendendalways (state or count or lcd_data_in) begin case(state)Warmup: beginRS=0
21、;RW=0; lcd_data_out=8b00000000; endFuncset:lcd_data_out=8b00111000;Dspoff: lcd_data_out=8b00001000; Clsdsp: lcd_data_out=8b00000001;Modeset:lcd_data_out=8b00000110;Dspon: lcd_data_out=8b00001100; Setaddr1:beginRS=0;RW=0; lcd_data_out=8b10000000; endIndata1:beginRS=1;RW=0; case(count) 4b0000:lcd_data
22、_out=4b0011,lcd_data_in27:24; 4b0001:lcd_data_out=4b0011,lcd_data_in23:20; 4b0010:lcd_data_out=4b0011,lcd_data_in19:16; 4b0011:lcd_data_out=4b0011,lcd_data_in15:12;4b0100:lcd_data_out=8b00101110; 4b0101:lcd_data_out=4b0011,lcd_data_in11:8; 4b0110:lcd_data_out=4b0011,lcd_data_in7:4; 4b0111:lcd_data_o
23、ut=4b0011,lcd_data_in3:0;4b1000:lcd_data_out=8b00100000; 4b1001:lcd_data_out=8b00100000; 4b1010:lcd_data_out=8b00100000; 4b1011:lcd_data_out=8b00100000;4b1100:lcd_data_out=8b00100000; default:lcd_data_out=8b00100000; endcaseendSetaddr2:beginRS=0; RW=0;lcd_data_out=8b11000000; endIndata2:beginRS=1; RW=0; case(count) 4b0000:lcd_data_out=8b00100000; 4b0001:lcd_data_out=8b00100000; 4b0010:lcd_data_out=8b00100000; 4b0011:lcd_data_out=8
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云計算HCIP模考試題與參考答案
- 個人借款申請書范文
- 業(yè)務(wù)員年度工作計劃
- 企業(yè)弱電維護合同范本
- 三八婦女節(jié)護士愛崗敬業(yè)的演講稿
- 南通批發(fā)市場用電合同范本
- 醫(yī)院房子出售合同范本
- 臺球俱樂部采購合同范本
- 南京租房陰陽合同范例
- 區(qū)域 加盟 合同范本
- 2024年高中數(shù)學(xué)新課程標(biāo)準(zhǔn)考試模擬測試題及答案
- 煤礦員工安全培訓(xùn)教材一通三防篇
- 表演課程教案完整版
- 2024年新疆區(qū)公務(wù)員錄用考試《行測》試題及答案解析
- DB14-T 2736-2023 池塘養(yǎng)殖尾水處理規(guī)范
- 體重管理健康科普教育
- 大學(xué)數(shù)學(xué)《概率論與數(shù)理統(tǒng)計》說課稿
- 深大基坑設(shè)計施工關(guān)鍵技術(shù)孫加齊
- 《神經(jīng)外科常見疾病》課件
- DL-T5707-2014電力工程電纜防火封堵施工工藝導(dǎo)則
- 職業(yè)素養(yǎng)提升第2版(大學(xué)生職業(yè)素養(yǎng)指導(dǎo)課程)全套教學(xué)課件
評論
0/150
提交評論