西工大DSP大作業(yè)_第1頁
西工大DSP大作業(yè)_第2頁
西工大DSP大作業(yè)_第3頁
西工大DSP大作業(yè)_第4頁
西工大DSP大作業(yè)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)1 基于CCS的簡(jiǎn)單的定點(diǎn)DSP程序一、實(shí)驗(yàn)要求1、自行安裝CCS3.3版本,配置和運(yùn)行CCS2、熟悉CCS開發(fā)環(huán)境,訪問讀寫DSP的寄存器AC0-AC3, ARO-AR7, PC, T0-T3 3、結(jié)合C5510的存儲(chǔ)器空間分配,訪問DSP的內(nèi)部RAM 4、編寫一個(gè)最簡(jiǎn)單的定點(diǎn)DSP程序,計(jì)算下面式子 y=0.1*1.2+35*20+15*1.65、采用定點(diǎn)DSP進(jìn)行計(jì)算,確定每個(gè)操作數(shù)的定點(diǎn)表示方法, 最后結(jié)果的定點(diǎn)表示方法,并驗(yàn)證結(jié)果6、對(duì)編寫的程序進(jìn)行編譯、鏈接、運(yùn)行、斷點(diǎn)執(zhí)行、單步抽 并給出map映射文件二、實(shí)驗(yàn)原理DSP芯片的定點(diǎn)運(yùn)算-Q格式(轉(zhuǎn)) 2008-09-03 15:

2、47 DSP芯片的定點(diǎn)運(yùn)算 1數(shù)據(jù)的溢出: 1溢出分類: 上溢(overflow): 下溢(underflow) 2溢出的結(jié)果: Max Min Min Max unsigned char 0 255 signed char -128 127 unsigned int 0 65535 signed int -32768 32767 上溢在圓圈上按數(shù)據(jù)逆時(shí)針移動(dòng);下溢在圓圈上順時(shí)鐘移動(dòng)。 例:signed int :32767+132768; -32768-132767 unsigned char:255+10; 0-1255 3為了避免溢出的發(fā)生,一般在DSP中可以設(shè)置溢出保護(hù)功能。當(dāng)發(fā)生溢出

3、時(shí),自動(dòng)將結(jié)果設(shè)置為最大值或最小值。 2定點(diǎn)處理器對(duì)浮點(diǎn)數(shù)的處理: 1定義變量為浮點(diǎn)型(float,double),用C語言抹平定點(diǎn)處理器和浮點(diǎn)處理器 的區(qū)別,但是程序的代碼龐大,運(yùn)算速度也慢。 2放大若干倍表示小數(shù)。比如要表示精度為0.01的變量,放大100倍去運(yùn)算, 運(yùn)算完成后再轉(zhuǎn)化。但是這個(gè)做法比較僵硬,如要將上面的變量重新定義成0.001精度,又需要放大1000倍,且要重新編寫整個(gè)程序,考慮溢出等問題。3定標(biāo)法:Q格式:通過假定小數(shù)點(diǎn)位于哪一位的右側(cè),從而確定小數(shù)的精度。 Q0:小數(shù)點(diǎn)在第0位的后面,即我們一般采用的方法 Q15 小數(shù)點(diǎn)在第15位的后面,014位都是小數(shù)位。 轉(zhuǎn)化公式:

4、Q(int)(Fpow(2,q) F(float)(Qpow(2,q) 3 Q格式的運(yùn)算 1定點(diǎn)加減法:須轉(zhuǎn)換成相同的Q格式才能加減 2定點(diǎn)乘法:不同Q格式的數(shù)據(jù)相乘,相當(dāng)于Q值相加 3定點(diǎn)除法:不同Q格式的數(shù)據(jù)相除,相當(dāng)于Q值相減 4定點(diǎn)左移:左移相當(dāng)于Q值增加 5 定點(diǎn)右移:右移相當(dāng)于Q減少 4Q格式的應(yīng)用格式 實(shí)際應(yīng)用中,浮點(diǎn)運(yùn)算大都時(shí)候都是既有整數(shù)部分,也有小數(shù)部分的。所以要選擇一個(gè)適當(dāng)?shù)亩?biāo)格式才能更好的處理運(yùn)算。一般用如下兩種方法:1 使用時(shí)使用適中的定標(biāo),既可以表示一定的整數(shù)復(fù)位也可以表示小數(shù)復(fù)位,如 對(duì)于2812的32位系統(tǒng),使用Q15格式,可表示65536.065535.99

