- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DSP课程设计
实 验 报 告
任意信号发生器的设计
院(系): 电子信息工程学院
设计人员:
成绩: 工程设计50 报告20 答辩30 总分 评语:
指导教师签字:
日期:
一、设计任务
信号发生器已广泛应用于科学实验、通讯和控制等应用领域中。使用 DSP 和 D/A 转换器可以产生连续的正弦波信号,同样也能产生方波、锯齿波、三角波等其它各种信号波形。本设计要求采用DSP及其D/A转换器产生上述各种信号波形。
二、设计思路
产生连续信号的方法通常有两种:查表法和计算法,查表法不如计算法使用灵活。计算法可以使用泰勒级数展开法进行计算,也可以使用差分方程进行迭代计算或者直接使用三角函数进行计算。计算结果可以边计算边输出,也可以先计算后输出。
正弦函数和余弦函数的泰勒级数数学表达式为:
,
,.
如果要计算一个角度ⅹ的正弦和余弦值,可以取其前五项进行近似计算。
或使用下面递归的差分方程进行计算。
y[n]=A*y[n-1]-y[n-2] 其中:A=2cos(x),x=2πF/FS。F—信号频率,FS—D/A转换频率。
利用递推公式计算正弦和余弦值需要已知cos(x)和正弦、余弦的前两个值。
为了简洁明了,我们采用了计算法中的递归差分方程。
三、设计过程
为了将想法转化成程序实现,我们考虑程序的框架如下:
该程序要根据余弦信号的递推公式,给出初始的两个值,以使得程序自己带入公式循环计算下去,即可得到余弦波形。但是,该法求少数点还可以,若产生连续余弦波,则积累误差将会很大,该法就不可取了,所以还要对所求得的点数有限制,不太多就可以了。
为了能在DSK板上和示波器观察到波形,我们还得用C语言编写一段波形输出的程序,这个和我们以前做过的sine 完全类似,不再赘述。
下面的程序就是基于以上的设计思路,使用C语言实现连续余弦波的输出,该程序不但实现了功能,书写格式也非常的规范,易于阅读,流程图如下:
_cosx是通过递推函数得到的数组,长度为200。i为控制变量,用以判定所求得的点数是否在定义的范围内。
同理:
方波函数:iN/2,sq[i]=amp*0.5 dacdata[i]=sq[i]*1023+1024;
i=N/2,sq[i]=0 dacdata[i]=sq[i]*1023+1024;
三角波函数:i=N/2, sq[i]=amp*0.5*i*2/N dacdata[i]=sq[i]*1023+1024;
i=N/2sq[i]=amp*0.5*(2-i*1.0/(N/2));dacdata[i]=sq[i]*1023+1024;
四、程序设计
余弦波产生程序:
#includetype.h
#includeboard.h
#includecodec.h
#includemcbsp54.h
#includemath.h
void delay(s16 period);
HANDLE hHandset;
s16 data;
#define N 200
#define _COSX cos(2*3.14159/N )
#pragma DATA_SECTION(_cosx,data_buf1)
float _cosx[N+1];
#pragma DATA_SECTION(dacdata,data_buf2)
int dacdata[N];
void main()
{
s16 amp=1;//余弦信号幅度系数
s16 cnt=2;
u16 i=0;
/*计算余弦信号的样点值,计算得到的样点值存储在dacdata[]数组中*/
_cosx[0]=1.000;
dacdata[0]=4095;
_cosx[1]=_COSX;
dacdata[1]=_COSX*2047+2048;
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;
/*LED发光二极管闪烁两次,表示程序开始正常运行*/
while(cnt--)
{
brd_led_toggle(BRD_LED0);
delay(2000);
brd_led_toggle(BRD_LED1);
delay(2000);
brd_led_toggle(BRD_LED2);
delay(2000);
}
/* 获取Codec的句柄 */
hHandset = codec_open(HANDSET_CODEC);
您可能关注的文档
最近下载
- 2023~2024学年三年级下册语文期末模考试卷·创意情境 统编版.docx VIP
- 扬州地区部分县2025届全国卷Ⅱ数学试题中考模拟题解析(精编版)含解析.doc VIP
- 中国规范与菲律宾规范中风荷载计算比较研究参考.pdf VIP
- 学校党组织领导的校长负责制实施方案.doc VIP
- 人教版三年级数学下册第一次月考试卷第一二单元.doc VIP
- JBT14264-2022 高温纳电池性能要求和试验方法.pdf
- 2025年科尔沁艺术职业学院单招职业适应性测试题库参考答案.docx
- 北师大版小学一年级下册语文第一-六单元月考试卷2.doc VIP
- 中文大模型基准测评2024年度报告.pdf
- 金属非金属矿山重大事故隐患检查表(根据金属非金属矿山重大事故隐患判定标准(2022)编制).pdf
文档评论(0)