在MAXQ3120上實現(xiàn)CODEC應(yīng)用-設(shè)計應(yīng)用_第1頁
在MAXQ3120上實現(xiàn)CODEC應(yīng)用-設(shè)計應(yīng)用_第2頁
在MAXQ3120上實現(xiàn)CODEC應(yīng)用-設(shè)計應(yīng)用_第3頁
在MAXQ3120上實現(xiàn)CODEC應(yīng)用-設(shè)計應(yīng)用_第4頁
在MAXQ3120上實現(xiàn)CODEC應(yīng)用-設(shè)計應(yīng)用_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

精品文檔-下載后可編輯在MAXQ3120上實現(xiàn)CODEC應(yīng)用-設(shè)計應(yīng)用引言今天的電話已數(shù)字化。而在過去,它往往意味著咔嗒作響的、包含數(shù)百個電氣觸點的史端橋式開關(guān),數(shù)英里的雙絞線電纜就象多彩的意大利面條,星羅棋布于鄉(xiāng)村野外的微波塔。今天,話音業(yè)務(wù)在開始的時候就被轉(zhuǎn)換成了數(shù)字形式,并和成百上千的其他話音、電子郵件和網(wǎng)頁等信息一同,由一條光纖傳輸。數(shù)字電話催生了信息時代,并繼續(xù)以新的技術(shù),如因特網(wǎng)話音(VoIP),改變著通信工業(yè)的前景。然而,有一個事實沒有變-必須在線路上的某個點,將話音轉(zhuǎn)換為數(shù)字,并將數(shù)字轉(zhuǎn)換回話音。

這正是CODEC(編解碼器)的工作。這個名稱是coder/decoder(編碼器/解碼器)的縮寫,是一種概念上非常簡單的器件。它包含一個模擬到數(shù)字轉(zhuǎn)換器(ADC),用于將音頻轉(zhuǎn)換為位流;一個數(shù)字到模擬轉(zhuǎn)換器(DAC),用于將收到的位流轉(zhuǎn)換回音頻;和一個接口,用于和其他CODEC共享總線,并通過總線插入和取回數(shù)字化的音頻信息。

通常,一個CODEC就是一片獨立的混合信號半導(dǎo)體器件。對于簡單應(yīng)用,這種方案能夠很好地工作,例如端局交換機中的線卡。然而,很多時候我們還希望對要發(fā)送的音頻信號作一些預(yù)處理(例如限幅、動態(tài)范圍壓縮或頻譜整形等),或?qū)κ盏降囊纛l信號作一些后處理(例如噪聲抑制)。對于獨立式CODEC而言,這些處理任務(wù)比較難以實現(xiàn)。這是因為模擬音頻信號一經(jīng)CODEC轉(zhuǎn)換,就再也沒有機會作進一步地處理了-獨立式CODEC直接連接到了PCM干線。這種情況下,系統(tǒng)設(shè)計者就只有兩種很笨拙的選擇了:或者在模擬域執(zhí)行這種處理(通常很昂貴且可能引入噪聲),或者放棄使用這種獨立式的單片CODEC,而改用獨立的精密ADC和DAC芯片,并在數(shù)字域進行處理。這兩種方式都不理想。本文給出一種新的方案,它采用MAXQ3120微控制器和外部DAC作音頻CODEC,同時能夠?qū)θ胝竞统稣疚涣鬟M行額外的處理。

CODEC基礎(chǔ)在數(shù)字電話還很遙遠的時候,人們就認識到保持一個話音信號清晰可辨的必要頻段大約為300Hz至3.5kHz。此范圍之外的頻率對于語音信號的保真度有貢獻,但對于清晰度無益(事實表明,限制帶寬的信號比寬帶信號反而更易于辨析)。根據(jù)Nyquist定律,對于信號的采樣率必須至少為其頻率的兩倍,因此所有話音CODEC都工作于每秒8,000個采樣-多于所要求的3.5kHz的兩倍-每個采樣都被轉(zhuǎn)換為一個數(shù)字化的碼字。然而,碼字的長度又帶來另一個問題。在任何數(shù)字系統(tǒng)中,都必須在信號的完整性和字長間做出妥協(xié)。為獲得高保真,系統(tǒng)設(shè)計者應(yīng)選擇較大的字長,但位數(shù)越多帶寬越高,而帶寬是要付出成本的。另一方面,如果設(shè)計者選擇較小的字長以節(jié)省帶寬成本,話音質(zhì)量就會有所損失。實驗表明較小的字長-大約八位-也可以提供較好的話音質(zhì)量,但前提是講話者必須是在安靜的環(huán)境中用恒定的話音講話。這種情況下正常的音量變化就會造成發(fā)送器飽和,導(dǎo)致箝位和失真。降低增益當然可以消除高音量時的箝位問題,但正常音量可用的位數(shù)卻減少至四到五位,使比較輕的話音聽起來有刮擦聲且不自然。為了適應(yīng)人類話音的整個范圍,從輕的低語到大聲的喊叫,看起來有必要采用十二到十四位分辨率。