5、9969482區(qū)間內(nèi)的數(shù)據(jù)。三、實(shí)驗(yàn)步驟1. 雙擊,啟動(dòng)CCS的仿真平臺(tái)的配著選項(xiàng)。選擇C5410 Device Simulator。2.點(diǎn)擊project菜單欄的new選項(xiàng),新建一個(gè)LAB的工程注意存儲(chǔ)的路徑。3. 把下圖中用到的文件拷到工程文件目錄的文件路徑下。4.在ccs平臺(tái)中將用到的程序?qū)氲狡脚_(tái)中,點(diǎn)擊projectadd file to project。選擇多個(gè)文件時(shí),可以按住ctrl鍵。5將程序中的start改為_main,INT_2改為_int_2。然后點(diǎn)擊保存。源程序代碼* example.asm y=0.1*x1.2+35*20+15*x1.6 *.title “examp

6、le.asm” ;為匯編源程序取名.mmregs ;定義存儲(chǔ)器映象寄存器STACK .usect “STACK”,10h ;分配10個(gè)單元的堆??臻g.bss a,4 ;為系數(shù)a分配4個(gè)單元的空間.bss x,4 ;為變量x分配4個(gè)單元的空間.bss y,1 ;為結(jié)果y 分配1個(gè)單元的空間.def _c_int00 ;定義標(biāo)號(hào)_c_int00 .data ;定義數(shù)據(jù)代碼段table: .word 1,2,3,4 ;在標(biāo)號(hào)table開始的8個(gè)單元中 .word 8,6,4,2 ;為這8個(gè)單元賦初值.text ;定義文本代碼段_c_int00 :STM #0,SWWSR ;軟件等待狀態(tài)寄存器置0,不

7、設(shè)等待STM #STACK+10h,SP ;設(shè)置堆棧指針初值STM #a,AR1 ;AR1 指向 a的地址 RPT #7 ;從程序存儲(chǔ)器向數(shù)據(jù)存儲(chǔ)器 MVPD table,*AR1+ ;重復(fù)傳送 8個(gè)數(shù)據(jù) CALL SUM ;調(diào)用 SUM 實(shí)現(xiàn)乘法累加和的子程序end: B end ;循環(huán)等待SUM:STM #a,AR3 ;將系數(shù)a的地址賦給AR3STM #x,AR4 ;將變量x的地址賦給AR3RPTZ A,#3 ;將A清0,并重復(fù)執(zhí)行下條指令4次MAC *AR3+,*AR4+,A ;執(zhí)行乘法并累加,結(jié)果放在A中STL A,y ;將A的低字內(nèi)容送結(jié)果單元yRET ;結(jié)束子程序 .end ;結(jié)束

8、全部程序Map文件* TMS320C55x COFF Linker PC Version 3.83 * Linked Mon May 31 11:03:33 2010OUTPUT FILE NAME: ENTRY POINT SYMBOL: _main address: 0000e000MEMORY CONFIGURATION name origin length used attr fill - - - - - -PAGE 0: EPROM 0000e000 00000100 0000001d RWIX vecs 0000ff80 00000004 00000000 RWIXPAGE 1:

9、SPRAM 00000060 00000020 0000000b RWIX DARAM 00000080 00000100 0000001a RWIXSECTION ALLOCATION MAP output attributes/section page origin length input sections- - - - -.text 0 0000e000 0000001d 0000e000 0000001d LAB4A.obj (.text).bss 1 00000060 0000000b UNINITIALIZED四、心得體會(huì) 經(jīng)過這次實(shí)驗(yàn),我更加熟悉CCS開發(fā)環(huán)境,訪問讀寫DSP的

10、寄存器AC0-AC3, ARO-AR7, PC, T0-T3 。 實(shí)驗(yàn)2 CCS下的FFT算法程序設(shè)計(jì)一、 實(shí)驗(yàn)?zāi)康腃CS下的FFT算法程序設(shè)計(jì)二、 實(shí)驗(yàn)要求提供一個(gè)CCS下的C語言例程,在CCS下,仿照例程,任選雨中FIR濾波、IIR濾波、FFT算法,采用C語言完成代碼的編寫、編譯、鏈接、下載和運(yùn)行,輸入數(shù)據(jù),濾波器系數(shù)任選,并給出運(yùn)算結(jié)果。1)目的2)工程文件的構(gòu)成,并附圖3)打印源代碼4)打印編譯成功的信息5)打印map文件6)程序下載的截圖過程三) 運(yùn)行結(jié)果三、 實(shí)驗(yàn)步驟1、在ccs平臺(tái)中將用到的程序?qū)氲狡脚_(tái)中,點(diǎn)擊projectadd file to project。選擇多個(gè)文件時(shí)

