




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)1 基于CCS的簡單的定點(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的存儲器空間分配,訪問DSP的內(nèi)部RAM 4、編寫一個最簡單的定點(diǎn)DSP程序,計算下面式子 y=0.1*1.2+35*20+15*1.65、采用定點(diǎn)DSP進(jìn)行計算,確定每個操作數(shù)的定點(diǎn)表示方法, 最后結(jié)果的定點(diǎn)表示方法,并驗(yàn)證結(jié)果6、對編寫的程序進(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ù)逆時針移動;下溢在圓圈上順時鐘移動。 例:signed int :32767+132768; -32768-132767 unsigned char:255+10; 0-1255 3>為了避免溢出的發(fā)生,一般在DSP中可以設(shè)置
3、溢出保護(hù)功能。當(dāng)發(fā)生溢出時,自動將結(jié)果設(shè)置為最大值或最小值。 2定點(diǎn)處理器對浮點(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)化。但是這個做法比較僵硬,如要將上面的變量重新定義成0.001精度,又需要放大1000倍,且要重新編寫整個程序,考慮溢出等問題。3>定標(biāo)法:Q格式:通過假定小數(shù)點(diǎn)位于哪一位的右側(cè),從而確定小數(shù)的精度。 Q0:小數(shù)點(diǎn)在第0位的后面,即我們一般采用的方法 Q15 小數(shù)點(diǎn)在
4、第15位的后面,014位都是小數(shù)位。 轉(zhuǎn)化公式:Q(int)(F×pow(2,q) F(float)(Q×pow(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ù)部分的。所以要選擇一個適當(dāng)?shù)亩?biāo)格式才能更好的處理運(yùn)算。一般用如下兩種方法:1> 使用時使用適中的定標(biāo),既可以
5、表示一定的整數(shù)復(fù)位也可以表示小數(shù)復(fù)位,如 對于2812的32位系統(tǒng),使用Q15格式,可表示65536.065535.999969482區(qū)間內(nèi)的數(shù)據(jù)。三、實(shí)驗(yàn)步驟1. 雙擊,啟動CCS的仿真平臺的配著選項(xiàng)。選擇C5410 Device Simulator。2.點(diǎn)擊project菜單欄的new選項(xiàng),新建一個LAB的工程注意存儲的路徑。3. 把下圖中用到的文件拷到工程文件目錄的文件路徑下。4.在ccs平臺中將用到的程序?qū)氲狡脚_中,點(diǎn)擊project>add file to project。選擇多個文件時,可以按住ctrl鍵。5將程序中的start改為_main,INT_2改為_int_2。然
6、后點(diǎn)擊保存。源程序代碼* example.asm y=0.1*x1.2+35*20+15*x1.6 *.title “example.asm” ;為匯編源程序取名.mmregs ;定義存儲器映象寄存器STACK .usect “STACK”,10h ;分配10個單元的堆??臻g.bss a,4 ;為系數(shù)a分配4個單元的空間.bss x,4 ;為變量x分配4個單元的空間.bss y,1 ;為結(jié)果y 分配1個單元的空間.def _c_int00 ;定義標(biāo)號_c_int00 .data ;定義數(shù)據(jù)代碼段table: .word 1,2,3,4 ;在標(biāo)號table開始的8個單元中 .wor
7、d 8,6,4,2 ;為這8個單元賦初值.text ;定義文本代碼段_c_int00 :STM #0,SWWSR ;軟件等待狀態(tài)寄存器置0,不設(shè)等待STM #STACK+10h,SP ;設(shè)置堆棧指針初值STM #a,AR1 ;AR1 指向 a的地址 RPT #7 ;從程序存儲器向數(shù)據(jù)存儲器 MVPD table,*AR1+ ;重復(fù)傳送 8個數(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
8、 *AR3+,*AR4+,A ;執(zhí)行乘法并累加,結(jié)果放在A中STL A,y ;將A的低字內(nèi)容送結(jié)果單元yRET ;結(jié)束子程序 .end ;結(jié)束全部程序Map文件* TMS320C55x COFF Linker PC Version 3.83 *>> Linked Mon May 31 11:03:33 2010OUTPUT FILE NAME: <lab4a.out>ENTRY POINT SYMBOL: "_main" address: 0000e000MEMORY CONFIGURATION name origin length used att
9、r fill - - - - - -PAGE 0: EPROM 0000e000 00000100 0000001d RWIX vecs 0000ff80 00000004 00000000 RWIXPAGE 1: SPRAM 00000060 00000020 0000000b RWIX DARAM 00000080 00000100 0000001a RWIXSECTION ALLOCATION MAP output attributes/section page origin length input sections- - - - -.text 0 0000e000 0000001d
10、0000e000 0000001d LAB4A.obj (.text).bss 1 00000060 0000000b UNINITIALIZED四、心得體會 經(jīng)過這次實(shí)驗(yàn),我更加熟悉CCS開發(fā)環(huán)境,訪問讀寫DSP的寄存器AC0-AC3, ARO-AR7, PC, T0-T3 。 實(shí)驗(yàn)2 CCS下的FFT算法程序設(shè)計一、 實(shí)驗(yàn)?zāi)康腃CS下的FFT算法程序設(shè)計二、 實(shí)驗(yàn)要求提供一個CCS下的C語言例程,在CCS下,仿照例程,任選雨中FIR濾波、IIR濾波、FFT算法,采用C語言完成代碼的編寫、編譯、鏈接、下載和運(yùn)行,輸入數(shù)據(jù),濾波器系數(shù)任選,并給出運(yùn)算結(jié)果。1)目的2)工程文件的構(gòu)成,并附圖3)
11、打印源代碼4)打印編譯成功的信息5)打印map文件6)程序下載的截圖過程三) 運(yùn)行結(jié)果三、 實(shí)驗(yàn)步驟1、在ccs平臺中將用到的程序?qū)氲狡脚_中,點(diǎn)擊project>add file to project。選擇多個文件時,可以按住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、對源文件進(jìn)行編譯(注意先對每個.asm文件先進(jìn)行編譯,以防止程序有錯誤),沒有錯誤時進(jìn)行鏈接。4點(diǎn)擊菜單file
12、àload program。裝載.out文件四、 實(shí)驗(yàn)結(jié)果五、 源程序代碼* 函數(shù)原型:void FFT(struct compx *xin,int N) 函數(shù)功能:對輸入的復(fù)數(shù)組進(jìn)行快速傅里葉變換(FFT) 輸入?yún)?shù):*xin復(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;i<nm1;i+) if(i<j)
13、 /如果i<j,即進(jìn)行變址 t=xinj; xinj=xini; xini=t; k=nv2; /求j的下一個倒位序 while(k<=j) /如果k<=j,表示j的最高位為1 j=j-k; /把最高位變成0 k=k/2; /k/2,比較次高位,依次類推,逐個比較,直到某個位為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+) /計算l的值,即計算蝶形級數(shù) ; for(m=1;m<=l;m+) / 控制蝶形結(jié)級數(shù) /m表示第m級蝶形,l為蝶形級總數(shù)l=l
14、og(2)N le=2<<(m-1); /le蝶形結(jié)距離,即第m級蝶形的蝶形結(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)前系數(shù)與前一個系數(shù)的商w.imag=-sin(PI/lei); for(j=0;j<=lei-1;j+) /控制計算不同種蝶形結(jié),即計算系數(shù)不同的蝶形結(jié) for(i=j;i<=FFT_N-1;i=i+le) /控制同一蝶形結(jié)運(yùn)算,即計算系數(shù)相同蝶形結(jié) ip=i+lei; /i,ip分別表示
15、參加蝶形運(yùn)算的兩個節(jié)點(diǎn) t=EE(xinip,u); /蝶形運(yùn)算,詳見公式 xinip.real=xini.real-t.real; xinip.imag=xini.imag-t.imag; xini.real=xini.real+t.real; xini.imag=xini.imag+t.imag; u=EE(u,w); /改變系數(shù),進(jìn)行下一個蝶形運(yùn)算 Map文件* TMS320C55x COFF Linker PC Version 3.3 *>> Linked Sat May 30 23:48:27 2015OUTPUT FILE NAME: <lab.out>EN
16、TRY POINT SYMBOL: "_main" address: 0000e000MEMORY CONFIGURATION name origin length used attr fill - - - - - -PAGE 0: EPROM 0000e000 00000100 00000019 RWIXPAGE 1: SPRAM 00000060 00000020 0000000a RWIX DARAM 00000080 00000100 00000000 RWIXSECTION ALLOCATION MAP output attributes/section page
17、 origin length input sections- - - - -.text 0 0000e000 00000012 0000e000 00000012 LAB2B.obj (.text).data 0 0000e012 00000005 0000e012 00000005 LAB2B.obj (.data).vectors 0 0000e017 00000002 0000e017 00000002 VECTORS.obj (.vectors).bss 1 00000060 0000000a UNINITIALIZED 00000060 0000000a LAB2B.obj (.bs
18、s)GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name address name- -00000060 .bss0000e012 .data0000e000 .text00000060 _bss_ffffffff _cinit_0000e012 _data_0000e017 _edata_0000006a _end_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 end
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆四川省綿陽市部分校中考生物對點(diǎn)突破模擬試卷含解析
- 農(nóng)戶鏟車出售合同范例
- 代理勞務(wù)派遣工合同范例
- 出租單價合同范例
- 第三單元 第1節(jié) 溫度 教學(xué)設(shè)計- 2024-2025學(xué)年人教版物理 八年級上冊
- 勞務(wù)總包合同范本
- 因材施教的個性化教育計劃
- 城建行業(yè)保安工作總結(jié)計劃
- 前臺文員的職業(yè)培訓(xùn)與發(fā)展路徑計劃
- 分析不同財務(wù)工具的適用場景計劃
- 臨時工雇傭合同范本2025年度
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 地理試卷
- “艾梅乙”感染者消除醫(yī)療歧視制度-
- 2024-2025學(xué)年八年級地理下冊第七章《南方地區(qū)》檢測卷(人教版)
- 森林防火知識
- 2025年黑龍江林業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案
- 2025-2030年中國測序儀市場運(yùn)行態(tài)勢及發(fā)展規(guī)劃分析報告
- 第二單元第1課《精彩瞬間》第2課時 課件-七年級美術(shù)下冊(人教版2024)
- 《物理前沿科學(xué)》課件
- 2025年公共營養(yǎng)師三級理論試題及答案
- 煤礦防治水安全質(zhì)量標(biāo)準(zhǔn)化評分表
評論
0/150
提交評論