隨著電子設備技術不斷發(fā)展和產(chǎn)品功能不斷增加,一般情況下,,產(chǎn)品功能通常需要多個計算機配合實現(xiàn),。另一方面,在產(chǎn)品設計過程中,,為了提高產(chǎn)品的可靠性,,計算機備份技術作為提高產(chǎn)品可靠性重要手段之一也越來越多被采用。在這種情況下,,為了降低產(chǎn)品的復雜度,,合理使用有限的空間,在具體產(chǎn)品設計時,,往往只有單套計算機外設配給多套主機使用,。此時,需要解決多個主機之間的顯示器,、鍵盤和鼠標的動態(tài)切換問題,。
而這一問題可以通過外設共享來解決,使用外設共享控制器,,可實現(xiàn)雙主機或者多主機之間顯示器,、鍵盤和鼠標的動態(tài)切換,從而實現(xiàn)有限資源的合理利用,。
1 設計原理
1.1 外設共享控制器的功能介紹
按下外設共享控制器的主機1按鍵,,外設顯示器和鍵盤、鼠標連接到主機1,,同時主機1按鍵指示燈亮,;按下主機2按鍵,外設顯示器和鍵盤,、鼠標連接到主機2,,同時主機2按鍵指示燈亮。外設共享控制器具有自動掃描功能,,能夠監(jiān)測計算機的運行,。主機1先啟動,則外設顯示器和鍵盤,、鼠標連接到主機1,,同時主機1按鍵指示燈亮;主機2先啟動,,則外設顯示器和鍵盤,、鼠標連接到主機2,,同時主機2按鍵指示燈亮。另外,,也可通過鍵盤上設定的熱鍵(連續(xù)按兩次Ctrl鍵)來控制鍵盤,、鼠標、顯示器信號的切換,。
1.2 PS/2,、VGA接口介紹
外設共享控制器涉及的外設是鍵盤、鼠標和顯示器,,接口類型分別是PS/2口,、PS/2口和VGA口。PS/2鍵盤和鼠標履行一種雙向步串行協(xié)議,。也就是說,,每次數(shù)據(jù)線上發(fā)送一位數(shù)據(jù)并且每在時鐘線上發(fā)一個脈沖就被讀入。鍵盤/鼠標可以發(fā)送數(shù)據(jù)到主機,,而主機也可以發(fā)送數(shù)據(jù)到設備,,但主機總是在總線上有優(yōu)先權,它可以在任何時候抑制來自于鍵盤/鼠標的通訊,,只要把時鐘拉低即可。從鍵盤/鼠標發(fā)送到主機的數(shù)據(jù)在時鐘的下降沿(CLK由高到低的時候)被讀??;從主機發(fā)送到鍵盤/鼠標的數(shù)據(jù)在上升沿(當時鐘從低變到高的時候)被讀取。不管通訊的方向怎樣,,鍵盤/鼠標總是產(chǎn)生時鐘信號,。一個PS/2設備的工作頻率推薦值為15kHz左右,這意味著時鐘應該是高40μs低40μs,。所有的數(shù)據(jù)位安排在一個字節(jié)中,,每個字節(jié)為一幀,包含11~12個位,。這些位為1個起始位0,、8個數(shù)據(jù)位、1個校驗位,、1個停止位和1個應答位,。常用的六芯插座布局及其定義見圖1。
VGA接口是一種COMS/TTL接口,,15芯插座布局及其定義見圖2和表1,。VGA信號本身不需要初始化,可直接進行切換,?! ?/p>
1.3 外設共享控制器的設計原理
外設共享控制器的原理見圖3,,設計采用ATMEL公司的AT89S8252單片機,它擁有8k flash存儲區(qū),、256×8位RAM,。AT89S8252自帶EEPRO-M,且其P0,、P1,、P2、P3均可作為I/O口使用,。在本設計中,,鍵盤鼠標等PS/2口的切換主要是通過雙刀雙擲繼電器實現(xiàn),顯示的R,、G,、B信號主要通過AD8183芯片完成信號切換,H,、V信號通過54LS157芯片完成信號切換,。為保證顯示信號切換的一致性,通過一個雙刀雙擲繼電器對AD8183和54LS157進行統(tǒng)一控制,。本文為兩臺計算機設計一套鍵盤鼠標共享電路,,計算機數(shù)量多時,情形類似,?! ?/p>
2 設計買現(xiàn)
外設共享控制器需要解決計算機啟動對外設(PS/2、VGA)初始化,,并在計算機啟動完成后,,控制信號的動態(tài)切換。共分為硬件設計和軟件設計,。
2.1 硬件設計
單片機U1的P1口接鍵盤K0,、鼠標M0的時鐘、數(shù)據(jù)線,;P0口接計算機的鍵盤鼠標信號線,,即:PCI的時鐘線kbclk1、mselk1,,數(shù)據(jù)線kbda-ta1,、msdata1,PC2的時鐘線kbclk2,、msclk2,,數(shù)據(jù)線kbdata2,msdata2,;P2口用來控制計算機間的切換,。
計算機啟動時,,P0口的時鐘、數(shù)據(jù)線被拉高和拉低,,單片機檢測這些狀態(tài),,并根據(jù)PS/2協(xié)議讀出這些發(fā)來的命令。然后把這些命令直接發(fā)送給鍵盤K0,。K0應答計算機的命令,,單片機把這些應答數(shù)據(jù)轉發(fā)給計算機。對于后臺計算機,,單片機直接回應這些計算機發(fā)來的命令,。鼠標和計算機間的聯(lián)系和鍵盤相同。
習慣上,,指定其中一臺計算機設為前臺計算機,,單片機轉發(fā)這臺計算機的命令、數(shù)據(jù)給鍵盤,。當這臺計算機沒有接入時,,單片機自動指定另一臺為前臺計算機。
單片機的P2口外接一瞬態(tài)開關,,當開關按下時,,單片機接受一個脈沖,于是就把當前的前臺計算機和后臺計算機進行互換,。并放置指示燈指示對應計算機的狀態(tài),。
顯示信號分R、G,、B信號,H,、V信號,。前三個信號為模擬信號,用AD8183芯片控制,,在這個片子的輸入輸出端要力175Ω的匹配電阻,,并且這個片子需要5V電源供電。輸出選擇端在U2的223腳SEL,,當SEL端接地時,,A路輸出,否則B路輸出,。H,、V信號由54LS157控制,這是四組2選1的數(shù)據(jù)選擇器,,它的選擇端在1腳,,1腳拉高B路輸出,,1腳拉低A路輸出。這兩個片子的選擇端接到一個雙刀雙擲繼電器,,對AD8183和154LS15 7進行統(tǒng)一控制,。
2.2 軟件設計
計算機啟動時,運行BIOS,,檢測主板和各種外部硬件設備,,識別其設備類型,并對它們進行初始化,。當檢測鍵盤時,,如果掃描不到,且計算機在BIOS中設置PostBehavior->keyboard Errors->Report,,計算機就會停止初始化,,顯示出錯信息;否則,,認為鍵盤不存在,,跳過該設
備,計算機初始化結束后該設備不能用,。當多臺計算機與一個鍵盤相連時,,必須給沒有與鍵盤物理連接的計算機建立虛擬的鍵盤。這個虛擬外設能夠完成與計算機的數(shù)據(jù)交換,,幫助計算機順利通過BIOS檢測,。同樣,對于鼠標,,也必須建立虛擬鼠標使計算機通過BIOS檢測,。虛擬鍵盤和虛擬鼠標這些虛擬外設,在計算機給出命令時,,應答命令,,使計算機確信該外設存在。
BIOS檢測完成后,,計算機進入系統(tǒng)初始化過程,。在這個過程中,操作系統(tǒng)要對外部設備的具體參數(shù)進行設置,。鍵盤要設置機打速率/延遲(typematic rate/delay),;鼠標要設置采樣率(sample rate),讀取設備類型(不同類型的鼠標有不同的ID),,設置分辨率(resolution,,設置為每mm多少個計數(shù)點counts/mm),比例(scaling),設置數(shù)據(jù)報告禁止/允許,。同樣,,對于計算機必須建立虛擬外設,使系統(tǒng)確認外設存在,,以通過初始化,。
當上述過程完成后,系統(tǒng)就順利通過了初始化,。顯示器顯示一臺計算機的畫面,,該畫面對應的計算機稱為前臺計算機,不被顯示畫面的計算機為后臺計算機,。按下共享控制器上的切換按鈕,,外設選擇一后臺計算機,把其置前成為前臺計算機,,此時,,顯示器顯示該計算機的畫面,鍵盤鼠標響應該計算機,。原先的前臺計算機變?yōu)楹笈_工作,。
啟動過程的程序流程圖見圖4。
本文用Keil C開發(fā),,它提供了豐富的數(shù)據(jù)類型,,極大地增強了程序處理能力和靈活性,它能夠自動實現(xiàn)中斷服務程序的現(xiàn)場保護和恢復,,目標程序效率高,、可移植性好,是一種高級語言,,可讀性強,,維護使用方便靈活。軟件由主程序和中斷服務子程序組成,。主程序完成系統(tǒng)的初始化和計算機命令的響應,、鍵盤鼠標數(shù)據(jù)的發(fā)送。中斷程序主要包括鍵盤熱鍵切換,、外部按鍵切換。軟件功能模塊結構清晰可讀,。程序流程圖見圖4和圖5,。
系統(tǒng)上電,外設共享控制器上電并開始對AT89S8252初始化,。包括對變量,、串口、定時器,、中斷控制,、看門狗進行初始化操作,。在這個過程中還需要對外部的計算機的PS/2外設進行初始化應答。并且自動掃描啟動計算機,,PS/2,、VGA外設連接啟動計算機,并顯示啟動計算機的畫面,。
當完成BIOS檢測和操作系統(tǒng)檢測應答后,,單片機進入主程序,執(zhí)行正常鍵盤鼠標的操作功能,。讀取P1.1上鍵盤給主機的數(shù)據(jù)看是否有“切換前/后臺計算機”的熱鍵按下,,如果是,將切換,;否則,,連接當前計算機。
3 設計小結
本論文完成了主機1和主機2的鍵盤,、鼠標,、顯示器幾種外設的共享,解決了PS/2口,、VGA接口共享時遇到的問題,。實物經(jīng)過篩選試驗、環(huán)境適應性試驗,、電磁兼容試驗,,性能良好,安全可靠,。