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

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

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

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

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

?

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

1 所選芯片介紹?

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

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

?

?

?

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

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

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

?

?

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

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

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

?

?

??? 畫PCB圖時(shí)需注意以下幾點(diǎn):?

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

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

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

4 軟件設(shè)計(jì)?

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

?

?

??? 數(shù)字對(duì)講機(jī)工作時(shí)發(fā)送端CMX618的工作流程圖見(jiàn)圖6,CMX7041工作流程圖見(jiàn)圖7。?

?

?

?

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

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

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

??? 數(shù)字對(duì)講機(jī)工作時(shí)接收端CMX7041的工作流程見(jiàn)圖8,CMX618工作流程圖見(jiàn)圖9。?

?

?

?

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

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

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

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

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

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

??? 本文設(shè)計(jì)的基帶系統(tǒng)已經(jīng)應(yīng)用在數(shù)字對(duì)講機(jī)的樣機(jī)研發(fā)當(dāng)中,測(cè)試效果不錯(cuò),有很好的應(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)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。