本发明属于虚拟仪器技术领域,更为具体地讲,涉及一种高效数据交互的无线智能示波器。
背景技术:
虚拟仪器是以计算机或工作站作为仪器的硬件平台,并结合软件和i/o部件来实现传统仪器的功能。虚拟示波器作为虚拟仪器的一种,将传统示波器的功能一分为二,把与i/o相关的部分同数据处理部分分离开来,从而可以在i/o部件不变的情况下,通过强大的软件技术提升数据的处理能力,最终方便地扩展、裁剪仪器系统的功能和规模。
随着电子信息技术的不断发展,智能终端(如手机、平板电脑)得到了长足的发展,极大地提升人们生活的方方面面。人们可以使用它完成很多以往只能在计算机上完成的工作,所以使用智能终端作为虚拟示波器中的数据处理单元是非常合适的。与此同时,新的网络理论、新的网络架构以及新的网络设备结构的出现,促使互联网技术有了很大的进步,网络带宽和数据传输速度较以前有了巨大的提升。现今,局域网的数据传输速度完全可以满足一定规模的数据通讯,所以采用无线网络技术作为虚拟示波器中数据采集部分与数据处理部分之间的数据通道是可行的。正是基于以上两大技术的发展,无线智能示波器应运而生,它具有体积小巧、价格低廉、无物理线约束等特点,适用于物理空间小、危险系数高等需远程操控的信号观测场合。
对于一台示波器而言,无论其结构是分离式的还是一体式的,数据采集链路都是重中之重。所谓的数据采集链路指的是数据流在示波器中从数据采集电路测量原始模拟信号起到数据显示在屏幕上为止的传输过程。该链路直接影响着示波器技术指标的高性能实现。对于无线智能示波器而言,其数据链路由多个环节构成,其中一个重要且变数较大环节就是无线网络,所以要保证数据高效、快速、准确地收发首先需要充分利用网络带宽。
技术实现要素:
本发明的目的在于克服现有技术的不足,提出一种高效数据交互的无线智能示波器,以提高数据采集部分(数据采集板)与数据处理部分(智能终端)之间的数据传输速度。
为实现上述发明目的,本发明高效数据交互的无线智能示波器,包括:
一前端数据采集板,用于完成数据的采集和缓存;
一智能终端,用于完成数据的处理和显示,以及与用户的人机交互;
这两部分(前端数据采集板与智能终端)采用基于tcp协议的c/s(clientandserver)网络通讯模式进行数据交互,其中,前端数据采集板作为服务器,智能终端作为客户端,当它们处于同一个无线局域网并建立网络连接后便可以进行数据的交互,前端数据采集板将采集到数据通过无线局域网发送给智能终端,然后被处理显示;而智能终端与用户交互后生成相应的控制命令,再通过无线局域网络传送给前端数据采集板,控制它的采集行为;
示波器的数据采集链路由四个环节构成:前端数据采集板中的数据采集电路同微控制器的数据交互、微控制器与无线通讯模块的数据交互,前端数据采集板与智能终端通过各自的无线通讯模块进行的数据交互,以及智能终端中无线通讯模块同波形绘制模块和人机交互模块之间的数据交互;
其特征在于:
所述数据采集电路同微控制器的数据交互是数据采集电路中的现场可编程逻辑器件(fpga)与微控制器之间的交互;
fpga与微控制器之间的数据总线与地址总线进行复用,其中数据/地址总线的线宽是8bit,控制总线的线宽是2bit,共消耗微控制器10个gpio口资源;
所述数据/地址总线用于微控制器对于地址的输出和数据的输入/输出,控制总线由读使能控制线(rd_en)与写使能控制线(wr_en)组成,控制信号的状态决定了数据/地址总线上所传数据的内容及数据传输方向;
所述数据/地址总线的数据写时序为:
当rd_en为高电平,wr_en的上升沿到来时,主器件(微控制器)发送地址给从器件(fpga)即从器件锁存数据/地址总线上的地址;wr_en的下降沿到来时,主器件发送数据给从器件即从器件锁存数据/地址总线上的数据;
所述数据/地址总线的数据读时序:
当rd_en为高电平,wr_en的上升沿到来时,主器件(微控制器)发送地址给从器件(fpga)即从器件锁存数据/地址总线上的地址;当wr_en为高电平,rd_en的上升沿到来时,主器件从从器件中读数据即主器件锁存数据/地址总线上的数据。
本发明的目的是这样实现的。
本发明高效数据交互的无线智能示波器,通过自定义的数据/地址总线,以微控制器作为主器件、以数据采集电路中的现场可编程逻辑器件(fpga)为从器件,将数据总线与地址总线进行复用,其中,数据/地址总线的线宽是8bit,控制总线的线宽是2bit,共消耗微控制器10个gpio口资源,通过控制总线的读使能控制线(rd_en)与写使能控制线(wr_en)的时序控制,实现传输数据的内容及数据传输方向的控制,以较少的微控制器i/o管脚(可编程的)实现了高速的数据传输,适用于微控制器i/0管脚资源有限但又对数据传输速度要求较高的数据交互场合。
附图说明
图1是本发明高效数据交互的无线智能示波器一种具体实施方式的结构框图;
图2是本发明中lpt总线的物理连接图;
图3是本发明中lpt总线的数据写时序图;
图4是本发明中lpt总线的数据读时序图;
图5是智能终端指令发送原理图;
图6是波形绘制模块中三线程间数据流向示意图;
图7是三级流水运行时间示意图;
图8是四个线程的工作流程示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
图1是本发明高效数据交互无线智能示波器一种具体实施方式的结构框图
在本实施例中,如图1所示,本发明高效数据交互无线智能示波器包括前端数据采集板1和智能终端2两个部分。
前端数据采集板1完成数据的采集和缓存,而智能终端2要完成数据的处理和显示,以及与用户的人机交互功能。这两部分采用基于tcp协议的c/s(clientandserver)网络通讯模式进行数据交互,其中,前端数据采集板1作为服务器,智能终端2作为客户端,当它们处于同一个局域网并建立网络连接后便可以进行数据的交互,前端数据采集板1将采集到数据通过无线局域网发送给智能终端2,然后被处理显示;而智能终端2与用户交互后生成相应的控制命令,再通过无线局域传送给前端数据采集板1,控制它的采集行为。
从图1所示的高效数据交互无线智能示波器的系统总体结构框图可以看出,该示波器的数据采集链路由四个环节构成,分别是前端数据采集板中的数据采集电路101同微控制器102的数据交互、微控制器102与无线通讯模块103的数据交互,前端数据采集板1与智能终端2通过各自的无线通讯模块103、201进行的数据交互,以及智能终端2中无线通讯模块201同波形绘制模块202和人机交互模块203之间的数据交互。其中,在本实施例中,微控制器102与无线通讯模块103的数据交互采用现有的sdio(securedigitalinputandoutput,安全数字输入输出)总线,前端数据采集板1与智能终端2通过各自的无线通讯模块103、201进行的数据交互采用现有的无线局域网,无线局域网和sdio总线所遵循的传输方式都是目前已存在的技术,在系统硬件选定后便无法更改,在此不再赘述。
在本实施例中,前端数据采集板1中的数据采集电路101同微控制器102的数据交互则可以得到进一步优化来提升整个数据采集链路的运行效率。具体来说,本发明拟提出了一种数据/地址总线(在本发明中可称为有限并行传输总线,即limitparalleltransmission总线,简称lpt总线)的数据传输方法来实现微控制器101同数据采集电路101中现场可编程逻辑器件(fpga)的数据交互,它具有传输速度快、使用硬件资源少的特点。
1、有限并行传输(lpt)总线的原理
lpt总线是本发明自定义的数据传输总线,以微控制器主导,使用较少的微控制器i/o管脚(可编程的)实现了高速的数据传输,适用于微控制器i/0管脚资源有限但又对数据传输速度要求较高的数据交互场合。
fpga与微控制器之间的数据总线与地址总线进行复用,其中数据/地址总线的线宽是8bit,控制总线的线宽是2bit,共消耗微控制器10个gpio口资源。在本实施例中,该lpt总线的物理连接图如图2所示。
数据/地址总线(datai,i=0,1,…,7)用于完成微控制器对于地址的输出和数据的输入/输出;控制总线由读使能控制线(rd_en)与写使能控制线(wr_en)组成,它的信号状态决定了数据/地址总线上所传数据的内容及数据传输方向。
在本实施例中,在进行数据通讯的过程中,微控制器作为主器件控制整个数据通讯过程,提供了四种工作模式,分别是丛发式读数据、丛发式写数据、单次读数据、单次写数据,各个工作模式适用于不同的数据传输需要。
丛发式读写数据时,主器件在发送一次地址后,便会连续读取或写入一定数量的数据,此时,在数据传输的过程中,gpio口不需要进行数据传输方向的连续变化,适用于大块数据的读写;单次读写数据时,主器件每读取或写入一个字节的数据都要先发送一个地址,适用于数据量比较小的控制命令和状态信息的读写。
图3是本发明中lpt总线的数据写时序图。
在本实施例中,如图3所示,lpt总线的数据写时序为:
当读使能控制线rd_en为高电平,写使能控制线wr_en的上升沿到来时,微控制器作为主器件发送地址给作为从器件的fpga,此时数据/地址总线上的内容为地址并被作为从器件的fpga锁存;写使能控制线wr_en的下降沿到来时,微控制器作为主器件发送数据给作为从器件的fpga,此时数据/地址总线上的内容为数据,并被作为从器件的fpga锁存,从完成数据的写操作。
在本实施例中,lpt总线的写数据流程为:
a1、首先微控制器将写使能控制线wr_en和读使能控制线rd_en对应的管脚置为低电平;
a2、微控制器将数据/地址总线所对应的管脚配置为输出管脚;
a3、微控制器将读使能控制线rd_en对应管脚的电平拉高;
a4、微控制器在数据/地址总线所对应的gpio口输出寄存器中写入地址,此时,数据/地址总线上的内容为地址;
a5、微控制器将写使能控制线wr_en对应管脚的电平拉高,在写使能控制线wr_en的上升沿到来时,fpga锁存数据/地址总线上的地址;
a6、微控制器在数据/地址总线所对应的gpio口输出寄存器中写入要发送的数据,此时,数据/地址总线上的内容为数据;
a7、微控制器将写使能控制线wr_en对应管脚的电平拉低,在写使能控制线wr_en的下降沿到来时,fpga锁存数据/地址总线上的数据;
a8、重复单次写数据时,回到步骤a1,当丛发式写数据时,执行后边步骤;
a9、微控制器将读使能控制线rd_en对应管脚的电平拉低;
a10、微控制器在读使能控制线rd_en对应管脚为低电平时,将写使能控制线wr_en对应管脚的电平拉高;
a11、微控制器在写使能控制线wr_en对应管脚为高电平时,将读使能控制线rd_en对应管脚的电平拉高,此时,微控制器在数据/地址总线所对应的gpio口输出寄存器中写入要发送的数据;
a12、然后微控制器件将写使能控制线wr_en对应管脚的电平拉低,写使能控制线wr_en的下降沿到来时,fpga锁存数据/地址总线上的数据;
a13、若继续写数据时,则返回到步骤a9,否则拉低写使能控制线wr_en和读使能控制线rd_en对应管脚的电平,结束总线操作。
图4是本发明中lpt总线的数据读时序图。
在本实施例中,如图4所示,lpt总线的数据读时序为:
当读使能控制线rd_en为高电平,写使能控制线wr_en的上升沿到来时,微控制器作为主器件发送地址给从器件的fpga,此时数据/地址总线上的内容为地址并被作为从器件的fpga锁存;当写使能控制线wr_en为高电平,读使能控制线rd_en的上升沿到来时,微控制器从fpga中读数据即主器件锁存数据/地址总线上的数据。
在本实施例中,lpt总线的读数据流程为:
b1、首先微控制器将写使能控制线wr_en和读使能控制线rd_en对应的管脚依次置为低电平,;
b2、微控制器将数据/地址总线所对应的管脚配置为输出管脚;
b3、微控制器将读使能控制线rd_en对应管脚的电平拉高,在读使能控制线rd_en电平上升沿到来时,作为从器件的fpga将数据/地址总线置为数据输入状态;
b4、微控制器在数据/地址总线所对应的gpio口输出寄存器中写入地址,此时,数据/地址总线上的内容为地址;
b5、微控制器将写使能控制线wr_en对应管脚的电平拉高,在读使能控制线rd_en为高电平且写使能控制线wr_en的上升沿到来时,fpga锁存数据/地址总线上的地址;
b6、微控制器将gpio口配置为数据输入管脚,改变数据/地址总线的数据流向;
b7、微控制器将将读使能控制线rd_en对应管脚的电平拉低,读使能控制线rd_en下降沿到来时,作为从器件的fpga将数据输出到数据/地址总线上;
b8、微控制器在写使能控制线wr_en脚为高电平时,将读使能控制线rd_en脚电平拉高,微控制器从fpga中读数据即主器件锁存数据/地址总线上的数据,微控制器读取gpio口输入寄存器中的内容,将该数据取出;
b9、丛发读数据时回到步骤b6,单次读取数据时回到步骤b1;
其中,当写使能控制线wr_en为高电平时,读使能控制线rd_en下降沿到来时,从器件将数据/地址总线置为高阻态。
本发明中通过lpt有限并行传输方式主要是为了解决微控制器的i/o管脚资源有限的问题,它具有消耗硬件资源少,传输速度高的优点,另一方面该总线协议没有时钟线,仅仅依据控制总线的电平状态来改变数据/时钟总线上的传输内容,非常适合不同微控制器之间跨时钟域的数据传输。数据传输时,低速器件作为主器件改变控制线状态,主导整个数据交互过程,保证了数据传输的准确性。
2、网络通讯模块数据收发原理
智能终端中,无线通讯模块负责网络数据的收发工作,系统运行期间,数据的交互是随时进行的,且往往会与其他的工作并发,比如波形绘制工作,按键响应工作等,所以智能终端中数据的收发在一个独立的线程中完成。
在本实施例中,智能终端发送给前端数据采集板的指令被分为两类,一类是控制指令,该类指令的目的是改变前端数据采集板的工作状态,当指令发送出去后,不需要在下一个指令发送前,立即获取反馈数据,所以只需发送数据;另一类是数据索取指令,该类指令的目的是从前端数据采集板获取波形数据,当该指令发送出去后,需要等待接收足够量的数据才能结束本次数据通信。对于第二种类型的指令即数据索取指令而言,为了保证数据接收顺序的准确性,每次指令发送后必须等待接收一幅波形数据,两个动作一起进行才能保证数据接收的准确性。
数据索取指令是由原始数据索取线程根据刷屏频率发送的,每当屏幕刷完一幅波形后,原始数据索取线程都会向数据通讯线程发出该指令,也就是说,在无线示波器处于run状态期间,数据索取命令的发送将是持久且连续的;而控制指令往往是在用户进行界面操作时产生,具有出现时间随机的特点。由于界面操作响应线程、原始数据索取线程和数据通讯线程是并发的,而数据通讯线程每次只能处理发送一个指令,而数据索取指令与控制指令传送给数据通信模块的顺序并不确定,这就有可能出现在控制指令发送给前端数据采集板前有多个数据索取指令等待发送的情况,而每一条数据索取指令又都必须等待接收一幅原始数据。最终导致在控制指令作用于前端数据采集板前,智能终端会持续接收多幅波形数据,给用户造成无线示波器响应不灵敏的直观印象。此外,数据通讯线程运行速度受网络传输速度的影响比较大,所以容易与其他工作线程的运行速度不匹配,比如原始数据索取线程的运行速度就比数据通讯线程的运行速度快,而线程在处理某一指令时,就不能及时处理其他指令,这样就会有丢失指令的风险,导致某些操作不能被及时响应。
在本实施例中,使用了双队列缓冲结构来解决数据通讯线程同其他线程之间运行速度不匹配的问题,其中一个队列用于缓存数据索取指令,另一个队列用于缓存控制指令。界面操作响应线程与原始数据索取线程生成的指令分别进入两个缓冲队列即控制指令队列和数据索取指令队列中,而数据通讯线程依次从两个队列中取出指令进行处理,当两个队列都有指令时,它优先从控制指令队列中取指令,工作原理示意图如图5所示。
控制指令队列具有指令融合功能,可以在缓存控制指令的同时对写入队列中的指令进行梳理,合并相同类型的指令,从而减少指令发送的次数,降低无线局域网的使用频率。设计中,每一类控制指令都有自己的类型号,当这些指令进入缓冲队列里时,系统会遍历缓冲队列中的所有指令,若发现队列中存在类型号相同的指令时,会将两个指令取出合并为一个指令,然后重新放回队列中等待被执行。比如用户短时间内连续点击了垂直档位增大和减小按钮,此时在将命令填入控制指令缓存区的过程中,两个指令因作用效果相反而被抵消掉,从而该命令将不予发送。
数据索取指令队列具有阻塞线程的功能,能够协调数据通讯线程与原始数据索取线程间的运行速度。若原始数据索取线程运行速度过快时,该队列一旦被存满,就会阻塞原始数据索取线程,使其停止发送数据索取指令,等待数据通讯线程运行完成;若原始数据索取线程运行速度过慢时,队列变空就会阻塞数据通讯线程,以降低系统的开销,当队列中有指令填入时,数据通讯线程将被唤醒,重新进行数据交互工作。
3、多线程交叉流水模式的运行原理
在本实施例中,智能终端运行的过程中,波形绘制模块中的三个线程通过三级流水模式实现了交叉协同工作。具体来说,原始数据索取线程在运行过程中不断地向数据通讯线程发送数据索取指令,并将获取到的数据存放在数据缓存区中,数据处理线程取出这些数据缓存区中的数据进行处理,并将处理后的结果存放在显示缓存区中,最后波形绘制线程会从显示缓存区中取出显示数据,在波形绘制区中进行显示,程序在运行期间会不断循环上述过程。
由于线程间的同步导致同一块数据缓存区的读写操作不能同时进行,所以当数据通讯线程向数据缓存区中写数据时,数据处理线程必须等待数据缓存区写满后才能对其中的数据进行操作,而波形绘制线程则必须等待数据处理线程完成数据处理并将处理结果存放到显示缓存区后,才能绘制波形。在这个过程中,数据处理线程等待数据缓存区满与波形绘制线程等待显示缓存区满,会消耗掉一部分时间从而使多线程的效果大打折扣。
在本实施例中,在两个线程之间是采用双数据缓存区来实现数据通信的,当数据通讯线程在对一个数据缓存区进行写时,数据处理线程可以从另一个数据缓存区中读出数据,这样从理论上来讲实现了同时读写数据的效果,实现原理如图6所示:
数据采集到波形显示,程序经历了原始数据获取、数据处理和波形绘制这三个阶段,双数据缓存区结构的使用使得这三个过程可以在同一时间段内执行,提高了数据流的速度。理想的情况是三个线程的运行时间一致,这样就能很好地保证在一个线程运行周期内同时完成三个工作,并且每个线程都会流畅地运行,但是在实际情况中,无法保证每个线程的运行时间都是一致的,所以一些线程会因为不能及时得到数据而不得不等待其他线程,三个线程流水处理的过程如图7所示。
总结
lpt有限并行传输协议主要是为了解决微控制器的i/o管脚资源有限的问题,它具有消耗硬件资源少,传输速度高的优点,另一方面该总线协议没有时钟线,仅仅依据控制总线的电平状态来改变数据/时钟总线上的传输内容,非常适合不同控制器之间跨时钟域的数据传输。数据传输时,低速器件作为主器件改变控制线状态,主导整个数据交互过程,保证了数据传输的准确性。
无线智能示波器中的智能终端往往采用多线程的工作方式,其中网络数据收发线程采用双指令缓冲队列来完成两类指令有序发送,该结构保证了控制指令的准确发送,并可以降低网络的使用频率,实现网络传输的静默状态与激活状态的自动转换,提升了网络的利用率。
多线程交叉流水模式保证了数据在处理和显示的过程中,数据收发线程能够持续通过网络获取波形原始数据。传统数据绘制过程会循环执行原始数据获取、数据处理、波形绘制这三个操作,这样波形刷新率将受限于网络速度,浪费了智能终端设备的高性能。多线程交叉流水实现了三个过程的并发执行,大大提升了智能终端中数据流传输的速度。
在本实施例中,采用以上三种技术提升无线智能示波器中数据链路的运行效率,保证了数据高效、快速、准确地传输,提升了无线智能示波器的刷屏率和操作体验。
实例
本实例基于android的无线智能示波器进行具体实施。android智能终端支持多线程工作,它作为无线智能示波器的数据处理部分。在无线智能示波器程序中,使用四个线程来实现上述发明,分别是网络通讯线程、原始数据索取线程、数据处理线程、波形刷新线程,它们的工作流程如图8所示。这四个线程是通过继承runnable接口的类来实现,当示波器程序开启时,会在回调函数oncreat()函数中将这些线程开启,在程序退出时,会在回调函数onstop()函数中将它们杀死。
这些线程间是通过固定长度的数组进行数据传输,每个数组都有一个状态标志位来反映其存储状态,当线程要对共享数组进行操作时要线判断其标志位,如果满则可以取数据,如果空,则可以写入数据。而数据通讯线程中通过linkedblockingqueue和arrayblockingqueue两个优先队列实现双指令缓存队列结构,其他线程通过消息队列对这两个队列进行操作。
数据采集板上的微控制器采用stm32f205,fpga采用xc6slx9,两个控制器在进行连接时,stm32使用gpio的b口作为数据/地址总线,使用gpioc口作为控制总线,而fpga采用user_io管脚来实现总线接口。stm32的管脚在运行的过程中要通过控制寄存器来配置方向,并通过gpio口的输入/输出寄存器实现管脚电平的改变。
当android智能终端与前端数据采集板正常连接后,接入1mhz、400mvpp正弦信号后,其运行结果如图8所示,最终结果表明数据交互过程准确。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。