DSP多波形任意信号发生器实验报告要点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京交通大学
数字信号处理(DSP)
综合设计性实验报告
题目:任意信号发生器的设计
学院:电子信息工程学院
班级:
指导教师:钱满义
学生:
北京交通大学电工电子教学基地
2013年7月15日
目录
一、设计任务…………………………………………………
二、实验目的…………………………………………………
三、实验要求及目标…………………………………………………
四、实验原理…………………………………………………
五、程序代码及仿真结果…………………………………………………
1. 泰勒级数产生正弦波
2. 泰勒级数产生余弦波
3. 三角波
4. 方波
5. 锯齿波
六、实验总结…………………………………………
七、参考资料…………………………………………
一. 设计任务
信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。信号发生器在现代工程中应用非常广泛。在实际中常需要产生一些特殊波形,用于仿真实际信号的波形,以检测和调试测量装置。
使用 DSP可以产生连续的正弦波信号,同样也能产生方波、锯齿波、三角波等其它各种信号波形。本设计要求采用DSP及其CODEC产生上述各种信号波形。
二. 实验目的
(1)了解产生信号的两种方法及各自的优缺点。
(2)掌握使用DSP产生正弦波的原理和算法,进而掌握一般信号产生的原理和方法。
(3)掌握5502DSK CODECC的工作原理和初始化过程。
三. 设计要求及目标
基本部分:
使用DSP产生300—4000HZ的正弦信号,要求使用计算法,并且频率可变、幅度可变、直流分量可变。
发挥部分:
使用DSP产生300—4000HZ的方波、锯齿波和三角波。
四. 设计思路
产生连续信号的方法通常有两种:查表法和计算法,查表法不如计算法使用灵活。计算法可以使用泰勒级数展开法进行计算,也可以使用差分方程进行迭代计算或者直接使用三角函数进行计算。计算结果可以边计算边输出,也可以先计算后输出。
正弦函数和余弦函数的泰勒级数数学表达式为:
=
x sin
+
-
-
+
-
+
-
+
-
-
-
)!
1
2(
)1
(
!9
!7
!5
!3
1
2
1
9
7
5
3
n
x
x
x
x
x
x
n
n
,x∀)
,
(∞
-∞
∈
=
x cos
+
-
+
-
+
-
+
-
)!
2(
)1
(
!8
!6
!4
!2
1
2
8
6
4
2
n
x
x
x
x
x n
n
,x∀)
,
(∞
-∞
∈.
如果要计算一个角度ⅹ的正弦和余弦值,可以取其前五项进行近似计算。或使用下面递归的差分方程进行计算。
y[n]=A*y[n-1]-y[n-2] 其中:A=2cos(x),x=2πF/F S。F—信号频率,F S—D/A转换频率。
利用递推公式计算正弦和余弦值需要已知cos(x)和正弦、余弦的前两个值。计算时所需的计算量小,但如果用来产生连续的正弦和余弦信号,则累积误差太大。要得到精确的计算结果,可以使用泰勒级数展开法进行计算,当然计算时所需的计算量很大。在实际应用时可以根据需要选择相应的算法。
要产生一个正弦信号,首先要算出一个周期内各样点的值,因为sin(x)的值总是小于1的小数,而5402 DSP是16位的定点处理器,所以要将其乘以
215,变为Q15的数据格式,才能够在DSP中送到D/A转换器进行处理。
查表法与计算法的优缺点比较:
查表法:事先将要输出的数据计算好,存储在DSP的内部RAM中,然后依次循环输出,从而才生波形。这种方法的优点在于其速度快,可以产生频率很高的波形,而且不占用DSP的计算时间,它的缺点是需要占用DSP的内存空间,尤其是对采样频率比较大的输出波形,所需要的内部空间很大,所以这种方法用于对精度和频率要求不高的场合。
计算法:采用计算的方法依次计算数据然后输出。计算法的优缺点正好和查表法相反。其优点是不占用DSP的存储空间,可以根据信息随时间改变或调整输出波形的周期波形;其缺点是占用DSP的计算时间,使得执行程序的开销大
在本次实验中我们采用计算法来产生正弦波,并且同时使用了泰勒级数、递归差分方程和三角函数计算三种方法来进行计算,以对这三种算法进行横向比较。
五. 程序代码及仿真结果
1.泰勒级数法实现正弦波
程序代码:
#include
#include
#include
#include
#include
#include
#include