基于CAN總線的語音節(jié)點設(shè)計方案
文章針對現(xiàn)有的模擬廣播系統(tǒng)存在抗干擾能力弱、傳輸距離短等不足,進(jìn)行了基于CAN 總線的數(shù)字語音通信系統(tǒng)的研究。給出語音通信系統(tǒng)的總體構(gòu)成,并對節(jié)點各模塊進(jìn)行詳細(xì)設(shè)計。核心部分采用內(nèi)置CAN 控制器PIC18F458 單片機(jī)作為控制器,與獨立的CAN 收發(fā)器CTM8251 構(gòu)成CAN 收發(fā)模塊;采用低傳輸速率和高通話質(zhì)量的AMBE-1000 芯片作為語音編碼器。測試表明,節(jié)點間可以實現(xiàn)可靠,語音質(zhì)量高的實時性通信。
引言
CAN 總線以其短幀、無損仲裁、多主工作方式、干擾能力強(qiáng)而應(yīng)用于許多工業(yè)領(lǐng)域,如汽車行業(yè)、煤礦安監(jiān)系統(tǒng)、智能儀表系統(tǒng)等?;贑AN 總線的數(shù)字語音通信系統(tǒng)就是利用CAN 總線的特點而設(shè)計的。利用該系統(tǒng)調(diào)度室可以在同一時間內(nèi)通知礦井中的所有工作人員安全撤離,并按照礦井應(yīng)急預(yù)案指揮搶險救災(zāi);井下人員也可以及時與調(diào)度室聯(lián)系,及時通報情況;井下也具有局部通信功能,方便井下人員直接的聯(lián)系和通報事情。
1 語音通信系統(tǒng)的總體結(jié)構(gòu)
基于 CAN 總線的語音通信系統(tǒng)的整體結(jié)構(gòu)如圖1 所示。
圖 1 系統(tǒng)總體框架圖
該系統(tǒng)由上位機(jī)PC、網(wǎng)關(guān)節(jié)點、語音節(jié)點、通信電纜、終端等構(gòu)成,采用總線型網(wǎng)絡(luò)、多主訪問機(jī)制。地面可以通過上位機(jī)PC 對網(wǎng)關(guān)節(jié)點進(jìn)行操作,實現(xiàn)對井下各個語音節(jié)點的任意呼叫(即點播方式)、各個組的語音節(jié)點的呼叫(即組播方式)或全部呼叫(即廣播方式)功能;井下各個語音節(jié)點也可以呼叫網(wǎng)關(guān)節(jié)點,網(wǎng)關(guān)節(jié)點將該語音節(jié)點的ID 上傳給上位機(jī)PC;并且井下各個語音節(jié)點可與其它同組的語音節(jié)點進(jìn)行組內(nèi)通話通信。在CAN 總線結(jié)構(gòu)中,節(jié)點是可以靈活接入的,這是CAN 總線網(wǎng)絡(luò)最有優(yōu)勢的地方,同時,由于不分主從,因此,每一個節(jié)點都可以接收信息或者在總線空閑的時候發(fā)送信息,這是CAN 總線的另外一個比較重要的優(yōu)勢。
2 語音節(jié)點硬件電路設(shè)計
語音數(shù)據(jù)通過麥克風(fēng)輸入,經(jīng)過MAX9814 進(jìn)行放大,然后送到數(shù)模轉(zhuǎn)換模塊進(jìn)行A/D轉(zhuǎn)換,再通過語音處理模塊將數(shù)據(jù)壓縮打包傳送給微處理器,微處理器通過CAN 收發(fā)器將數(shù)據(jù)傳到總線上;總線上的信息通過收發(fā)器傳送給微處理器,通過微處理器傳至語音處理模塊,對其解壓縮,送到模數(shù)轉(zhuǎn)換模塊進(jìn)行D/A 轉(zhuǎn)換,輸出模擬信號再經(jīng)過功放模塊進(jìn)行功率放大送到揚(yáng)聲器,最后由揚(yáng)聲器輸出語音信號。
語音節(jié)點總體結(jié)構(gòu)如圖2所示。
圖 2 語音節(jié)點總體結(jié)構(gòu)圖
2.1 處理器模塊
處理器模塊是語音通信節(jié)點的計算核心,所有的設(shè)備控制、任務(wù)調(diào)度、能量計算和功能協(xié)調(diào)、通信協(xié)議、數(shù)據(jù)整合和數(shù)據(jù)存儲程序都將在這個模塊的支持下完成,所以處理器的選擇在語音通信節(jié)點設(shè)計中是至關(guān)重要的。本設(shè)計采用帶有CAN 控制模塊的PIC18F458[4]單片機(jī)作為微控制器(MCU)以實現(xiàn)對AMBE-1000、CTM8251、 MAX9814、MAX9736 等芯片的操作控制,同時,單片機(jī)還需要控制一些按鍵和指示燈。在語音節(jié)點硬件設(shè)計中,PIC18F458 與各部分接口電路以及復(fù)位電路如圖3所示。
圖3 PIC18F458 與各部分接口
撥碼開關(guān)部分電路如圖4所示,用來設(shè)置語音節(jié)點的標(biāo)識符(ID),ID9-ID0 依次對應(yīng)撥碼開關(guān)的10-1,其中撥碼開關(guān)上的10-6 鍵為組號,5-1 鍵為節(jié)點號,且撥碼開關(guān)處于ON 的電平值為“0”,反之為“1”。每個節(jié)點根據(jù)標(biāo)識符來判斷自己是否需要接收報文。
圖4 撥碼開關(guān)2.2 CAN收發(fā)器模塊
在實際應(yīng)用中,PIC18F458 需要接一個CAN 收發(fā)器,以提高總線驅(qū)動能力。CTM8251是一款帶隔離的通用CAN 收發(fā)器芯片,該芯片內(nèi)部集成了所有必需的CAN 隔離及CAN 收、發(fā)器件,這些都被集成在不到3 平方厘米的芯片上。芯片的主要功能是將CAN 控制器的邏輯電平轉(zhuǎn)換為CAN 總線的差分電平并且具有DC 2500V 的隔離功能。其接口電路如圖5所示。
圖 5 CTM8251 接口電路。
2.3 語音處理模塊設(shè)計
2.3.1 AMBE-1000的主要特點
在語音處理中,編碼芯片是核心部分,本設(shè)計采用的是AMBE 編碼。AMBE-1000 是美國DVSI 公司研制、Lucent 公司生產(chǎn)的一款成熟的雙工聲碼器芯片,用來實現(xiàn)雙工的語音壓縮/解壓縮功能,能實現(xiàn)低傳輸速率下高質(zhì)量的通話。它采用先進(jìn)的AMBE 壓縮算法,壓縮速率最低可達(dá)2.4Kbps。目前這種算法以其能實現(xiàn)的低傳輸速率和高通話質(zhì)量而在世界范圍內(nèi)得到了廣泛應(yīng)用,甚至用在下一代移動通信系統(tǒng)中。AMBE-1000 可看成由兩個分開的編碼器和解碼器組成。編碼器接收8kHz 的語音數(shù)據(jù)采樣流(如16 位線性的,8 位A 律的或8 位μ 律的)和輸出一個期望的波特率的信道數(shù)據(jù)流。反之,解碼器接收一個信道數(shù)據(jù)流并合成一個語音數(shù)據(jù)流。AMBE-1000 的編碼器和解碼器的接口時序是完全異步的[5]。壓縮數(shù)據(jù)從編碼器出來要通過一個接口送到解碼器,該接口就是信道接口?;镜男诺澜涌诎ù诤筒⒖?,管腳CH_SEL[2-0]的配置將決定使用哪種接口。串口和并口都能工作于主動模式和被動模式。主動和被動是指激勵信號是由本芯片給出,還是由外部模塊送入。
2.3.2 AMBE-1000 與處理器模塊接口電路
串行模式下AMBE-1000 通過CHS_DI 和CHS_DO 輸入、輸出16 位的數(shù)據(jù)字。聲碼器AMBE-1000 工作在被動模式,與控制器之間采用串行方式傳送數(shù)據(jù),兩者之間接口如圖6 所示。
圖6 AMBE-1000 與控制器接口
AMBE-1000 中語音編碼率和前向糾錯編碼率的選擇可以是獨立的。這些碼率可以通過命令幀的方法配置,也可以通過硬件管腳BPS_SEL[3-0](pin 3,4,5,6)來配置。本設(shè)計中設(shè)定AMBE-1000 的語音編碼率為2.4Kbps,故管腳BPS_SEL[3-0]均通過電阻接地。
2.3.3 語音 A/D、D/A 模塊設(shè)計
對于一個高質(zhì)量的語音通信系統(tǒng),A/D-D/A 芯片的選擇至關(guān)重要。在選擇A/D-D/A 芯片時,需要考慮這些芯片的信噪比和濾波性能。一般應(yīng)優(yōu)先考慮那些16位線性A/D-D/A芯片,以獲得較高的語音質(zhì)量。對于任何一種與之相連接的A/D-D/A 芯片, AMBE-1000 都采用8kHz 語音數(shù)據(jù)采樣率。這些8 kHz 數(shù)據(jù)通過串行接口輸入(或者輸出)到AMBE-1000,可以通過軟件(發(fā)送命令幀)或者硬件方式,進(jìn)行A/D-D/A 接口的選擇和配置。本系統(tǒng)采用的A/D-D/A 芯片是CSP1027,這是一款帶有16 位串行A/D 和D/A 的芯片,符合CCITT G.712語音頻帶響應(yīng)和信噪比規(guī)范,其采樣頻率可高達(dá)24KHz,它采用低功耗全靜態(tài)邏輯設(shè)計,在數(shù)字電源3.3V、模擬電源5V 工作時,典型功耗68mW,待機(jī)功耗0.05mW。
CSP1027 與AMBE-1000 之間采用串行工作方式,二者的接口電路如圖7所示。經(jīng)MAX9814 放大后的麥克風(fēng)語音信號由45 號管腳(MICIN)送入CSP1027 進(jìn)行A/D 轉(zhuǎn)換,然后經(jīng)21 號管腳(DO)送入AMBE-1000 進(jìn)行壓縮編碼。相反地,AMBE-1000 解碼之后的數(shù)字語音數(shù)據(jù)要送入CSP1027 芯片進(jìn)行D/A轉(zhuǎn)換(TX_DO 與DI相連接),恢復(fù)出的模擬語音信號由43 號管腳(AOUTP)輸出,并通過此管腳將模擬語音信號送出MAX9736 進(jìn)行功率放大,最后通過揚(yáng)聲器播放出來。
圖 7 CSP1027 與AMBE-1000 的接口
2.3.4 語音采集模塊設(shè)計
本模塊的作用是將麥克風(fēng)微弱語音信號放大給A/D 轉(zhuǎn)換器。本系統(tǒng)采用了具有自動增益控制(AGC)功能的MIC 放大芯片MAX9814,該芯片是Maxim 推出的低成本、高品質(zhì)麥克風(fēng)放大器,器件具有低噪聲前端放大器、可變增益放大器(VGA)、輸出放大器、麥克風(fēng)偏置電壓發(fā)生器和AGC控制電路。
MAX9814 的電路設(shè)計如圖8所示,麥克風(fēng)語音信號通過管腳8(MICIN)輸入MAX9814芯片,進(jìn)行語音信號放大,之后從管腳6(MICOUT)輸出,輸出的信號送到模數(shù)轉(zhuǎn)換模塊即CSP1027 進(jìn)行A/D 轉(zhuǎn)換。
圖8 MAX9814電路設(shè)計圖
2.3.5 功放模塊設(shè)計
由于井下語音節(jié)點使用環(huán)境比較嘈雜,因此需要配備功放來驅(qū)動井下的喇叭,本系統(tǒng)采用的功放芯片為Maxim 的MAX9736,可以工作在8V 至28V,并具有高PSRR,無需穩(wěn)壓電源。MAX9736采用12V供電時效率可達(dá)88%。
語音數(shù)據(jù)經(jīng)過解碼、D/A 轉(zhuǎn)換等恢復(fù)為模擬信號。輸出的模擬信號要在經(jīng)過語音模塊進(jìn)行功率放大送到揚(yáng)聲器。該模塊電路設(shè)計如圖9所示。
圖9 功放模塊電路設(shè)計圖
3 語音節(jié)點軟件流程設(shè)計
語音節(jié)點可以與網(wǎng)關(guān)節(jié)點和組內(nèi)其他語音節(jié)點進(jìn)行通信。
當(dāng)與網(wǎng)關(guān)通話按鍵按下后(Button_Gate=0),打開本地MIC,關(guān)閉本地功放,讓AMBE-1000 工作,修改發(fā)送緩沖器標(biāo)識符,使僅網(wǎng)關(guān)節(jié)點能接收到該語音數(shù)據(jù),等待編碼器編碼完畢(EPR=1),從AMBE-1000 中讀取編碼后的數(shù)據(jù),然后將壓縮編碼后的語音數(shù)據(jù)發(fā)送到CAN 總線上。發(fā)送完畢后需要關(guān)閉本地MIC,使AMBE-1000 休眠。
當(dāng)與組內(nèi)其他節(jié)點通話按鍵按下后(Button_Group=0),工作過程和與網(wǎng)關(guān)節(jié)點通話過程基本相同,只是發(fā)送緩沖器標(biāo)識符不同。語音節(jié)點主程序流程如圖10 所示。
當(dāng)作為接收節(jié)點時,將產(chǎn)生CAN 接收中斷,然后判斷是否為本板數(shù)據(jù),若是,則等待解碼器空(DPE=1),將數(shù)據(jù)寫入AMBE-1000 解碼,并播放語音。語音節(jié)點中斷服務(wù)程序如圖11所示。
圖 10 語音節(jié)點主程序流程
圖11 語音節(jié)點中斷服務(wù)程序流程
系統(tǒng)初始化主要包括對I/ O 口初始化、串口初始化和CAN 控制器的初始化等。
4 結(jié)語
應(yīng)用該方法構(gòu)造的語音通信系統(tǒng)能夠在保持良好的語音通信質(zhì)量的前提下,簡化電路,降低功耗,節(jié)約成本。