《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > 基于CMX618與CMX7041的數(shù)字對講機基帶系統(tǒng)的設(shè)計

基于CMX618與CMX7041的數(shù)字對講機基帶系統(tǒng)的設(shè)計

2009-07-08
作者:崔 振,謝曉明

??? 摘? 要: CMX618與CMX7041是CML半導(dǎo)體公司推出的用于數(shù)字專網(wǎng)移動通信的專用芯片,本文介紹了基于CMX618[1]與CMX7041[2]數(shù)字對講機基帶系統(tǒng)的設(shè)計,敘述了系統(tǒng)的硬件設(shè)計與軟件設(shè)計,并闡述了芯片使用中的問題與經(jīng)驗。?

??? 關(guān)鍵詞: CMX618;CMX7041;數(shù)字對講機;基帶;數(shù)字專網(wǎng)移動通信

?

??? 數(shù)字對講機擁有全新的技術(shù),是一個新時代的產(chǎn)物,是模擬對講機的更新?lián)Q代產(chǎn)品。所謂數(shù)字對講機,就是在其內(nèi)部將語音信號進(jìn)行數(shù)字化處理,并可以擴展其他數(shù)據(jù)應(yīng)用功能的對講機。它在以下三個方面有著模擬對講機無法比擬的優(yōu)勢:(1)窄帶通信,一路語音信號占用一個信道,信道帶寬是12.5 kHz或者6.25 kHz,從而能很好地應(yīng)對當(dāng)今社會頻譜資源日益缺乏的難題。(2)由于對語音信號的數(shù)字化處理使得在接收端對接收信號進(jìn)行判決時消除了一定的噪聲積累影響,而且在發(fā)送端對語音數(shù)字信號還可以進(jìn)行信道編碼的處理,這就使得數(shù)字對講機的話音質(zhì)量得到了進(jìn)一步的改善。(3)由于內(nèi)部設(shè)有數(shù)字信號處理機制,因此可以增加若干有關(guān)數(shù)據(jù)應(yīng)用的擴展功能,例如短信息、視頻信息等。歐美市場調(diào)查的數(shù)據(jù)顯示:2003年數(shù)字對講機與模擬對講機的比例是2:8,在2004年上升為5:5,且預(yù)計2007年將達(dá)到8:2。我國目前市場上并沒有自主知識產(chǎn)權(quán)的數(shù)字對講機產(chǎn)品出售,國外公司例如摩托羅拉、艾可慕等,其研制的數(shù)字對講機產(chǎn)品價格昂貴,使得一般的中小型企業(yè)無法接受。今年汶川地震時GSM網(wǎng)絡(luò)的癱瘓,使得通信、救援等工作都受到影響,也使得對數(shù)字對講機的需求變得異常強烈,還有我國公安、消防、建筑等行業(yè)部門對數(shù)字對講機的強烈需求,所以擁有我國自主知識產(chǎn)權(quán)的數(shù)字對講機亟待研發(fā)并被投入市場。?

1 所選芯片介紹?

??? 筆者所設(shè)計的數(shù)字對講機基帶系統(tǒng)基于英國CML半導(dǎo)體公司的語音編解碼芯片CMX618和4FSK調(diào)制解調(diào)芯片CMX7041。參照的通信協(xié)議是ETSI(歐洲電信標(biāo)準(zhǔn)協(xié)會)發(fā)布的公用數(shù)字對講機標(biāo)準(zhǔn)DPMR[3]。?