方案是非線性CODEC(見圖1)。這種類型的CODEC利用了這樣一件事實:我們的耳朵對于響亮聲音的小誤差更“寬容”,而對于微弱聲音的小誤差很敏感。圖1中,靜默狀態(tài)位于零線附近;輕微的話音相對于中心線有小量偏移,而響亮的話音偏移較多。在這樣的器件中,零線附近的編碼密度高于遠離零線處的編碼密度,使CODEC既能為低電平信號提供滿意的性能,同時為高電平信號提供足夠的動態(tài)范圍。

圖1.典型PCMCODEC的響應(yīng)曲線。在零相對幅度附近的區(qū)間編碼密度高于曲線端點處,使CODEC既保持了話音的高度清晰,又具有很寬的動態(tài)范圍。在數(shù)字側(cè),器件必須與PCM干線接口。各CODEC并不是通過單獨的一組線連接到其相應(yīng)的中繼設(shè)備上,而是一定數(shù)量的CODEC一同被連接到一條共享的總線-PCM干線上。為了協(xié)調(diào)傳輸過程,這些CODEC共用一個位時鐘,而用單獨的幀脈沖指揮每個器件開始發(fā)送和接收。按照北美標準,24個CODEC共享一條PCM干線,某種類型的時序器邏輯以1,544,000位/秒的速率控制著其運行節(jié)奏。每過125μs,個CODEC收到一個幀脈沖并發(fā)送八位數(shù)據(jù)到干線上。8個位時鐘后,第二個CODEC收到其幀脈沖,依此類推。所有24個CODEC發(fā)完數(shù)據(jù)后,時序器提供一位的時間用于傳送信令,然后重復(fù)上述過程。這樣,總的數(shù)據(jù)量為:

[(8bitspersamplex24channels)+1signalingbit]x8,000samplespersecond=1,544,000bitspersecond

PCMCODEC的類型用于電話的PCMCODEC已有了全世界統(tǒng)一的幀速率(采樣率)。不幸的是,在其它方面幾乎沒有統(tǒng)一的標準。常用的編碼方案有兩種:用于歐洲的A率和主要用于美國和日本的μ率。有兩種基本線速率正在使用:美國的DS1(1.544Mbps)和歐洲的E1(2.048Mbps)。本文所討論的設(shè)計為DS1(或稱為T1)CODEC,工作于A率或μ率模式。μ率CODEC按照以下規(guī)則對采樣信號進行編碼:

其中μ是本規(guī)則的特征參數(shù),典型為255。

A率CODEC的編碼方式略有不同:

其中A是本規(guī)則的特征參數(shù),通常為87.6,有些情況下為87.7。需要注意的是,當接近于零時,A率函數(shù)是線性的;只有當輸入大于1/A后它才變?yōu)閷?shù)。

在具體實踐中,這兩種壓擴率所形成的曲線非常近似。并且,實際應(yīng)用中從未使用這些線性公式。為了減輕運算開銷,常常采用分段線性逼近的方式。然而,在本設(shè)計中,我們通過查表的方式嚴格按照這些規(guī)則來做。

將一個微控制器變?yōu)镃ODECMAXQ3120包含有兩個精密的16位ADC通道、一個16x16乘法器以及一個40位累加器。雖然MAXQ3120不含DAC通道,有很多低成本的精密串行DAC可用于此功能。剩下的工作就是構(gòu)建一個軟件來連接這些外圍器件。

編碼可通過三步完成編碼:轉(zhuǎn)換模擬信號為數(shù)字量,對數(shù)字采樣進行再抽樣并濾波,,用A率或μ率編碼轉(zhuǎn)換方式壓縮采樣至八位。步是A/D轉(zhuǎn)換,容易實現(xiàn),因為ADC通道已內(nèi)置于MAXQ3120。MAXQ3120每48μs產(chǎn)生一個新的16位轉(zhuǎn)換結(jié)果。這意味著對于8MHz的處理器時鐘,系統(tǒng)可以有384個指令周期來處理采樣。

