- 2
- 0
- 约3.55千字
- 约 5页
- 2019-09-13 发布于山西
- 举报
试验七、多波形发生器试验
试验目的
了解数字波形产生的原理;
学习用DSP产生各种波形的基本方法和步骤,提高用C语言进行DSP编程的能力;
掌握DSP与D/A转换芯片(DAC7724)接口的使用;
掌握图形显示窗口的使用方法。
实验设备
计算机、DSP硬件仿真器、DSP教学试验箱
试验背景知识
数字波形信号发生器是利用DSP芯片,通过软件编程和D/A转换来产生所需要的信号波形的一种方法。在通信、仪器和控制等领域的信号处理系统中,经常会用到各种数字波形发生器。
譬如,一般产生正弦波的方法有两种:
1、查表法:此种方法用于对精度要求不是很高的场合。如果要求精度高,所需要的表格就很大,相应的存储器容量也要很大。
2、泰勒级数展开法:这是一种更为有效的方法。与查表法相比,需要的存储单元很少,而且精度比较高。
一个角度为θ的正弦函数和余弦函数,都可以展开成泰勒级数,取其前5项进行近似得:
其中:x为θ的弧度值。
也可以用递推公式求正弦和余弦值:
利用递推公式计算正弦和余弦值需已知COSθ和正、余弦的前两个值。用这种方法,求少数点可以,如产生连续正弦、余弦波,则累积误差太大,不可取。
实验内容
DSP源文件的建立;
DSP程序工程文件的建立;
掌握DAC7724的使用方法。
在图形显示窗口中显示出各种波形。
实验步骤
将DSP仿真器与计算机连接号;
将DSP仿真器的JTAG插头与DSP试验箱主板上DSP_JTAG相连接;
打开试验箱电源。观察SEED-DTK_Moard单元的+5V,+3.3V,+15V,-15V的电源知识灯以及SEED-DEC643的电源指示灯D1是否均亮;若有不亮的,请断开电源,检查电源。
运行,设置硬件仿真的环境。
运行,按照下列源文件编写test6_sina,下载运行例程,点击View/Graph/ Time/Frequency,在弹出的对话框中设置相应的参数,得到相应的波形。
实验报告要求
简述数字波形生成的原理。
图形显示窗口显示出各种波形。
#include math.h
unsigned int *pmem=0;
#define PMST *(pmem+0x001D)
#define SWCR *(pmem+0x002B)
#define SWWSR *(pmem+0x0028)
#define BSCR *(pmem+0x0029)
#define READS *(pmem+0x4000)
#define IMR *(pmem+0x0000)
#define IFR *(pmem+0x0001)
#define TIM0 *(pmem+0x0024)
#define PRD0 *(pmem+0x0025)
#define TCR0 *(pmem+0x0026)
#define PI 3.1415926
int i,A,k,T,BIAN;
int N,j;
float fo,fs;
unsigned int x[4000];
void wave0(void) /*正弦波*/
{
A=1000;
fo=1000;
N=1000;
fs=N*fo;
for(i=0;iN;i++)
x[i]=(int)(A*sin(2*PI*i*fo/fs)+A);
}
void wave1(void) /*余弦波*/
{
A=1000;
fo=10;
N=1000;
fs=N*fo;
for(i=0;iN;i++)
x[i]=(int)(A*cos(2*PI*fo*i/fs)+A);
}
void wave2(void) /*三角波*/
{
k=1;
T=1000;
N=1000;
fs=(float)N/T;
for(i=0;iN/4;i++)
x[i]=(int)(k*i*1.0/fs+k*T/4.0);
for(i=N/4;iN/2;i++)
x[i]=(int)(k*(T/2.0-i*1.0/fs)+k*T/4.0);
for(i=N/2;i3*N/4;i++)
x[i]=(int)(k*(T/2.0-i*1.0/fs)+k*T/4.0);
for(i=3*N/4;iN;i++)
x[i]=(int)(k*(i*1.0/fs-T)+k*T/4
原创力文档

文档评论(0)