楊君寶,潘 巖,李 萌
(山東超越數控電子有限公司 山東 濟南 250104)
近年來,隨著計算機技術、互聯網技術的普及以及大眾對計算機進行商務、學習、生活、工作等需求的增長,計算機已經成為人們學習和工作生活中不可或缺的高科技產品之一,現在計算機已經進入實用階段,越來越多的人們擁有了自己的計算機。同時,隨著信息化建設的不斷深化,在人們日常的工作生活中,許多辦公室或家庭需要同時使用多臺計算機。為了控制成本,節約機房的使用空間,提高效率,減少耗能,需要一種行之有效的設備對多個PC進行系統管理[1-2]。KVM切換技術應運而生,KVM 是英語中鍵盤(Keyboard)、顯示器(Video)、鼠標(Mouse)三個單詞第一個字母的縮寫,通過一套KVM可以實現對多臺PC的控制,從而實現集中管理操作[3-4]。
目前,使用比較多的是機械式切換器,它主要采用繼電器來實現切換,機械式切換器壽命短,切換次數有限,不適合長期使用[5]。現在已經出現了采用專用視頻切換芯片的數字式切換器,視頻圖像清晰,可靠性高,但是價格比較昂貴,在一些對視頻圖像要求不高的場合使用效率不高。為此,本文利用模擬開關技術及單片機IAP技術設計了一個基于AVR單片機的KVM擴展平臺,擴展了KVM資源,實現了對多套PC設備的切換控制。
電路、按鍵切換及指示電路、電源電路等四部分組成,擴展平臺結構圖如圖1所示。其中在信號擴展電路中,將信號擴展分成了VGA信號擴展、PS/2鍵鼠信號擴展和電源及地信號擴展3部分;機房里的PC設備通過被控PC接口與擴展平臺連接;一套顯示器、鍵盤、鼠標通過本地KVM連接到擴展平臺上。本平臺通過按鍵切換電路或者鍵盤熱鍵來控制信號切換開關,可是實現用一套KVM選擇性地控制6臺PC的功能,當某一路PC被切換選擇時,切換指示電路會將相應的指示燈點亮顯示。
從擴展平臺結構圖中可以看出,本地KVM的鍵盤、鼠標信號,通過信號擴展電路與被選擇的PC的鍵盤、鼠標通道連通,PC接收來自鍵盤、鼠標的數據包并將其解碼、處理,而KVM的VGA信號通過信號擴展電路與選中PC機的視頻通道連通,同時將該PC設備的VGA信號傳送至KVM顯示器,從而實現VGA切換控制。基于以上分析,該平臺的設計主要有兩大部分組成:硬件設計與軟件實現。其中硬件電路上又有4部分組成:信號擴展電路、按鍵切換及指示燈電路、單片機切換控制電路、電源電路;軟件上主要有ATmega8單片機程序設計。
整個擴展平臺主要包括信號擴展電路、單片機切換控制

