版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、設(shè)計(jì)課題設(shè)計(jì)課題:姓名:專 業(yè):學(xué)號(hào):日 期旨導(dǎo)教師:課程設(shè)計(jì)報(bào)告ADPC懈解碼器的實(shí)現(xiàn)XXX集成電路設(shè)計(jì)與集成系統(tǒng)042015 年1月17日XXX國立華僑大學(xué)信息科學(xué)與工程學(xué)院一:課程設(shè)計(jì)任務(wù)與要求。ADPC曲解碼器的實(shí)現(xiàn)。m轉(zhuǎn)為Verilog ,使用Matlab和Modesim聯(lián)合仿真驗(yàn)證二:系統(tǒng)設(shè)計(jì)原理。脈沖編碼調(diào)制PCM脈沖編碼調(diào)制就是把一個(gè)時(shí)間連續(xù),取值連續(xù)的模擬信號(hào)變換成時(shí)間離散,取 值離散的數(shù)字信號(hào)后在信道中傳輸。脈沖編碼調(diào)制就是對(duì)模擬信號(hào)先抽樣,再對(duì)樣 值幅度量化,編碼的過程90抽樣,就是對(duì)模擬信號(hào)進(jìn)行周期性掃描,把時(shí)間上連續(xù)的信號(hào)變成時(shí)間上離散 的信號(hào),抽樣必須遵循奈奎斯特抽
2、樣定理。該模擬信號(hào)經(jīng)過抽樣后還應(yīng)當(dāng)包含原信號(hào)中所有信息,也就是說能無失真的恢復(fù)原模擬信號(hào)。它的抽樣速率的下限是由抽 樣定理確定的。抽樣速率采用 8KHz量化,就是把經(jīng)過抽樣得到的瞬時(shí)值將其幅度離散,即用一組規(guī)定的電平,把 瞬時(shí)抽樣值用最接近的電平值來表示 ,通常是用二進(jìn)制表示。量化誤差:量化后的信號(hào)和抽樣信號(hào)的差值。量化誤差在接收端表現(xiàn)為噪聲,稱為量化噪聲。 量化級(jí)數(shù)越多誤差越小,相應(yīng)的二進(jìn)制碼位數(shù)越多,要求傳輸速率越高,頻帶越寬。 為使量化噪聲盡可能小而所需碼位數(shù)又不太多,通常采用非 均勻量化的方法進(jìn)行量化。 非均勻量化根據(jù)幅度的不同區(qū)間來確定量化間隔,幅 度小的區(qū)間量化間隔取得小,幅度大的
3、區(qū)間量化間隔取得大。一個(gè)模擬信號(hào)經(jīng)過抽樣量化后,得到已量化的脈沖幅度調(diào)制信號(hào),它僅為有限 個(gè)數(shù)值。編碼,就是用一組二進(jìn)制碼組來表示每一個(gè)有固定電平的量化值。然而,實(shí)際 上量化是在編碼過程中同時(shí)完成的,故編碼過程也稱為模/數(shù)變換,可記作 A/D。差分脈沖編碼調(diào)制DPCM差分脈沖編碼調(diào)制DPCM6利用樣本與樣本之間存在的信息冗余度(預(yù)測(cè)樣值與 當(dāng)前樣值之差)來代替樣值本身進(jìn)行編碼的一種數(shù)據(jù)壓縮技術(shù)100差分脈沖編碼調(diào)制可以實(shí)現(xiàn)在量化臺(tái)階不變(即量化噪聲不變)的情況下,編碼位數(shù)顯著減少,信 號(hào)帶寬大大壓縮。根據(jù)過去的樣本去估算下一個(gè)樣本信號(hào)幅度大小,這個(gè)值稱為預(yù) 測(cè)值,對(duì)實(shí)際信號(hào)值與預(yù)測(cè)值之差進(jìn)行量
4、化編碼,從而就減少了表示每個(gè)樣本信號(hào) 的位數(shù)差分脈沖編碼的概念,如圖中,差分信號(hào)d(k)是離散輸入信號(hào)s(k)和預(yù)測(cè)器輸 出的估計(jì)值Se(k 1)之差。此刻,se(k 1)是對(duì)S (k)的預(yù)測(cè)值,而不是過去樣本的 實(shí)際值。DPC幅統(tǒng)實(shí)際上就是這個(gè)差值的d(k)進(jìn)行量化編碼,用來補(bǔ)償過去編碼中產(chǎn)生的量化誤差。DPC源統(tǒng)實(shí)際就是一個(gè)負(fù)反饋系統(tǒng),采用這種結(jié)構(gòu)可以避免 量化誤差的積累。重建新號(hào) Sr(k)是由逆量化器產(chǎn)生的量化差分信號(hào)dq(k),與對(duì)過去樣本信號(hào)的估算值Se(k 1)求和得到。他們的和,即 Sr(k)作為預(yù)測(cè)器確定下一個(gè) 信號(hào)估算值的輸入信號(hào)。由于在發(fā)送端和接收端都使用相同的逆量化器和
5、預(yù)測(cè)器, 所以接收端的重建信號(hào)8r (k)可以傳送信號(hào)I(k)中獲得。量化盥編刊器 上一j if預(yù)惻器 .|工圖DPCM原理圖在PCMfr,每個(gè)波形樣值都獨(dú)立編碼,與其他樣值無關(guān),樣值的整個(gè)幅值編碼需要較多位數(shù),比特率較高,數(shù)字化的信號(hào)帶寬大。然而,大多數(shù)以奈奎斯特或更 高速率抽樣的信源信號(hào)在相鄰抽樣間表現(xiàn)出很強(qiáng)的相關(guān)性,利用信源的這種相關(guān) 性,一種比較簡(jiǎn)潔的解決方案是對(duì)相鄰樣值的差值而不是樣值本身進(jìn)行編碼。由于 相鄰樣值的差值比樣值本身小,可以用較少的比特?cái)?shù)表示差值。如果將樣值之差仍 用N位編碼傳送,則DPCM勺量化信噪比顯然優(yōu)于 PCM(統(tǒng)。自適應(yīng)差分脈沖編碼調(diào)制 ADPCM前述概要地介紹
6、了 DPCM勺工作原理。但為了能進(jìn)一步提高DPCMf式的質(zhì)量還需要采取一些輔助措施。即自適應(yīng)措施。語聲信號(hào)的變化是因人、因時(shí)而不同的, 為了能在相當(dāng)寬的變化范圍內(nèi)仍能得到最佳的性能,DPCMfc需要自適應(yīng)系統(tǒng),自適應(yīng)預(yù)測(cè)和自適應(yīng)量化,稱為 ADPCM圖所示為采用固定預(yù)測(cè)并帶有自適應(yīng)量化的ADPC陳統(tǒng)。圖中多電平量化與調(diào)制器用Q表示,積分器用P組成的預(yù)測(cè)系統(tǒng)表示。自適應(yīng)量化的基本思想是:讓量 化間隔(t)的變化,與輸入信號(hào)方差相匹配,即量化器階距隨輸入信號(hào)的方差而變 化,它正比于量化器輸入信號(hào)的方差?,F(xiàn)有的自適應(yīng)量化方案有兩類:一類是其輸入幅度或方差由輸入信號(hào)本身估算,這種方案叫前饋?zhàn)赃m應(yīng)量化器
7、。另一類是其階 距根據(jù)量化器的輸出來進(jìn)行自適應(yīng)調(diào)整,或等效的用輸出編碼信號(hào)來進(jìn)行自適應(yīng)調(diào) 整,這類自適應(yīng)量化方案稱為反饋?zhàn)赃m應(yīng)量化器。無論是采用前饋式還是反饋式,自適應(yīng)量化都可以改善動(dòng)態(tài)范圍及信噪比。反 饋控制的主要優(yōu)點(diǎn)是量化階距的信息由碼字序列提取,因此不需要傳輸或存儲(chǔ)額外 的階距信息。但是在重建信號(hào)輸出時(shí),傳輸中的誤碼對(duì)質(zhì)量的影響比較敏感,在前 饋控制時(shí),要求碼字和階距一起,用來得出信號(hào)。這樣是增加了其復(fù)雜程度,但它 有可能在差錯(cuò)控制保護(hù)下傳輸階距從而大大改善高誤碼率傳輸時(shí)的輸出信號(hào)質(zhì)量。不論是前饋型還是反饋型自適應(yīng)量化都可以希望得到超過相同電平數(shù)固定量化的1020dB的改善。為了進(jìn)一步有
8、效地克服語聲通信過程中的不平穩(wěn)行,要考慮量化器和預(yù)測(cè)器都 適應(yīng)匹配于語聲信號(hào)瞬時(shí)變化,又設(shè)計(jì)了同時(shí)帶有自適應(yīng)量化和自適應(yīng)階距的ADPC陳統(tǒng)。自適應(yīng)量化和自適應(yīng)預(yù)測(cè)都可以是前饋型的或是反饋型的。對(duì) ADPCM 來說,預(yù)測(cè)系統(tǒng)的預(yù)測(cè)系數(shù)的選擇是很重要的。如果信號(hào)Fs(t)的樣值用S(n)表示,F(xiàn)d(t)的樣值用d(n)表示,F(xiàn)d(t)的樣值用d(n)表示,則當(dāng)采用線性預(yù)測(cè),即d(n)是d (n)akd (n)ak(n)d(n k)2式中P為預(yù)測(cè)器的I介想,要使預(yù)狽度數(shù)ak(n)自適應(yīng),通常是假定短時(shí)間內(nèi)語聲工# T信號(hào)的參量保持恒定的。許便盅酮加鶴預(yù)測(cè)誤差為最小值來選擇預(yù)測(cè)系數(shù)11(a)編碼器(b
9、)解碼器圖ADPCM原理圖編碼過程編碼的核心思想是對(duì)輸入信號(hào)與預(yù)測(cè)信號(hào)差值進(jìn)行編碼和預(yù)測(cè),采用的是非均 勻量化,為了使不同幅值的信號(hào)信噪比接近一致,從而避免大幅值語音信號(hào)信噪比 大而小幅值語音信號(hào)信噪比小12 o ADPC曲碼過程如圖所示輸示。 輸入Si是一個(gè)線 性16bit補(bǔ)碼PCMB據(jù),其范圍在32767到-32767之間。如果是非線性的PCMW之 前先加個(gè)線性轉(zhuǎn)化模塊使得輸入的數(shù)據(jù)是線性的。經(jīng)過預(yù)測(cè)器出來的預(yù)測(cè)采樣值Sp=Xp(n 1),與線性輸入Si的差值為d,我們就可以在這個(gè)差值上進(jìn)行處理。接下來量化器模塊對(duì)有符號(hào)的 4位編碼數(shù)據(jù)I,由于是帶符號(hào)的所以這個(gè)數(shù)據(jù)的表示范 圍在7到-7之
10、間,最高位為符號(hào)位。具體實(shí)現(xiàn)過程如下,首先計(jì)算 16位的PCM直的當(dāng)前采樣值Si和上一時(shí)刻預(yù)測(cè)采樣值 Xp(n 1)之間的差值d,這個(gè)差值的量化編 碼即輸出4位ADPC唯I(k)。在算法實(shí)現(xiàn)中,定義一個(gè)結(jié)構(gòu)變量存儲(chǔ)預(yù)測(cè)采樣Sp和量化步長索引,并制定了兩個(gè)表。一個(gè)表為索引調(diào)整表,其輸入為差值量化編碼I(k),用來更新步長索引。另一個(gè)表為步長調(diào)整表,其輸入為步長索引,輸出為步長q。編碼時(shí),首先用上一個(gè)采樣點(diǎn)的步長索引查步長調(diào)整表求出步長q。如果當(dāng)前采樣值Si和采樣預(yù)測(cè)值Xp(n 1)之間的差值d為負(fù),則I的D3位置1。如果該差 值絕對(duì)值大于步長q,則I的D2位置1。如果d-q大于q/2,則I的D1
11、位置1,如 果d-q-q/2大于q/4 ,則I的D0位置1。如果以上條件不滿足,則相應(yīng)位置0。這樣就確定了編碼值I(k) o然后編碼值I(k)作為索引調(diào)整表的輸入,查表輸出索引 調(diào)整,并和結(jié)構(gòu)變量中原步長索引相加,產(chǎn)生新的步長索引,在下一個(gè)采樣值的編 碼中使用。編碼輸出I后,編碼還需要重復(fù)進(jìn)行和解碼完全一樣的計(jì)算過程,求出 新的預(yù)測(cè)采樣值Sp。編碼輸出d 量化逆耕耳 步長調(diào)節(jié)預(yù)測(cè)器圖協(xié)議編碼概括起來其主要步驟如下計(jì)算Si與自適應(yīng)預(yù)測(cè)器輸出Xp(n 1)的差值d Si Xp(n 1);通過自適應(yīng)量化模塊對(duì) d進(jìn)行量化,得到 ADPCIW字I(k);通過自適應(yīng)反量化模塊對(duì)I(k)計(jì)算得到量化差分預(yù)
12、測(cè)信號(hào) dq;根據(jù)重建信號(hào)Sr dq Sp和dq更新預(yù)測(cè)濾波器系數(shù);利用新的系數(shù),計(jì)算得到Xp(n),重復(fù)上述5個(gè)步驟,壓縮下一個(gè)語音采樣數(shù)據(jù)。圖協(xié)議解碼解碼過程解碼是編碼的逆過程,ADPCI勺解碼過程如圖所示。解碼輸入即編碼輸出I ,逆量化器將I逆量化成差值dq。差值dq與預(yù)測(cè)采樣Sp相加得到解碼輸出 Sr。解 碼過程同編碼過程中求預(yù)測(cè)采樣的原理是一樣的,當(dāng)編碼端的 Sr能很好的跟蹤上 Si時(shí),解碼端的Sr也能同樣再現(xiàn)Si o這里涉及算法本身的時(shí)延和實(shí)現(xiàn)平臺(tái)、實(shí)現(xiàn) 方法的實(shí)時(shí)性等因素。解碼時(shí)首先通過步長索引查步長調(diào)整表得到量化步長,差值量化編碼I經(jīng)逆量化器得到語音差值 dq,這是求I的逆過程
13、;然后與前次預(yù)測(cè)值 一起重建當(dāng)前語音信號(hào) Sr,最后用固定預(yù)測(cè)Sp=Sr,更新預(yù)測(cè)采樣Sp,用I更新量化步長索引值其主要步驟如下:通過自適應(yīng)逆量化器和自適應(yīng)預(yù)測(cè)得到dq和Spoq通過dq同Sp相加便得到編碼輸出 Sr 0 q采用與編碼器相同的方法更新預(yù)測(cè)濾波器系數(shù),。采用與編碼器相同的方法更新步長索引表,得到新的dq利用新的濾波器系數(shù),重復(fù)上述 5個(gè)步驟,解碼下一個(gè)I(k)三:測(cè)試與驗(yàn)證主要采用Matlab來驗(yàn)證ADPCMj結(jié)果,以及和 Modlsim來聯(lián)合仿真。而我們利 用FPGA資源消耗低、靈活性強(qiáng)、速度快、性價(jià)比突出等優(yōu)勢(shì),使用VerilogHDL硬 件描述語言設(shè)計(jì)并實(shí)現(xiàn)了 ADPCMS
14、/解碼器, 運(yùn)用Modelsim仿真測(cè)試,來確保編/解碼器的正確性和穩(wěn)定性,整個(gè)設(shè)計(jì)充分利用了 FPGA芯片的資源、硬件結(jié)構(gòu)簡(jiǎn)單、可靠性高,具有良好的應(yīng)用前景。仿真根據(jù)協(xié)議,再由上述原理編寫 ADPCMJ編解碼器C代碼,將代碼導(dǎo)入到 matlab 中17。我們用一段類似語音的正弦波取 200點(diǎn)來驗(yàn)證波形。其代碼如下:t=0:pi/50:2*pi;y=sin(t);adpcm_y=adpcm_encoder(y);Y=adpcm_decoder(adpcm_y);其中 adpcm_encoder()為 ADPCM4編碼模塊,代碼見附錄 1,而 adpcm_decoder() 為ADPCMJ解碼模
15、塊,其代碼也見附錄1y為輸入波,adpcm_y為ADPC嗡碼波形,Y為解碼輸出波形則輸入波形如圖圖輸入波形ADPC陶碼波形如圖。圖ADPC蟠碼波形ADPCM?碼波形如圖。圖ADPCMS碼輸入與輸出波形的差值如圖圖輸入與輸出差值波形可以看出開始差距比較大后來慢慢便開始減小,是因?yàn)殚_始是初始化預(yù)測(cè)值我們無法知道,所以便設(shè)定為預(yù)測(cè)值為 00Modelsim 仿真本設(shè)計(jì)采用verilog語言驗(yàn)證編解碼器功能的實(shí)現(xiàn)18。先用matlab生成一個(gè)類似于正弦波的圖形來模擬為輸入的語音波形,并將其值記錄在一個(gè)名為“ sin ”的.txt文件,然后送入到測(cè)試文件中my_menfft存起來,2個(gè)時(shí)鐘上升沿后便把m
16、y_mera存的數(shù)據(jù)一一送入到編碼器的PCMIN俞入端,然后modelsim仿真結(jié)果如下圖。仿真測(cè)試verilog 代碼和編碼器的代碼見附錄 2圖輸入波形及編碼波形同理我讓從編碼器輸出的編碼值也保存在名為“code”的.txt文件中,并設(shè)計(jì)了一個(gè)my_mermj寄存器也來保存中的編碼值,在經(jīng)過2個(gè)時(shí)鐘下降沿后便把 my_mem中保存的數(shù)據(jù)一一送到解碼器的CODEIN輸入端,按照這種方法,每隔2個(gè)時(shí)鐘下降沿便將my_mem3數(shù)據(jù)輸入一個(gè),最后 modelsim仿真數(shù)據(jù)如圖。其中verilog的解碼器代碼和測(cè)試文件的代碼見附錄2圖解碼輸出波形圖解碼輸出波形經(jīng)過解碼后波形與輸入波形相似,當(dāng)系統(tǒng)穩(wěn)定后
17、,差異便慢慢減少,基本保持 了語音的質(zhì)量。四:總結(jié)與展望通過matlab仿真和modelsim的仿真,能夠證明此次設(shè)計(jì)基本符合語音編解碼的期望和結(jié)果。本次課題主要研究ADPCFffi解碼器實(shí)現(xiàn),從而展開的工作。其主要的工作是根據(jù)文獻(xiàn)資料調(diào)研 ADPC的解碼器的原理和設(shè)計(jì)方法。利用 Matlab和C 語言實(shí)現(xiàn)ADPC曲解碼器。利用verilog 設(shè)計(jì)ADPC嗡解碼器的硬件電路,通過對(duì) modelsim仿真測(cè)試激勵(lì)文件的描寫和verilog 編程語言的學(xué)習(xí),對(duì)設(shè)計(jì)的 verilog模型進(jìn)行時(shí)序仿真驗(yàn)證。綜合設(shè)計(jì)的verilog 模型進(jìn)行時(shí)序仿真驗(yàn)證。綜合設(shè)計(jì)的verilog 模型并生成FPGAt件
18、通過此次課題讓我對(duì) ADPC陶解碼有了一定的了解,同時(shí)也對(duì)其使用的仿真軟件有了更加熟悉的運(yùn)用,讓我對(duì) verilog 硬件語言有了更加深刻的認(rèn)識(shí),為我積累了許多寶貴的經(jīng)驗(yàn)。附錄1:編碼代碼function adpcm_y = adpcm_encoder(raw_y)IndexTable = -1, -1, -1, -1,2, 4, 6, 8, -1, -1, -1, -1,2, 4, 6, 8;StepSizeTable = 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21,23, 25, 28,31, 34, 37, 41,45, 50, 55,60,
19、66, 73, 80, 88,97,107,118,130,143,157,173, 190, 209, 230, 253, 279, 307, 337, 371,408, 449, 494, 544, 598, 658,724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272,2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845,8630, 9493, 10442, 11487, 12635, 13899,
20、 15289, 16818, 18500, 20350, 22385,24623, 27086, 29794, 32767;prevsample = 0;previndex = 1;Ns = length(raw_y);n = 1;raw_y = 32767 * raw_y;while (n = 0)code = 0;elsecode = 8;diff = -diff;endtempstep = step;if (diff = tempstep)code = bitor(code, 4);diff = diff - tempstep;endtempstep = bitshift(tempste
21、p, -1);if (diff = tempstep)code = bitor(code, 2);diff = diff - tempstep;endtempstep = bitshift(tempstep, -1);if (diff = tempstep)code = bitor(code, 1);enddiffq = bitshift(step, -3);if (bitand(code, 4)diffq = diffq + step;endif (bitand(code, 2)diffq = diffq + bitshift(step, -1);endif (bitand(code, 1)
22、diffq = diffq + bitshift(step, -2);endif (bitand(code, 8)predsample = predsample - diffq;elsepredsample = predsample + diffq;endif (predsample 32767)predsample = 32767;elseif (predsample -32768)predsample = -32768;endindex = index + IndexTable(code+1);if (index 89)index = 89;endprevsample = predsamp
23、le;previndex = index;adpcm_y(n) = bitand(code, 15);n = n + 1;End解碼模塊function raw_y = adpcm_decoder(adpcm_y)IndexTable = -1, -1, -1, -1,2, 4, 6, 8, -1, -1, -1, -1,2, 4, 6, 8;StepSizeTable = 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21,23, 25, 28,31, 34, 37, 41,45, 50, 55, 60, 66, 73, 80, 88, 97, 107,
24、118, 130,143, 157,173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658,724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845,8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 185
25、00, 20350, 22385,24623, 27086, 29794, 32767;prevsample = 0;previndex = 1;Ns = length(adpcm_y);n = 1;while (n 32767)predsample = 32767;elseif (predsample -32768)predsample = -32768;endindex = index + IndexTable(code+1);if (index 89)index = 89;endprevsample = predsample;previndex = index;raw_y(n) = pr
26、edsample / 32767;n = n + 1;end附錄2編碼模塊module ADPCMEncoder(RST,EN,CLK,PCMIN,CODEOUT);input RST;input EN;input CLK;input signed 15:0 PCMIN;output3:0 CODEOUT;reg3:0 CODEOUT;reg tai;reg sb;reg signed15:0 predsample,diff,prevsample;reg15:0 code;reg signed7:0 index;reg start;initialbegintai = 0;prevsample
27、= 0;start = 0;endalways (posedge CLK)beginif(EN = 0)beginstart = 1;endif(RST=0)begintai = 0;prevsample = 0;index = 0;endif(start=1)beginif(!tai)beginpredsample = PCMIN;diff=predsample-prevsample;if (diff=StepSizeTable(index)begindiff = diff - StepSizeTable(index);code2 = 1;endelsecode2 = 0;diff = di
28、ff=StepSizeTable(index)begindiff = diff - StepSizeTable(index);code1 = 1;endelsecode1 = 0;diff = diff=StepSizeTable(index)begincode0 = 1;end elsecode0 = 0;endelsebeginCODEOUT0 = code0;CODEOUT1 = code1;CODEOUT2 = code2;CODEOUT3 = sb;index =index + IndexTable(code);if (index88) index=88;prevsample=pre
29、dsample;start = 0;endtai = tai;endendfunction7:0 IndexTable;input2:0 index_a;case(index_a)3d00:IndexTable = 8hFF;3d01:IndexTable = 8hFF;3d02:IndexTable = 8hFF;3d03:IndexTable = 8hFF;3d04:IndexTable = 2;3d05:IndexTable = 4;3d06:IndexTable = 6;3d07:IndexTable = 8;default:IndexTable = 8hFF;endcaseEndfu
30、nctionfunction15:0 StepSizeTable;input7:0 Index;case(Index)8d00:StepSizeTable= 16d7;8d01:StepSizeTable= 16d8;8d02:StepSizeTable= 16d9;8d03:StepSizeTable= 16d10;8d04:StepSizeTable= 16d11;8d05:StepSizeTable= 16d12;8d06:StepSizeTable= 16d13;8d07:StepSizeTable= 16d14;8d08:StepSizeTable= 16d16;8d09:StepS
31、izeTable= 16d17;8d10:StepSizeTable= 16d19;8d11:StepSizeTable= 16d21;8d12:StepSizeTable= 16d23;8d13:StepSizeTable= 16d25;8d14:StepSizeTable= 16d28;8d15:StepSizeTable= 16d31;8d16:StepSizeTable= 16d34;8d17:StepSizeTable= 16d37;8d18:StepSizeTable= 16d41;8d19:StepSizeTable= 16d45;8d20:StepSizeTable= 16d5
32、0;8d21:StepSizeTable= 16d55;8d22:StepSizeTable= 16d60;8d23:StepSizeTable= 16d66;8d24:StepSizeTable= 16d73;8d25:StepSizeTable= 16d80;8d26:StepSizeTable= 16d88;8d27:StepSizeTable= 16d97;8d28:StepSizeTable= 16d107;8d29:StepSizeTable= 16d118;8d30:StepSizeTable= 16d130;8d31:StepSizeTable= 16d143;8d32:Ste
33、pSizeTable= 16d157;8d33:StepSizeTable= 16d173;8d34:StepSizeTable= 16d190;8d35:StepSizeTable= 16d209;8d36:StepSizeTable= 16d230;8d37:StepSizeTable= 16d253;8d38:StepSizeTable= 16d279;8d39:StepSizeTable= 16d307;8d40:StepSizeTable= 16d337;8d41:StepSizeTable= 16d371;8d42:StepSizeTable= 16d408;8d43:StepSi
34、zeTable= 16d449;8d44:StepSizeTable= 16d494;8d45:StepSizeTable= 16d544;8d46:StepSizeTable= 16d598;8d47:StepSizeTable= 16d658;8d48:StepSizeTable= 16d724;8d49:StepSizeTable= 16d796;8d50:StepSizeTable= 16d876;8d51:StepSizeTable= 16d963;8d52:StepSizeTable= 16d1060;8d53:StepSizeTable= 16d1166;8d54:StepSiz
35、eTable= 16d1282;8d55:StepSizeTable= 16d1411;8d56:StepSizeTable= 16d1552;8d57:StepSizeTable= 16d1707;8d58:StepSizeTable= 16d1878;8d59:StepSizeTable= 16d2066;8d60:StepSizeTable= 16d2272;8d61:StepSizeTable= 16d2499;8d62:StepSizeTable= 16d2749;8d63:StepSizeTable= 16d3024;8d64:StepSizeTable= 16d3327;8d65
36、:StepSizeTable= 16d3660;8d66:StepSizeTable= 16d4026;8d67:StepSizeTable= 16d4428;8d68:StepSizeTable= 16d4871;8d69:StepSizeTable= 16d5358;8d70:StepSizeTable= 16d5894;8d71:StepSizeTable= 16d6484;8d72:StepSizeTable= 16d7132;8d73:StepSizeTable= 16d7845;8d74:StepSizeTable= 16d8630;8d75:StepSizeTable= 16d9
37、493;8d76:StepSizeTable= 16d10442;8d77:StepSizeTable= 16d11487;8d78:StepSizeTable= 16d12635;8d79:StepSizeTable= 16d13899;8d80:StepSizeTable= 16d15289;8d81:StepSizeTable= 16d16818;8d82:StepSizeTable= 16d18500;8d83:StepSizeTable= 16d20350;8d84:StepSizeTable= 16d22385;8d85:StepSizeTable= 16d24623;8d86:S
38、tepSizeTable= 16d27086;8d87:StepSizeTable= 16d29794;8d88:StepSizeTable= 16d32767;default:StepSizeTable= 16d7;endcaseendfunctionendmodule解碼模塊module ADPCMDecoder(RST,EN,CLK,CODEIN,PCMOUT);input RST;input EN;input CLK;input3:0 CODEIN;output signed15:0 PCMOUT;reg signed15:0 PCMOUT;reg signed 15:0 de_pre
39、dsample,diffq;reg signed 16:0 de_prevsample;reg signed 16:0 de_diffq;reg signed 7:0 de_index;reg state;reg2:0 de_code;reg sb;reg start;initialbeginstate = 0;de_index = 0;endalways (negedge CLK)beginif(EN = 0)beginstart = 1;endif(RST=0)beginde_index = 0;de_predsample = 0;endif(start=1)beginif(!state)
40、beginde_code0 = CODEIN0;de_code1 = CODEIN1;de_code2 = CODEIN2;sb = CODEIN3;de_diffq(de_step_table(de_index)*de_code)2)+(de_step_table(de_index) 3);endelsebeginif(de_diffq16)diffq = 32767;elsediffq = de_diffq15:0;if(sb)de_prevsample = de_predsample-diffq;elsede_prevsample = de_predsample+diffq;if (de
41、_prevsample32767) de_prevsample=32767;else if (de_prevsample-32768) de_prevsample=-32768;de_predsample= de_prevsample15:0;PCMOUT = de_predsample;de_index=de_index+de_index_adjust(de_code);if (de_index88) de_index=88;start = 0;endstate = state;endendfunction7:0 de_index_adjust;input2:0 de_index_a;cas
42、e(de_index_a)3d00:de_index_adjust = 8hFF;3d01:de_index_adjust = 8hFF;3d02:de_index_adjust = 8hFF;3d03:de_index_adjust = 8hFF;3d04:de_index_adjust = 2;3d05:de_index_adjust = 4;3d06:de_index_adjust = 6;3d07:de_index_adjust = 8;default:de_index_adjust = 8hFF;endcaseendfunctionfunction15:0 de_step_table
43、;input7:0 table_de_index;case(table_de_index)8d00:de_step_table = 16d7;8d01:de_step_table = 16d8;8d02:de_step_table = 16d9;8d03:de_step_table = 16d10;8d04:de_step_table = 16d11;8d05:de_step_table = 16d12;8d06:de_step_table = 16d13;8d07:de_step_table = 16d14;8d08:de_step_table = 16d16;8d09:de_step_ta
44、ble = 16d17;8d10:de_step_table = 16d19;8d11:de_step_table = 16d21;8d12:de_step_table = 16d23;8d13:de_step_table = 16d25;8d14:de_step_table = 16d28;8d15:de_step_table = 16d31;8d16:de_step_table = 16d34;8d17:de_step_table = 16d37;8d18:de_step_table = 16d41;8d19:de_step_table = 16d45;8d20:de_step_table
45、 = 16d50;8d21:de_step_table = 16d55;8d22:de_step_table = 16d60;8d23:de_step_table = 16d66;8d24:de_step_table = 16d73;8d25:de_step_table = 16d80;8d26:de_step_table = 16d88;8d27:de_step_table = 16d97;8d28:de_step_table = 16d107;8d29:de_step_table = 16d118;8d30:de_step_table = 16d130;8d31:de_step_table = 16d143;8d32:de_step_table = 16d157;8d33:de_step_table = 16d173;8d34:de_step_table = 16d190;8d35:de_step_table = 16d209;8d36:de_step_table = 16d230;8d37:de_step_table = 16d253;8d38:de_step_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度社區(qū)停車位產(chǎn)權(quán)轉(zhuǎn)讓協(xié)議范本4篇
- 2025年度鋅錠國際貿(mào)易結(jié)算服務(wù)合同3篇
- 2025年度智能大樓能源管理系統(tǒng)施工合同4篇
- 老虎畫畫賀卡課程設(shè)計(jì)
- 二零二五版共享單車運(yùn)營管理服務(wù)合同4篇
- 2025年度個(gè)人別墅買賣合同范本8篇
- 二零二五年度模特時(shí)尚周模特簽約合同4篇
- 二零二五版門面裝修工程施工安全防護(hù)合同范本文檔4篇
- 城市的文物與文化(修訂版)
- 2025年度信息技術(shù)服務(wù)代理商合作專項(xiàng)合同4篇
- 安徽省合肥市包河區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末化學(xué)試題
- 《酸堿罐區(qū)設(shè)計(jì)規(guī)范》編制說明
- PMC主管年終總結(jié)報(bào)告
- 售樓部保安管理培訓(xùn)
- 倉儲(chǔ)培訓(xùn)課件模板
- 2025屆高考地理一輪復(fù)習(xí)第七講水循環(huán)與洋流自主練含解析
- GB/T 44914-2024和田玉分級(jí)
- 2024年度企業(yè)入駐跨境電商孵化基地合作協(xié)議3篇
- 《形勢(shì)與政策》課程標(biāo)準(zhǔn)
- 2023年海南省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 橋梁監(jiān)測(cè)監(jiān)控實(shí)施方案
評(píng)論
0/150
提交評(píng)論