每收到一個幀脈沖,MAXQ3120的CODEC軟件對環(huán)形緩沖器中匯集的采樣實施31抽頭FIR濾波器算法。該濾波器的3dB截止點位于3.5kHz,可提供抗混疊和進一步的采樣重構(gòu)功能,降低- ADC通道的噪聲。經(jīng)濾波處理后的結(jié)果是一個16位采樣,可用于A率或µ率壓縮。
表1. 前十個µ率和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ī)則都有一套特殊的處理方法。
對于µ率:
負(fù)值符號位為“0”;正值符號位為“1”。
幅值采用反碼。因此,零表示為0b11111111,而+1表示為0b11111110。這是為了保證發(fā)送數(shù)據(jù)流中有大量的“1”位。(很多類型的物理層傳輸設(shè)備僅在“1”位有電平跳變;因此,大量的“1”位使時鐘恢復(fù)更容易。)
有“正零”和“負(fù)零”之別,分別表示為0b11111111和0b01111111。
最大的負(fù)數(shù)為-127,表示為0b00000000。然而,為保持定時的完整性,許多系統(tǒng)不允許全零值。這些系統(tǒng)通過自動對第1位取反來阻止全零碼的出現(xiàn)。雖然這會給碼流造成不可恢復(fù)的變化(0b00000000變?yōu)?b00000010),但對于音頻傳輸而言,它在聽覺上造成的變化微乎其微 - 兩種碼所表達的聲音都非常響!(本設(shè)計中未執(zhí)行該功能,盡管實現(xiàn)很簡單。)
對于A率:
和µ率一樣,負(fù)數(shù)符號位為零。
和µ率一樣,有“負(fù)零”和“正零”之別,分別表示為0b00000000和0b10000000。
傳輸之前,每個A率字被0x55“異或”,相當(dāng)于對編碼字節(jié)隔位取反。和µ率中的取反類似,也可以確保高密度的“1”,使時鐘恢復(fù)更容易。
 





