




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PS2鍵盤接口控制器設(shè)計(jì) PS/2鍵盤接口控制器設(shè)計(jì)班級(jí) 姓名: 學(xué)號(hào): 班內(nèi)序號(hào): 時(shí)間: 課題名稱:PS/2鍵盤接口控制器設(shè)計(jì)一、摘要和關(guān)鍵詞摘要: PS/2是在電腦上常見的接口之一,用于鼠標(biāo)、鍵盤等設(shè)備。PS/2接口是輸入裝置接口,而不是傳輸接口,所以PS/2口只有掃描速率。在Windows環(huán)境下,PS/2鼠標(biāo)的采樣率默認(rèn)為60次/秒。微控制器所要作的工作就是監(jiān)測(cè)所有的按鍵,以及當(dāng)按鍵被按下或放開時(shí),就回報(bào)給主機(jī)。本實(shí)驗(yàn)中,通過數(shù)字可編程芯片模擬控制器將鍵盤的輸入分別輸出到數(shù)碼管和點(diǎn)陣顯示。關(guān)鍵詞:PS/2接口 點(diǎn)陣 數(shù)碼管 數(shù)字可編程芯片二、設(shè)計(jì)任務(wù)要求設(shè)計(jì)制作一個(gè)PS/2鍵盤接口控制
2、器,實(shí)現(xiàn)以下功能:1. 按照PS/2鍵盤接口標(biāo)準(zhǔn)設(shè)計(jì)一個(gè)控制器,接收PS/2鍵盤發(fā)送的數(shù)據(jù),用數(shù)碼管顯示接收到的鍵值(只顯示09,az,部分不便用數(shù)碼管顯示的字符可自行設(shè)定顯示方式,接收到其他鍵值則不顯示);2. 用88點(diǎn)陣做顯示屏,顯示所有按鍵的鍵值。三、設(shè)計(jì)思路、總體結(jié)構(gòu)框圖1. 設(shè)計(jì)思路:帶PS/2接口的鍵盤與實(shí)驗(yàn)開發(fā)板連接后,通過可編程芯片讀取鍵盤輸入的鍵值,通過數(shù)據(jù)線分別傳送至數(shù)碼管和8*8點(diǎn)陣顯示。在實(shí)驗(yàn)中,分三個(gè)模塊實(shí)現(xiàn)實(shí)驗(yàn)所要求的功能:檢測(cè)鍵盤輸入鍵值模塊、數(shù)碼管顯示模塊、8*8點(diǎn)陣顯示模塊。將三個(gè)模塊分別設(shè)計(jì)好后,組合在一起,即可實(shí)現(xiàn)實(shí)驗(yàn)所要求的功能。2. 總體結(jié)構(gòu)框圖:四、
3、控制器部分的狀態(tài)轉(zhuǎn)移圖和流程圖1. 控制器部分的狀態(tài)轉(zhuǎn)移圖如下圖所示(其中狀態(tài)值是shift_in的值,假設(shè)本次傳輸?shù)淖止?jié)數(shù)據(jù)值是11010011,傳輸其他字節(jié)數(shù)據(jù)信息時(shí),同理,只需修改shift_in值即可):2. 控制器部分的流程圖如下圖所示:五、分塊電路和總體電路設(shè)計(jì)分三個(gè)模塊實(shí)現(xiàn)實(shí)驗(yàn)所要求的功能:檢測(cè)鍵盤輸入鍵值模塊、數(shù)碼管顯示模塊、8*8點(diǎn)陣顯示模塊。其組合關(guān)系如下圖所示:實(shí)驗(yàn)完成后的總體效果圖如下圖所示:1. 檢測(cè)鍵盤輸入鍵值模塊設(shè)計(jì)檢測(cè)帶PS/2接口的鍵盤輸入時(shí),需要按照特定的步驟來執(zhí)行操作,才能正確地讀取鍵盤輸入的鍵值。嚴(yán)格的讀取數(shù)據(jù)步驟為:1)等待鍵盤時(shí)鐘信號(hào)clock =
4、high;2)延時(shí)50微秒;3)鍵盤時(shí)鐘信號(hào)clock仍舊為high?No則回到第1步,Yes則向下執(zhí)行;4)數(shù)據(jù)控制信號(hào)data=high?No則放棄(并且從主機(jī)讀取字節(jié)),Yes則向下執(zhí)行;5)延遲20微秒(若正在發(fā)送起始位則延時(shí)40微秒);6) 輸出起始位bit (0) (在發(fā)送所有這些位的每一位后都要檢測(cè)時(shí)鐘線);7) 輸出8個(gè)數(shù)據(jù)位(測(cè)試時(shí)鐘確認(rèn)主機(jī)是否把時(shí)鐘線拉低了);8) 輸出校驗(yàn)位;9) 輸出停止位,延遲30 毫秒。而按如下的過程發(fā)送單個(gè)位1)設(shè)置復(fù)位數(shù)據(jù);2)延遲20微秒;3)把時(shí)鐘拉低;4)延遲40微秒;5)釋放時(shí)鐘;6)延遲20微秒。通過實(shí)際情況修正與改進(jìn)以上步驟,在本實(shí)
5、驗(yàn)中采用的讀取鍵盤輸入鍵值模塊的VHDL語言編程的流程圖如下圖所示:2. 數(shù)碼管顯示模塊設(shè)計(jì)當(dāng)需要在一個(gè)數(shù)碼管上顯示字符時(shí)只要在數(shù)據(jù)端需要點(diǎn)亮的字段管腳上輸入1,不需要點(diǎn)亮的字段輸入管腳上輸入0,同時(shí)把相應(yīng)的控制端置為0即可。當(dāng)鍵盤鍵值和數(shù)字09的通碼比較后,即可送往數(shù)碼管顯示。數(shù)字09對(duì)應(yīng)的ag、p的高低電平如下表所示:數(shù)字abcdefgp011111100101100000211011010311110010401100110510110110610111110711100000811111110911110110數(shù)碼管功能原理圖如下圖所示:3. 8*8點(diǎn)陣顯示模塊點(diǎn)陣是由8行8列一共64
6、個(gè)發(fā)光二極管構(gòu)成。一共對(duì)外的管腳有16條,分為行ROW1ROW8 和列COL1COL8。點(diǎn)亮EPM1270TCC54芯片上的點(diǎn)陣上某一個(gè)點(diǎn)的條件是對(duì)應(yīng)該點(diǎn)的行管腳輸出高電平,列管腳輸出低電平。利用點(diǎn)陣顯示某個(gè)字符時(shí),需要先計(jì)算出需要點(diǎn)亮點(diǎn)陣的哪些點(diǎn),再使用行掃描的掃描方式對(duì)點(diǎn)陣逐行掃描,即可顯示所需要顯示的字符,其流程圖如下所示:六、所實(shí)現(xiàn)功能說明1. 已完成的基本功能和擴(kuò)展功能:1)可分別用撥碼開關(guān)SW0SW5控制是否使用數(shù)碼管DSP1DSP6顯示數(shù)字鍵值,數(shù)碼管可顯示數(shù)字09;2)可用SW7控制是否使用8*8點(diǎn)陣顯示鍵值,點(diǎn)陣可顯示數(shù)字09、字母AZ;3)可用SW6控制是否讀取鍵盤輸入的鍵
7、值。2. 器件資源占用情況:使用了41個(gè)管腳接口,如下圖所示:使用了336個(gè)宏單元,如下圖所示:3. 關(guān)鍵波形仿真:在進(jìn)行波形仿真時(shí),由于本實(shí)驗(yàn)?zāi)MPS/2控制器的特殊性,輸入的主要數(shù)據(jù)是keyboard_data,每次讀取1位數(shù)據(jù),在波形仿真時(shí),輸出的是鍵盤鍵值的通碼,輸入輸出的數(shù)據(jù)的位數(shù)不一致(keyboard_data是1位,而輸出是8位),由于仿真時(shí)系統(tǒng)的時(shí)鐘不能太快,否則仿真時(shí)間會(huì)特別長(zhǎng)導(dǎo)致軟件崩潰,故在仿真波形上只能看到點(diǎn)陣中第一行的波形4. 測(cè)試方法與步驟:主要按以下步驟進(jìn)行本系統(tǒng)的調(diào)試與改進(jìn):1)鍵盤與實(shí)驗(yàn)開發(fā)板之間連接好;2)單獨(dú)編寫數(shù)碼管顯示程序,利用數(shù)碼管顯示特定的數(shù)字;
8、3)單獨(dú)編寫點(diǎn)陣顯示程序,利用點(diǎn)陣顯示特定的字符;4)編寫鍵盤輸入鍵值讀取程序,并和數(shù)碼管程序結(jié)合起來,把輸出數(shù)據(jù)送至數(shù)碼管顯示。這時(shí),就可以根據(jù)數(shù)碼管顯示的字符是否正確來改進(jìn)鍵盤輸入鍵值讀取程序,只要數(shù)碼管能正確顯示一個(gè)數(shù)字,顯示其余的數(shù)字也就是重復(fù)相同的原理而已;5)在前面4步調(diào)試好后,把三個(gè)模塊檢測(cè)鍵盤輸入鍵值模塊、數(shù)碼管顯示模塊、8*8點(diǎn)陣顯示模塊的程序組合起來即可。七、故障及問題分析在編寫檢測(cè)鍵盤輸入鍵值模塊的VHDL程序時(shí),按照參考資料上的特定步驟,并不能正確地讀取鍵盤輸入的鍵值。問題分析:對(duì)于兩份PDF參考資料上關(guān)于PS/2設(shè)備向主機(jī)發(fā)送一個(gè)字節(jié)和一位數(shù)據(jù)的描述,其是建立在向主機(jī)
9、(計(jì)算機(jī))發(fā)送的基礎(chǔ)上的,而本實(shí)驗(yàn)中利用數(shù)字電路實(shí)驗(yàn)開發(fā)板模擬PS/2控制器,數(shù)字芯片可以直接從鍵盤數(shù)據(jù)輸入口讀取數(shù)據(jù),省去了很多不必需的步驟:1)校驗(yàn)位和停止位:由于起始位始終為0,數(shù)據(jù)位為8位,而檢驗(yàn)位與停止位讀取與否并不影響該程序的功能實(shí)現(xiàn),所以只需讀取PS/2鍵盤的起始位和數(shù)據(jù)位,并且最終將8位數(shù)據(jù)位轉(zhuǎn)存入data_cade和data_code1。這樣,既不影響程序功能的正確實(shí)現(xiàn),又能精簡(jiǎn)程序代碼。2)時(shí)鐘信號(hào)電平:在參考資料中,在讀取數(shù)據(jù)位時(shí),要求時(shí)鐘信號(hào)為高。但在實(shí)際編程仿真中發(fā)現(xiàn):在等待時(shí)鐘信號(hào)時(shí),它的電平高低對(duì)后來的讀取數(shù)據(jù)并沒有影響。這也是本次實(shí)驗(yàn)的特殊之處,同樣,對(duì)于數(shù)據(jù)位
10、的高低電平也不必強(qiáng)制要求。3)延時(shí)問題:在參考資料中,反復(fù)提到讀取數(shù)據(jù)位過程中的延時(shí),但在編程中發(fā)現(xiàn)并不需要設(shè)置延時(shí),而同樣能正確地讀取了鍵盤輸入的數(shù)據(jù)。在使用VHDL語言編程、利用數(shù)字可編程芯片仿真PS/2控制器時(shí),并不需要專門的延時(shí)時(shí)間,鍵盤數(shù)據(jù)是每一位連續(xù)傳向數(shù)據(jù)線的,其中指令的執(zhí)行時(shí)間已經(jīng)足夠控制芯片讀取數(shù)據(jù)的緩沖時(shí)間。八、總結(jié)和結(jié)論通過這次數(shù)電實(shí)驗(yàn),我進(jìn)一步加深了對(duì)可編程邏輯器件的認(rèn)識(shí),熟練掌握了quartus ii軟件的使用方法,包括編程,仿真下載測(cè)試。并且系統(tǒng)的學(xué)習(xí)了VHDL語言。 同時(shí),學(xué)習(xí)了PS/2協(xié)議,了解了PS/2鍵盤是如何向主機(jī)傳輸數(shù)據(jù)的,也解開了我從小到大一直的疑惑。
11、九、參考文獻(xiàn)1 PS/2鍵盤協(xié)議2數(shù)字電路與邏輯設(shè)計(jì)實(shí)驗(yàn)教程北京郵電大學(xué)電子工程學(xué)院電路實(shí)驗(yàn)中心2009年3月十、源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity keyboard is port( keyboard_clk, keyboard_data, key_stop: in std_logic;-鍵盤時(shí)鐘信號(hào),1位數(shù)據(jù)信號(hào),終止鍵盤輸入信號(hào)clk:in std_logic;-系統(tǒng)時(shí)鐘信號(hào)led_clr: in st
12、d_logic;-點(diǎn)陣顯示復(fù)位信號(hào) led_code: out std_logic_vector(7 downto 0); -接收到的送數(shù)碼管顯示的8位數(shù)據(jù)信號(hào)cat: out std_logic_vector(5 downto 0);-控制哪個(gè)數(shù)碼管顯示swcat: in std_logic_vector(5 downto 0);-利用撥碼開關(guān)控制哪個(gè)數(shù)碼管顯示 row: out std_logic_vector(7 downto 0);-行通量 col: out std_logic_vector(7 downto 0);-列通量end keyboard;architecture a of
13、keyboard issignal counter : std_logic_vector(3 downto 0); -計(jì)數(shù)器signal shift_in : std_logic_vector(8 downto 0); -包含1個(gè)起始位和8個(gè)數(shù)據(jù)位signal read_bit : std_logic; -是否讀取數(shù)據(jù)控制信號(hào)signal data_code : std_logic_vector(7 downto 0); -8位數(shù)據(jù)信號(hào)signal data_code1: std_logic_vector(7 downto 0);-點(diǎn)陣顯示signal temp: integer range
14、1 to 8;-列掃描控制信號(hào)signal t: std_logic;signal clkout: std_logic;beginprocess(clk)-1K分頻器variable count: integer range 0 to 1000;beginif (clkevent and clk=1) thenif (count = 499) thencount := 0;t = not t;elsecount := count + 1;end if;end if;clkout = t;end process;processbeginwait until (keyboard_clkevent
15、and keyboard_clk = 0);-等待鍵盤時(shí)鐘信號(hào)為低電平if key_stop = 1 then -終止鍵盤輸入 counter = 0000; -計(jì)數(shù)器設(shè)置為0 read_bit = 0; -讀取數(shù)據(jù)控制信號(hào)為低電平else if keyboard_data = 0 and read_bit = 0 then -數(shù)據(jù)線信號(hào)為低電平且讀取數(shù)據(jù)控制信號(hào)為低電平 read_bit= 1; -則開始讀取數(shù)據(jù)位 else if read_bit = 1 then -開始處理8個(gè)數(shù)據(jù)位 if counter 1001 then -計(jì)數(shù)器小于1001時(shí) counter = counter +
16、 1; -計(jì)數(shù)器加1 shift_in(7 downto 0) = shift_in(8 downto 1); -每次不讀取shift_in(0)(該位為起始位) shift_in(8) = keyboard_data; -讀取新的數(shù)據(jù)位 else data_code = shift_in(7 downto 0); -存儲(chǔ)8位數(shù)據(jù)信號(hào) data_code1 = shift_in(7 downto 0); -存儲(chǔ)8位數(shù)據(jù)信號(hào) read_bit = 0; -讀取數(shù)據(jù)控制信號(hào)置0 counter = 0000; -計(jì)數(shù)器置0 end if; end if; end if;end if;end pro
17、cess;process(data_code)-數(shù)據(jù)送數(shù)碼管顯示begin cat led_code led_code led_code led_code led_code led_code led_code led_code led_code led_code led_code = 00000000; end case;end process;process(data_code1,clkout)-數(shù)據(jù)送led點(diǎn)陣顯示beginif led_clr=1 then -復(fù)位row=00000000;col=00000000;temp rowcolcolcolcolcolcolcolcolcolco
18、lcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcol rowcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcol rowcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcol rowcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolcolc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 掃雷題目及答案99
- 2025屆河北省保定市高三一模語文試題(解析版)
- 電子耗材銷售合同
- 雙十一彩妝店活動(dòng)策劃書
- 工作計(jì)劃清單格制作
- 電子版采購(gòu)合同書常用版樣式
- 食堂安全管理制度
- 食堂消防應(yīng)急預(yù)案
- 供應(yīng)鏈反欺詐管理制度
- 供暖泵站安全管理制度
- 期末試卷(五)(含答案含聽力原文無聽力音頻)-2024-2025學(xué)年人教PEP版英語(新教材)三年級(jí)下冊(cè)
- 養(yǎng)老護(hù)理員四級(jí)考試題庫(kù)及答案
- 2024-2025 學(xué)年八年級(jí)英語下學(xué)期期末模擬卷 (蘇州專用)原卷
- 2025年大學(xué)生創(chuàng)業(yè)培訓(xùn)考試試卷及答案
- 湖南2024生地會(huì)考試卷及答案
- 廣東省深圳市2024年中考英語真題(含答案)
- 奇瑞入職在線測(cè)評(píng)題庫(kù)
- (完整word版)最新防雷裝置檢測(cè)工程質(zhì)量管理手冊(cè)
- DL_5000-2000_火力發(fā)電廠設(shè)計(jì)技術(shù)規(guī)程
- 四害密度監(jiān)測(cè)工作實(shí)施方案
- 單相橋式整流電路通用課件
評(píng)論
0/150
提交評(píng)論