張來勝
(鄭州市人力資源和社會保障數據管理中心,河南鄭州 450000)
隨著電子技術的發展,顯示屏的分辨率越來越高,高分辨顯示屏越來越普及。同時,人民生活水平的提高使得高清視頻普及,同時對高清視頻切換的需求量就增大,視頻切換速度要求提高。而目前市面上存在的視頻矩陣魚龍混雜,價格普遍比較昂貴[1]。因此,開發一種經濟實用的HDMI(High Definition Multimedia Interface,高清晰度多媒體接口)矩陣是非常有必要的。HDMI矩陣完成的功能是接收端接收信號源信號,經過芯片的通道選擇,從發送端將信號送給顯示設備[2]。
視頻矩陣系統分為上位機和下位機兩部分。下位機部分主要由電源模塊、STM32控制模塊、切換模塊、存儲模塊以及HDMI接口模塊構成,上位機部分主要實現對下位機的控制。電源模塊為整個系統供電,上位機為一個客戶端軟件,通過點擊界面操作向下位機發送命令,STM32接收上位機命令,然后向切換模塊發送對應的數據,切換模塊根據命令內容做出相應操作。系統設計框圖如圖1所示。

圖1 視頻矩陣系統總體模塊圖Fig.1 Overall module diagram of video matrix system
HDMI是目前應用廣泛的音視頻傳輸協議[3]。HDMI接口有5種類型,其中Type A類型使用最為廣泛。本系統采用的是Type A類型,目的是為了讓大多數設備直接使用。HDMI接口電路分為接收端和發送端兩部分。接收端從信號源接收信號,經過切換芯片轉換,從發送端發送給顯示設備。
接收端應該為信號源提供顯示器的EDID,告知信號源所發送的信號類型。DDC通道連接了一個存儲有EDID的EEPROM芯片,EEPROM有掉電不丟失數據,可擦除可讀寫的特點,可以用來存儲顯示器的EDID信息。EDID由128個或者256個字節組成,包含顯示屏的性能參數,供應商以及支持的顯示分辨率等信息。系統采用的EEPROM為AT24C02,最多可以存儲256個字節的數據,EDID最多為256個字節,保證夠用。只有當信號源讀取到EDID,才會將TMDS信號送出。信號源與切換芯片的接收端連接。另外,為了防止靜電,以防瞬間電壓過高擊穿電路板,在HDMI端口處增加了ESD器件[4]。將每一路TMDS信號的正負極分別接在ULC0524P引腳上,一個ESD器件可以接兩路TMDS。接收端HDMI電路圖如圖2所示。

圖2 接收端HDMI電路設計圖Fig.2 Design of HDMI circuit of receiver
發送端HDMI電路連接與接收端HDMI電路類似,只是不需要存儲EDID,電路去掉了AT24C02。
矩陣系統的MCU控制著整個系統邏輯[5],讀入按鍵輸入,控制LCD1602顯示屏輸出,控制芯片切換TMDS信號,控制著顯示屏EDID的讀取與EEPROM中EDID的寫入。控制RS232與NET通信與上位機通信。框圖如圖3所示。

圖3 主控芯片連接框圖Fig.3 Main control chip connection block diagram
切換模塊主要是由兩個LT8644芯片完成。LT8644是一種16*16的數字交叉開關,具有16個TMDS輸入通道和16個TMDS輸出通道。本系統采用了兩個LT8644芯片,一共可以傳輸32路TMDS信號,而一路HDMI信號包含4路TMDS信號,所以本系統是個8*8的視頻矩陣。
LT8644支持串口控制接口進行獨立的通道切換,訪問和控制只需要用一個IIC接口。芯片通過UPDATE和RESET引腳與STM32連接,完成芯片的復位功能和更新寄存器功能,復位功能是上電之后芯片需要復位才能開始工作。更新功能作用是在寄存器值發生改變以后完成更新操作。通過IIC總線與STM32通信,作為STM32的從機,通過SCL時鐘線和SDA數據線通信,從STM32接收數據并寫入切換芯片寄存器,寄存器的值改變了以后,執行UPDATE操作,芯片就會完成切換動作,如圖4所示。STM32也可以從切換芯片寄存器讀取數據來查看芯片狀態。

