實驗綜合步驟_第1頁
實驗綜合步驟_第2頁
實驗綜合步驟_第3頁
實驗綜合步驟_第4頁
實驗綜合步驟_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

實驗八4X4keyboard實驗一、實驗?zāi)康模?)學(xué)習(xí)QuartusⅡ9.0的基本操作。(2)熟悉教學(xué)實驗箱的使用。(3)初步掌握Verilog語言程序的設(shè)計輸入,編譯,仿真和調(diào)試過程。二、實驗原理利用行列式掃描原理編寫Verilog語言程序?qū)?X4鍵盤進行掃描,并將掃描值送LED顯示。三、實驗步驟1、建立工程運行QuatrusII軟件,建立工程(key.qpf)。2、建立文本文件建立文本文件。File→New,選擇VerilogHDLFile。輸入下述程序:modulekeyboard(clk,row,col,key);inputclk; //50MHZ時鐘輸入input[3:0]col; //列output[3:0]row; //行output[3:0]key; //按鍵值reg[3:0]row;reg[3:0]key;reg[5:0]count; //時鐘計數(shù)器reg[2:0]state; //狀態(tài)標(biāo)志regkey_flag; //按鍵標(biāo)志位regclk_500khz; //500KHZ時鐘信號reg[3:0]row_reg; //寄存掃描行值reg[3:0]col_reg; //寄存掃描列值always@(posedgeclk) //500KHZ掃描時鐘信號if(count>=50)beginclk_500khz<=~clk_500khz;count<=0;endelsecount<=count+1;always@(posedgeclk_500khz)case(state)0:begin key_flag<=1'b0; //清按鍵標(biāo)志row[3:0]<=4'b0000; //行線全部拉低,確定有沒有按鍵被按下if(col[3:0]!=4'b1111) //有鍵按下(列線有被拉低,數(shù)據(jù)出現(xiàn)不全1) begin row[3:0]<=4'b0111; //掃描第0行(第0行線拉低) state<=1;//轉(zhuǎn)到第1狀態(tài),掃描第0行 end elsestate<=0;//沒有鍵按下,返回case0,重新掃描end1:begin if(col[3:0]!=4'b1111)//第0行有鍵按下(列線有被拉低,數(shù)據(jù)出現(xiàn)不全1) state<=5;//轉(zhuǎn)到第5狀態(tài),保存行列信息 else begin row[3:0]<=4'b1011;//掃描第1行(第1行線拉低) state<=2;//轉(zhuǎn)到第2狀態(tài),掃描第1行 endend2:begin if(col[3:0]!=4'b1111)//第1行有鍵按下(列線有被拉低,數(shù)據(jù)出現(xiàn)不全1) state<=5;//轉(zhuǎn)到第5狀態(tài),保存行列信息 else begin row[3:0]<=4'b1101;//掃描第2行(第2行線拉低) state<=3;//轉(zhuǎn)到第3狀態(tài),掃描第2行 endend3:begin if(col[3:0]!=4'b1111)//第2行有鍵按下(列線有被拉低,數(shù)據(jù)出現(xiàn)不全1) state<=5;//轉(zhuǎn)到第5狀態(tài),保存行列信息 else begin row[3:0]<=4'b1110;//掃描第3行(第3行線拉低) state<=4;//轉(zhuǎn)到第4狀態(tài),掃描第3行 endend4:begin if(col[3:0]!=4'b1111)//第3行有鍵按下(列線有被拉低,數(shù)據(jù)出現(xiàn)不全1) state<=5;//轉(zhuǎn)到第5狀態(tài),保存行列信息 else state<=0;//沒有鍵按下,返回case0,重新掃描end5:begin if(col[3:0]!=4'b1111)//(列線有被拉低,數(shù)據(jù)出現(xiàn)不全1,說明按鍵沒松開) begin row_reg<=row;//保存掃描列值 col_reg<=col;//保存掃描行值 key_flag<=1'b1;//有鍵按下狀態(tài)標(biāo)志 state<=5;//返回狀態(tài)5。(等待按鍵松開) end else state<=0;endendcasealways@(clk_500khzorrow_regorcol_reg)beginif(key_flag==1'b1) begin case({row_reg,col_reg})//行,列 8'b0111_1110:key<=4'h0; 8'b0111_1101:key<=4'h1; 8'b0111_1011:key<=4'h2; 8'b0111_0111:key<=4'h3; 8'b1110_1110:key<=4'h4; 8'b1110_1101:key<=4'h5; 8'b1110_1011:key<=4'h6; 8'b1110_0111:key<=4'h7; 8'b1101_1110:key<=4'h8; 8'b1101_1101:key<=4'h9; 8'b1101_1011:key<=4'hA; 8'b1101_0111:key<=4'hB; 8'b1011_1110:key<=4'hC; 8'b1011_1101:key<=4'hD; 8'b1011_1011:key<=4'hE; 8'b1011_0111:key<=4'hF; endcase endendendmodule將程序保存為keyboard.v。3、將設(shè)計程序文件keyboard.v生成元件符號。工程窗口切換到文件列表欄,右擊keyboard.v文件在彈出菜單中選擇:CreateSymsbolFileforCurrentFile,如下圖所示:也可以按主工具欄上的“File”→“Create/Update”→“CreateSymsbolFileforCurrentFile”進行操作。4、重復(fù)步驟2,3建立display.v文件和display元件符號。display.v輸入下述程序:moduledisplay(inputwire[3:0]din,outputreg[7:0]dout,outputwire[7:0]ledsel);assignledsel=8'b11111110;always@(din)begincase(din)4'b0000:dout=8'b00111111;4'b0001:dout=8'b00000110;4'b0010:dout=8'b01011011;4'b0011:dout=8'b01001111;4'b0100:dout=8'b01100110;4'b0101:dout=8'b01101101;4'b0110:dout=8'b01111101;4'b0111:dout=8'b00000111;4'b1000:dout=8'b01111111;4'b1001:dout=8'b01101111;4'b1010:dout=8'b01110111;4'b1011:dout=8'b01111100;4'b1100:dout=8'b00111001;4'b1101:dout=8'b01011110;4'b1110:dout=8'b01111001;4'b1111:dout=8'b01110001;default:dout=8'b00000000;endcaseendendmodule5、建立key.bdf文本文件建立.bdf文本文件。File→New,選擇BlockDiagram/SchematlicFile。點擊如下圖紅色標(biāo)示處的SymbolTool按

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論