圖1 擴展平臺結構圖Fig.1 Extend platform structure diagram
通過對KVM信號進行分析,整個KVM需要擴展的信號圖。在芯片選擇時要注意CD400系列芯片頻率不夠,應該考慮74HC系列芯片,本平臺選用的模擬開關芯片是MM74HC4053和 MM74HC4051。
對于電源及地信號的擴展,由于模擬開關芯片最大允許500 mA的電流導通。而實際過程中電源及地中的電流可能大于500 mA,因此,不能單純的利用模擬開關進行擴展,需借助于MOS管(其導通能力較大)來實現。本平臺采用增強型MOS管配合三極管可以很好的達到增大電流的效果:通過三極管的導通、截止進而判定MOS管的通斷從而實現分路切換。圖3是部分電源及地信號擴展原理圖,在運用MOS管時一定要注意其導通和截止的條件。
從KVM引出來的11路信號,經過擴展之后變成了11×6路,但是需要根據被控請求將其中一路與主信號連通,即要對6路擴展信號進行切換控制,以滿足平臺要求。采用單片機作為切換控制電路的核心控制器,單片機選用AVR單片分為VGA信號和PS/2信號。其中VGA信號主要有3路模擬信號(R、G、B 信號)和 2路數字信號(VSYNC、HSYNC 信號),PS/2信號主要包含 4路數字信號(MDATA、MCLK、KDATA、KCLK信號),另外將VGA信號及PS/2信號中的電源及地信號單獨拿出來進行擴展。運用模擬開關技術將每一路信號擴展成了6路。
模擬開關是一種根據相應控制命令實現通斷模擬信號傳輸的電路器件[6]。模擬開關有開關特性和半導體特性雙重特性。模擬輸入信號電壓的過高或過低都會導致MOSFET管反向偏置,無法正常工作。因此在應用模擬開關芯片時,一定要保證模擬信號的電壓在規定上午范圍內[7]。用兩片4053就可以擴展成6路模擬信號,把它們的O/IA,O/IB,O/IC連在一起作為公共輸入端,通過控制A,B,C得高低從而選定與哪一路(AY,BY,CY)導通,用一片 4051就可以擴展 6路(最多可達8路)數字信號,圖2是部分VGA及PS/2信號擴展原理機,具體型號為ATmega8,這是一款基于RSIC結構的低功耗8為單片機,最多23個可編程I/O口,可任意定義I/O的輸入/輸出方向;輸出時為推挽輸出,驅動能力強,輸入口可定義為三態輸入,可以設定內部上拉電阻,省去外部上拉電阻。片內集成了較大容量的非易失性程序和數據存儲器以及工作存儲器[8]。該系列單片機是在AT90系列的基礎之上開發的,除了保留了AT90系列單片機的優點之外,ATmega系列單片機的穩定性和抗干擾性更強,使用更加靈活,功耗更低。圖4是單片機切換控制電路原理圖。

圖2 部分VGA及PS/2信號擴展原理圖Fig.2 Part of VGA and PS/2 signal extension principle diagram
單片機要實現兩個功能:讀取I/O口的信息來獲取相關的切換請求;根據切換請求通過自身的端口輸出對應的切換命令至模擬開關的控制端口A、B、C。
電源電路設計中采用三端穩壓器件將來自電源的+12 V/-12 V電壓變換成模擬開關芯片及單片機等芯片所需的工作電壓。在按鍵切換及指示電路設計中,通過復位按鍵將對應的切換指令傳送給單片機,切換成功時單片機會將對應的指示燈點亮。

圖3 電源及地信號擴展原理圖Fig.3 Part of power and ground signal extension principle diagram

圖4 單片機切換控制電路原理圖Fig.4 Single-chip switching control circuit principle diagram
擴展平臺切換功能實現的過程中利用了單片機的IAP技術(在應用中可編程),ATmega8可以完成IAP的功能,即不需要特定的下載軟件,而只需要一根串口線,在單片機自己本身的控制下,利用固化在引導程序區內的引導程序(BootLoader),通過串口將外部源程序寫入Flash應用程序區的方法[9]。詳細來講:每次加電運行時,單片機都會先跳入引導程序區運行BootLoader程序,然后通過串口判斷外部是否有源程序下載命令,如果有下載指令,那么單片機首先擦除原來的程序代碼(按頁擦除),接著將目標源程序從應用程序區第一行位置開始寫入;如果沒有程序下載指令,則單片機直接跳入應用程序區第一行位置開始執行程序,由于目標源程序編寫的都是LOOP循環程序,所以,只要串口沒有接收到下載指令單片機循環執行該程序,從而實現了所需的功能。
KVM擴展平臺有兩種切換模式:熱鍵切換模式和按鍵切換模式,兩種切換模式的邏輯是相同的,但是切換條件和方式不同。KVM擴展平臺切換程序框圖如圖5所示。

