《基于FPGA 的PS2鼠標(biāo)控制器設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《基于FPGA 的PS2鼠標(biāo)控制器設(shè)計(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 基于FPGA 的PS/2 鼠標(biāo)控制器設(shè)計
1 PS/2介紹
PS/2 接口作為傳統(tǒng)的鼠標(biāo)鍵盤接口已經(jīng)被大部分人所熟知,雖然隨著 USB
接口鍵鼠的普及,絕大多數(shù) PC用戶均選擇了 USB的鍵鼠,但目前主流 PC中依舊保留了PS/2鍵鼠的接口,由于 PS/2接口實現(xiàn)簡單,使用方便的特點,在許多領(lǐng)域如工控機等仍舊采用 PS/2接口來完成基本的人機交互。
1.1 PS/2 的接口特性
PS/2 接口多用于鼠標(biāo)和鍵盤,IBM是開發(fā)和使用最早的。PS/2 接口從物理上有兩種類型的連接器,它們分別是5腳的 DIN和6腳的MINI-DIN,如圖1-1所示。
2、
圖1-1 PS/2 接口連接器引腳定義
1.2 PS/2 的接口協(xié)議
PS/2鼠標(biāo)接口采用一種雙向同步串行協(xié)議。即每在時鐘線上發(fā)一個脈沖,就在數(shù)據(jù)線上發(fā)送一位數(shù)據(jù)。在相互傳輸中,主機擁有總線控制權(quán),即它可以在任何時候抑制鼠標(biāo)的發(fā)送。方法是把時鐘線一直拉低,鼠標(biāo)就不能產(chǎn)生時鐘信號和發(fā)送數(shù)據(jù)。在兩個方向的傳輸中,時鐘信號都是由鼠標(biāo)產(chǎn)生,即主機不產(chǎn)生通信時鐘信號。如果主機要發(fā)送數(shù)據(jù),它必須控制鼠標(biāo)產(chǎn)生時鐘信號。方法如下:主機首先下拉時鐘線至少 100μ s抑制通信,然后再下拉數(shù)據(jù)線,最后釋放時鐘線。通過這一時序控制鼠標(biāo)產(chǎn)生時鐘信號。PS/2接口的鼠標(biāo)一般工作在10KHz-20KHz
3、時鐘頻率,不同廠家制造的鼠標(biāo)工作的時鐘頻率不同,推薦值在15kHz左右,也就是說,Clock(時鐘腳)高、低電平的持續(xù)時間都為40μs。
PS/2接口分為兩種通訊模式:設(shè)備到主機的通訊、主機到設(shè)備的通訊。時序如圖1-2。當(dāng)時鐘為高時,設(shè)備驅(qū)動數(shù)據(jù)線改變狀態(tài),在時鐘信號的下降沿數(shù)據(jù)被控制器鎖存。圖 1-3為主機到設(shè)備的通訊時序。
圖1-2鼠標(biāo)到主機的通信時序
圖1-3主機到的鼠標(biāo)通信時序
1.3 PS/2 的鼠標(biāo)工作模式
PS/2 鼠標(biāo)有四種工作模式,它們分別為:Reset 模式:當(dāng)鼠標(biāo)上電或主機
發(fā)復(fù)位命令給它時,進入 Reset 模式;Stream 模式:這是鼠
4、標(biāo)的默認(rèn)模式,當(dāng)
鼠標(biāo)上電或復(fù)位完成后,鼠標(biāo)自動進 Stream 模式,鼠標(biāo)大部分就是用此模式工作;Remote模式:只有當(dāng)主機發(fā)送了設(shè)置命令后,鼠標(biāo)才進入 Remote 模式;Wrap模式:Wrap 模式只用于測試鼠標(biāo)與主機連接是否正確。
1.4 PS/2 的數(shù)據(jù)幀格式
鼠標(biāo)在實際工作中,會把及時收到的數(shù)據(jù)狀態(tài)發(fā)送給主機,讓主機做出相應(yīng)
的動作。發(fā)送的數(shù)據(jù)包格式如圖1-4所示。
圖1-4 鼠標(biāo)發(fā)送數(shù)據(jù)格式
鼠標(biāo)發(fā)送數(shù)據(jù)的具體方式如下:Byte1 中的 Bit0、Bit1、Bit2 分別表示左、右、中鍵的狀態(tài),狀態(tài)值0表示釋放
5、,1表示按下;Byte2 和Byte3分別表示X軸和Y軸方向的移動計量值,是二進制補碼值;Byte4的低四位表示滾輪的移動二進制補碼值,高四位作為擴展符號位。這種數(shù)據(jù)包由帶滾輪的三鍵三維鼠標(biāo)產(chǎn)生,若是不帶滾輪的三鍵鼠標(biāo),產(chǎn)生的數(shù)據(jù)包沒有 Byte4,其余的相同。數(shù)據(jù)幀格式如圖 1-5所示。
圖 1-5 數(shù)據(jù)幀格式
2 硬件相關(guān)介紹
2.1 PS/2 接口
DE2-115 包含一個標(biāo)準(zhǔn)的 PS/2 接口,可以用來外接 PS/2 鼠標(biāo)或鍵盤。圖 2-1給出了 PS/2 接口相關(guān)的原理圖。
圖 2-1 PS/2 接口原理圖
PS/2 接口相關(guān)的引腳配置信息可以
6、在圖 2-2中找到。
圖 2-2 PS/2 接口引腳配置
2.2 按鍵及撥碼開關(guān)電路
DE2-115提供了四個按鈕開關(guān),如圖1-8所示。每個按鈕開關(guān)都通過一個施密特觸發(fā)器進行了去抖處理。四個施密特觸發(fā)器的輸出信號,分別為KEY0、KEY1、KEY2、KEY3,直接連接到了Cyclone IV E FPGA。當(dāng)按鈕沒有被按下的時候,它的輸出是高電平,按下去則給出一個低電平。得益于去抖動電路,這些按鈕開關(guān)適合用來給內(nèi)部電路提供(模擬的)時鐘信號或者復(fù)位信號。
圖1-8 KEY電路示意圖
圖1-9 按鍵消抖
DE2-115開發(fā)板上還有18個撥動開關(guān),如圖1-10
7、所示。這些開關(guān)沒有去抖電路,它們可以作為對電平敏感的電路的輸入數(shù)據(jù)。每個開關(guān)都直接連接到Cyclone IV E。當(dāng)撥動開關(guān)在DOWN位置(靠近開發(fā)板邊緣)的時候輸出為低電平,當(dāng)在UP位置是輸出為高電平。
圖1-10 撥碼開關(guān)電路示意圖
2.3 LED電路
DE2-115開發(fā)板共有27個直接由FPGA控制的LED.18個紅色的LED位于18個撥動開關(guān)的正上方,8個綠色LED可以在按鈕開關(guān)的上方找到(第九個LED位于七段數(shù)碼管的中間)。每一個LED都由Cyclone IV E FPGA的一個引腳直接驅(qū)動,其輸出高電平則點亮LED,輸出低電平LED熄滅。圖1-11給出了LED和C
8、yclone IV E FPGA之間的連接示意圖。
圖1-11 LED 電路示意圖
Cyclone IV E FPGA到撥動開關(guān)間的詳細(xì)引腳連接信息請參考附錄。
2.4 數(shù)碼管電路
DE2-115配有八個七段數(shù)碼管。它們被分成兩組,每組四個,用來作為數(shù)字顯示用。正如圖1-12所示,七段數(shù)碼管的每個引腳(共陽模式)均連接到Cyclone IV E FPGA。FPGA輸出低電壓的時候,對應(yīng)的字碼段點亮,反之則熄滅。
每個數(shù)碼管的字段都從0到6依次編號,對應(yīng)我們常用的數(shù)碼管7段的編號abcdefg。
圖1-12 數(shù)碼管電路示意圖
3 設(shè)計方案
3.1 設(shè)計任務(wù)
完成以下功能: 接入PS/2鼠標(biāo) ,按下 KEY0以使能鼠標(biāo)數(shù)據(jù)發(fā)送,按下KEY1清零位移數(shù)據(jù)顯示。當(dāng)鼠標(biāo)有移動時,可以觀察到七段數(shù)碼管顯示的數(shù)字跟隨變動。當(dāng)按下左中右鍵時,相應(yīng)的綠色LED 燈LED[2:0]會點亮。
3.2 系統(tǒng)框圖
整個系統(tǒng)的框圖如下所示,按鍵控制數(shù)碼管清零,鼠標(biāo)通過 PS/2接口4根
信號線向FPGA輸入信號,F(xiàn)PGA識別信號并按程序點亮 LED燈并顯示數(shù)碼管。