历史上的今天
今天是:2024年10月29日(星期二)
2019年10月29日 | 基于FPGA的手持式示波器设计
2019-10-29 来源:21ic
0 引言
目前,数字存储示波器以其体积小、携带方便、准确率高的独特优势逐步取代了传统的模拟示波器,并向着更为小巧的低成本、便携式应用方向发展。近几年来,许多研究者充分利用FPGA片上的资源丰富、使用灵活、开发成本低的优点提出了一些数字示波器的虚拟仪器解决方案和嵌入式解决方案,这些设计采用FPGA片内资源来实现数字示波器的数据存储(RAM)、触发控制、数字信号运算与处理、显示终端驱动等功能,这在很大程度上能够降低示波器成本和复杂度,但是这些设计方案往往会使用到微处理器(8051/ARM/NoisⅡ)作为系统调度和数据处理的核心或采用VGA显示器作为图形输出终端,还不能达到低成本的手持便携使用要求。
LCD12864液晶显示模块具有低压、微功耗、寿命长、超薄等显著优点,比较适合低成本、便携式电子信息产品来实现字符和图形的显示。因此,文中就以LCD12864液晶模块作为数字示波器的低成本图形显示终端;基于FPGA应用技术,设计出了具有模拟信号任意电平、上升沿或下降沿触发;垂直灵敏度和扫描速度调节、波形参数的直接读出特点的低成本手持式数字示波器。
1 手持式示波器的系统设计
基于FPGA的手持式示波器系统结构框图如图1所示,系统主要包括片外AD芯片、配置芯片EPCS16、以及片内PLL模块、采样时钟配置模块、按键扫描模块、触发控制模块、双口RAM存储模块、采样数据图形化与转置模块、LCD12864显示驱动模块等。示波器的工作过程大致如下:经过片外ADC128S022采集的12 b数字信号,再经过片内图形化模块后转换成1列LCD屏显示的点阵数据;为了适应液晶屏按行读出的工作方式,需要通道数据转置模块把按列采样的点阵数据转置成按行排列的数据;触发模块主要是要根据用户设置(键盘输入)的触发电平及模式来控制RAM的写数据开始或停止指令,同时生成对应的写数据地址;数控采样时钟模块可以产生多种不同的采样时钟以满足不同频率信号的测量显示;LCD驱动模块主要是依据LCD的工作时序产生RAM的读数据地址和LCD模式控制指令。

图1所示手持式示波器的设计关键在于根据LCD12864显示模块的工作时序来组织双口RAM的读/写、片外A/D的数据采集;这样才能保证测量的模拟信号波形显示正确。下文就对片外A/D模块、双口RAM的读写控制和LCD显示驱动3个关键模块做出比较具体的设计描述。
2 A/D转换模块
系统选用德州仪器公司(TI)的12位CMOS模/数转换芯片(ADC128S022)实现模拟信号的数据采样,该AD可以通过通道选择信号实现8通道的模数转换,并且是单电源供电;功耗极低,在2.7~5.25 V的供电范围内,功耗只有1.2~7.5 mW;转换速率可以达到50~200 KSPS,通过串行外设接口(SPI)与外部器件交换数据,芯片采用16引脚的超小型TSSOP封装,这些特征都很适合小型的便携式电子产品上使用,ADC12 8S022的内部结构如图2所示。

3 双口RAM的读写控制
图1所示手持式示波器设计结构中的双口RAM的每位数据分别对应于LCD12864屏上的一个像素点,要求存储容量8 192 b(1 024×8 b)。存储器的管理需要满足采集数据(64 b)按列实时写入、又要满足LCD模块按行读出数据(8 b)的要求。
为此,首先需要把64 b的图形数据按位分成8段分别存储在8个128x8 b的RAM单元中,这样才能保证每个RAM存储单元的读/写数据位宽一致。其次,采集的波形数据需要经过行列数据转置模块,才能做到RAM数据的按行写入。行列数据转置模块采用了流水线结构,在触发启动信号和时钟的共同作用下把采集到的列点阵数据转置成适合LCD屏显示的行数据格式。

