0 引言
在电子技术领域中,示波器的应用非常广泛,使用它可以方便直观地观察到信号的全貌,并测量信号的幅度、频率、周期等基本参数。传统的模拟示波器显示时采用荧光物质的余辉时间都是一定的,导致其难以观测到周期较长的信号。另外,模拟示波器还无法对信号进行一些特殊的数学处理(如FFT)。而数字示波器正好可以克服模拟示波器的不足,它采用各种先进的测量技术来满足各种应用。如基于采样原理,采用高速A/D转换器实现高速数据采集,将模拟信号数字化,然后借助处理器强大的数据处理能力实现各种数字信号处理算法,将波形以图形的方式直观地显示出来,并能够得到被测信号各种丰富的参数。
1 系统总体方案
本设计的系统框图如图1所示,得益于FPGA的灵活性,系统的大部分功能都在FPGA内部完成,使得整体结构非常简洁。外围电路主要包括A/D转换模块、LCD显示器、SD卡、FLASH和按键。
A/D转换模块的功能是实现模拟信号到数字信号的转换;FLASH模块的功能是存储SoPC(System-on-a-Programmable-Chip)片上系统的固件程序;SD卡模块的功能是实现测量信息的长期、大量存储,提供与PC机的接口,便于后期在计算机上进行分析;LCD模块的功能是对测量信号波形和相关参数的实时显示;按键模块的功能是提供整机的调节和控制接口。
2 FPGA逻辑功能模块设计
FPGA内部系统框图如图2所示。它主要由采样率控制器、触发控制单元、FIFO控制器、频率测量单元、按键控制单元和LCD驱动器构成。
3 SoPC设计
本设计中使用的是NiosⅡ/f处理器,使用硬件乘除法器,工作于50 MHz。使用FPGA内嵌的RAM块作为系统的运行内存。采用FLASH作为片外存储器,保存用户程序,其通过Avalon总线三态桥与NiosⅡ处理器相连。
3.1 SoPC软件设计
系统开机调用相关函数初始化LCD,SD卡和FAT文件系统之后,首先绘制图形界面,输出固定信息,接着读取波形参数,将其显示在LCD上,然后等待FIFO写满。若FIFO写满则将FIFO数据读入缓冲区中,同时在屏幕上绘制波形,获得波形的最大和最小值。最后如果有用户按键输入则处理按键事件,否则检测波形参数是否变化,若有变化则更新显示,否则等待FIFO写满,进行下一次显示。流程如图3所示。
3.1.1 SoPC底层软件设计
底层软件为各设备的驱动程序,主要有:
(1)LCD驱动。根据显示内容的需求,LCD驱动程序设计了以下函数:
①发送数据/命令:将数据/命令通过驱动器发送到LCD;
②LCD初始化:完成LCD的上电复位和初始化;
③LCD清屏:清空显示;
④输出一个像素:在指定位置输出一个指定颜色的像素点;
⑤画直线:画从(x0,y0)到(x1,y1)的指定颜色的直线;
⑥画矩形:画从(x0,y0)到(x1,y1)的指定颜色的矩形,可选择是否填充;
⑦输出一个字符:在指定位置输出一个指定颜色的字符;
⑧输出一个字符串:在指定位置输出一个指定颜色的字符串。
(2)SD卡驱动。SD卡通信采用SPI模式,SD卡驱动的函数及功能为:
①发送数据/命令:将数据/命令发送到SD卡;
②读取数据:从SD卡读取一个字节;
③SD卡复位:SD卡上电后复位并使其进入SPI模式;