基于FPGA实现多路模拟量、数字量采集与处理
2020-02-01张建红刘宇翔朱之贞胡建明任兴平
张建红 刘宇翔 朱之贞 胡建明 任兴平
(1.云南无线电有限公司 云南省昆明市 650223)
(2.陆军装备部防化军事代表局驻昆明地区防化军事代表室 云南省昆明市 650223)
(3.云南安防科技有限公司 云南省昆明市 650223)
1 引言
在线监测、控制系统通常需要通过各类传感器采集相应的信号(模拟或数字信号),经计算处理后应用。通常我们采用单片机控制实现所需功能,但当监测系统较为复杂,采集数据种类较多时,普通单片机的资源难以实现功能需求。若想用普通单片机实现预期功能,需采用多单片机分工联机处理,或通过外围功能芯片扩展系统应用完成所需的监测功能,这样做的方式将大幅度增加电路的复杂性,在一定程度上还影响了在线监测控制系统的可靠性和稳定性,同时增加了系统的管理和采购成本。
为此,本文提出了基于FPGA 技术的解决方案,充分利用FPGA 的资源和输入/输出端口多(可并行工作),采集数据可是模拟信号也可是数字信号,可以支持自定义和自由编程支配所需资源,硬件运行速度快(是普通MCU 的10 倍)特点,通过VHDL语言设计,定义用途、功能、及数据采集和处理的应用编程,并行处理各传感器传输的数据,从而有效解决实时多路信号采集和处理问题,发挥在线监测控制系统的效果。
本解决方案中所需的外围电路较简单,很大程度上提高了系统的可靠性;同时鉴于FPGA 多接口功能特点和VHDL 语言的灵活性,使系统具备良好的功能扩展特性,从而扩展了监测控制系统应用领域,使其具备了较好的通用性。
2 监测控制系统
监测控制系统组成:监测控制系统由FPGA 芯片、数字采集、多路A/D 选择、PROM 存贮、时钟电路、电源供电、交流信号整理、光耦隔离等部分组成。系统组成见图1。
主要组成部分的功能描述:
2.1 FPGA芯片内部设置及功能划分
本在线监测、控制系统方案中所用FPGA 芯片,采用Altera 公司的EP1C6T144。该芯片具有5980 个逻辑单元(大概相当于60 万系统门),集成了2 个延迟锁相环、92160 位片上RAM(包括块RAM 和分布式RAM),速度达到250MHz,支持16 个输入/输出高性能接口即可以外接16 种或个传感器;支持自定义和自由编程,支持功能扩展和现场升级。
根据系统功能要求,将FPGA 内部资源配置为逻辑运算、接口逻辑控制、数据采集、A/D 接口选择等功能模块。内部功能配置示意见图2。
2.1.1 逻辑运算模块
图1:监测控制系统组成示意图
图2:FPGA 内部功能配置示意图
实现接收数据采集单元、A/D 接口单元传输来的数据,对接收到的数据,按预定的策略或算法进行逻辑运算,运算结果根据预设条件情况进行分析,按分析结果进行处理,向逻辑控制单元输出处理指令及相应的数字量等功能。
2.1.2 数据采集模块
实现对需监测或控制的环境状态的数据采集以及对外部设备控制指令输出的功能。如接收传感器采集到的数字或模拟信号;或对外接设备发出开启、关闭控制指令等。
2.1.3 A/D 接口选择模块
实现模数转换芯片及各路数据采集的选择。即通过发送指令(1为开通,0 为关闭)发送选择时序,对所需监测和控制的数据信号进行合理控制,避免数据混乱。
2.1.4 接口逻辑控制模块
此模块主要是考虑到监测控制系统的通用和功能扩展,为与外部单片机(MCU)或计算机兼容和共享数据,专门设置设计了此接口,以便与其它设备的数据通信或数据传输,以便完成利用采集数据进行复杂运算、分析、调试的功能。
2.2 模拟信号采集及控制
传感器采集的模拟信号通过光电耦合电路传输至控制电路中,经半波整流进行信号整理后进行A/D 转换;多路模拟信号就经多路的A/D 转换;经选择进行运算分析。
本系统中的A/D 转换芯片选用的AD1674JN。模拟信号整理后经多路开关选择进入A/D 转换芯片,变成FPGA 可以识别和处理的数字信号,并通过软件进行相应的分析和处理。FPGA 对采集的模拟信号进行分析处理的软件设置及控制有以下几个方面:
首先是对与模拟信号转换成数字信号有关寄存器组(16 位指令寄存器)进行定义:
ADPR(参数寄存器):对采样点数(16、32、64 还是128 个点)、时钟频率、采样信号频率进行定义,分别是2 位、5 位和9 位数据。
ADOR(输出控制寄存器):当外部单片机要读取某传感器传输的信号或信息时,由输出控制寄存器定义FPGA 输出的是某传感器信号的某谐波的电压,即是基波电压还是2 次谐波电压或是信号值。
ADCR(控制寄存器):用于选择某通道或某几个通过采样传感器及有关寄存器的有效或复位,如置为“1”表示选中,置为“0”表示复位,可选1 个通道,亦可选多个通道。
其次是设计控制A/D 转换芯片及多路开关芯片的信号,通常设置5 位,1 位用于4 位A/D 转换触发,4 位用于选择通道,从0000至1111,经编码对应16 个通道。即可控制16 个传感器的信号。多路开关芯片在接到控制信号后,顺序切换。为确保切换有效,加入容错即0.5μs 的导通延时。
A/D 转换完成,转换芯片的EOC 脚为低(即完成转换),FPGA 收到完成转换指令后,产生向A/D 转换芯片AD1674JN 读数据的时序,于是将转换好的数据读到数据缓冲区进行存贮,存贮位置按通道号和采样点的二维数组ADV(x,y)方式存放。循环采集每个通道的数据,当16 个通道的数据均采集完成后,设置“采集结束”标志,经滤波处理后存到数组中,备分析用。
设计数据的计算方法,对设有标志的数据,即滤波后的数据进行计算(如有效值均方根,差值平均等)和分析。计算分析后清除设置的标志。
当外部接口需要读取采集数据时,由外部控制器(MCU)发出“读”请求,FPGA 根据所选地址及输出控制寄存器(ADOR)的值,将存贮的采集数据按时序要求发送至数据总线上,以便外部控制器接收。
2.3 数字信号采集及控制
在监测控制系统中,假设监测对象有16 个,即有16 个数据采集传感设备,控制每个传感设备需要1 路控制输出,2 路数据采集状态反馈信号,即共要16 路控制输出,32 路状态反馈信号。
在FPGA 中设置3 个指令寄存器对数字信号采集进行控制管理。分别是KGER(开关量允许寄存器),KGIR(开关量寄存器)和KGCR(跳闸闭合寄存器)。在FPGA 中设置16 组位矢量,分别对应16 个监测对象,每个监测对象有2 个状态反馈位。FPGA 设16 个进程,分别对应位矢量的状态反馈,当位矢量的电平发生变化时,启动相应进程。根据监测对象状态,记录输出数据;输出数据对应存在数据缓冲区的对应数据存储器中。
当控制器要读FPGA 数据时,发出启动信号,将地址线对应位的信号置为“1”;FPGA 根据选择的通道值,将对应通道数据存储器中的数据发送至数据总线,控制器根据时序读取数据。读取数据正确时,数据校验位即前13 位为0101101000000,若不是,说明数据出错无效,需要重读。
在数据采集过程中,控制器可以根据需要对需要控制的通道发送通道开/关指令,通过KGIR(开关量寄存器)设置实现,要求通道处于开状态时,对应位置为“1”,关则置为“0”,当置为0000H 时,表示复位;允许数据输出或不允许数据输出是通过KGER(开关量允许寄存器)实现,“0”为不允许输出,“1”为允许输出。FPGA 根据KGIR 和KGER 寄存器的状态判定被监控通道的工作状态。当检测通道出现异常时,会将KGCR(跳闸闭合寄存器)相应位置为“1”,发出中断,请求FPGA 给予相应处理,如发出接通指令等。
由于FPGA 的数据是RAM 的存贮方式,掉电后数据不能保存,故设计了外置PROM 来保存数据,本系统选用通过复位引脚可编程的EPCS1 来实现数据存贮,容量1 兆,用一个I/O 口实现数据传输和存贮。系统一上电,FPGA 进行初始化,复位PROM;当PROM 的使能脚(CE)有效(为0)时,选中PROM,数据从DATA 脚传输到FPGA 的数据输入脚(DIN),数据传输出完成后,置高DONE 脚,使PROM 处于省电的待机模式。
系统上电时,自动将烧入到PROM 中的数据文件下载到FPGA,系统即可开始工作。
3 结论
FPGA 具有速度快,可现场编程,开发周期短等特点,在需要采集较多路信号时,其优点是普通的MCU 无法相比的。本文基于FPGA 技术,充分利用其多路采集数据的特点,提出的在线监测控制系统解决方案,可以很大程度上降低外围电路设计的复杂性,同时更具有非常大的灵活性和适应性。由于很多功能的性能都可以通过仿真和综合调试得以认证,系统设计的成功率非常高,这种方案在多路数据采集系统,特别电气测控系统中有较好的应用前景。