基于TI C6713 DSP的語音信號(hào)濾波去噪課程設(shè)計(jì)報(bào)告正文_第1頁
基于TI C6713 DSP的語音信號(hào)濾波去噪課程設(shè)計(jì)報(bào)告正文_第2頁
基于TI C6713 DSP的語音信號(hào)濾波去噪課程設(shè)計(jì)報(bào)告正文_第3頁
基于TI C6713 DSP的語音信號(hào)濾波去噪課程設(shè)計(jì)報(bào)告正文_第4頁
基于TI C6713 DSP的語音信號(hào)濾波去噪課程設(shè)計(jì)報(bào)告正文_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 艾書鵬 基于TI C6713 DSP的語音信號(hào)濾波去噪-使用nuttallwin法設(shè)計(jì)的FIR濾波器 第頁 共31 基于TI C6713 DSP的語音信號(hào)濾波去噪使用NUTTALLWIN設(shè)計(jì)的FIR濾波器 學(xué)生姓名:艾書鵬 指導(dǎo)老師:高明 摘 要 本課程設(shè)計(jì)主要內(nèi)容是用CCS集成開發(fā)環(huán)境實(shí)行基于TI C6713 DSP的語音信號(hào)濾波去噪的軟仿真以及硬件實(shí)現(xiàn)。首先安裝CCS3.1并且學(xué)會(huì)CCS3.1的使用,然后在CCS3.1中設(shè)計(jì)一個(gè)FIR濾波器,加入一單頻噪聲,比較濾波前后的波形。然后根據(jù)E300實(shí)驗(yàn)箱設(shè)計(jì)處理方案,并運(yùn)行。 關(guān)鍵詞 CCS;FIR濾波器;TI C6713 DSP; 1 引

2、言本課程設(shè)計(jì)主要是在TI C6713 DSP上含噪情況下對(duì)語音信號(hào)的濾波去噪處理,處理時(shí)采用的是利用nuttallwin設(shè)計(jì)的FIR濾波器。數(shù)字信號(hào)處理器(DSP)作為一種可編程專用芯片,是數(shù)字信號(hào)處理理論實(shí)用化過程的重要技術(shù)工具,在語音處理、圖像處理等技術(shù)領(lǐng)域得到了廣泛的應(yīng)用。由Ti公司提供專業(yè)的開發(fā)工具CCS,自帶DSP/BIOS操作系統(tǒng),能夠直接編寫適合DSP開發(fā)工程及文件,滿足DSP程序設(shè)計(jì)要求。1.1 課程設(shè)計(jì)目的數(shù)字信號(hào)處理是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。在過去的二十多年里,數(shù)字信號(hào)處理得到了廣泛的應(yīng)用。在本次的課程設(shè)計(jì)學(xué)習(xí)中,我的題目是基于TI C6713 D

3、SP的語音信號(hào)濾波去噪NUTTALLWIN設(shè)計(jì)FIR濾波器。我要經(jīng)過這次課程設(shè)計(jì),全面了解CCS的使用方法,以及獨(dú)自動(dòng)手完成頻率采樣法設(shè)計(jì)FIR濾波器。培養(yǎng)專業(yè)知識(shí)的興趣與愛好以及動(dòng)手能力。1.2課程設(shè)計(jì)的要求(1)算法結(jié)果和分析結(jié)論應(yīng)該一致,而且應(yīng)符合理論。(2)處理結(jié)果和分析結(jié)論應(yīng)該一致,而且應(yīng)符合理論。(3)獨(dú)立完成課程設(shè)計(jì)并按要求編寫課程設(shè)計(jì)報(bào)告書。1.3設(shè)計(jì)平臺(tái)CCS是TI公司推出的用于開發(fā)DSP芯片的集成開發(fā)環(huán)境,它采用Windows風(fēng)格界面,集編輯、編譯、鏈接、軟件仿真、硬件調(diào)試以及實(shí)時(shí)跟蹤等功能于一體,極大地方便了DSP芯片的開發(fā)與設(shè)計(jì),是目前使用最為廣泛的DSP開發(fā)軟件之一。

4、CCS是一種針對(duì)TMS320系列DSP的集成開發(fā)環(huán)境,在Windows操作系統(tǒng)下,采用圖形接口界面,提供環(huán)境配置、源文件編輯、程序調(diào)試、跟蹤和分析等工具。 CCS有兩種工作模式: 1、軟件仿真器模式:可以脫離DSP芯片,在PC機(jī)上模擬DSP的指令集和工作機(jī)制,主要用于前期算法實(shí)現(xiàn)和調(diào)試。2、硬件在線編程模式:可以實(shí)時(shí)運(yùn)行在DSP芯片上,與硬件開發(fā)板相結(jié)合在線編程和調(diào)試應(yīng)用程序。2 設(shè)計(jì)原理2.1 FIR濾波器FIR(Finite Impulse Response)濾波器:有限長(zhǎng)單位沖激響應(yīng)濾波器,是數(shù)字信號(hào)處理系統(tǒng)中最基本的元件,它可以在保證任意幅頻特性的同時(shí)具有嚴(yán)格的線性相頻特性,同時(shí)其單位