幸好,采樣的處理只是簡單地讀取ADC并將數(shù)據(jù)存儲于一個環(huán)形緩沖器。緩沖器總是保存著32個近的16位采樣結(jié)果。MAXQ3120有256字的16位RAM。這樣,每個通道的環(huán)形緩沖器僅消耗全部可用RAM的12.5%。

ADC每48μs采一個樣,但通信網(wǎng)絡(luò)每125μs需要一個新的采樣。因此,無論我們?nèi)绾翁幚硇盘?,都必須對其進行再抽樣。簡陋的方法之一就是,當收到一個幀脈沖時,只接受近的一個采樣來做進一步的轉(zhuǎn)換,而扔掉所有其他采樣。不過MAXQ3120還能夠做的更好。

每收到一個幀脈沖,MAXQ3120的CODEC軟件對環(huán)形緩沖器中匯集的采樣實施31抽頭FIR濾波器算法。該濾波器的3dB截止點位于3.5kHz,可提供抗混疊和進一步的采樣重構(gòu)功能,降低-ADC通道的噪聲。經(jīng)濾波處理后的結(jié)果是一個16位采樣,可用于A率或μ率壓縮。

有多種方法可以對16位線性編碼進行壓縮。直接計算和分段逼近是兩種常用方法。在本設(shè)計中我們并沒有采用這兩種方法,而是利用MAXQ3120程序空間較大的特點,建立了兩個128字的表格,一個用于μ率編碼和解碼,另一個用于A率。首先,查詢一個外部引腳的電平狀態(tài),根據(jù)該引腳的電平,將兩個128字表格中的一個載入RAM。編碼過程的操作如下:

獲取16位線性PCM采樣的。并保持對符號位的跟蹤。在所采用的表格中執(zhí)行對分檢索:比較PCM采樣和表格的中間值。如果PCM采樣小于中間值,只考慮表格的下半部分;如果采樣大于中間值,則只需考慮上半部分。重復(fù)上述操作,直至僅剩下兩個表格項,選擇接近的一個。壓縮后的編碼實際上是表格項的索引號。例如,如果采樣值為0x006D,采用A率壓縮,上述表格中接近的值為0x006F。其索引號為7;這正是壓縮后的編碼。,沿用原始采樣的符號位。得到的8位碼是對數(shù)PCM值。然而,這還沒有結(jié)束。發(fā)送到網(wǎng)絡(luò)的并不是簡單的二進制補碼。每種編碼規(guī)則都有一套特殊的處理方法。對于μ率:負值符號位為“0”;正值符號位為“1”。幅值采用反碼。因此,零表示為0b11111111,而+1表示為0b11111110。這是為了保證發(fā)送數(shù)據(jù)流中有大量的“1”位。(很多類型的物理層傳輸設(shè)備僅在“1”位有電平跳變;因此,大量的“1”位使時鐘恢復(fù)更容易。)有“正零”和“負零”之別,分別表示為0b11111111和0b01111111。的負數(shù)為-127,表示為0b00000000。然而,為保持定時的完整性,許多系統(tǒng)不允許全零值。這些系統(tǒng)通過自動對第1位取反來阻止全零碼的出現(xiàn)。雖然這會給碼流造成不可恢復(fù)的變化(0b00000000變?yōu)?b00000010),但對于音頻傳輸而言,它在聽覺上造成的變化微乎其微-兩種碼所表達的聲音都非常響!(本設(shè)計中未執(zhí)行該功能,盡管實現(xiàn)很簡單。)對于A率:和μ率一樣,負數(shù)符號位為零。和μ率一樣,有“負零”和“正零”之別,分別表示為0b00000000和0b10000000。傳輸之前,每個A率字被0x55“異或”,相當于對編碼字節(jié)隔位取反。和μ率中的取反類似,也可以確保高密度的“1”,使時鐘恢復(fù)更容易。解碼解碼8位PCM采樣要比編碼容易得多,因為無需對信號進行再抽樣。經(jīng)過適當?shù)腜CM編碼規(guī)則處理后,得到一個8位、帶符號的幅度值。以這個數(shù)值為索引,檢索相應(yīng)的PCM表格(同時考慮符號),得到一個16位、帶符號的數(shù)值,可直接送給DAC。為本項目選擇的轉(zhuǎn)換器是MAX5722雙通道DAC。這是一款12位DAC,采用低成本8引腳μMAX封裝。和大多數(shù)DAC一樣,MAX5722需要一個外部基準電壓源。正好,MAXQ3120上的1.25V帶隙基準源適用于此目的。

