freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于dsp的程控濾波器設(shè)計畢業(yè)設(shè)計-資料下載頁

2024-11-22 23:14本頁面

【導(dǎo)讀】體已經(jīng)發(fā)表或撰寫的成果作品。本人完全意識到本聲明的法律后果由本人承擔(dān)。本人授權(quán)省級優(yōu)秀學(xué)士學(xué)位論文評選機(jī)構(gòu)將本學(xué)位論文的全部或部分內(nèi)容編入有。關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。

  

【正文】 進(jìn) 入 中 斷中 斷 返 回讀 取 按 鍵 的 值根 據(jù) 不 同 的 鍵 值 判斷 不 同 的 狀 態(tài)調(diào) 用 計 算 h ( n ) 的函 數(shù) 算 出 h ( n )修 改 h ( n ) 從 而 改變 濾 波 器 的 結(jié) 構(gòu). 圖 51 總體流程圖 圖 52 McBSP 中斷流程圖 圖 53 鍵盤中斷流程圖 以上便為整個系統(tǒng)的軟件的工作過程。在介紹具體程序編寫前,先介紹此次 編程所 用到的開發(fā)環(huán)境 中較為重要部分 的使用 方法 , 怎樣使用 匯編 語言 與 C語言 混合編程, 內(nèi)存分配文件的編寫 和 整個系統(tǒng)核心 FIR濾波器在 matlab 中的設(shè)計與仿真。 21 內(nèi)存分配 文件 在利用 DSP 的開發(fā)工具 CCS 編程的過程中 , 首先要解決的是 如何將程序變量分配到內(nèi)存中去的問題 。 因為即使 DSP 的存儲空間比較大 , 速度也十分 快 。 但是如果內(nèi)存空間分配不當(dāng)?shù)脑?, 還是會出現(xiàn)空間不夠 , 運行速度下降 , 甚至程序跑飛的情況 。這樣會 使 程序調(diào)試起來十分麻煩 。 所以 , 一定要分配好內(nèi)存空間 。 圖 54 rcp 文件內(nèi)存分配界面 CCS提供了兩種分配空間的方法 : 利用 cmd文件或 rcp文件分配空間 。 其中 cmd 文件是純文本格式的描述性的空間分配方式 。 它的優(yōu)點是 : 程序員對空間的可控制性較高 , 可以將不同的塊分配到指定的地址 , 并規(guī)定長度 。 但它對于初學(xué)者來說 , 要求對C5416 的內(nèi)存空間的分配有較清楚的認(rèn)識 , 否則容易將數(shù)據(jù)分配到不該分配的地方 ,引起程序運行的沖突 , 甚至程序跑飛 。 所以一般在編程過程中 , 使用 rcp 文件對程序進(jìn)行內(nèi)存分配 。 Rcp文件全稱是 recipe 文件 , 這是一種圖形化界面的內(nèi)存分配文件 。 對于一個新生成的工程組 rcp 文件的生成方法是選擇 CCS 菜單上的 Tools 項選擇linker configuration 項 , 將分配方式改為 use the visual linker 之后 , 直接編譯在編譯信息提示窗口中會顯示出錯信息 , 提示找不到 rcp 文件 , 雙擊提示 CCS 會自動彈出 rcp生成向?qū)?, 按照要求選擇 rcp 模板 , 就會生成這個工程對應(yīng)的 rcp文件 。雙擊生成的 rcp 文 件 , 通過 visual linker 連接器可以打開這個文件 , 觀察各個塊在 22 內(nèi)存中的分配情況以及內(nèi)存總的占用情況 , 基本界面如圖 54 所示 。 當(dāng)程序中新增加了變量后 , 在 rcp文件中會出現(xiàn) Not yet placed 項 , 只要將其下的文件夾 , 根據(jù)類型拖動到 run_view 下的相應(yīng)的數(shù)據(jù)存儲器或程序存儲器即可 。 還可以選擇用何種類型的存儲器空間裝載 , 通過觀察存儲空間 了解 使用的狀況 , 自行分配空間 。 所以十分靈活 , 并且不會出現(xiàn)空間重疊的現(xiàn)象 , 避免了程序跑飛 。 C 和匯編語言混合編程 方法 雖然 C編譯器的優(yōu)化功能可以使 C代碼的效 率大大增加,但是在某些情況下, C代碼效率還是無法與手工編寫的匯編代碼效率相比,因為即使是最佳的 C編譯器也無法在所有情況下都能最合理地利用 DSP芯片所提供 的 各種資源。此外,在中斷程序效率、硬件控制等方面,匯編程序都要強(qiáng)于 C語言。因此,在很多情況下, DSP應(yīng)用程序需要用 C和匯編語言混合編程來實現(xiàn),以達(dá)到資源 最佳利用 的目的。 用 C語言 和匯編語言的混合編程方法主要有以下三種: ( 1)獨立編寫 C程序和匯編程序,分開編譯或匯編形成各自的目標(biāo)代碼模塊,然后用鏈接器將這些模塊鏈接起來;這是一種常用的 C和匯編語言方法。采用這 種方法需注意的是在編寫匯編語言和 C語言時必須遵循有關(guān)的調(diào)用規(guī)則和寄存器規(guī)則。 C程序既可調(diào)用匯編程序,也可以訪問匯編程序中定義的變量。同樣,匯編程序也可以調(diào)用C函數(shù)或訪問 C程序中的變量。 ( 2)直接在 C語言程序的相應(yīng)位置嵌入?yún)R編語句。在 C程序中嵌入?yún)R編語句是一種直接的 C和匯編的接口方法。采用這種方法一方面可以在 C程序中實現(xiàn)用 C語言無法實現(xiàn)的一些硬件控制功能;另一方面可以在 C程序中的關(guān) 鍵部分用匯編語句代替 C語句以優(yōu)化程序。 嵌入?yún)R編語句的方法比較簡單,只需在匯編語句的左右加上一個雙引號,用小括號將匯編語句括住, 在括號前加上 asm標(biāo)識符即可,如下所示: asm(“ 匯編語句 ” ); ( 3)從 C 程序中訪問匯編程序變量。從 C 程序中訪問在匯編程序中定義的變量和常數(shù)時,需要根據(jù)變量或常數(shù)定義的方式采取不同的方法。① 對于訪問在 .bss 塊中定義的變量,可用如下方法實現(xiàn):采用 .bss 命令定義變量 ; 用 .global 命令定義為外部變量;在變量名前加下劃線;在 C 程序中說明為外部變量。② 對于訪問不在 .bss 塊中的變量,須定義一個指向該變量的指針,然后在 C程序中間接地訪問這 23 個變量。③ 對于在匯編中用 .set 和 .global 命令定義的 全局常數(shù),也可以從 C 程序中訪問。在 C程序中訪問匯編中的常數(shù)不能直接用常數(shù)的符號名,而應(yīng)在常數(shù)名之前加一個地址操作符 amp。 matlab 中 使用 FDAtool 設(shè)計 FIR 濾波器 并 仿真 本次設(shè)計的程控濾波器,其核心是一個 FIR 濾波器,在進(jìn)入 DSP 設(shè)計之前,先用數(shù)學(xué)工具 matlab 進(jìn)行仿真。從而得到 FIR 濾波器的系數(shù) h( n),并得到仿真的結(jié)果,即設(shè)計 的濾波器的幅頻響應(yīng)和相頻響應(yīng) 。 本次設(shè)計采用 matlab 的數(shù)字濾波器設(shè)計工具 FDAtool,通過設(shè)計一個低通濾波器為例講解設(shè)計的過程。 ( 1) FDAtool的啟動: 在 matlab的命令窗口中敲入 FDAtool回車即可以進(jìn)入 FDAtool的設(shè)計界面,如圖 55。 圖 55 FDAtool 的啟動界面 ( 2) 根據(jù)指標(biāo)設(shè)計濾波器 , 實現(xiàn) 低通濾波器: 截止 fc頻率從 2KHz到 20KHz,以 1KHz步進(jìn)。 為了達(dá)到 3dB 處截止頻率與設(shè)定的值相差較小的目的,我們在設(shè)計時選定 通帶波動 小于 1dB, 阻帶 頻率 2fc 處 衰減 大于 20dB, 采樣頻率為 80KHz。 高通濾波器 ,通帶波動 小于 1dB, 阻帶頻率 1/2fc 處衰減 大于 20dB。 確定所需濾波器的設(shè)計階數(shù) , 這里使用了 kaiser 窗來估計濾波器所需 的階數(shù) 。 先在 FDAtool 中選中設(shè)計的類型 為低通, 然后選擇設(shè)計的為 FIR濾波器,所用方法為窗函數(shù)法 。 選擇最小階數(shù),選擇 kaiser 窗 ,然后填入采樣頻率 80KHz, fpass= 2Kz, fstop= 4Kz,再填上 Apass 24 = 1, Astop= 20。 整個設(shè)計如圖 56。 然后點擊 Design filter 得出結(jié)果是 47 階,這樣在最小的頻率處 47 階都能達(dá)到要求,那么其他的頻率處更能夠達(dá)到要求,為了在 DSP 中方便設(shè)計, 此次 設(shè)計選擇了固定的 63 階 。 圖 56 設(shè)計過程 ( 3)設(shè)計 fc= 10KHz的 63階哈明窗濾波器, 其過程與上述類似。只是 選擇 固定階數(shù) 63,然后選擇漢明窗 。其設(shè)計后的幅頻特性如圖 57, 設(shè)計的相頻特性如圖 58。 圖 57 10KHz 低通濾波器的幅頻響應(yīng) 25 圖 58 10KHz 低通濾波器的相頻響應(yīng) ( 4) 設(shè)計結(jié)果的導(dǎo)出:此時設(shè)計的濾波器的系數(shù) h( n)已經(jīng)可以導(dǎo)出到 matlab的工作空間中 或 導(dǎo)出成 .txt 文件,也可以導(dǎo)出到 DSP 的開發(fā)環(huán)境 CCS 中,自動生成一個 C語言的 .h 頭文件,而這些系數(shù)都已經(jīng)放在了數(shù)組中 。根據(jù) DSP 型號 的不同,可以導(dǎo)出為 16 位有符號或者無符號整形數(shù)據(jù), 32位有或者無符號整形,浮 點型等不同的數(shù)據(jù)格式。這里由于 C5416 為 16 位定點 DSP 所以導(dǎo)出的數(shù)據(jù)將格式定義為 16位有符號整形。導(dǎo)出的過程是:在 FDAtool 中選擇 Targetsexport to ccs IDE于是出現(xiàn)如圖 59界面,選擇導(dǎo)出數(shù)組的變量名 和 長度。 圖 59 導(dǎo)出數(shù)據(jù) FIR濾波器 在 DSP 中的 實現(xiàn) 此節(jié)為濾波器軟件的核心部分,主要包括 FIR 濾波 器 的實時實現(xiàn)和通過鍵盤的參 26 數(shù)獲得 )(nh 的過程。 由于 FIR濾波器的輸出表達(dá)式為 : )1()1()1()1()()0()( ????????????? Nnxnhnxhnxhny ( 51) 式中 )(nh 為濾波器系數(shù), )(nx 為輸入的數(shù)據(jù),在此濾波器中為 A/D 獲得的數(shù)據(jù),)(ny 為濾波輸出的數(shù)據(jù),送給 D/A 轉(zhuǎn)換器。 上式的基本算法 是 一種乘法 累加運算,即不斷的輸入樣本 )(nx ,經(jīng)過延遲后,再進(jìn)行乘法 累加,最后得到 )(ny 。 在 DSP 芯片中實現(xiàn)這種延遲后乘法 累加的運算十分 方便,有專門的乘法 累加指令 MAC,因此執(zhí)行非???。 而實現(xiàn)延遲的方法可采用線性緩沖區(qū)法和循環(huán)緩沖區(qū)法 ,下面介紹其各自的特點: ( 1) 線性緩沖區(qū)法的特點:對于 N級的 FIR 濾波器,在數(shù)據(jù)存儲區(qū)中開辟一個N單元的緩沖區(qū)(滑窗),用來存方最新的 N個輸入樣本 ;從最老的樣本開始取 數(shù),每取一個樣本后,將此樣本向下移位;讀完最后一個樣本后,輸入最新樣本存入緩沖區(qū)的頂部。 ( 2) 循環(huán)緩沖區(qū)法的特點:對于 N級 FIR 濾波器,在數(shù)據(jù)存儲區(qū)開辟一個 N單元的緩沖區(qū)(滑窗),用來存放最新的 N個輸入樣本;從最新的樣本開始取數(shù);讀完最后一個 樣本后,輸入最新樣本代替最老樣本,而其他數(shù)據(jù) 位置 不變;用片內(nèi) BK(循環(huán)緩沖區(qū)的長度)寄存器對緩沖區(qū)進(jìn)行間接尋址,使循環(huán)緩沖區(qū)地址首尾相鄰。 由此可見,采用循環(huán)緩沖區(qū)的方式,不需要數(shù)據(jù)移動, 加快了運行的速度,因此本設(shè)計采用這種方法。其實現(xiàn)過程如下: ( 1)以 ARx 為指針,按 x( n), x( n1), ?? , x( nN+1)的順序取數(shù),每取一次數(shù)后,完成一次乘法 累加運算。 ( 2)經(jīng)過 N次取數(shù),運算后,得到 y( n)。 ( 3)求得 y( n)后, ARx 指向最老的樣本 x(nN+1)單元。 ( 4)輸入最新樣本 x( n+1), 代替最老樣本 x( nN+1) 。 整個過程如圖 510。 27 x ( n )x ( n 1 )x ( n 2 )x ( n 3 )? ?x ( n N + 3 )x ( n N + 2 )x ( n N + 1 )x ( n )x ( n 1 )x ( n 2 )x ( n 3 )? ?x ( n N + 3 )x ( n N + 2 )x ( n + 1 )x ( n )x ( n 1 )x ( n 2 )x ( n 3 )? ?x ( n N + 3 )x ( n + 2 )x ( n + 1 )數(shù) 據(jù) 存 儲 區(qū) 數(shù) 據(jù) 存 儲 區(qū) 數(shù) 據(jù) 存 儲 區(qū)緩 沖 區(qū) 頂 部緩 沖 區(qū) 低 部A R xA R xA R x 圖 510 循環(huán)緩沖區(qū) 實現(xiàn)循 環(huán)緩沖 N個單元的首尾相鄰要用到 BK寄存器按模間接尋址來實現(xiàn) 。常用的指令為: *ARx+%,增 量為 1,按模修正 ARx, addr= ARx, ARx= cir( ARx+1); *ARx+0%,增 量為 AR0 中的內(nèi)容 ,按模修正 ARx, addr= ARx, ARx= cir( ARx+AR0)。在這個過程中 cir()是根據(jù) BK 緩沖區(qū)的長度 N,對 ARx, ARx+AR0 取模來實現(xiàn)循環(huán)緩沖。 ARx= cir( ARx+AR0)可描述為:如果 ARx+AR0N 那么 ARx= ARx+AR0,否則 ARx=ARx+AR0N。 此段程序 在 DSP 中 采用匯編的形式 實現(xiàn) ,具體過程參照了 TI 公司提供的庫。 其實現(xiàn) 過程 的流程 如 圖 511。由于此代碼用于 C語言調(diào)用,因此在編寫的時候要 注意保護(hù)寄存器。 28 進(jìn) 入 f i r程 序S T 0 , S T 1 狀 態(tài) 寄 存器 進(jìn) 棧設(shè) 置 小 數(shù) 乘 法A R 4 指 向 x ( n )A R 3 指 向 h ( n )A R 2 指 向 r ( n )將 階 數(shù) 傳 給 B K設(shè) 置 緩 沖 區(qū)利 用 M A C 指 令 完成 乘 法 累 加保 持 結(jié) 果彈 出 棧 中 對 于 寄 存器 的 值程 序 返 回 圖 511 流程圖 在這個過程中注意設(shè)置緩沖區(qū)的邊界 , x[n]、 h[n]的 低 M位 地址 必須 為 0,其中M2 N, N 是設(shè)計的濾波器的階數(shù) , 否則得不到正確的結(jié)果。 在 C 語言調(diào)用此函數(shù)前要先聲明,其函數(shù)的原型為: short fir(DATA *x, DATA *h, DATA *r, DATA **d,ushort nh, ushort nx)。 濾波器的程控部分程序 此次濾波器 程控 部分 是 根據(jù) 鍵盤輸入的數(shù)據(jù) , 通過 內(nèi)部 軟件改變自己的結(jié)構(gòu) 來實現(xiàn)的。 其核心為在 DS
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1