??? CML公司研制的這兩款芯片目的是應(yīng)用于窄帶的數(shù)字專網(wǎng)移動通信。CMX618是語音編解碼芯片,內(nèi)部集成A/D、D/A,采用RALCWI(魯棒的先進(jìn)的低復(fù)雜性波形插入)技術(shù),可以將模擬語音信號轉(zhuǎn)換成數(shù)字語音信號后,再壓縮編碼為位速率是3.6 kb/s的碼流,其中的2.4 kb/s是純語音數(shù)據(jù),另外的1.2 kb/s是信道編碼數(shù)據(jù),壓縮率很高,并且聲音效果也不錯。CMX618解碼時可以將語音外帶信道編碼的數(shù)據(jù)先解碼,再經(jīng)D/A轉(zhuǎn)換,送入耳機或擴音器。芯片內(nèi)部結(jié)構(gòu)框圖如圖1所示。CMX7041是4FSK方式的調(diào)制解調(diào)芯片。調(diào)制時,它可以將輸入的數(shù)字信號進(jìn)行4FSK調(diào)制,并且輸出數(shù)字碼流的速率可以是4.8 kb/s或者9.6 kb/s,可以應(yīng)對信道帶寬是6.25 kHz和12.5 kHz兩種情況。在解調(diào)端,它可以將4FSK已調(diào)信號解調(diào),得到原調(diào)制信號。其內(nèi)部結(jié)構(gòu)框圖如圖2所示。?

?

?

?

??? 基帶系統(tǒng)的CPU選擇的是ARM7TDMI-S內(nèi)核的NXP的LPC2138[4],筆者使用外接12 MHz晶振,處理器時鐘設(shè)置為48 MHz,這樣高的時鐘頻率足以應(yīng)對對講機的工作,LPC2138的內(nèi)部Flash為512 KB,其中大約256 KB的Flash用來存儲字庫,用于短信息的功能。總體來說這款A(yù)RM芯片是很合適的。?

2 系統(tǒng)總體介紹?

??? 系統(tǒng)的總體框圖如3所示。本設(shè)計中CMX618語音編碼后的碼流速率是3.6 kb/s,CMX7041將信號調(diào)制后碼流速率是9.6 kb/s,所以一路話音占用的信道帶寬是12.5 kHz。?

?

?

??? 在發(fā)送路徑上,麥克將人的模擬語音轉(zhuǎn)換為差分的電信號。將差分的電信號送入CMX618,在其內(nèi)部將電信號進(jìn)行A/D轉(zhuǎn)換,之后將數(shù)字信號進(jìn)行壓縮編碼,輸出3.6 kb/s的數(shù)字碼流,其中含有1.2 kb/s的信道編碼數(shù)據(jù)。LPC2138通過SPI總線將CMX618輸出的已編碼數(shù)據(jù)讀入到MCU內(nèi)部開辟的數(shù)據(jù)緩存區(qū)中,之后將這些讀入的數(shù)據(jù)與按照DPMR協(xié)議填充的協(xié)議數(shù)據(jù)一起再通過SPI總線送給CMX7041,CMX7041將得到的數(shù)據(jù)進(jìn)行4fsk調(diào)制并發(fā)送至射頻模塊,再經(jīng)天線發(fā)射出去。接收路徑上,CMX7041將接收到的4fsk已調(diào)信號進(jìn)行解調(diào),將解調(diào)得到的信號經(jīng)過SPI總線存儲到MCU的緩沖區(qū)中,MCU再將緩沖區(qū)中的語音數(shù)據(jù)通過SPI總線送入CMX618待其解碼,解碼之后的差分語音信號送入揚聲器即可還原出語音。?

3 硬件電路設(shè)計?

??? 電路原理簡圖如圖4所示,僅列出了與接口相關(guān)的引腳。?

?

?

??? 畫PCB圖時需注意以下幾點:?

??? (1)麥克輸出的信號是差分的電信號,所以麥克的輸出與CMX618的輸入之間的導(dǎo)線應(yīng)布成等長、等距離且距離盡可能近的差分線。從CMX618輸出的信號到擴音器之間的導(dǎo)線同樣應(yīng)是差分線。?

??? (2)為了獲得可調(diào)節(jié)大小且分貝較高的聲音,可以在CMX618與擴音器之間加一個音頻功放芯片。芯片在較大功率時的聲音完全可以滿足對講機的要求。大功率時,電流相應(yīng)也較大,可以達(dá)到1.5 A左右,所以導(dǎo)線的寬度最好在1~1.27 mm之間。?

??? (3)板子最好做成4層板。除了內(nèi)層有電源層和地層以外,最好在頂層和底層也都鋪銅,鋪成地網(wǎng)絡(luò)。為了使地平面充分相通,可以在頂層與地層、底層與地層之間多打一些過孔,這樣也可提高散熱性能。?

