DSP课程设计_正弦信号发生器的设计
DSP原理及应用 课程设计 课题:正弦信号发生器的设计 班级:通信0802 姓名: 学号:2008001322 课题正弦信号发生器 一、设计目的 学会用CCS集成开发软件,在开发环境下完成工程项目创建,程序编辑, 编译,链接,调试和数据分析。 二、设计内容 用CCS软件编写程序产生正弦波 三、设计实现 正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。通常有两种方法可以产生正弦波,分别为杳表法和泰勒 级数展开法。查表法是通过查表的方式来实现正弦波,主要用于对精度要求 不很高的场合。泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号, 它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。 本次主要用泰勒级数展开法来实现正弦波信号。 产生正弦波的算法 正弦函数和余弦函数可以展开成泰勒级数,其表达式: ./ 、X X X X sm(x) = x11 3!5!7!9! 2468 z x . XXXX cos(x) = 111 2!4!6!8! 取泰勒级数的前5项,得近似计算式: X3 X5 X1 X9 sm(x) = XHH 3!5!7!9! 2 2 2 2 =X1-—(1-—(1-—(1-—)))) 2x34x56x78x9 cos(x) = 1 一 X X X X 11 2!4!6!8! 7x8 ))) 2 2 2 U-丄(1 2 3x4 5x6 递推公式: sin {nx) = 2cos (x) sin[(7?-l)x]-sin[ (t?-2)x] cos (tly) = 2cos (x) sin [(77-1) x]-cos [ (tt-2) x] 由递推公式可以看出,在计算正弦和余弦值时,需要已知cos(x)、sin(77_l)x、 sin (tt-2) x和 cos (tt-2) x。 计算一个角度X的正弦值,可利用泰勒级数的展开式,采用子程序的调 用方式来实现。在调用前先在数据存储器d_xs单元中存放X的弧度值,计算 结果存放在d sinx单元中 四、设计步骤 1、CCS软件的操作: (1) 建立工程:点击菜单project-new,在弹出的窗口中输入工程名,后缀 是.pjt; (2) 建立文件:点击菜单file-new-source file,建立汇编语言文件和链接命 令文件; (3) 将文件加入工程:点击菜单project-add files to project,选择要加入 的文件添加到工程; (4) 工程的汇编链接:点击菜单project-rebu订d all,若汇编链接成功会生 成.out文件; (5) 装载可执行程序:点击菜单file-lode program,装载.out文件; (6) 执行程序:点击菜单debug-run; (7) 观察结果。 2、注意事项: (1) 标号区分大小写,标号从第一列开始; (2) 星号(*)从第一列开始; (3) 指令助记符不能从第一列开始; (4) MEMORY 和 SECTIONS 要大写; (5) 在链接命令文件中解释说明用符号/**/; ⑹PAGE与0或与1之间要有空格。 五、设计源程序 1、正弦波形的汇编程序 .title “ sinx. asmzz .mmregs .def cintOO .ref d_xs, d_sinx, d_xc, d_cosx sin_x: .useet 〃sin_x〃, 360 STACK: .useet “STACK“, 10 k_theta .set 286 PAO .set 0 _c_int00: .text STM #STACK+10, SP STM #0, ARI STM k theta, ARO STM #sin_x, AR7 STM #90, BRC RPTB loopl-1 LDM ARI, A LD #d_xs, DP STL A, @d_xs STL A, @d_xc CALL sin_start CALL cos_start LD #d_sinx, DP LD @d_sinx, 16, A MPYA @d_cosx STH B, 1, *AR7+ MAR *AR1+O loopl: STM #sin_x+89, AR6 STM #88, BRC RPTB loop2~l LD *AR6-,A STL A, *AR7+ loop2: STM #179, BRC STM #sin_x, AR6 RPTB loop3~l LD *AR6+, A NEG A STL A, *AR7+ loop3: NOP end: B end sin_start .def sin_start d_coef_s .useet .data 〃coef_s〃, 4 table_s: .word 01C7H .word 030BH .word 0666H .word 1556H d_xs .useet sinvars , 1 d_squr_xs .useet sinvars , 1 d_temps .useet sinvars , 1 d_sinx .useet sinvars , 1 c_l_s .useet .text sinvars , 1 SSBX FRCT STM #d_coef_s, AR4 RPT #3 MVPD #table_s, *AR4+ STM #d_coef_s, AR2 STM #d_xs, AR3 STM #c丄s, AR5 ST #7FFFH, c_l_s SQUR *AR3+, A ST A, *AR3 LD *AR5, B MASR *AR3+, *AR2+, B, A MPYA A STH A, *AR3 MASR *AR3-,*AR2+, B, A MPYA *AR3+ ST B,*AR3 1 |LD *AR5, B MASR *AR3-,*AR2+, B, A MPYA *AR3+ ST B, *AR3+ 1 |LD *AR5, B MASR *AR3-,*AR2+, B, A MPYA d_xs STH RET B,dsinx cos_start .def cos_start d_coef_c .useet .data 〃coef