小梅哥和你一起深入學(xué)習FPGA之PS2鍵盤(pán)驅動(dòng)

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


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


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


  圖4-1 led實(shí)驗模塊組織結構圖
  詳細端口名及其意義如下
  


  表4-1 獨立按鍵檢測實(shí)驗端口說(shuō)明
  因為存在模塊間的連接,因此有部分內部信號,下表為內部信號的名稱(chēng)和功能說(shuō)明
  


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


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


  


  

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

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

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页