4 軟件設(shè)計?

??? 先介紹數(shù)字對講機工作時參照的協(xié)議標(biāo)準(zhǔn)。筆者所使用的標(biāo)準(zhǔn)是ETSI(歐洲電信標(biāo)準(zhǔn)協(xié)會)發(fā)布的公用數(shù)字對講機標(biāo)準(zhǔn)——DPMR,考慮到所使用芯片CMX7041的特性,在幀的結(jié)構(gòu)上有所修改,如圖5所示。為了保證語音數(shù)據(jù)的連續(xù)性,在MCU的RAM中開辟了兩個緩沖區(qū),每個緩沖區(qū)的大小都是1 896 bit,即237 B。對講機工作時,輪流對這兩個緩沖區(qū)進(jìn)行讀寫數(shù)據(jù)的操作。

?

?

??? 數(shù)字對講機工作時發(fā)送端CMX618的工作流程圖見圖6,CMX7041工作流程圖見圖7。?

?

?

?

??? 數(shù)字對講機最初處于檢測PTT鍵是否被按下的狀態(tài)。當(dāng)PTT鍵被按下時,就啟動CMX618開始編碼。CMX618處于編碼狀態(tài)時,每80 ms會產(chǎn)生36 B即288 bit的已編碼話音數(shù)據(jù),并以中斷方式通知MCU,MCU收到中斷信號后就會啟動其SPI外設(shè)從CMX618的內(nèi)部寄存器中將這36 B的語音數(shù)據(jù)讀到MCU的RAM緩沖區(qū)中。與此同時要根據(jù)DPMR協(xié)議填充相應(yīng)的協(xié)議數(shù)據(jù),這些協(xié)議數(shù)據(jù)用于得知呼叫與被呼叫者的ID,用于判斷呼叫類型是單呼、組呼、短信息通信、還是圖像通信等通信類型,因此關(guān)于協(xié)議的處理也是很重要的。每當(dāng)產(chǎn)生4次中斷,即320 ms時,就啟動CMX7041,使其由IDLE狀態(tài)轉(zhuǎn)換為發(fā)送狀態(tài),將緩沖區(qū)中數(shù)據(jù)即語音數(shù)據(jù)與協(xié)議數(shù)據(jù)一起經(jīng)調(diào)制后發(fā)送出去。?