图3所示为双口RAM存储单元的读写顺序示意;经过转置后行数据,按照图中所示的横向“S”形顺序写入,而在数据读出时,需要按照逐行的竖向的“S”形顺序进行读数据,这是LCD12864模块控制时序要求的,按列逐字的写入存储器组织方式能够提高RAM的缓存数据刷新频率,同时也对存储器的读写地址生成电路形成了较高设计难度。
4 LCD显示驱动模块
要驱动LCD模块显示正确图形,就需要根据液晶屏的控制时序和用户指令集,设计出正确的有限状态机(FSM)来完成LCD模块的初始化、控制命令和写入数据操作过程;并产生RAM读数据的地址,图4所示就是LCD显示驱动模块的状态迁移。

在LCD模块的状态转换图中,系统上电后,首先进行持续大约0.05 s的自动复位(需要根据时钟频率调整),然后进入LCD模块的初始化过程,因此在状态机中设置有3条条件转换路径来实现LCD屏的工作模式切换:初始化、显示数据和起始行地址写入。同时也在关键路径上设置有可以配置参数的延时——在方便LCD模块的工作调试的同时,使LCD模块一直工作在写屏模式,驱动LCD模块动态实时显示、产生双口RAM的
读数据地址。
5 设计验证
使用DEO_Nano开发板(Altera FPGA Cyclone IVEP4CE22F17C6N)、液晶模块(KB12864KZK)和4×4键盘组成手持式示波器的硬件测试验证平台;示波器设计项目经过OuartusⅡ10.1 FPGA开发平台的编译和芯片下载配置后得到的运行效果图如图5所示,图中(a)是手持式示波器开机的画面;(b)是三角波的测量效果;(c)是正弦波的测量效果;(d)是下拉菜单隐藏效果。示波器参数设置采用5键输入的下拉菜单模式;设置时,屏的最下端显示参数调整菜单,设置完成确认后菜单自动收起隐藏。

实验结果表明,采用LCD12864液晶模块作为手持式示波器的显示终端,虽然显示分辨率较低,可以清楚看到图形的像素点;同时,这也是采用LCD12864屏的独特优点所在——能够根据一个周期波形的像素点数和采样信号频率直接读出被测信号周期,假如采用100 kHz(周期10μs)的采样率;测得显示屏上的一个完整周期的波形点数是50,那么该被测信号的周期就是500 μs。
6 结论
文中所设计的以LCD12864模块为图形显示的低成本手持式示波器,最终在DEO_Nano FPGA开发板上的验证结果表明,完全实现了模拟信号的测量;垂直灵敏度和扫描速度调节、波形参数直接读出功能;这不但实现了示波器的廉价和便携,而且还具有被测信号周期直接读出的优点。
上一篇:示波器特点和选购指导
下一篇:简易数字存储示波器的设计
史海拾趣
|
在04年刚刚毕业时,有幸进入了TPMS行业,和几个同时兴致勃勃的干了起来,当时并不知道TPMS是个什么东西,也不会象现在这样对行业有什么研究,只知道把工作做好,拿到应得的工资,但也是拉开了大干一场的架势,毕竟刚毕业,对技术也是很有神秘感,特 ...… 查看全部问答> |
|
一个带LCD驱动的MCU. 我想用这个MCU驱动同样的LCD两块. 在电路中就是将两块同样的LCD并联在MCU的LCD驱动口. seg/com口上. 请问这样是否可以?… 查看全部问答> |
|
本人新手 题目是基本上就是用DSP控制无线模块nRF24L01 再用DSP实现算法 报警之类的,问哪位高手曾经做过这个,一起交流一下。QQ:13792650… 查看全部问答> |
|
如题:当ping 1000字节包的时候是正常的,当ping 10000字节包的时候,以太网死掉,此时ping 32字节的包也ping不通,我找到底层程序内的定义,最大包长为1500字节,但我能不能不改这个数,ping 10000字节包的时候ping不通过,但我通过ping通1500之内 ...… 查看全部问答> |
|
原理图如下: 修改: LED灯前的电阻换成10K 1K的会烧坏LED 测试结果: 输入:(平均)8.2V 实际在Vin端只有7.8V左右 也可能是表的误差 最低为7.1V 输出:5.85~6.16V 检验:1、芯片输出脚与输 ...… 查看全部问答> |
|
最近在使用CCS5.2玩28069,发现CCS5.2的小锤子可以选RAM模式和Flash模式,在C2000 Launchpad的例程里找到了这样的用法,但是自己新建的工程怎么也弄不成,有没有弄过的说一下怎么配置的!… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:06 编辑 2013年电赛全国奖评审--复测名单 --D题 [ 本帖最后由 lmx 于 2013-9-22 23:48 编辑 ] … 查看全部问答> |