5、抽樣響應(yīng)是有限長(zhǎng)的,因而濾波器是穩(wěn)定的系統(tǒng)。因此,F(xiàn)IR濾波器在通信、圖像處理、模式識(shí)別等領(lǐng)域都有著廣泛的應(yīng)用。有限長(zhǎng)單位沖激響應(yīng)(FIR)濾波器有以下特點(diǎn): (1) 系統(tǒng)的單位沖激響應(yīng)h (n)在有限個(gè)n值處不為零; (2) 系統(tǒng)函數(shù)H(z)在|z|>0處收斂,極點(diǎn)全部在z = 0處(因果系統(tǒng)); (3) 結(jié)構(gòu)上主要是非遞歸結(jié)構(gòu),沒有輸出到輸入的反饋,但有些結(jié)構(gòu)中(例如頻率抽樣結(jié)構(gòu))也包含有反饋的遞歸部分。 設(shè)FIR濾波器的單位沖激響應(yīng)h (n)為一個(gè)N點(diǎn)序列,0 n N 1,則濾波器的系統(tǒng)函數(shù)為 :H(z)=h(n)*z-n就是說,它有(N1)階極點(diǎn)在z = 0處,有(N1)個(gè)零點(diǎn)位

6、于有限z平面的任何位置。FIR濾波器的基本結(jié)構(gòu)有:橫截型(卷積型、直接型)、級(jí)聯(lián)型、頻率抽樣型、快速卷積結(jié)構(gòu)。FIR濾波器的基本設(shè)計(jì)方法有:窗口設(shè)計(jì)法、頻率采樣設(shè)計(jì)法、最優(yōu)等波紋設(shè)計(jì)法。2.2 nuttallwin窗函數(shù)設(shè)計(jì)法的基本思想是用FIRDF逼近洗完的濾波特性。設(shè)希望逼近的濾波器的頻率響應(yīng)函數(shù)為,其單位脈沖響應(yīng)為表示。為了設(shè)計(jì)簡(jiǎn)單方便,通常選擇為具有片段常數(shù)特性的理想濾波器。因此是無限長(zhǎng)非因果序列,不能直接作為FIRDF的單位脈沖響應(yīng)。窗函數(shù)設(shè)計(jì)法就是截取為有限長(zhǎng)的一段因果序列,并用合適的窗函數(shù)進(jìn)行加權(quán)作為FIRDF的單位脈沖響應(yīng)h(n)。用窗函數(shù)法設(shè)計(jì)FIRDF的具體設(shè)計(jì)步驟如下:(

7、1)構(gòu)造希望逼近的頻率響應(yīng)函數(shù)。(2)求出。(3)加窗得到FIRDF的單位脈沖響應(yīng)h(n)。h(n)=w(n)。式中,w(n)稱為窗函數(shù),其長(zhǎng)度為。如果要求設(shè)計(jì)第一類線性相位FIRDF,則要求h(n)關(guān)于(N-1)/2點(diǎn)偶對(duì)稱。而關(guān)于n=t點(diǎn)偶對(duì)稱,所以要求t=(N-1)/2。同時(shí)要求w(n)關(guān)于(N-1)/2點(diǎn)偶對(duì)稱。用窗函數(shù)法設(shè)計(jì)第一類線性相位FIRDF的步驟:(1)選擇窗函數(shù)類型和長(zhǎng)度,寫出才窗函數(shù)的表達(dá)式。根據(jù)阻帶最小衰減選擇窗函數(shù)的的類型,再根據(jù)過渡帶寬度確定所選窗函數(shù)的長(zhǎng)度。用窗函數(shù)法設(shè)計(jì)的FIRDF通帶波紋幅度近似等于阻帶波紋幅度。一般阻帶最小衰減達(dá)到40dB以上,則通帶最大衰減

8、就小于0.1dB。所以用窗函數(shù)法設(shè)計(jì)FIRDF時(shí),通常只考慮阻帶最小衰減就可以了。(2)構(gòu)造希望逼近的頻率響應(yīng)函數(shù)。根據(jù)設(shè)計(jì)需要,一般選擇線性相位理想濾波器(理想低通、理想高通、理想帶通、理想帶阻)。理想濾波器的截止頻率近似為最終設(shè)計(jì)的FIRDF的過渡帶中心頻率,幅度函數(shù)衰減一半(約-6dB)。所以一般取,和分別為通帶邊界頻率和阻帶邊界頻率。(3)計(jì)算。(4)加窗得到設(shè)計(jì)結(jié)果:h(n)=w(n)。 3設(shè)計(jì)步驟3.1 設(shè)計(jì)流程圖語音信號(hào)濾波去噪使用頻率采樣法設(shè)計(jì)的FIR濾波器的設(shè)計(jì)流程圖如圖3.1所示: 開始安裝配置CCS3.1,確定濾波器指標(biāo),設(shè)計(jì)仿真方案編寫程序,在CCS3.1上進(jìn)行濾波算法