??? CMX7041的發(fā)送機制如下。會涉及到5個發(fā)送數(shù)據(jù)寄存器,1個數(shù)百字節(jié)的緩沖器,1個調(diào)制解調(diào)模塊;5個發(fā)送數(shù)據(jù)寄存器,寬度都是16 bit,其中的四個半寄存器用于裝載待發(fā)送數(shù)據(jù),剩余的8 bit用于裝載控制字節(jié)。CMX7041通過SPI總線將MCU緩沖區(qū)中的數(shù)據(jù)讀入到這5個發(fā)送數(shù)據(jù)寄存器中,之后自動將這5個寄存器中的數(shù)據(jù)送入芯片內(nèi)緩沖器中,每當(dāng)一次送入緩沖器的操作完成,CMX7041就會產(chǎn)生一個DataReady中斷,此時,MCU就將緩沖區(qū)中后面的數(shù)據(jù)再放到5個發(fā)送數(shù)據(jù)寄存器中。一直這樣持續(xù)下去,直到MCU中前一半或者后一半緩沖區(qū)中的數(shù)據(jù)都被送入CMX7041中。之后MCU所做的就是等待Txdone中斷的發(fā)生。Txdone中斷的發(fā)生就意味著MCU中緩沖區(qū)中的數(shù)據(jù)都被CMX7041調(diào)制完成并發(fā)送完畢。值得注意的是CMX7041內(nèi)的緩沖器。它既時刻接收由5個發(fā)送數(shù)據(jù)寄存器送過來的數(shù)據(jù),同時也在按照9.6 kb/s或者4.8 kb/s的速率向調(diào)制解調(diào)模塊發(fā)送數(shù)據(jù),以供調(diào)制解調(diào)模塊將數(shù)據(jù)進(jìn)行4fsk的調(diào)制。也就是說緩沖器在接收數(shù)據(jù)的同時,也在送出數(shù)據(jù),是一個動態(tài)的平衡過程。有一點很重要,就是一定不能讓這個緩沖器里面為空,這樣就會發(fā)生并不希望的Txdone中斷。在不希望的Txdone中斷之后,如果CMX7041再沒有得到來自MCU的使其從IDLE狀態(tài)轉(zhuǎn)換成發(fā)送狀態(tài)的命令,則其不會再調(diào)制任何數(shù)據(jù)和發(fā)送任何數(shù)據(jù)。這樣必然導(dǎo)致接收端無法正確解調(diào)數(shù)據(jù),最終導(dǎo)致雙方通信的失敗。所以,必須在CMX7041發(fā)生DataReady中斷的時刻立即向5個發(fā)送數(shù)據(jù)寄存器寫數(shù)據(jù),既不可以在中斷發(fā)生之前寫(寫數(shù)據(jù)過快,CMX7041來不及處理,緩沖器會溢出),同樣也不能在中斷過后很久再寫(芯片內(nèi)的緩沖器會空,隨之產(chǎn)生Txdone中斷)。還有一個非常容易出問題的地方,就是DataReady中斷發(fā)生的時間間隔問題。CMX7041這款芯片在這個問題上很智能,它會針對內(nèi)部緩沖器的填滿程度而自動改變DataReady中斷發(fā)生的時間間隔。例如:筆者設(shè)計的這個基帶系統(tǒng),CMX7041工作于9.6 kb/s的模式,即每秒發(fā)送9600 bit位,每產(chǎn)生一次DataReady中斷,相當(dāng)于發(fā)送了72 bit,則可推算出DataReady中斷間隔應(yīng)該是7.5 ms,然而事實上并不是這樣。調(diào)試程序時發(fā)現(xiàn),中斷產(chǎn)生的間隔不到1 ms。之所以這樣,是因為在MCU中開辟的緩沖區(qū)是237 B,即每次CMX7041會調(diào)制并發(fā)送237 B的數(shù)據(jù),數(shù)據(jù)的數(shù)量相對于CMX7041內(nèi)部數(shù)百字節(jié)的緩沖器來說并不多,緩沖器不會填得太滿,所以就出現(xiàn)了這種中斷產(chǎn)生速度要快于之前計算時間的情況。筆者又用一個例子來驗證,使CMX7041以死循環(huán)的發(fā)送方式發(fā)送數(shù)據(jù),此時,要發(fā)送數(shù)據(jù)的數(shù)量遠(yuǎn)遠(yuǎn)大于芯片內(nèi)部緩沖器的大小,再觀察產(chǎn)生中斷的時間間隔,確實變成了7.5 ms,驗證了推測。?

??? CMX618產(chǎn)生的已編碼數(shù)據(jù)的速率是3.6 kb/s,CMX618產(chǎn)生4次中斷即320 ms會產(chǎn)生144 B數(shù)據(jù),再加上協(xié)議數(shù)據(jù)共有237 B,此時啟動CMX7041進(jìn)入發(fā)送狀態(tài),CMX7041以9.6 kb/s的速率調(diào)制并發(fā)送這些數(shù)據(jù)需要197.5 ms。CMX7041發(fā)送數(shù)據(jù)時有個特性,會自動在要發(fā)送的數(shù)據(jù)前面添加72 bit的前導(dǎo)碼與48 bit的幀同步碼,這又會消耗12.5 ms,因此CMX7041僅需要210 ms就可以將CMX618在320 ms內(nèi)產(chǎn)生的數(shù)據(jù)發(fā)送完畢。發(fā)送完畢之后,CMX7041要進(jìn)入IDLE狀態(tài)等待,在下一個320 ms到來的時刻再啟動新一輪的調(diào)制與發(fā)送。?

??? 數(shù)字對講機工作時接收端CMX7041的工作流程見圖8,CMX618工作流程圖見圖9。?

?

?

?

