APP下载

基于FPGA的简易手持式示波器设计

2017-04-23孙绪福

电子技术与软件工程 2017年5期
关键词:示波器

孙绪福

摘 要 本文设计的简易手持式示波器是基于FPGA应用技术,以PCF8951为数据采集前端。通过内建RAM进行对采集数据的存储以及波形的显示。利用有限状态机实现对不同状态之间的转换,最后显示在ST7735液晶显示屏上。本设计最大的特点是所用器件都为低功耗、低成本、小体积的器件,能够实现手持式设计。通过在开发板上的测试结果表明,该设计能够实现示波器的基本功能,且大大降低成本及减少体积。

【关键词】FPGA 示波器 PCF8591 有限状态机

示波器是一种应用十分广泛的电子测量仪器,能够方便地测量各种不同的波形。但是传统的模拟示波器具有体积大、成本高、携带不方便等缺点,因而使得许多电子实验限制在了实验室中进行。由于这种局限性推动了示波器朝着微型化、简单化、廉价化的方向发展。对于精度要求不是特别高的情况下,生产出一款便携手持式的低成本数字示波器将会有很大的需求和市场价值。由此本文提出一种简单手持式示波器设计方案,基于FPGA应用技术,实现了对信号的实时显示,以及具有调节扫描速度和垂直灵敏度的功能。本设计方案均采用体积小、成本低的元器件进行设计,在保证一定精度的前提下大大减小体积以及降低成本。在简易的电子实验中此设计能够发挥重要的作用。

1 系统设计

数字示波器是由取样存储、系统控制和读出显示三大部分组成,它们之间通过数据总线、地址总线、和控制总线相互联系和交换信息,以完成各种测量功本次设计采用莱迪思LCMX02-4000HC芯片,通过将外部输入模擬信号经过PCF8591芯片进行A/D转换,将转换后的数据根据旋转编码器EC11设定的触发条件以及采样频率,筛选出符合条件的数据,之后将数据送入RAM中保存。当RAM存满后,状态切换至读RAM状态,通过对ST7735显示屏的初始化以及对RAM中数据的适当操作后,将信息呈现至屏幕上,以实现示波器的基本功能。此外,还设置了复位按键以实现示波器的复位功能。本次设计主要包括FPGA逻辑控制模块、A\D数模转换模块、触发条件及采样频率调节模块、RAM的读写控制模块、液晶显示模块图1所示,为本次设计的总体示意图。

1.1 A/D转换模块

由于本设计旨在设计低成本、便携式示波器,对转换速度、转换精度要求相对降低,故采用8位串行输出A/D转换芯片进行A/D转换模块。综合对各A/D转换芯片的比较后,本设计采用恩智浦半导体公司生产的具有8位CMOS数模转换芯片PCF8591以实现对输入信号的采样。该芯片们具有单独供电、低功耗的特点,在2.5V~6V的工作电压内,采样速率取决于I2C总线的速度,在标准速度下可达100kbps,能够实现本设计对采样速度的要求。此外,它同时具有4路模拟输入端及1路输出端,可编程为单端或差分输入,3个地址引脚A0、A1和A2用于编辑硬件的地址,允许同时将多个器件接至总线本设计中采用超小型SOP-16贴片式封装以减少器件所用面积,有利于实现便携式携带的要求。综合以上特点,该芯片适用于本次关于简易手持式示波器的设计,能满足各项指标要求。A/D转换模块程序的编写,主要采用设计有限状态机(FSM),通过对不同状态的计数,实现在初始化、开始、写指令、读数据、结束状态之间的转换。图2所示为A/D转换模块的原理图,其中模拟信号的输入,通过连接母座以送入芯片模拟输入端。

1.2 触发条件及频率调节模块

考虑到输入信号频率及幅值的不同,在本设计中可以实现对采样频率以及触发条件的改变。鉴于旋转操作的简易性,本设计采用ALPS常用金属轴编码器EC11实现对采集频率以及触发幅值的调节,通过对编码器的左右旋转实现增大与缩小的功能。EC11编码器属于小型高精度旋转式编码器,15脉冲30定位,20脉冲20定位的高分辨率,适用于微小电流回路的电子设备其上还带有0.5mm按压开关,在本设计中用于切换采样频率调节模式和触发调节模式。

频率调节通过旋转编码器的左右旋转,改变采样计数值的大小,以实现频率的改变。以计数标志cnt_sample为例,初始设定cnt_sample为5,即每5个采样点放进一次RAM当中用以之后显示。当左旋一次后,设定cnt_sample自加1,则每6个采样点放进RAM当中,右旋反之,由此实现了示波器采样频率的增大。

