摘 要: 介紹一種以單片機(jī)為主控CPU的嵌入式視頻切換器,簡述其工作過程、硬件構(gòu)成、軟件設(shè)計。該切換器已成功地應(yīng)用于湖南省地縣電視會議系統(tǒng)中,實(shí)際應(yīng)用表明,切換器工作可靠、成本低廉,具有很強(qiáng)的通用性和很高的實(shí)用價值。該切換器亦可用于普通的多媒體監(jiān)控系統(tǒng)。
關(guān)鍵詞: 89C51單片機(jī) 視頻切換 嵌入式 I2C總線
隨著多媒體通信技術(shù)的迅速發(fā)展,會議電視的理論研究和實(shí)用系統(tǒng)研制也得到了迅速發(fā)展。近年來,我國的會議電視業(yè)務(wù)也以超出人們想象的速度得到推廣應(yīng)用。視頻矩陣切換電路是會議電視系統(tǒng)的關(guān)鍵部件。要求具有以下功能:
·具有與多媒體電腦通訊的功能??筛鶕?jù)實(shí)際安裝的不同需要,提供可選的通訊接口。
·對主機(jī)發(fā)送的命令具有分析、判斷、處理的功能。
·具有上電、掉電和死機(jī)等異常情況下的自恢復(fù)能力。
·對系統(tǒng)配置的更新具有保存的功能。當(dāng)上級控制命令對系統(tǒng)更改成功時,能及時保存所更改的信息。
考慮到該部分電路在系統(tǒng)中的獨(dú)立性和功能要求,決定選用89C51單片機(jī)作為主控CPU實(shí)現(xiàn)嵌入式的視頻矩陣切換;視頻切換電路則根據(jù)視頻通道的多少,可選用 MAX459、AD8111等不同的視頻矩陣切換芯片。
1 硬件構(gòu)成
硬件電路主要由單片機(jī)控制器、矩陣切換電路、通訊接口、I2C總線數(shù)據(jù)存儲器、看門狗電路及其它外圍電路組成??驁D如圖1所示。
1.1 單片機(jī)控制器
89C51單片機(jī)是ATMEL公司生產(chǎn)的8位單片機(jī),采用CMOS工藝,與Intel的8051單片機(jī)在管腳功能上完全兼容。該控制器采用P0口作為矩陣切換數(shù)據(jù)的輸出口;P1口用來對矩陣切換發(fā)出/UPDATE、/CE等控制命令;P2口用來設(shè)置該控制器在整個會議電視系統(tǒng)中的地址。由硬件來設(shè)置控制器的地址可以增強(qiáng)系統(tǒng)的可靠性,方便軟件的設(shè)計。
1.2 通訊接口部分
通訊接口可以根據(jù)實(shí)際安裝的不同需要,提供RS-232標(biāo)準(zhǔn)和RS-485標(biāo)準(zhǔn),其波特率可由用戶編程設(shè)定。這部分電路主要由MAX202E(+5V RS-232接收發(fā)送器)、MAX491和光電耦合器件6N137構(gòu)成。
1.3 復(fù)位與看門狗電路
采用MAX813L作為電源監(jiān)視和看門狗電路。當(dāng)電源上電、掉電時,該芯片都可提供復(fù)位電平,并且當(dāng)其WDI管腳不能采集到翻轉(zhuǎn)信號時,就會發(fā)送200ms的復(fù)位脈沖。單片機(jī)控制器采用P3.2腳定時向看門狗電路發(fā)送電壓翻轉(zhuǎn)信號,以示系統(tǒng)正常工作。當(dāng)由于外部干擾或其他原因?qū)е滤罊C(jī)時,看門狗電路會自動發(fā)出復(fù)位信號。
1.4 I2C總線數(shù)據(jù)存儲器
I2C總線是由Philips公司提出的串行通訊接口規(guī)范,使用串行數(shù)據(jù)線(SDA)和串行時鐘線(SCL)來進(jìn)行主從器件之間的數(shù)據(jù)傳輸。I2C總線上的數(shù)據(jù)傳輸率可達(dá)100Kbit/s,快速方式下可達(dá)400Kbit/s。在I2C總線傳輸中,開始和停止條件定義如下:當(dāng)SCL為高時,SDA由高變?yōu)榈蜑殚_始條件;當(dāng)SCL為高時,SDA由低變?yōu)楦邽橥V箺l件(如圖2)。SDAH和SCL都是雙向傳輸線,SDA線上的數(shù)據(jù)在時鐘高期間必須是穩(wěn)定的,只有當(dāng)SCL線上的時鐘信號為低時,數(shù)據(jù)線上的狀態(tài)才可以改變(如圖3)。輸出到SDA線上的每一個字節(jié)必須是8位,每次傳輸?shù)淖止?jié)不受限制,每個字節(jié)必須有一個應(yīng)答位。
在該控制器中,采用的串行E2PROM芯片是X24C04,SCL和SDA分別接單片機(jī)的P3.6和P3.7腳,數(shù)據(jù)的讀寫完全由軟件控制。
1.5 矩陣切換電路
矩陣切換電路以16×8為基本單元,可根據(jù)實(shí)際需要擴(kuò)充為32×8、64×8、128×16等不同規(guī)模??刂齐娐房赏ㄟ^參數(shù)的設(shè)定控制不同規(guī)模的切換電路。所采用的芯片AD8111是一種高速視頻切換矩陣,具有260MHz的視頻帶寬。AD8111可在并行或串行模式下工作,八個輸出通道可任選十六路視頻輸入中的一路。并行模式(本次所用的為并行模式)下,在信號/UPDATE為高,/CE為低的條件下,當(dāng)CLK為高時控制器發(fā)出更新數(shù)據(jù),在CLK由高變低時,AD8111通過A0~A2和D0~D4管腳分別將數(shù)據(jù)送至輸出和輸入寄存器。其中A0~A2表示選中的輸出;D0~D3為所對應(yīng)的輸入;若D4=1,則A0~A2表示的輸出為選通狀態(tài),否則輸出為高阻態(tài)。當(dāng)/UPDATE由高變?yōu)榈蜁r,選中的輸出與輸入連通,矩陣的更改完成。
2 軟件設(shè)計
根據(jù)會議電視系統(tǒng)的整體要求,軟件主要由主程序和串口中斷服務(wù)子程序組成。編程時著重考慮了以下幾方面:對整個控制器正確地初始化;對上級主控命令正確地分析、判斷、處理;對矩陣的正確更新,對數(shù)據(jù)的及時保存(主程序流程如圖4)。
2.1 主機(jī)控制命令
主機(jī)發(fā)出的控制命令有兩種。第一種是定長的,包含8個字節(jié)(見圖5)。C3H是開始字節(jié),5AH表示結(jié)束;地址1、地址2表示控制器在整個系統(tǒng)中所處的位置;數(shù)據(jù)1、數(shù)據(jù)2包含了對矩陣輸入輸出更新的具體信息;優(yōu)先級代表了本次命令的優(yōu)先級別,00H級別最高;校驗字節(jié)為前6個字節(jié)之和。第二種命令是分組控制命令,長度不定(見圖6),C5H 表示第二種控制命令的開始;地址1、地址2同第一類控制命令;數(shù)據(jù)0是本次分組命令所控制的輸出通道;數(shù)據(jù)1至數(shù)據(jù)n是本次分組中的輸入通道;校驗字節(jié)為前幾個字節(jié)之和對FFH取余;55H 表示本次命令的結(jié)束。
2.2主程序
控制器在沒收到主機(jī)發(fā)送的控制命令時,會一直運(yùn)行于主程序之中。主程序主要完成對系統(tǒng)的初始化;定時向看門狗電路發(fā)送電壓翻轉(zhuǎn)信號;對主機(jī)的控制命令發(fā)送回傳信息。
在初始化時,先從存儲器中讀取信息,判斷讀出的數(shù)據(jù)是否超出了矩陣的輸入輸出范圍。若數(shù)據(jù)無誤,則按此信息(一般是上次關(guān)機(jī)時控制器的狀態(tài))初始化矩陣。若發(fā)現(xiàn)某一數(shù)據(jù)有誤,則按預(yù)先的約定初始化矩陣。控制器在向主機(jī)返回命令之前要判斷回響標(biāo)志,若標(biāo)志為“1”,則調(diào)用回響主機(jī)的子程序,否則會跳過這一步,繼續(xù)向看門狗電路發(fā)送電壓翻轉(zhuǎn)信號,以示其工作正常。
2.3 串口中斷服務(wù)子程序
一旦控制器檢測到串口有數(shù)據(jù)到來,就會發(fā)出中斷請求信號。單片機(jī)在執(zhí)行完當(dāng)前的指令后,會轉(zhuǎn)向服務(wù)子程序(流程如圖7)。在子程序內(nèi)要完成對主控命令的判斷、分析、處理,完成對矩陣的更改及信息的保存等任務(wù)。中斷服務(wù)子程序也是軟件設(shè)計的核心部分與難點(diǎn)之處。在接收完主機(jī)發(fā)送的命令之后,要處理的事務(wù)有:
(1)判斷命令是否正確。這包括判斷命令是否正確;檢查命令是第一類還是第二類。若是第一類命令,要檢查其起始、結(jié)束字節(jié)和校驗字節(jié)是否正確;輸入輸出是否在規(guī)定的范圍之內(nèi)。若是第二類命令,要保存分組信息,開啟記時器。若檢查有一點(diǎn)不對,將放棄該命令,恢復(fù)現(xiàn)場,退出服務(wù)子程序。
(2)在確認(rèn)命令正確無誤后,要檢查對應(yīng)的輸出是否被鎖定。若鎖定標(biāo)志為“0”,則直接更改矩陣;若輸出被某一主控命令鎖定,那么就要比較新接收到命令的優(yōu)先級與鎖定的優(yōu)先級的高低,高于鎖定的優(yōu)先級則可以更改矩陣,否則更改失敗。
(3)在更改矩陣之后,要及時地將更新信息寫入存儲器。并且將回響主機(jī)的標(biāo)志置為“1”。
退出中斷服務(wù)子程序后,對主機(jī)命令的回響有兩種情況。若更改成功,則將主控命令按相反的順序返回主機(jī);若因優(yōu)先級低而更改失敗,則將鎖定的高優(yōu)先級返回主機(jī),防止主機(jī)繼續(xù)發(fā)送此控制命令。
2.4 記時器中斷子程序
記時器中斷子程序是用來實(shí)現(xiàn)分組功能的??刂破鹘邮盏街鳈C(jī)的第二類命令時,記時器開始記時,然后每隔3分鐘該組中的輸出通道就會輪流接通所選中的輸入,直到主機(jī)發(fā)出取消本次分組的命令。
3 可靠性分析
為了提高整個系統(tǒng)的可靠性,設(shè)計時主要采取了以下措施:
· I2C總線連接的E2PROM使得象在突然掉電這樣的異常情況下,能保存住現(xiàn)場信息。
·看門狗電路具有自動復(fù)位的功能。
·通過光電耦合與主機(jī)的通訊,增強(qiáng)了抗干擾能力。
·應(yīng)答式的數(shù)據(jù)通訊,再加上校驗字節(jié)保證了通訊的可靠性。
·軟件設(shè)計時對控制命令一系列的判斷檢查,能夠確保對矩陣的正確更新,防止誤操作。
該控制器設(shè)計思路巧妙,充分利用了所選器材的資源,成本低廉。實(shí)際應(yīng)用表明,該控制器工作穩(wěn)定,容錯能力強(qiáng),具有很高的實(shí)用價值。
參考文獻(xiàn)
1 何立民著.MCS-51 系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計.系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1990
2 AD公司數(shù)據(jù)手冊,1998
3 MAXIM公司數(shù)據(jù)手冊,1996
4 湖南省郵電規(guī)劃設(shè)計院.湖南省地-縣圖象通信網(wǎng)會議電視系統(tǒng)建設(shè)工程技術(shù)規(guī)范書,1997.6