如今虚拟仪器逐渐进入了人们的视野,下面文章基于STM32控制器设计出了一款多功能虚拟仪器,从而能够实现双通道示波器,单通道信号发生器,以及教学分析,文章对于系统设计,硬件设计,软件设计就进行了详细介绍,也证明了这类虚拟仪器具有众多的优势。
【关键词】虚拟仪器,STM32,FPGA,Qt
虚拟仪器的起源可以追溯到上个世纪80年代,该概念的提出在仪器测试领域引起了轩然大波。它是利用计算机,结合相应的硬件和软件,实现既具有传统仪器的基本功能,又有一定特殊功能的灵活方便的新型仪器[1]。虚拟仪器打破了传统仪器的缺陷,在功能和应用性上发生了根本性的变化,不仅解决了传统实验室存在的仪器和场地受限的问题,还能够利用功能强大的计算机来完成信号的分析和处理,同时还可以利用软件技术在屏幕上设计出逼真的仪器面板并显示各种特征图形[2]。从而实现计算机功能最大化地服务于虚拟仪器,使仪器功能得到了充分的发展和完善[3]。
1 系统总体设计
本系统主要由硬件电路模块和PC端软件构成,其中硬件电路模块是整个系统的核心部分。信号采集和输出往往需要使用到高速ADC和DAC,高速ADC和DAC通常使用现场可编程门逻辑(FPGA)控制,单纯使用FPGA实现整个硬件电路的控制,那么设计的控制逻辑将会很复杂,所以本硬件系统采取“单片机(MCU)+FPGA”框架降低开发的难度。USB(串行通信总线)是PC端最常见的通信接口,数据传输速度快,而且许多单片机片内集成了USB控制器,所以本系统硬件与PC端软件使用USB进行通信。系统整体设计如图1所示。
2 硬件设计
硬件系统采用STM32F407IGT6作为主控器,STM32F407IGT6为ST公司推出的高性能MCU,片内外设丰富(集成USB控制器)。Altrea公司的Cyclone IV系列FPGA芯片价格低、功耗低、逻辑单元丰富,所以FPGA芯片选用Altrea公司的EP4CE10E22。另外选用AD9288、DAC904E分别作为模数转器(ADC)和数模转换器(DAC)。其中AD9288为双通道、8位、100MSPS转换速率的模數转换芯片;DAC904E为单通道、14位、100MSPS转换速率的数模转换芯片。
2.1 嵌入式微控制器和FPGA通信连接
FSMC(Flexible Static Memory Controller,可变静态存储控制器)是ST公司为STM32设计的一种新型存储器扩展技术,STM32通过FSMC控制外部静态存储器以扩展存储容量。由于STM32与FPGA之间需要传输大量的数据,使用UART、SPI、IIC这些串行接口传输数据太慢,STM32可将FPGA当作外部静态存储器进行并行读写控制,所以本系统选用FSMC作为STM32与FPGA的通信接口。在FPGA上构建SRAM(静态易失性存储器)逻辑信号接口,STM32把FPGA当成SRAM进行读写,STM32与FPGA通信依照SRAM的时序。
STM32与FPGA通信使用了FSMC的10根地址线(FSMC_A[16..25])、16根数据线(FSMC_DB[0..15])等。地址线有10根,STM32可以最多读写1024个地址,由此FPGA可以最多可内建1024个16位的寄存器供功能开发。这1024个地址会被划分为不同功能的寄存器,当STM32往指定地址写入控制数据时FPGA便会做出相应的硬件控制(如控制AD采样率),读取数据时FPGA会输出相应的数据(如读取AD采样数据)。
2.2 模拟输入采集电路
由于应用实际输入信号的电压范围比较宽泛,可能无法被AD9288直接采集,因此输入信号需要经过信号调理电路处理后才能给AD9288采集。输入信号处理流程:模拟信号输入->交/直流耦合->程控衰减电路 ->程控放大电路->叠加偏置电压->AD9288。
输入的信号首先通过直流/交流耦合电路和电阻衰减网络,直流/交流耦合电路可以选择保留或者去除输入信号中的直流成分,电阻衰减网络将信号进行第一次衰减。利用AD603(电压控制型放大器)对输入信号再次进行放大或者衰减,然后利用运放构成的加法运算电路叠加上偏置电压,最终信号输入到AD9288进行量化采集。
在FPGA内建一个容量为1024*2字节的RAM充当FIFO存储器,用于缓存采集到的模拟信号数据(2个通道,每通道1024个数据)。AD9288输出的量化数据先写入FIFO存储器中,当FIFO存储器写满后,FPGA将示波器状态寄存器写入1,表示STM32可以读取采集的数据。
2.3 模拟信号输出电路
信号源功能的实现是:PC端软件生成波形数据表发送给STM32,STM32通过FSMC总线将波形数据表写入FPGA的RAM中,FPGA通过查表法定时控制DAC904E的输出电压量,不断循环连续就能输出指定的波形信号。输出的模拟信号处理的流程:DAC904E -> 平滑滤波电路 -> 程控放大电路 -> 叠加偏置电压 -> 模拟信号输出。
由于DAC904E的输出量是离散量,在输出正弦波的时,波形是不光滑、锯齿状的曲线, 所以DAC904E输出的信号先经过七阶巴特沃斯无源低通滤波器,进行平滑滤波。然后利用运放构成的比例运算电路对平滑后的信号进行放大,FPGA通过74HC4051(八通道模拟开关)选择不同的电阻网络控制信号的放大比例。最后,利用运放构成的加法运算电路叠加上偏置电压,输出最终波形信号。
3 软件设计
3.1 STM32软件设计
STM32与PC端软件进行连接通信后,在主循环里等待USB接收PC端软件发送的控制命令。STM32在接收到控制命令后进行分析,如果是信号采集命令,STM32令FPGA控制AD9288启动一轮信号数据采集,再将采集到的信号数据通过USB上传给PC端软件;如果是模拟信号输出命令,STM32令FPGA控制DAC904E输出指定波形信号。STM32软件流程如图2所示。
3.2 PC端软件设计
Qt是奇趣公司开发的图形用户界面应用程序开发框架,具有跨平台、开源的特点[4]。Qt应用程序代码往往只需要编写一次,在不同的操作系统平台上应用不需要重写代码,只需重新编译一次即可运行。考虑到用户使用的系统环境多样性(Windows、Linux、Mac OS X等)。所以PC端软件使用Qt开发, PC端软件主要的框架图如图3所示。
主运行界面用于采集的波形显示、测量信息显示、用户操作交互,信号源界面用于设置模拟信号输出,设备连接界面用软件与硬件连接、断开。软件与硬件连接通信后,开始发送命令控制硬件采集数据、输出信号等,在主运行界面上实时更新采集信号的波形和测量数据,虚拟仪器面板如图4所示。
如果直接在主线程里做数据接收,主线程不断接收、等待数据的上传,界面操作响应将变得十分卡顿,所以创建一个子线程用于接收处理硬件上传的数據,当子线程完成一定量数据的接收以后,通知主线程在主运行界面上更新波形数据。
传统的数字示波器提供的信号数学分析功能薄弱单一,虚拟仪器的一大优势就是软件可以方便地利用现有的各种数学函数库(如Matlab)对采集到的信号进行FFT、数字滤波、能量谱分析等,这能让使用者更加直观地观察到信号的数学特征。
4 结束语
本文在分析虚拟仪器的发展的基础上,结合硬件和软件设计,采用Qt作为开发平台,设计了一款多功能虚拟仪器。硬件部分完成了各种波形以及数据的采集,软件部分能够准确地显示各种波形数据,实现了嵌入式微处理器和传统仪器仪表技术的有机地结合,很好地解决了实际仪器存在的问题。该系统体积小、成本低、使用方便,比较适合中低端用户的需求,具备比较广阔的应用前景。
【参考文献】
[1]习友宝,古军,等.虚拟电子实验环境建设与学生综合能力培养的研究[J].实验科学与技术.2003(1):22-24.
[2]张雪侠,付安英,商莹.基于虚拟仪器的电子实验室的研究[J].电子设计工程. 2017(6):170-172.
[3]丁红斌,秦会斌,孙顺远.基于STM32的虚拟示波器的设计与实现[J].电子器件.2009(06): 1007-1010
[4]汪思静,程志强,熊 菡. 基于Qt 的虚拟示波器的软面板设计[J].计算机技术与发展,2013(7):222-225.
相关阅读:期刊投稿云计算与虚拟化安全分析
【摘要】未来的信息系统发展方向是云计算,可是在技术的发展方面却面临很多困难。云计算技术的核心便是虚拟化,然而虚拟化就存在着权限访问、安全隔离、受控迁移等很多安全性的问题,已经展现在人们面前,本文重点对当前虚拟化存在的安全问题进行分析,并且提出了一些对应的解决思路。
转载请注明来自:http://www.lunwencheng.com/lunwen/lig/14093.html