




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、電子設計自動化基于FPGA的廣告顯示屏的設計 學院:通信與信息工程學院 專業: 通信與信息系統 姓名: 樊 忠 S100101025 一 需求分析1.功能描述:隨著現在經濟的飛速發展,城市的建設與美觀也越來越正規化。廣告的設計與要求也越來越嚴格,環顧我們周圍,廣告商滿大街的拉橫幅。雖然起到了很大的宣傳作用,但讓城市的美觀降低了層次,同時也增加了很大的安全隱患。用電子廣告顯示屏來做宣傳,不僅美觀大方,可以根據實際需要,對廣告內容及時修改。不會像其它形式的廣告宣傳產生巨大的資源消耗,環境污染符合當今低碳生活要求。 2.其他要求:本設計可以直接運行教學實驗箱的模式七。二 總體設計1.設計思路參考LC
2、D12864資料,由verilog語言對電子廣告顯示屏的中文顯示,時間顯示,時間調節等功能進行描述,實現電子廣告顯示屏的功能。同時獨立按鍵可以對顯示屏進行實時時間調節。2.器件選擇 Cyclone III LCD12864 獨立按鍵3.開發環境 Quartus II EDA教學實驗箱三硬件設計1.系統電路圖該系統電路主要功能:系統開始工作后,12864自動顯示預設中文字符,在液晶的最后一行顯示時間,可以通過獨立按鍵對月,日,時,分,秒進行調整。2各模塊電路圖2.1時鐘分頻模塊 LCD時鐘分頻信號模塊 時間顯示計數分頻信號模塊通過對系統時鐘進行分頻,得到clk_lcd和clk1,分別驅動1286
3、4和計時時鐘信號。2.2計時顯示模塊 計時顯示模塊 計時顯示模塊是系統的核心模塊。系統開始工作后,LCD顯示預設中文字符,在液晶的最后一行顯示時間,可以通過按鍵對月,日,時,分,秒進行調整。四軟件設計1.信號流程圖2.模塊信號流程圖2.1計數信號流程圖通過對系統時鐘的分頻,來達到驅動液晶和芯片工作的目的。2.2計時調時信號流程圖通過實時查詢來判斷月,日,時,分,秒。按鍵可以隨時調整顯示的時間。五測試結果在EDA實驗箱上運行,結果顯示如下,達到設計預期目的。六問題分析 對功能寄存器的正確操作是操作LCD12864的重要工作組成部分。最初上電實驗時,液晶無任何顯示的主要原因就是沒有正確操作寄存器。
4、七總結經過一學期的緊張學習,我們基本掌握了電子設計的設計流程,熟練使用keil軟件,protues軟件,Quartus II軟件,能通過實踐來實現一些小題目,達到了預期的學習目標。借此機會向一直兢兢業業工作的張老師表示感謝,向一直共同進取,相互學習的同學表示感謝。在今后的日子里,我們會更加努力學習,積極進取,努力在硬件設計方面做出些成績。參考文獻1 夏宇聞. Verilog數字系統設計M.北京:北京航空航天大學出版社.2008.2 吳厚航. 深入淺出玩轉FPGAM .北京:北京航空航天大學出版社.2010.3 4附程序代碼:時鐘分頻程序模塊module divclk_clk1(CLK_LCD,
5、rst,clk1);input CLK_LCD,rst;output clk1;reg clk1;reg 15:0 cnt2;always (posedge CLK_LCD or negedge rst) begin if (!rst)/rst按鍵按下 為低電平begincnt2 <= 16'b0;clk1 <= 0;end else if(cnt2 = 49)begincnt2 <= 0;clk1 <= clk1;end elsecnt2 <= cnt2 +1'b1;endendmodulemodule divclk_lcd(clk0,rst,c
6、lk_lcd);input clk0,rst;output clk_lcd;reg CLK_LCD;/LCD時鐘信號reg 23:0cnt1;always (posedge clk0 or negedge rst) begin if (!rst) begincnt1 <= 24'b0;CLK_LCD <= 0;end else if(cnt1 = 199999)begincnt1 <= 0;CLK_LCD <= CLK_LCD;end else cnt1 <= cnt1 +1'b1;endendmodule計時調時模塊module lcd_time
7、_key(clk0,clk1,rst,key4,key3,key2,key1,key0,month,day,hour,min,sec);input clk0,clk1,rst,key4,key3,key2,key1,key0;output month7:4,month3:0,day7:4,day3:0,hour7:4,hour3:0, min7:4,min3:0,sec7:4,sec3:0; reg 7:0 hour,min,sec; reg 7:0 month,day;wire seccar,mincar; always (posedge temp_sec) begin if(sec = 8
8、'h59) beginsec <= 0; end else if(sec3:0 = 9) beginsec3:0 <= 0;sec7:4 <= sec7:4 + 1; end else sec3:0 <= sec3:0 + 1; endassign seccar=(sec = 8'h59)?1:0; always (negedge temp_min) begin if(min = 8'h59) beginmin <= 0; end else if(min3:0 = 9) beginmin3:0 <= 0;min7:4 <= mi
9、n7:4 + 1; end else min3:0 <= min3:0 + 1; endassign mincar=(min = 8'h59)?1:0; always (negedge temp_hour) begin if(hour = 8'h23) beginhour <= 0; end else if(hour3:0 = 9) beginhour3:0 <= 0;hour7:4 <= hour7:4 + 1; end else hour3:0 <= hour3:0 + 1;endalways (negedge temp_month) begi
10、n if(month = 8'h12) beginmonth <= 0; end else if(month3:0 = 9) beginmonth3:0 <= 0;month7:4 <= month7:4 + 1; end else month3:0 <= month3:0 + 1;endalways (negedge temp_day) begin if(day = 8'h31) beginday <= 0; end else if(day3:0 = 9) beginday3:0 <= 0;day7:4 <= day7:4 + 1;
11、end else day3:0 <= day3:0 + 1;endreg4:0 key_rst; always (posedge clk0 or negedge rst) if(!rst) key_rst <= 5'b11111; elsekey_rst<= key4,key3,key2,key1,key0;reg4:0 key_rst_r; always ( posedge clk0 or negedge rst )if (!rst) key_rst_r <= 5'b11111;else key_rst_r <= key_rst;wire4:0
12、key_an = key_rst_r & ( key_rst);reg19:0 cnt; always (posedge clk0 or negedge rst) if(!rst) cnt <= 20'd0; else if(key_an) cnt <=20'd0; else cnt <= cnt + 1'b1;reg4:0 low_sw;always (posedge clk0 or negedge rst)if (!rst) low_sw <= 5'b11111;else if (cnt = 20'hfffff) lo
13、w_sw <= key4,key3,key2,key1,key0;reg 4:0 low_sw_r; always (posedge clk0 or negedge rst) if(!rst) low_sw_r <= 5'b11111; else low_sw_r <= low_sw;wire4:0 sw_ctrl = low_sw_r4:0&(low_sw4:0);wire temp_sec,temp_min,temp_hour,temp_month,tri_day;assign temp_sec = sw_ctrl0 | clk1;assign temp_
14、min = sw_ctrl1 | seccar;assign temp_hour = sw_ctrl2 | mincar;assign temp_month = sw_ctrl3;assign temp_day = sw_ctrl4;endmodule液晶初始化模塊:reg8:0 state;parameterIDLE = 9'b00000000,CLEAR= 9'b00000001, SETFUNCTION= 9'b00000010, SWITCHMODE= 9'b00000100, SETMODE = 9'b00001000,SHIFT = 9
15、9;b00010000,SETDDRAM = 9'b00100000, WRITERAM = 9'b01000000, STOP= 9'b10000000; reg flag;reg 6:0char_cnt;reg 7:0data_disp;assign RW = 1'b0;ssign EN = (flag = 1)?CLK_LCD:1'b0;always (posedge CLK_LCD or negedge rst)beginif(!rst)RS <= 1'b0;else if(state = WRITERAM)RS <= 1
16、39;b1;elseRS <= 1'b0;endalways (posedge CLK_LCD or negedge rst)/State Machine beginif(!rst)beginstate <= IDLE;DATA <= 8'bzzzzzzzz;char_cnt <= 5'b0;flag <= 1'b1;endelsebegincase(state)IDLE:begin flag <= 1'b1;state <= CLEAR;DATA<=8'bzzzzzzzz;endCLEAR:beg
17、instate <= SETFUNCTION;DATA <= 8'b00000001;endSETFUNCTION:beginstate <= SWITCHMODE;DATA <= 8'b00110000;endSWITCHMODE:begintate <= SETMODE;DATA <= 8'b00001100;endSETMODE:beginstate <= SETDDRAM;DATA <= 8'b00000110;endbeginstate <= SETDDRAM;DATA <= 8'b0
18、001_0000;endSETDDRAM:beginstate <= WRITERAM;if(char_cnt = 0)beginDATA <= 8'b1000_0000;endelse if(char_cnt = 16)beginDATA <= 8'b1001_0000;endelse if(char_cnt = 32) begin DATA <= 8'b1000_1000; endelse if(char_cnt = 48) beginDATA<=8'b1001_1000; end endWRITERAM:beginif(cha
19、r_cnt <= 15) beginchar_cnt <= char_cnt + 1'b1; DATA <= data_disp;if(char_cnt = 15)state <= SETDDRAM;elsestate <= WRITERAM;endelse if(char_cnt >= 16 && char_cnt <= 31) beginchar_cnt <= char_cnt + 1'b1; DATA <= data_disp;if(char_cnt = 31)state <= SETDDRAM;
20、elsestate <= WRITERAM;end else if(char_cnt >= 32 && char_cnt <= 47) beginchar_cnt <= char_cnt + 1'b1; DATA <= data_disp;if(char_cnt = 47)state <= SETDDRAM;elsestate <= WRITERAM;endelse if(char_cnt >= 48 && char_cnt <= 64) beginDATA <= data_disp;if(ch
21、ar_cnt = 64)beginstate <= STOP;char_cnt <= 5'b0;flag <= 1'b0;endelsebeginstate <= WRITERAM; char_cnt <= char_cnt + 1'b1;endendendSTOP:begin flag <= 1'b1; state <= SETDDRAM; enddefault: state <= IDLE;endcaseendend顯示模塊:always (char_cnt)begincase (char_cnt)7'
22、d0: data_disp = 8'ha2; 7'd1: data_disp = 8'ha0; 7'd2: data_disp = 8'ha2; 7'd3: data_disp = 8'ha0; 7'd4: data_disp = 8'hbb; 7'd5: data_disp = 8'hb6; 7'd6: data_disp = 8'hd3; 7'd7: data_disp = 8'had; 7'd8: data_disp = 8'hb9; 7'd9:
23、 data_disp = 8'he2; 7'd10: data_disp = 8'hc1; 7'd11:data_disp=8'hd9; 7'd12: data_disp = 8'ha2;7'd13: data_disp = 8'ha0;7'd14: data_disp = 8'ha2; 7'd15: data_disp = 8'ha0; 7'd16: data_disp = 8'ha2; 7'd17: data_disp = 8'ha0; 7'd18
24、: data_disp = 8'hd6; 7'd19: data_disp = 8'hd8; 7'd20: data_disp = 8'hc7; 7'd21: data_disp = 8'hec; 7'd22: data_disp = 8'hd3; 7'd23: data_disp = 8'hca; 7'd24: data_disp = 8'hb5; 7'd25: data_disp = 8'he7; 7'd26: data_disp = 8'hb4; 7
25、39;d27: data_disp = 8'hf3; 7'd28: data_disp = 8'hd1; 7'd29: data_disp = 8'ha7; 7'd30: data_disp = 8'ha2;7'd31: data_disp = 8'ha0; 7'd32: data_disp = 8'ha2; 7'd33: data_disp = 8'ha0;7'd34: data_disp = 8'ha2; 7'd35: data_disp = 8'ha0;7'd36: data_disp = 8'ha2; 7'd37: data_disp = 8'ha0;7'd38: data_disp = 8'ha2; 7'd39: data_disp = 8'ha0;7'd40: data_disp = 8'ha2; 7'd41: data_disp = 8'ha0; 7'd42: data_disp = 8
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年項目管理考試探討試題及答案
- 2024年項目管理難點試題及答案
- 長豐鋼結構夾層施工方案
- 行政管理師考試策略與解決方案及答案
- 項目的持續改進與優化試題及答案
- 項目管理市場環境試題及答案
- 2025年證券從業資格證考試的重點考查試題及答案
- 威迪斯管道施工方案
- 證券從業資格證考試學習策略試題及答案
- 理解項目管理中的團隊沖突處理的考點試題及答案
- 《教育學》課件 第五章 學校教育制度
- 中國芳香植物資源
- 銀行承兌匯票培訓-課件
- AB 753變頻器簡單操作培訓(參數拷貝)
- JGJ59-2011建筑施工安全檢查評分表-(完整版)
- 梁思成《千篇一律與千變萬化》(課件)
- 阿育吠陀體質測試
- 智能汽車傳感器技術-激光雷達
- 2023年四年級奧林匹克英語競賽試題
- 專利挖掘與技術交底書撰寫
- 輸液泵、微量泵的使用
評論
0/150
提交評論