新聞中心

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

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

        作者: 時間:2013-08-22 來源:網絡 收藏

        實例的內容及目標

        本文引用地址:http://www.104case.com/article/189528.htm

        1.實例的主要內容

        本實例通過編程實現在紅色颶風II代Xilinx開發板上面實現對鍵盤、LCD、RS-232等接口或者器件進行控制,將有鍵盤輸入的數據在LCD上面顯示出來,或者通過RS-232在PC機上的超級終端上顯示出來。

        2.實例目標

        通過本實例,讀者應達到下面的目標。

        了解/2接口協議。

        掌握鍵盤的工作原理。

        編寫程序實現通過開發板上/2接口讀取鍵盤的輸入信息。

        原理簡介

        /2鍵盤履行一種雙向同步串行協議。換句話說每次數據線上發送一位數據,并且每在時鐘線上發一個脈沖就被讀入,鍵盤可以發送數據到主機,而主機也可以發送數據到設備。但主機總是在總線上有優先權,它可以在任何時候抑制來自于鍵盤的通信,只要把時鐘拉低即可。

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

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

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

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

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

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

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

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

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

        圖1  鍵盤掃描碼

        圖1 鍵盤掃描碼

        圖3.5  鍵盤串行協議

        圖2 鍵盤串行協議

        實例詳解

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

        (1)啟動ISE軟件。

        (2)創建新工程。

        (3)編寫鍵盤串行協議。

        按照圖2的時序編寫相應的Verilog代碼,具體源代碼參見實例代碼。

        (4)添加設計輸入。

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

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

        按照開發板的說明進行相關的設置。

        (6)下載驗證。

        下載程序后,將鍵盤接至開發板上,通過開發板的LCD可以看到鍵盤輸入的字符。



        關鍵詞: Verilog HDL PS 基礎教程

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 太仓市| 龙山县| 正阳县| 昆明市| 乌鲁木齐市| 洮南市| 大渡口区| 顺平县| 罗平县| 左贡县| SHOW| 丘北县| 湘潭县| 靖江市| 石楼县| 灌阳县| 通渭县| 克什克腾旗| 昌吉市| 壶关县| 松溪县| 南丰县| 宝兴县| 津南区| 临沂市| 东乡县| 奈曼旗| 天祝| 个旧市| 来宾市| 宜丰县| 鲁甸县| 平和县| 伊春市| 库尔勒市| 读书| 曲麻莱县| 鲁甸县| 松原市| 马鞍山市| 玉树县|