圖4 切換模塊框圖Fig.4 Block diagram of switching module
電源模塊使用的是TPS54302芯片,可利用不同的反饋電阻得到不同的電壓輸出。視頻矩陣的輸入電壓為5V直流電,LT8644芯片工作電壓需要3.3V和1.8V,STM32工作所需電壓為3.3V。轉換電路如圖5所示。TPS54302將5V直流轉換為3.3V直流,轉換為1.8V的電路圖與之類似,不過是將R502的22.1kΩ換成49.9kΩ。另外,STM32的3.3V工作電壓通過L T 8 6 4 4的3.3 V經過磁珠隔離后得到,20MHz帶寬紋波不大于30mV。

圖5 電源模塊電路圖Fig.5 Power module circuit diagram
3.1.1 下位機軟件總流程
系統上電后,首先需要設置時鐘、串口、以及各個芯片的初始化狀態并進行初始化。然后將FreeRTOS系統也初始化。待初始化完畢,在系統中創建兩個任務并進入任務調度函數。一個任務用來從串口1接收數據并且分析數據的有效性,若無效則丟棄,有效則存為命令結構。另一個任務用來解析命令,執行所需要的操作。系統就在這兩個任務中來回切換,實現對視頻矩陣的控制。系統總體流程圖如圖6所示。

圖6 系統軟件總流程圖Fig.6 General flow chart of system software
3.1.2 通信協議的設計
通信協議的設計是完成上位機與下位機交互的重要步驟。協議數據包格式如表1所示。其中,前三個字節為協議頭“$XG”,表示數據的開始,同時起著分隔命令的作用;接下來的一個字節數據為長度,代表內容的長度,假設長度字節數據的值為N,那么再接下來的N個字節數據即為數據內容,數據內容中的第一個字節代表控制命令號,其余的內容為自定義內容;最后兩個字節,為數據校驗和,采用小端序,校驗和應該等于長度和內容按字節相加所得出的和。

表1 協議數據包格式表Tab.1 Protocol packet format
上位機部分用Delphi做了一個客戶端軟件,軟件有兩個界面,一個主頁,一個功能頁。主頁中有切換類型,輸入通道,輸出通道和TCP/IP連接。首先,上位機要跟下位機輸入相同的IP號和端口號建立TCP連接,然后選擇切換類型,是音視頻同步切換還是只切換視頻或音頻。接下來選擇輸入通道,一次只能選擇一個輸入,但是可以同時選擇多個輸出,然后點擊切換按鈕,這樣可以完成一切多的操作。此外,主頁還有一個開啟或關閉指定輸出通道的功能。
第二個頁面是功能頁面,已完成的功能是讀取某一路輸出端口所接顯示設備的EDID,然后通過IIC總線寫入輸入接口的EEPROM中。輸出只可以選一個,輸入可以多選。
本系統可以實現RS232串口控制切換,上位機軟件通過網口控制切換。測試環境如下,所接輸入1為筆記本電腦輸入,輸入2為臺式機輸入,一個HDMI顯示屏接輸出1。
切換前屏幕選擇的輸入端口為輸入2,切換后的屏幕顯示畫面從輸入2變為輸入1,如圖7所示。

圖7 串口測試切換前后顯示器顯示圖Fig.7 Display before and after serial port test switching
通過以上多次測試,得出結論,視頻矩陣可以準確快速地完成切換,還可以完成關閉開啟輸出通道,讀取顯示器EDID功能。
本文設計的視頻矩陣實現了視頻快速切換的目標,可以完成視頻切換,視頻通道開啟關閉,顯示器EDID讀寫功能,并且在調好以后,即使斷電,下次開機時也能還原上一次的輸入輸出對應狀態。另外,本視頻矩陣控制方式多樣化,不但能通過RS232串口控制,還可以通過TCP/IP控制,且上位機軟件界面友好,人性化設計及布局,操作簡便易上手,具有較強的應用價值。