王 勇 宋 瀟 孫孟方
(1.河南科技大學(xué)電氣工程學(xué)院,河南 洛陽 471023;
2.中國航空工業(yè)集團(tuán)公司洛陽電光設(shè)備研究所,河南 洛陽 471009)
基于EDA技術(shù)的PS/2接口電路設(shè)計
王 勇1宋 瀟1孫孟方2
(1.河南科技大學(xué)電氣工程學(xué)院,河南 洛陽 471023;
2.中國航空工業(yè)集團(tuán)公司洛陽電光設(shè)備研究所,河南 洛陽 471009)
基于EDA技術(shù),使用FPGA芯片和VHDL語言,設(shè)計了一種PS/2設(shè)備接口電路。介紹了硬件連接、通信協(xié)議、設(shè)計過程及仿真結(jié)果。采用自頂向下的設(shè)計思路,充分發(fā)揮EDA技術(shù)的優(yōu)勢,大大縮短了設(shè)計周期。軟件仿真及硬件調(diào)試表明,設(shè)計中的各個模塊之間能夠正確地傳送數(shù)據(jù),性能穩(wěn)定,達(dá)到了預(yù)期目標(biāo)。
PS/2接口;FPGA;VHDL;通信協(xié)議
圖1 PS/2接口外圍硬件電路
PS/2作為常用的人機接口,在嵌入式系統(tǒng)中有著廣泛應(yīng)用。例如PS/2鍵盤內(nèi)含自動去抖功能,軟硬件開發(fā)簡便,價格便宜,通用性強[1]。基于FPGA的EDA技術(shù)在近些年發(fā)展迅速,正逐漸成為電子系統(tǒng)設(shè)計的主流,設(shè)計人員利用它可以設(shè)計出自定義功能的專用集成電路,縮短了開發(fā)周期,降低了開發(fā)成本。FPGA還具有靜態(tài)可重復(fù)編程和動態(tài)在系統(tǒng)重構(gòu)的特性,使得硬件功能可以像軟件一樣通過編程來修改。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,除了含有具有硬件特征的語句外,其語言形式、描述風(fēng)格與句法類似于一般的計算機高級語言。VHDL程序的結(jié)構(gòu)特點是將一項工程設(shè)計分成外部接口部分和內(nèi)部結(jié)構(gòu)部分,一旦內(nèi)部開發(fā)完成,其它的設(shè)計可以直接調(diào)用這個實體。因此采用VHDL硬件描述編程語言,在FPGA系統(tǒng)中嵌入PS/2設(shè)備接口電路,在產(chǎn)品開發(fā)中是可行和必要的。
2.1 PS/2接口
物理上的PS/2接口有兩種連接類型,即5腳的DIN和6腳的MINI-DIN。實質(zhì)上,這兩種類型都只有4個腳有意義,它們分別是1腳數(shù)據(jù)(data)、3腳電源地(GND)、4腳電源(VCC)和5腳時鐘(clk)。在PS/2設(shè)備與主機的物理連接上只要保證這四根線一一對應(yīng)即可。PS/2設(shè)備靠主機提供+5V電源,另外兩個腳clk和data都是集電極開路的,需要在外圍硬件設(shè)計上進(jìn)行上拉,相應(yīng)電路如圖1所示。
2.2 通信協(xié)議
PS/2接口遵循一種雙向同步串行通信協(xié)議。PS/2設(shè)備可以發(fā)送數(shù)據(jù)到主機,主機也可以發(fā)送數(shù)據(jù)到PS/2設(shè)備,主機在總線上有優(yōu)先控制權(quán),它可以在任何時候抑制來自于PS/2設(shè)備的通信。PS/2設(shè)備發(fā)送到主機的數(shù)據(jù)在時鐘信號的下降沿被讀取;主機發(fā)送到PS/2設(shè)備的數(shù)據(jù)在上升沿被讀取。不管通信的方向怎樣,PS/2設(shè)備總是產(chǎn)生時鐘信號,最大的時鐘頻率是33KHz,一般設(shè)計為15KHz左右。通信數(shù)據(jù)安排在字節(jié)中,每個字節(jié)為一幀,包含了11或12位,如圖2所示。其中第1位是起始位(低有效),緊跟8個數(shù)據(jù)位(低位在前),第10位為校驗位(奇校驗),第11位為停止位(高有效),第12位為應(yīng)答位(僅用在主機對設(shè)備的通信中)。若數(shù)據(jù)中包含偶數(shù)個“1”,校驗位置“1”;若數(shù)據(jù)中包含奇數(shù)個“1”,校驗位置“0”。數(shù)據(jù)位中“1”的個數(shù)加上校驗位為奇數(shù),這可用來檢測傳輸過程是否有錯。當(dāng)主機發(fā)送數(shù)據(jù)給PS/2設(shè)備時,設(shè)備回送一個信號來應(yīng)答數(shù)據(jù)包,表示已經(jīng)收到,該位不會出現(xiàn)在設(shè)備發(fā)送數(shù)據(jù)到主機的過程中。下面以設(shè)備到主機的數(shù)據(jù)傳輸過程為例闡述PS/2的通信過程[2]。
當(dāng)PS/2設(shè)備等待發(fā)送數(shù)據(jù)時,它首先檢查時鐘以確認(rèn)它是否為高電平,如果不是,則說明主機抑制了通信,設(shè)備必須緩沖任何要發(fā)送的數(shù)據(jù)直到重新獲得總線的控制權(quán);如果時鐘此時為高電平,設(shè)備則可以傳送數(shù)據(jù)。每位在時鐘的下降沿被主機讀入,通信時序如圖2所示。當(dāng)時鐘為高時,數(shù)據(jù)線改變狀態(tài),在時鐘信號下降沿,數(shù)據(jù)被鎖存。從時鐘脈沖的上升沿到一個數(shù)據(jù)傳送的時間至少需要5μs。數(shù)據(jù)變化到時鐘脈沖的下降沿的時間也至少需要5μs,這個定時應(yīng)該嚴(yán)格遵循。在停止位發(fā)送后,設(shè)備在發(fā)送下一幀數(shù)據(jù)前至少應(yīng)該等待50ms,這是因為主機在處理接收字節(jié)時抑制了發(fā)送。
圖2 PS/2設(shè)備到主機通信時序
2.3 PS/2設(shè)備返回值介紹
PS/2設(shè)備(以鍵盤為例)的處理器如果發(fā)現(xiàn)有鍵被按下或釋放將發(fā)送掃描碼信息到主機。掃描碼有兩種不同的類型:通碼和斷碼。當(dāng)某鍵被按下則發(fā)送通碼,當(dāng)該鍵被釋放則發(fā)送斷碼,每個按鍵被分配了唯一的通碼和斷碼。這樣主機通過查找掃描碼就可以識別按鍵。一整套的通斷碼組成了掃描碼集,目前常用的有三套標(biāo)準(zhǔn)的掃描碼集,現(xiàn)代的PS/ 2鍵盤幾乎均默認(rèn)使用第二套掃描碼。設(shè)計者不用總是通過查表來找出按鍵的斷碼,在通碼和斷碼之間存在著必然的聯(lián)系。多數(shù)第二套斷碼有兩字節(jié)長,第一個字節(jié)是F0H,第二個字節(jié)是這個鍵的通碼值。擴展按鍵的斷碼通常有三個字節(jié),前兩個字節(jié)是E0H、F0H,最后一個字節(jié)是這個按鍵通碼值,每個按鍵具體的通斷碼值可查閱相關(guān)的碼表,這里不再贅述。
設(shè)計的PS/2接口模塊的主要功能是將輸入的PS/2按鍵值轉(zhuǎn)換成掃描碼,并最終轉(zhuǎn)換成ASCII碼輸出,同時要求能夠響應(yīng)PS/2鍵盤上的所有按鍵,包括基本按鍵和擴展按鍵,頂層實體如圖3所示。模塊內(nèi)部用VHDL語言編寫,用系統(tǒng)時鐘掃描PS/2設(shè)備時鐘線的變化,接收數(shù)據(jù)線上的數(shù)據(jù),然后按照PS/2的通信協(xié)議進(jìn)行解析,并暫存解析后的8位數(shù)據(jù)。另一方面需要對接收到的數(shù)據(jù)的判斷,判斷它是通碼還是斷碼,最后將斷碼進(jìn)行格式轉(zhuǎn)換,對于字母和數(shù)字,程序?qū)啻a通過譯碼程序轉(zhuǎn)換成ASCII碼,以備后續(xù)使用。在進(jìn)行PS/2接口模塊設(shè)計時需要注意以下兩點:
(1)PS/2的時鐘線需要多次鎖存
設(shè)計中發(fā)現(xiàn),需要對PS/2的時鐘線進(jìn)行多次鎖存,否則可能出現(xiàn)鍵值識別錯誤。在調(diào)試過程中將時鐘進(jìn)行兩級鎖存,發(fā)現(xiàn)按鍵識別時誤碼比較嚴(yán)重,時鐘線在每次按鍵時都會隨機地產(chǎn)生多余的干擾脈沖,使程序檢測到的時鐘數(shù)多出幾個,造成無法連續(xù)識別。當(dāng)將時鐘進(jìn)行十級鎖存后,誤碼率顯著降低,問題得到解決。
(2)兼容基本按鍵和擴展按鍵
PS/2鍵盤上的基本按鍵和擴展按鍵發(fā)送的鍵碼格式不同,但是對鍵盤掃描的結(jié)果需要輸出統(tǒng)一的格式,這就需要對數(shù)量較少的擴展按鍵做特殊處理。設(shè)計時發(fā)現(xiàn),擴展按鍵斷碼的最后一個字節(jié)和基本按鍵的并沒有沖突,簡單的做法是忽略它的第二個字節(jié)E0H,將鍵碼格式看成和基本按鍵的相同,當(dāng)檢測到通碼F0H,則使能標(biāo)志位,將其后的鍵碼取出進(jìn)行解析即可[3]。
圖3PS/2模塊
模塊中KBCLK是時鐘信號,KBDATA是按鍵的輸入值,PDATA是輸出掃描碼,功能仿真結(jié)果如圖4所示。由圖4可以看出,當(dāng)RESET為低電平時,執(zhí)行清零操作;根據(jù)PS/2協(xié)議的數(shù)據(jù)幀格式,第1位起始位,并總是邏輯‘0’,接下來的8位是數(shù)據(jù)位,低位在前,接下來1位是停止位,總是邏輯‘1’,圖中的鍵盤輸入KBDATA值是0001100001,PS/2設(shè)備返回值PDATA是00001100,說明按鍵識別正確。
圖4 時序仿真波形圖
采用現(xiàn)場可編程門陣列FPGA設(shè)計了一種PS/2設(shè)備接口電路,該電路主要由分頻模塊、通信協(xié)議控制模塊、譯碼模塊等組成。PS/2設(shè)備的數(shù)據(jù)輸入通過外圍接口單元進(jìn)入FPGA內(nèi)部,經(jīng)過控制與解析生成ASCII碼輸出,從而方便后續(xù)按鍵處理程序使用。程序采用VHDL語言編寫,具有較強的功能可移植性。FPGA芯片選用Altera公司的成熟產(chǎn)品EP2C8Q208,充分利用了其高速、大容量、組合靈活等優(yōu)點,并使用QuartusⅡ開發(fā)環(huán)境所提供的庫資源,最大限度地發(fā)揮FPGA的優(yōu)勢,大大簡化了系統(tǒng)設(shè)計,縮短了設(shè)計周期。軟件仿真及硬件調(diào)試表明,設(shè)計中的各個模塊能夠正確地進(jìn)行數(shù)據(jù)傳送,工作性能穩(wěn)定,達(dá)到了預(yù)期目標(biāo)。
[1]魏軍輝,王福源,周子昂等.基于FPGA的PS/2鍵盤接口的設(shè)計[J].微計算機信息,2008,24(26):138-140.
[2]李攀峰.基于SOPC技術(shù)的PS/2鍵盤接口電路設(shè)計[J].自動化與儀器儀表,2012,6:139-141.[3]劉昌華.?dāng)?shù)字邏輯EDA設(shè)計與實踐[M].北京:國防工業(yè)出版社,2005.
Design of PS/2 Interface Circuit Based on EDATechnology
Wang Yong1Song Xiao1Sun Mengfang2
(1.Henan University of Science and Technology,Luoyang 471023,Henan;
2.Luoyang Research Institute of Electro-Optical Equipment ofAVIC,Luoyang 471009,Henan)
A PS/2 interface circuit is designed based on FPGA chip and VHDL language.Hardware connection,communication protocol,design process and simulation result are introduced.Using the top-down design ideas,giving full play to the advantage of EDA technology,the design greatly shortens the design cycle.Software simulation and hardware debugging demonstrate that data can be transmitted accurately between the modules in the design and the system runs normally.
王勇,男,河南淮濱人,碩士,講師,研究方向:應(yīng)用電子電路開發(fā)與設(shè)計。
河南省教育廳科學(xué)技術(shù)研究重點項目,項目編號:14A510003;河南省教育廳自然科學(xué)研究項目,項目編號:13A510263。
【 Keywords】 PS/2 interface;FPGA;VHDL;communication protocol