洛阳理工学院实验报告
系部
计算机与信息工程系
班级
学号
姓名
课程名称
DSP技术
实验日期
实验名称
计算一个角度的正弦值
成绩
实验目的:
1. 熟悉 DSP 的汇编语言程序构架,S开发环境。
2. 利用 DSP 汇编语言实现正弦信号的计算。
实验条件:
S开发环境的电脑
实验原理:
正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。
用 DSP 实现正弦波信号发生器通常有三种方法:
(1) 查表法将某个频率的正弦/余弦值计算出来后制成一个表,通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。
(2) 迭代法利用数字震荡器通过迭代方法产生正弦信号。
(3) 泰勒级数展开法根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。
正弦函数和余弦函数可以展开成泰勒级数,其表达式:
取泰勒级数的前 5 项,得近似计算式:
由式(3)和由式(4)可推导出递推公式:
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。
实验内容:
计算一个角度的正弦值
计算一个角度 x 的正弦值,可利用泰勒级数的展开式,采用子程序的调用方式来实现。
在调用前先在数据存储器 d_x 单元中存放 x 的弧度值,计算结果存放在 d_sinx 单元中。
:
/********************** *********************/
.mmregs
.def CodeStart
.def d_sinx, d_temp, c_1, d_x, d_squr_x, d_coeff
d_coeff .sect "coeff"
.word 01C7H
.word 030BH
.word 0666H
.word 1556H
d_x .usect "sin_vars", 1
d_squr_x .usect "sin_vars", 1
d_temp .usect "sin_vars", 1
d_sinx .usect "sin_vars", 1
c_1 .usect "sin_vars", 1
.text
CodeStart:
STM #d_coeff, AR3
STM #d_x, AR2
STM #c_1, AR4
sin_angle:
LD #0000H, DP
ST #4305H, d_x
ST #1FFFH, c_1
SQUR *AR2+, A
ST A, *AR2
||LD *AR4, B
MASR *AR2+, *AR3+, B, A
MPYA A
SFTA A, 3, A
STH A, *AR2
MASR *AR2-, *AR3+,
计算一个角度的正弦值 来自淘豆网m.daumloan.com转载请标明出处.