(多图) 基于FPGA的简易可存储示波器设计
FIFO功能单元设计
本系统的A/D采样速率比较高,采样周期达到16.7ns,而选用的华邦公司单片机77E58,在晶振40MHz的读写周期是100ns,而且总线的传输速率又比较低,因此两者在速度上无法匹配。在这种情况下,必须要在高速采集和低速处理之间建立相应的缓冲途径才能保证系统的正常工作。为此在A/D转换器和单片机处理器中间加入一个先入先出式缓冲器(FIFO),以缓解高速信号和低速设备之间的接口矛盾。本设计中利用EP1K50QC208中自带的EAB(嵌入式逻辑块),通过Quartus II中的LPM工具直接生成两个512*8位的FIFO,作为两路A/D转换器的数据缓冲。Quartus II中产生的图形符号和其时序波形图形如图6所示。FIFO的输入信号有数据输入信号,直接和A/D转换器的输入相连下;写信号和写使能信号,写信号和上述频率选择信号相连,可以以合适的速率将数据写入FIFO,写使能设置为永远有效;读信号和读使能信号,这都有单片机发出的控制信号给出;异步清零信号则在每次写FIFO前将其清空。输出信号有数据信号,和单片机的数据线相连,传送数据;满标志信号,当有效时停止对FIFO的写操作;空标志信号,当有效时停止对FIFO的读操作。
图6? FIFO图形符号和其时序波形图
图7 测频模块的符号图
频率测量模块设计
??????????????????????????????????????????????????????????????????????? 图8? 双通道波形显示
?????? 频率测量模块在本系统中起着非常重要的作用,它不仅决定着采样频率,还决定液晶显示屏幕的基本时间基准。测量频率其实就是单位时间内的计数。在本设计中,测频模块的具体设计思路为:首先将A/D转换器转换后的数据通过一个比较器得到测频脉冲,由于本设计中的A/D将0V电压转换为0x80,为避免在0V附近的小信号振荡造成测频误差,将比较器的固定比较值设定为0x88。然后将测频脉冲通过一个D触发器同步后便开始计数,在计数过程中为避免尖脉冲或毛刺信号造成对计数的影响,根据上次测频的结果选择合适的过滤脉宽,即比给定脉冲宽度小的信号脉冲将不会被计数,提高了整个测量的精度。整个测频模块的符号图如图7所示。在图7中,compare为比较模块,然后经过触发器同步后,通过脉宽过滤模块(FreLatch1)后到计数测频模块(MeasureFrequency),测量得到的数据通过八位寄存器counter_out1、counter_out2和counter_out3输出。OneSecondPulse模块为产生1s脉冲的模块,为计数提供基准参考脉冲。
液晶显示及键盘模块
在本次设计中,我们选用内置SED1335控制器的液晶显示模块MS320240B,分辨率为320*240。不仅可以单独的进行文本显示或图形显示,还可以进行图形文本合成方式显示。在本系统中能够把被测信号的波形、两个游标与波形相交点的电压值及时间值显示在液晶屏上。在液晶屏的显示如图8所示。
在实现人机通信功能的单片机通信输入设备中,最简单的是由按键组成的开关矩阵构成的键盘,它随时可以发出各种控制命令和进行数据输入。通常按键所用为机械开关,有很多缺点,主要是按键被按下或弹起时都会有轻微的抖动,抖动时间和开关的机械特性有关,一般为5ms~10ms。为了避免在抖动期间扫描键盘得到错误的行值和列值,一般在检测到有键按下后延时10ms再进行扫描。在本设计中,采用一个3*8的行列式键盘,发出各种命令来对采集器进行类似于示波器按钮的操作。
图9 简易示波器的上位机控制面板
USB通信单元
本次设计采用Cypress公司的CY7C68013芯片实现USB传输模块的设计,CY7C68013是符合USB2.0标准的芯片。通过USB总线把采集的数据实时的传递给计算机,便于上位机也可以实时的显示波形,还可以很方便的存储数据。