音頻編解碼器是現代數字電話(huà)的基石。它是將可聽(tīng)語(yǔ)音轉換為數字數據并再次轉換回可聽(tīng)語(yǔ)音的組件。本文使用MAXQ3120的A/D通道和外部DAC對標準μ律和A律格式的語(yǔ)音進(jìn)行編碼和解碼。這留下了大量的處理能力可用于執行其他與電信相關(guān)的功能,例如呼叫進(jìn)度檢測和生成、PCM 成幀和靜默信道檢測。
介紹
現代電話(huà)是數字化的。帶有數百個(gè)電觸點(diǎn)的喋喋不休的Strowger開(kāi)關(guān),數英里的雙絞線(xiàn)電纜,就像扎染意大利面條,以及曾經(jīng)點(diǎn)綴在鄉村的微波塔,已經(jīng)一去不復返了。如今,語(yǔ)音流量會(huì )盡早轉換為數字形式,并與數千個(gè)其他語(yǔ)音呼叫、電子郵件和網(wǎng)頁(yè)一起在光纖上進(jìn)行傳輸。
數字電話(huà)推動(dòng)了信息時(shí)代,并繼續通過(guò)互聯(lián)網(wǎng)協(xié)議語(yǔ)音(VoIP)等技術(shù)改變通信格局。然而,一個(gè)事實(shí)仍然存在——在這條線(xiàn)的某個(gè)地方,語(yǔ)音必須轉換為比特,然后比特又轉換為語(yǔ)音。
這是編解碼器的工作。這個(gè)詞是編碼器/解碼器的縮寫(xiě),設備在概念上很簡(jiǎn)單。它由一個(gè)模數轉換器 (ADC) 組成,用于將輸入音頻轉換為比特流,一個(gè)數模轉換器 (DAC) 將接收到的比特流轉換為音頻,以及一個(gè)接口,用于在可能附加其他編解碼器的總線(xiàn)之間插入和移除數字化音頻。
通常,編解碼器是獨立的混合信號半導體。只要編解碼器用于簡(jiǎn)單的應用程序(例如終端交換機的線(xiàn)卡)就可以了。然而,通常需要對傳輸的音頻執行某種預處理(例如峰值限制、動(dòng)態(tài)范圍壓縮或頻譜整形)或對接收的音頻進(jìn)行后處理(例如降噪)。對于獨立編解碼器來(lái)說(shuō),這是一個(gè)問(wèn)題,因為一旦模擬音頻呈現給(或取自)編解碼器,就沒(méi)有進(jìn)一步的機會(huì )執行處理 - 編解碼器直接與 PCM 高速公路接口。在這些情況下,系統設計人員有兩個(gè)難以處理的選擇:要么在模擬域中執行此處理(通常價(jià)格昂貴且可能噪聲大),要么放棄使用獨立的單芯片編解碼器,并使用獨立的精密ADC和DAC芯片在數字域中執行處理。這兩種選擇都不理想。 本文介紹了一種將MAXQ3120與外部DAC配合使用的方法,作為語(yǔ)音編解碼器,能夠對入站和出站位流進(jìn)行額外的處理。
編解碼器基礎知識
早在考慮數字電話(huà)之前,就已經(jīng)確定必須保持從約300Hz到約3.5kHz的頻率范圍才能使語(yǔ)音信號保持可理解性。超出此范圍的頻率會(huì )影響語(yǔ)音信號的保真度,但不會(huì )影響清晰度。(事實(shí)上,事實(shí)證明,帶限信號比寬帶信號更容易理解。根據奈奎斯特標準,即信號的采樣頻率必須至少是目標最高頻率的兩倍,所有語(yǔ)音編解碼器都以每秒8,000個(gè)樣本的速度工作 - 超過(guò)所需3.5kHz的兩倍 - 并且每個(gè)樣本都轉換為數字碼字。
然而,碼字的大小帶來(lái)了一個(gè)問(wèn)題。在任何數字系統中,都需要在信號完整性和字數之間進(jìn)行權衡。為了獲得最佳保真度,系統設計人員可以選擇較大的字大小,但更多的位需要更大的帶寬,并且帶寬需要花錢(qián)?;蛘?,設計人員可以選擇較小的字大小以節省帶寬成本,但語(yǔ)音質(zhì)量會(huì )受到影響。測試表明,小碼字(大約八位)可以提供良好的語(yǔ)音質(zhì)量,但前提是說(shuō)話(huà)者以安靜、一致的聲音說(shuō)話(huà)。語(yǔ)音音量的正常變化會(huì )使發(fā)射機飽和,導致削波和失真。人們可以降低增益以消除高電平的這種削波,但正常的聲音電平只會(huì )使用四到五位,使柔和的聲音聽(tīng)起來(lái)沙啞和不自然。為了適應各種人聲,從最柔和的耳語(yǔ)到最響亮的喊叫,似乎需要十二到十四位的分辨率。
解決方案是使用非線(xiàn)性編解碼器(見(jiàn)圖1)。這些編解碼器利用了這樣一個(gè)事實(shí),即耳朵對響亮聲音中的小錯誤比對柔和聲音中的小錯誤更寬容。在圖中,沉默以零線(xiàn)為中心;柔和的聲音僅偏離中心線(xiàn)的一小部分,而大的聲音偏離得更大。在這些器件中,零線(xiàn)周?chē)拇a比遠離零線(xiàn)的代碼更密集,從而使編解碼器能夠為低電平信號提供可接受的結果,同時(shí)保持高電平信號的良好動(dòng)態(tài)范圍。
圖1.這是典型PCM編解碼器的響應曲線(xiàn)。零相對振幅附近的區域包含的代碼比曲線(xiàn)末端多得多,使編解碼器能夠保持高語(yǔ)音保真度和寬動(dòng)態(tài)范圍。
在數字方面,有必要與PCM高速公路接口。通常,在公共總線(xiàn)(PCM 高速公路)上將多個(gè)編解碼器連接在一起,而不是使用一組單獨的電線(xiàn)將每個(gè)編解碼器連接到其關(guān)聯(lián)的中繼設備。為了協(xié)調傳輸,編解碼器共享一個(gè)公共位時(shí)鐘,并通過(guò)單個(gè)幀脈沖發(fā)出信號以開(kāi)始發(fā)送或接收。在常見(jiàn)的北美標準中,1 個(gè)編解碼器可以駐留在 PCM 高速公路上,該高速公路由某種類(lèi)型的序列器邏輯以每秒 544,000,125 位的速度計時(shí)。每<>μs,第一個(gè)編解碼器接收一個(gè)幀脈沖,并將<>位發(fā)送到高速公路上。在八個(gè)位時(shí)鐘之后,第二個(gè)編解碼器接收其幀脈沖,依此類(lèi)推。在所有 <> 個(gè)編解碼器傳輸完數據后,序列器提供一位時(shí)間用于信令目的,然后重復序列。因此,數字生成如下:
[(8 bits per sample x 24 channels) + 1 signaling bit] x 8,000 samples per second = 1,544,000 bits
per second
PCM 編解碼器的類(lèi)型
世界已經(jīng)對電話(huà)中使用的PCM編解碼器的幀速率(以及采樣率)進(jìn)行了標準化??杀氖?,世界幾乎沒(méi)有其他標準化。有兩種類(lèi)型的轉碼算法需要考慮:在歐洲使用的 A-law 和主要在美國和日本使用的 μ-law。并且有兩種基本的線(xiàn)路速率正在使用:美國的DS1(1.544Mb / s)和歐洲的E1(2.048Mb / s)。本文介紹的設計是DS1(也稱(chēng)為T(mén)1)編解碼器,能夠在A(yíng)定律或μ定律模式下工作。
μ法編解碼器根據以下公式對樣本進(jìn)行編碼:
其中μ是等式的特征,通常為 255。
A 定律編解碼器根據略有不同的公式進(jìn)行編碼:
其中A是方程的特征,通常為87.6;或者在某些情況下,為 87.7。請注意,對于接近零的值,A 律函數是線(xiàn)性的;僅當輸入值大于 1/A 時(shí),它才會(huì )變?yōu)閷怠?/p>
在實(shí)際操作中,這兩個(gè)壓縮定律會(huì )產(chǎn)生非常相似的曲線(xiàn)。此外,在實(shí)踐中,這些線(xiàn)性公式實(shí)際上從未使用過(guò)。相反,需要分段線(xiàn)性近似來(lái)減輕計算開(kāi)銷(xiāo)。但是,此處介紹的設計通過(guò)查找表實(shí)現了這些確切的公式。
微控制器成為編解碼器
MAXQ3120包含兩個(gè)精密16位ADC通道和一個(gè)帶16位累加器的16 x 40乘法器。雖然沒(méi)有DAC通道,但有低成本的精密串行DAC可以滿(mǎn)足這種能力。剩下的就是構建軟件來(lái)連接這些外圍設備。
編碼
編碼有三個(gè)步驟:將模擬信號轉換為數字信號,對數字化樣本進(jìn)行重采樣和濾波,最后使用 A 律或μ律轉碼將樣本壓縮為 8 位表示。
首先是A/D轉換步驟,這也是最簡(jiǎn)單的,因為MAXQ3120內置了ADC通道。MAXQ3120每16μs產(chǎn)生一個(gè)新的48位結果。這意味著(zhù)系統在384MHz的處理器時(shí)鐘上有8個(gè)指令周期來(lái)處理樣本。
幸運的是,處理樣本很簡(jiǎn)單,只需讀取ADC并將數據存儲在循環(huán)緩沖器中即可。緩沖區始終包含 32 個(gè)最新的 16 位樣本。MAXQ3120包含256個(gè)16位字RAM;因此,循環(huán)緩沖區僅消耗單個(gè)通道可用RAM的12.5%。
雖然ADC每48μs產(chǎn)生一個(gè)樣本,但通信網(wǎng)絡(luò )每125μs需要一個(gè)新的樣本。因此,無(wú)論我們對信號做什么,都必須對其進(jìn)行重新采樣。一種簡(jiǎn)單的方法是,當接收到幀脈沖時(shí),只接受最新的采樣進(jìn)行轉換,而丟棄所有其他樣本,但MAXQ3120可以做得更好。
在每個(gè)幀脈沖上,編解碼器軟件開(kāi)始對循環(huán)緩沖器中的累積樣本施加31抽頭FIR濾波器。該濾波器在3.3kHz時(shí)具有5db點(diǎn),因此提供抗混疊和額外的重建功能,從而降低ADC通道中的噪聲。濾波器過(guò)程的結果是 16 位樣本,可用于 A 律或μ法壓縮。
表 1.前十個(gè)μ法和A法法典
法典 | μ法 | A-法律 |
0 | 0000 | 0000 |
1 | 0005 | 000F |
2 | 000乙 | 001F |
3 | 0011 | 002F |
4 | 0018 | 003F |
5 | 001F | 004F |
6 | 0026 | 005F |
7 | 002D | 006F |
8 | 0035 | 007F |
9 | 003D | 008F |
有幾種方法可以將值從 16 位線(xiàn)性轉換為其代碼;直接計算和分段近似是兩種流行的方法。我們沒(méi)有使用這兩種方法,而是利用MAXQ3120相對較大的程序空間,設置兩個(gè)128字表,一個(gè)用于μ律編碼和解碼,另一個(gè)用于A(yíng)律。啟動(dòng)時(shí),將輪詢(xún)外部引腳,并根據該引腳的級別將其中一個(gè)表加載到 RAM 中。編碼過(guò)程的操作如下:
取 16 位線(xiàn)性 PCM 樣本的絕對值。跟蹤符號位。
現在對適用的表執行二叉搜索:將 PCM 樣本與表的中間值進(jìn)行比較。如果小于中間值,則僅考慮表的下半部分;如果大于中間值,則僅考慮上半部分。重復此步驟,直到只剩下兩個(gè)表條目,然后選取最接近的表條目。
要發(fā)出的代碼是表條目的索引。例如,如果樣本值0x006D并且轉換為 A-law,則上表中最接近的值將是 0x006F。其指數為7;這是要發(fā)出的代碼。
最后,應用原始樣本值的符號。 生成的八位數字是對數 PCM 值。然而,這還不是結束。網(wǎng)絡(luò )上發(fā)出的 PCM 值不僅僅是二進(jìn)制補碼值。相反,每個(gè)轉碼法都有適用的特殊規則。
對于μ法:
負數具有零號位;正值有一個(gè)符號位。
幅度值反轉:因此,0 由 11111111b1 表示,而 +0 由 11111110b<> 表示。這保證了傳輸流中大量的一位(許多類(lèi)型的物理層傳輸機制僅在一位上具有電平轉換;因此,高數量的一位使時(shí)鐘恢復更容易。
有一個(gè)“正零”值和一個(gè)“負零”值,分別由0b11111111和0b01111111表示。
最大的負數是 -127,用 0b00000000 表示。但是,為了保持時(shí)序完整性,許多系統不允許全零值,這些系統通過(guò)反轉位1自動(dòng)阻止全零碼。這使得代碼流發(fā)生了不可逆轉的更改(0b00000000 變?yōu)?0b00000010),但對于音頻傳輸,它不會(huì )對感知聲音產(chǎn)生太大變化 - 兩個(gè)代碼都非常響亮?。ù嗽O計不執行此功能,但很容易進(jìn)行更改。
對于A(yíng)法:
就像在μ定律中一樣,負數有一個(gè)零號位。
就像在μ定律中一樣,有一個(gè)“負零”值和一個(gè)“正零”值,分別由 0b00000000 和 0b10000000 表示。
在傳輸之前,每個(gè)A定律單詞都與0x55進(jìn)行異或運算;有效地反轉字節中的其他位。與μ定律的反轉一樣,這保證了高密度,使時(shí)鐘恢復更容易。
譯碼
解碼八位PCM樣本比編碼容易得多,因為無(wú)需對信號進(jìn)行重新采樣。應用 PCM 法律規則后,將保留一個(gè) 16 位有符號量級值。將該值用作適用 PCM 表的索引(考慮登錄);結果是一個(gè) <> 位有符號值,可以傳送到 DAC。
本項目選擇的轉換器是MAX5722雙通道DAC。這是一款 12 位 DAC,采用經(jīng)濟型 5722 引腳 μMAX 封裝。與大多數DAC一樣,MAX1需要外部電壓基準。幸運的是,MAXQ25上有一個(gè)3120.<>V帶隙基準,適合此目的。
MAX5722為串行接口DAC,這意味著(zhù)微控制器必須創(chuàng )建適合DAC的串行流。DAC接口是同步的,因此不需要連續時(shí)鐘,只需要片選低時(shí)的時(shí)鐘。這允許僅使用微控制器的通用I/O使用三線(xiàn)接口。
請注意,在本設計中,ADC通道的輸入范圍為-1.0V至+1.0V,而DAC輸出通道的輸入范圍為0.0V至+1.25V。在實(shí)際的電信應用中,例如線(xiàn)卡,這些電平可能會(huì )轉換為其他模擬電平(例如,通常將1Ω阻抗中的600mW定義為0dBm,這是電信網(wǎng)絡(luò )中通常遇到的最大電平)。
PCM 總線(xiàn)
現在我們知道了如何將模擬波形轉換為壓縮的PCM格式并返回,只剩下一個(gè)問(wèn)題:與PCM總線(xiàn)接口。
大多數情況下,與PCM高速公路的接口涉及連接到四線(xiàn)總線(xiàn):終端將數據放置在其上的傳輸數據線(xiàn);中繼設備在其上放置數據以及終端接收數據的接收數據線(xiàn);通常對每個(gè)終端唯一的幀同步線(xiàn),當總線(xiàn)包含用于該終端的數據時(shí),該同步線(xiàn)會(huì )發(fā)出脈沖以指示;還有一個(gè)位時(shí)鐘。由于我們的編解碼器旨在作為終端設備,它將接收位時(shí)鐘和幀脈沖,在接收數據線(xiàn)上接收數據,并在發(fā)送數據線(xiàn)上傳輸其數據。
在T1系統中,時(shí)鐘運行在1.544MHz。這意味著(zhù)當幀脈沖到達時(shí),我們必須在短短幾個(gè)時(shí)鐘周期內非??焖俚刈龀鲰憫?。一位時(shí)間略高于625ns,或五個(gè)指令周期。由于此時(shí)間遠小于典型的中斷延遲(當考慮中斷、上下文保存和開(kāi)銷(xiāo)時(shí)),因此僅用中斷響應幀脈沖信號還不夠快,必須找到另一種解決方案。
該方案是使用MAXQ3120中的三個(gè)定時(shí)器之一,在幀脈沖到達前幾微秒中斷處理器。然后,當幀脈沖最終到達時(shí),處理器已被中斷,已保存其上下文,并準備將每個(gè)周期專(zhuān)用于 PCM 總線(xiàn)任務(wù)。它的工作原理如下:設置一個(gè)計時(shí)器在 110μs 后過(guò)期。在所有位移出后,在每個(gè)幀事件結束時(shí)啟動(dòng)計時(shí)器。在T1系統中,兩個(gè)樣品在10.4μs內移出。當定時(shí)器中斷處理器時(shí),軟件立即開(kāi)始尋找幀脈沖的前緣。這是系統中唯一的中斷。其他所有內容都會(huì )被輪詢(xún),并且可以等到將 PCM 數據上下總線(xiàn)的重要任務(wù)完成。
一旦幀脈沖到達,處理器就會(huì )保持非常繁忙的狀態(tài)。它必須移動(dòng)發(fā)送緩沖器并將輸出位寫(xiě)入端口,然后在五個(gè)周期內讀取輸入位并移位接收緩沖器。MAXQ3120在<>個(gè)周期內完成此操作。
您可能會(huì )注意到,此討論以 T1 總線(xiàn)為中心,但 E1 呢?在2.048MHz時(shí),E1系統每比特僅允許略高于488ns或少于四個(gè)指令周期。因此,E1 PCM 總線(xiàn)的管理需要外部硬件的幫助。例如,由位時(shí)鐘驅動(dòng)的廉價(jià)移位寄存器將減輕位電平時(shí)序的嚴格要求。
附加功能
編解碼器已完成。但是,由于獨立編解碼器價(jià)格低廉且數量豐富,因此從微控制器構建編解碼器是沒(méi)有意義的,當然,除非作為設計師,您別有用心。以下是一些可能促使設計人員考慮此類(lèi)系統的想法:
預過(guò)濾當信號采用線(xiàn)性PCM格式時(shí),這是對信號應用均衡、動(dòng)態(tài)范圍壓縮、噪聲門(mén)控或任何其他操作的絕佳機會(huì )。雖然MAXQ3120不是傳統意義上的DSP,但這些功能很容易在處理器可用的馬力范圍內。
帶內信令提取高效、簡(jiǎn)單的算法可用于檢測線(xiàn)性 PCM 流中的帶內音調??梢岳眠@些算法來(lái)檢測DTMF數字,并使用這些算法來(lái)實(shí)現某些特性和功能。還可以使用音調檢測,通過(guò)精確檢測撥號音(在北美,350Hz + 440Hz)、站鈴(440Hz + 480Hz)和忙音(480Hz + 620Hz)來(lái)確定呼叫進(jìn)度。
會(huì )議橋將通道 1 的接收音頻混合并將其與通道 2 的傳輸音頻組合在一起很簡(jiǎn)單,反之亦然。通過(guò)這樣做,您有效地為兩個(gè)渠道創(chuàng )建了一個(gè)數字會(huì )議橋。由于網(wǎng)橋是數字的,因此不會(huì )損失語(yǔ)音質(zhì)量。如果希望橋接兩個(gè)以上的通道,只需添加更多的MAXQ3120器件即可。
結論
雖然MAXQ3120并非專(zhuān)門(mén)針對電信行業(yè),但其片內精密ADC和DSP功能為設計人員提供了廣泛的機會(huì )來(lái)創(chuàng )建定制的硬件和軟件解決方案。各種開(kāi)發(fā)工具的可用性使設計任務(wù)變得簡(jiǎn)單。
審核編輯:郭婷
-
adc
+關(guān)注
關(guān)注
95文章
5692瀏覽量
540452 -
dac
+關(guān)注
關(guān)注
43文章
1981瀏覽量
189887 -
編解碼器
+關(guān)注
關(guān)注
0文章
230瀏覽量
24042
發(fā)布評論請先 登錄
相關(guān)推薦
評論