DSP正弦函數計算程序_第1頁
DSP正弦函數計算程序_第2頁
DSP正弦函數計算程序_第3頁
DSP正弦函數計算程序_第4頁
DSP正弦函數計算程序_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 課 程 設 計 任 務 書題目 正弦函數計算程序的編寫 專業、班級 學號 姓名 主要內容、基本要求、主要參考資料等:1、 參考課本,正弦函數的泰勒級數展開式及C54X Mnemonic Instruction Set.pdf ,編寫正弦函數的計算程序。2、 要求程序能夠進行3次以上的疊代運算,計算一個數的正弦值。3、 要求用匯編語言書寫,其中匯編語言源文件要求具有已初始化段,未初始化段,代碼段的定義。4、 完成上述要求程序的編寫并在CCS5000編譯連接通過并驗證計算結果,設計完成后要求每人上交一份課程設計說明書,說明書要求包含有課程設計任務書,各文件的說明,各文件里關鍵語句的說明。說明書要

2、求字跡工整、敘述清楚。5、 發揮部分,如時間可行,增加設計成為一個完整的項目(附加一個命令文件和一個向量表文件)。并驗證結果。6、 時間:一周。完 成 期 限: 2013.12.30-2014.01.10 指導教師簽名: 課程負責人簽名: 2013 年 12 月 30 日11 / 13文檔可自由編輯打印目 錄摘要11 正余弦的泰勒級數展開式22 存儲空間分配33 迭代法計算正弦值43.1流程圖43.2、程序64 復位向量文件和鏈接文件84.1、復位向量84.2、鏈接85 調試96 總結11參考文獻11摘 要正弦作為一種數學方法,在科研和平時的數據處理方面應用的很廣泛。尤其是在通信、儀器儀表和工

3、業控制等領域應用更為廣泛。在科技高速發展的今天,對函數的計算不僅要求有很高的精度,還對計算的時間又很高的要求,必須在很短的時間內完成數據的處理,否則根本不能完成大批量數據的實時性計算和處理。介于DSP芯片運算速度快的特點,用DSP芯片完成這些算法已越來越受到重視。通常有兩種方法可以產生正弦波,分別是查表法和泰勒級數展開法。查表法應用于精度要求不很高的場合,而泰勒級數展開法是一種比查表法更為有效的方法。它能精確的計算出一個角度的正弦和余弦值,且占用的儲存空間較小,體現了它的優越性。關鍵詞:sin函數 算法1 正余弦的泰勒級數展開式高等數學中,正弦函數和余弦函數可以展開的泰勒級數,其表達試如下:

4、(1) (2)若要計算一個角度x的正弦和余弦值,可取泰勒級數的前五項進行計算。 (3) (4)由式(3)和(4)可得導出遞推公式,即由遞推公式可以看出,在計算正弦和余弦值時,不僅需要已知cos(x),而且需要、和。2 存儲空間分配在正弦函數的計算程序所需要的存儲空間有四個已初始化的數據段table_s與若干個程序段組成的已初始化段和九個存儲空間未初始化段,分別為:d_xs、d_squr_xs、d_temp_s、d_sinx、c_1_s、d_coef_s(4個存儲空間)。其存儲空間分布如下: 數據存儲空間程序存儲空間d_xsd_squr_xsd_temp_sd_sinxc_1_sd_coef_s

5、table_sxx2Sin(x)7FFFH(C1=01C7H)(C2=030BH)(C3=0666H)(C4=1556H)C1=1/(8*9)C2=1/(6*7)C3=1/(4*5)C1=1/(2*3)計算正弦值存儲單元分配 3 迭代法計算正弦值3.1流程圖d_temp_s=A=1-d_temp_s*T=d_empty_sB=A*TSin(x)=d_temp_sd_temp_s=B迭代法正弦值的計算流程圖其中隨迭代次數的變化而變化=、=、=、=(1) 執行第一次迭代:|DL*AR5,BMASR *AR3+,*AR2+,B,A MPYA A STH A,*AR3 執行結果:d_temp_s= (

6、2) 執行第二次迭代:MASR *AR3-,*AR2+,B,AMPYA *AR3+ STB,*AR3執行結果:d_temp_s= 執行第三次迭代:|DL*AR5,BMASR *AR3-,*AR2+,B,A MPYA *AR3+ ST B,*AR3執行結果:d_temp_s= 執行第四次迭代:|DL*AR5,BMASR *AR3-,*AR2+,B,ASTM#d_xs,AR3執行結果:d_temp_s= 即可粗略的求的sinx的值為d_temp_s中的值3.2、程序.title"sin.asm".mmregs.defstart.refsin_start,d_xs,d_sinxS

