国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

小梅哥和你一起深入學(xué)習(xí)FPGA之PS2鍵盤驅(qū)動(dòng)

發(fā)布時(shí)間:2016-1-28 10:01    發(fā)布者:designapp
關(guān)鍵詞: FPGA , PS2
  在我們的電子系統(tǒng)中,當(dāng)需要用到大量的按鍵輸入時(shí),普通的獨(dú)立按鍵和矩陣鍵盤已經(jīng)無(wú)法滿足我們的輸入需求,這個(gè)時(shí)候,我們需要使用一種功能更加強(qiáng)大的鍵盤,來幫助我們輸入更多的信息。在pc機(jī)上,我們經(jīng)常使用104鍵的鍵盤,這種鍵盤與pc機(jī)的接口,可分為USB接口和PS2接口,我們FPGA要實(shí)現(xiàn)USB接口比較困難,因?yàn)閁SB的接口線路,不是標(biāo)準(zhǔn)的TTL電平,而PS2接口,則使用標(biāo)準(zhǔn)的TTL電平,那么我們今天就使用FPGA來解碼驅(qū)動(dòng)一個(gè)采用PS2接口的pc機(jī)鍵盤,用這個(gè)鍵盤來擴(kuò)展我們FPGA的輸入系統(tǒng),以使我們能夠方便的輸入更多的信息。
  一、 實(shí)驗(yàn)?zāi)康?/strong>
  實(shí)現(xiàn)采用PS2協(xié)議的PC機(jī)鍵盤的解碼,最終將PS2鍵盤作為FPGA系統(tǒng)的一個(gè)標(biāo)準(zhǔn)輸入設(shè)備。
  二、 實(shí)驗(yàn)原理
  PS2鍵盤的內(nèi)部結(jié)構(gòu)我們不需要過多的去關(guān)注,我們只需要關(guān)心其接口協(xié)議,正確的解碼其發(fā)送過來的按鍵信息即可,至于解碼到的按鍵信息該怎么處理,不同的應(yīng)用有不同的處理方式,這里就不做過多的介紹。PS2協(xié)議的簡(jiǎn)單描述如下:
  PS2協(xié)議總共由兩根線組成,一根時(shí)鐘線和一根數(shù)據(jù)線。這里我們將采用PS2協(xié)議的鍵盤稱為從機(jī),將控制和解碼PS2協(xié)議的一方成為主機(jī),生活中最常見的主機(jī)便是我們的PC機(jī)。PS2總線協(xié)議的兩根線中,時(shí)鐘線傳輸時(shí)鐘信號(hào),該時(shí)鐘信號(hào)始終由從機(jī),即鍵盤產(chǎn)生。PS2協(xié)議發(fā)送一個(gè)字節(jié)的數(shù)據(jù)總共有11位,分別為
  1位起始位
  8位數(shù)據(jù)位
  1位校驗(yàn)位
  1位停止位
  PS2從機(jī)發(fā)送一個(gè)完整數(shù)據(jù)包的時(shí)序圖如下所示:
  


  圖2-1 PS2從機(jī)發(fā)送數(shù)據(jù)時(shí)序圖
  相信熟悉UART協(xié)議的同學(xué)一眼就能看出來,PS2協(xié)議和我們最熟悉的UART通信協(xié)議非常相似,那么我們的工作就簡(jiǎn)單了,既然鍵盤按照這個(gè)協(xié)議發(fā)送數(shù)據(jù),我們FPGA作為主機(jī),只需要正確的實(shí)現(xiàn)該協(xié)議的解碼,將其中的8位數(shù)據(jù)位讀取出來即可。由圖可知,數(shù)據(jù)在時(shí)鐘的下降沿處是穩(wěn)定的,因此我們只需要去捕獲時(shí)鐘信號(hào)的下降沿,并在檢測(cè)到這個(gè)下降沿時(shí)去讀取數(shù)據(jù)線上的電平,就能夠正確的讀到數(shù)據(jù)。
  以上是PS2協(xié)議中從機(jī)到主機(jī)的一個(gè)通訊過程,實(shí)際在PS2協(xié)議中,包含了從機(jī)到主機(jī)和主機(jī)到從機(jī)的通信時(shí)序,只是在我們進(jìn)行PS2鍵盤的解碼時(shí),可以不需要進(jìn)行主機(jī)到從機(jī)的通信,因此這部分內(nèi)容小梅哥就不在這里講解了,如果大家以后要解碼PS2鼠標(biāo)的話,就會(huì)用到主機(jī)到從機(jī)的通信了。
  上面只是簡(jiǎn)單的介紹了PS2從機(jī)到主機(jī)的通信協(xié)議,我們知道了鍵盤是一個(gè)字節(jié)一個(gè)字節(jié)的往主機(jī)發(fā)送數(shù)據(jù)的,但是,每個(gè)字節(jié)代表了什么內(nèi)容呢,我們還需要對(duì)照鍵盤編碼對(duì)照表來查看。
  


  鍵盤掃描碼分為第一套掃描碼、第二套掃描碼和第三套掃描碼,我們?nèi)粘I钪谐R姷膾呙璐a絕大多數(shù)采用第二套掃描碼,因此這里小梅哥就只附上第二套掃描碼的內(nèi)容。
  實(shí)際一個(gè)按鍵由按下到釋放時(shí)鍵盤將按照如下的規(guī)定往主機(jī)發(fā)送數(shù)據(jù):
  只要一個(gè)鍵被按下,這個(gè)鍵的通碼(MAKE)就被發(fā)送到計(jì)算機(jī)。通碼只表示鍵盤上的一個(gè)按鍵,它不表示印刷在按鍵上的那個(gè)字符。 這就意味著在通碼和ASCII碼之間沒有已定義好的關(guān)聯(lián), 直到主機(jī)把掃描碼翻譯成一個(gè)字符或命令。
  雖然多數(shù)第二套通碼都只有一個(gè)字節(jié)寬,但也有少數(shù)“ 擴(kuò)展按鍵”的通碼是兩字節(jié)或四字節(jié)寬,這類的通碼第一個(gè)字節(jié)總是為E0H(如“END”、“HOME”……)。正如鍵按下通碼就被發(fā)往計(jì)算機(jī)一樣, 只要鍵一釋放, 斷碼就會(huì)被發(fā)送。每個(gè)鍵都有它自己唯一的通碼,它們也都有唯一的斷碼。 幸運(yùn)的是,你不用總是通過查表來找出按鍵的斷碼―― 在通碼和斷碼之間存在著必然的聯(lián)系。 多數(shù)第二套斷碼有兩字節(jié)長(zhǎng),它們的第一個(gè)字節(jié)是F0H, 第二個(gè)字節(jié)是這個(gè)鍵的通碼。
  例如,當(dāng)我們按下鍵盤上的“A”鍵時(shí),鍵盤就會(huì)往主機(jī)發(fā)送”A”鍵對(duì)應(yīng)的通碼(MAKE)”1C”,如果你一直按下這個(gè)按鍵不釋放,那么在一個(gè)短暫的延時(shí)之后,鍵盤會(huì)再次開始,以一定的速率持續(xù)向主機(jī)發(fā)送”1C“,直到該按鍵被釋放。在該按鍵被釋放后,鍵盤將會(huì)向主機(jī)發(fā)送“A ”的斷碼(Break),即首先發(fā)送“F0”,然后下一個(gè)字節(jié)再馬上發(fā)送“1C”。
  如果我們按下的是“END”、“PAGE UP”等擴(kuò)展按鍵時(shí),會(huì)怎么樣呢?這里,以”END”鍵舉例。當(dāng)”END“鍵被按下后,鍵盤會(huì)首先向主機(jī)發(fā)送“E0”,發(fā)送完成后,又會(huì)接著發(fā)送下一個(gè)字節(jié)“69”,釋放時(shí)也與前面的普通按鍵類似,先發(fā)送“E0”,然后發(fā)送“F0”,最后再發(fā)送“69”。
  由上述分析可知,我們FPGA在解碼到一次數(shù)據(jù)后,還需要對(duì)這個(gè)數(shù)據(jù)進(jìn)行分析判斷,判斷該數(shù)據(jù)是否為斷碼標(biāo)志“F0”以及擴(kuò)展碼標(biāo)志”E0“。
  三、 硬件設(shè)計(jì)
  PS2電路結(jié)構(gòu)簡(jiǎn)單,因此這里就略去。
  四、 架構(gòu)設(shè)計(jì)
  本實(shí)驗(yàn)我們進(jìn)行PS2鍵盤的解碼實(shí)驗(yàn),并將解碼到的結(jié)果顯示在數(shù)碼管上,同時(shí),為了使我們更加直觀的感受到按鍵被按下和釋放,小梅哥在這里增加了一個(gè)蜂鳴器,當(dāng)有按鍵按下或釋放(包括長(zhǎng)按時(shí)每接收到一個(gè)通碼)時(shí),蜂鳴器發(fā)出一個(gè)短暫的響聲,來反饋給操作者,讓我們知道我們的解碼模塊解碼到了按鍵信息。設(shè)計(jì)結(jié)構(gòu)如下圖所示:
  


  圖4-1 led實(shí)驗(yàn)?zāi)K組織結(jié)構(gòu)圖
  詳細(xì)端口名及其意義如下
  


  表4-1 獨(dú)立按鍵檢測(cè)實(shí)驗(yàn)端口說明
  因?yàn)榇嬖谀K間的連接,因此有部分內(nèi)部信號(hào),下表為內(nèi)部信號(hào)的名稱和功能說明
  


  表4-2 獨(dú)立按鍵檢測(cè)實(shí)驗(yàn)內(nèi)部信號(hào)說明
                               
                  五、 代碼分析
  這里,解碼的關(guān)鍵是PS2接口的時(shí)鐘信號(hào),該時(shí)鐘為異步時(shí)鐘,我們需要通過邊沿檢測(cè)的方式來檢測(cè)其下降沿,以便根據(jù)下降沿的個(gè)數(shù)來確定每個(gè)時(shí)鐘我們因該做什么,邊沿檢測(cè)的電路,前面幾個(gè)實(shí)驗(yàn)已經(jīng)講過很多次了,這里便不再做過多的解釋,貼上代碼即可:
  以下是代碼片段:
  reg PS2_Clk_Tmp0,PS2_Clk_Tmp1,PS2_Clk_Tmp2,PS2_Clk_Tmp3;
  wire nedge_PS2_Clk; /*PS2從機(jī)時(shí)鐘下降沿檢測(cè)標(biāo)志信號(hào)*/
  always @ (posedge Clk or negedge Rst_n)
  if(!Rst_n) begin
  PS2_Clk_Tmp0


  七、 下板驗(yàn)證
  這里,小梅哥在至芯科技ZX2的板子上驗(yàn)證通過,如下圖:
  其中,第三個(gè)數(shù)碼管,為0表示普通按鍵通碼,為2表示普通按鍵斷碼,為1表示擴(kuò)展按鍵通碼,為3表示擴(kuò)展按鍵斷碼。
  


  


  

                               
               
