1、.DSP课程设计实 验 报 告信号发生器的设计 目 录一、设计任务 2二、实验目的 2三、设计内容2四、实验原理2五、程序设计7 1、流程图2、程序源代码六、CCS5000程序调试11 1、新建工程、编译过程、工程架构2、程序运行结果(数据显示(用watch window观察变量的变化)、图形显示)七、实验总结16八、参考资料17一、 设计任务书信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途
2、。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。信号发生器已广泛应用于科学实验、通讯和控制等应用领域中。使用 DSP 和 D/A 转换器可以产生连续的正弦波信号,同样也能产生方波、锯齿波、三角波等其它各种信号波形。本设计要求采用DSP及其D/A转换器产生上述各种信号波形。二、 实验目的:1)了解产生信号的两种方法;2)熟悉使用C语言编写程序; 3)熟悉C语言对CCS的
3、访问和影响; 4)熟练使用软件CCS5000对程序的完整调试过程。 三、 设计内容使用DSP产生3004000HZ的正弦信号,要求使用计算法,并且频率可变、幅度可变、直流分量可变。用软件CCS5000编程实现,并硬件(DSK板或示波器)连接进行功能演示。发挥部分:使用DSP产生3004000HZ的方波和三角波。四、 设计方案、算法及原理说明(1)产生连续的波形的方法主要有以下两种方法:1、查表法:把事先将需要输出的数据计算好,存储在DSP中,然后依次输出就可以了。查表法的优点是速度快,可以产生频率较高的波形,而且不占用DSP的计算时间;查表法的缺点是在于需要占用DSP的内部的存储空间,尤其对采
4、样频率比较大的输出波形,这样,需要占用的内部的空间将更大,而DSP内部的存储空间毕竟有所限制。这使得查表法的应用场合十分有限。2、计算法:采用计算的方法依次计算数据而后输出,然后再计算而后输出。计算法的优缺点正好和查表法相反。即:其优点是不占用DSP的存储空间,其缺点是占用DSP的计算时间,使得执行程序的开销变大。本实验将用第二种方法即计算法产生一个正弦波信号,从DA输出。由正弦信号的递推公式: 其中,f为正弦信号的频率,设。由上式可见,若要使递推公式能够进行,则要求求出函数的前两个值,这里是和。结果为: (2)调频调幅 若要修改正弦信号的频率,幅值和直流分量,直接修改程序中宏定义的f,amp
5、和q的值即可。五、 程序设计(1)程序设计:要根据正弦信号的递推公式,给出初始的两个值,以使得程序自己带入公式循环计算下去,即可得到正弦波形。但是,该法求少数点还可以,若产生连续正弦波,则积累误差将会很大,该法就不可取了,所以还要对所求得点数有限制,不太多就可以了。程序的算法依据的是正弦函数递推公式,先指定最先的两个数,之后通过设定正弦函数数组,根据公式得到每个点的值;为了方便画图,进行了线性变换,将正弦函数的数组值传给dacdata;为了在DSK板和示波器上观测该图形,又把dacdata的变换数据从IOSR管脚输出;为了解决快速CPU和慢速外设的矛盾,编写延时子程序,供主函数调用。i在定义范
6、围内?初始化常量、宏定义(IOSR、公式中的_sinx)变量定义:_sinx、dacdata、i调用延时子程序:解决CPU和外设矛盾初始化i和公式中的_sinx0根据公式中的前两项用递推公式计算 i在定义范围内?按照递推公式逐点计算算出的值赋给dacdataDacdata的值赋给IOSR重新初始化i对_sinx线性变化并赋值给dacdata是否是否 图1 正弦波程序设计流程图正弦波发生程序如下:ioport unsigned port0bfff; /定义管脚变量port0bfff为无符号型#include /导入库函数#include #include #include #include #i
7、nclude #define f 400 /定义函数的频率#define q 0 /定义函数的直流分量#define amp 2 /定义函数的幅度值#define pi 3.14159265 /给pi赋值#define IOSR port0bfff /宏定义:管脚port0bfff用IOSR表示,用于输出波形#pragma DATA_SECTION(_sinx,data_buf1) double _sinx200; /定义正弦函数数组为 型的,共200个点#pragma DATA_SECTION(dacdata,data_buf2) int dacdata200; /定义输出即画点函数dacd
8、ata为整型 void delay(int); /调用延时函数,解决快速CPU和慢速外设的矛盾void main(void) /进入主函数,无返回值 unsigned int i=0; /无符号整型变量i,是正弦函数数组的动态下标double a;int cnt=2;brd_init(100);while(cnt-)brd_led_toggle(BRD_LED0);/切换LED指示灯0的显示状态delay(1000);brd_led_toggle(BRD_LED1);/切换LED指示灯1的显示状态delay(1000);brd_led_toggle(BRD_LED2);/切换LED指示灯2的显
9、示状态delay(1000);a=2*pi*f/16000; _sinx0=0; dacdata0=0; _sinx1=amp*sin(a); dacdata1=_sinx1*4096+q*4096; i=1; while(1) if(i+198) break; _sinxi=2*cos(a)*_sinxi-1-_sinxi-2; dacdatai=_sinxi*4096+q*4096; i=0; while(1) if(i198) i=0; IOSR=dacdatai+; /*delay*/void delay(int period) int i,j; for(i=0; iperiod; i
10、+) for(j=0;jperiod;j+); 方波发生程序如下:在正弦波的基础上,加入比较ioport unsigned port0bfff; #include #include #include #include #include #include #define f 400#define q 0.5#define amp 2#define pi 3.14159265#define IOSR port0bfff #pragma DATA_SECTION(_sinx,data_buf1) double _sinx200; #pragma DATA_SECTION(dacdata,data_b
11、uf2) int dacdata200; void delay(void); void main(void) unsigned int i=0;double a; int dac200;a=2*pi*f/16000; _sinx0=0; dac0=0; _sinx1=amp*sin(a); dac1=_sinx1*4096+q*4096; i=1; while(1) if(i+198) break; _sinxi=2*cos(a)*_sinxi-1-_sinxi-2; daci=_sinxi*4096+q*4096; i=0; while(1) if(i198) break;if(daci19
12、8) i=0; IOSR=dacdatai+; 三角波发生程序如下:ioport unsigned port0bfff; #include #include #include #include #include #include #define f 1000#define q 0#define amp 2#define pi 3.14159265#define IOSR port0bfff #pragma DATA_SECTION(_sinx,data_buf1) double _sinx200; #pragma DATA_SECTION(dacdata,data_buf2) int dacd
13、ata300; void delay(int);void main(void) unsigned int i=0;double a; int dac300;a=2*pi*f/16000; _sinx0=0; dac0=0; _sinx1=amp*sin(a); dac1=_sinx1*4096+q*4096; i=1; while(1) if(i+298) break; _sinxi=2*cos(a)*_sinxi-1-_sinxi-2; daci=_sinxi*4096+q*4096; i=0; while(1) if(i299) break;if(daci0) daci=amp*4096;
14、else daci=0;i+; i=0; dacdata0=0; while(1) if(i299) break; dacdatai+1=dacdatai+(daci/32);i+; i=0; while(1) if(i299) i=0; IOSR=dacdatai+; /*delay*/void delay(int period) int i,j; for(i=0; iperiod; i+) for(j=0;jallocation:定义该段的运行空间及地址*/*以.cinit为例,.cinit PRAM PAGE 0的作用:把.cinit输出段分配到PAGE 0中的*/* PARAM,存储信
15、息为:origin = 1000h, length = efdh。下同,类似代码注释从略*/.text : PARAM PAGE 0 .cinit: PARAM PAGE 0 .data: DARAM PAGE 1 .bss: DARAM PAGE 1 .const: DARAM PAGE 1 结果分析正弦波:图2正弦波编译图3 图形显示参数界面及其修改 图4 输出正弦波波形方波 图5 方波编译 图6 图形显示参数修改 图7 方波输出波形三角波 图8 三角波编译 图9图形显示参数修改 图10 三角波输出波形将信号从DSK板的DA口输出接到示波器上,就可以观察程序运行输出的波形了。改变数据的大小
16、:从硬件上说,就是改变信号的幅值,可以将数据乘以或除以相应的因子就可以了。也可以在数据上加上或减去一个数值,结果可以使得波形在水平轴上移位,从硬件上说,就是加上或减去直流分量。 改变信号产生的频率:只需要在送数据到DA时加上相应的延时就可以了。理论上说,频率可以无限制的低,最低为0HZ;然而频率的上限会有一定的限制,这些限制包括DA的转换时间的限制以及DSP发送数据的限制,DA的限制是不能改变的,除非更换DA,DSP发送数据的限制可以通过改变程序,优化程序代码来提高发送的速度。最快的频率是采用纯汇编编写程序,以提高信号发生的频率。 六、 设计与调试体会本次实验基于数字信号处理,使用DSK板来设
17、计信号发生器。最重要的部分就是编写程序,使程序能实现我们预期的实验结果,本次实验使用C语言进行编程,由于之前我们选修过C语言全校性任选课,对C语言的编程环境有所了解,对本次实验过程有很大的帮助,编程结束要在CCS上实现。程序设计的过程中,要根据正弦信号的递推公式,给出初始的两个值,以使得程序自己带入公式循环计算下去,即可得到正弦波形。但是,该法求少数点还可以,若产生连续正弦波,则积累误差将会很大,该法就不可取了,所以还要对所求得点数有限制,不太多就可以了。一开始熟悉CCS的时候我们就遇到了困难,比如导入不全,还有文件夹的命名必须的英文的,否则就会产生无法导入的问题。进行编译运行肯定存在一定的错
18、误,根据错误的提示,我们对程序进行改进,有语法的错误,也有逻辑的错误,最终错误减少到1了,可是这个错误总是存在,最终发现是扩展名为.h的头文件没有找到,这就是老师在讲课时多次提到的应该注意的问题,回想老师说的解决方法,经过多次的摸索与尝试,修改了Include Search Path才得以编译成功。图11 修改路径最后观察波形,进行结果分析,通过几次对程序的改进和调试,我们得出了比较理想的波形。再有比较深的体会就是注意老师在讲理论课是所说的注意事项,和介绍设计的方法,老师的话会让我们少走很多弯路。比如我们做的是信号波形发生,有两种方法,一是查表法,二是计算法,在讲课的时候老师详细的介绍了查表法
19、和有关的技巧和设计过程中的一些捷径,但是由于我们没有认真的听老师的介绍,所以在设计的过程中,我们使用了计算法,完全不知道应该要什么样的思路,怎样设计才能用最简单的程序实现,所以设计过程中花了很多不必要的时间,虽然两种方法的优缺点主要跟速度的快慢和占用DSP的内部存储空间有关系,因为我们做的只是实验,这些实际的问题我们没有考虑,但是才是做实验的最终目的,在实际应用中发挥设计的优缺点,去适应相应的环境。实验中,我们也可以看出DSP芯片的易实现性,信号处理理论的发展,大规模集成电路的发展和巨大的市场需求,使得DSP芯片获得空前的丰富和发展。DSP芯片已经在信号处理、通信、雷达和消费电子领域广泛地使用。当前,DSP性能越来越高,功耗越来越小,而价格越来越低,具有巨大的应用潜力。 七、 参考文献 1陈后金数字信号处理。高等教育出版社20042高海林、钱满义DSP技术及其应用讲义2005年10月3 TMS320C54x DSP CPU and Peripherals. Texas Instrument Inc,2001.4 TMS320C54x DSP Applications and Guide. Texas Instrument Inc,2001.
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922