<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > Verilog HDL基礎教程之:實(shí)例4 PS/2接口控制

Verilog HDL基礎教程之:實(shí)例4 PS/2接口控制

作者: 時(shí)間:2013-08-22 來(lái)源:網(wǎng)絡(luò ) 收藏

實(shí)例的內容及目標

本文引用地址:http://dyxdggzs.com/article/189528.htm

1.實(shí)例的主要內容

本實(shí)例通過(guò)編程實(shí)現在紅色颶風(fēng)II代Xilinx開(kāi)發(fā)板上面實(shí)現對鍵盤(pán)、LCD、RS-232等接口或者器件進(jìn)行控制,將有鍵盤(pán)輸入的數據在LCD上面顯示出來(lái),或者通過(guò)RS-232在PC機上的超級終端上顯示出來(lái)。

2.實(shí)例目標

通過(guò)本實(shí)例,讀者應達到下面的目標。

了解/2接口協(xié)議。

掌握鍵盤(pán)的工作原理。

編寫(xiě)程序實(shí)現通過(guò)開(kāi)發(fā)板上/2接口讀取鍵盤(pán)的輸入信息。

原理簡(jiǎn)介

/2鍵盤(pán)履行一種雙向同步串行協(xié)議。換句話(huà)說(shuō)每次數據線(xiàn)上發(fā)送一位數據,并且每在時(shí)鐘線(xiàn)上發(fā)一個(gè)脈沖就被讀入,鍵盤(pán)可以發(fā)送數據到主機,而主機也可以發(fā)送數據到設備。但主機總是在總線(xiàn)上有優(yōu)先權,它可以在任何時(shí)候抑制來(lái)自于鍵盤(pán)的通信,只要把時(shí)鐘拉低即可。

本實(shí)例要編寫(xiě)一個(gè)能實(shí)現PS/2端口功能的程序。首先我們要了解PS/2端口的結構與管腳功能定義,如表1所示。

表1 PS/2端口結構及管腳定義

Verilog HDL基礎教程之:實(shí)例4 PS/2接口控制

可以看到,PS/2里面只有一個(gè)數據口,若要分辨很多按鍵就需要一個(gè)高效率的分辨方法。鍵盤(pán)的處理器花費很多的時(shí)間來(lái)掃描或監視按鍵矩陣。如果它發(fā)現有鍵被按下,釋放或按住鍵盤(pán),將發(fā)送掃描碼的信息包到計算機。

掃描碼有兩種不同的類(lèi)型:“通碼”和“斷碼”。當一個(gè)鍵被按下或按住就發(fā)送“通碼”,當一個(gè)鍵被釋放就發(fā)送“斷碼”。每個(gè)按鍵被分配了惟一的“通碼”和“斷碼”。這樣,主機通過(guò)查找惟一的掃描碼就可以測定是哪個(gè)按鍵。

每個(gè)鍵一整套的通斷碼組成了掃描碼集,圖1中包含了鍵盤(pán)上面大部分按鍵的掃描碼。

當按鍵被釋放以后,鍵盤(pán)回在掃描碼前面加上一個(gè)“F0”作為按鍵松開(kāi)信號。同時(shí)有的按鍵是Extended(擴展)鍵,此時(shí)要在它們的掃描碼前面加上一個(gè)“E0”作為開(kāi)頭,這種按鍵松開(kāi)以后將在掃描碼前面附加上“E0F0”。

下面我們來(lái)了解信號是如何從鍵盤(pán)輸入通過(guò)PS/2端口的數據線(xiàn)輸入的。首先鍵盤(pán)要檢測數據線(xiàn)和時(shí)鐘線(xiàn)是否都為高,只有它們都處在高的狀態(tài)才可以寫(xiě)數據。從鍵盤(pán)發(fā)送到主機的數據在時(shí)鐘信號的下降沿(當時(shí)鐘從高變到低)的時(shí)候被讀取。

鍵盤(pán)主要使用一種每幀包含11位的串行協(xié)議:第一位是起始位,始終為“0”;接下來(lái)是8位數據位,排列順序是由低到高;再后面是奇偶校驗位;最后是結束位,始終為“1”。如圖2所示為該協(xié)議的時(shí)序圖。

圖1  鍵盤(pán)掃描碼

圖1 鍵盤(pán)掃描碼

圖3.5  鍵盤(pán)串行協(xié)議

圖2 鍵盤(pán)串行協(xié)議

實(shí)例詳解

此處僅給出主要的操作流程。

(1)啟動(dòng)ISE軟件。

(2)創(chuàng )建新工程。

(3)編寫(xiě)鍵盤(pán)串行協(xié)議。

按照圖2的時(shí)序編寫(xiě)相應的Verilog代碼,具體源代碼參見(jiàn)實(shí)例代碼。

(4)添加設計輸入。

將編寫(xiě)好的接口協(xié)議加載至工程中,完成接口控制與系統的對接。

(5)設置器件及管腳約束。

按照開(kāi)發(fā)板的說(shuō)明進(jìn)行相關(guān)的設置。

(6)下載驗證。

下載程序后,將鍵盤(pán)接至開(kāi)發(fā)板上,通過(guò)開(kāi)發(fā)板的LCD可以看到鍵盤(pán)輸入的字符。



關(guān)鍵詞: Verilog HDL PS 基礎教程

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>