9、的軟仿真驅(qū)動(dòng)片上外部設(shè)備,及AIC23芯片實(shí)現(xiàn)CCS3.1與TI C6713 DSP的硬件在線運(yùn)行解釋代碼,并且畫出基本原理圖。圖3.1 設(shè)計(jì)流程3.2 CCS3.1的安裝采用標(biāo)準(zhǔn)配置文件進(jìn)行系統(tǒng)配置的步驟:步驟1:?jiǎn)?dòng)CCS配置程序。雙擊桌面上的Setup CCS快捷圖標(biāo),彈出對(duì)話框??晒┦褂玫呐渲孟到y(tǒng)配置欄目加入配置按鈕清除配置按鈕圖3.2 安裝過程圖步驟2:清除以前定義的配置。步驟3:選擇與目標(biāo)系統(tǒng)相匹配的配置文件。步驟4:將所選中的配置文件加入到系統(tǒng)配置中。步驟5:安裝驅(qū)動(dòng)程序。點(diǎn)擊“Intall a Device Driver”,彈出選擇器件驅(qū)動(dòng)程序?qū)υ捒?。系統(tǒng)配置窗口安裝驅(qū)動(dòng)程序圖

10、3.3 安裝過程圖步驟6:保存系統(tǒng)配置。打開“File”菜單,單擊“Save”按鈕,將系統(tǒng)配置保存在系統(tǒng)寄存器中,完成CCS的系統(tǒng)配置。3.3 濾波器設(shè)計(jì)設(shè)備參數(shù),8KHZ采樣率,噪聲頻率2.1k濾波器指標(biāo):設(shè)通帶截止頻率fcd為1800Hz,阻帶截止頻率fcu為2330Hz,As=40,Rp=1。MATLAB仿真圖 基于C的濾波實(shí)現(xiàn)過程 先開辟一個(gè)輸入緩沖區(qū),一個(gè)輸出緩沖區(qū),長(zhǎng)度為512,然后開辟一個(gè)長(zhǎng)度與h的長(zhǎng)度一樣的緩沖區(qū),利用y=x*h完成濾波進(jìn)行運(yùn)算。 濾波過程代碼如下#include <stdio.h>#include <c6x.h> #include &q

11、uot;math.h" #define pi 3.1415927#define Length 512/=double npass,h51, xmid51;int x, y;int inLength, outLength;int m=50;int n=256;double fs,fstop,r,rm;int i,j,p,k=0;int x_in;/ 左右音道的音頻樣本unsigned int xL, xR;/=void main()unsigned int dat;int t; fs = 32000; fstop = 1000; npass = fstop/fs; for (i=0;

12、i<=m; i+) xmidi=0; for (t=0; t<=m; t+) / 加噪語句 ht = sin(t-m/2.0)*npass*pi)/(pi*(t-m/2.0); if (t=m/2) ht=npass;/ 無限循環(huán),用于不間斷處理信號(hào) while(1) /x_in = (short) (dat & 0xffff);/x = (float) x_in;ink = x;/當(dāng)前采樣點(diǎn)放入 位置0,歷史樣本移位for (p=0; p<=m; p+) xmidm-p = xmidm-p-1; xmid0 = x;/卷積運(yùn)算r = 0;rm= 0; for (j=

13、0; j<=m; j+) r = xmidj * hj;rm = rm + r; /循環(huán)放入輸緩沖區(qū),最近輸出樣本覆蓋最早輸出樣本y = rm;outk = (int)y; xL = (int)(y);k+;k = k%Length;if (k = 0) k = 0; 1. 創(chuàng)建新工程利用CCS創(chuàng)建一個(gè)新工程,然后向該工程中添加源代碼文件和庫文件。1) CCS的安裝目錄為C:CCS3.1,首先在文件夾D:EX下建立一個(gè)新的文件夾,命名為ex1。2) 啟動(dòng)CCS。如果需要的話,對(duì)CCS進(jìn)行配置,使其工作在C6713x simulator模式下。3) 從CCS的Project菜單下選擇子菜單

14、New。將出現(xiàn)Project Creation對(duì)話框。在對(duì)話框中“Project Name”處輸入EX1,“Location”處用瀏覽方式選入在第一步中所建立的文件夾EX1的位置,在“Project Type”處選擇Executable(.out)類型,在“Target”中選擇CCS所配置的目標(biāo)DSP類型。最后單擊“Finish”完成。4) 通過上述步驟Code Composer Studio就建立了一個(gè)工程文件,名為volume1.pjt,該工程文件用于存儲(chǔ)工程配置以及在工程中所用到的若干文件??稍凇肮こ添?xiàng)目觀察窗口(Project view)”處看到。2. 向工程中添加文件一個(gè)工程項(xiàng)目包括

