简易数字存储示波器
第七组:周严,姚伶伶,周小光
指导老师:黄根春
2007年5月25日摘要:
本系统基于数字存储的原理,以单片机和FPGA为控制和处理核心,设计并实现了一个数字存储示波器。本系统除了具有单次触发与连续触发,多档水平分辨率与垂直灵敏度,双踪示波,水平垂直移动显示等功能外,还扩展了自动测量,视窗扩展显示,时间、电压光标线,简易频谱分析等功能。本系统充分发挥了FPGA的高速数据处理的优势,将数据存储,数据处理,波形显示,DFT分析,光标的实现全部集成在FPGA内,大大简化了硬件电路,发挥了大规模可编程逻辑器件的特点和优势,而且还大大提高了系统的稳定性。
关键词:FPGA 数字存储示波器
一、方案设计与论证
本系统要求设计并制作一台用普通示波器显示被测波形的简易数字存储示波器。要求该系统具有单次触发与连续触发,多档水平分辨率与垂直灵敏度,双踪示波,水平移动扩展显示等功能。分析题目要求,我们认为难点在于所测波形的完美显示以及视窗,频谱等扩展功能上,下面我们就各个部分进行方案论证。
(一)采样方式的选择
1、等效时间采样
采用中高速模数转换器,对于频率较高的周期性信号采用等效时间采样的方法,即对每个周期仅采样一个点,经过若干个周期后就可对信号各个部分采样一遍。而这些点可以借助步进延迟方法均匀地分布于信号波形的不同位置。其中步进延迟是每一次采样比上一次样点的位置延迟△t时间。实质就是实现将周期性的高频信号经过取样变成波形与之形状相似的周期性低频信号,然后做进一步处理。
2、实时采样
实时采样是在信号存在周期对其采样。根据采样定理,采用速率必须高于信号最高频率分量的2倍。对于周期的正弦信号,一个周期内应该有2个采样点。为了不失真的恢复原被测信号,通常一个周期内就需要采样8个点以上。为了配合高速模数转换器,必须用FPGA 代替单片机准确的定时控制ADC的采样速率。以实现高速实时采样。
等效时间采样虽然可以对很高频率的信号进行采样,可是步进延迟的采样技术与电路较为复杂并且难于精准控制,再者,它只限于处理周期信号,而且对非周期信号的采样无能为力。而实时采样虽说要用到高速AD转换器,但可以实现整个频段的全速采样,控制起来相对要简单很多。但是实时采样用到的高速AD采样的正确率和抗干扰性能都要比低速AD差,在实际调试中,如何正确有效的使用高速AD也是一个难点,我们选择了Analog公司的AD9220。AD9220最高转换速率为10MHz,转换位数为10位。综上方案的比较分析,根据本课题技术指标要求,故而本设计采用方案二。
(二)双踪显示方式的选择
1、采用两片模数转换器、两片存储器和两片数模转换器,分别的对两路信号采样量化和存储。双踪显示时,先显示通道A,再选择通道B的数据,轮流输出不同的波形,以实现两路波形的双踪显示。
2、只用一片模数转换器、两片存储器、两片数模转换器和一片模拟开关,以高速切换模拟开关,分别选通两路信号进入采样电路,两路波形数据分别存储,分别显示。
考虑到我们目前手头高速AD的数目以及硬件的复杂程度,我们决定采用方案二,只用一片模数转换器,辅以模拟开关进行通道切换。该方法实现起来,虽说软件要比方案一复杂一点,控制起来也要麻烦一点。但是可以很大程度上节约硬件开支,是一个不错的选择。
(三)频率测量方法的选择
1、用单片机扫描存储在RAM中波形数据,找到波形的上升过零点位置或者波形数据的峰值,并记录此时的地址ADR1,在扫描下一个波形的上升过零点位置或者波形数据的峰值,并记录此时的地址ADR2,通过如下公式计算出波形的频率:
f = 1/[B×(ADR2-ADR1)/20]
其中,B为水平分辨率,单位为s/div。
2、等精度测量法
在预定的闸门时间T0内,分别用计数器1和计数器2同时对被测信号fx和基准信号f0进行计数,设所得值为Nx和N0,则被测信号的频率为:
fx=(Nx/N0)*f0;
在测量中,闸门的开启和关闭都由被测信号的上升沿(或下降沿)来控制,因而与Nx的计数保持同步,因而Nx不存在误差,但是对于基准信号f0来说,闸门的开启和闭合仍然是随机的,因而N0存在±1的误差,测频的最大相对误差为:
Δfx/fx=±(ΔN0/N0+/Δf0/f0) 。
由上式看出,测频精度与被测信号频率没有关系,只要N0和f0足够大,系统可以满足很高的精度要求。因此,参考计数器的最高计数频率的限制,选取合适的基准信号频率和恰当的闸门开启时间,便可以在0.1Hz~16MHz的范围内使测频精度不变,即等精度测量。
方案一具有操作简单的特点,但是频率数据的精度明显不高。方案二,虽说要增加硬件量(比较整形)和软件量,但是可以保证精度,而且测量时间也可以控制在很短的范围内。所以我们选择方案二。
(四)各扩展功能方案的选择
在这里,我就不再具体比较各部分的方案选择了,我只是详细的说一下我们采用的方案。1、波形水平上下移动显示
为了增强实感,我们决定利用两个滑动变阻器来实现波形的水平上下移动。具体实现为:将滑动变阻器R上的电平通过模数转换器化为数字信号传给FPGA,FPGA再将此时的电平值叠加在X轴输出地址或者Y轴输出数据上,就可以实现波形的水平上下的移动。
2、时间光标电压光标的实现
将滑动变阻器分时复用。利用滑动变阻器改变R上的电平值,从而实现光标的上下左右的移动,再利用简单的软件计算得出两光标之间的时间差、电压差。
3、视窗扩展
所谓视窗扩展,就是用光标截取一段波形,然后将这段波形扩展显示,让观察者可以更详细的分析所测信号的波形。光标的移动我们仍利用滑动变阻器。正常显示波形时的其实只是采样点二分之一。视窗扩展显示时才是全部的采样点。
4、简单频谱分析
这里采用的是64点的DFT实现的频谱计算。仅仅只是简单的显示了一下频谱的形状,并不
打算将幅值精确到何等地步。所以实现起来比较简单。
二、 系统总体设计与实现方框图
程控放大
测频触发电路
通道选择
AD9220
滑动变阻器
MAX1270
单片机
总线接口
测频
MAX1270采样
触发存储
AD9220采样送显
RAM
读地址
DAC0800
DAC0800键盘
LCD
通道1 通道2
图1 系统总体实现框图
三、 理论分析与参数计算
1、 垂直分辨率与A/D 位数的关系
示波器垂直方向共8格,要求每格32级,共有32×8=256级。
2log (256)8n ==
因而,采用8为以上的A/D 即可,我们使用的是Analog 公司的12位A/D 转换器AD9220。但是在实际使用中,我们只用了AD9220的高八位。系统的垂直分辨率为8位,用百分数表示为1/256=0.4%。
2、 扫描速度与采样频率的关系
假设扫描速度为1s/div,每格点数为n,采样频率为fs 。 则:fs =n/t;
当n =20时,针对不同的扫描速度,可得到不同的采样频率。
3、幅度程控
用模拟开关AD7503、AD844及精密电位器来构成程控放大电路。我们设定输入信号的最大幅度VPP为20v,而AD9220的最大电压幅度为5v,垂直分辨率的范围为12.5mv/div到2.5v/div。所对应的放大倍数如下表1所示:
2500 1250 625 312.5 125 62.5 25 12.5
垂直灵敏
度(mv/div)
放大倍数0.25 0.5 1 2 5 10 25 50
表1
四、主要功能电路的设计
1、通道选择与程控放大电路
考虑到双通示波,我们决定用模拟开关CD4051来切换两个通道,CD4051最大切换频率为2MHz,基本满足题目要求。程控放大器采用AD844,因为最大放大倍数为50倍,通过的信号的最大频率超过100KHz,增益带宽积应大于5MHz。AD844在放大十倍时的3dB增益带宽积为33MHz,满足题目要求。实际电路图见图2所示。
图2 通道选择与程控放大电路图
2、测频触发电路
我们将测频电路和触发电路集成在一个比较器上。比较器采用迟滞比较模式,这样能够很好的整形。在信号进比较器之前,我们先将信号添加一个直流电平。此直流电平可以通过调节电位器R12改变。然后再通过一级射随,使阻抗匹配。将比较器2脚的电压调到小于100mV,这样整个电路的触发电平就可以从100mV到5V调节了。当满足触发条件时,比较器输出正脉冲,没有触发时,输出则一直为低电平。
图3 测频触发电路
3、 AD9220转换电路
我们AD9220的电路图基本参照Datasheet 所示的典型连接图,如图4所示。C12,C13,R3构
成一高通滤波器,其截至频率为:12133
1
2()f C C R π=
+?=0.1Hz 。VREF 与VINB 连接,
相当于给输入信号叠加了一个2.5V 的直流电平,正好使输入的差分信号变成0~5V 的单极性信号,满足该芯片对输入信号的要求。CLK 由外接的8.388MHz 的晶振提供。
图4 AD9220电路图
4、FPGA 部分
因为为高速AD 采样,倘若用单片机来控制AD 采样的话,速度不够。所以我们将与AD 转换器相关的处理工作放在FPGA 内部处理,包括控制采样,数据存取,触发判断,扫描显示。
图5为触发判断模块。题目要求上升沿触发。我们用硬件实现了触发整形,然后在FPGA 内用状态机模拟触发状态。从而正确的判断触发,进一步控制其单次触发和连续触发。
din[7..0]chuf azi[7..0]clk1clk2en wen clkcf _2sn
data[11..0]
bijiao
inst17
P1[4]clksmp chuf azi[7..0]ad9220number[11..4]
raddr[11..0]
P1[7]CLK_40P1[1]
signal_in 触发判断和写数据模块
图5 触发判断模块
图6为X 轴Y 轴扫描模块。该模块主要用来做与显示波形相关的工作。该模块中锯齿波的频率为240Hz 。我们将两个滑动变阻器上的电平值通过MAX1270采进FPGA ,并引入此模块。然后辅以单片机的控制信号wen[3:0],P1[1]实现波形移动,光标,视窗等扩展工作。
clk en wen[3..0]datain[7..0]czpz[11..0]spy d[11..0]b[7..0]a[7..0]sn qa[7..0]qb[7..0]wd[10..0]wother[10..0]dataout[7..0]
waddr
inst25
P1[0]wother[10..0]waddr_1[10..0]
y data[7..0]
data1270_2[11..0]data1270_1[11..0]qa[7..0]
sbxpd[3..0]scjz[7..0]sccd[7..0]P1[1]qa[7..0]qb[7..0]
CLK_250K X 轴Y 轴扫描模块
图6 显示模块
图7为数据存储模块,为三口RAM ,其中一个口为写数据口,另外两个为读数据口,读数据口一个用来显示,一个用来供单片机读出数据进行分析。
AND2
inst21
NOT
inst23
8 b i t s 2048 w o r d s
data[7..0]
w raddress[10..0]w ren
rdaddress_a[10..0]rden_a
rdaddress_b[10..0]rden_b w rclock rdclock
qa[7..0]qb[7..0]
RAM_3O
inst46
NOT
inst47ad9220number[11..4]
P1[0]
CLK_40
raddr[10]P1[4]raddr[10..0]
qa[7..0]wother[10..0]nRD
RAM_A[10..0]
RAM_3P[7..0]
数据存储模块
图7 数据存储模块
图8为DFT 分析模块。对于周期信号,以64倍的信号频率的采样频率进行采样,所以对于周期信号只能分析其32次谐波分量。对于非周期信号,以4MHz 的固定采样率进行采样。存储1024个点,这样还可以分析非谐波分量。
NOT
inst30
1024 W o r d (s )R A M
Block Ty pe: AUTO
data[7..0]
w raddress[9..0]w ren
rdaddress[9..0]rden w rclock rdclock
q[7..0]
RAM_1K
inst31address[9..0]clock
q[7..0]
ROM_1K
inst33
address[9..0]clock
q[7..0]
ROM_1K
inst34
sin_d[7..0]signai_in[7..0]cos_d[7..0]CLK_5clr
signal_out[25..0]
DFT
inst11
CLK_5sin_d[7..0]cos_d[7..0]
raddr1[9..0]
raddr1[10]
SIN[7..0]
raddr2[9..0]
CLK_40
COS[7..0]
raddr3[9..0]CLK_40
图8 DFT 分析模块
五、 系统软件的设计
六、 系统测试与数据分析
本系统没有对数据进行详细的测试。
七、 系统总结与分析
虽说没有进行详细的数据测试,但从整体功能上讲,本系统完全达到了题目要求,并且从相关指标和扩展功能上都有了很大的提升。但是系统仍然存在以下不足:
(一) 显示波形的不完美。其实本系统最重要的就是让波形显示得完美无暇。但是我们做
得不够好,仔细看的话,一个周期总会时不时出现一个两个坏点。这个与我们AD 采样的好坏程度是直接相关的。我们后来在实验结束后,尝试了另一种高速AD (man1425),这个的效果似乎比AD9220要好一些。值得推荐一下!
(二) 其实视窗显示的方案有好几种!譬如可以不插点,直接将点距拉开,还可以采用线
性插值法,也可以多采一些点,视窗显示的时候才显示全部点。我们采用的是最后一种方案,其他的没有尝试。也许其他方案效果会更好一点。
(三) DFT 的计算速度太慢。计算1024个点的DFT 要花1s 钟的时间。实时性不够强。我
们如果采用FFT 的话,可以将时间压缩至15ms 以下(这个大全曾用实例证实过)。但是碍于精力和技术,我们没有采用FFT 。
(四)还可以将失真度分析,X-Y 轴显示等功能扩展到本系统中。