11、,可以按住ctrl鍵。2將所有的程序段中的start改為_main,將fft.Asm中的K_FFT_SIZE .set 32 ;NK_LOGN .set 5 ;LOG(N)改為K_FFT_SIZE .set 64 ;NK_LOGN .set 6 ;LOG(N)3、對(duì)源文件進(jìn)行編譯(注意先對(duì)每個(gè).asm文件先進(jìn)行編譯,以防止程序有錯(cuò)誤),沒有錯(cuò)誤時(shí)進(jìn)行鏈接。4點(diǎn)擊菜單fileload program。裝載.out文件四、 實(shí)驗(yàn)結(jié)果五、 源程序代碼* 函數(shù)原型:void FFT(struct compx *xin,int N) 函數(shù)功能:對(duì)輸入的復(fù)數(shù)組進(jìn)行快速傅里葉變換(FFT) 輸入?yún)?shù):*xi

12、n復(fù)數(shù)結(jié)構(gòu)體組的首地址指針,struct型 */ void FFT(struct compx *xin) int f,m,nv2,nm1,i,k,l,j=0; struct compx u,w,t; nv2=FFT_N/2; /變址運(yùn)算,即把自然順序變成倒位序,采用雷德算法 nm1=FFT_N-1; for(i=0;inm1;i+) if(ij) /如果ij,即進(jìn)行變址 t=xinj; xinj=xini; xini=t; k=nv2; /求j的下一個(gè)倒位序 while(k=j) /如果k=j,表示j的最高位為1 j=j-k; /把最高位變成0 k=k/2; /k/2,比較次高位,依次類推,逐

13、個(gè)比較,直到某個(gè)位為0 j=j+k; /把0改為1 int le,lei,ip; /FFT運(yùn)算核,使用蝶形運(yùn)算完成FFT運(yùn)算 f=FFT_N; for(l=1;(f=f/2)!=1;l+) /計(jì)算l的值,即計(jì)算蝶形級(jí)數(shù) ; for(m=1;m=l;m+) / 控制蝶形結(jié)級(jí)數(shù) /m表示第m級(jí)蝶形,l為蝶形級(jí)總數(shù)l=log(2)N le=2(m-1); /le蝶形結(jié)距離,即第m級(jí)蝶形的蝶形結(jié)相距l(xiāng)e點(diǎn) lei=le/2; /同一蝶形結(jié)中參加運(yùn)算的兩點(diǎn)的距離 u.real=1.0; /u為蝶形結(jié)運(yùn)算系數(shù),初始值為1 u.imag=0.0; w.real=cos(PI/lei); /w為系數(shù)商,即當(dāng)前

14、系數(shù)與前一個(gè)系數(shù)的商w.imag=-sin(PI/lei); for(j=0;j=lei-1;j+) /控制計(jì)算不同種蝶形結(jié),即計(jì)算系數(shù)不同的蝶形結(jié) for(i=j;i Linked Sat May 30 23:48:27 2015OUTPUT FILE NAME: ENTRY POINT SYMBOL: _main address: 0000e000MEMORY CONFIGURATION name origin length used attr fill - - - - - -PAGE 0: EPROM 0000e000 00000100 00000019 RWIXPAGE 1: SPRA

15、M 00000060 00000020 0000000a RWIX DARAM 00000080 00000100 00000000 RWIXSECTION ALLOCATION MAP output attributes/section page origin length input sections- - - - -.text 0 0000e000 00000012 0000e000 00000012 LAB2B.obj (.text).data 0 0000e012 00000005 0000e012 00000005 LAB2B.obj (.data).vectors 0 0000e

16、017 00000002 0000e017 00000002 VECTORS.obj (.vectors).bss 1 00000060 0000000a UNINITIALIZED 00000060 0000000a LAB2B.obj (.bss)GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name address name- -00000060 .bss0000e012 .data0000e000 .text00000060 _bss_ffffffff _cinit_0000e012 _data_0000e017 _edata_0000006a _e

17、nd_0000e012 _etext_ffffffff _pinit_0000e000 _text_00000000 _lflagsUNDEFED _c_int000000e000 _mainffffffff cinit0000e017 edata0000006a end0000e012 etextffffffff pinitGLOBAL SYMBOLS: SORTED BY Symbol Address address name- -00000000 _lflags00000060 _bss_00000060 .bss0000006a _end_0000006a end0000e000 .text0000e000

溫馨提示

  • 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)論