基于某DSP的任意信号发生器设计汇总情况
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理(DSP)
综合设计性实验报告
学院:电子信息工程学院
班级:通信0708
指导教师:高海林
学生:原凌云07211253
张丽康07211256
北京交通大学电工电子教学基地
2004年12月28日
目录
一、设计任务 (3)
二、实验目的 (3)
三、设计内容 (3)
四、实验原理 (4)
五、程序设计 (6)
1、程序源代码
2、实验截图和结果
六、实验总结 (22)
七、参考资料 (23)
一、设计任务书
信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。信号发生器在现代工程中应用非常广泛。在实际中常需要产生一些特殊波形,用于仿真实际信号的波形,以检测和调试测量装置。
使用DSP 和D/A 转换器可以产生连续的正弦波信号,同样也能产生方波、锯齿波、三角波等其它各种信号波形。本设计要求采用DSP及其D/A转换器产生上述各种信号波形。
二、实验目的
(1)了解产生信号的两种方法及各自的优缺点。
(2)掌握使用DSP产生正弦波的原理和算法,进而掌握一般信号产生的原理和方法。
(3)掌握5402DSK CODECC(A/D、D/A)的工作原理和初始化过程。(4)掌握使用指针访问片上ROM中正弦查找表的方法。
三、设计内容
使用DSP 产生300—4000HZ 的正弦信号,要求使用查表法,测量产生的信号波形的频率和幅度,并且频率可变、幅度可变、直流分量可变。用软件CCS5000编程实现,并硬件(DSK 板或示波器)连接进行功能演示。
使用计算法产生余弦波分量。
发挥部分:
(1)使用DSP 产生300—4000HZ 的方波、锯齿波和三角波。
(2)使用现有程序,实现不改变源程序,频率和幅度自动可调。
四、实验原理
产生连续信号的方法通常有两种:查表法和计算法,查表法不如计算法使用灵活。计算法可以使用泰勒级数展开法进行计算,也可以使用差分方程进行迭代计算或者直接使用三角函数进行计算。计算结果可以边计算边输出,也可以先计算后输出。
正弦函数和余弦函数的泰勒级数数学表达式为:
=x sin ΛΛ+--+-+-+---)!
12()1(!9!7!5!31
219753n x x x x x x n n ,x ∀),(∞-∞∈ =x cos ΛΛ+-+-+-+-)!
2()1(!8!6!4!2128
642n 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的计算时间,使得执行程序的开销大
在实验中我们将采用查表法来实现正弦波,计算法产生余弦波。
余弦法的递推公式:cos(nx)=2cosxcos[(n-1)x]-cos[(n-2)x]
其中,cosx=cos(2*pi/N)=cos(2*pi*Fs/F),n=0时cos(nx)=1,n=1时cos(nx)=cosx,令N=256,Fs=16000,F=1000
调幅调频:我们将使用下面的一个界面
来实现频率和幅度的连续可调,但因为此界面和CCS运行界面不能同时存在,所以我们需要脱离CCS,而将程序烧至板子,然后在虚拟示波器上面观察波形的变化。
频率、幅度及直流分量可调也可以通过改变源程序来实现。
五、程序设计
基本部分:
【1】查表法实现正弦波的程序:
/**********正弦信号产生程序[1]**********************/
#include
#include
#include
#include
#include
void delay(s16 period);
HANDLE hHandset;
s16 data;