一.功能简介
示波器基于basys3实验开发板,最大可实现32MSPS的数据显示,2048位傅里叶变换,得到的数据和采集到的波形显示在显示器,通过basys3上面的开关,按钮控制显示分度值,和坐标上下移动。
通过外置无线模块进行数据传输导另一块开发板上,可以传输频率,幅值等数据,实现远程操控,远程控制,远程测量,并且还有一个蓝牙模块,可以将数据传输至手机APP,可以查看相应的数据,是一个具有实际应用功能的应用,若是后期搭配其他零部件可以实现远程实验室,在线医疗,联网检测等设备的应用。
二.系统框图
图 1
系统框图如图1所示,首先我们采用AD模块将模拟信号数字化,当外部信号发生器无法正常工作室,我们可以切换导内部DDS进行信号的产生,然后将采样到或者发生的8位宽的数据分别送到波形存储RAM和傅里叶变换的FIFO里面,傅里叶变换模块计算后的数据存储到FFT数据存储区域,通过显示控制模块来进行显示。
同时中央控制模块通过蓝牙将一些波形数据发送老手机上,可以实时检测。
三.模块介绍
a)AD采样模块
我们使用的是黑金科技的告诉ADDA数据采集板,高速AD 芯片是由AD 公司推出的8 位,最大采样率32MSPS 的AD9280 芯片。
内部结构图如图3所示。
接
口的输入范围是-5V~+5V(10Vpp)。
衰减以后,输入范围满足AD 芯片的输入范围
(0~2V)。
可以通过图2所示的公式来计算测量出来的值,以便将电压数据还原回去。
就可以得到测量的电压值
】
图2
图3
b)Xilinx FFT核及相关数据处理模块
FFT 核
实部平方
虚部平方开方求模
FIFO核
图4
快速傅里叶变换计算流程图如图4所示
根据数字信号处理与实现的学习,我们知道有限长离散信号X(n)的DFT 可以定义为:
图5
FFT数据输出后我们可以获得数据的实部和虚部,然后用两个乘法IP和一个开方IP完成求模的工作。
i.)
ii.FIFO模块
FIFO模块通过调用FIFO Generator,如图4所示,实现数据缓冲作用,由于FFT进行计算是需要时间的,但是外部的数据数据是一直进来,所以我们需要建立一个FIFO达到数据缓冲的作用,防止处理的时间过长,造成出具的丢失,从而对输出的波形产生影响。
FIFO使用Block RAM进行建立,这样占用板子资源比较小,为别的模块处理数据提供了方便。
FIFO模块一共有9个IO口,没有地址引脚,并提供了FIFI满,FIFI空信号的输出,可以为FFT控制FIFO的读写提供了便利,这样就可以精确的控制数据的流量,从而得出正确的数值。
图6
iii.X FFT模块
快速傅里叶变换(Fast Fourier transform)IPCore采用xilinx公司版本的IPCore,最大可实现65536深度的傅里叶运算,我们这次采用的是2048位的傅里叶变换,效果好,占用资源也比较少,模块如图7所示。
图7
iv.求模运算
{
众所周知,乘法是一个很消耗系统时钟的一种运算,我们不能简单的写一个乘号去完成我们这里的乘法运算,为了提高我们程序的运行速度,我们在这
里调用xilinx的逻辑运算IP核。
图8
图9
如图所示,图9是一个23位宽的乘法器,最终输出46位的数据,然后送到图9所示的开方模块,进行运算,得出23位宽的数据,最终将数据传输
至FFT数据存储RAM中,完成对连续时间的采样数据进行快速傅里叶变换,
可以到到输入波形的频谱图,通过VGA显示模块进行显示出来,与原来的输
入波形作对比。
c)VGA显示模块
预期显示效果如图10所示,屏幕显示背景为红色(可修改)波形显示区域为黑底白字,上面有白色的格子,用于辨识刻度;快速傅里叶变换后的波形显示在下面,黑底绿字,同时也是有白色格子,用于辨识刻度,窗口构建合乎比例,符合人的审美习惯。
】
波形显示区域
FFT数据显示区域
图8
VGA模块采用800*600分辨率进行显示,可以通过查找数据表得到他的时序表,如图4所示,就可以写出接口时序,使用判断语句进行颜色的绘制,采用4096色
显示,色彩还原率高,波形显示清晰,无明显色差。
图9
通过时序表我们可以计算得出VGA时序所需要的时钟频率,800*600分辨率60HZ频率计算下来时钟大约为50MHZ,因此我们在PLL里面设置我们的统一时钟皆为50MHZ,不采用不同频率时钟,防止跨时钟域带来的一些意想不到的奇怪问题,可以减少我们的调试量,将更多地经理放在算法上面。
我们采用图层的理念,因为使用判断语句就会有优先级的差别,因此在显示的时候也是会有一点差别,在进行波形显示的时候我,我们采用了一个小小的算法,就是将行扫描送到RAM中,讲读出来的数据与列扫描的数据判断进行显示。
d)DDS模块
图12
外部AD无法满足测控的时候可以选择备用DDS模块,可以产生正弦,三角,方波,送到AD模块直接进行处理显示,数据如图13,14,15所示。
-
DDS的基本结构主要由相位累加器、相位调制器、正弦波数据表(ROM)、D/A转换器构成。
相位累加器由N位加法器N位寄存器构成。
每来一个CLOCK,加法器就将频率控制字fword与累加寄存器输出的累加相位数据相加,相加的结果又反馈送至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控
制字相加。
这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。
由此,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据作为波形存储器的相位取样地址,这样就可把存储在波形存储器内的波形抽样值进行找表查出,完成相位到幅值的转换。
使用工具软件绘制一个周期的正弦波,将保存好的数据建立一个COE文件。
图13
图14
图15
e)蓝牙数据传输
蓝牙(Bluetooth® ):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用—的ISM波段的UHF无线电波)。
本次采用的是HC-05蓝牙模块,可以作为主机连接其他设备,也可以通过别的设备来连接自己。
HC-05采用串口通讯协议,波特率9600,停止位1位,无奇偶校验位,我们只需要将FFT输出的数据送到蓝牙模块就可以进行显示了。
四.¥
五.功能演示
a)无失真正弦波输出波形
b)失真正弦波输出波形
六.报告总结
可频谱分析的示波器对于我们来说还是有一点挑战性的,首先快速傅里叶变换对于我们还没有上数字信号处理的学生来说还是很难理解,我们就不得不去查找资料,万幸的是最终还是调试了出来,当初有一个FFT的核由于没有license文件就没有使用,当时也是浪费了好长时间。
波形显示这一块也是比较麻烦的,我当初第一个想法想的是构建一个1位宽的RAM,深度是显示区域的面积,这样只要给地址就可以读出RAM中的数据只要把输入的波形通过算法计算成地址,然后给这个地址中的数值赋值为1,这样显示的时候也就成了一个亮点,但是后来发现这样只可以显示波形,傅里叶变换出来的数据是不可以显示的,这样就不得不换另一种方式,经过查找资料找到了一种输出进行算法计算输入不需要,这样代码就会少了很多行,资源占用也就会少了好多。
这次的比赛还是很有意义的,首先我们了解到了这个示波器的原理是什么,怎么显示,其次了解到更多关于傅里叶变换的事情,对于我们来说还是很有帮助的。