15、源程序、庫文件、鏈接命令文件和頭文件等。1) 在CCS中選擇菜單Project® Add Files to Project,然后選文件maintest.c,并單擊Open。(也可在工程圖標(biāo)處單擊鼠標(biāo)右鍵在快捷菜單中選Add Files to Project,或?qū)⑽募先牍こ桃晥D窗口的文件夾中。)Maintest.c為FIR過濾主程序,在程序中已經(jīng)設(shè)計(jì)了加噪(加噪處有表示,如注釋掉就是沒有加噪的)。2) 在CCS中選擇菜單Project® Add Files to Project,并在文件類型選框中選匯編源文件(*.a*, *.s*),然后選vectors.asm 和 loa

16、d.asm 這兩個(gè)文件并單擊Open。這些文件中包含了設(shè)置復(fù)位RESET中斷到程序的C入口c_int00的一些匯編指令。(對(duì)于更加復(fù)雜的程序,可在vectors.asm 文件中定義更多的中斷向量。也可利用DSP/BIOS來自動(dòng)定義所有的中斷向量。)3) 在CCS中選擇菜單Project® Add Files to Project,并在文件類型選框中選擇鏈接命令文件(*.cmd),然后選ex.cmd并單擊Open,該命令文件將匯編程序的段映射到DSP的存儲(chǔ)空間中。4) 在CCS中選擇菜單Project® Add Files to Project,進(jìn)入編譯庫文件夾(c:tic6

17、700cgtoolslib),在文件類型選框中選擇目標(biāo)文件類型和庫文件類型(*.o*, *.lib),為所配置的目標(biāo)DSP選rts.lib文件并單擊Open。該庫文件為目標(biāo)DSP提供了運(yùn)行時(shí)間(runtime)支持。(對(duì)于一些目標(biāo)DSP,運(yùn)行時(shí)間庫可以是一個(gè)更特殊的文件名,如rts_ext.lib 。)5) 在工程視圖窗口,用鼠標(biāo)右鍵單擊工程文件ex.pjt 并在快捷菜單中選擇 Scan All Dependencies。這時(shí)volume.h應(yīng)出現(xiàn)于工程視圖窗口中的庫(Libraries)文件夾中。6) 單擊Project左邊的小加號(hào),將展開工程列表:ex1.pjt,Libraries,以及

18、Source。該列表即為工程視圖。無需手工向工程中加入include文件,因?yàn)镃CS將會(huì)在編譯過程中自動(dòng)找到這些文件。編譯之后在工程視圖中將出現(xiàn)這些include文件.。如果要從工程中移出一個(gè)文件,只要在相應(yīng)文件處單擊鼠標(biāo)右鍵在彈出的快捷菜單中選Remove from project 即可。編譯時(shí)CCS在以下路徑依次查找工程文件:包含有源文件的文件夾;在compiler 或 assembler 選項(xiàng)中從左到右依次列出的文件夾。3. 察看源代碼在工程視圖中volume.c上雙擊,就可在CCS右邊窗口中察看源代碼。請(qǐng)注意該程序中的以下部分: 在進(jìn)入main函數(shù)后打印出一條消息,并進(jìn)入死循環(huán)。循環(huán)體

19、中程序調(diào)用了dataIO以及其他一些過程函數(shù)。 在過程函數(shù)中,將輸入緩沖區(qū)(input buffer)中的每一個(gè)數(shù)值乘以增益(gain),并將結(jié)果放入輸出緩沖區(qū)(output buffer)。程序也將調(diào)用匯編載入例程,該例程按照傳遞給它的processingLoad取值來消耗指令周期。 本例中dataIO函數(shù)除了返回之外不做其他任何動(dòng)作。我們?cè)谶@里不使用C代碼來完成I/O,而是利用CCS中的一個(gè)探針Probe Point 來從主機(jī)的文件中讀入數(shù)據(jù)并放入inp_buffer區(qū)域。4. 編譯并運(yùn)行程序編譯并運(yùn)行程序的步驟:1) 選Project®Rebuild All 或單擊工具按鈕 (

20、Rebuild All)。CCS重新編譯,并鏈接工程中的全部文件。編譯過程信息顯示在CCS下部的窗口中。2) 在默認(rèn)情況下,將當(dāng)前工程目錄下的debug子目錄中生成.out文件。通過CCS工具條可改變生成文件的存放位置。3) 選File®Load Program,并在對(duì)話框中選剛剛編譯生成的文件ex1.out,單擊Open打開。(默認(rèn)在目錄c:timyprojectsvolume1Debug 文件夾下)這樣CCS就將程序載入目標(biāo)DSP,并打開一個(gè)反匯編窗口,顯示出相應(yīng)的反匯編指令。CCS也將在窗口底部自動(dòng)打開一個(gè)標(biāo)簽區(qū)域來顯示程序送往stdout的輸出。4) 選View®M

