基于TMS320C54x_DSP的函数发生器的设计

  • 格式:pdf
  • 大小:181.07 KB
  • 文档页数:13

B
main
STM
STM
STM
B
main
STM STM
#2,TIM0 #2,PRD0
STM #sin_x,AR3 B main
*AR3+0%,PA B RETE loop
cos_1k: STM #30,TIM0 STM #30,PRD0 STM #sin_x,AR3 B cos_100: STM #306,TIM0 STM #306,PRD0 STM #sin_x,AR3 B main 1556h coef_s ;定时器中断输出 TINT_T0: STM #1,AR0 STM #360,BK "coef_s",4 d_xs "sin_vars",1 squr_xs "sin_vars",1 temp_s "sin_vars",1 loop: PORTW d_sinx .usect .usect .usect .usect 0666h 030bh 01c7h table_s main .data .word ;c1=1/(8*9) .word ;c2=1/(6*7) .word ;c3=1/(4*5) .word ;c4=1/(2*3) .usect d_xs,d_sinx sinx: .def
基于 TMS320C54x DSP 的函数发生器的设计
一、 设计目的:
1、 了解数字波形产生的原理; 2、 学习用 DSP 产生各种波形的基本方法和步骤; 3、 掌握 DSP 与 D/A 转换器接口的使用。
二、 设计设备
计算机、DSP 仿真器、ZYE1801B 实验箱、20M 示波器
三、 设计原理
波形产生是 DSP 的重要应用之一。而正弦信号发生器的设计则是波形产生应用的 一个重要方面,它在通信领域有着广泛的应用。 通常有两种方法可以产生正弦波,分别为查表法和泰勒级数展开法。 查表法是通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。 泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出 一个角度的正弦和余弦值,且只需要较小的存储空间。 本次主要用泰勒级数展开法来实现正弦波信号。 产生正弦波的算法 正弦函数和余弦函数可以展开成泰勒级数,其表达式:
*AR2,A #010B,A
*AR2,A
*AR2,A
*AR2,A
*AR2,A
AND #0100000B,A BC cos_10k,ANEQ LD AND #01000000B,A BC cos_1k,ANEQ LD AND #10000000B,A BC cos_100,ANEQ *AR2,A *AR2,A
@d_cosx B,1,*AR6+ *AR1+0 #sin_x+89,AR7 #88,BRC loop2-1 *AR7-,A A,*AR6+ #179,BRC
start:
loop3-1 *AR7+,A A A,*AR6+
k_theta,AR0
#sin_x+89,AR6
#sin_x,AR6
STM RPTB LD STL lcos: #sin_x,AR6 STM RPTB LD STL STM
ST ||LD MASR *AR2-,*AR3+,B,A MPYA STH RET
B,*AR2 *AR4,B
d_xs B,d_sinx
.def
.data .word 0249h
.word ;c2=1/(6*5) .word ;c3=1/(4*3) .word ;c4=1/(2*1)
.usect
.usectຫໍສະໝຸດ #110,PRD0 STM #fangbo,AR3 B sin_10k: STM STM STM #sin_x,AR3 B main #2,TIM0 #2,PRD0 main
sin_1k: STM #30,TIM0 STM
end:
B
end
#30,PRD0 STM #sin_x,AR3
fangbo_1m: STM #10,TIM0 STM #10,PRD0 STM #fangbo,AR3 B fangbo_100k: STM #110,TIM0 STM cos_10k: main #sin_x,AR3 #306,PRD0 #306,TIM0 sin_100:
RETD ADD *AR4,16,B
STH RET
B,*AR2
.sect ".vectors"
.align ; must be aligned on
; reset vector BD ; branch to C
STM ; stack size of
STM RPTB LDM LD STL STL CALL CALL LD LD
#90,BRC loop1-1 AR1,A #d_xs,DP A,@d_xs A,@d_xc sinx cosx #d_sinx,DP
MPYA STH MAR loop1: STM STM RPTB LD STL STM STM .text #sin_x,AR7 RPTB ;产生正弦波数据 STM LD NEG STL STM STM #0,AR1 loop3:STM STM #cos_x,AR7
四、 设计内容
本设计题目以 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、分析波形失真的原因。
.usect
.usect
d_cosx "cos_vars",1 l_c "cos_vars",1
.usect
SFTA NEG
A,-1,A A *AR2+ *AR2+
.usect
MPYA MAR
.text SSBX STM #coef_c,AR5 RPT MVPD #table_c,*AR5+ STM #coef_c,ar3 STM STM ST SQUR ST ||LD MASR *AR2+,*AR3+,B,A MPYA STH MASR *AR2-,*AR3+,B,A MPYA ST ||LD MASR *AR2-,*AR3+,B,A *AR2+ B,*AR2 *AR4,B RETE A A,*AR2 #200,SP 200 nmi: #d_xc,AR2 #l_c,AR4 #7FFFH,l_c *AR2+,A A,*AR2 *AR4,B main entry point RESET: 0x80 page boundary #3 FRCT
五、 实验步骤
1. 熟悉本实验原理。 2. 阅读本实验样例程序。 3. 依次连接主板上的 PC10、PC11、TP32 到 PC15、PC16、GND;依次连接主板上的 PC13、PC14、M58 到插板上的 DJ0、DJ1、S12。 4. 将计算机与 ZYE1801C 实验箱通过并口 P1 相连。 5. 运行 CCS 软件客户软件\DSP 程序\test19,通过插板上的 JP1,JP2,JP3 来选择 不同的波形。 6. 用示波器观察 DA0 的输出波形。
x3 x5 x7 x9 sin( x) x 3! 5! 7! 9! x 2 x 4 x 6 x8 cos( x) 1 2! 4! 6! 8!
取泰勒级数的前 5 项,得近似计算式:
x3 x5 x7 x9 sin( x) x 3! 5! 7! 9! x2 x2 x2 x2 x(1 (1 (1 (1 )))) 23 45 6 7 8 9
六、设计的硬件结构框图
DSP 芯片
3 位数字量输入 12 位数字量输出
D/A 转换器
模拟量输出
七、 实验代码
先计算 0~45°(间隔为 0.5°)的 sin 和 cos 值,在利用 sin2a=2sina*cosa 求出 sin 值(间隔为 1°)。然后,通过复制,获得 0~359°的正弦值。重复向 PA 口输出, 便可得到正弦波。
.mmregs .global .def .ref d_xs,d_sinx,d_xc,d_cosx,sinx,cos x sin_x: "sin_x",360 cos_x: "cos_x",360 fangbo: "fangbo",360 STACK: "STACK",10H k_theta TIM0 PRD0 TCR0 PA .set .set .set .set .set 286 0024H 0025H 0026H 0100H loop2: .usect .usect @d_sinx,16,A .usect .usect main start
#269,BRC lcos-1 *AR6+,A A,*AR7+
STM STM RSBX
#0008H,IFR #0008H,IMR INTM
PORTR
PA,*AR2
#89,BRC loop4-1 *AR6+,A A,*AR7+ fangbo_1m,ANEQ
LD AND BC
*AR2,A #01B,A
LD ;产生方波数据 AND BC loop4: STM #fangbo,AR6 STM RPTB LD STL lfangbo: STM RPTB LD STL #179,BRC main-1 #0H,A A,*AR6+ sin_1k,ANEQ main: STM STM STM STM STM #0,SWWSR #STACK+10H,SP #3FA0H,PMST #0010H,TCR0 #0260H,TCR0 sin_100,ANEQ LD #010000B,A BC LD AND #01000B,A BC #179,BRC lfangbo-1 #7FFFH,A A,*AR6+ sin_10k,ANEQ LD AND #0100B,A BC fangbo_100k,ANEQ LD AND