嵌入式教学教程:信号的抽样定理实验(外部输入信号)

电子说

1.3w人已加入

描述

一、实验目的

了解信号抽样的基本内容,学习AD7606采集波形的实现,实现外部信号的抽样与恢复并在LCD上显示结果。

二、实验原理

抽样定理

抽样定理,又称采样定理,香农采样定理,奈奎斯特采样定理,只要采样频率大于或等于有效信号最高频率的两倍,采样值就可以包含原始信号的所有信息,被采样的信号就可以不失真地还原成原始信号。抽样定理是通信理论中的一个重要定理,是模拟信号数字化的理论依据。时域采样定理:

(1)频带为F的连续信号f(t)可用一系列离散的采样值f(t1),f(t1±Δt),f(t1±2Δt),...来表示,只要这些采样点的时间间隔Δt≤F/2,便可根据各采样值完全恢复原来的信号f(t)。

(2)当时间信号函数f(t)的最高频率分量为f_M时,f(t)的值可由一系列采样间隔小于或等于f_M/2的采样值来确定,即采样点的重复频率f≥2f_M。

对连续时间正弦信号考虑下面的表达式:

波形发生器

可以按抽样频率f_s=1/T_s对x(t)抽样来获得离散时间信号:

波形发生器

如果不能满足抽样定理,抽样后信号的频率就会重叠,即高于采样频率一半的频率成分将被重建成低于采样频率一半的信号。这种频谱的重叠导致的失真称为混叠,就不能恢复成原始信号。以下两种措施可避免混叠的发生:

(1)提高采样频率,使之达到最高信号频率的两倍以上(本实验使用的方法);

(2)引入低通滤波器或提高低通滤波器的参数;该低通滤波器通常称为抗混叠滤波器,抗混叠滤波器可限制信号的带宽,使之满足采样定理的条件。

外部输入信号

本实验中,外部输入信号的抽样实现是通过实验板上的波形发生器AD9833输出正弦波连续信号, AD7606 采集波形后得到对应的离散信号数据,最后DSP对采集到的离散信号进行处理,比如FFT运算,最后LCD显示。

波形发生器

AD9833特性

(1)AD9833是一款低功耗、可编程波形发生器,能够产生正弦波、三角波和方波输出,输出频率和相位可通过软件进行编程,调整简单。

(2)AD9833通过一个三线式串行接口写入数据。该串行接口能够以最高40MHz的时钟速率工作,并且与DSP和微控制器标准兼容。

波形发生器

AD7606特性

(1)8 路16bit采样通道。

(2)支持串行和并行读取方式。

(3)支持全部通道 200K 采样率并行采集和转换。

(4)支持真正±10V 或±5V 的双极性信号输入。

波形发生器

AD7606上8个通道的数据是同时采集,轮流转换的。

模数转换模块的处理过程如下:

(1)模数转换模块接到启动转换信号后,按照排序器的设置,开始转换第一个通道的数据;

(2)经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存;

(3)按顺序进行下一个通道的转换;

(4)如果为连续转换方式则从新开始转换过程;

(5)否则等待下一个启动信号。

程序流程设计

设计中首先要进行LCD初始化,例如外设使能配置、LCD管脚复用配置、中断配置、显示初始化等。然后初始化AD7606并启动转换,接着初始化AD9833并输出正弦波信号,AD7606对信号进行抽样转换,抽样后将信号转为复数模式,接着对抽样信号进行FFT变换,并在在LCD上显示抽样的结果。最后进行触摸检测,控制AD采样的暂停和启动。

波形发生器

函数源码

FFT运算函数

使用 DSPLIB 的库来进行FFT运算。使用时,直接包含“DSPF_sp_fftSPxSP.h”文件 即可。

API接口

void DSPF_sp_fftSPxSP(int N, float *ptr_x, float *ptr_w, float *ptr_y, unsigned char *brev, int n_min, int offset, int n_max);

程序使用 DSPLIB 的库来进行FFT运算,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的FFT函数中,第一个参数是样本中 FFT 的长度,第二个参数是指向数据输入的指针。第三个参数是指向复杂旋转因子的指针。第四个参数是指向复杂输出数据的指针。第五个参数是指向包含 64 个条目的位反转表的指针。如果样本的FFT长度可以表示为 4 的幂,第六个参数是4,否则 第六个参数是 2 。第七个参数是从主FFT开始的样本中的子 FFT偏移索引 。 第八个参数是样本中主FFT的大小。

FFT逆变换函数

使用 DSPLIB 的库来进行FFT逆变换。使用时,直接包含“DSPF_sp_ifftSPxSP.h”文件 即可。

API接口

void DSPF_sp_ifftSPxSP (int N, float *ptr_x, float *ptr_w, float *ptr_y,
unsigned char *brev, int n_min, int offset, int n_max);

程序使用 DSPLIB 的库来进行FFT逆变换,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的IFFT函数中,第一个参数是样本中 FFT 的长度。第二个参数是指向数据输入的指针。第三个参数是指向复杂旋转因子的指针。第四个参数是指向复杂输出数据的指针。第五个参数是指向包含 64 个条目的位反转表的指针 。如果样本的FFT长度可以表示为 4 的幂,第六个参数是4,否则第六个参数是2 。第七个参数是从主FFT开始的复杂样本中的子FFT偏移索引 。第八个参数是样本中主FFT的大小。

三、操作现象

实验设备:本实验使用的硬件接口为LCD,所需硬件为实验板、仿真器、公头对公头 SMA 连接线、LCD和电源。

硬件连接

(1)使用公头对公头SMA连接线连接波形发生器和ADC输入的V1通道。

(2)连接仿真器和电脑的USB接口。

(3)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

波形发生器

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

程序加载完成后点击运行程序

运行程序后,LCD会显示抽样的离散信号波形,上半幅图为离散抽样信号,横坐标X为时间,采样点的时间间隔为1ms。下半幅图为离散抽样信号的频谱图,频谱近似等于AD9833产生的连续信号频谱 100。

实验结束后,先点击左上角的黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验板的连接,最后实验箱断电即可。

波形发生器

波形发生器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分