21、ixed Source/ASM,將同時(shí)看到c源代碼和匯編結(jié)果代碼。5) 在混合模式窗口中單擊一條匯編偽指令本身,并按F1鍵,CCS將搜索該條指令的幫助。6) 選Debug®Go Main開始從main 函數(shù)處執(zhí)行程序。程序暫停在main處,并用黃色的箭頭標(biāo)識(shí)。7) 選Debug®Run或單擊工具按鈕 (Run)來運(yùn)行程序。8) 選Debug®Halt來暫停程序執(zhí)行。9) 從菜單View中選Mixed Source/ASM。將看到不帶相應(yīng)匯編的c代碼。從而可以方便地進(jìn)行下一個(gè)任務(wù):修改程序選項(xiàng),修正語法錯(cuò)誤。經(jīng)過上面步驟得到的加噪信號(hào)圖以及頻譜圖和過濾后的信號(hào)圖以及

22、頻譜圖分別如圖3.4,圖3.5,圖3.6和圖3.7所示: 圖3.4 加噪信號(hào)圖 圖3.5 加噪信號(hào)頻譜圖 圖3.6加噪信號(hào)過濾信號(hào)圖 圖3.7加噪信號(hào)過濾信號(hào)頻譜圖3.4 驅(qū)動(dòng)部分PLL模塊設(shè)置:PLL_bypass();/wait(200);PLL_reset();/wait(200);PLL_setPllRatio(PLL_DIV0,0x00); /* DIVD0 */PLL_enablePllDiv(PLL_DIV0); PLL_setMultiplier(2); / 乘上一個(gè)倍數(shù)PLL_setOscRatio(0x4);PLL_enableOscDiv();wait(200);PLL_

23、setPllRatio(PLL_DIV1,0x02); /* DSP核心分頻器*/PLL_enablePllDiv(PLL_DIV1);wait(200);PLL_setPllRatio(PLL_DIV2,0x05); / 外部設(shè)備分頻器PLL_enablePllDiv(PLL_DIV2);wait(200);PLL_setPllRatio(PLL_DIV3,0x04); /sysclk3分頻器PLL_enablePllDiv(PLL_DIV3);/wait(200);wait(200);PLL_deassert();/wait(200);wait(200);PLL_enable();/wai