MAX5722是一款串行DAC,這就意味著微控制器必須以串行方式和DAC通信。DAC接口是同步的,因此無需連續(xù)為其提供時鐘-只有當片選為低時才需要提供時鐘給它。因此可以利用微控制器的通用I/O組成一個3線接口與其通信。

在本設(shè)計中,注意到ADC通道的輸入范圍為-1.0V至+1.0V,而DAC輸出通道的范圍為0.0V至+1.25V。在一個真正的電信應(yīng)用中,例如線卡,這樣的信號電平很可能還需要轉(zhuǎn)換為其他模擬電平(例如,電信網(wǎng)絡(luò)中通常能遇到的電平為0dBm,即對600阻抗輸出1mW)。如果在你的應(yīng)用中必須保持輸入、輸出電平相等,請參考MAX5722數(shù)據(jù)資料中關(guān)于產(chǎn)生雙極性輸出的詳細說明。

PCM總線現(xiàn)在,我們已經(jīng)知道了如何將模擬信號轉(zhuǎn)換為壓縮的PCM碼,或者反之,余下的就一個問題了:與PCM總線的連接。大多數(shù)情況下,與PCM干線的連接涉及一條四線總線的連接:一條發(fā)送數(shù)據(jù)線(終端發(fā)送其數(shù)據(jù)到這條線);一條接收數(shù)據(jù)線(中繼設(shè)備發(fā)送其數(shù)據(jù)到這條線,終端從中取回數(shù)據(jù));一條幀同步線(每個終端獨占一條,其上脈沖指示何時總線上載有用于該終端的數(shù)據(jù));以及一條位時鐘線。我們的CODEC旨在用于終端設(shè)備,它接收位時鐘和幀脈沖,從接收數(shù)據(jù)線接收數(shù)據(jù),向發(fā)送數(shù)據(jù)線發(fā)送數(shù)據(jù)。在T1系統(tǒng)中,時鐘工作于1.544MHz。這就意味著當一個幀脈沖到來時我們必須非??斓仨憫?yīng)(幾個時鐘脈沖內(nèi)),一位所占時間略大于625ns,或五個指令周期。由于這個時間遠小于通常的中斷響應(yīng)時間(考慮現(xiàn)場保護和其他中斷響應(yīng)時的開銷),簡單地以中斷方式響應(yīng)幀脈沖信號速度不夠-必須考慮其他方案。

我們的方案是,采用MAXQ3120三個定時器中的一個,超前預(yù)期的幀脈沖到達時間幾個微秒中斷處理器。當幀脈沖到來時,處理器已被中斷,并完成現(xiàn)場保護,已準備好投入每個時鐘周期來執(zhí)行PCM總線任務(wù)。其工作如下:設(shè)置定時器溢出間隔為110μs。在每一幀所有數(shù)據(jù)位被移出,幀事件處理完畢后啟動定時器。以T1系統(tǒng)為例,在10.4μs要移出兩個采樣的數(shù)據(jù)。當定時器中斷處理器后,軟件立即開始監(jiān)視幀脈沖的前沿。這是系統(tǒng)的中斷。所有其它事務(wù)都工作于查詢方式,且要等待重要的任務(wù)(通過總線收發(fā)PCM數(shù)據(jù))完成后方能著手處理。

幀脈沖到來時處理器會非常忙碌。它需要移位發(fā)送緩沖器并將要輸出的位寫到合適的端口;接著在五個周期內(nèi)讀取一個輸入位并移位接收緩沖器。MAXQ3120能夠非常地在5個周期內(nèi)完成這些任務(wù)。

你或許已注意到,這里的討論只聚焦于T1總線,那E1的情況又如何呢?工作于2.048MHz的E1系統(tǒng)每一位的時間只略大于488ns-少于四個指令周期。因此,E1PCM總線的管理有賴于外部硬件。例如一片廉價的、由位時鐘驅(qū)動的移位寄存器,就可將處

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論