??? 最初使CMX7041進(jìn)入接收狀態(tài),芯片會自動檢測幀同步,若檢測到,會產(chǎn)生中斷來告知MCU,之后MCU等待DataReady中斷,DataReady中斷發(fā)生就意味著調(diào)制解調(diào)模塊已經(jīng)解調(diào)好9 B的數(shù)據(jù)。此時,MCU將這9 B數(shù)據(jù)通過SPI總線從5個接收數(shù)據(jù)寄存器中讀出放入MCU開辟的緩沖區(qū)中。當(dāng)CMX7041接收并解調(diào)完一整幀數(shù)據(jù),即243 B時,CMX7041進(jìn)入IDLE狀態(tài),并置位使能CMX618解碼的標(biāo)志位,在經(jīng)過一個時間長于1 ms的延時之后CMX7041進(jìn)入接收狀態(tài),以便檢測下一幀數(shù)據(jù)的到來。值得注意的是,此處必須加延時,否則,CMX7041會工作不正常。?

??? 在CMX7041接收到最后一幀數(shù)據(jù)之后,要將CMX618停止解碼的標(biāo)志位置位,MCU在檢測到此標(biāo)志位后使CMX618由解碼狀態(tài)進(jìn)入IDLE狀態(tài)。MCU根據(jù)緩沖區(qū)中的協(xié)議信息得知這一幀是否為最后一幀,有關(guān)協(xié)議信息的處理,此處不再贅述。?

??? 當(dāng)使能CMX618解碼的標(biāo)志位置位之后,立即啟動其進(jìn)入解碼狀態(tài)。CMX618每隔80 ms產(chǎn)生一次中斷,來表明其需要接收新的數(shù)據(jù)以供其內(nèi)部的解碼器進(jìn)行解碼,所以在CMX618產(chǎn)生中斷之時,MCU通過SPI總線將緩沖區(qū)中存儲的語音數(shù)據(jù)送入CMX618對應(yīng)的寄存器。CMX618解碼時,MCU每隔一定時間要檢測停止解碼的標(biāo)志位,如果檢測到標(biāo)志位已經(jīng)置位,則CMX618必須由解碼狀態(tài)轉(zhuǎn)換為IDLE狀態(tài)。以上的通信流程在理想的通話環(huán)境可以很好地工作。?

??? 為了使系統(tǒng)可以很好地應(yīng)用在隨機的、惡劣的無線信道的環(huán)境中,需要以下措施:?

??? (1)在無線信道中丟幀是很正常的,可以設(shè)置一個計數(shù)器,CMX7041收到幀時遞增,CMX618每解碼一幀數(shù)據(jù)將計數(shù)器遞減。實際應(yīng)用中,如果丟幀太多,計數(shù)器會遞減到0,也就表明收到的語音數(shù)據(jù)都被解碼,沒有新的數(shù)據(jù)可供解碼,此時使CMX618由解碼狀態(tài)進(jìn)入IDLE狀態(tài)。當(dāng)CMX7041又接收到新的數(shù)據(jù)后,再啟動CMX618解碼。在信道條件不好時,CMX618就會頻繁地切換狀態(tài),這是很正常的。?

??? (2)考慮到無線信道丟幀的頻繁性,將幀的長度設(shè)計得比較短,本設(shè)計中的長度是243 B。每丟一次幀帶來的影響是丟掉320? ms的語音數(shù)據(jù)。如果幀長度較長,丟失的語音數(shù)據(jù)也會較多。?

??? 本文設(shè)計的基帶系統(tǒng)已經(jīng)應(yīng)用在數(shù)字對講機的樣機研發(fā)當(dāng)中,測試效果不錯,有很好的應(yīng)用前景。?

參考文獻(xiàn)?

[1] CML Microcircuits Inc.CMX608/CMX618/CMX638 RALCWI?vocoders datasheet.http://www.cm1micro.com,2008,3.?

[2] CML Microcircuits Inc.CMX7031/CMX7041 the two-way?radio processor 4FSK data modem datasheet.http://www.cm1micro.com,2007,4.?

[3] ETSI.ETSI TS 102 490.http://www.etsi.org,2005,12.?

[4] NXP Inc.LPC2131/2132/2134/2136/2138 datasheet.http://www.nxp.com,2005,4.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。