<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的PS/2鼠標(biāo)接口設(shè)計(jì)方法及其應(yīng)用

          基于FPGA的PS/2鼠標(biāo)接口設(shè)計(jì)方法及其應(yīng)用

          作者: 時間:2012-02-08 來源:網(wǎng)絡(luò) 收藏

            Byte1中的Bit0、Bit1、Bit2分別表示左、右、中鍵的狀態(tài),狀態(tài)值0表示釋放,1表示按下;Byte2和Byte3分別表示X軸和Y軸方向的移動計(jì)量值,是二進(jìn)制補(bǔ)碼值;Byte4的低四位表示滾輪的移動計(jì)量值,也是二進(jìn)制補(bǔ)碼值,高四位作為擴(kuò)展符號位。這種數(shù)據(jù)包由帶滾輪的三鍵三維鼠標(biāo)產(chǎn)生,若是不帶滾輪的三鍵鼠標(biāo),產(chǎn)生的數(shù)據(jù)包沒有Byte4,其余的相同。


          VGA信號時序

            圖4所示是計(jì)算機(jī)VGA(640×480,60Hz)圖像格式的信號時序圖,其點(diǎn)時鐘DCLK為25.175MHz,場頻為59.94Hz。圖中,Vsync為場同步信號,場周期Tvsync為16.683mS,每場有525行,其中480行為有效顯示行,45行為場消隱期。場同步信號Vs每場有一個脈沖,該脈沖的低電平寬度twv為63μS(2行)。場 消隱期包括場同步時間twv、場消隱前肩tHV(13行)和場消隱后肩tVH(30行),共45行。行周期THSYNC為31.78μS,每顯示行包 括800點(diǎn),其中640點(diǎn)為有效顯示,160點(diǎn)為行消隱期(非顯示 區(qū))。行同步信號Hs每行有一個脈沖,該脈沖的低電平寬度tWH為3.81μS(即96個DCLK);行消隱期包括行同步時間tWH,行消隱前肩tHC(19個DCLK)和行消隱后肩tCH(45個DCLK),共160個點(diǎn)時鐘。復(fù)合消隱信號是行消隱信號和場消隱信號的邏輯與,在有效顯示期復(fù)合消隱信號為高電平,在非顯示區(qū)域它是低電平。


          設(shè)計(jì)實(shí)現(xiàn)

          實(shí)現(xiàn)功能

            1、 用實(shí)現(xiàn)PS/2

            2、鼠標(biāo)左鍵按下時十字形鼠標(biāo)圖象的中間方塊改變顏色,右鍵按下時箭頭改變顏色。

            3、 Reset按鍵:總復(fù)位。

          設(shè)計(jì)原理

            主機(jī)復(fù)位后,首先向鼠標(biāo)發(fā)送初始化命令(0xf4)。當(dāng)鼠標(biāo)收到命令字后會給出一個應(yīng)答字節(jié)(0xfa),主機(jī)根據(jù)應(yīng)答字節(jié)來判斷鼠標(biāo)是否正確應(yīng)答。如果應(yīng)答正確則接收鼠標(biāo)數(shù)據(jù)包,然后從接收到的數(shù)據(jù)包中獲得鼠標(biāo)位置及狀態(tài)數(shù)據(jù),并輸出給顯示模塊。顯示模塊在CRT上顯示出當(dāng)前鼠標(biāo)的狀態(tài)和位置,否則,停止處理。如圖5。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();