1 應(yīng)用背景 在局域網(wǎng)、紅外線遙控、工業(yè)現(xiàn)場(chǎng)總線和有線視頻監(jiān)控等通信系統(tǒng)中,普遍使用曼徹斯特碼作為數(shù)據(jù)編碼的方式。對(duì)曼徹斯特碼的解碼通常采用專用的解碼芯片,但是這種方法的通用性差。因?yàn)橥瑯邮锹鼜厮固卮a。不同廠家有不同的編碼規(guī)則和不同的幀同步方式,因此解碼芯片不具備通用性,不能適用于一些特殊的曼徹斯特編碼。如果在信號(hào)接收端采用微處理器對(duì)其解碼,則具有通用性和靈活性。 Bosch和Philips公司的視頻監(jiān)控系統(tǒng)中,控制中速和高速攝像機(jī)云臺(tái)動(dòng)作的信號(hào)均采用曼徹斯特碼編碼傳輸。本文在開(kāi)發(fā)解碼器的過(guò)程中發(fā)現(xiàn)所記錄的曼徹斯特碼與參考文獻(xiàn)[1—3]所描述的完全不同。此外在參考文獻(xiàn)[1—3]中敘述了采用單片機(jī)對(duì)曼徹斯特碼進(jìn)行解碼的方法,但是都沒(méi)有給出曼徹斯特碼轉(zhuǎn)換為T(mén)TI。信號(hào)的詳細(xì)電路。而且由于曼徹斯特碼每1位的傳輸時(shí)間為32 ps,8位單片機(jī)的運(yùn)行速度僅夠?qū)ζ浣獯a而不能同時(shí)承擔(dān)其他工作。因此按照這種設(shè)計(jì),在云臺(tái)解碼器中必須采用2個(gè)單片機(jī),一個(gè)作為協(xié)議轉(zhuǎn)換器,另外一個(gè)單片機(jī)完成指令解析和控制云臺(tái)及攝像機(jī)等其他動(dòng)作。本文采用的則是單一芯片解決方案,使用基于ARM(Advanced RISC Ma—chines)內(nèi)核的微控制器I。PC2104,利用其運(yùn)行速度快和定時(shí)精度高的特點(diǎn),對(duì)曼徹斯特碼進(jìn)行解碼并控制云臺(tái)和攝像機(jī)的其他動(dòng)作。本文將詳細(xì)敘述Bosch和Philips公司的曼徹斯特碼編碼規(guī)則、曼徹斯特碼轉(zhuǎn)換為T(mén)TL信號(hào)的2種電路方案和軟件設(shè)計(jì)思想。 2曼徹斯特碼編碼規(guī)則 曼徹斯特碼以雙絞線為物理傳輸媒介,并采用差分信號(hào)進(jìn)行傳輸,2根傳輸線分別為D+和D一。盡管曼徹斯特編碼規(guī)定采用電平跳變的方式來(lái)表示0和1,但是不同的設(shè)備制造商在實(shí)際使用過(guò)程中采用了不同特點(diǎn)的編碼方式。這體現(xiàn)在編碼規(guī)則和傳輸格式上的不同。例如,一般的曼徹斯特編碼規(guī)則是,由低電平到高電平的跳變代表邏輯0,由高電平到低電平的跳變代表邏輯1。但是在部分紅外線通信和有線視頻監(jiān)控中,控制信號(hào)的傳輸卻采用r完沒(méi)有數(shù)據(jù)全相反的規(guī)則,即:由低電平到高電平的跳變代表邏輯1,由高電平到低電平的跳變代表邏輯0,傳輸時(shí)D+與D一之間的電位差為0。 圖1所示為Bosch和Philips公司的曼徹斯特碼編碼規(guī)則。 3 曼徹斯特碼轉(zhuǎn)換為T(mén)TL信號(hào) 差分信號(hào)必須轉(zhuǎn)換為T(mén)TL信號(hào)才能被微處理器識(shí)別。在T程應(yīng)用中,實(shí)測(cè)的差分信號(hào)都不是標(biāo)準(zhǔn)的矩形,而是很不規(guī)則的近似于iF弦信號(hào)的波 形。因此還需要對(duì)信號(hào)進(jìn)行整形。圖2是帶有同差的比較器電路,它的功能是對(duì)差分信號(hào)整形。同時(shí)將差分信號(hào)轉(zhuǎn)換為T(mén)TI,信號(hào)。圖3所示則采用r差分信號(hào)轉(zhuǎn)TTL信號(hào)的專用集成電路SN75176。轉(zhuǎn)換后的TTI,信號(hào)通過(guò)引腳PO.2,即定時(shí)器0的捕獲輸入口CAP0.0,進(jìn)入I.PC2104。 4. 幀結(jié)構(gòu) 圖4所示為圖2或圖3中記錄的曼徹斯特碼轉(zhuǎn)換為T(mén)TI。信號(hào)后的波形。它是Bosch公司用于遠(yuǎn)程控制云臺(tái)的LTC5136鍵盤(pán)發(fā)出的一串指令中的1幀,包含完整的幀同步、幀數(shù)據(jù)和幀結(jié)束等部分。其傳輸?shù)膬?nèi)容足l位起始位,8位數(shù)據(jù)位(圖中的數(shù)據(jù)為十六進(jìn)制數(shù)87),1位奇 偶校驗(yàn)位和l位停止位。 每個(gè)比特的傳輸時(shí)間為32 ps,它在電平上分為兩相,一個(gè)是高電平,一個(gè)是低電平。在32弘s的一半處。兩相發(fā)牛跳變,因此每相的持續(xù)時(shí)間均為16 ps。由低電平到高電平的跳變代表邏輯1,由高電平到低電平的跳變代表邏輯0。 可以看出,每個(gè)字節(jié)都是以1幀為單位進(jìn)行傳輸?shù)模繋譃閹健瑪?shù)據(jù)和幀結(jié)束三個(gè)部分,每個(gè)部分的結(jié)構(gòu)和特點(diǎn)如下: ①幀同步的作用是提示接收設(shè)備做好接收后續(xù)字節(jié)的準(zhǔn)備,同時(shí)可以作為接收設(shè)備識(shí)別幀同步的時(shí)鐘信號(hào)。識(shí)別幀同步足正確接收后續(xù)字節(jié)的關(guān)鍵。幀同步的結(jié)構(gòu)是。連續(xù)出現(xiàn)5個(gè)邏輯1,之后出現(xiàn)1個(gè)較寬的方波信號(hào),低電平時(shí)間為48 ps,高電平時(shí)間也是48 lus,這個(gè)方波是幀同步信號(hào)的結(jié)束標(biāo)志。 ②數(shù)據(jù)部分包括1個(gè)起始位,8位數(shù)據(jù)位,1位奇偶校驗(yàn)位和1位停止位。實(shí)際采用的是奇校驗(yàn)。數(shù)據(jù)傳輸時(shí),先傳輸最低有效位,后傳輸最高有效位。 ③幀結(jié)束的標(biāo)志為1個(gè)方波,其高電平和低電平的時(shí)間均為64弘s。 ④幀與幀之間的間隔時(shí)間為304 ps。因此1幀的傳輸時(shí)間為1 040弘s,對(duì)應(yīng)的波特率剛好為9 600 bps。 Philips公司的LTC8553和I.TC8800矩陣發(fā)送的曼徹斯特碼與上述Bosch公司的編碼有完全相同的地方,即幀同步和幀結(jié)束標(biāo)志的結(jié)構(gòu)都是完全一樣的,每1位的傳輸時(shí)間是一致的,對(duì)邏輯0和1的編碼規(guī)則是相同的,且都是奇校驗(yàn)。不同之處在于,Philips公司的編碼將1條控制命令中的所有字節(jié)首尾相連地在1幀信號(hào)中發(fā)送,字節(jié)與字節(jié)之間沒(méi)有分隔開(kāi)來(lái),而B(niǎo)osch公司的則是每傳輸1個(gè)字節(jié)都有完整的幀同步和幀結(jié)束標(biāo)志。 5數(shù)據(jù)采樣 LPC2104有2個(gè)捕獲/比較定時(shí)器,即定時(shí)器0和定時(shí)器l,每個(gè)定時(shí)器除具備對(duì)外部信號(hào)的捕獲功能外還具備匹配功能。本系統(tǒng)中,曼徹斯特碼轉(zhuǎn)換為T(mén)TL信號(hào)后送入定時(shí)器0的捕獲信號(hào)輸入端CAP0.0。利用定時(shí)器0的捕獲功能捕捉并識(shí)別】幀信號(hào)的幀同步,利用定時(shí)器的比較功能去識(shí)別一幀的數(shù)據(jù)部分。圖5為程序框圖。 ①同步信號(hào)的識(shí)別。識(shí)別同步信號(hào)的方法是,從一開(kāi)始接收到方波時(shí)就捕捉方波的低電平和高電平時(shí)間,如果都是48 ps,則表明已經(jīng)檢測(cè)到幀同步的標(biāo)志。將LPC2104的定時(shí)器0的捕獲控制寄存器TOCCR設(shè)定為上升沿捕獲,即當(dāng)輸入端CAP0.0的電平產(chǎn)生從0到1的跳變時(shí),將計(jì)數(shù)器的值保存到捕獲寄存器CR0,并產(chǎn)生中斷。當(dāng)產(chǎn)生中斷時(shí),在中斷服務(wù)程序里判斷CR0的值是否在(48±5)ps范圍,如果正確,則將標(biāo)志變量Flag置l,否則清零。無(wú)論是否為48肛s,都必須將CR0清零并將TOCCR設(shè)定為下降沿捕獲。當(dāng)下降沿產(chǎn)生捕獲時(shí),在中斷服務(wù)程序中對(duì)CR0的值,即脈沖高電平時(shí)間,進(jìn)行判斷,如果在(48±5)/zs范圍且Flag為l,則表明幀同步的結(jié)束標(biāo)志已經(jīng)檢測(cè)到,否則將Flag清零。 ②起始位的判斷。如果下降沿捕獲產(chǎn)生的中斷服務(wù)程序已經(jīng)檢測(cè)到幀同步的結(jié)束標(biāo)志,則將定時(shí)器0設(shè)定在比較功能,將匹配寄存器0的值設(shè)定為24 Ps,當(dāng)產(chǎn)生匹配時(shí)復(fù)位定時(shí)器并產(chǎn)生中斷。在中斷服務(wù)程序中對(duì)CAP0.0引腳進(jìn)行采樣。采樣點(diǎn)剛好落在起始位的后一相信號(hào)的中間位置,即1位數(shù)據(jù)傳輸時(shí)間的24 ps位置處,如圖6中箭頭所指位置。為了提高采樣數(shù)據(jù)的可靠性,在采樣點(diǎn)附近連續(xù)采樣3次,取其中2次相同的數(shù)據(jù)為最終結(jié)果。如果采樣得到的電平為0,則表明數(shù)據(jù)位為0,否則為1。如果最終采樣結(jié)果為1,表明起始位判斷成功,后面開(kāi)始數(shù)據(jù)位的采樣。如果結(jié)果為0,表明該位并非起始位,因此需要重新進(jìn)行同步信號(hào)的識(shí)別。 ③數(shù)據(jù)位的采樣。如圖6所示,采樣點(diǎn)選取在每1位后一相的中間,即24弘s處。從起始位的采樣點(diǎn)開(kāi)始,每隔32 ps對(duì)CAP0.0的電平進(jìn)行連續(xù)的3次采樣,取其中2次相同的數(shù)據(jù)為最終結(jié)果。按照同樣的方式連續(xù)采樣10個(gè)數(shù)據(jù)。采集到的第1位到第8位分別為1個(gè)字節(jié)的bit0到bit7,注意低位在前高位在后。第9位為奇偶校驗(yàn)位,第lo位為停止位。停止位始終為0。 ④在停止位之后緊跟的是64 ps的高電平和64 ps的低電平。停止位與下一幀信號(hào)之間為空閑信號(hào),空閑信號(hào)為高電平,持續(xù)時(shí)間為304弘s。一般而言對(duì)這部分不必做任何檢測(cè)。 6 實(shí)驗(yàn) LPC2104構(gòu)成的曼徹斯特碼解碼器已經(jīng)用于中速和高速球型攝像機(jī)云臺(tái)中,LPC2104首先對(duì)曼徹斯特碼進(jìn)行解碼,然后解釋命令的內(nèi)容,最后控制云臺(tái)和攝像機(jī)的動(dòng)作。該解碼器運(yùn)行至今非常穩(wěn)定,沒(méi)有發(fā)生控制指令漏失的情況。在編寫(xiě)程序的過(guò)程中要注意,定時(shí)器中斷服務(wù) 程序的運(yùn)行時(shí)間一定要非常短,不能大于32 ps,否則就會(huì)產(chǎn)生采集到的數(shù)據(jù)與實(shí)際數(shù)據(jù)不相符的情況。 參考文獻(xiàn) 1. 王志永.李曉白 曼徹斯特碼異步解調(diào)的單片機(jī)實(shí)現(xiàn)及性能分析 [期刊論文] -遙測(cè)遙控2003(11) 2. 李欣 高速曼徹斯特碼的準(zhǔn)異步解調(diào) 1999(03) 3. 李會(huì)銀 用 AT89C2051實(shí)現(xiàn)的曼徹斯特編碼譯碼器及應(yīng)用 1999(10) 作者:湖北咸寧學(xué)院 張紅兵 來(lái)源:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng)應(yīng)用 2008 (9) |