本文地址:http://www.qingdxww.cn/thread-160464-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 無(wú)線充電基礎(chǔ)知識(shí)及應(yīng)用培訓(xùn)教程3
  • 了解一下Microchip強(qiáng)大的PIC18-Q24 MCU系列
  • PIC18-Q71系列MCU概述
  • 無(wú)線充電基礎(chǔ)知識(shí)及應(yīng)用培訓(xùn)教程2
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久女黄 | 国产一级在线播放 | 免费看黄的网页 | 日本欧美大码a在线视频播放 | 手机看片中文字幕 | 国产高清视频在线观看69 | 变态 调教 视频 国产九色 | 欧美在线看欧美高清视频免费 | 欧美91| 国产视频 每日更新 | 亚洲日韩第一页 | 四虎精品免费视频 | 亚洲第一福利视频 | 亚洲欧洲精品在线 | 欧美精品在线一区二区三区 | 久久麻豆精品 | 婷五月综合 | 蜜桃精品视频 | 亚洲精品高清国产一线久久97 | 日本不卡视频一区二区 | 精品日韩一区二区三区视频 | 色花堂中文字幕98堂网址 | 日本亚洲一区二区 | 日韩精品视频免费在线观看 | 欧美成人亚洲综合精品欧美激情 | 97在线视频免费观看 | 91网站在线播放 | 成人羞羞视频在线 | 亚洲国产一区二区三区在线观看 | 四虎www成人影院免费观看 | 200款禁用app软件免费大全 | 久久国产高清一区二区三区 | 99热精品在线 | 国产亚洲人成网站在线观看不卡 | 欧美激情不卡 | 男人天堂综合 | 国产深夜福利19禁在线播放 | 日韩在线天堂 | 亚洲欧洲日韩国产一区二区三区 | 老司机亚洲精品影院在线 | 久久精品亚洲欧美va |