触发幅值调节通过旋转编码器的左右旋转,改变触发边界条件的大小,从而实现对不同信号触发条件的改变。以幅值为1.5V的正弦波为例,若触发条件设置为2V,则始终无法达到触发条件,可以通过旋转编码器改变触发条件,以获取完整的信号波形。同时为避免始终无波形显示的情况,本设计中通过设定计数环节,若连续16次未有满足触发条件的信号,则设置为已满足触发条件,实现对波形的显示。此外,触发条件的设置,还具有稳定波形的作用,由于A/D转换时时进行,若要保证波形的稳定以及显示时无视觉残留,可以通过设定合适的触发条件,当满足触发条件后,才将采样数据保存至对应RAM中,以达到稳定波形的作用。图3所示为本次设计中旋转编码器的原理图。

1.3 RAM的读写控制模块

由于A/D采集信号的保存以及LCD显示数据的读取共用同一个RAM,我们通过设立不同的标志位,来确定进行A/D转换数据存RAM操作还是将RAM中数据输出显示至液晶屏操作。

当进行存RAM操作时,信号经过A/D转换输出8位二进制数据后,由于本此设计所采用的LCD显示为128*160RGB三色显示,数据存储深度为128,我们可以将经A/D转换后的8位二进制数左移一位,使采集数据范围为0 ~127,恰能满足数据存储要求。当满足触发条件后,根据采样条件,将符合条件的数据读入RAM中直至存满160个数据。此时RAM中储存的就是采集到的信号。

当进行读RAM操作时,为了起到显示波形的效果,我们将RAM中除了采集到的160个数据外全部设置为黑色显示,将信号设置为白色显示,由此我们可以实现在显示屏上看到白色的波形。图4所示,为本次设计中RAM中数据部分示意。

1.4 LCD显示模块

本次设计采用ST7735液晶屏,具有132(H)*RGB*162(V)位大小的RAM,在本次设计中,数据保存至128*160,剩余的部分作为边缘显示,以更好地實现示波器的显示效果。该显示屏具有红、绿、蓝三色,可以根据对这三种色彩的16位二进制数据进行调配实现其它色彩的显示,例如本次设计中白色16hffff以及黑色16h0000为了达到更好的显示效果,本设计采用竖屏显示。由数据手册,我们可以得到驱动该器件的指令,利用有限状态机实现对命令的写入以及对RAM中数据的读入。当RAM中数据显示结束后,状态切换至存RAM操作。图5所示为本次设计中LCD模块显示原理图。

2 程序设计

本次程序采用Verilog语言进行编辑使用Lattice diamond设计软件进行综合与调试。顶层模块设计主要包括A/D转换模块、读写选择模块、采样频率调节模块、触发条件设置模块、LCD显示模块以及LCD读写RAM模块。关于输入输出端口及顶层模块和各模块的关系描述如下:

module Oscilloscope //示波器模块

input clk, //时钟输入

input rst, //复位按键

input encode_left, //旋转编码器左旋

input encoder_right, //旋转编码器右旋

input encoder_key, //按下旋转编码器

inout ad_sda, //PCF8591数据端

output ad_scl, //PCF8591时钟端

output lcd_rst, //LCD复位端

output lcd_bl, //LCD背光设置端

output lcd_dc, //LCD的D/C端

output lcd_clk, // LCD显示SPI时钟

output lcd_data // RAM读写数据端口

);

wire sample_en; //取样使能信号

wire sample_finish; //取样完成标志

wire display_en; //显示使能信号

wire display_finish; //显示完成标志

wire ad_finish; //ad转换完成标志

wire [7:0] ad_data; //8位串行数据

wire [7:0] trigger; //触发条件

wire wr_clock; //RAM写时钟

wire [7:0] wr_add; //RAM写地址

wire [131:0] ram_ad; //RAM中写对应AD转换数据

wire re_clock; //RAM读时钟

wire [7:0] re_add; //RAM读地址

wire [131:0] ram_lcd; //RAM中LCD读数据

Mode_choosemode_choose //选择进行显示/读数据模块

.clk (clk ), //系统时钟

.rst (rst ), //复位按键

.display_finish (display_finish ), //显示完成标志

.sample_finish (sample_finish ), //采样完成标志

.sample_en (sample_en ), //采样使能标志

.display_en (display_en ) //显示使能标志

);

AD_conversionad_conversion //A/D转换模块

.clk (clk ), //系统时钟

