缓冲结构。
7 基于 DSP 的正弦信号 2 在 CCS 环境下实现正弦函数信号2.1 用 DSP 实现正弦函数的基本算法 在通信、仪器和控制等领域的信号处理系统中,可能会用到正弦发生器。
产生正弦波的方法: 1、查表法。
此中方法用于对精度要求不是很高的场合。
如果要求精度高,表就很大,相应的存储器容量也要增大。
2、台劳级数展开法。
这是一种更为有效的方法。
与查表法相比,需要的存储单元很少,而且精度很高。
一个角度 θ 的正弦和余弦函数,都可以展开成台劳级数,取其前 5 项进行近似: Sinθx-x3/3x5/5-x7/7x9/9x1-x2/231-x2/451-x2/671-x2 /89 Cosθ1-x2 /2x4 /4-x6 /6x8 /81-x2 /21-x2 /341-x2/561-x2 /78 上式中的 X 为 θ 的弧度值。
也可以有递推公式求正弦和余弦值: Sin nθ2cosθsinn-1θ-sinn-2θ Cos nθ2cosθcosn-1θ-cosn-2θ 利用递推公式计算正弦和余弦值需已知 Cosθ 和正、余弦的前两个值。
用这种方法,求少数点还可以,如产生连续正弦、余弦波,则积累误差太大,不可取。
2.2 编写汇编程序 sin.asm 和 vectors.asm1 正弦波源程序清单 sin.asm This function generates the sine wave of angle using the Taylorseries expansion sinthetax I-x 2/2 31-x2/4 51-x 2/6 71-x2/8 9 costheta1-x2/21-x2/3 41-x2/5 61-x2/7 8 sin2 theta2 sintheta costheta .title sin.asm 8 基于 DSP 的正弦信号.mmregs.def start.ref d_xsd_sinxd_xcd_cosx.ref sinxd_xsd_sinxcosxd_xcd_cosxsin_x: .usect sin_x360STACK: .usect STACK 10k_theta .set 286 theta pi/3600. 5deg. PA0 .set 0start:.textSTM STACK 10 SPSTM k_theta AR0 ARO--k theta incrementSTM 0AR1 ARlxrad. STM sin_x AR6 AR6 - - sin xSTM 90 BRC form sinO deg. sin90 deg. RPTB loop1-1LDM AR1 ALD d_xs DPSTL Ad_xsSTL A d_xcCALL sinx d sinx sinxCALL cosx d cosx cosxLD d_sinxDPLD d_sinx16 A A sinxMPYA d_cosx B sinx cosxSTH B1 AR6 AR6--2 sinx cosxMAR AR10loop1: STM sin_x89 AR7 sin91deg. .- sin179 deg. STM 88 BRCRPTB loop2-1LD AR7-ASTL A AR6loop2: STM 179 BRC sin180 deg. sin359 deg. STM sin_x AR7 9 基于 DSP 的正弦信号RPTB loop3-1LD AR7 ANEG ASTL A AR6loop3: STM sin_x AR6 generate sin waveSTM 1 AR0STM 360BKloop4: PORTW AR60 PA0B loop4sinx:.def d_xsd_sinx.datatable_s .word 01c7h c11/8 9 .word 030bh c21/6 7 .word 0666h c31/4 5 .word 1556h c41/2 3d_coef_s .usect coef_s4d_xs .usect sin_vars 1d_squr_xs .usect sin_vars 1d_temp_s .usect sin_vars 1d_sinx .usect sin_vars 1c_1_s .usect sin_vars 1.textSSBX FRCTSTM d_coef_s AR5RPT 3MVPD table_s AR5STM d_coef_s AR3STM d_xs AR2STM c_1_s AR4ST 7FFFh c_1_sSQUR AR2 AST A AR2LD AR4 B 10 基于 DSP 的正弦信号MASR AR2 AR3 B AMPYA ASTH A AR2MASR AR2- AR3 B AMPYA AR2ST B AR2LD AR4 BMASR AR2- AR3 B AMPYA AR2ST B AR2LD AR4 BMASR AR2- AR3 B AMPYA d_xsSTH B d_sinxRETcosx:.def d_xcd_cosxd_coef_c .usect coef_c 4.datatable_c .word 0249h cl1/7 8 .word 0444h c21/5 6 .word 0aabh c31/3 4 .word 4000h c4 1 /2d_xc .usect cos_vars1d_squr_xc .usect cos_vars1d_temp_c .usect cos_vars1d_cosx .usect cos_vars1c_1_c .usect cos_vars1.textSSBX FRCTSTM d_coef_c AR5 move coeff tableRPT 3MVPD table_c AR5STM d_coef_c AR3 11 基于 DSP 的正弦信号 STM d_xc AR2 STM c_1_c AR4 ST 7FFFhc_1_c SQUR AR2 A A x-2 ST A AR2 AR2 x2 LD AR4B B1 MASR AR2 AR3BA AI-x-2/56 T x2 MPYA A AT Ax21-x2/56 STH A AR2 d temp x21-x2/56 MASR AR2- AR3BA A1-x2/301-x2/56 Tx21-x2/56 MPYA AR2 Bx21-x2/301-x2/56 ST B AR2 d tempx21-x2/301-x2/56 LD AR4 B B1 MASR AR2- AR3BA A1-x2/121-x2/301-x2/56 SFTA A-1A -1/2 NEG A MPYA AR2 B-x2/21-x2/121-x2/30 1-x2/56 MAR AR2 RETD ADD AR416B B1-x2/21-x2/121-x2/30 1-c2/56 STH B AR2 costheta RET .end2 正弦波源程序 vectors.asm 清单 vectors.asm .title “vectors” .ref start .sect “.vectors” B start .end 12 基于 DSP 的正弦信号3 编写链接命令文件 sin.cmd 正弦波程序链接命令文件 sin.cmd .Debugsin.obj .Debugvectors.obj -o sin.out -m sin.map -e start MEMORY PAGE 0: EPROM : org0E000h len1000h VECS : org0FF80h len0080h PAGE 1: SPRAM : org0060h len0020h DARAM1 : org0080h len0010h DARAM2 : org0090h len0010h DARAM3 : org0200h len0200h 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 : align512 DARAM3 PAGE 1 .vectors : VECS PAGE 0 13 基于 DSP 的正弦信号 3 在 CCS 中生成项目、编译和调试 在 CCS 中生成项目,编译,调试,用 graph 窗口观察结果: (1)在自己建立的工程文件中加载 sin.asm,vectors.asm 程序和 sin.cmd程序。
(2)程序全部输入以后,进行编译,连接,并调试。
(3)载入可执行程序。
命令 File—Load Program 载入编译链接好的可执行程序。
(4)点击运行键 RUN。
(5)程序运行后按 View—Graph—Time/Frequency…设置显示窗口,观察所计算生成的正弦波图形。
(Time/Frequency…中的 Start Address Sized 的原始值改为 0X0020,Acquisition Buffer Size 改为 360,Display Data Size 改成适量值如300) 图形如下显示: 图 3.1 实验结果波形图 14 基于 DSP 的正弦信号 总结 经过学习 DSP 这门课,我不仅对程序编程有了更全面的认识,而且学会了利用 CCS 集成开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节. DSP 原理对我们来说还算简单,主要过程是将理论转化成实际程序调试,这就考验我们如何把复杂的程序理解并成功的调试出来。
再调试的过程中,更全面的理解课本上所学的内容。
关于这次实验,我也有许多收获:拿到材料后,经过认真的预习,让我对DSP 系统有了更加全面的认识,了解了如何利用 TMS320C54xDSP 来实现正弦信号发生器,可是在电路调试的过程中我也遇到了问题,由于输入时的粗心,程序中错误很多,起初只是着急,经过耐心的检查,错误一个一个的减少,终于正确了,心情很激动! 15 基于 DSP 的正弦信号 参考文献1 秦永左,杨光.TMS320LF240XDSP 原理及应用M,北京:清华大学出版社,2009.6.2 戴明桢. 数字信号处理的硬件实现J. 航空工业出版社,2006.9.3 周建江. 数字信号处理的硬件实现J.北京航空航天大学出版社,2005.6 .4 李哲英. DSP 基本理论与应用技术M.机械出版社,2005.7. 16
上一篇:
基于UG的遥控器下板注塑模具设计与制造(有全套图纸)
下一篇:
经济民主一种关于劳动的政治经济学