24、t(200);wait(200);return;代碼注釋:首先旁通PLL模塊以進(jìn)行設(shè)置,然后進(jìn)行一個(gè)延時(shí)等待,這樣讓PPL模塊接受到命令后再重置RLL模塊。再激活分頻器D0,輸入時(shí)鐘源就是被D0進(jìn)行分頻,其除數(shù)取值來源于D0EN。然后再2倍頻。然后信號(hào)傳到分頻器D1,D2,D3。激活他們,且他們的除數(shù)分別來源于D1EN,D2EN,D3EN(。其中D1輸出信號(hào)SYSCLK1是DSP核心時(shí)鐘信號(hào)的,SYSCLK2是外圍設(shè)備的時(shí)鐘信號(hào)的,SYSCLK3是EMIF時(shí)鐘。EMIF模塊設(shè)置由EMIF的圖可知EMIF模塊有七個(gè)寄存器 ,詳細(xì)配置如下(1)GBLCTL寄存器配置 *(unsigned vola

25、tile int *)EMIF_GCR = 0x3778; /EMIF global control 根據(jù)寄存器32位的分布情況,第一個(gè)語句表示的是EMIF_GCR寄存器是EMIF的全局控制,地址置為十六進(jìn)制的3778,轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制是0011011101111000,第1231位保留。Map=0,外部存儲(chǔ)器地址為0。RBTR8=0,請(qǐng)求者控制EMIF,直到出現(xiàn)一個(gè)高優(yōu)先級(jí)的要求。SSCRT=0,SSCLK在CPU時(shí)鐘頻率的1/2下運(yùn)行。CLK2EN=1,CLKOUT2啟用時(shí)鐘。CLK1EN=1,CLKOUT1啟用始終。SSCEN=1,SSCLK啟用時(shí)鐘。SDCEN=1,SDCLK啟用時(shí)鐘

26、。NOHOLD=0,NOHOLD被禁用,在盡早的時(shí)間內(nèi)保持請(qǐng)求通過HOLD輸入承認(rèn)HOLDA輸出。HOLDA=1,HOLDA輸出為高電平,外部設(shè)備沒有自己的EMIF。HOLD=1,HOLD輸出是高電平,沒有外部請(qǐng)求掛起。ARDY=1,ARDY輸入是高電平,外部設(shè)備已準(zhǔn)備就緒。Reserved=0,保留位的位置總是讀為0,任意值寫入到這個(gè)領(lǐng)域沒有任何效果。(2) CECTL1寄存器配置 *(unsigned volatile int *)EMIF_CE1 = 0xffffff03;對(duì)CE1輸入0xffffff03,對(duì)應(yīng)的二進(jìn)制為11111111111111111111111100000011。所

27、以RDHLD=11,讀取舉行帶寬,時(shí)鐘周期數(shù)地址和字節(jié)選通讀選通脈沖上升后舉行。Reserved=00,保留位的位置總是讀為0,任意值寫入到這個(gè)領(lǐng)域沒有任何效果。MTYPE=000,對(duì)應(yīng)的CE空間的內(nèi)存類型,為8位寬的異步接口。RDSTRB=111111,讀取選通脈沖寬度,讀選通脈沖的寬度是時(shí)鐘周期。RDSETUP=1111,讀取設(shè)置寬度,設(shè)置時(shí)間的時(shí)鐘周期數(shù)的地址,芯片使能和字節(jié)使前讀選通瀑布。對(duì)于異步讀訪問,這也是AOE之前下降了安裝時(shí)間。WRHLD=11,寫入保持帶寬。WRSTRB=111111,寫選通脈沖寬度,在時(shí)鐘周期的寫選通脈沖的寬度。WRSETUP=1111,寫入設(shè)置帶寬。(3)

28、 SDCTL寄存器配置 *(unsigned volatile int *)EMIF_SDCTRL = 0x57115000; /* EMIF SDRAM control */ 對(duì)SDCTL輸入0x57115000,對(duì)應(yīng)的二進(jìn)制為1010111000100010101000000000000。Reserved=000000000000,保留位的位置總是讀為0,任意值寫入到這個(gè)領(lǐng)域沒有任何效果。TRC=0101,在EMIF時(shí)鐘周期里指定SDRAM中TRC的值。TRP=0001,在EMIF時(shí)鐘周期里指定SDRAM中TRC的值。TRCD=0001,在EMIF時(shí)鐘周期里指定SDRAM中TRCD的值。I

29、NIT=1,在每個(gè)CE空間配置為SDRAM初始化SDRAM,CPU應(yīng)該在設(shè)置INIT =1之前初始化所有的CE空間控制寄存器。RFEN=1,SDRAM刷新啟用。SDWID=1,使用8位地址引腳。(4) SECTL0寄存器配置*(unsigned volatile int *)EMIF_CE0 = 0x30; /* EMIF CE0 control */輸入到CE0的值為0x30對(duì)應(yīng)的二進(jìn)制為00110000。RDHLD=00,讀取舉行帶寬,時(shí)鐘周期數(shù)地址和字節(jié)選通讀選通脈沖上升后舉行。Reserved=00,保留位的位置總是讀為0,任意值寫入到這個(gè)領(lǐng)域沒有任何效果。MTYPE=011,對(duì)應(yīng)的C

30、E空間的內(nèi)存類型,為32位SDRAM。(5) SECTL2寄存器配置*(unsigned volatile int *)EMIF_CE2 = 0x30; /* EMIF CE2 control */ 輸入到CE2的值為0x30對(duì)應(yīng)的二進(jìn)制為00110000。RDHLD=00,讀取舉行帶寬,時(shí)鐘周期數(shù)地址和字節(jié)選通讀選通脈沖上升后舉行。Reserved=00,保留位的位置總是讀為0,任意值寫入到這個(gè)領(lǐng)域沒有任何效果。MTYPE=011,對(duì)應(yīng)的CE空間的內(nèi)存類型,為32位SDRAM。(6) SDTIM寄存器配置 *(unsigned volatile int *)EMIF_SDRP = 0x578

31、; /* EMIF SDRM refresh period */ 輸入到SDRP里面的數(shù)值為0x578d對(duì)應(yīng)的二進(jìn)制為010101111000,則PERIOD=010101111000,EMID時(shí)鐘周期的刷新周期。CNTR=000000000000,刷新計(jì)數(shù)器的當(dāng)前值。Reserved=00000000,保留位的位置總是讀為0,任意值寫入到這個(gè)領(lǐng)域沒有任何效果。 *(unsigned volatile int *)EMIF_SDEXT = 0x54529; /* EMIF SDRM extension */ EMIF_SDEXT = 0x54529; 是SDRAM的擴(kuò)展。AIC23配置說明在S

32、PI模式下,SDIN承載串行數(shù)據(jù),SCLK為串行時(shí)鐘,CS將數(shù)據(jù)字鎖到TLV320AIC23。該接口是與帶有SPI接口的DSP和微型控制器兼容的。控制字由16字節(jié)組成,先從MSB開始傳輸。SCLK的上升沿鎖存數(shù)據(jù)位。在CS 16個(gè)時(shí)鐘后產(chǎn)生上升沿,鎖存控制字到AIC??刂谱直环殖蓛蓚€(gè)部分:第一部分是地址域,第二部分是在數(shù)據(jù)域。/AIC23_CLK控制MSK的第三位,當(dāng)參數(shù)flag為0時(shí),將cpld_ctrl_back的第三位置0,否則置為1void AIC23_CLK(unsigned int flag)if(flag = 0) cpld_ctrl_back &= B3_MSK;els

33、e cpld_ctrl_back |= B3_MSK; E300_CPLD_CTRL = cpld_ctrl_back;/AIC23_CS控制MSK的第四位,當(dāng)參數(shù)flag為0時(shí),將cpld_ctrl_back的第四位置0,否則置為1void AIC23_CS(unsigned int flag)if(flag = 0) cpld_ctrl_back &= B4_MSK;else cpld_ctrl_back |= B4_MSK;E300_CPLD_CTRL = cpld_ctrl_back;/AIC23_DIN控制MSK的第二位,當(dāng)參數(shù)flag為0時(shí),將cpld_ctrl_back的

34、第二位置0,否則置為1void AIC23_DIN(unsigned int flag)if(flag = 0) cpld_ctrl_back &= B2_MSK;else cpld_ctrl_back |= B2_MSK;E300_CPLD_CTRL = cpld_ctrl_back;void send_aic23_ctrl_reg(unsigned int reg_dat)/unsigned int ii,jj;unsigned int flag=0x8000;/AIC23_CS(0);AIC23_CLK(0); AIC23_CS(0);for(flag=0x8000;flag!=

35、0;flag>>=1) /16進(jìn)制一位一位取數(shù)AIC23_DIN(reg_dat & flag);delay20nop();AIC23_CLK(1); /上升沿時(shí)工作delay20nop();AIC23_CLK(0); /上升沿時(shí)工作/delay20nop();/AIC23_CLK(0);delay20nop();AIC23_CS(1);AIC23_CLK(1);void initial_aic23(void)reset_aic23(); /send_aic23_ctrl_reg(0x0117); /REG0 左線輸入通道卷控制 send_aic23_ctrl_reg(0x

36、0110); /REG0 左線輸入通道卷控制 asm(" nop "); /Address (bits 15-9) 0000000 /LRS (bits 8) 1 左/右線同步卷/靜音更新使能/LIM (bits 7) 0 左線輸入靜音0=正常/XX (bits 6-5) 00 保存/LIV4:0 (bits 4-0) 10111 左線輸入卷控制 (10111 = 0 dB default)/-0000 0001 0001 0111 /send_aic23_ctrl_reg(0x0317); /REG1 右線輸入通道卷控制 send_aic23_ctrl_reg(0x031

37、0); /REG1 右線輸入通道卷控制 asm(" nop "); /Address (bits 15-9) 0000001 /地址15-9位設(shè)置/RRS (bits 8) 1 左右線同步卷/靜音更新使能/RIM (bits 7) 0 左線輸入靜音0=正常/XX (bits 6-5) 00 保存/RIV4:0 (bits 4-0) 10111 左線輸入卷控制 (10111 = 0 dB default)/-0000 0011 0001 0111 /send_aic23_ctrl_reg(0x05b0); /REG2 左通道聽筒卷控制 send_aic23_ctrl_reg(

38、0x0470); asm(" nop "); /Address (bits 15-9) 0000010/15-9位地址設(shè)置/LRS (bits 8) 1 左右聽筒通道同步卷 靜音更新1=開啟/LZC (bits 7) 1 左通道 過零檢測(cè)0=OFF/LHV6:0 (bits 6-0) 1111001 左聽筒卷控制 (1111001 = 0 dB default)/-0000 0101 1111 1001 /send_aic23_ctrl_reg(0x07b0); /REG3 右通道聽筒卷控制 send_aic23_ctrl_reg(0x0670); /REG3 右通道聽筒卷

39、控制 asm(" nop "); /Address (bits 15-9) 0000011/RLS (bits 8) 1 左右聽筒通道同步卷 靜音更新1=開啟/RZC (bits 7) 1 左通道 過零檢測(cè)0=OFF/RHV6:0 (bits 6-0) 1111001 左聽筒卷控制 (1111001 = 0 dB default)/-0000 0111 1111 1001send_aic23_ctrl_reg(0x0A01); /REG5 數(shù)字音頻通道控制 /send_aic23_ctrl_reg(0x0A05); /REG5 數(shù)字音頻通道控制 asm(" nop

40、 "); /Address (bits 15-9) 0000101/X (bits 8-4) 00000 保存/DACM (bits 3) 0 DAC軟靜音0=關(guān)閉/DEEMP1:0 (bits 2-1) 00 de-emphasis 控制00=關(guān)閉/ADCHP (bits 0) 1 高通濾波器=開啟/- 0000 1010 0000 0001 send_aic23_ctrl_reg(0x0C00); /REG6 電源關(guān)閉控制 /send_aic23_ctrl_reg(0x0C01); /REG6 電源關(guān)閉控制 asm(" nop "); /Address (bi

41、ts 15-9) 0000110/X (bits 8) 0 保存/OFF (bits 7) 0 設(shè)備電源0=開啟/CLK (bits 6) 0 時(shí)鐘0=開啟/OSC (bits 5) 0 振蕩器0=開啟/OUT (bits 4) 0 輸出0=開啟/DAC (bits 3) 0 dac0=開啟/ADC (bits 2) 0 ADC0=開啟/MIC (bits 1) 0 麥克風(fēng) 輸入0=開啟/LINE (bits 0) 0 線路輸入/- 0000 1100 0000 0000 send_aic23_ctrl_reg(0x0E73); /REG7 數(shù)字音頻接口格式 asm(" nop &q

42、uot;); /Address (bits 15-9) 0000111/X (bits 8-7) 00 保存/MS (bits 6) 1 M/S模式1=M/LRSWAP (bits 5) 1 DAC 左右交換1=開啟/LRP (bits 4) 1 DAC 左右相位1=右通道開啟,LRCIN 低 DSP模式1-MSB在LRCIN上升沿后第二個(gè)BCLK上升沿時(shí)可用/IWL1:0 (bits 3-2) 00 輸入位長(zhǎng)度00=16/FOR1:0 (bits 1-0) 11 數(shù)據(jù)格式11=DSP格式,在2個(gè)數(shù)據(jù)字后執(zhí)行框同步 /- 0000 1110 0111 0011 /send_aic23_ctrl

43、_reg(0x108C); /8KHZ采樣頻率 send_aic23_ctrl_reg(0x101C); /96KHZ采樣頻率 /REG8 采樣率控制 asm(" nop "); /Address (bits 15-9) 0001000/X (bits 8) 0 保存 /CLKOUT (bits 7) 0 時(shí)鐘輸入分配器=MCLK/CLKIN (bits 6) 0 時(shí)鐘輸出分配器0=MCLK/SR3:0 (bits 5-2) 0011 采樣率=8KHZ /BOSR (bits 1) 0 基帶過采樣率正常模式:0=256fs/USB/Normal(bits 0) 0 時(shí)鐘模式

44、選擇0=正常/- 0001 0000 0000 1100 send_aic23_ctrl_reg(0x1201); /REG9 數(shù)字接口激活 asm(" nop "); /Address (bits 15-9) 0001001/X (bits 8-1) 00000000 保存/ACT (bits 0) 1 激活接口1=激活代碼注釋:TLV320AIC23與TI的C6713DSP相連進(jìn)行數(shù)據(jù)的采集和發(fā)送,控制接口由McBSP1以SPI方式進(jìn)行配置,數(shù)據(jù)接口與McBSP0連接。AIC23工作在主動(dòng)模式,串行數(shù)據(jù)時(shí)鐘由AIC23的BCLK接口給McBSP0的CLKX0和CLKR0

45、,AIC23的芯片時(shí)鐘MCLK由一個(gè)12MHz的晶振提供,且數(shù)據(jù)傳輸為DSP Mode,時(shí)鐘模式為USB模式(BCLK=MCLK), 數(shù)據(jù)采樣頻率為8kHz,分左右聲道各16bit進(jìn)行采集。SDIN承載串行數(shù)據(jù)(數(shù)據(jù)來源與McBSP1的第二位),SCLK為串行時(shí)鐘(數(shù)據(jù)來源與McBSP1的第三位),CS將數(shù)據(jù)字鎖存到TLV320AIC23(數(shù)據(jù)來源與McBSP1的第四位)。CPLD配置說明#define E300_CPLD_CS0xb0000000 #define E300_CPLD_CTRL(*(unsigned int *)(E300_CPLD_CS + 0x08)CPLD地址編碼GCE(

46、0) <= DSP_CE3 or (not DSPAH(21) or (not DSPAH(20);-0xB030 0000 GCE(1) <= DSP_CE3 or (not DSPAH(21) or DSPAH(20); -0xB020 0000GCE(2) <= DSP_CE3 or DSPAH(21) or (not DSPAH(20);-0xB010 0000GCE(3) <= DSP_CE3 or DSPAH(21) or DSPAH(20); -0xB000 0000GCE(3)連接AIC23芯片,低電平有效signal DspAddr : std_log

47、ic_vector( 8 downto 0 );DspAddr <= DSPAH(21 downto 16) & DSPAL( 4 downto 2 );CPLD的SPI控制線process( DspAddr,CpldReg0,CpldReg1,CpldReg2,CpldReg3,CpldReg4,CpldReg5,CpldReg6,CpldReg7 )begin case DspAddr( 3 downto 0) is when "1000" => MuxD <= CpldReg0; when "1001" => Mux

48、D <= CpldReg1; when "1010" => MuxD <= CpldReg2; when "1011" => MuxD <= CpldReg3; when "1100" => MuxD <= CpldReg4; when "1110" => MuxD <= CpldReg6; when others => MuxD <= "00000000" end case;end process;process( DspAdd

49、r )begin case DspAddr( 8 downto 0) is when "100000000" => ChipEnables <= "00000001" when "100000001" => ChipEnables <= "00000010" when "100000010" => ChipEnables <= "00000100" when "100000011" => ChipEnables &

50、lt;= "00001000" when "100000100" => ChipEnables <= "00010000" when "100000101" => ChipEnables <= "00100000" when "100000110" => ChipEnables <= "01000000" when "100000111" => ChipEnables <= "10000000" when others => ChipEnables <= "00000000" end case;end process;代碼注釋:利用CPLD(復(fù)雜可編程邏輯器件)對(duì)DSP芯片SPI控制總線賦值。McBSP0配置說明/定義McBSP1寄存器/* Define McBSP1 Registers */#define DRR1 (*(unsigned int *)0x1900000) /用指針

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論