趙文龍,艾志清,劉 陽
(南昌航空大學1a.信息工程學院;1b.測試與光電技術學院,江西 南昌 330063;2.深圳載德光電技術開發(fā)有限公司,廣東 深圳 518072)
責任編輯:魏雨博
隨著視頻矩陣的廣泛運用,視頻切換器已經不僅僅局限于用來選擇視頻圖像信號,它正朝著大容量、多功能、可聯網、應用可定制等方向發(fā)展。它與計算機連接,組成功能強大的微機多媒體中央監(jiān)控系統;與多種控制方式、多種控制設備組成可多人同時獨立操作的監(jiān)視監(jiān)控系統[1]。因此,視頻矩陣控制系統的軟件也變得越來越復雜。
目前,國內大多數矩陣控制系統都是通過單片機來實現。一方面,由于單片機的邏輯控制程序與底層硬件驅動密不可分,一旦系統硬件發(fā)生改變,整個邏輯控制程序便隨之改變,而且,單片機的處理能力有限,難以用其開發(fā)復雜的系統應用程序及實現系統的網絡控制功能。另一方面,通過移植嵌入式Linux操作系統并在其平臺上進行矩陣控制應用程序的開發(fā),不僅隔開了與底層硬件的直接聯系、方便了底層硬件的升級,而且還可根據不同的用戶需求進行定制開發(fā)。同時,嵌入式Linux操作系統還提供了強大的網絡服務,從而可實現矩陣控制系統的網絡控制[2-4]。另外,本系統采用的M21123視頻切換芯片還可以對輸入、輸出端口進行自由配置,克服了傳統矩陣輸入、輸出端口固定的缺點。為此,設計出一款以嵌入式Linux操作系統為平臺,以Samsung公司的S3C2416為主控制器的SDI矩陣控制系統,以滿足用戶不斷提高的使用需求。
系統采用模塊化的設計理念,把整個視頻矩陣系統劃分為中心處理模塊、人機交互模塊、信號輸入模塊、視頻切換模塊、信號輸出模塊和電源模塊六大部分,然后,再由一塊背板通過總線把各個模塊集合成一個視頻矩陣系統。
其中,中心處理模塊負責建立、協調各個模塊之間的通信,解析來自各個模塊的命令,并把解析后的命令轉到相應的模塊進行處理;人機交互模塊包括本地觸摸屏GUI界面、上位機操作軟件及Web網絡服務,它主要用來接收用戶的命令輸入,并把接收到的命令打包成標準的命令格式,再發(fā)送給中心處理模塊進行解析;信號輸入、輸出模塊分別負責視頻或控制信號的輸入、輸出處理;視頻切換模塊負責建立信號輸入、輸出模塊的視頻通道映射;電源模塊負責整個系統的電源管理。各個模塊設計成獨立的電路板,中心處理模塊對應主控制板,信號輸入、視頻切換、信號輸出模塊則分別對應信號輸入、視頻切換、信號輸出板,它們通過金手指與背板進行連接。背板總共有8個卡槽,其中,主控板、視頻切換板各占1個卡槽,信號輸入、輸出板占其他6個卡槽。每個信號輸入、輸出板可實現4路SDI信號的處理,由此可知,系統最大可以處理24路SDI信號。但按照不同的現場應用需求,還可以靈活地組成4×20、8×16、12×12、16×8共4種不同容量的視頻矩陣切換系統[5]。本文主要討論中心處理模塊的設計,其他模塊也作簡單的介紹。
中心處理模塊是視頻矩陣系統的控制中心,在整個系統中發(fā)揮著“大腦”的作用,負責對外聯絡和對內控制。對外與PC通信,以接收操作人員發(fā)出的切換指令和其他控制命令,繼而向其他模塊發(fā)送指令,以實現切換控制功能[5]。中心處理模塊主要由ARM9處理器S3C2416、串口收發(fā)芯片MAX232、網絡控制芯片DM9000C、CAN控制芯片MCP2515和觸摸屏LCD等組成,其硬件接口設計如圖1所示。
圖1 中心處理模塊的硬件接口設計
視頻交換功能是視頻矩陣系統的業(yè)務核心,它采用MNDSPEED公司生產的M21123作為視頻切換芯片。該芯片是一款低功耗、24端口的高速數字視頻交叉切換芯片,含有18個輸入、輸出可配置端口,6個固定輸出端口。它具有傳輸信號損失補償、輸入信號均衡、輸出DE增強、幅度調節(jié)的功能,支持3G/HD/SD-SDI信號[6],同時提供2線I2C和4線SPI編程接口。
為了提高視頻切換響應速度,采用4線的SPI接口。M21123提供的4線SPI總線讀寫操作數據幀如圖2所示,由圖2可知M21123的SPI操作并不是標準的SPI操作。
圖2 M21123數據幀
S3C2416的SPI總線只能提供8/16/32位數據傳輸,為此,本系統采用普通的IO口模擬SPI總線。根據M21123的SPI讀寫操作時序圖(圖3)可知,要完成一次寫操作,xCS片選信號首先拉低,延時Tcs后,SCLK開始發(fā)送時鐘信號,SI開始連續(xù)發(fā)送起始位1、讀標志位0、8位地址及8位數據,在最后一位數據傳輸結束前Tcs時間,拉高xCS片選線,之后再延遲一個Tcs使移位寄存器的數據存儲到地址中去。此時,寫操作完成。
圖3 M21123 SPI讀寫時序(截圖)
同樣地,在完成一次讀操作時,要先把xCS片選拉低,延時Tcs時間后發(fā)送起始位1、寫標志1及8位地址,發(fā)送完畢后,移位寄存器開始通過SO向外發(fā)送8位數據[6]。至此,讀操作完成。由此,就可以設計出對M21123芯片操作的Linux驅動程序,實現系統對M21123芯片的讀寫操作。
根據系統板卡間點對多的通信特點,本系統采用CAN總線作為板間的通信總線。CAN總線是一種多主機方式的串行通信總線,數據傳輸距離可長達10 km,傳輸速率高達1 Mbit/s,具有可靠的錯誤處理和檢錯機制。系統采用的CAN控制器為MCP2515,它帶有SPI接口,支持CAN總線規(guī)范2.0B,并支持標準數據幀和擴展數據幀,內含2個接收緩存器、3個發(fā)送緩存器、6個29位的驗收濾波寄存器及2個29位的驗收屏蔽寄存器。另外,其SPI接口時鐘頻率最高可達10 MHz[7],與S3C2416的高速SPI接口匹配。
圖4是MCP2515的外圍CAN總線接口框圖,為使CAN網絡系統具有更高的可靠性和電器安全性,可在MCP2515同CAN總線收發(fā)器(TJA1050)之間使用高速光耦,以此來進行完全的電氣隔離。與此同時,在光耦兩端電路的電源處,也必須使用電源隔離模塊來進行隔離。而在TJA1050的CANH及CANL引腳與地之間連接2個電容(30 pF),以過濾CAN總線上的高頻干擾。因此,在當總線電壓發(fā)生瞬間的干擾時,2個二極管可以起到保護作用。另外,由于光耦正常工作的輸入電流為10 mA左右,而內部發(fā)光二極管的正向電壓降為1.7 V左右,故應注意輸入端串聯電阻的阻值選擇[8]。
圖4 MCP2515 CAN總線接口電路
系統選擇的內核版本是Linux2.6.32.9,其源碼可以從http://www.kernel.org/網站下載。文件下載后就可以在宿主機上裁剪Linux內核。第一步,修改內核目錄下的Makefile文件,將ARCH?=MYM(SUBARCH)和CROSS_COMPILE?=MYM(CONFIG_CROSS_COMPILE:“%”=%)修改為ARCH:=arm(指定目標平臺為ARM)和CROSS_COMPILE=arm-none-Linux-gnueabi-(指定交叉編譯器)。第二步,根據系統對硬件驅動的要求,添加視頻交換芯片M21123、CAN控制芯片MCP2515驅動,修改NAND Flash、DM9000C網卡、串口、觸摸屏等驅動。并添加系統對CAN協議、ubifs文件系統的支持。最后,通過交叉編譯內核后,產生內核文件uImage。
文件系統采用具有更高效的損耗均衡機制的嵌入式小文件系統ubifs。在制作ubifs文件系統的過程中,首先,通過 mtd - utils-1.4.6.tar.bz2(從 ftp://ftp.infradead.org/pub/mtd- utils/網站獲取)源碼制作 mkfs.ubifs、ubinize工具;其次,通過busybox制作系統工具,并編譯生成相關的庫文件,并編寫一個調用mkfs.ubifs、ubinize工具和設置相關參數的腳本[9]。最后,執(zhí)行腳本完成ubifs文件系統的制作。
系統軟件總體架構如圖5所示,由圖5可知,命令解析器是整個應用軟件架構的核心,它對來自串口、網口、CAN的命令進行解析,解析后轉到相應的處理模塊執(zhí)行。同時,解析器還提供一套基于串口和網口的對外通信編程接口[10],方便用戶進行二次開發(fā),把矩陣系統集合到自己的中央控制系統中去。
3.2.1 命令解析器的接口設計
圖5 系統軟件架構
在系統中,把命令設計為 Request,Response,Event,Complete_Event四種命令類型,其中UI主動向系統請求執(zhí)行某個操作的命令為Request命令;當系統處理完Request命令后,報告操作結果的命令定義為Response命令。在系統執(zhí)行完一個Request命令后,除了用Response向UI報告操作結果以外,還可能把大量的數據以多個命令的方式報告給UI,這個命令被定義為Event命令;對于有的Request命令,系統執(zhí)行完成后,會使用多個Event命令將相關的數據報告給UI,當所有數據報告完畢后還需要向UI發(fā)送命令來通知UI數據報告完畢,這個命令被定義為Complete_Event命令。
根據矩陣控制系統的功能需求,將命令劃分為若干組,每一個命令屬于且只屬于一個組,使用一個ID來標識每一個組,這個ID被定義為GID。在一個組內,不同的命令需使用另外一個ID來區(qū)分,這個ID為OID。最后,GID和OID共同組成了一個命令的操作碼。每一個命令可以帶參數,也可以不帶參數,參數列表定義為大端模式。命令使用的規(guī)則是:每一個Request命令和其對應的Response命令共享一個操作碼,每一個Request命令的OID的最高bit位為0;每一個Event命令和Complete_Event命令OID的最高bit位為1。命令定義的格式如表1所示。
表1 命令格式定義
根據表1中的命令定義格式及使用規(guī)則就可以定義出系統需要的命令,例如,一路視頻輸入映射到若干路視頻輸出的Response命令,其GID定義為0x02,OID定義為0x01,該命令帶參數列表,參數定義如表2所示,這樣一個切換命令就定義完成,其他命令定義依次類推。
表2 命令參數列表
3.2.2 命令解析器的程序設計
圖6為命令解析程序的基本流程,系統上電后,首先,進行系統的初始化,包括各模塊數據結構的初始化,打開串口、視頻切換芯片M21123、CAN等設備驅動文件,設置系統啟動參數,并創(chuàng)建CAN數據、串口數據、網口數據、命令解析四個子處理線程。然后,根據解析器接口定義,把從CAN、串口、網口收到的數據打包成統一的數據結構CB_MSG形式,并把CB_MSG格式數據推入一個環(huán)形命令隊列。最后,命令解析子處理線程不斷讀取環(huán)形命令隊列,再根據讀取的命令操作碼轉到不同的命令處理子函數中,子函數再調用底層驅動以實現對命令的最終處理。
圖6 命令解析器程序基本流程
例如,命令解析處理子線程從命令環(huán)形隊列里讀到一個切換命令,首先,通過函數 onParserMsg(CB_MSG*pMsg)提取該命令所屬的GID,再根據GID跳轉到該組GID命令的處理函數onSwitchCmd(uint16 opcode,CB_PARAM*pParam)中,然后,通過具體的操作碼跳轉到的操作碼處理函數onCreateTieReq(CB_PARAM*pParam)中,最后,通過createMediaTie(uint16 input,uint16 output)函數調用M21123視頻切換芯片底層驅動完成視頻的切換。
3.2.3 命令解析器的測試
首先,借助串口、網口調試工具來調試命令解析器,通過串口、網口調試工具發(fā)命令給解析器,解析器把程序執(zhí)行的結果打印出來,通過觀察打印log信息來判斷命令是否執(zhí)行正確。以上測試完成后,進行實際矩陣測試,在SDI視頻矩陣上插入3塊SDI輸入板卡和3塊SDI輸出板卡,并在SDI輸入端口5接入SDI信號,輸出口連接到帶SDI接口的顯示設備。圖7為本地觸摸屏GUI命令輸入界面,在GUI界面輸入命令5X17&18&20后,按回車執(zhí)行,從界面狀態(tài)信息欄可知,輸入口已經成功映射到輸出口17、18、20,同時,觀察連接的顯示輸出設備,發(fā)現有信號正常輸出,由此可知命令執(zhí)行成功,如此反復測試其他命令。測試結果表明,矩陣控制系統程序運行穩(wěn)定可靠,滿足使用要求。
圖7 GUI操作界面(截圖)
本文介紹的視頻矩陣控制系統在硬件上采用模塊化的設計方式,各功能模塊自成小系統,且相互間結構緊湊、接口清晰,極大地方便了系統的維護和改造升級。在軟件上移植了Linux操作系統,巧妙地設計了命令解析器的應用程序,根據解析器命令接口規(guī)則可以方便地進行新命令的添加。除此之外,系統還可通過以太網進行矩陣間的聯網,實現大范圍的集中控制。本系統雖然是基于24端口的SDI視頻矩陣的控制系統,但通過視頻交換板和視頻輸入、輸出板的升級,還可支持更大規(guī)模的視頻矩陣和更多類型的視頻接口。
[1]秦迎春.實現嵌入式矩陣切換控制系統的設計[J].微計算機信息,2008,24(23):121-122.
[2]陳治國,李兆軍.基于AD8113的視頻矩陣切換系統的設計[J].電子技術應用,2005,31(12):73-75.
[3]凌有鑄,王冠凌,楊會成,等.基于多級切換視頻監(jiān)控矩陣系統的設計[J].自動化與儀器儀表,2008,28(3):1-3.
[4]韓春梅.基于MAX456的視頻切換矩陣設計[J].電視技術,2004,28(3):91-93.
[5]張娜娜,錢步仁.64×64RGBHV視頻矩陣切換器的設計[J].國外電子測量技術,2010,29(4):78-82.
[6]Mindspeed.21123-DSH-001-A datesheet[EB/OL].[2013-01-01].http://www.mindspeed.com/.
[7]Microchip Technology Inc.MCP2515 datasheet[EB/OL].[2013-01-01].http://www.microchip.com/2005-10/2012-10.
[8]陳衛(wèi)國,戴瑜興.基于CAN總線的視頻切換矩陣設計[J].低壓電器,2007(22):5-9.
[9]梁泉.嵌入式Linux系統移植及應用開發(fā)技術研究[D].成都:電子科技大學,2006.
[10]謝曉娟.嵌入式智能家居監(jiān)控系統的設計[D].上海:華東師范大學,2011.