




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
么本實(shí)驗(yàn)我們就使用FPGA來(lái)驅(qū)動(dòng)一個(gè)采用PS2接口的PC機(jī)鍵盤,這個(gè)鍵盤可以用來(lái)擴(kuò)展我們FPGA的輸入系統(tǒng),以使我們能夠方便的輸入 本實(shí)驗(yàn)的內(nèi)容是學(xué)習(xí)PS2鍵盤的,并將的結(jié)果通過(guò)數(shù)碼管顯示碼)時(shí),蜂鳴器會(huì)發(fā)出短暫的響聲,及時(shí)地提醒操作者FPGA到的按鍵PS2鍵盤的內(nèi)部結(jié)構(gòu)我們不需要過(guò)多的去關(guān)注,我們只需要關(guān)心其接口協(xié)議,能夠正確的其發(fā)送過(guò)來(lái)的按鍵信息即可,至于到的按鍵信息可以作何用途,可謂是見(jiàn)仁見(jiàn)智,這里不做過(guò)多的介紹。PS2協(xié)議的簡(jiǎn)單描PS2協(xié)議總共有兩根線組成,一根時(shí)鐘線和一根數(shù)據(jù)線,這里采用PS2的鍵盤成為從機(jī),將控制和PS2協(xié)議的一方稱為主機(jī),生活中最產(chǎn)生的。PS2協(xié)議發(fā)送一個(gè)字節(jié)數(shù)據(jù)共有11位,分別為:1Bit8Bit數(shù)據(jù)位,低位1Bit1Bit00P11PS2相信熟悉UART協(xié)議的同學(xué)一看便知,PS2協(xié)議和UART協(xié)議非常相似,那 ,將其中的8Bit數(shù)1“HOME”……節(jié),他們的第一個(gè)字節(jié)是F0H,第二個(gè)字節(jié)則是這個(gè)鍵的通碼。(BREAK如果我們按下的是”END”、”PAGEUP“等擴(kuò)展按鍵時(shí),會(huì)怎么樣呢?這里圖 全局復(fù)位(低電平有效PS2PS224位,每四位10位接到了Key_Value10展碼)01表只要成功到一次按鍵動(dòng)作(按下、程序邊沿檢測(cè)電regalways@(posedgeClkornegedgeif(!Rst_n)beginPS2_Clk_Tmp0<=1'b0;PS2_Clk_Tmp1<=1'b0;PS2_Clk_Tmp2<=1'b0;PS2_Clk_Tmp3<=elsePS2_Clk_Tmp0<=PS2_Clk;PS2_Clk_Tmp1<=PS2_Clk_Tmp0;PS2_Clk_Tmp2<=PS2_Clk_Tmp1;PS2_Clk_Tmp3<= &用我們的PS2時(shí)鐘下降沿的標(biāo)志信號(hào)來(lái)使能我們的計(jì)數(shù)器自加,當(dāng)計(jì)數(shù)器加到11后,表示一個(gè)數(shù)據(jù)包接收完成,將計(jì)數(shù)器,等待下一個(gè)下降沿的到來(lái),程序PS2時(shí)鐘下降沿計(jì)數(shù)always@(posedgeClkornegedgeRst_n)Cnt1<=elseif(Cnt1==4'd11)Cnt1<=4'd0;elseCnt1<=Cnt1+加1的操作并沒(méi)有馬上執(zhí)行,而是會(huì)在下一個(gè)系統(tǒng)時(shí)鐘上升沿到來(lái)之時(shí)才會(huì)改變。因此,為了保證我們所使用的cnt1的數(shù)據(jù)已經(jīng)是的,我們需要在cnt1程序寄存器延0101always@(posedgeClkornegedgeData_tmp<=elseif(nedge_PS2_Clk_Shift)begin4'd2:Data_tmp[0]<=PS2_Din;4'd3:Data_tmp[1]<=PS2_Din;4'd4:Data_tmp[2]<=PS2_Din;4'd5:Data_tmp[3]<=PS2_Din;4'd6:Data_tmp[4]<=PS2_Din;4'd7:Data_tmp[5]<=PS2_Din;4'd8:Data_tmp[6]<=PS2_Din;4'd9:Data_tmp[7]<=PS2_Din;default:Data_tmp<=Data_tmp<=PS2always@(posedgeClk)nedge_PS2_Clk_Shift<=程序PS2鍵值always@(posedgeClkornegedgeif(!Rst_n)beginBreak_r<=1'b0;Key_Valve<=10'd0;Key_Flag<=1'b0;Long_Code_r<=1'b0;elseif(Cnt1==4'd11)if(Data_tmp==Long_Code_r<=elseif(Data_tmp8'hF0)/*判斷是否為斷碼Break_r<=elseKey_Flag<=Long_Code_r<=1'b0;Break_r<=1'b0;elseKey_Valve<=Key_Flag<=Break_r<=Long_Code_r<=這里,我們使用了兩個(gè)標(biāo)志寄存器,當(dāng)數(shù)據(jù)完成后(即cnt1=11)就對(duì)存器的狀態(tài)輸出,并給出按鍵檢測(cè)成功標(biāo)志(Key_Flag置1)本模塊為 工程的頂層模塊,負(fù)責(zé)將 解碼模DI_EDDRVEmodule/*systeminputClk;/*system[[wirewire(2)(2)PS2模塊(BeepDIG_LED_DRIVEDIG_LED_DRIVE.v0表示普通按001001module/*systeminputinput/*systeminputinputoutputreg regalways@(posedgeClkornegedgeRst_n)if(!Rst_n)beginPS2_Clk_Tmp0<=1'b0;PS2_Clk_Tmp1<=1'b0;PS2_Clk_Tmp2<=1'b0;PS2_Clk_Tmp3<=elsePS2_Clk_Tmp0<=PS2_Clk;PS2_Clk_Tmp1<=PS2_Clk_Tmp0;PS2_Clk_Tmp2<=PS2_Clk_Tmp3<=PS2_Clk_Tmp2; assignnedge_PS2_Clk=!PS2_Clk_Tmp0&!PS2_Clk_Tmp1PS2_Clk_Tmp2& always@(posedgeClk)nedge_PS2_Clk_Shift<=outputregKey_Valve;/*結(jié)果,其中最為通/斷碼識(shí)別位,0為通碼,1為斷碼*/@(posedgeClkornegedgeCnt1<=elseif(Cnt1==Cnt1<=else Cnt1<=Cnt1+058/* 8位數(shù)據(jù)位 always@(posedgeClkornegedgeRst_n) Data_tmp<=elseif(nedge_PS2_Clk_Shift)4'd2:Data_tmp[0]<=4'd3:Data_tmp[1]<=4'd4:Data_tmp[2]<=4'd5:Data_tmp[3]<=4'd6:Data_tmp[4]<=4'd7:Data_tmp[5]<=4'd8:Data_tmp[6]<=4'd9:Data_tmp[7]<=default:Data_tmp<= Data_tmp<=Data_tmp; always@(posedgeClkornegedgeRst_n) if(!Rst_n)beginBreak_r<=Key_Valve<=Key_Flag<=Long_Code_r<=1'b0; elseif(Cnt1==4'd11)if(Data_tmp Long_Code_r<=1'b1; /*將長(zhǎng)碼標(biāo)志置1*/ elseif(Data_tmp==8'hF0)/*判斷是否為斷碼*/ Break_r<=1'b1; /*將斷碼標(biāo)志置1*/ elsebegin Key_Valve<={Break_r,Long_Code_r,Data_tmp};/*將長(zhǎng)碼標(biāo)志、斷 Key_Flag<= Long_Code_r1'b0 Break_r<=1'b0; elseKey_Valve<=Key_Flag<=Break_r<=Long_Code_r<=104數(shù)碼管顯示驅(qū)動(dòng)模塊(文件名moduleinputinputparametersystem_clk=//localparamcnt1_MAX24;/*仿真的時(shí)候使用,板級(jí)驗(yàn)證時(shí)請(qǐng)注釋掉reg[14:0]regregelse elsealways@(posedgeClkornegedge always@(posedgeclk_1Kornegedgeelseif(sel_r== default default:seg_r=8'hff;assignDig_Led_seg=seg_r;assignDig_Led_sel=蜂鳴器控制模塊(文件名01module01module Rst_n,// En,狀態(tài)機(jī)跳轉(zhuǎn)使能信號(hào) inputinput reg[1:0]state; localparamCNT_TOP=5_000_000;//usedinClk=50MlocalparamIDEL=localparamBUSY=2'b10;always@(posedgeClkornegedgestate<=counter<=always@(posedgeClkornegedgeRst_n)Beep<=1'b1;Beep<=1'b1;Beep<=assignbeep_en=(counter[14]==1)?PS2模塊(文件名在下板之前,我們需要對(duì)設(shè)計(jì)進(jìn)行,確定邏輯正確無(wú)誤—編寫Testbench來(lái)模擬鍵盤發(fā)送數(shù)據(jù),通過(guò)觀察鍵盤的輸出來(lái)驗(yàn)證該模塊的正確性,關(guān)于模擬鍵盤發(fā)送數(shù)據(jù),在一份介紹PS2協(xié)議的手冊(cè)中有如下描述:No――1No――放棄(跳到從主機(jī)字節(jié)的程序中))放Clock線,形成一個(gè)脈沖;20usClock線是否為高電平?No――1No――1001001`timescale003module005regClk;/*systemclock*/006regRst_n;/*復(fù)位信號(hào)*/008regPS2_Din;/*PS2鍵盤數(shù)據(jù)線009regPS2_Clk;/*PS2鍵盤時(shí)鐘線011wire 012wire[9:0]021023initialClk=Rst_n=PS2_Din=PS2_Clk=Rst_n=1;/*Z/*X /*O /*P /*E /*N055
/*"INSERT"/*"HOME"/*"PAGEUP"/*"DELETE"/*"END"/*"PAGEDOWN"057
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- app地推合同范本
- 加盟采購(gòu)合同范本
- 單位服裝購(gòu)銷合同范例
- 合同變更 新合同范本
- 企業(yè)經(jīng)營(yíng)權(quán)外包合同范本
- 去污設(shè)備采購(gòu)合同范本
- 不含稅金合同范本
- 中介與賣房合同范本
- 個(gè)體小店過(guò)戶合同范本
- 廠房吊頂裝修合同范本
- 經(jīng)濟(jì)數(shù)學(xué)(高等職業(yè))全套教學(xué)課件
- 口腔種植學(xué)試題
- 網(wǎng)絡(luò)傳播概論(彭蘭第5版) 課件全套 第1-8章 網(wǎng)絡(luò)媒介的演變-網(wǎng)絡(luò)傳播中的“數(shù)字鴻溝”
- 口服止痛藥物健康宣教
- 超載限位器調(diào)試報(bào)告
- 智能微電網(wǎng)應(yīng)用技術(shù)
- 被執(zhí)行人生活費(fèi)申請(qǐng)書范文
- 車間維修現(xiàn)場(chǎng)安全操作規(guī)程范文
- 全面質(zhì)量管理體系條款對(duì)照表
- 高職工商企業(yè)管理專業(yè)人才培養(yǎng)方案
- 2024年中國(guó)建筑集團(tuán)招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論