7、TACK: .usect"STACK",10H ;定義堆棧空間Start:STM#STACK+10,SP ;給堆棧指針賦值棧頂 LD#d_xs,DPST#6487H,d_xsCALLsin_startend:Bendsin_start:.defsin_startD_coef_s.usect"coef_s",4.dataTable_s: .word 01C7H ;C1=01C7H.word 030bH ;C2=030bH.word 0666H ;C3=0666H.word 1556H ;C4=1556Hd_xs .usect "sin_vars&

8、quot;,1 ;定義未初始化段d_squr_xs .usect "sin_vars",1d_temp_s .usect "sin_vars",1d_sinx .usect "sin_vars",1c_1_s .usect "sin_vars",1.text SSBXFRCT ;設置小數乘法STM #d_coff_s,AR4 RPT#3MVPD#table_s,*AR4+ ;c1=1/72,c2=1/42,c3=1/20 ;c4=1/6STM#d_coef_s,AR2STM #d_xs,AR3 STM #c_1_s

9、,AR5 ;AR5指向C_1_SST#7FFFH,c_1_sSQUR*AR3+,A ;求x的平方值STA,*AR3 ;把x平方值放入(AR3)|DL*AR5,B ;B=1MASR *AR3+,*AR2+,B,A ;A=(1-x2)/72 ;T = x2MPYA A ; A=x2(1-x2)/72STH A,*AR3 ; AR3=d_temp_s= x2(1-x2)/72MASR *AR3-,*AR2+,B,A ; A = 1-x2/42(1-x2/72) ; T =x2(1-x2/72)MPYA *AR3+ ; B = X2(1-x2/42(1-x2/72)STB,*AR3 ; AR3=d_t

10、emp_s=B|DL*AR5,BMASR *AR3-,*AR2+,B,A ;A=1-x2/20(1-x2/42(1-x2/72) MPYA *AR3+ ;B=(1-x2/20(1-x2/42(1-x2/72)*x2 ST B,*AR3 ; d_temp_s= B = (1-x2/20(1-x2/42(1-x2/72)*x2|DL*AR5,BMASR *AR3-,*AR2+,B,A ;A=1-x2/6(1-x2/20(1-x2/42(1-x2/72)*x2STM#d_xs,AR3MPYAAR3;B=x(1-x2/6(1-x2/20(1-x2/42(1-x2/72)*x2)STH B, d_sin

11、x ; d_sinx=b 的出結果RET.end4 復位向量文件和鏈接文件4.1、復位向量程序中所用的復位向量文件如下:.sect ".vectors" .ref start ; C entry point .align 0x80 ; must be aligned on page boundaryRESET: ; reset vector BD start ; branch to C entry point .end4.2、鏈接鏈接命令文件是將鏈接的信息放在一個文件中,這在多次使用同樣的鏈接信息時,可以方便地調用。在命令文件中可使用兩個十分有用的偽指令MEMORY和SEC

12、TIONS,用來指定實際應用中的存儲器結構和地址的映射。在命令行中不能使用這兩個偽指令,命令文件為ASC文件,可包含一下內容:(1)輸入文件名,用來指定目標文件、存檔庫或其他命令文件。注意,當命令文件調用其他文件時,該調用語句必須是最后一句,連接器不能從被調用的命令文件中返回。(2)連接器選項,他們在命令文件中的使用方法于在命令行中相同。(3)MEMORY和SECTIONS鏈接偽指令,MEMORY用來指定目標存儲器結構,SECTIONS用來控制段的構成于地址分配程序中所用到的鏈接文件如下:vectors.objsinx.obj-o a1.out-ma1.map-estartMEMORY PAG

13、E 0: EPROG: origin = 0x1400, len = 0x7c00 VECT: origin = 0xff80, len = 0x80 PAGE 1: USERREGS: origin = 0x60, len = 0x1c BIOSREGS: origin = 0x7c, len = 0x4 IDATA: origin = 0x80, len = 0x1380 EDATA: origin = 0x1400, len = 0x8000 EDATA1: origin = 0x9400, len = 0x4c00SECTIONS .vectors: > VECT PAGE 0

14、.sysregs: > BIOSREGS PAGE 1 .data: > EPROG PAGE 0 .text: > EPROG PAGE 0 .cinit: > EPROG PAGE 0 .pinit: > EPROG PAGE 0 .sysinit: > EPROG PAGE 0 .stack: > IDATA PAGE 1 .bss: > IDATA PAGE 1 .sin_vars: > IDATA PAGE 15 調試第一次疊代計算結果:A=004E4510A4B=007FFF0000T=4EF3AR2=0061AR3=1428AR4=0094SP=0089第二次疊代計算結果:A=007E230000B=004DCCCA72T=4EF3AR2=0093AR3=0095AR4=0094SP=0089第三次疊代計算結果:A=00

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論