一、?設計目的:
1、?了解數字波形產生的原理;
2、?學習用DSP產生各種波形的基本方法和步驟;
3、?掌握DSP與D/A轉換器接口的使用。
二、?設計設備
計算機、DSP仿真器、ZSEED-DTK6713實驗箱、20M示波器
三、?設計原理
波形產生是DSP的重要應用之一。而正弦信號發生器的設計則是波形產生應用的一個重要方面,它在通信領域有著廣泛的應用。
通常有兩種方法可以產生正弦波,分別為查表法和泰勒級數展開法。
查表法是通過查表的方式來實現正弦波,主要用于對精度要求不很高的場合。
泰勒級數展開法是根據泰勒展開式進行計算來實現正弦信號,它能精確地計算出一個角度的正弦和余弦值,且只需要較小的存儲空間。
本次主要用泰勒級數展開法來實現正弦波信號。
產生正弦波的算法
正弦函數和余弦函數可以展開成泰勒級數,其表達式:
?
?
?
?
?
取泰勒級數的前5項,得近似計算式:
?
?
?
?
?
?
?
?
?
遞推公式:
sin(nx) = 2cos(x)sin[(n-1)x]-sin[(n-2)x]
cos(nx) = 2cos(x)sin[(n-1)x]-cos[(n-2)x] ??
由遞推公式可以看出,在計算正弦和余弦值時,需要已知cos(x)、sin(n-1)x、sin(n-2)x和cos(n-2)x。
為了減少使用的存儲器,可以采用正弦信號的對稱性,復制90~180度的正弦值和180~360度的正弦值。
余弦信號的產生同樣可以采用多種方法產生。一是采用公式計算得到,二是采用正弦信號變換得到。
方波信號產生可以通過輪流輸出兩個不同大小的數值通過A/D轉換得到。
四、?設計內容
?本設計題目以TMS320C54x DSP為目標器件,設計并實現基于迭代法的“正弦序列生成”算法及其DSP程序。
設計步驟:
1、?熟悉正弦信號發生器的算法以及在DSP系統的實現
2、?熟悉A/D轉換的原理及實驗箱的鏈接
3、?掌握A/D轉換的程序的編寫
4、?編寫DSP的正弦信號發生器的程序
5、?編寫定時程序產生100HZ、1KHZ、10KHZ的正弦、余弦以及100K、1M的方波信號,每種類型的波形單周期360個點。
6、?編寫按鍵程序,控制輸出。用三個撥碼開關對DSP進行輸入,輸入的0~7對應的8種不同的波形。
7、?用示波器觀察各個波形
8、?分析波形失真的原因。
五、?實驗步驟
1. 熟悉本實驗原理。
2. 閱讀本實驗樣例程序。
3.?依次連接主板上的PC10、PC11、TP32到PC15、PC16、GND;依次連接主板上的PC13、PC14、M58到插板上的DJ0、DJ1、S12。
4. 將計算機與ZSEED-DTK6713實驗箱通過并口P1相連。
5. 運行CCS軟件客戶軟件\DSP程序\test19,通過插板上的JP1,JP2,JP3來選擇不同的波形。
6. 用示波器觀察DA0的輸出波形。
?
六、設計的硬件結構框圖
?
?
?
?
?
七、?實驗代碼
???先計算0~45°(間隔為0.5°)的sin和cos值,在利用sin2a=2sina*cosa求出sin值(間隔為1°)。然后,通過復制,獲得0~359°的正弦值。重復向PA口輸出,便可得到正弦波。
?
?
?
?
1、?了解數字波形產生的原理;
2、?學習用DSP產生各種波形的基本方法和步驟;
3、?掌握DSP與D/A轉換器接口的使用。
二、?設計設備
計算機、DSP仿真器、ZSEED-DTK6713實驗箱、20M示波器
三、?設計原理
波形產生是DSP的重要應用之一。而正弦信號發生器的設計則是波形產生應用的一個重要方面,它在通信領域有著廣泛的應用。
通常有兩種方法可以產生正弦波,分別為查表法和泰勒級數展開法。
查表法是通過查表的方式來實現正弦波,主要用于對精度要求不很高的場合。
泰勒級數展開法是根據泰勒展開式進行計算來實現正弦信號,它能精確地計算出一個角度的正弦和余弦值,且只需要較小的存儲空間。
本次主要用泰勒級數展開法來實現正弦波信號。
產生正弦波的算法
正弦函數和余弦函數可以展開成泰勒級數,其表達式:
?
?
?
?
?
取泰勒級數的前5項,得近似計算式:
?
?
?
?
?
?
?
?
?
遞推公式:
sin(nx) = 2cos(x)sin[(n-1)x]-sin[(n-2)x]
cos(nx) = 2cos(x)sin[(n-1)x]-cos[(n-2)x] ??
由遞推公式可以看出,在計算正弦和余弦值時,需要已知cos(x)、sin(n-1)x、sin(n-2)x和cos(n-2)x。
為了減少使用的存儲器,可以采用正弦信號的對稱性,復制90~180度的正弦值和180~360度的正弦值。
余弦信號的產生同樣可以采用多種方法產生。一是采用公式計算得到,二是采用正弦信號變換得到。
方波信號產生可以通過輪流輸出兩個不同大小的數值通過A/D轉換得到。
四、?設計內容
?本設計題目以TMS320C54x DSP為目標器件,設計并實現基于迭代法的“正弦序列生成”算法及其DSP程序。
設計步驟:
1、?熟悉正弦信號發生器的算法以及在DSP系統的實現
2、?熟悉A/D轉換的原理及實驗箱的鏈接
3、?掌握A/D轉換的程序的編寫
4、?編寫DSP的正弦信號發生器的程序
5、?編寫定時程序產生100HZ、1KHZ、10KHZ的正弦、余弦以及100K、1M的方波信號,每種類型的波形單周期360個點。
6、?編寫按鍵程序,控制輸出。用三個撥碼開關對DSP進行輸入,輸入的0~7對應的8種不同的波形。
7、?用示波器觀察各個波形
8、?分析波形失真的原因。
五、?實驗步驟
1. 熟悉本實驗原理。
2. 閱讀本實驗樣例程序。
3.?依次連接主板上的PC10、PC11、TP32到PC15、PC16、GND;依次連接主板上的PC13、PC14、M58到插板上的DJ0、DJ1、S12。
4. 將計算機與ZSEED-DTK6713實驗箱通過并口P1相連。
5. 運行CCS軟件客戶軟件\DSP程序\test19,通過插板上的JP1,JP2,JP3來選擇不同的波形。
6. 用示波器觀察DA0的輸出波形。
?
六、設計的硬件結構框圖
?
?
?
?
?
七、?實驗代碼
???先計算0~45°(間隔為0.5°)的sin和cos值,在利用sin2a=2sina*cosa求出sin值(間隔為1°)。然后,通過復制,獲得0~359°的正弦值。重復向PA口輸出,便可得到正弦波。
?
?
?
?
? .mmregs
.global main
.def start
.ref d_xs,d_sinx,d_xc,d_cosx,sinx,cosx
sin_x: ????.usect "sin_x",360
cos_x: ????.usect "cos_x",360
fangbo: ?.usect "fangbo",360
STACK: ????.usect "STACK",10H
k_theta???.set 286
TIM0 .set 0024H
PRD0 .set 0025H
TCR0 .set 0026H
PA ?? .set 0100H
.text
start: ????
?;產生正弦波數據
???????STM ?????k_theta,AR0
???????STM ?????#0,AR1
???????STM ?????#sin_x,AR6
???????STM ?????#90,BRC
???????RPTB ? loop1-1
???????LDM ?????AR1,A
???????LD ??? #d_xs,DP
???????STL ?????A,@d_xs
???????STL ?????A,@d_xc
???????CALL ? sinx
???????CALL ? cosx
???????LD ??? #d_sinx,DP
???????LD ??? @d_sinx,16,A
???????MPYA ? @d_cosx
???????STH ?????B,1,*AR6+
???????MAR ?????*AR1+0
loop1:?STM ????#sin_x+89,AR7
???????STM ?????#88,BRC
???????RPTB ? loop2-1
???????LD ??? *AR7-,A
???????STL ?????A,*AR6+
loop2: ???STM ?????#179,BRC
???????STM ?????#sin_x,AR7
???????RPTB ? loop3-1
???????LD ??? *AR7+,A
???????NEG ?????A
???????STL ?????A,*AR6+
loop3:STM ???#sin_x+89,AR6
???STM ?????#cos_x,AR7
?????????STM ?????#269,BRC ????????????
?????????RPTB ? lcos-1 ?????????
?????????LD ??? *AR6+,A
???????STL ?????A,*AR7+
lcos: ???STM ?????#sin_x,AR6
??????STM ?????#89,BRC ????????????
?????????RPTB ? loop4-1 ?????????
?????????LD ??? *AR6+,A
???????STL ?????A,*AR7+
?
;產生方波數據
?
loop4: STM ??#fangbo,AR6
???????STM ?????#179,BRC ????????????
??????? RPTB ? ?lfangbo-1 ?????????
??????? LD ??? ?#7FFFH,A
???????STL ?????A,*AR6+
lfangbo:
STM ?????#179,BRC ????????????
??????? RPTB ? ?main-1 ?????????
??????? LD ??? ?#0H,A
???????STL ?????A,*AR6+
?
main: ?
STM ? #0,SWWSR
STM #STACK+10H,SP
STM #3FA0H,PMST
STM #0010H,TCR0
STM #0260H,TCR0
STM #0008H,IFR
STM #0008H,IMR
RSBX INTM
?
PORTR ? PA,*AR2
??????
?????? LD *AR2,A
?????? AND #01B,A
?????? BC fangbo_1m,ANEQ
?????? LD *AR2,A
?????? AND #010B,A
?????? BC fangbo_100k,ANEQ
?????? LD *AR2,A
?????? AND #0100B,A
?????? BC sin_10k,ANEQ
?????? LD *AR2,A
?????? AND #01000B,A
?????? BC sin_1k,ANEQ
?????? LD *AR2,A
?????? AND #010000B,A
?????? BC sin_100,ANEQ
?????? LD *AR2,A
?????? AND #0100000B,A
?????? BC cos_10k,ANEQ
?????? LD *AR2,A
?????? AND #01000000B,A
?????? BC cos_1k,ANEQ
?????? LD *AR2,A
?????? AND #10000000B,A
?????? BC cos_100,ANEQ
??????
end: B end
?
?
fangbo_1m:
STM #10,TIM0
STM #10,PRD0
STM #fangbo,AR3
B main
fangbo_100k:
STM #110,TIM0
STM #110,PRD0
STM #fangbo,AR3
B main
sin_10k:
STM #2,TIM0
STM #2,PRD0
STM #sin_x,AR3
B main
sin_1k:
STM #30,TIM0
STM #30,PRD0
STM #sin_x,AR3
B main
sin_100:
STM #306,TIM0
STM #306,PRD0
STM #sin_x,AR3
B main
cos_10k:
STM #2,TIM0
STM #2,PRD0
STM #sin_x,AR3
B main
cos_1k:
STM #30,TIM0
STM #30,PRD0
STM #sin_x,AR3
B main
cos_100:
STM #306,TIM0
STM #306,PRD0
STM #sin_x,AR3
B main
?
;定時器中斷輸出
TINT_T0:
??????? STM ???? #1,AR0
??????? STM ????? #360,BK ??????
loop: PORTW *AR3+0%,PA
B loop
RETE
?
?
?
?
sinx: ??????????????????????????????
??????? .def ?d_xs,d_sinx
???????
??????? .data
table_s ?? .word 01c7h ??????????;c1=1/(8*9)
??????? .word 030bh ??????????;c2=1/(6*7)
??????? .word 0666h ??????????;c3=1/(4*5)
??????? .word 1556h ??????????;c4=1/(2*3)
coef_s ? .usect ??"coef_s",4
d_xs ?? .usect ??"sin_vars",1
squr_xs ?? .usect ??"sin_vars",1
temp_s .usect ??"sin_vars",1
d_sinx .usect ??"sin_vars",1
l_s ??? .usect ??"sin_vars",1
???????.text
???????SSBX ? FRCT
???????STM ?????#coef_s,AR5
???????RPT ?????#3
???????MVPD ? #table_s,*AR5+
???????STM ?????#coef_s,AR3
???????STM ?????#d_xs,AR2
???????STM ?????#l_s,AR4
???????ST ??? #7FFFH,l_s
???????SQUR ? *AR2+,A
???????ST ??? A,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2+,*AR3+,B,A
???????MPYA ? A
???????STH ?????A,*AR2
???????MASR ? *AR2-,*AR3+,B,A
???????MPYA ? *AR2+
???????ST ??? B,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2-,*AR3+,B,A
???????MPYA ? *AR2+
???????ST ??? B,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2-,*AR3+,B,A
???????MPYA ? d_xs
???????STH ?????B,d_sinx
???????RET
?
?
cosx:
??????? .def ?d_xc,d_cosx
??????? .data
table_c ?? .word 0249h ?????? ??;c1=1/(8*7)
??????? .word 0444h ??????????;c2=1/(6*5)
??????? .word 0aabh ??????????;c3=1/(4*3)
??????? .word 4000h ??????????;c4=1/(2*1) ??????
coef_c .usect ??"coef_c",4
d_xc ?? .usect ??"cos_vars",1
squr_xc ?? .usect ??"cos_vars",1
temp_c .usect ??"cos_vars",1
d_cosx .usect ??"cos_vars",1
l_c ??? .usect ??"cos_vars",1
???????.text
???????SSBX ? FRCT
???????STM ?????#coef_c,AR5
???????RPT ?????#3
???????MVPD ? #table_c,*AR5+
???????STM ?????#coef_c,ar3
???????STM ?????#d_xc,AR2
???????STM ?????#l_c,AR4
???????ST ??? #7FFFH,l_c
???????SQUR ? *AR2+,A
???????ST ??? A,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2+,*AR3+,B,A
???????MPYA ? A
???????STH ?????A,*AR2
???????MASR ? *AR2-,*AR3+,B,A
???????MPYA ? *AR2+
???????ST ??? B,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2-,*AR3+,B,A
???????SFTA ? A,-1,A
???????NEG ?????A
???????MPYA ? *AR2+
???????MAR ?????*AR2+
???????RETD
???????ADD ?????*AR4,16,B
???????
???????STH ?????B,*AR2
???????RET
?
????????.sect ".vectors"
?
????????.align ?0x80 ??????????; must be aligned on page boundary
?
RESET: ?????????????????????????; reset vector
????????BD main ????????????????; branch to C entry point
????????STM #200,SP ????????????; stack size of 200
nmi: ???RETE ?????????????????; enable interrupts and return from one
???????NOP
???????NOP
???????NOP ?????????????????????????????;NMI~
?
???; software interrupts
sint17 .space 4*16
sint18 .space 4*16
sint19 .space 4*16
sint20 .space 4*16
sint21 .space 4*16
sint22 .space 4*16
sint23 .space 4*16
sint24 .space 4*16
sint25 .space 4*16
sint26 .space 4*16
sint27 .space 4*16
sint28 .space 4*16
sint29 .space 4*16
sint30 .space 4*16
?
int0: ??RETE
????????????????NOP
????????????????NOP
????????????????NOP
int1: ??RETE
????????????????NOP
????????????????NOP
????????????????NOP
int2: ??RETE
????????????????NOP
????????????????NOP
????????????????NOP
tint: ??B ? TINT_T0
????????????????NOP
????????????????NOP
????????????????NOP
rint0: ?RETE
????????????????NOP
????????????????NOP
????????????????NOP
xint0: ?RETE
????????????????NOP
????????????????NOP
????????????????NOP
rint1: ?RETE
????????????????NOP
????????????????NOP
????????????????NOP
xint1: ?RETE
????????????????NOP
????????????????NOP
????????????????NOP
int3: ??RETE
????????????????NOP
????????????????NOP
????????????????NOP
????????????????.end
.global main
.def start
.ref d_xs,d_sinx,d_xc,d_cosx,sinx,cosx
sin_x: ????.usect "sin_x",360
cos_x: ????.usect "cos_x",360
fangbo: ?.usect "fangbo",360
STACK: ????.usect "STACK",10H
k_theta???.set 286
TIM0 .set 0024H
PRD0 .set 0025H
TCR0 .set 0026H
PA ?? .set 0100H
.text
start: ????
?;產生正弦波數據
???????STM ?????k_theta,AR0
???????STM ?????#0,AR1
???????STM ?????#sin_x,AR6
???????STM ?????#90,BRC
???????RPTB ? loop1-1
???????LDM ?????AR1,A
???????LD ??? #d_xs,DP
???????STL ?????A,@d_xs
???????STL ?????A,@d_xc
???????CALL ? sinx
???????CALL ? cosx
???????LD ??? #d_sinx,DP
???????LD ??? @d_sinx,16,A
???????MPYA ? @d_cosx
???????STH ?????B,1,*AR6+
???????MAR ?????*AR1+0
loop1:?STM ????#sin_x+89,AR7
???????STM ?????#88,BRC
???????RPTB ? loop2-1
???????LD ??? *AR7-,A
???????STL ?????A,*AR6+
loop2: ???STM ?????#179,BRC
???????STM ?????#sin_x,AR7
???????RPTB ? loop3-1
???????LD ??? *AR7+,A
???????NEG ?????A
???????STL ?????A,*AR6+
loop3:STM ???#sin_x+89,AR6
???STM ?????#cos_x,AR7
?????????STM ?????#269,BRC ????????????
?????????RPTB ? lcos-1 ?????????
?????????LD ??? *AR6+,A
???????STL ?????A,*AR7+
lcos: ???STM ?????#sin_x,AR6
??????STM ?????#89,BRC ????????????
?????????RPTB ? loop4-1 ?????????
?????????LD ??? *AR6+,A
???????STL ?????A,*AR7+
?
;產生方波數據
?
loop4: STM ??#fangbo,AR6
???????STM ?????#179,BRC ????????????
??????? RPTB ? ?lfangbo-1 ?????????
??????? LD ??? ?#7FFFH,A
???????STL ?????A,*AR6+
lfangbo:
STM ?????#179,BRC ????????????
??????? RPTB ? ?main-1 ?????????
??????? LD ??? ?#0H,A
???????STL ?????A,*AR6+
?
main: ?
STM ? #0,SWWSR
STM #STACK+10H,SP
STM #3FA0H,PMST
STM #0010H,TCR0
STM #0260H,TCR0
STM #0008H,IFR
STM #0008H,IMR
RSBX INTM
?
PORTR ? PA,*AR2
??????
?????? LD *AR2,A
?????? AND #01B,A
?????? BC fangbo_1m,ANEQ
?????? LD *AR2,A
?????? AND #010B,A
?????? BC fangbo_100k,ANEQ
?????? LD *AR2,A
?????? AND #0100B,A
?????? BC sin_10k,ANEQ
?????? LD *AR2,A
?????? AND #01000B,A
?????? BC sin_1k,ANEQ
?????? LD *AR2,A
?????? AND #010000B,A
?????? BC sin_100,ANEQ
?????? LD *AR2,A
?????? AND #0100000B,A
?????? BC cos_10k,ANEQ
?????? LD *AR2,A
?????? AND #01000000B,A
?????? BC cos_1k,ANEQ
?????? LD *AR2,A
?????? AND #10000000B,A
?????? BC cos_100,ANEQ
??????
end: B end
?
?
fangbo_1m:
STM #10,TIM0
STM #10,PRD0
STM #fangbo,AR3
B main
fangbo_100k:
STM #110,TIM0
STM #110,PRD0
STM #fangbo,AR3
B main
sin_10k:
STM #2,TIM0
STM #2,PRD0
STM #sin_x,AR3
B main
sin_1k:
STM #30,TIM0
STM #30,PRD0
STM #sin_x,AR3
B main
sin_100:
STM #306,TIM0
STM #306,PRD0
STM #sin_x,AR3
B main
cos_10k:
STM #2,TIM0
STM #2,PRD0
STM #sin_x,AR3
B main
cos_1k:
STM #30,TIM0
STM #30,PRD0
STM #sin_x,AR3
B main
cos_100:
STM #306,TIM0
STM #306,PRD0
STM #sin_x,AR3
B main
?
;定時器中斷輸出
TINT_T0:
??????? STM ???? #1,AR0
??????? STM ????? #360,BK ??????
loop: PORTW *AR3+0%,PA
B loop
RETE
?
?
?
?
sinx: ??????????????????????????????
??????? .def ?d_xs,d_sinx
???????
??????? .data
table_s ?? .word 01c7h ??????????;c1=1/(8*9)
??????? .word 030bh ??????????;c2=1/(6*7)
??????? .word 0666h ??????????;c3=1/(4*5)
??????? .word 1556h ??????????;c4=1/(2*3)
coef_s ? .usect ??"coef_s",4
d_xs ?? .usect ??"sin_vars",1
squr_xs ?? .usect ??"sin_vars",1
temp_s .usect ??"sin_vars",1
d_sinx .usect ??"sin_vars",1
l_s ??? .usect ??"sin_vars",1
???????.text
???????SSBX ? FRCT
???????STM ?????#coef_s,AR5
???????RPT ?????#3
???????MVPD ? #table_s,*AR5+
???????STM ?????#coef_s,AR3
???????STM ?????#d_xs,AR2
???????STM ?????#l_s,AR4
???????ST ??? #7FFFH,l_s
???????SQUR ? *AR2+,A
???????ST ??? A,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2+,*AR3+,B,A
???????MPYA ? A
???????STH ?????A,*AR2
???????MASR ? *AR2-,*AR3+,B,A
???????MPYA ? *AR2+
???????ST ??? B,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2-,*AR3+,B,A
???????MPYA ? *AR2+
???????ST ??? B,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2-,*AR3+,B,A
???????MPYA ? d_xs
???????STH ?????B,d_sinx
???????RET
?
?
cosx:
??????? .def ?d_xc,d_cosx
??????? .data
table_c ?? .word 0249h ?????? ??;c1=1/(8*7)
??????? .word 0444h ??????????;c2=1/(6*5)
??????? .word 0aabh ??????????;c3=1/(4*3)
??????? .word 4000h ??????????;c4=1/(2*1) ??????
coef_c .usect ??"coef_c",4
d_xc ?? .usect ??"cos_vars",1
squr_xc ?? .usect ??"cos_vars",1
temp_c .usect ??"cos_vars",1
d_cosx .usect ??"cos_vars",1
l_c ??? .usect ??"cos_vars",1
???????.text
???????SSBX ? FRCT
???????STM ?????#coef_c,AR5
???????RPT ?????#3
???????MVPD ? #table_c,*AR5+
???????STM ?????#coef_c,ar3
???????STM ?????#d_xc,AR2
???????STM ?????#l_c,AR4
???????ST ??? #7FFFH,l_c
???????SQUR ? *AR2+,A
???????ST ??? A,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2+,*AR3+,B,A
???????MPYA ? A
???????STH ?????A,*AR2
???????MASR ? *AR2-,*AR3+,B,A
???????MPYA ? *AR2+
???????ST ??? B,*AR2
???????||LD ? *AR4,B
???????MASR ? *AR2-,*AR3+,B,A
???????SFTA ? A,-1,A
???????NEG ?????A
???????MPYA ? *AR2+
???????MAR ?????*AR2+
???????RETD
???????ADD ?????*AR4,16,B
???????
???????STH ?????B,*AR2
???????RET
?
????????.sect ".vectors"
?
????????.align ?0x80 ??????????; must be aligned on page boundary
?
RESET: ?????????????????????????; reset vector
????????BD main ????????????????; branch to C entry point
????????STM #200,SP ????????????; stack size of 200
nmi: ???RETE ?????????????????; enable interrupts and return from one
???????NOP
???????NOP
???????NOP ?????????????????????????????;NMI~
?
???; software interrupts
sint17 .space 4*16
sint18 .space 4*16
sint19 .space 4*16
sint20 .space 4*16
sint21 .space 4*16
sint22 .space 4*16
sint23 .space 4*16
sint24 .space 4*16
sint25 .space 4*16
sint26 .space 4*16
sint27 .space 4*16
sint28 .space 4*16
sint29 .space 4*16
sint30 .space 4*16
?
int0: ??RETE
????????????????NOP
????????????????NOP
????????????????NOP
int1: ??RETE
????????????????NOP
????????????????NOP
????????????????NOP
int2: ??RETE
????????????????NOP
????????????????NOP
????????????????NOP
tint: ??B ? TINT_T0
????????????????NOP
????????????????NOP
????????????????NOP
rint0: ?RETE
????????????????NOP
????????????????NOP
????????????????NOP
xint0: ?RETE
????????????????NOP
????????????????NOP
????????????????NOP
rint1: ?RETE
????????????????NOP
????????????????NOP
????????????????NOP
xint1: ?RETE
????????????????NOP
????????????????NOP
????????????????NOP
int3: ??RETE
????????????????NOP
????????????????NOP
????????????????NOP
????????????????.end
2、cmd文件代碼如下:說明系統中有哪些可用存儲器、程序段、堆棧及復位向量和中斷向量等安排在什么地方。其中MEMORY段就是用來規定目標存儲器的模型,通過這條指令,可以定義系統中所包含的各種形式的存儲器,以及它們占據的地址范圍;SECTIONS段說明如何將輸入段組合成輸出段以及在可執行文件中定義輸出段、規定輸出段在存儲器中的位置等。
????????-c
boxing.obj
-o ?boxing.out
-m ?boxing.map
-e start
?
MEMORY
{
PAGE 0: EPROM :origin=0E000h,length=1000h
??????????VECS ????:origin=0FF80h,length=0080h
PAGE 1: SPRAM :origin=0060h,length=0020h
?? DARAM1 :origin=0080h,length=0010h
?? DARAM2 :origin=0090h,length=0010h
?? DARAM3 :origin=0200h,length=0600h
??
}
SECTIONS
{
.text : {}>EPROM PAGE 0
.data ??: ??{}>EPROM PAGE 0
STACK : {}>SPRAM PAGE 1
sin_vars: ??{}>DARAM1 PAGE 1
coef_s : ??{}>DARAM1 PAGE 1
????cos_vars: {}>DARAM2 PAGE 1
????coef_c : {}>DARAM2 PAGE 1
????sin_x : ??align(512){} >DARAM3 PAGE 1
????cos_x : ??align(512){} >DARAM3 PAGE 1
????fangbo : ??align(512){} >DARAM3 PAGE 1
????.vectors: {}>VECS ? PAGE 0
???
?} ??
?
八、?設計結果以及結果分析
? | |
? | ? |
? | |
? |
?
? | |
? |
三種波形的圖如下:
?
?
?
?
?
?
?
?
?
?
?
?
九、實驗總結
通過本次課程設計,雖然設計的過程中遇到很多很難的問題,但是通過上網查找和向其他同學請教,不但解決所遇到的問題,而且還大大促進了設計進程。并在過程中進一步提高自身的創作能力和創新水平,鞏固理論基礎學習,擴展學習能力。另一方面通過此次課程設計,基于課程理論知識和網上資料,使我對數字信號處理課程和利用CCS軟件編程的數字信號處理方法有了進一步的了解。在理論課的基礎上進行實驗實習,是對本門課程的深入學習和掌握,在以后的工作學習中,數字信號的處理都是采用計算機仿真的方法進行測試,因此,掌握基于計算機的數字信號處理方法對以后的工作和學習有很大的幫助。這樣一個課程設計對我們的發展有著極大的幫助!
評論
查看更多