產(chǎn)品圖片

產(chǎn)品分類

技術(shù)文章
主頁 > 技術(shù)文章 > PS2接口鍵盤顯示實(shí)驗(yàn)
2024-06-06 06:38

PS2接口鍵盤顯示實(shí)驗(yàn)

PS2接口鍵盤顯示實(shí)驗(yàn)

一、  實(shí)驗(yàn)?zāi)康?/strong>
1、學(xué)習(xí)用FPGA設(shè)計(jì)簡單通信協(xié)議的方法。
2、學(xué)習(xí)PS2的工作原理,掃描碼的ASCII碼的轉(zhuǎn)換。
3、掌握VHDL編寫中的一些小技巧。
二、  實(shí)驗(yàn)原理
  PS2通信協(xié)議是一種雙向同步串行通迅協(xié)議。通迅的兩端通過CLOCK(時鐘信號端)同步,并通過DATA(數(shù)據(jù)端口)交換數(shù)據(jù)。任何一方如果想要抑制另外一方的通迅時,只需要把CLOCK拉到低電平。
PS2標(biāo)準(zhǔn),規(guī)范每筆數(shù)據(jù)傳輸包含起始位(start bit)、掃描碼(scan code)、奇同位檢查(odd parity)、以及終止位(stop bit)共計(jì)11位,并以雙向串行數(shù)據(jù)傳輸?shù)姆绞,達(dá)到通信的目的。且當(dāng)主機(jī)端(host)或從機(jī)端(slave)并無傳送或接收數(shù)據(jù)時,數(shù)據(jù)傳輸端口及頻率均將升為高電位。圖4-17-1所示為每一筆數(shù)據(jù)傳輸所包含之內(nèi)容如下:
1.          起始位(“0”)
2.          8位數(shù)據(jù)寬度的掃描碼( scan code )。
3.          奇同位檢查,使掃描碼與奇同位加起來1的數(shù)字為奇數(shù)個。
4.          終止位(“1”)
PS2 串行傳輸標(biāo)準(zhǔn)
 
 
 
圖4-17-1  PS2 串行傳輸標(biāo)準(zhǔn)
 
PS2 端口腳位定義
圖4-17-2   PS2 端口腳位定義
PS2控制接口僅使用到兩條傳輸端口,一為頻率端口,另一則為數(shù)據(jù)端口如圖4-17-2所示,且此傳輸埠必為三態(tài)(Tri-State)并具有雙向(bidirectional)特性。PS2 傳輸產(chǎn)品上,常見為鼠標(biāo)與鍵盤,兩者的驅(qū)動原理均相同,僅掃描碼(scan code)不同。因此我們以PS2鍵盤為例進(jìn)行說明。
鍵盤其實(shí)就是一個大型的按鍵矩陣,它們由安裝在電路板上的處理器(叫做“鍵盤編碼器”)來監(jiān)視著。雖然不同的鍵盤可能采用不同的處理器,但是它們完成的任務(wù)都是一樣的,即監(jiān)視哪些按鍵被按下,哪些按鍵被釋放了,并將這些信息傳送到主機(jī)。如果有必要,處理器處理所有的去抖動,并在它的16字節(jié)的緩沖區(qū)里緩沖數(shù)據(jù)。主機(jī)端包含了一個“鍵盤控制器”與鍵盤處理器進(jìn)行通訊,并解碼來自鍵盤處理器的信息,然后高速系統(tǒng)當(dāng)前按鍵對應(yīng)的處理事情。主機(jī)與鍵盤之間的通訊仍舊采用IBM的協(xié)議。
鍵盤處理器花費(fèi)很多時間來掃描或監(jiān)視按鍵矩陣。如果發(fā)現(xiàn)有按鍵按下、釋放或長按,鍵盤就發(fā)送“掃描碼”的信息到主機(jī)。掃描碼有兩種不同的類型:“通碼”和“斷碼”。當(dāng)一個鍵被按下去或長按的時候,鍵盤就發(fā)送通碼;當(dāng)一個鍵被釋放的時候,鍵盤就發(fā)送斷碼。每個鍵盤被分配了唯一的通碼和斷碼,這樣主機(jī)通過查找唯一的掃描碼就可以確定是哪個按鍵被按下或釋放。每個鍵一整套的通斷碼組成了“掃描碼集”,現(xiàn)在所有的鍵盤都采用第二套掃描碼。由于沒有一個簡單的公式可以計(jì)算掃描碼,所以要知道某個特定按鍵的通碼和斷碼,只能采用查表的方法來獲得。需要特別注意的是,按鍵的通碼值表示鍵盤上的一個按鍵,并不表示印刷在按鍵上的那個字符,這就意味著通碼和ASCII碼之間沒有任何關(guān)聯(lián)。
另外,第二套通碼都只有一個字節(jié)寬,但也有少數(shù)“擴(kuò)展按鍵”的通碼是兩字節(jié)或四字節(jié)寬,這類碼的第一個字節(jié)總是0xE0。與通碼一樣,每個按鍵在釋放的時候,鍵盤就會發(fā)送一個斷碼。每個鍵也都有它自己的唯一的斷碼,不過慶幸的是,斷碼與斷碼之間存在著必然的聯(lián)系。多數(shù)第二套斷碼有兩個字長,它們的第一個字節(jié)是0xF0,第二個字節(jié)就是對應(yīng)按鍵的通碼。擴(kuò)展按鍵的斷碼通常有三個字節(jié),前兩個字節(jié)0xE0和0xF0,最后一個字節(jié)是這個按鍵通碼的最后一個字節(jié)。表4-17-1列出了鍵盤按鍵的通碼和斷碼。
 

鍵值 通碼 斷碼 鍵值 通碼 斷碼 鍵值 通碼 斷碼
A 1C F0,1C 9 46 F0,46 [ 54 F0,54
B 32 F0,32 ` 0E F0,0E INSERT 67 F0,67
C 21 F0,21 - 4E F0,4E HOME 6E F0,6E
D 23 F0,23 = 55 F0,55 PG UP 6F F0,6F
E 24 F0,24 \ 5C F0,5C DELETE 64 F0,64
F 2B F0,2B BKSP 66 F0,66 END 65 F0,65
G 34 F0,34 SPACE 29 F0,29 PG DN 6D F0,6D
H 33 F0,33 TAB 0D F0,0D U ARROW 63 F0,63
I 43 F0,48 CAPS 14 F0,14 L ARROW 61 F0,61
J 3B F0,3B L SHFT 12 F0,12 D ARROW 60 F0,60
K 42 F0,42 L CTRL 11 F0,11 R ARROW 6A F0,6A
L 4B F0,4B L WIN 8B F0,8B NUM 76 F0,76
M 3A F0,3A L ALT 19 F0,19 KP / 4A F0,4A
N 31 F0,31 R SHFT 59 F0,59 KP * 7E F0,7E
O 44 F0,44 R CTRL 58 F0,58 KP - 4E F0,4E
P 4D F0,4D R WIN 8C F0,8C KP + 7C F0,7C
Q 15 F0,15 R ALT 39 F0,39 KP EN 79 F0,79
R 2D F0,2D APPS 8D F0,8D KP . 71 F0,71
S 1B F0,1B ENTER 5A F0,5A KP 0 70 F0,70
T 2C F0,2C ESC 08 F0,08 KP 1 69 F0,69
U 3C F0,3C F1 07 F0,07 KP 2 72 F0,72
V 2A F0,2A F2 0F F0,0F KP 3 7A F0,7A
W 1D F0,1D F3 17 F0,17 KP 4 6B F0,6B
X 22 F0,22 F4 1F F0,1F KP 5 73 F0,73
Y 35 F0,35 F5 27 F0,27 KP 6 74 F0,74
Z 1A F0,1A F6 2F F0,2F KP 7 6C F0,6C
0 45 F0,45 F7 37 F0,37 KP 8 75 F0,75
1 16 F0,16 F8 3F F0,3F KP 9 7D F0,7D
2 1E F0,1E F9 47 F0,47 ] 5B F0,5B
3 26 F0,26 F10 4F F0,4F ; 4C F0,4C
4 25 F0,25 F11 56 F0,56 ' 52 F0,52
5 2E F0,2E F12 5E F0,5E , 41 F0,41
6 36 F0,36 PRNT
SCRN
 57 F0,57 . 49 F0,49
7 3D F0,3D SCROLL 5F F0,5F / 4A F0,4A
8 3E F0,3E PAUSE 62 F0,62      
 
 
表4-17-1PS2 鍵盤掃描碼
三、  實(shí)驗(yàn)內(nèi)容
      本實(shí)驗(yàn)的任務(wù)就是利用PS2接口將鍵盤按鍵的通碼在數(shù)碼管上顯示出來。
實(shí)驗(yàn)箱中用到PS2鍵盤接口與FPGA的接口電路如圖4-17-3所示。
 
PS2鍵盤接口電路圖
圖4-17-3  PS2鍵盤接口電路圖
 
四、  實(shí)驗(yàn)步驟
1、打開QUARTUSII軟件,新建一個工程。
2、建完工程之后,再新建一個VHDL File,打開VHDL編輯器對話框。
3、按照實(shí)驗(yàn)原理和自己的想法,在VHDL編輯窗口編寫VHDL程序,用戶可參照光盤中提供的示例程序。示例程序共提供2個VHDL源程序。每一個源程序完成一定的功能。其具體的功能如下表4-17-2所示:

文件名稱 完成功能
keyboard.VHD PS2鍵盤控制器電路設(shè)計(jì)。
DISPLAY.VHD 七段顯示器譯碼電路設(shè)計(jì)。
 
表4-17-2   示例程序功能表
4、編寫完VHDL程序后,保存起來。方法同實(shí)驗(yàn)一。
5、將自己編寫的VHDL程序進(jìn)行編譯并生成模塊符號文件,并對程序的錯誤進(jìn)行修改,最終所有程序通過編譯并生成模塊符號文件。其具體方法請參照實(shí)驗(yàn)六。
6、新建一個圖形編輯文件,將已生成的模塊符號文件放入其中,并根據(jù)要求邊接起來。完成后,如下圖4-17-4所示。
編輯好的圖形設(shè)計(jì)文件
圖21-4  編輯好的圖形設(shè)計(jì)文件
7、將自己編輯好的的程序進(jìn)行編譯仿真,并對程序的錯誤進(jìn)行修改,最終通過編譯。
8、編譯仿真無誤后,根據(jù)用戶自己的要求進(jìn)行管腳分配。分配完成后,再進(jìn)行全編譯一次,以使管腳分配生效。
9、根據(jù)實(shí)驗(yàn)內(nèi)容用實(shí)驗(yàn)導(dǎo)線將上面管腳分配的FPGA管腳與對應(yīng)的模塊連接起來。
如果是調(diào)用的本書提供的VHDL代碼,則實(shí)驗(yàn)連線如下:
      CLK: FPGA時鐘,接數(shù)字時鐘COLCK1并將其設(shè)為24M。
      DATA:PS2接口DATA信號,接PS2接口KDA端口。
      KYCLOCK:PS2接口CLK信號,接PS2接口KCL端口。
      RESET:復(fù)位信號,接核心板復(fù)位按鍵RST。
A、B、C、D、E、F、G:接七段碼顯示區(qū)的A、B、C、D、E、F和G
      SA、SB、SC:接七段碼顯示區(qū)的SEL0、SEL1、SEL2。
10、用下載電纜通過JTAG口將對應(yīng)的sof文件加載到FPGA中。觀察實(shí)驗(yàn)結(jié)果是否與自己的編程思想一致。
五、  實(shí)驗(yàn)結(jié)果與現(xiàn)象
以設(shè)計(jì)的參考示例為例,將PS2接口的鍵盤接入PS2接口內(nèi)。當(dāng)設(shè)計(jì)文件加載到目標(biāo)器件后,將數(shù)字信號源模塊的時鐘選擇為24MHZ,按下PS2鍵盤上的鍵,則在實(shí)驗(yàn)平臺的八位數(shù)碼管上的中間兩位將顯示被按鍵的掃描碼。觀察其按下的鍵值所對應(yīng)的掃描碼是否與表4-17-1一一對應(yīng)。按下核心板上的復(fù)位按鍵RST則停止對鍵盤的掃描,數(shù)碼管上的掃描碼不會發(fā)生改變。
六、  實(shí)驗(yàn)報(bào)告
1、繪出仿真波形,并作說明。
2、將實(shí)驗(yàn)原理、設(shè)計(jì)過程、編譯仿真波形和分析結(jié)果、硬件測試結(jié)果記錄下來。