江蘇大學 dsp課程設(shè)計
《江蘇大學 dsp課程設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《江蘇大學 dsp課程設(shè)計(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、word JIANGSU UNIVERSITY 本 科 生 課程設(shè)計 DSP課程設(shè)計實驗報告 基于ICETEK5509實驗箱和基2FFT算法的頻譜分析 學院名稱:計算機科學與通信工程學院 專業(yè)班級:通信工程 學生: 指導教師: 指導教師職稱: 年月 一、 設(shè)計目的與意義 1、本課程設(shè)計與理論課、實驗課一起構(gòu)成《DSP芯片原理與應(yīng)用》完整課程 體系; 2、針對理論課、實驗課中無時間和不方便提與容和需強調(diào)重點進展補充與 完善; 3、
2、以原理算法的實現(xiàn)與驗證體會DSP技術(shù)的系統(tǒng)性,并加深根本原理的體會。 二、 設(shè)計要求 1、系統(tǒng)設(shè)計要求: ⑴.設(shè)計一個以ICETEK5509為硬件主體,F(xiàn)FT為核心算法的頻譜分析系統(tǒng) 方案; ⑵.用C語言編寫系統(tǒng)軟件的核心局部,熟悉CCS調(diào)試環(huán)境的使用方法, 在CCS IDE中仿真實現(xiàn)方案功能; ⑶.在實驗箱上由硬件實現(xiàn)頻譜分析。 2、具體要求: ⑴.FFT算法C語言實現(xiàn)與驗證 1) 參考教材節(jié)FFT核心算法在CCS軟件仿真環(huán)境中建立FFT工 程:添加main()函數(shù),更改教材中個別語
3、法錯誤,添加相應(yīng)的庫文 件,建立正確的FFT工程; 2) 設(shè)計檢測信號,驗證FFT算法的正確性與FFT的局部性質(zhì); 3) 運用FFT完成IFFT的計算。 ⑵.單路、多路數(shù)模轉(zhuǎn)換〔A/D〕 1) 回顧CCS的根本操作流程,尤其是開發(fā)環(huán)境的使用; 2) 參考實驗指導和示例工程掌握5509芯片A/D的C語言根本控制流 程; 3) 仔細閱讀工程的源程序,做好注釋,為后期開發(fā)做好系統(tǒng)采集前端 設(shè)計的準備。 ⑶.系統(tǒng)集成,實現(xiàn)硬件頻譜
4、分析 1) 整合前兩個工程,實現(xiàn)連續(xù)信號的頻譜分析工程的構(gòu)建; 2) 參考A/D轉(zhuǎn)換示例和DSP系統(tǒng)功能自檢示例完成硬件連接,并測試 開發(fā)系統(tǒng)運行效果; 3) 基于現(xiàn)有系統(tǒng),對于實時頻譜分析給出進一步開發(fā)設(shè)計和系統(tǒng)改良 方案。 三、課程設(shè)計原理 1、DSP應(yīng)用系統(tǒng)構(gòu)成: 注:一般的輸入信號首先進展帶限濾波和抽樣,然后進展模數(shù)〔A/D〕轉(zhuǎn)換,將信號變成數(shù)字比特流。根據(jù)奈奎斯特抽樣定理,對低通信號模擬,為保持信號的不丟失,抽樣頻率必須至少是輸入帶限信號的最高頻率的2倍,工程上為帶限
5、信號最高頻率的3-5倍。 2、快速離散傅里葉變換〔FFT〕的根本原理: 頻譜分析系統(tǒng) FFT是一種快速有效地計算離散傅里葉變換〔DFT〕的方法。它是根據(jù)離散傅里葉變換的奇、偶、虛、實等特性,對離散傅里葉變換的算法進展改良獲得的?! ? 因為需要N次復數(shù)乘法和N-1次復數(shù)加法,所以計算全部X(k),共需要次復數(shù)乘法和N(N-1)次復數(shù)加法。實現(xiàn)一次復數(shù)乘法需要四次實數(shù)乘法和兩次實數(shù)加法,一次復數(shù)加法需要兩次實數(shù)加法,因此直接計算全部X(k)共需要4次實數(shù)乘法和2N(2N-1)次實數(shù)加法。為減少運算量,提高運算速度,就必須改良算法。 FFT算法就是不斷地把長序列的DF
6、T分解成幾個短序列的DFT,并利用的周期性和對稱性來減少DFT的運算次數(shù)。 具有以下固有特性: (1)的周期性: (2)的對稱性: (3)的可約性: 另外,。 利用的上述特性,將x(n)或X(k)序列按一定規(guī)律分解成短序列進展運算,這樣可以防止大量的重復運算,提高計算DFT的運算速度。算法形式有很多種,但根本上可以分為兩大類,即按時間抽取(Decimation In Time,DIT)FFT算法和按頻率抽取(Decimation InFrequency,DIF)FFT算法。 N=8的按時間抽取FFT N=8的按頻率抽取FFT 2.1實數(shù)序列的F
7、FT: 反FFT運算可以表示為: 式中,是時域信號的傅里葉變換。比擬和可以看出,通過如下修改,我們可以用FFT算法來實現(xiàn)反FFT: ⑴增加一個歸一化因子; ⑵將用其復共軛代替。 由于第二點需要修改符號,因此FFT程序還不能不加修改的來計算反FFT。 因為 可見,求的反FFT可以分為以下三個步驟: ⑴取的共軛,得; ⑵求的FFT,得; ⑶取的共軛,并除以,即得。 采用這種方法可以完全不用修改FFT程序就可以計算反FFT。 3、單路、多路模數(shù)轉(zhuǎn)換實驗原理〔AD) ⑴ TMS320VC5509A模數(shù)轉(zhuǎn)換模塊特性: —帶置采樣和保持的10位模數(shù)轉(zhuǎn)換模塊ADC,最
8、小轉(zhuǎn)換時間為500ns, 最大采樣率為21.5KHz。 —2個模擬輸入通道〔AIN0-AIN1〕。 —采樣和保持獲取時間窗口有單獨的預定標控制。 ⑵ 模數(shù)轉(zhuǎn)換工作過程: —模數(shù)轉(zhuǎn)換模塊接到啟動轉(zhuǎn)換模塊后,開始轉(zhuǎn)換第一通道的數(shù)據(jù)。 —經(jīng)過一個采樣時間的延遲后,將采樣結(jié)果放入轉(zhuǎn)換結(jié)果存放器保存。 —轉(zhuǎn)換完畢,設(shè)置標志。 —等待下一個啟動信號。 ⑶ 模數(shù)轉(zhuǎn)換的程序控制: 模數(shù)轉(zhuǎn)換相對于計算機來說是一個較為緩慢的過程。一般采用中斷方式啟動轉(zhuǎn)換或保存結(jié)果,這樣在CPU忙于其它工作時可以少占用處理時間。設(shè)計轉(zhuǎn)換程序應(yīng)首先考慮處理過程如何與模數(shù)轉(zhuǎn)換的時間相匹配,
9、根據(jù)實際需要選擇適當?shù)挠|發(fā)轉(zhuǎn)換手段,也要能與時地保存結(jié)果。 由于TMS320VC5509A DSP芯片的A/D轉(zhuǎn)換精度是10位,轉(zhuǎn)換結(jié)果的低10位為所需數(shù)值,所以在保存時應(yīng)注意將結(jié)果的高6位去除,取出低10位有效數(shù)字。 ⑷ 實驗程序流程圖: 開 始 初始化CPU時鐘、 EMIF、AD采樣時鐘 啟動AD0通道采集〔連續(xù) 256次〕存入緩沖區(qū)nADC0 啟動AD1通道采集〔連續(xù)256次〕存入緩沖區(qū)nADC1 實驗程序流程圖 四.實驗程序和流程圖: 1、FFT ⑴FFT程
10、序:
#include
11、px EE(struct px b1,struct px b2) //兩個復數(shù)的相乘--b1*b2 {struct px b3; //定義相乘的結(jié)果b3 b3.real=b1.real*b2.real-b1.imag*b2.imag; b3.imag=b1.real*b2.imag+b1.imag*b2.real; return(b3); }
12、 //返回相乘結(jié)果b3 /*輸入:xin(實部,虛部), 輸出:xin(實部,虛部), N:FFT點數(shù)*/ void FFT(struct px *xin, int N) { int f,m,nv2,nm1,i,k,j=1,l; struct px v,w,t; //v為蝶形因子,w為中間變量 nv2=N/2; f=N; fo
13、r (m=1;(f=f/2)!=1;m++) {;} //計算蝶形運算的級數(shù)m=3,
nm1=N-1;
/*變址運算*/
for (i=1;i<=nm1;i++) //實現(xiàn)位反轉(zhuǎn)
{ if(i 14、 for (l=1;l<=m;l++)
{le=pow(2,l);
lei=le/2;
v.real=1.0;v.imag =0.0; //第一級蝶形運算的運算因子
w.real =cos(pi/lei);w.imag =-sin(pi/lei); //用于改變蝶形運算因子中間變量
for(j=1;j<=lei;j++) // 改變第二,三蝶形運算的運算因子 {for(i=j;i<=N;i=i+le) / 15、/循環(huán) N/le 次
{ip=i+lei;
t=EE(xin[ip],v);
xin[ip].real=xin[i].real-t.real;
xin[ip].imag =xin[i].imag-t.imag;
xin[i].real=xin[i].real+t.real;
xin[i].imag=xin[i].imag+t.imag;}
v=EE(v,w);
}}}
return;
}
/* 16、****************main programe********************/
#include 17、al=sin(pi*i/128);
s[i].real=cos(2*pp*i/256);
s[i].imag=0 ;
input[i]=sin(2*pp*i/256);
}
FFT(s,Num);
for(i=1;i<257;i++)
{
result[i]=sqrt(pow(s[i].real,2)+pow(s[i].imag,2));
}
開始
輸入xin,N
m=log2N
變址運算
l=1
完畢
輸出頻譜圖
l++
第l次蝶形運算
l<=m
}
⑵FFT流 18、程圖
3、AD
⑴AD程序
#include "myapp.h"
#include "ICETEK-VC5509-EDU.h"
#include "scancode.h"
#include "fft.h"
#include "math.h"
struct px s0[257],s1[257];
float input0[256],input1[256],output0[256],output1[256];
void InitADC();
19、 void wait( unsigned int cycles );
void EnableAPLL( );
unsigned int nADC0[256],nADC1[256];
main()
{ int i;
unsigned int uWork;
EnableAPLL();
SDRAM_init();
InitADC();
PLL_Init(132);
while ( 1 )
{ for ( i=0;i<256;i++ )
{ ADCCTL=0x8000; // 啟動AD轉(zhuǎn)換,通道0
w 20、hile ( uWork&0x8000 );
nADC0[i]=uWork&0x0fff; //0xfff→0x3ff 取后十位,前兩位一直為0
s0[i+1].real=nADC0[i]; //實部為nADC0中的值
input0[i]= s0[i+1].real;
s0[i+1].imag=0; //虛部為0
}
for ( i=0;i<256;i++ )
{ ADCCTL=0x9000; // 啟動AD轉(zhuǎn)換,通道1
while ( 21、 uWork&0x8000 );
nADC1[i]=uWork&0x0fff;//0xfff→0x3ff 取后十位,前兩位一直為0
s1[i+1].real=nADC1[i]; //實部為nADC1中的值
input1[i]= s1[i+1].real;
s1[i+1].imag=0;//虛部為0
}
FFT(s0,256); //調(diào)用FFT函數(shù)對s0進展FFT變換
FFT(s1,256); //調(diào)用FFT函數(shù)對s1進展 22、FFT變換 23、 24、 25、 26、 27、 28、
for(i=0;i<256;i++)
{ output0[i]=sqrt(pow(s0[i+1].real,2)+pow(s0[i+1].imag,2)); //取模
29、 output1[i]=sqrt(pow(s1[i+1].real,2)+pow(s1[i+1].imag,2));}
asm( " nop"); // break point
}
}
void InitADC()
{
ADCCLKCTL=0x23; // 4MHz ADCLK 4*(35+1)=144MHz
ADCCLKDIV=0x4f00;
}
void wait( unsigned int cycles )
{ int i;
for ( i = 0 ; i < cycles ; i++ ){ }}
void Enable 30、APLL( )
{ /* Enusre DPLL is running */
*( ioport volatile unsigned short* )0x1f00 = 4;
wait( 25 );
*( ioport volatile unsigned short* )0x1f00 = 0;
// MULITPLY
*( ioport volatile unsigned short* )0x1f00 = 0x3000;
// COUNT
*( ioport volatile unsigned short* )0x1f0 31、0 |= 0x4F8;
wait( 25 );
//*( ioport volatile unsigned short* )0x1f00 |= 0x800
// MODE
*( ioport volatile unsigned short* )0x1f00 |= 2;
wait( 30000 );
// APLL Select
*( ioport volatile unsigned short* )0x1e80 = 1;
// DELAY
wait( 60000 );
}
32、
⑵AD流程圖
開始
初始化CPU時鐘、EMIF、AD采樣時鐘
啟動AD0通道采集〔連續(xù)256次〕存入緩沖區(qū)nADC 0
將nADC0數(shù)據(jù)賦值給s0結(jié)構(gòu)體中的實部,虛部為0
啟動AD1通道采集〔連續(xù)256次〕存入緩沖區(qū)nADC 1
將nADC1數(shù)據(jù)賦值給s1結(jié)構(gòu)體中的實部,虛部為0
FFT〔s0,256〕
FFT(s1,256)
圖5-2 AD流程圖
五、實驗步驟與結(jié)果分析
實驗步驟與結(jié)果分析
33、1、FFT驗證的步驟和分析:
⑴實驗步驟:
參考教材中的FFT核心算法在CCS軟件仿真中建立FFT工程:
首先更改FFT算法中的個別語法錯誤,初步理解程序,其次編寫main()函數(shù)使系統(tǒng)能夠找到程序入口地址,由于正余弦信號的頻譜為脈沖信號,因此這里采用正余弦與其線性組合作為檢測信號,編寫檢測信號程序時,應(yīng)注意將采樣點放入結(jié)構(gòu)體數(shù)組s[257]中。然后添加庫文件到工程中,編譯、下載,用viewgraphTime/Frequency…觀察波形,設(shè)置觀察窗口為:
⑵實驗結(jié)果截圖:
檢測信號為input[i]=sin(2*pp*〔i-1〕/256)
檢測 34、信號input[i]=cos(2*pp*〔i-1/〕256)
檢測信號為直流信號Input[i]=1
檢測信號input[i]=sin(10*2*pp*〔i-1〕/256)
input[i]=0.5+sin(10*2*pp*i/256)+cos(50*2*pp*i/256)
⑶實驗結(jié)果分析:
1) 信號中有直流分量,有正弦信號和余弦信號,但在時域波形中得
不出信號的組成如何;
2)在0頻時有直流分量;
3)正余弦信號頻譜實部大小相等關(guān)于中間值〔129,0〕對稱,虛部大
小相等方 35、向相反,關(guān)于中間值〔129,0〕對稱,因此驗證了FFT算
法的正確性;
4)換個角度思考,可以利用此算法來驗證奈奎斯特抽樣定理,正余
弦時域中任意線性組合不影響頻譜分布,以與驗證FFT的柵欄效
應(yīng),只能看到整數(shù)倍頻的點等。
2、IFFT驗證的步驟和分析:
⑴實驗結(jié)果截圖:
1) 輸入信號為cos(2*pi*m/256)時
cos(2*pi*m/256)輸入信號和IFFT后時域圖
2) 輸入信號為sin(2*pi*m/256)時
36、 sin(2*pi*m/256)輸入信號和IFFT后時域圖
3) 輸入信號為1+sin(2*pi*m/256)+cos(2*pi*m/256)時
1+sin(2*pi*m/256)+cos(2*pi*m/256)輸入信號和IFFT后時域圖
3、兩通道模數(shù)轉(zhuǎn)換〔A/D〕在開發(fā)環(huán)境中的調(diào)試
⑴ 通道波形的產(chǎn)生
根據(jù)實驗指導書中的操作步驟調(diào)試出兩通道一樣的正弦波,使圖像在CCS界面中動態(tài)變化,調(diào)節(jié)實驗板上的頻率、波形控制按鈕,圖形界面輸出相應(yīng)的波形,圖6-3-1為0通道在10KHZ—100KHZ、1通道在10—100HZ事的正弦波:
37、
4.兩個工程整合后:
六、課程設(shè)計心得
本次DSP課程設(shè)計針對理論課、實驗課中無時間和不方便提與容和需強調(diào)重點進展補充與完善,以原理算法的實現(xiàn)與驗證體會DSP技術(shù)的系統(tǒng)性,并加深了我對根本原理的體會。在這幾天中,我學到了如下幾點:
⑴ 通過對FFT算法進展分析研究,從根底深入研究和學習,掌握FFT
算法的關(guān)鍵;
⑵ 通過對DSP芯片工作原理以與開發(fā)環(huán)境的回顧,在DSP芯片上實現(xiàn)對信
號的實時頻譜分析;
⑶ 這次課程設(shè)計,雖然不能做到完全理解掌握,但依然讓我加深了對各門專
業(yè)課之間的聯(lián)系;
⑷ 通過與同組成員的互相溝通,不僅使各自的知識得到了擴大,而且從中得
到了很多的啟示,增強了團隊合作能力;
19 / 19
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 精美實用框架完整的年終總結(jié)工作匯報新年計劃
- 英語滬教版小學六年級下冊Module4Unit12Thefivepeas優(yōu)質(zhì)課ppt課件
- 四年級上冊書法ppt課件-第14課-弓字旁-西泠印社版
- 腦卒中患者良肢位的擺放
- 九年級語文上學期期中測試(含第三單元)課件 語文版 (23)
- 第1講Java概覽
- 護理質(zhì)量匯報一季度
- 2020年鼠年公司年會PPT模板課件
- 六年級語文下冊《古詩詞背誦》課件-課件
- 二年級語文下冊《開滿鮮花的小路》教學課件-部編版
- C語言課件二維數(shù)組
- 精神科病歷書寫及存在問題解答課件
- 銷售管家終端數(shù)據(jù)采集方案課件
- 無創(chuàng)呼吸機課件
- 安全使用食品添加劑-說課課件