影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

自動打鈴系統(tǒng)設計說明書—課程設計

上傳人:仙*** 文檔編號:28124366 上傳時間:2021-08-23 格式:DOC 頁數(shù):12 大?。?.83MB
收藏 版權申訴 舉報 下載
自動打鈴系統(tǒng)設計說明書—課程設計_第1頁
第1頁 / 共12頁
自動打鈴系統(tǒng)設計說明書—課程設計_第2頁
第2頁 / 共12頁
自動打鈴系統(tǒng)設計說明書—課程設計_第3頁
第3頁 / 共12頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《自動打鈴系統(tǒng)設計說明書—課程設計》由會員分享,可在線閱讀,更多相關《自動打鈴系統(tǒng)設計說明書—課程設計(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 自動打鈴系統(tǒng)設計說明書 學 生 姓 名: 學 號: 專 業(yè) 班 級: 報告提交日期:201 目錄 一、題目及要求簡介……………3 1.設計題目…………………3 2.總體要求簡介…

2、…………3 二、設計方案說明……………3 三、系統(tǒng)采用器件以及模塊說明………3 1.系統(tǒng)框圖…………4 2.選擇的FPGA芯片及配置………4 3.系統(tǒng)端口和模塊說明…………5 四、各部分仿真結果………5 五、調試及總結………6 六、參考文獻……7 七、附錄………7 一、 題目及要求簡介 1、設計題目 設計一個多功能自動打鈴系統(tǒng) 2、總體要求簡介 ① 基本計時和顯示功能(24小時制顯示),包括: 1. 24小時制顯示 2. 動態(tài)掃描顯示; 3. 顯示格式:88-88-88 ② 能設置當前時

3、間(含時、分) ③ 能實現(xiàn)基本打鈴功能,規(guī)定: 06:00起床鈴,打鈴5s 二、 設計方案說明 本次設計主要采用Verilog HDL硬件描述性語言、分模塊法設計的自動打鈴系統(tǒng)。由于這次用的開發(fā)板提供的是50M晶振。首先要對時鐘進行分頻,當計時到2FA_F07F時完成1s分頻,通過計時到60s產(chǎn)生分鐘進位信號,再通過60分鐘產(chǎn)生時鐘進位信號。最后通過6個寄存器對時分秒進行鎖存最終輸出到8個數(shù)碼管上完成顯示。當顯示時鐘和默認鬧鐘時鐘相等時,驅動打鈴模塊。通過key_mode,key_turn,key_change查看鬧鐘,時鐘顯示,調整時鐘。 三、 系統(tǒng)采用器件以及

4、模塊說明 1.系統(tǒng)框圖如下: 系統(tǒng)框圖如下: 2.選擇的FPGA芯片及配置:本次系統(tǒng)設計采用的FPGA芯片是Alter公司生產(chǎn)的Cyclone II EP2C8Q208C8。該芯片是208個管腳,138個IO,并且具有兩個內部PLL,而且內嵌乘法器,8K的邏輯門,資源相當豐富。完成這次自動打鈴系統(tǒng)的設計總共消耗250個LE單元,22個IO口,131個寄存器。經(jīng)過綜合后,本系統(tǒng)最高能實現(xiàn)145M的運行速度。通過Quartus II 軟件觀察到內部的RTL圖如下 3.系統(tǒng)端口和模塊說明 (1)分頻部分 分頻器的作用是對50Mhz的系統(tǒng)時鐘信號進行分頻,得到頻率為1hz的信號,即為

5、1S的計時信號。 (2)按鍵部分 按鍵key_mode--0為顯示計時,1為鬧鐘顯示,2為調整時間。 按鍵key_turn—0為調整小時,1為調整分鐘。 按鍵key_change—每按一次加1 (3)計時部分 通過sec_L,sec_H,min_L,min_H,hour_L,hour_H 6個寄存器對時分秒進行鎖存然后送入數(shù)碼管顯示 (4) 鬧鐘模塊 當設定的鬧鐘時間和數(shù)碼管上顯示的時間相等時驅動鬧鐘,完成打鈴,持續(xù)時間5s。 (5)數(shù)碼管顯示模塊 顯示模塊是由8個位選8個段選構成的顯示模塊,利用人眼的余暉效果完成動態(tài)掃描,顯示時間。 四、 各部分仿真結果 測

6、試文件如下: module clock_tb; reg sysclk,rst_b; reg key_mode,key_turn,key_change; wire buzzer; wire [7:0] led_sel,led_data; clock I_clock( .sysclk (sysclk),.rst_b (rst_b),.key_mode (key_mode), .key_change (key_change),.key_turn (key_turn),.buzzer (buzzer),.led_sel (led_sel),.led_data (led_da

7、ta)); initial begin sysclk = 1b1; rst_b = 1b0; //復位信號 #30 rst_b = 1b1; end always #10 sysclk = ~sysclk; //輸入的系統(tǒng)時鐘,20ns的周期 endmodule 五、 調試及總結 本次課程設計總共花費了四天左右的時間,設計了自動打鈴系統(tǒng)。通過這次的設計更加熟悉了對EDA技術的了解和認識,在中也發(fā)現(xiàn)許多不足的地方。使用了自頂而下的設計方法,使得設計更加的簡單和明了。在調試過程中,有些代碼的設計不規(guī)范性,導致時序相當緩慢,甚至編譯綜合都會報錯。在不斷的修改下

8、,發(fā)現(xiàn)時序電路和組合邏輯最好分開寫,這樣便于查錯,和修改代碼。畢竟Verilog HDL語言不同于C語言,不能以軟件的思想來設計,而是要利用電路的思想來編程,這樣可以更好的節(jié)省資源,使得時序也比較的簡單明了。在以后的學習及程序設計當中,我們一定要倍加小心,在程序出現(xiàn)不正常運行的情況下要耐心調試,盡量做到精益求精。 最后通過這次EDA方面的課程設計, 提高了我們對EDA領域及通信電路設計領域的認識,有利于培養(yǎng)我們在通信電路EDA方面的設計能力。有利于鍛煉我們獨立分析問題和解決問題的能力。 六、 文獻參考 [1] . 王金明、左自強 編,《EDA技術與Verilog設計》科學出版社 2

9、008.8 [2] . 杜慧敏、李宥謀、趙全良 編,《基于Verilog的FPGA設計基礎》 西安電子科技大學出版社 2006.2 [3] . 韓彬 編,《從零開始走進FPGA世界》杭州無線電愛好者協(xié)會出版社 2011.8.20 七、 附錄(實物圖及源碼) module clock(//Input sysclk,rst_b,key_mode,key_change,key_turn, //Output buzzer,led_sel,led_data ); input sysclk,rst_b; //sysclk--global sy

10、stem clock,rst_b--global reset signal input key_mode;//mode choose .0--Timing function.1--Alarm clock function.2--adjust function input key_turn;//choose adjust minute or hour input key_change;//count add 1 output buzzer; //device buzzer output [7:0] led_sel;//led tube bit choose output [

11、7:0] led_data;//led_tube 8 bit data choose parameter init_hour = 8h12; parameter init_min = 8h59; parameter init_sec = 8h50; //initial time :12:59:50 parameter init_alarm_hour = 8h06; parameter init_alarm_min = 8h30;//initial alarm time : 06:30:0 parameter Count_1s = 28h2FA_F07F; //count

12、time 1s; reg [7:0] sec; reg [7:0] min; reg [7:0] hour; reg [3:0] min_L; //minute low 4 bit reg [3:0] min_H; //minute high 4 bit reg [3:0] hour_L; //hour low 4 bit reg [3:0] hour_H; //hour high 4 bit reg [23:0] key_time; //press key away shake reg key_mode_n; //press key_mode next sta

13、te reg key_change_n; //press key_change next state reg key_turn_n; //press key_turn next state wire key_mode_press; //sure Button press key_mode wire key_turn_press; //sure button press key_turn wire key_change_press;//sure button press key_change always @ (posedge sysclk ) key_mode_n

14、<= key_mode; assign key_mode_press = (!key_mode) && (key_mode_n); always @ (posedge sysclk ) key_turn_n <= key_turn; assign key_turn_press = (!key_turn) && (key_turn_n); always @ (posedge sysclk ) key_change_n <= key_change; assign key_change_press = (!key_change) && (key_change_n); always @

15、 (posedge sysclk or negedge rst_b) begin if(!rst_b) key_time <= 24h0; else if(key_time != 24h0) key_time <= key_time + 24h1; else if((key_time == 24h0) && (key_mode_press || key_change_press || key_turn_press)) key_time <= key_time + 24h1; end reg [1:0] mode_num; //key mode ..0--Timin

16、g function.1--Alarm clock function.2--adjust function always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) mode_num <= 2b00; else if(mode_num == 2h3) mode_num <= 2h0; else if(key_mode_press && (key_time == 24h0)) mode_num <= mode_num + 2h1; end always @ (*) begin if(mode_n

17、um == 2h1)begin min = init_alarm_min; hour = init_alarm_hour; end else begin min = {min_H,min_L}; hour = {hour_H,hour_L}; end end reg fm; //choose turn hour or minute always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) fm <= 1b0; else if(key_turn_press && (mode_num == 2

