




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
DSP課程設(shè)計設(shè)計報告設(shè)計題目:利用DSP實現(xiàn)自適應(yīng)濾波2013年7月12日目錄設(shè)計任務(wù)要求………1理論分析…………TMS320C55x概況………自適應(yīng)濾波器原理……………………自適應(yīng)濾波器結(jié)構(gòu)……………………LMS算法與RLS算法…………………自適應(yīng)濾波器的應(yīng)用…………………設(shè)計思路……………程序分析……………左右分聲道濾波………LMS自適應(yīng)算法………調(diào)試過程與實現(xiàn)效果………………調(diào)試過程………………實現(xiàn)效果………………總結(jié)…………………完成情況………遇到的困難……………………體會與感悟……………………參考文獻……………附:原始程序清單 設(shè)計任務(wù)要求本課程設(shè)計的目的是通過利用DSP實現(xiàn)信號自適應(yīng)濾波這一過程,是自己更加透徹的理解信號的采集方法和濾波方法,學(xué)會調(diào)用DSPLIB庫中的LMS函數(shù),進行自適應(yīng)濾波。同時通過對DSP信號處理器及A/D、D/A轉(zhuǎn)換器以及DMA的編程,提高自身的C語言編程能力和使用DSP硬件平臺實現(xiàn)數(shù)字信號處理算法的能力。本設(shè)計分為基本部分和發(fā)揮部分?;静糠郑海?)設(shè)計數(shù)字濾波算法或調(diào)用DSPLIB中函數(shù),實現(xiàn)對信號的濾波;(2) 利用C語言對A/D、D/A進行初始化;(3) 利用C語言對DMA進行初始化;(4) 編寫DMA終端服務(wù)程序,實現(xiàn)對信號的實時濾波;(5) 利用CCS信號分析工具分析信號的頻譜成分,確定濾波器的參數(shù)。發(fā)揮部分:(1)比較不同自適應(yīng)濾波器的濾波效果;(2)在實驗板的Linein輸入端接入正弦信號,分左右聲道分別采集并濾波。理論分析TMS320C55x概況C55xDSP芯片是C5000系列的新一代產(chǎn)品,與C54x的源代碼兼容。與C54x相比,C55x處理速度明顯提高,功耗明顯降低。如300MHz的C55x與120MHz的C54x相比,C55x的處理速度比C54x提高了5倍,功耗只有C54x的1/6。與C54x相比,C55x的結(jié)構(gòu)上復(fù)雜得多,采用了近似'雙CPU結(jié)構(gòu)'C55x具有2個MAC單元、4個40為累加器,能夠在單周期內(nèi)作2個17位X17位的乘法運算。C55x具有12組獨立總線,即1組程序讀總線,1組程序地址總線,3組數(shù)據(jù)讀總線,2組數(shù)據(jù)寫總線,5組數(shù)據(jù)地址總線,其指令單位每次可從存儲器中讀取32為程序代碼(C54x只能讀取16位)。C55x含有指令高速存儲器(Cache),以減少對外部存貯器的訪問,改善了數(shù)據(jù)吞吐量并降低了功耗。C55x采用了1~6字節(jié)的可改變字節(jié)寬度指令(C54x的指令長度為固定的16位),從而提高了代碼的密度。自適應(yīng)濾波器原理常規(guī)濾波器具有固定的濾波特性,對于輸入信號濾波器根據(jù)這個特性產(chǎn)生相應(yīng)的輸出。但是在實際應(yīng)用往往不是這樣,即對濾波器輸出的要求是明確的,而濾波器特性是無法預(yù)先知道的。例如電話系統(tǒng),回波相消器的理想輸出是無回波信號,這個要求是明確的,而系統(tǒng)本身卻不能一開始就確定下來,因為它取決于電話系統(tǒng)話路傳輸條件的變化,像這樣的應(yīng)用需求就需要通過自適應(yīng)濾波技術(shù)來解決。下圖是自適應(yīng)濾波器的結(jié)構(gòu)框圖。其中想x(n)為濾波器的輸入信號,wi(n)為濾波
器的權(quán)值系數(shù),d(n)為濾波器的期望信號,e(n)為濾波器的估計誤差信號。1=0,1…,L-1,L為濾波器的階數(shù)。d(n)e(n)d(n).I>x(n)W(z)y(n)自適應(yīng)
算法x(n)W(z)y(n)自適應(yīng)
算法自適應(yīng)濾波器的目的是,以迭代方式逐步調(diào)整濾波器系數(shù)W1(n),使誤差信號e(n)的能量(或幅度)不斷減少。定義濾波器的輸入信號向量為:x(n)=[x(n),x(n—l),x(n)=[x(n),x(n—l),…,x(n—L+1)]T濾波器系數(shù)矢量為:w(n)=[w0w(n)=[w0(n),W(n),…wL—1(n)]T其中上標(biāo)T表示矩陣轉(zhuǎn)置運算符,則濾波器輸出為:y(n)=l=0或 y(n)=wT(n)x(n)=xT(n)w(n)誤差信號為:e(n)=d(n)—y(n)=d(n)—wT(n)x(n)定義性能函數(shù)為:g=e2(n)可以得到濾波器系數(shù)更新公式:w(n+l)=w(n)+pe(n)x(n)其中,M為收斂因子。自適應(yīng)濾波器結(jié)構(gòu)自適應(yīng)濾波器的結(jié)構(gòu)可以是IIR型結(jié)構(gòu),也可以是FIR型結(jié)構(gòu)。但在實際用中,一般都是采用FIR型,其主要原因是FIR結(jié)構(gòu)的自適應(yīng)技術(shù)實現(xiàn)更容易,其權(quán)系數(shù)的修正就調(diào)節(jié)了濾波器的性能。同時還可以保證其穩(wěn)定性,對于IIR濾波器,當(dāng)自適應(yīng)處理過程中,極點移出單位圓之外時,就會使濾波器產(chǎn)生不穩(wěn)定。用FIR型結(jié)構(gòu)作為自適應(yīng)濾波器的結(jié)構(gòu),并不會影響它的應(yīng)用范圍,因為從以前的知識可知道,一個穩(wěn)定的IIR濾波器總是可以用足夠多階的FIR濾波器來近似代替。一個自適應(yīng)的FIR濾波器的結(jié)構(gòu),可以是橫向結(jié)構(gòu),對稱橫向結(jié)構(gòu)以及格形結(jié)構(gòu)。橫向型結(jié)構(gòu)橫向型結(jié)構(gòu)是在大多數(shù)應(yīng)用情況下所采用的最主要的自適應(yīng)濾波器結(jié)構(gòu),如下圖所示濾波器的輸出y(n)表示為:y(n)=wt(n)X(n)=£w(n)x(n一i)ii=0其中X(n)=[x(n),x(n-l),???x(n-x+l)]T為輸入矢量,w(n)=[wo(n),wl(n),…,wn一1(n)]T是權(quán)系數(shù)矢量,T為轉(zhuǎn)置符,N為時間序列,N為濾波器的階數(shù)。由表達式可見,y(n)實際是兩矢量的內(nèi)積 既把x(n)與w(n)相卷的結(jié)果。對稱橫向型結(jié)構(gòu)如果N階FIR濾波器的單位脈沖響應(yīng)h(n)為實數(shù),且滿足對稱性的條件,即:h(n)=h(N-1-n)則稱為對稱橫向性結(jié)構(gòu),如下圖所示。在具有嚴格的線性特性的語音處理、波形傳輸系統(tǒng)、圖象處理等方面得到廣泛應(yīng)用。這種關(guān)于中心點對稱的FIR濾波器的輸出y(n)可由下面的表達式給出y(n)=吩w(n)[x(n一i)+x(n一N+i+1)]it=0其中N為階數(shù),它一定是偶數(shù)。注意,對于定點處理器,上式的相加運算可能產(chǎn)生溢出。為此有時需要對歸一化的輸入數(shù)據(jù)在右移一位。2.3.3格形結(jié)構(gòu)的自適應(yīng)濾波器另一種迭代FIR濾波器結(jié)構(gòu)是格形結(jié)構(gòu)。格形結(jié)構(gòu)的引出是用Durbin算法求解自適應(yīng)濾波器的最佳權(quán)系數(shù)所導(dǎo)出來的。在使用LMS算法求解自適應(yīng)濾波器最佳權(quán)系數(shù)時,可以發(fā)現(xiàn),最佳權(quán)系數(shù)滿足一個線性方程組,該方程組的系數(shù)矩陣具有toeplitz性質(zhì),即該矩陣為對稱矩陣,且方陣的任一子方陣的對角線上的元是相等的。具有Toeplitz性質(zhì)的線性方程可以按下列思路求解:先假設(shè)導(dǎo)出了只有N-1元的方程組的解,并由此推出N元方程組的解。這是一種遞推算法,應(yīng)用于最佳權(quán)系數(shù)估值,就形成了Durbin算法。這里不做詳細推倒了,直接給出格式結(jié)構(gòu),下圖所示:它是基于一系列預(yù)測誤差濾波器的去相關(guān)傳輸結(jié)構(gòu)。格形結(jié)構(gòu)的誤差預(yù)測器的遞推公式如下:f(n)=f(n)-k(n)b(n-1)(me(0,M])m m-1 m m-1b(n)=b(n-1)-k(n)f(n)(me(0,M])m m-1 m m-1其中,fm(n)是前向預(yù)測誤差,bm(n)是后向預(yù)測誤差,km(是反射系數(shù),m是階數(shù)序列值,M是串聯(lián)的總級數(shù)。格式結(jié)構(gòu)的優(yōu)點是按階遞歸,故增加或減少級數(shù)不會影響存在的階數(shù)設(shè)計。要用格形濾波器進行實際數(shù)據(jù)處理,首先要知道km(n),這些系數(shù)可以使用Durbin算法,由自相關(guān)系數(shù)的估值來算出,運算量很大??梢允褂孟铝蟹瓷湎禂?shù)的遞推方程來遞推估計。k(n+1)=k(n)+u[f(n)b(n一1)b(n)f(n)]m m m m-1 m m-1
在諸如噪聲消除器、信道均衡器、在線信號增強器等自適應(yīng)濾波器的應(yīng)用中,可以采用格形結(jié)構(gòu)。這種格形抽頭結(jié)構(gòu)完成兩類最佳估計:一類是格形誤差預(yù)測器,輸出分別為前向預(yù)測誤差fm(n)和后向預(yù)測誤差bm(n);另一類是多路回歸濾波器,其特性用下列方程表示:e(n)=d(n)-b(n)g(n)000e(n)=e(n)-b(n)g(n)m m-1 m-1 m-1y(n)仝g(n)b(n)mm=0m從上面算法可以看出,格形抽頭自適應(yīng)濾波器的計算要復(fù)雜得多,但計算量的增加卻帶來很多好處。首先是收斂速度比橫向結(jié)構(gòu)來得快,同時穩(wěn)定性更好。其次,系數(shù)量化精度的影響很小,對于的低位數(shù)要求也使舍入誤差很小。另外,格式結(jié)構(gòu)自適應(yīng)濾波器還提供了誤慶差預(yù)測值和反射系數(shù)最佳值,后者在作其他分析時有明顯物理意義。正是這些優(yōu)點,使格式結(jié)構(gòu)得到廣泛應(yīng)用。2.4LMS算法與RLS算法LMS算法LMS算法是上世紀(jì)50到60年代通用電子公司在研制天線的過程中為抑制旁瓣而提出的。隨后又發(fā)展出了歸一化算法和加遺忘因子LMS算法。1977年,Makjoul提出了格型濾波器,法并由此發(fā)展出了LMS自適應(yīng)格型濾波器算法。Herzberg等人提出了延時LMS(DLMS器,法2002年尚勇等人提出了并行延時LMS算法;此外還有附屬LMS算法、數(shù)據(jù)塊LMS算法LMS算法具有低計算復(fù)雜度、在平穩(wěn)環(huán)境中收斂性好、均值無偏的收斂到維納解等優(yōu)點,使LMS算法成為應(yīng)用最廣的自適應(yīng)算法。由于LMS算法廣泛的應(yīng)用,所以為了解決實際問題,基于基本LMS算法的新的LMS算法不斷地被提出。本設(shè)計就是使用LMS算法來實現(xiàn)對信號的自適應(yīng)濾波的。RLS算法盡管LMS算法的應(yīng)用廣泛,但是它也有缺點。當(dāng)環(huán)境噪聲不是平穩(wěn)隨機信號時,LMS算法很難自適應(yīng)的跟蹤統(tǒng)計特性變化的外部噪聲干擾,因而其收斂效果一般。而基于RLS的自適應(yīng)濾波算法克服了上述缺點,能在非平穩(wěn)環(huán)境下取得較滿意的濾波效果。RLS算法是在LMS算法的基礎(chǔ)上而來的,所不同的是在求均方誤差時觀測數(shù)據(jù)的長度是變化的。且隨著觀測數(shù)據(jù)的時間先后順序分別乘了加權(quán)因子。即RLS算法的均方誤差變?yōu)椋篻(k)=丈p(k,n)(n)n=1式中:P(k,n)是加權(quán)因子,滿足0<P(k,n)W1,n=1,2,…,k,也稱作遺忘因子。這樣會使多次迭代之前的信號被遺棄掉,當(dāng)濾波器工作于非平穩(wěn)環(huán)境時,觀測數(shù)據(jù)仍可能服從統(tǒng)計變化的一些特性兩種算法對比LMS算法只是用以前各時刻的抽頭參量等作該時刻數(shù)據(jù)塊評估時的平均誤差均方最小的準(zhǔn)則,而未用現(xiàn)時刻的抽頭參量等來對以往各時刻的數(shù)據(jù)塊作重新評估后的累計平方誤差最小的準(zhǔn)則,所以LMS算法對非平穩(wěn)信號的適應(yīng)性差。RLS算法的基本思想是力圖使在每個時刻對所有已輸入信號而言重估的平方誤差的加權(quán)和最小,這使得RLS算法對非平穩(wěn)信號的適應(yīng)性要好。與LMS算法相比,RLS算法采取時間平均,因此,所得出的最優(yōu)濾波器依賴于用于計算平均值的樣本數(shù),而LMS算法是基于集平均而設(shè)計的,因此穩(wěn)定環(huán)境下LMS算法在不同計算條件下的結(jié)果是一致的。而無論從運算復(fù)雜度上還是從存儲量方面,LMS算法都是非常高效的自適應(yīng)算法。以算法復(fù)雜度為例,LMS算法只需要2L次乘法和加法運算,其復(fù)雜度比RLS算法小得多。而且LMS算法的另一個優(yōu)點是它沒有計算穩(wěn)定性問題,而這是RLS算法無法回避的。因此綜上LMS算法是目前使用最廣泛的自適應(yīng)算法,這一點在與定點DSP相關(guān)的工程實例中體現(xiàn)的十分突出。自適應(yīng)濾波器的應(yīng)用自適應(yīng)預(yù)測下圖中給出了自適應(yīng)預(yù)測的系統(tǒng)結(jié)構(gòu)。原始信號d(n)的延時x(n)是自適應(yīng)濾波器的輸入信號,y(n)為預(yù)測信號輸出,e(n)為預(yù)測誤差。自適應(yīng)預(yù)測的最主要應(yīng)用例子是語音信號的波形編碼。為了提高信道容量,壓縮編碼技術(shù)是很重要的手段。自適應(yīng)濾波器利用語音信號相鄰采樣值的相關(guān)性,可使預(yù)測的誤差信號e(n)平均來講比輸入信號小得多,因而把誤差信號量化并傳輸給接收端所需要的位數(shù)要少得多。這種波形編碼就是自適應(yīng)差分脈沖編碼(ADPCM),它保證以32kbps的速率完成語音無失真?zhèn)鬏敗W赃m應(yīng)均衡器下圖中給出另一類應(yīng)用系統(tǒng)一一自適應(yīng)均衡器的框圖。x(n)為接收信號加上信道噪聲,它是所接收的信號通過信道濾波的結(jié)果。d(n)為檢測碼(傳輸模式)或偽隨機碼(訓(xùn)練模式).y(n)為均衡輸出碼,e(n)為碼簡串?dāng)_剩余,再加上噪聲。自適應(yīng)濾波器是自適應(yīng)技術(shù)在電訊中很重要的應(yīng)用,其目的是減小信道產(chǎn)生的幅度和相位失真。因為在數(shù)字傳輸系統(tǒng)中,每個數(shù)碼的傳送會因信道的影響,產(chǎn)生時域上展寬——即會造成接收信號中數(shù)碼的交疊,形成碼間干擾。自適應(yīng)濾波器用來分離各個數(shù)碼,減少碼間串?dāng)_。在很多情況下,信道是時變的,或預(yù)先根本不可知的,此時使用自適應(yīng)技術(shù)就尤為重要。自適應(yīng)回波消除器在電話系統(tǒng)中,用戶設(shè)備都是雙向走線,從用戶到中心局間的電話網(wǎng)采用雙線分別攜帶進來的語音信號和出去的語音信號。這樣做,可以使導(dǎo)線對與中心局終端混頻線圈形成橋式平衡。但在實際應(yīng)用中,橋式平衡很難完全滿足,就使遠距離談話者的語音信號中的一部分以回波的形式返回到原端,影響話音信號的質(zhì)量。尤其是在衛(wèi)星通信這樣的大型線路中,回波返回的延遲時間長達幾百毫秒,對話音的影響和損害就非常嚴重。為此,可以在網(wǎng)絡(luò)的兩端安裝自適應(yīng)回波消除器,如圖④所示。其中,X(n)為遠端回波信號加上近端信號,y(n)為遠端回波信號的估計,e(n)為近端信號和回波估計剩余。自適應(yīng)回波消除器在長距離話音通訊、高性能電話會議系統(tǒng)以及衛(wèi)星通信系統(tǒng)中已經(jīng)成了必不可少的組成部分,并不斷有新的應(yīng)用出現(xiàn)。自適應(yīng)噪聲消除器自適應(yīng)噪聲消除器還可以用來構(gòu)成自適應(yīng)的噪聲消除器,其結(jié)構(gòu)如圖⑤所示原始輸入信號d(n)中的噪聲估計,并把估計值y(n)與原始信道信號相減以達到噪聲消除的結(jié)果。噪聲消除器的應(yīng)用十分廣泛,例如心電圖記錄儀的干擾消除,語音信號的鎮(zhèn)噪,飛機、汽車、船艙內(nèi)大量噪聲的抑制,天線旁瓣干擾的消除以及消除50HZ紋波等等。自適應(yīng)濾波器的應(yīng)用遠遠不止上面所講的幾種。這些只是在通信中幾個最常見的應(yīng)用。實際上,自適應(yīng)技術(shù)的應(yīng)用要廣闊的多。像瞬間頻率跟蹤、外來干擾檢測、聲音多普勒提取在線系統(tǒng)識別、圖象信號處理、生物醫(yī)學(xué)信號處理、波束整形以及自適應(yīng)控制等等。設(shè)計思路首先對DMA、A/D和D/A進行初始化。然后編寫DMA通道傳輸程序,實現(xiàn)對外部信號的實時采集,外部模擬信號先進行A/D轉(zhuǎn)換,利用MCBSP的接收寄存器接收數(shù)據(jù)。之后編寫自適應(yīng)濾波算法程序,或調(diào)用DSPLIB中的自適應(yīng)函數(shù),對信號進行自適應(yīng)濾波。濾波后信號存放數(shù)據(jù)區(qū)滿發(fā)出中斷,請求信號輸出。利用DMA方式傳輸輸出數(shù)據(jù),經(jīng)D/A轉(zhuǎn)換后輸出。程序分析4.1左右分聲道濾波下面是源程序中關(guān)于左右分聲道濾波的代碼段:left[i]=gBufferRcvPing[2*i];right[i]=gBufferRcvPing[2*i+1];gBufferXmtPing[2*i]=leftout[i];gBufferXmtPing[2*i+1]=right[i];其中g(shù)BufferRcvPing是存放所讀入數(shù)據(jù)的數(shù)組,gBufferXmtPing是存放要輸出數(shù)據(jù)的數(shù)組,left是左聲道讀入的數(shù)據(jù),right是右聲道讀入的數(shù)據(jù),leftout是左聲道輸出的數(shù)據(jù),right是右聲道輸出的數(shù)據(jù)。通過咨詢老師我們知道左/右聲道的數(shù)據(jù)分別存放在gBufferRcvPing數(shù)組的雙/單數(shù)地址。因此我們用前兩句代碼將左右聲道的數(shù)據(jù)區(qū)分到兩個數(shù)組,并在下面對兩組數(shù)據(jù)分別進行處理。在處理完成后再將左右聲道的輸出數(shù)據(jù)按照同樣的規(guī)律傳輸給gBufferXmtPing數(shù)組進行輸出。這樣就可以完成設(shè)計任務(wù)書中的‘分左右聲道分別采集,并進行濾波'的要求。4.3LMS自適應(yīng)算法下面是源程序中關(guān)于LMS自適應(yīng)濾波算法的代碼段:dlms(left,h1,leftout,des,delaybuff,step,16,128);dlms(right,h2,rightout,des,delaybuff1,step,16,128);這是對信號進行LMS算法自適應(yīng)濾波的代碼段,調(diào)用了DSPLIB庫函數(shù)。函數(shù)格式為:dlms(DATA*x,DATA*h,DATA*r,DATA*des,DATA*dbuffer,DATAstep,ushortnh,ushortx)其中,x是長度為nx的輸入向量,h是長度為nh的系數(shù)向量,r是長度為nx的輸出數(shù)據(jù)向量,des是期望輸出數(shù)組,dbuffer指向延時緩沖。函數(shù)是自適應(yīng)延時LMSFIR濾波,步長step=2Xu,輸入數(shù)據(jù)存儲在dbuffer中,濾波輸出結(jié)果存儲在r中,該函數(shù)使用LMS指令完成濾波和修改系數(shù)。調(diào)試過程與實現(xiàn)效果本次調(diào)試過程大致可分為兩部分,即對疊加了高頻信號的正弦信號進行濾波和對疊加了高斯白噪聲的信號進行濾波。下面將分別敘述調(diào)試過程和實現(xiàn)的效果。5.1對疊加了高頻信號的正弦信號進行濾波首先利用Matlab生成一個750Hz的正弦信號,其中疊加了5000Hz的正弦信號。將計算機的音頻輸出端口連接到DSP系統(tǒng)的信號輸入端口,計算機的音頻輸入端口連接到DSP系統(tǒng)的信號輸出端口。然后用CCS打開編寫好的工程,進行編譯后開始運行工程。在計算機上播放疊加了5000Hz信號的750Hz正弦信號,并打開虛擬儀器,利用虛擬儀器和CCS的信號分析工具共同來觀察波形。觀察到波形如下:
本次濾波的步長step設(shè)置為150。1117--1117-727-364-0 7.11 14.2 21.3 28.4 35.6 42.7 49.8 56.9 64.0 71.1 78.2 85.3 92.4 99.6 107 114 121 1271818:1454-1091-本次濾波的步長step設(shè)置為150。1117--1117-727-364-0 7.11 14.2 21.3 28.4 35.6 42.7 49.8 56.9 64.0 71.1 78.2 85.3 92.4 99.6 107 114 121 1271818:1454-1091--364--1091--1454--1818.18621490-745--745--1490--1862.圖(1)?第一次濾波前后信號時域波形(step=150)I圖(2)?第一次濾波前后信號頻域波形(step=150)圖(1)中是由CCS觀察到的經(jīng)過濾波前后信號的時域波形。其中上方為濾波前信號,下方為經(jīng)過濾波的信號??梢姙V波前的信號中疊加了明顯的高頻分量,而濾波后信號高頻分量大幅度較少,信號也比較平滑,較為接近原始信號。圖(2)是通過虛擬儀器觀察到濾波前后信號的頻域波形,下方是濾波前信號的頻域波形,下方是濾波后信號的頻域波形。通過此圖可以更加明顯的看出濾波的效果。濾波前信號頻譜有明顯的兩個譜峰,而經(jīng)過濾波后高頻的譜峰幾乎全部被濾除,濾波效果明顯。第二次將濾波的步長step調(diào)整為70,觀察濾波效果并與step=150時作對比。
圖(3)是第二次濾波前后信號的時域波形??梢钥闯鰹V波效果也比較明顯,但是波形并不如第一次濾波平滑。這點在頻域波形中體現(xiàn)的更明顯,如圖(4)所示。上方為經(jīng)過濾波后信號的頻譜,可見高頻分量被明顯的衰減,但是仍有較大的參與,這點也與時域圖中觀察到的結(jié)果相吻合。除了這兩次濾波外,我還將step設(shè)置過從幾十到幾百的很多個數(shù)值,通過觀察效果可以簡單地下一個結(jié)論:step增大會使濾波的效果變好,但是step增大會影響濾波的穩(wěn)定性,即step偏大時輸出信號會產(chǎn)生震蕩,濾波效果時好時壞;此外,當(dāng)step過大或過小時,會出現(xiàn)無法收斂的可能,即毫無濾波效果。
5.2對疊加了高斯白噪聲的信號進行濾波對疊加了高斯白噪聲的信號進行濾波的過程與上一節(jié)類似。首先利用Matlab生成一個750Hz的正弦信號,其中疊加了高斯白噪聲信號,信噪比為7dB。將計算機的音頻輸出端口連接到DSP系統(tǒng)的信號輸入端口,計算機的音頻輸入端口連接到DSP系統(tǒng)的信號輸出端口。然后用CCS打開編寫好的工程,進行編譯后開始運行工程。在計算機上播放疊加了噪聲信號的750Hz正弦信號,并打開虛擬儀器,利用虛擬儀器和CCS的信號分析工具共同來觀察波形。觀察到波形如下:本次濾波的步長step設(shè)置為150。0 7.11 14.2 21.3 28.4 35.6 42.7 49.8 56.9 64.0 71.1 78.2 85.3 92.4 99.6 107 114 121 127圖(6).第一次濾波前后信號頻域波形(step=150)
圖(5)中是對疊加了噪音的信號進行第一次濾波前后的信號時域波形。上方是疊加了噪聲的輸入信號,下方是濾波后的信號。可見通過濾波后,信號明顯變得平滑和完整,十分接近原始750Hz的單正弦信號。圖(6)是濾波前后信號的頻域波形??梢娤路降妮斎胄盘栍休^多的噪聲分量,而上方濾波后信號帶外噪聲明顯減少,這也與時域的波形相一致。第二次將濾波的步長step調(diào)整為70,觀察濾波效果并與step=150時作對比。圖(7).第二次濾波前后信號時域波形(step=70)圖(8).第二次濾波前后信號頻域波形(step=70)由以上兩圖可知,當(dāng)step調(diào)整為70后,對濾波的效果并無太大的影響。但是此后我又將step設(shè)置為相差更大的值。這是得到的結(jié)論與對疊加了高頻信號的正弦信號進行濾波時相類似,即step較大時濾波效果較好,step較小時濾波穩(wěn)定性較好,但是當(dāng)step過大或過小時會出現(xiàn)無法濾波的情況。說明一點,為了能在虛擬儀器上同時觀察濾波前后的波形,做以上測試時我們只對左聲道進行了濾波處理,而右聲道是直接輸出。將左右聲道都進行濾波處理時,得到的效果與單一聲道處理時完全一致。這也驗證了設(shè)計任務(wù)書中‘左右聲道分別采集信號,并進行濾波的附加設(shè)計要求的可行性。通過以上測試,可以初步認為這一自適應(yīng)濾波系統(tǒng)可以滿足設(shè)計要求。7參考文獻趙洪亮.TMS320C55xDSP應(yīng)用系統(tǒng)設(shè)計(第二版)?北京:北京航空航天大學(xué)出版社,2010.李利.DSP原理及應(yīng)用(第二版).北京:中國水利水電出版社,2012.劉艷萍.DSP技術(shù)原理及應(yīng)用教程(第三版).北京:北京航空航天大學(xué)出版社,2012.張衛(wèi)寧.DSP原理與應(yīng)用教程.北京:科學(xué)出版社,2008.王麗芳,陳益平.基于DSP的自適應(yīng)濾波器的實現(xiàn).北京:計算機仿真,2009(9).281-284.附:原始程序#include<stdio.h>#include<csl_mcbsp.h>#include<csl_dma.h>#include<csl_irq.h>// Globaldatadefinition/*Constantsforthebufferedping-pongtransfer*/#defineBUFFSIZE256#definePING0#definePONG1#definestep300#pragmaDATA_SECTION(gBufferXmtPing,"buffer_sect")Int16gBufferXmtPing[BUFFSIZE];//TransmitPINGbuffer#pragmaDATA_SECTION(gBufferXmtPong,"buffer_sect");Int16gBufferXmtPong[BUFFSIZE];//TransmitPONGbuffer#pragmaDATA_SECTION(gBufferRcvPing,"buffer_sect");Int16gBufferRcvPing[BUFFSIZE];//ReceivePINGbuffer#pragmaDATA_SECTION(gBufferRcvPong,"buffer_sect");Int16gBufferRcvPong[BUFFSIZE];//ReceivePONGbuffer#pragmaDATA_SECTION(left,"buffer_sect");Int16left[128];//#pragmaDATA_SECTION(right,"buffer_sect");Int16right[128];//#pragmaDATA_SECTION(h1,"buffer_sect");Int16h1[16];#pragmaDATA_SECTION(h2,"buffer_sect");Int16h2[16];#pragmaDATA_SECTION(des,"buffer_sect");Int16des[128]={0,3196,6270,9102,11585,13623,15137,16069,16384,16069,15137,13623,11585,9102,6270,3196,0,-3196,-6270,-9102,-11585,-13623,-15137,-16069,-16384,-16069,-15137,-13623,-11585,-9102,-6270,-3196,0,3196,6270,9102,11585,13623,15137,16069,16384,16069,15137,13623,11585,9102,6270,3196,0,-3196,-6270,-9102,-11585,-13623,-15137,-16069,-16384,-16069,-15137,-13623,-11585,-9102,-6270,-3196,0,3196,6270,9102,11585,13623,15137,16069,16384,16069,15137,13623,11585,9102,6270,3196,0,-3196,-6270,-9102,-11585,-13623,-15137,-16069,-16384,-16069,-15137,-13623,-11585,-9102,-6270,-3196,0,3196,6270,9102,11585,13623,15137,16069,16384,16069,15137,13623,11585,9102,6270,3196,0,-3196,-6270,-9102,-11585,-13623,-15137,-16069,-16384,-16069,-15137,-13623,-11585,-9102,-6270,-3196,};#pragmaDATA_SECTION(leftout,"buffer_sect");Int16leftout[128];
#pragmaDATA_SECTION(rightout,"buffer_sect");Int16rightout[128];#pragmaDATA_SECTION(delaybuff,"buffer_sect");Int16delaybuff[18];#pragmaDATA_SECTION(delaybuff,"buffer_sect");Int16delaybuff[18];#pragmaDATA_SECTION(flag,"buffer_sect");shortflag[14];#pragmaDATA_SECTION(delaybuff1,"buffer_sect");Int16delaybuff1[18];/* MCBSP_ConfigMcbsp1Config={//DLB//DLB=0//RJUST=0,rightjustifythedataandzerofill////FREE =0//SOFT =0//FRST=1;Enabletheframe-synclogic//GRST=1;Thesamplerategeneratoristake//XINTM=0//XSYNCER=0//XEMPTY=0//XRDY=0//XRST=0DisabletransimitterMCBSP_SPCR1_CLKSTP_DISABLE,MCBSP_SPCR1_DXENA_ON,0,MCBSP_SPCR1_RINTM_RRDY,MCBSP_SPCR1_RSYNCERR_NO,//MCBSP_SPCR1_RFULL_NO,//MCBSP_SPCR1_RRDY_NO,MCBSP_SPCR1_RRST_DISABLE),MCBSP_SPCR2_RMK(MCBSP_SPCR2_FREE_NO,MCBSP_SPCR2_SOFT_NO,MCBSP_SPCR2_FRST_FSG,MCBSP_SPCR2_GRST_CLKG,outofitsresetstateMCBSP_SPCR2_XINTM_XRDY,MCBSP_SPCR2_XSYNCERR_NO,//MCBSP_SPCR2_XEMPTY_NO,//MCBSP_SPCR2_XRDY_NO,MCBSP_SPCR2_XRST_DISABLE//CLKSTP=0//DXENA=1,DXdelayenableron//Reserved=0//RINTM=0//RSYNCER=0//RFULL=0//RRDY=0//RRST=0;DisablereceiverMCBSP_RCR1_RFRLEN1_OF(1),MCBSP_RCR1_RFRLEN1_OF(1),MCBSP_RCR1_RWDLEN1_16BIT),MCBSP_RCR2_RMK(MCBSP_RCR2_RPHASE_SINGLE,MCBSP_RCR2_RFRLEN2_OF(0),MCBSP_RCR2_RWDLEN2_8BIT,MCBSP_RCR2_RCOMPAND_MSB,receivedfirstMCBSP_RCR2_RFIG_YES,MCBSP_RCR2_RDATDLY_1BIT),MCBSP_XCR1_RMK(MCBSP_XCR1_XFRLEN1_OF(1),),//單數(shù)據(jù)相,接受數(shù)據(jù)長度為16位,每相2個數(shù)據(jù)MCBSP_RCR1_RMK(//RFRLEN1=1//RWDLEN1=2//RPHASE=0//RFRLEN2=0//RWDLEN2=0//RCOMPAND=0Nocompanding,anysizedata,MSB//RFIG=1Frame-syncignore//RDATDLY=11-bitdatadelay//XFRLEN1=1XWDLEN1//IDLEEN//XIOEN//RIOEN//FSXM//XPHASE
XFRLEN2//XWDLEN2XWDLEN1//IDLEEN//XIOEN//RIOEN//FSXM//XPHASE
XFRLEN2//XWDLEN2//XCOMPAND//XFIG=//XDATDLY=//////FSRM//CLKRis//CLKXisinput//SCLKME=0CLKGistakenfromtheMcBSPinternalinput//ThesignalontheCLKSpinislow//DrivethesignalontheDXpinlow//Thesignal//FSXPontheDRpinislow1BecauseafallingedgeonLRCIN//FSRP//CLKXP=1=1//CLKRPMCBSP_XCR1_XWDLEN1_16BIT),MCBSP_XCR2_RMK(MCBSP_XCR2_XPHASE_SINGLE,MCBSP_XCR2_XFRLEN2_OF(0),MCBSP_XCR2_XWDLEN2_8BIT,MCBSP_XCR2_XCOMPAND_MSB,MCBSP_XCR2_XFIG_YES,MCBSP_XCR2_XDATDLY_1BIT),MCBSP_SRGR1_DEFAULT,MCBSP_SRGR2_DEFAULT,MCBSP_MCR1_DEFAULT,MCBSP_MCR2_DEFAULT,MCBSP_PCR_RMK(//MCBSP_PCR_IDLEEN_RESET,MCBSP_PCR_XIOEN_SP,MCBSP_PCR_RIOEN_SP,MCBSP_PCR_FSXM_EXTERNAL,AIC23BMCBSP_PCR_FSRM_EXTERNAL,AIC23BMCBSP_PCR_CLKXM_INPUT,MCBSP_PCR_CLKRM_INPUT,MCBSP_PCR_SCLKME_NO,inputclock//MCBSP_PCR_CLKSSTAT_0,MCBSP_PCR_DXSTAT_0,//MCBSP_PCR_DRSTAT_0,MCBSP_PCR_FSXP_ACTIVEHIGH,orLRCOUTstartsdatatransferMCBSP_PCR_FSRP_ACTIVELOW,MCBSP_PCR_CLKXP_FALLING,datatransferMCBSP_PCR_CLKRP_RISING),MCBSP_RCERA_DEFAULT,MCBSP_RCERB_DEFAULT,MCBSP_RCERC_DEFAULT,MCBSP_RCERD_DEFAULT,MCBSP_RCERE_DEFAULT,MCBSP_RCERF_DEFAULT,MCBSP_RCERG_DEFAULT,MCBSP_RCERH_DEFAULT,MCBSP_XCERA_DEFAULT,MCBSP_XCERB_DEFAULT,MCBSP_XCERC_DEFAULT,MCBSP_XCERD_DEFAULT,MCBSP_XCERE_DEFAULT,MCBSP_XCERF_DEFAULT,MCBSP_XCERG_DEFAULT,MCBSP_XCERH_DEFAULT};00=0=01UnexpectedFrame-syncignore11-bitdatadelay=0=0=00Tranmitframe-synisprovidedby=0Receiveframe-synisprovidedbyThefallingedgeofBCLKstartsDMA_ConfigdmaRcvConfig={DMA_DMACSDP_RMK(DMA_DMACSDP_DSTBEN_NOBURST,DMA_DMACSDP_DSTPACK_OFF,DMA_DMACSDP_DST_DARAMPORT1,DMA_DMACSDP_SRCBEN_NOBURST,DMA_DMACSDP_SRCPACK_OFF,DMA_DMACSDP_SRC_PERIPH,DMA_DMACSDP_DATATYPE_16BIT),DMA_DMACCR_RMK(DMA_DMACCR_DSTAMODE_POSTINC,DMA_DMACCR_SRCAMODE_CONST,DMA_DMACCR_ENDPROG_OFF,DMA_DMACCR_WP_DEFAULT,DMA_DMACCR_REPEAT_OFF,DMA_DMACCR_AUTOINIT_ON,DMA_DMACCR_EN_STOP,DMA_DMACCR_PRIO_LOW,DMA_DMACCR_FS_DISABLE,DMA_DMACCR_SYNC_REVT1),DMA_DMACICR_RMK(DMA_DMACICR_AERRIE_ON,DMA_DMACICR_BLOCKIE_OFF,DMA_DMACICR_LASTIE_OFF,DMA_DMACICR_FRAMEIE_ON,DMA_DMACICR_FIRSTHALFIE_OFF,DMA_DMACICR_DROPIE_OFF,DMA_DMACICR_TIMEOUTIE_OFF),(DMA_AdrPtr)(MCBSP_ADDR(DRR11)),0,NULL,0,BUFFSIZE,1,0,0};DMA_ConfigdmaXmtConfig={DMA_DMACSDP_RMK(DMA_DMACSDP_DSTBEN_NOBURST,DMA_DMACSDP_DSTPACK_OFF,DMA_DMACSDP_DST_PERIPH,DMA_DMACSDP_SRCBEN_NOBURST,DMA_DMACSDP_SRCPACK_OFF,DMA_DMACSDP_SRC_DARAMPORT0,DMA_DMACSDP_DATATYPE_16BIT),DMA_DMACCR_RMK(DMA_DMACCR_DSTAMODE_CONST,/*DMACSDP*//*ENDPROGOFF*//*AUTOINITON*//*DMACCR*//*DMACICR*//*DMACSSAL*//*DMACSSAU*//*DMACDSAL,tobeloadedbysubmit*//*DMACDSAU*//*DMACEN*//*DMACFN*//*DMACFI*//*DMACEI*//*DMACSDP*/DMA_DMACCR_SRCAMODE_POSTINC,DMA_DMACCR_ENDPROG_ON,DMA_DMACCR_WP_DEFAULT,DMA_DMACCR_REPEAT_OFF,DMA_DMACCR_AUTOINIT_OFF,DMA_DMACCR_EN_STOP,DMA_DMACCR_PRIO_LOW,DMA_DMACCR_FS_DISABLE,DMA_DMACCR_SYNC_XEVT1),/*DMACCR*/DMA_DMACICR_RMK(DMA_DMACICR_AERRIE_ON,DMA_DMACICR_BLOCKIE_OFF,DMA_DMACICR_LASTIE_OFF,DMA_DMACICR_FRAMEIE_ON,DMA_DMACICR_FIRSTHALFIE_OFF,DMA_DMACICR_DROPIE_OFF,DMA_DMACICR_TIMEOUTIE_OFF),/*DMACICR*/NULL,/*DMACDSAL,tobeloadedbysubmit*/0,/*DMACSSAU*/(DMA_AdrPtr)(MCBSP_ADDR(DXR11)),/*DMACDSAL*/0,/*DMACDSAU*/BUFFSIZE,/*DMACEN*/1,/*DMACFN*/0,/*DMACFI*/0};/*DMACEI*/};/*DefineaDMA_HandleobjecttobeusedwithDMA_openfunction*/DMA_HandlehDmaRcv,hDmaXmt;/*DefineaMCBSP_HandleobjecttobeusedwithMCBSP_openfunction*/MCBSP_HandlehMcbsp;volatileUint16transferComplete=FALSE;Uint16err=0;Uint16old_intm;Uint16xmtEventId,rcvEventId;// Functionprototypes externvoidVECSTART(void);interruptvoiddmaXmtIsr(void);interruptvoiddmaRcvIsr(void);voidtaskFxn(void);/*copyData()-Copyonebufferwithlengthelementstoanother.*/voidcopyData(Int16*inbuf,Int16*outbuf,Int16length){Int16i=0;for(i=0;i<length;i++){outbuf[i]=inbuf[i];}}/* Threads */voidprocessBuffer(void){Uint32addr;Int16i=0;staticInt16pingPong=PING;while(DMA_FGETH(hDmaRcv,DMACCR,ENDPROG)){J}//Determinewhichping-pongstatewe'reinif(pingPong==PING){//Configurethereceivechannelforponginputdataaddr=((Uint32)gBufferRcvPong)<<1;DMA_RSETH(hDmaRcv,DMACDSAL,addr&0xffff);DMA_RSETH(hDmaRcv,DMACDSAU,(addr>>16)&0xffff);//SetnewstatetoPONGpingPong=PONG;}else{//Configurethereceivechannelforpinginputdataaddr=((Uint32)gBufferRcvPing)<<1;DMA_RSETH(hDmaRcv,DMACDSAL,addr&0xffff);DMA_RSETH(hDmaRcv,DMACDSAU,(addr>>16)&0xffff);//SetnewstatetoPINGpingPong=PING;}DMA_FSETH(hDmaRcv,DMACCR,ENDPROG,1);//DMA_FSETH(hDmaXmt,DMACCR,ENDPROG,1);if(pingPong==PONG){//Insertyourapplicationprogramhere//copyData(gBufferRcvPing,gBufferXmtPing,BUFFSIZE);for(i=0;i<128;i++){left[i]=gBufferRcvPing[2*i];right[i]=gBufferRcvPing[2*i+1];}dlms(left,h1,leftout,des,delaybuff,step,16,128);dlms(right,h2,rightout,des,delaybuff1,step,16,128);for(i=0;i<128;i++){gBufferXmtPing[2*i]=leftout[i];gBufferXmtPing[2*i+1]=right[i];}//Configurethetransmitchannelforpingoutputdataaddr=((Uint32)gBufferXmtPing)<<1;DMA_RSETH(hDmaXmt,DMACSSAL,addr&0xffff);DMA_RSETH(hDmaXmt,DMACSSAU,(addr>>16)&0xffff);}else{//Insertyourapplicationprogramhere//copyData(gBufferRcvPong,gBufferXmtPong,BUFFSIZE);for(i=0;i<128;i++){left[i]=gBufferRcvPong[2*i];right[i]=gBufferRcvPong[2*i+1];}dlms(left,h1,leftout,des,delaybuff,step,16,128);dlms(right,h2,rightout,des,delaybuff1,step,16,128);for(i=0;i<128;i++){gBufferXmtPong[2*i]=leftout[i];gBufferXmtPong[2*i+1]=right[i];}//Configurethetransmitchannelforpongoutputdataaddr=((Uint32)gBufferXmtPong)<<1;DMA_RSETH(hDmaXmt,DMACSSAL,addr&0xffff);DMA_RSETH(hDmaXmt,DMACSSAU,(addr>>16)&0xffff);}//StarttheDMA//DMA_start(hDmaRcv);//DMA_start(hDmaXmt);}// mainroutine voidmain(void){Uint16i;/*InitializeCSLlibrary-ThisisREQUIRED!!!*/CSL_init();//Themainfrequencyofsystemis240MHz//該頻率是為了設(shè)置IIC模塊的需要設(shè)置的,為了使用I2C_setup函數(shù)PLL_setFreq(l,0xC,0,1,3,3,0);//EMIF初始化Emif_Config();//OpenMcBSPport1andgetaMcBSPtypehandlehMcbsp=MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);//ConfigMcBSPport1byusepreviouslydefinedstructureMCBSP_config(hMcbsp,&Mcbsp1Config);//I2C初始化I2C_cofig();//CODEC寄存器初始化inti_AIC();/*SetIVPH/IVPDtostartofinterruptvectortable*/IRQ_setVecs((Uint32)(&VECSTART));for(i=0;i<=BUFFSIZE-1;i++){gBufferXmtPing[i]= 0;gBufferXmtPong[i]=0;}for(i=0;i<16;i++){h1[i]=0;h2[i]=0;}/*Callfunctiontoeffecttransfer*/taskFxn();}voidtaskFxn(void){Uint16srcAddrHi,srcAddrLo;Uint16dstAddrHi,dstAddrLo;/*Bydefault,theTMS320C55xxcompilerassignsalldatasymbolsword*//*addresses.TheDMAhowever,expectsalladdressestobebyte*//*addresses.Therefore,wemustshifttheaddressby2inorderto*//*changethewordaddresstoabyteaddressfortheDMAtransfer.*/srcAddrHi=(Uint16)(((Uint32)(MCBSP_ADDR(DRR11)))>>15)&0xFFFFu;srcAddrLo=(Uint16)(((Uint32)(MCBSP_ADDR(DRR11)))<<1)&0xFFFFu;dstAddrHi=(Uint16)(((Uint32)(&gBufferRcvPing))>>15)&0xFFFFu;dstAddrLo=(Uint16)(((Uint32)(&gBufferRcvPing))<<1)&0xFFFFu;dmaRcvConfig.dmacssal=(DMA_AdrPtr)srcAddrLo;dmaRcvConfig.dmacssau=srcAddrHi;dmaRcvConfig.dmacdsal=(DMA_AdrPtr)dstAddrLo;dmaRcvConfig.dmacdsau=dstAddrHi;srcAddrHi=(Uint16)(((Uint32)(&gBufferXmtPing))>>15)&0xFFFFu;srcAddrLo=(Uint16)(((Uint32)(&gBufferXmtPing))<<1)&0xFFFFu;dstAddrHi=(Uint16)(((Uint32)(MCBSP_ADDR(DXR11)))>>15)&0xFFFFu;dstAddrLo=(Uint16)(((Uint32)(MCBSP_ADDR(DXR11)))<<1)&0xFFFFu;dmaXmtConf
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省無錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測試地理試題(解析版)
- 江蘇省南京、鎮(zhèn)江七校2023-2024學(xué)年高三上學(xué)期12月學(xué)情檢測調(diào)研地理試題(解析版)
- 湖南省張家界市2022-2023學(xué)年高二上學(xué)期期末考試地理試題(解析版)
- 2025至2030年中國無繩來電顯示電話機數(shù)據(jù)監(jiān)測研究報告
- 2025年幼兒園小班標(biāo)準(zhǔn)教案《誰的腳印》
- 企業(yè)員工日常管理制度范文22篇
- 2025年幼兒園小班標(biāo)準(zhǔn)教案《快樂輪胎》含反思
- 輸電線路遷改環(huán)境影響評估
- Module 2 My hometown Unit 3(教學(xué)設(shè)計)-2024-2025學(xué)年外研版英語八年級上冊
- 高端裝備數(shù)字化項目投資回報分析
- 工程異常處理管理規(guī)定
- 2024軌道交通絕緣配合第1部分:基本要求電工電子設(shè)備的電氣間隙和爬電距離
- 《田間試驗統(tǒng)計》課件-項目二 田間試驗設(shè)計與實施
- 一年級下冊《讀讀童謠和兒歌》試題及答案共10套
- CHZ 3002-2010 無人機航攝系統(tǒng)技術(shù)要求(正式版)
- 免拆底模鋼筋桁架樓承板圖集
- 尋夢環(huán)游記(Coco)中英文臺詞對照
- 重點關(guān)愛學(xué)生幫扶活動記錄表
- 改革后-topik考試作文紙
- 父母委托子女保管存款協(xié)議書
- 產(chǎn)品設(shè)計與開發(fā)的系統(tǒng)工程方法
評論
0/150
提交評論