基于SOPC技术的虚拟示波器设计

引言
模拟示波器由于无法高效地观察实验结果、数据处理功能弱等缺点,已逐渐被数字示波器所取代,但数字示波器价格昂贵。虚拟仪器是在通用计算机平台上,用户利用软件根据自已的需求定义设计仪器的测量功能,其可以大大拓展传统仪器的功能,降低仪器成本,并可通过软件实现数据的复杂分析、运算和海量存储等功能。labwindows/cvi是1种常用的虚拟仪器设计软件,为用户提供了功能强大的虚拟仪器系统开发平台。为此,本文以labwindows/cvi为开发平台,利用fpga中嵌入的niosⅱ软核构成的sopc系统,设计一种双通道虚拟示波器,以达到一般传统示波器的性能指标。
1 虚拟示波器硬件电路设计
1.1 虚拟示波器数据采集通道电路设计
为减少虚拟示波器对被测电路的影响,要求虚拟示波器数据采集通道的输入阻抗在1mω以上,因此必须设计合适的衰减器和可控增益的放大器。虚拟示波器数据采集通道的原理方框图如图1所示。图1中,虚拟示波器的2个通道完全对称,且相互独立。从探头进来的信号经过衰减网络,获得合适的信号强度,进行ad/dc切换开关后,送到可控增益放大器,将不同幅度的信号放大为幅度大致相同的信号,经高速a/d转换获得两路独立的数字信号,同时触发电路完成触发功能,使波形能够平稳地显示。
1.1.1 衰减与ad/dc转换电路
图2为虚拟示波器的衰减与ad/dc转换电路图。
图2中,r1、r2、r3、c1 和r4、c2组成1:10的分压网络,通过cpu控制三极管q1、q2 和继电器k1、k2 分别控制进行1/10的衰减与ad/dc切换控制。
1.1.2 可控增益放大器
虚拟示波器需设计宽范围可调节的增益放大电路器,以实现10mv~±200v范围内的输入电压采样。本系统采用模拟多路器切换运放的反馈电阻,以达到改变增益的目的,其电路图如图3所示。
图3中,u1内部包含两通道jfet高输入阻抗的运放,前级为跟随器,以满足示波器的高输入阻抗要求,第2级为可控增益放大器,由模拟多路器和运放共同构成。
1.1.3 a/d转换电路
虚拟示波器的a/d 转换器采用linear 公司的ltc2289,它的采样频率可达80mhz,有2个独立通道,可选内部参考或外部参考。本文选用内部参考。
1.2 虚拟示波器信息处理部分硬件设计
虚拟示波器信息处理部分主要包括fpga 系统和usb通信部分,其组成方框图如图4所示。
图4中,虚拟示波器模拟输入通道的模拟信号经a/d转换后获得数字信号,经过1个数据缓冲器输入到fpga,fpga通过逻辑电路和niosⅱ管理将数据进行存储、上传等。sram用于缓存采样数据;flash用于存储niosⅱ应用程序,并实现系统上电时将程序加载至sdram中。
系统选择的usb接口芯片cy7c68001为usb2.0标准控制器,其可工作在高速或全速状态,支持4个可配置共享4kb fifo空间的端点,并具有一个标准8位或16位主机接口,非常适合做高速usb接口。
2 虚拟示波器sopc系统构建及niosⅱ软件开发
2.1 虚拟示波器sopc系统构建
本文采用altera公司的niosⅱ软核处理器,并利用fpga设计虚拟示波器系统。altera 公司的niosⅱ软核处理器是一个32位risc嵌入式处理器,具有5级流水线、采用数据和指令分离的harvard结构、提供众多标准外设和软件集成开发环境。
进行基于nios ⅱ 的sopc 系统开发时,可利用altera提供的sopc插件,进行外设和cpu的配置,并提供自定义ip的构建方法。在虚拟示波器系统中,需要开发符合avalon总线的示波器模块,并加入到自定义ip中。示波器模块实体程序如下:
在sopc插件中,将示波器模块等自定义模块集成为ip核,分别将niosⅱjtag_uart、flash以及sram等ip核加入虚拟示波器系统中,sopc系统配置图如图5所示。
配置完成后,生成系统,并在quartusⅱ中进行引脚配置,然后综合、布线,生成配置文件,通过jtag 对fpga进行配置,即可获得虚拟示波器系统的信息处理部分硬件电路。
2.2 niosⅱ软件开发
实践证明,当系统的复杂程度达到一定时,采用嵌入式操作系统不仅会简化程序员工作、提高cpu利用率,而且会提高系统可靠性。因此本系统的下位机软件采用嵌入式操作系统。microc/os-ⅱ是1个性能优良的嵌入式多任务实时操作系统,稳定度高、安全性好;同时niosⅱ开发环境中集成了性能良好的、免费的microc/os-ⅱ估算版,因此虚拟示波器系统采用该操作系统。
niosⅱ的软件开发一般采用分层的方式进行,它采用类似linux的设备文件系统来管理设备,采用hal(硬件抽象层)完成硬件相关设备的封装操作,因此每个cpu外设都需要有相应的驱动程序。虚拟示波器系统中,niosⅱ的驱动分层结构如图6所示。
虚拟示波器系统需要为定义的ip设计相应的驱动程序,对于最底层与硬件相关的操作,niosⅱ提供了iowr(base,offerset,data)和iord(base,offerset)2个宏,分别用于对寄存器的读、写操作。这里,base为虚拟示波器驱动程序的基地址,其自动生成;offerset为指被操作的寄存器在该设备中的偏移地址。
2.3 嵌入式usb协议栈开发
usb协议复杂,虚拟示波器系统开发的usb协议栈基于microc/os-ⅱ,并采用了如图7的分层结构,以减少开发调试的难度。
硬件抽象层和命令接口层都与硬件相关,硬件抽象层负责对sx2的寄存器进行读写操作,而命令接口则实现与sx2的工作方式有关的操作;协议层与平台无关,其主要完成usb的枚举及各端口数据处理;应用层完成对提供调用的函数进行封装,应用层提供了简单的api接口,其利用senddata函数发送数据到主机,同时利用recdata函数从主机接收数据以及厂商请求的函数,上层程序只要简单地调试这3个函数而无需关注usb协议,即可完成虚拟示波器的usb通信。
3 虚拟示波器上位机软件设计
3.1 虚拟示波器usb通信的封装
虚拟示波器上位机程序采用labwindows/cvi开发,其本身并不支持usb通信,因此采用了调用外部模块的方法。采用vc++编写程序,将usb通信底层函数进行封装,编译成dll,再供labwindows/cvi进行调用。为此,将动态链接库的头文件和dll文件导入进工程,生成1个fp的驱动器,这时虚拟示波器系统就可以直接调用dll里面提供的函数。
3.3 虚拟示波器面板程序的开发
图8中,用户对虚拟示波器面板上的垂直幅度调节、水平宽度调节等按钮操作时,系统会将相应的操作命令传送给下位机,并由下位机调节垂直幅度和水平时基等,从而实现用户对虚拟示波器系统的操作。
4 测试结果
采用fpga处理器和altera公司的niosⅱ软核完成虚拟示波器系统设计后,进行了多次测试,其性能指标如表1所示。
由表1可知,该虚拟示波器达到了一般模拟示波器的指标。然而由于本系统采用虚拟仪器技术,在功能上增加单次采样、波形保存等功能,因此与普通示波器相比,其成本低廉,操作界面更友好、简便。
5 结论
本文以labwindows/cvi为开发平台,设计了1种双通道虚拟示波器,该示波器利用fpga 中嵌入的niosⅱ软核构成的sopc系统,完成虚拟示波器各模块的管理;利用嵌入式usb协议,配合片外的模拟信号处理模块,通过usb总线,完成各种波形数据的采集,经上位机软件完成了波形显示和数据分析,并实现了仪器的各种操作功能。实际测试结果表明,该虚拟示波器达到了或优于一般模拟示波器的性能指标。

探究ARM的起源 Acorn电脑简史及FPGA实现
PLC远程控制模块可以实现的功能都有哪些
pd充电接口什么意思_PD快充的优势
基于MCS-51汽油机电控燃油喷射系统的设计方案
人工智能研究的进展将与硬件创新密切相关
基于SOPC技术的虚拟示波器设计
发展区块链哪些需要被重视
台电推出新款平板电脑 搭载联发科P70处理器售价1299元
蒋国庆分析:法定数字货币与区块链的关系
Sysmark桌面处理器排行榜公布 Intel占据前7名
华为战略升级:全场景智能生活生态
把脉中国光伏:如何打赢这场没有硝烟的战争
压电放大器电路原理图讲解
镭雕机与激光打标机区别是什么?
什么是移动物联网卡?有什么功能和特点?-蜂窝物联
开关电源PCB排版的基本要点
一汽解放发布开放计划 推动智慧物流体系的建立
三星s8什么时候上市?三星S8即将发布,A股手机产业链名单有你的股吗?
中国工业互联网研究院鲁春丛一行调研橙色云
移动VR产品买什么?也只有三星新Gear VR值得推荐