18、h2) && (key_time == 24h0)) fm <= ~fm; end reg [27:0] time_cnt; ///count time reg [27:0] time_cnt_n; //count time next state always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) time_cnt <= 28h0; else time_cnt <= time_cnt_n; end always @ (*) begin if(time_cnt == Count_1s)

19、 time_cnt_n <= 28h0; else if(mode_num != 2h0) time_cnt_n <= time_cnt; else time_cnt_n <= time_cnt + 28h1; end reg [3:0] sec_L; //second low 4 bit reg [3:0] sec_H; //second high 4 bit wire sec_cb; //second carry bit signal assign sec_cb = (sec_L == 4h9) && (sec_H == 4h5); always @ (

20、posedge sysclk or negedge rst_b) begin if(!rst_b)begin sec_L <= init_sec[3:0]; sec_H <= init_sec[7:4]; end else if((sec_L == 4h9) && (sec_H != 4h5) && (time_cnt == Count_1s)) begin sec_L <= 4h0; sec_H <= sec_H + 4h1; end else if(sec_cb && (time_cnt == Count_1s)) begin sec_L <

21、= 4h0; sec_H <= 4h0; end else if(time_cnt == Count_1s) sec_L <= sec_L + 4h1; end wire min_cb; //minute carry bit signal assign min_cb = (min_L == 4h9) && (min_H == 4h5); always @ (posedge sysclk or negedge rst_b) begin if(!rst_b)begin min_L <= init_min[3:0]; min_H <= init_min[7:

