?? ti c54xx dsp 十天速成講義 二 .txt
字號:
TI C54xx DSP 十天速成講義 <二>
實驗二 基本運算
<本節選自為HK-DSP實驗箱寫的實驗指導書,有待整理>
DSP指令數量最多的是:算術指令、邏輯指令和數據加載與傳送指令。數據加載與傳送指令由于處處要用,所以不單獨列為實驗。算術與邏輯指令也是數量繁多,無法一一舉例,這里簡單舉一個加法和除法的例子,乘法和乘加指令在FIR用得比較多,稍后一并介紹。其它指令有興趣可以對照指令表的說明,試驗一下各指令運行的結果。
實驗2.1 加減法計算
************************************************
*計算z=x+y-w。
************************************************
.mmregs
.def CodeStart
Data_DP: ;數據段指針
x: .word 10 ;初始化變量
y: .word 26
w: .word 23
z: .word 0
.text
CodeStart:
LD #Data_DP,DP ;裝載數據指針DP
STM #STACK+10H,SP
SUMB: LD x,A ;A=x
ADD y,A ;A=A+y
SUB w,A ;A=A-w
STL A,z ;z=A
END: B END
計算結果數據存儲器地址存儲內容十進制
x1010H000aH10
y1011H001aH26
w1012H0017H23
z1013H000dH13
技巧提示:試驗算術指令由于不需要外部資源,可以不需要仿真器和實驗箱。同學們可以平時自己用軟件仿真,多多實驗。但是復雜的算法最好還是在線仿真,因為程序是流水線執行,軟件仿真有時與實際硬件執行結果有所不同。
實驗2.2 除法計算
DSP并沒有除法指令,回想一下我們用在稿紙上演算除法列的豎式,實際是一種移位減法,DSP中也是通過做多次減法的辦法來做除法。下面例子是把用除以10的辦法二進制數轉成BCD碼例子:
*********************************
*16進制轉BCD碼
*********************************
.mmregs
.global CodeStart
.data
x: .word 1234 ;待轉換的數字
y: .word 10 ;除數
z: .word 0Fh,0Fh,0Fh,0Fh,0Fh;結果區,每位BCD存一個字,
;初始化為F因為實驗板的數碼管不顯示F
.text
CodeStart:
LD #x,DP ;設置DP
LD x,A ;被除數
STM #z,AR1 ;結果區指針
loop:
RPT #15 ;執行完16次減法后,A的高16位是余數
SUBC y,A ;低16位是商
STH A,*AR1+ ;余數保存到Z
AND #0FFFFH,A ;掩蓋掉高16位,保留商值
BC loop,ANEQ ;繼續做除法直到商為0
end: B end
練習:
練習其他算術指令
其它參考:
spru172c:TMS320C54x DSP Reference Set Volume 2: Mnemonic Instruction
Set,2.1 Arithmetic Operations
這個資料對每個指令都有詳細說明。也可以在Help中的TMS320C54x DSP Mnemonic Instruction
Set中查詢或搜索相關指令。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -