基于CMX638的語(yǔ)音通信模塊設(shè)計(jì)與實(shí)現(xiàn)
摘要:CMX638是一款專用于通信系統(tǒng)中語(yǔ)音編解碼芯片,講解了CMX638的基本結(jié)構(gòu)、功能,并給出了基于CMX638的語(yǔ)音系統(tǒng)的外圍電路設(shè)計(jì)以及與其通信控制器的軟件設(shè)計(jì)與實(shí)現(xiàn)。實(shí)際應(yīng)用表明,該系統(tǒng)可適用許多需要語(yǔ)音處理的通信場(chǎng)合。
關(guān)鍵詞:CMX638;基帶;聲碼器;語(yǔ)音通信
語(yǔ)音通信系統(tǒng)是通信中非常重要的一個(gè)部分。如何在有限的頻段下,傳輸更多高質(zhì)量的語(yǔ)音信息,是人們研究的一個(gè)重點(diǎn)課題?,F(xiàn)在,對(duì)于語(yǔ)音處理芯片有很多,包括CMX618/638和AMBE2000等。和AMBE2000相比,CMX638雖然壓縮的語(yǔ)音速率的選擇沒(méi)有AMBE2000多,但是它內(nèi)部包含了語(yǔ)音CODEC模塊,它可以靈活選擇使用內(nèi)部的CODEC或者外部的CODEC,從而在實(shí)際的運(yùn)用中有較大的吸引力,本文以CMX638為基礎(chǔ),設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)語(yǔ)音處理模塊。
1 CMX638介紹
如圖1所示,CMX638是一款高性能的全雙工語(yǔ)音編解碼器,CMX638內(nèi)部結(jié)構(gòu)包含3個(gè)部分,一個(gè)是語(yǔ)音CODEC模塊,主要完成輸入語(yǔ)音和輸出語(yǔ)音的放大、16位的PCM A/D和D/A轉(zhuǎn)換;音碼器主要是將數(shù)字語(yǔ)音信號(hào)壓縮成低速率的數(shù)碼語(yǔ)音信號(hào),或者將數(shù)碼語(yǔ)音信號(hào)解壓縮成數(shù)字語(yǔ)音信號(hào)。CMX638通過(guò)C-BUS總線完成和其它模塊數(shù)據(jù)通信和控制。FEC開(kāi)關(guān)選擇前向糾錯(cuò)編碼器和解碼器。
2 語(yǔ)音系統(tǒng)介紹
圖2為CMX638語(yǔ)音系統(tǒng)的結(jié)構(gòu)圖。在該系統(tǒng)中,采用了該芯片內(nèi)部的CODEC完成16位的PCM A/D和D/A轉(zhuǎn)化,因此不需要外部的CODEC模塊。其輸入輸出通過(guò)C-BUS接口和其他模塊進(jìn)行通信。
3 硬件設(shè)計(jì)
3.1 電源供電
由于CMX638包含了模擬電路和數(shù)字電路,其供電也要求有模擬供電AVDD、數(shù)字端口供電IOVDD及數(shù)字供電VDD,其中AVDD電壓為3.3 V,IOVDD的電壓為3.3 V,VDD的電壓為1.8 V。如圖3所示為其供電電路,采用芯片LM1117-3.3,輸入電壓為5 V,輸出.電壓為3.3 V工IOVDD使用。采用同樣的電路,只是將芯片換為L(zhǎng)M1117-1.8,就可以實(shí)現(xiàn)1.8 V的數(shù)字電路供電。而3.3 V的模擬電路供電可采用L1、C20、C18進(jìn)行濾波,減小數(shù)字電路供電和模擬電路供電之間的干擾。同時(shí),數(shù)字地DGND和模擬地AGND可采用0歐電阻來(lái)連接。在實(shí)際的電路設(shè)計(jì)以及PCB板的制作中,為了防止電磁干擾,在盡量靠近CMX638芯片的每個(gè)電源引腳附近加一個(gè)0.1μF的電容進(jìn)行濾波。
3.2 語(yǔ)音電路
語(yǔ)音輸入電路采用LM358進(jìn)行放大,如圖4所示。
由于采用CMX638內(nèi)部CODEC,其23腳CSCEL需要連接到IOVDD上,CODEC PORT接口中的15腳SDI、17腳SCLK、18腳STRB需要連接到DGND。在此狀態(tài)下,由于CMX638內(nèi)部模擬電路自帶了輸入語(yǔ)音和輸出語(yǔ)音放大電路,因此可以直接將話筒語(yǔ)音采用差分方式接入CMX638的5腳(INPUTP)和6腳(INPUTN),而將其10腳(OUTP)和11腳(OUTN)的輸出語(yǔ)音直接送給揚(yáng)聲器。在實(shí)際的應(yīng)用中,不能將語(yǔ)音輸出兩腳短路。
3.3 時(shí)鐘電路
對(duì)于CMX638,其時(shí)鐘類型必須由31腳(XTALSEL1)、32腳(XTALSEL2)、33腳(XTALSEL3)來(lái)選擇,而且,31、32、33腳不能由單片機(jī)輸出的邏輯電平來(lái)控制,而應(yīng)該直接連接到IOVDD或者DGND。若采用12 MHz時(shí)鐘中晶體,則需要將31和33腳接DGND,32腳接IOVDD,27腳(XTAL IN)和28腳(XTALOUT)分別接12 MHz的晶體。同時(shí)需要將34腳(ENABXTAL)接高電平,使時(shí)鐘電路工作。
3.4 CBUS接口
CBUS接口包括42腳(CLK)、43腳(CDATA)、44腳(RDATA)、45腳(CSN)。該接口提供CMX638的控制信息數(shù)據(jù)和傳輸?shù)臄?shù)碼數(shù)據(jù),其操作格式如圖5所示。
從控制器寫(xiě)CMX638寄存器是通過(guò)CDATA(Command Data)線寫(xiě)入,第1個(gè)字節(jié)為寄存器地址,后面沒(méi)有數(shù)據(jù),或者接一個(gè)數(shù)據(jù)字節(jié);讀CMX 638寄存器,首先在CDATA上傳對(duì)應(yīng)的寄存器地址,然后從RDATA讀一個(gè)數(shù)據(jù)字節(jié)。而進(jìn)行數(shù)碼語(yǔ)音數(shù)據(jù)交換時(shí),其數(shù)據(jù)根式和讀寫(xiě)寄存器一樣,只是地址位后面有多位數(shù)據(jù)字節(jié)而已。
4 軟件設(shè)計(jì)
4.1 信號(hào)處理流程
如圖6所示是CMX主要信號(hào)處理流程,在(a)中是系統(tǒng)剛啟動(dòng)時(shí)的初始化過(guò)程,(b)是系統(tǒng)進(jìn)行編碼過(guò)程,(c)是系統(tǒng)進(jìn)行解碼過(guò)程。其中休眠狀態(tài)時(shí),要求關(guān)閉解碼和編碼,并將芯片的34腳(ENABXTAL)設(shè)置為低電平,關(guān)閉時(shí)鐘電路。需要啟動(dòng)芯片工作時(shí),需要將芯片的34腳
(ENABXTAL)設(shè)置為高電平,并至少等27 ms后,在進(jìn)行編碼或者解碼操作。
4.2 部分軟件代碼
CMX638的初始化如下,包含開(kāi)中斷,設(shè)置工作模式,打開(kāi)A/D、D/A轉(zhuǎn)換以及配置聲碼器等。
在控制器中對(duì)CMX638工作狀態(tài)處理函數(shù)如下,包含有休眠、激活、編碼、解碼等等。
5 結(jié)論
CMX638能夠運(yùn)用到很多通信的環(huán)境,而且其內(nèi)部包內(nèi)涵了16位A/D、D/A轉(zhuǎn)換,因此不需要外加單獨(dú)的codec模塊,并且能夠?qū)崿F(xiàn)多種傳輸速率,全雙工數(shù)據(jù)處理。經(jīng)過(guò)實(shí)際的測(cè)試,該系統(tǒng)能夠適用于需要進(jìn)行語(yǔ)音處理的許多通信系統(tǒng)中。
評(píng)論