22、4]; end else if((sec_cb) && (min_L !=4h9) && (time_cnt == Count_1s)) min_L <= min_L + 4h1; else if((sec_cb) && (min_L == 4h9) && (min_H != 4h5) && (time_cnt == Count_1s)) begin min_L <= 4h0; min_H <= min_H + 4h1; end else if((sec_cb) && (min_cb) && (time_cnt == Count_1s)) begin

23、 min_L <= 4h0; min_H <= 4h0; end else if((fm) && (mode_num == 2h2) && (key_change_press) && (key_time == 24h0) && (min_L != 4h9)) min_L = min_L + 4h1; else if((fm) && (mode_num == 2h2) &&(key_change_press) && (key_time == 24h0) && (min_L == 4h9) && (min_H !=4h5)) begin min_L = 4h0; mi

24、n_H = min_H + 4h1; end else if((fm) && (mode_num == 2h2) &&(key_change_press) && (key_time == 24h0) && (min_L == 4h9) && (min_H ==4h5)) begin min_L = 4h0; min_H = 4h0; end end always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) begin hour_L <= init_hour[3:0]; hour_H <=

25、init_hour[7:4]; end else if((sec_cb) && (min_cb) && (hour_L != 4h9) && (hour_H != 4h2) && (time_cnt == Count_1s)) hour_L <= hour_L + 4h1; else if((sec_cb) && (min_cb) && (hour_L != 4h3) && (hour_H == 4h2) && (time_cnt == Count_1s)) hour_L <= hour_L + 4h1; else if((sec_cb) && (min_cb) &

26、& (hour_L == 4h9) && (hour_H != 4h2) && (time_cnt == Count_1s)) begin hour_L <= 4h0; hour_H <= hour_H + 4h1; end else if((sec_cb) && (min_cb) && (hour_L == 4h3) && (hour_H == 4h2) && (time_cnt == Count_1s)) begin hour_L <= 4h0; hour_H <= 4h0; end else if((!fm) && (mode_num == 2h2)

27、&&(key_change_press) && (key_time == 24h0) && (hour_L != 4h9) && (hour_H !=4h2)) hour_L <= hour_L + 4h1; else if((!fm) && (mode_num == 2h2) &&(key_change_press) && (key_time == 24h0) && (hour_L != 4h3) && (hour_H ==4h2)) hour_L <= hour_L + 4h1; else if((!fm) && (mode_num == 2h2) &&(key_cha

28、nge_press) && (key_time == 24h0) && (hour_L == 4h9) && (hour_H !=4h2)) begin hour_L <= 4h0; hour_H <= hour_H + 4h1; end else if((!fm) && (mode_num == 2h2) &&(key_change_press) && (key_time == 24h0) && (hour_L == 4h3) && (hour_H ==4h2)) begin hour_L <= 4h0; hour_H <= 4h0; end end

29、 wire buzzer_en; assign buzzer_en = (init_alarm_min == {min_H,min_L}) && (init_alarm_hour == {hour_H,hour_L}); led_tube I_led_tube ( .sysclk (sysclk), .rst_b (rst_b), .scan_time (24h1F090), .data0 ({1h1,sec_L}), .data1 ({1h1,sec_H}), .data2 ({1h1,4hA}), .data3 ({1h1,min[3:0]}), .data4 ({1h1,min[7:4]}), .data5 ({1h1,4hA}), .data6 ({1h1,hour[3:0]}), .data7 ({1h1,hour[7:4]}), .led_data (led_data), .led_sel (led_sel) ); buzzer I_buzzer ( .sysclk (sysclk), .rst_b (rst_b), .buzzer_en (buzzer_en), .buzzer (buzzer) ); endmodule

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!