欢迎来到天天文库
浏览记录
ID:16139171
大小:766.00 KB
页数:20页
时间:2018-08-08
《任意信号发生器的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、DSP课程设计实验报告任意信号发生器的设计院(系):电子信息工程学院自动化0801设计人员:隋伟郑维丹成绩:工程设计50报告20答辩30总分评语:指导教师签字:日期:20一、设计任务信号发生器已广泛应用于科学实验、通讯和控制等应用领域中。使用DSP和D/A转换器可以产生连续的正弦波信号,同样也能产生方波、锯齿波、三角波等其它各种信号波形。本设计要求采用DSP及其D/A转换器产生上述各种信号波形。二、设计思路产生连续信号的方法通常有两种:查表法和计算法,查表法不如计算法使用灵活。计算法可以使用泰勒级数展开法进行计算,也可以使用差分方程进行迭代计算或者直接
2、使用三角函数进行计算。计算结果可以边计算边输出,也可以先计算后输出。正弦函数和余弦函数的泰勒级数数学表达式为:,,.如果要计算一个角度ⅹ的正弦和余弦值,可以取其前五项进行近似计算。或使用下面递归的差分方程进行计算。y[n]=A*y[n-1]-y[n-2]其中:A=2cos(x),x=2πF/FS。F—信号频率,FS—D/A转换频率。利用递推公式计算正弦和余弦值需要已知cos(x)和正弦、余弦的前两个值。为了简洁明了,我们采用了计算法中的递归差分方程。三、设计过程为了将想法转化成程序实现,我们考虑程序的框架如下:该程序要根据余弦信号的递推公式,给出初始的
3、两个值,以使得程序自己带入公式循环计算下去,即可得到余弦波形。但是,该法求少数点还可以,若产生连续余弦波,则积累误差将会很大,该法就不可取了,所以还要对所求得的点数有限制,不太多就可以了。为了能在DSK板上和示波器观察到波形,我们还得用C语言编写一段波形输出的程序,这个和我们以前做过的sine完全类似,不再赘述。下面的程序就是基于以上的设计思路,使用C语言实现连续余弦波的输出,该程序不但实现了功能,书写格式也非常的规范,易于阅读,流程图如下:20i在定义范围内?初始化常量、宏定义(公式中的第二项_COSX)变量定义:_cosx、dacdata、i调用延
4、时子程序:解决CPU和外设矛盾初始化i和公式中的_cosx[0]根据公式中的前两项用递推公式计算i在定义范围内?按照递推公式逐点计算把算出的值赋给dacdatadacdata的赋值重新初始化i对_cosx线性变化并赋值给dacdata是否是否_cosx是通过递推函数得到的数组,长度为200。i为控制变量,用以判定所求得的点数是否在定义的范围内。同理:方波函数:i=N/2,sq[i]=0dacdata[i]=sq[i]*1023+1024;三角波函数:i<=N/
5、2,sq[i]=amp*0.5*i*2/Ndacdata[i]=sq[i]*1023+1024;i>=N/2sq[i]=amp*0.5*(2-i*1.0/(N/2));dacdata[i]=sq[i]*1023+1024;四、程序设计20余弦波产生程序:#include#include#include#include#includevoiddelay(s16period);HANDLEhHandset;s16data;#defineN200#define_COSX
6、cos(2*3.14159/N)#pragmaDATA_SECTION(_cosx,"data_buf1")float_cosx[N+1];#pragmaDATA_SECTION(dacdata,"data_buf2")intdacdata[N];voidmain(){s16amp=1;//余弦信号幅度系数s16cnt=2;u16i=0;/*计算余弦信号的样点值,计算得到的样点值存储在dacdata[]数组中*/_cosx[0]=1.000;dacdata[0]=4095;_cosx[1]=_COSX;dacdata[1]=_COSX*2047+204
7、8;i=1;while(1){if(i++>N-1)break;_cosx[i]=2*_COSX*_cosx[i-1]-_cosx[i-2];dacdata[i]=_cosx[i]*2047+2048;}if(brd_init(100))//初始化5402DSK板return;20/*LED发光二极管闪烁两次,表示程序开始正常运行*/while(cnt--){brd_led_toggle(BRD_LED0);delay(2000);brd_led_toggle(BRD_LED1);delay(2000);brd_led_toggle(BRD_LED2)
8、;delay(2000);}/*获取Codec的句柄*/hHandset=codec_open
此文档下载收益归作者所有