.rst (rst ), //复位按键

.ad_scl (ad_scl ), //AD转换控制时钟

.ad_sda (ad_sda ), //AD转换数据端

.ad_finish (ad_finish ), //AD转换完成标志

.ad_data (ad_data ) //数据存储寄存器

);

Parameter_setparameter_set //参数设置模块

.clk (clk ), // 系统时钟

.rst (rst ), //复位按键

.encode_left (encode_left ), // 左旋标志

.encode_right (encode_right ), // 右旋标志

.encode_key (encode_key ), // 按键标志

.trigger (trigger ), //触发条件设置

.ad_finish (ad_finish ) //AD转换完成标志

);

AD_SampleAD_sample //AD存RAM模块

.clk (clk ), // 系统时钟

.rst (rst ), //按键复位

.ad_finish (ad_finish ), //AD转换完成标志

.ad_data (ad_data ), //AD转换后数据

.trigger (trigger ), //触发条件

.sample_en (sample_en ), //采样使能标志

.sample_finish (sample_finish ), //采样完成标志

.wr_clock (wr_clock ), //RAM写时钟

.wr_add (wr_add ), //RAM写地址

.ram_data (ram_data ) //RAM中数据

);

LCD_DisplayLCD_display //LCD显示模块

.clk (clk ), //系统时钟

.rst (rst ), //按键复位

.trigger (trigger ), //触发条件

.display_en (display_en ), //显示使能标志

.display_finish (display_finish ), //显示完成标志

.re_clock (re_clock ), //RAM读时钟

.re_add (re_add ), //RAM读地址

.ram_data (ram_data ), //RAM中数据

.lcd_rst (lcd_rst ), //LCD复位

.lcd_bl (lcd_bl ), //LCD背光控制

.lcd_dc (lcd_dc ), //LCD的DC端

.lcd_clk (lcd_clk ), // LCD传输SPI的时钟

.lcd_data (lcd_data ) // LCD数据端

);

endmodule

采用Verilog语言进行电路设计,能够在每个抽象层次的描述上对设计进行仿真设计,及时发现可能存在的设计错误,能够有效缩短设计周期,并保证设计过程中的正确性,以此实现我们最终的设计。

3 设计验证

通过在开发板上的测试结果表明,虽然LCD液晶显示模块的分辨率较低,但依然可以实现示波器的基本功能,特别是对于频率不太高的模拟信号,能够在屏幕上清晰地显示波形对应的像素点。此外,通过调节旋转编码器,也实现了预定的切换模式、调节采样频率及改变触发条件的功能。通过Lattice diamond自带的仿真软件测试得出本次设计运算速度较快,频率显示较为准确,能够实现数据的快速读取。本设计方案具有简单易操作的特点,此外还具有体积小、功耗低、成本低的优点。由于FPGA并行执行的特点,大大提高了系统的性能,能够实现手持式设计同时能满足基础电子实验的需求。此外,本次设计的示波器综合成本相对于市场销售的手持式示波器大大降低,便于推廣,有较大的市场价值和实用价值。

4 结论

本设计利用FPGA、A/D转换芯片、LCD液晶显示器、旋转编码器实现了对输入模拟信号的采样、存储以及波形的显示功能,并增添了调节采样频率及触发条件的功能,实现了对简易手持式示波器的设计。通过验证得出本设计具有较快的数据传输速度及较高的精度,能够满足日常的电子相关测量需求。本设计的低成本与小型化能够实现廉价手持式示波器的广泛化应用。此外,也可通过使用12位、16位并行A/D转换芯片以提高本设计的精度与速度,利用更高分辨率的LCD显示以实现对本设计的更高要求。

参考文献

[1]朱英明.数字示波器原理与测试分析[J].测试技术,2007(Z1).

[2]雷贵,胡福云.基于FPGA的虚拟简易数字存储示波器设计[J].现代商贸工业,2011(08).

[3]CoolborXie,PCF8591芯片手册,Philips公司.

[4]ALPS公司,旋转编码器EC11数据手册,ALPS公司.

[5]孙盛坤,丁昊等.基于FPGA和TFT彩屏液晶的便携示波器设计[J].现代电子技术,2011.

[6]夏宇闻.Verilog数字系统设计教程[M].北京航天航空大学出版社,2008.

猜你喜欢

示波器
基于LabWindows/CVI与TekVISA的Tek示波器远程测控软件设计
一款教学示波器的Y通道设计与实现
可携带式虚拟双踪示波器
基于FPGA的手持式示波器的设计与实现
高速光学示波器