版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、青 島 農 業(yè) 大 學理學與信息科學學院電子設計自動化及專用集成電路課程設計報告 設 計 題 目 一、設計一個二人搶答器 二、密碼鎖 學生專業(yè)班級 學生姓名(學號) 指 導 教 師 完 成 時 間 實 習(設計)地點 信息樓121 年 11 月 1 日一、課程設計目的和任務 課程設計目的:本次課程設計是在學生學習完數字電路、模擬電路、電子設計自動化的相關課程之后進行的。通過對數字集成電路或模擬集成電路的模擬與仿真等,熟練使用相關軟件設計具有較強功能的電路,提高實際動手,為將來設計大規(guī)模集成電路打下基礎。課程設計任務:一、設計一個二人搶答器。要求:(1) 兩人搶答,先搶有效,用發(fā)光二極管顯示是否
2、搶到答題權。(2) 每人兩位計分顯示,打錯不加分,答對可加10、20、30分。(3) 每題結束后,裁判按復位,重新搶答。(4) 累積加分,裁判可隨時清除。二、密碼鎖設計四位十進制密碼鎖,輸入密碼正確,綠燈亮,開鎖;不正確,紅燈亮,不能開鎖。密碼可由用戶自行設置。二、分析與設計1、設計任務分析(1)二人搶答器用Verilog硬件描述語言設計搶答器,實現:1、二人通過按鍵搶答,最先按下按鍵的人搶答成功,此后其他人搶答無效。2、每次只有一人可獲得搶答資格,一次搶答完后主持人通過復位按鍵復位,選手再從新搶答。3、有從新開始游戲按鍵,游戲從新開始時每位選手初始分為零分,答對可選擇加10分、20分,30分
3、,最高九十分。4、選手搶答成功時其對應的分數顯示。(2)密碼鎖1、第一個數字控制鍵用來進行密碼的輸入2、第二個按鍵控制數字位數的移動及調用密碼判斷程序。當確認后如果顯示數據與預置密碼相同,則LED 亮;如不相等,則無反應。按下復位鍵,計數等均復位2、設計方案論證詳細設計(1)搶答器的主要利用D觸發(fā)器的反饋,當檢測到第一個上升沿時將按鍵(未按下時接低電平)接入的與門鎖住,以保證與門只有一個上升沿輸出,從而實現“最先按下按鍵的人搶答成功,此后其他人搶答無效”。在與門輸出上升沿的同時檢測按鍵,以確定是哪位選手搶答,用寄存器存下搶答選手的信息,最后確定哪個led燈亮以及那位選手對應的分數閃爍。將各模塊
4、代碼寫好并測試后,在主模塊中調用并分配引腳,引腳分配好后,從新編譯、下載就可實驗了。分別驗證上述的各種功能,看是否達到預期的效果。(2)根據密碼輸入信號控制I/0 口的輸出,第一個按鍵控制數字的遞加,第二個按鍵控制數字位數的移動及調用密碼判斷程序。當確認后如果顯示數據與預置密碼相同,則LED 亮;如不相等,則無反應。按下復位鍵,計數等均復位。系統流程如下:3、詳細設計(1)二人搶答器。頂層模塊部分在在quartusII下的仿真原理圖如下所示:搶答部分的仿真圖:加分模塊部分(對應snatch模塊)在quartusII下的仿真原理圖如下所示:數碼管顯示模塊部分(對應snatch模塊)在quartu
5、sII下的仿真原理圖如下所示:(2)密碼鎖密碼鎖模塊部分(對應snatch模塊)在quartusII下的仿真原理圖如下所示:4、源代碼分析(1)二人搶答器代碼module top(reset,key,score,clr,led,opin);/頂層模塊部分input reset;/開始搶答按鈕input1:0 key;/雙人搶答按鍵input2:0 score;/加分按鈕input clr;/清零按鈕output1:0 led;/顯示燈output31:0 opin;/數碼管引腳控制wire1:0 m;wire7:0 q;snatch snatch(reset,key,led,m);/調用搶答模
6、塊store store(score,clr,m,q);/調用加分模塊deled deled(q,opin);/調用顯示模塊endmodulemodule snatch(reset,key,led,m);/搶答模塊部分input reset;input1:0 key;output1:0 led;output1:0 m;reg q;reg1:0 s;wire out=key0|key1;wire clk=(!q)&out;assign m=s;always(posedge clk or posedge reset)/判斷是否清零if(reset)beginq=1b0;endelse q=1b1;
7、always(posedge clk)/當開始搶答時,判斷是否有人搶答,并將搶答的選手記錄下來case(key)2b01:s=2b01;2b10:s=2b10;default:s=2b?;endcaseassign led=s;/對應選手的燈亮endmodulemodule store(score,clr,s,q);/加分模塊input clr;input2:0 score;input1:0 s;output7:0 q;reg7:0 q;wire clk=score0|score1|score2;/判斷是否進行加分always(posedge clr or posedge clk)/判斷是清零
8、還是加分beginif(clr) q=8h00;elsebegincase(s)/判斷那位選手加分2b01:begin if(q3:04h9)begin if(score=3b001)q3:0=q3:0+4b0001;/選手一加10分else if(score=3b010)q3:0=q3:0+4b0010; /選手一加20分else q3:0=q3:0+4b0011; /選手一加30分end end2b10:begin if(q7:44h9)begin if(score=2b001)q7:4=q7:4+4b0001; /選手二加10分else if(score=2b010)q7:4=q7:4+
9、4b0010; /選手二加20分else q7:4=q7:4+4b0011; /選手二加30分end endendcaseendendendmodulemodule deled(pin,opin);/數碼管顯示模塊input7:0 pin;output31:0 opin;reg31:0 opin;always(pin0 or pin1 or pin2 or pin3 or pin4 or pin5 or pin6 or pin7)/判斷是否有加分顯示部分begincase(pin3:0)/判斷一號選手的分數4b0000:opin15:0=16h3f3f;/顯示零分4b0001:opin15:0
10、=16h063f; /顯示十分4b0010:opin15:0=16h5b3f; /顯示二十分4b0011:opin15:0=16h4f3f; /顯示三十分4b0100:opin15:0=16h663f; /顯示四十分4b0101:opin15:0=16h6d3f; /顯示五十分4b0110:opin15:0=16h7d3f; /顯示六十分4b0111:opin15:0=16h073f; /顯示七十分4b1000:opin15:0=16h7f3f; /顯示八十分4b1001:opin15:0=16h6f3f; /顯示九十分endcasecase(pin7:4)/判斷二號選手的分數4b0000:o
11、pin31:16=16h3f3f; 4b0001:opin31:16=16h063f;4b0010:opin31:16=16h5b3f;4b0011:opin31:16=16h4f3f;4b0100:opin31:16=16h663f;4b0101:opin31:16=16h6d3f;4b0110:opin31:16=16h7d3f;4b0111:opin31:16=16h073f;4b1000:opin31:16=16h7f3f;4b1001:opin31:16=16h6f3f;endcaseendendmodule(2)密碼鎖module KeyPress(sysclk,reset,key
12、in,data_out,LED,YN);input sysclk; /系統時鐘reg clk; /分頻1reg clk2; /分頻2input reset; /復位input 2:0 keyin; /三位輸入output 7:0 data_out; /八位數碼管輸入reg 7:0 data_out;output YN; /判斷密碼正確與否的Led燈reg YN;reg 2:0 keyAA 2:0 ; /輸入緩沖,防抖reg 25:0 count; /分頻1計數?reg 25:0 count2; /分頻2計數reg 3:0 count3; /分頻2計數2reg 7:0 countA; /數碼管顯
13、示延遲計數reg 3:0 key; /輸入計數器reg 3:0 num; /數字計算reg 3:0 numSAT3:0; /數字輸出reg 3:0 movX; /Led燈選擇計數和判斷密碼reg 3:0 LEDtem; /led燈選擇緩沖output 3:0 LED; /led燈選擇reg 3:0 LED; reg enterX; /未定義(本來用作可以自定密碼的)/分頻1always(posedge sysclk or negedge reset) if (!reset) begin count = 26B0; end else if (count=120000)begincount= 26
14、B0;clk = clk;end elsebegin count=count+26B1;end/分頻2always(posedge sysclk or negedge reset) if (!reset) begin count2 = 26B0; count3 = 4B0000; end else if (count2=1200000) begin count2 = 26B0; count3 = count3+ 4B0001;if (count3=4B0011)beginclk2= clk2;count3 = 4B0000;end endelsebegin count2=count2+26B1
15、;end/輸入always(posedge clk or negedge reset) if (!reset)beginkeyAA0 =3B111;keyAA1 =3B111;keyAA2 =3B111;endelsebeginkeyAA0 = keyin;keyAA1 = keyAA0;end/判斷按鍵并且比較,賦值,主程序always(posedge clk2 or negedge reset)beginif (!reset)beginmovX= 4B0000;enterX= 1B0;numSAT0 = 4B0;numSAT0 = 4B0;numSAT0 = 4B0;numSAT0 = 4
16、B0;YN = 1B1;endelse if (keyin=keyAA1)beginif(keyin=3B110)key=4B0001;else if (keyin=3B101)key=4B0010;else if (keyin=3B011)key=4B0011;/按鍵1,數值遞增,賦值if (key=4B0001)begin #20; num = num+4B1;if(movX=4B0000)numSAT0 = num;else if (movX=4B0001)numSAT1 = num;else if (movX=4B0010)numSAT2 = num;else if (movX=4B0
17、011)numSAT3 = num; if (num=4B1010)num = 4B0;key =4B0011;end/按鍵2,移位if (key=4B0010)begin #30 movX =movX+4B0001; if(movX=4B0100) begin if(numSAT0=1) if(numSAT1=2) if(numSAT2=3) if(numSAT3=4)YN =1B0;elseYN =1B1;elseYN =1B1;elseYN =1B1;elseYN =1B1;end if (movX=4B0101)movX = 4B0;key=4B0011;end/按鍵3,未定義if(k
18、ey=4B0011)beginenterX =1B0;endendend/根據數字,輸出到數碼管always(posedge clk or negedge reset)beginif (!reset)begindata_out = 8B0011_1111;endelsebegincountA= countA+8B1;if(countA=8B0000_0010)beginLED =4B1110;/高電平有效case(numSAT0)4B0000: data_out=8B0011_1111;/04B0001: data_out=8B0000_0110;/14B0010: data_out=8B01
19、01_1011;/24B0011: data_out=8B0100_1111;/34B0100: data_out=8B0110_0110;/44B0101: data_out=8B0110_1101;/54B0110: data_out=8B0111_1101;/64B0111: data_out=8B0000_0111;/74B1000: data_out=8B0111_1111;/84B1001: data_out=8B0110_1111;/9default: data_out=8B0011_1111;/0endcaseendelse if (countA=8B0000_0100)beg
20、inLED =4B1101;case(numSAT1)4B0000: data_out=8B0011_1111;/04B0001: data_out=8B0000_0110;/14B0010: data_out=8B0101_1011;/24B0011: data_out=8B0100_1111;/34B0100: data_out=8B0110_0110;/44B0101: data_out=8B0110_1101;/54B0110: data_out=8B0111_1101;/64B0111: data_out=8B0000_0111;/74B1000: data_out=8B0111_1
21、111;/84B1001: data_out=8B0110_1111;/9default: data_out=8B0011_1111;/0endcaseendelse if (countA=8B0000_0110)beginLED =4B1011;case(numSAT2)4B0000: data_out=8B0011_1111;/04B0001: data_out=8B0000_0110;/14B0010: data_out=8B0101_1011;/24B0011: data_out=8B0100_1111;/34B0100: data_out=8B0110_0110;/44B0101:
22、data_out=8B0110_1101;/54B0110: data_out=8B0111_1101;/64B0111: data_out=8B0000_0111;/74B1000: data_out=8B0111_1111;/84B1001: data_out=8B0110_1111;/9default: data_out=8B0011_1111;/0endcaseendelse if (countA=8B0000_1000)beginLED =4B0111;case(numSAT3)4B0000: data_out=8B0011_1111;/04B0001: data_out=8B0000_0110;/14B0010: data_out=8B0101_1011;/24B0011: data_out=8B0100_1111;/34B0100: data_out=8B0110_0110;/44B0101: data_out=8B0110_1101;/54B0110: data_out=8B0111_1101;/64B0111: data_out=8B0000_0111;/74B1000: data_out=8B0111_1111;/84B1001: data_out=8B0110_1111;/9default: data
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度關于解除企業(yè)合規(guī)審查律師代理協議書2篇
- 二零二五年度高科技溫室大棚出租服務協議3篇
- 2025年度文化公司股份轉讓協議書范本3篇
- 二零二五年度租賃合同租賃物租賃期滿續(xù)租條件協議范本
- 二零二五年度2025年商業(yè)地產租賃管理服務合同3篇
- 2025年度員工股權激勵與公司員工福利待遇提升的專項合同3篇
- 二零二五年度太陽能光伏系統定期檢修與維修合同3篇
- 2025年度養(yǎng)殖場地承包與農業(yè)廢棄物資源化利用合作協議3篇
- 二零二五年度競業(yè)禁止協議期限及競業(yè)限制解除程序3篇
- 二零二五年度回遷房更名與教育資源共享合同3篇
- 教師工作職責培訓課件建立良好的教師與學生關系
- 品管部年度工作總結
- 胃腸外科病人圍手術期營養(yǎng)管理專家共識護理課件
- 2024屆高考語文復習:小說敘述特色專題復習 課件
- 四川省普通高中2024屆高三上學期學業(yè)水平考試數學試題(解析版)
- 石油鉆井機械設備故障預防與維護保養(yǎng)范本
- 浙江省溫州市2023-2024學年七年級上學期期末數學試卷(含答案)
- 【全國最火爆的團建項目】旱地冰壺(拓展訓練服務綜合供應平臺)
- 北京市西城區(qū)2023-2024學年五年級上學期期末數學試卷
- 工程結算課件
- CNAS-CL02-A001:2023 醫(yī)學實驗室質量和能力認可準則的應用要求
評論
0/150
提交評論