圖5 切換控制流程圖Fig.5 Switch control flow chart
切換控制程序的編寫是在基于Arduino的開發環境下利用processing語言實現的。Arduino是集軟硬件于一體的開源電子平臺,平臺中包含了基于單片機的開源物理平臺以及開源的Arduino軟件開發環境,編寫的程序可讀性強。程序設計采用模塊化設計,主要包含主程序、熱鍵切換子程序及按鍵切換子程序等。主程序主要是對各個子模塊進行初始化和調用子程序。熱鍵切換首先設定某個鍵盤按鍵為熱鍵,通過單片機不斷查詢鍵盤的KDATA信號,來判斷該熱鍵是否被按下來進行切換,若查詢到有熱鍵切換信號,則單片機按照順序進行循環切換,當切換至第六臺PC時若還有熱鍵按下則會切換至第一臺PC設備。按鍵切換則是通過MCU不斷地查詢PC0~PC6端口,判斷按鍵是否被按下,進而通過I/O輸出對應的切換指令實現切換。
該擴展平臺成功的結合了單片機IAP技術、模擬開關技術實現了在一套KVM設備下對6個PC設備的切換控制功能,其中VGA的R、G、B信號采用MM74HC4053芯片進行切換,其他信號采用MM74HC4051芯片進行切換。通過測試,視頻切換輸出信號良好、鍵盤鼠標的靈敏度也比較好,達到了預期的設計要求。整個平臺擴展性很強,可根據要求實現對更多的設備的切換,造價低,在提高工作效率的同時還節省了空間。但是若對視頻輸出質量的要求比較高,建議使用相關的視頻切換芯片和性能更強的控制芯片來設計VGA擴展模塊,在一些對視頻輸出質量要求不高的場合,本平臺可以為其提供很好的視頻顯示及鍵鼠控制功能。
[1]許乃利,徐超,吳瓏.基于AVR單片機的KVM切換模塊的設計[J].儀器儀表學報,2010,31(8):139-142.XU Nai-li,XU Chao,WU Long.Design of KVMswitch module based on AVR microcontroller[J].Chinese Journal of Scientific Instrument,2010,31(8):139-142.
[2]夏海明,曹建.基于ATmega16的多路KVM切換器設計及應用[J].計算機應用與軟件,2012,29(11):229-231.XIA Hai-ming,CAO Jian.Design and application of multiplexer KVMswitches based on ATmega16[J].Computer Applications and Software,2012,29(11):229-231.
[3]于治樓,陳乃闊,牛玉峰.KVM控制器的分類與設計[J].信息技術與信息化,2010(2):18-20.YU Zhi-lou,CHEN Nai-kuo,NIU Yu-feng.Design and classification of the KVM controller [J].Information Technology and Informatization,2010(2):18-20.
[4]ZHAO Ke-xin,SU Ling-li,HAO Guo-fen,et al.Research for optimization of KVMswitch[J].Instrument Techniques and Sensor,2010(9):90-94.
[5]LI Shou-long.Implementation of generation algorithm in KVM[J].Computer Engineerring,2006(11):69-71.
[6]宋吉江,牛軼霞,于春戰,等.CMOS模擬開關及其選擇問題[J].微電子技術,2001,29(3):58-60.SONG Ji-jiang, NIU Yi-xia, YU Zhan-chun,et al.CMOS analog switch and its choices[J].Microelectronic Technology,2001,29(3):58-60.
[7]楊君寶,劉蘊紅.基于AVR單片機的ELVIS II擴展平臺[J].測控技術,2013,32(7):66-69.YANG Jun-bao,LIU Yun-hong.Design of ELVIS II expanded platform based on AVR[J].Measurement and Control Technology,2013,32(7):66-69.
[8]包秀榮,王楠.AVR單片機的特點與應用[J].內蒙古科技與經濟,2004(6):51-52.BAO Xiu-rong,WANG Nan.Feature and application of AVR microcontroller[J].Inner Mongolia Scientech and Economy,2004(6):51-52.
[9]曹翊軍,薛升寧,郭寶龍.BOOTLOADER的原理及設計要點[J].電子元器件應用,2008,10(1):61-61,66.CAO Yi-jun,XUE Sheng-ning,GUO Bao-long.The principle and design points of bootloader[J].Electronic Component and Device Applications,2008,10(1):61-61,66.