APP下载

高可靠性多通道模拟信号采集存储系统

2019-04-10陈健伟王晋祺苏明辉

仪表技术与传感器 2019年3期
关键词:模拟信号命令指令

陈健伟,陈 鸿,王晋祺,苏明辉

(中北大学,电子测试技术国家重点实验室,仪器科学与动态测试教育部重点实验室,山西太原 030051)

0 引言

随着科学技术的快速发展,传感器技术被广泛应用到各个领域,同时所要处理的数据量也在不断增加,在并行单线传输数据的模式下,当数据的分布范围广同时采样速率不同的情况下,数据的传输明显受到影响。针对此种问题本文设计了一种基于FPGA与ADS1258转换的高可靠性大数据采集存储系统。本设计以FPGA作为主控芯片,通过FPGA高速缓冲技术,对于传感器采集到的16路数据进行融合实时存储到Flash中。

1 系统总体设计

整个装置由采集与存储2部分构成,包含了数据记录器与采编器,采编器主要是工作过程中进行数据采集,包括传感器采集到的16路数据、FPGA发送的命令数据,并将接收到的数据进行一系列的处理包括缓存、编帧打包等然后发送给数据记录器。数据记录器主要是对采编器传递的数据进行存储记录,同时在PC 机发送接收数据请求时将数据发送出去,总体框架结构如图1所示。

图1 总体结构框图

实验过程中传感器采集的信号包括6路环境噪声信号以及10路冲击信号,这2种模拟信号的电压量程在0~5 V之间,选用ADS1258模数转换芯片进行模拟信号转换,ADS1258转换芯片,量程范围为0~5 V,支持16路采样通道,采样频率为23.7 KS/s,24位精度,能够在自动扫描模式进行数据采集[1-2],满足设计需要。

系统的工作流程为:

(1)开关指令通过光耦隔离与滤波处理后进行模拟信号采集。

(2)传感器采集到的16路模拟信号经过线性光耦隔离高频噪声信号。

(3)经线性隔离后的信号传到ADS1258模数转换芯片进行A/D转换。

(4)数据信号存入FPGA缓存器。FPGA完成数据的编帧、打包。

(5)打包后的数据存储到存储卡中。

(6)对采集到的数据分析通过网线回读通道传输到PC机上进行显示。

2 硬件设计

2.1 干扰信号隔离电路设计

传感器采集到模拟信号时存在着高压干扰信号,高压信号将导致电路元件损坏,因此传感器数据信号传输到A/D转换器前,需要设计方案来对高压干扰信号进行隔离滤除[3]。通常采用变压器进行高电平信号隔离,这就使得变压器要有较大的电感值,从而导致所设计的采集装置体积笨重。本文设计的采集装置,采用光电耦合隔离器进行高电平滤波。光电耦合隔离器具有体积小、传输精度高特点,选线性光电耦合电路原理如图2所示。运算放大器Q1与发光二极管D1构成的反馈通道,在检控LED电流的同时对其进行非线性的补偿。二极管D2控制电流的形成,将电流经过C2运放电路时转换成电压信号V3输出。

图2 高电平滤波

当图2中LED在受到电流的激发时,会发出红外光,此时D1与D2感知光子信号,而产生电流I1与I2,由此引起的电流增益为

K1=I1/If,K2=I2/If

(1)

通过D1构成的反馈回路,对发光二极管LED产生的电流进行补偿,进而实现补偿LED的非线性状态,保证电路的输入输出线性关系。由虚短虚断原则得到流经D1的电流I1与If如式(2)所示:

(2)

输出电流If与输入电压V2成线性正比关系。同理分析得出输出电压V3为

V3=V2IfR3

(3)

由此便得到输入电压与输出电压的关系

(4)

本设计方案选择HCNR202光电耦合器能够保证增益K2与K1相等,此时只需要配置电阻R3与R1阻值相等就可以实现传感器输入的信号满足1∶1进行隔离高电平输入。

2.2 模数转换电路设计

采用高精度芯片ADS1258作为转换芯片,该芯片的转换精度较高,具有快速的转换频率,具有较多的转换通道,能够实现采样频率的灵活配置[4]。其转换电路连接如图3所示。ADS1258芯片的3处供电部分分别为:

(1)模拟部分AVDD采用0~5 V供电,AVSS接模拟地;

(2)数字部分与FPGA连接,DVDD接3.3 V,DGND接数字地;

(3)参考电压:VREF=VREFP-VREFN,由于参考电压的稳定性关系到芯片采集数据的精度,以高精度的稳压芯片AD586产生5 V电压作为参考电压输入,精度达 2 mV,且具有较低的噪声漂移性。

图3 A/D转换接口电路

2.3 开关指令隔离电路设计

整个数据存储采集装置接收16路数据、起飞、擦出等命令信号。本设计通过光耦HCPL-0631接收,用来隔离前后级电路之间的影响,提高接收的命令信号的可靠性。原理结构如图4所示。输入端连接的200 Ω电阻R1、R2用来限制电流大小以保护发光二极管,在光耦的输入端接入反向二极管D1、D2防止出现电路故障时,电流回流至光耦,通过并接的电容C1、C2来滤波消除抖动,保证开关信号电平稳定平整。

图4 开关控制电路

3 软件设计

3.1 模拟信号数据编帧结构设计

本实验对16路通道数据进行采样,分别为10路冲击信号(A1~A10),单通道采样率为8 kHz,6路噪声信号(B1~B6),单通道采样率为16 kHz,数据的总采样率为176 kHz。为了能达到信号的均匀采样,必须要保证1帧数据中同一信号采样点的时间间隔均匀,因此必须对模拟信号设计均匀编帧结构[5]。将16 kHz的噪声信号放在数据帧结构的起始位置,为了节省空间设定11 kHz为一帧数据中每一个采样点的采样率,最高采样频率为其16倍,因此1帧数据中每个噪声信号需出现16次,即16个采样点,从而确定数据帧结构有16行。数据的总采样率为176 kHz,每一行的采样率为176/16=11 kHz。每一行的采样点数为11/1=11 kHz,同时需要在每一帧尾部添加帧结束标志与帧计数信号,以便检测出数据采集过程中有无丢帧误帧的情况[6]。初步设定帧结构的列数为13列。构成的数据帧为16×13的矩阵,总采样点为208个,其中帧标志为16个采样点,帧计数16个采样点。根据设计的编帧结构,矩阵总的采样频率变为208 kHz。最终得到的数据编帧结构如表1所示,其中C1~C16为帧标志位,D1~D16为帧计数位。

表1 数据编帧结构

表1中每个采样点均以1 kHz进行采样,总采样频率变为208 kHz。对于A1采样点,一帧数据之内间隔为3个采样点重新采样,采样率为208/13=16 kHz。满足了噪声信号的采样频率的要求。

3.2 开关指令设计

3.2.1 组合开关命令逻辑设计

本设计中总共有3条开关指令信号分别是系统复位、采集数据、停止采集命令。

通常有效命令的个数占可编码命令个数的百分比越小,命令信号的抗干扰能力越强,系统的可靠性也就越高[7]。本文设计3路命令线的方式对开关指令信号编码,3路命令线可得到8个编码指令,有效命令占总编码指令的37.5%,该组合编码的性能满足设计要求。具体的设计命令信号编码如表2所示。通过组合开关指令的编码设计,任意开关命令之间的转换均需要改变2路信号,当一路信号受到干扰之后,其余两路也会受到近似的干扰。如采集数据命令101受到干扰后变成111,只改变一路信号,由于111非有效编码指令,因此消除了干扰信号的影响。

表2 开关指令编码表

3.2.2 开关指令滤波

在硬件设计过程中通过设计光耦滤波初步对开关指令信号初步滤波,但是在实际环境中存在着2种干扰,一种是高频电磁干扰信号,通常占有效数据位的10%,另一种是抖动产生的长时间噪声信号。本文通过设抽样表决与延时滤波相结合的软件滤波方式,进一步对开关控制信号进行滤波。

首先通过抽样表决法消除高频噪声干扰。本文设计有效信号实验环境下维持时间大约2100 ns,每一指令位为700 ns,设计互动窗口宽度为77.8 ns,即对一个指令位连续采样9次,当采集到的有效电平大于4次就认为是有效指令位。

抽样表决法可以滤除高频噪声但是对于长时间的抖动噪声信号却无法得到较好的效果,本文在抽样表决法基础上通过设计延时滤波器进行消抖,通过连续的对开关命令信号高频采样,得到N个采样点。如果N个采样值一样则认为该命令信号有效,反之说明存在干扰信号,那么命令状态保持不变,并重新开始采集N个采样点。根据实验统计,本文设定N为5,通过连续采集5个点来判断指令的有效性。

对于本文设计的3条指令信号,由于接收端接收的先后顺序不同将产生延时误差,因此经过抽样表决和延时消抖滤波后,还需对组合指令进行延时消抖,消除延时误差最终接收到有效指令信号。图5为通过ISim仿真该逻辑设计的示意图。

图5 逻辑仿真波形

如图5所示初始时刻的信号cd0~cd2经过抽样表决后得到信号cd_sft0~cd_sft2,然后通过延时消抖得到cd_dely0~cd_dely2,最后再进行延时输出out即为最终输出的信号。通过仿真实验可以看出对于发送的001指令信号最终接收端得到001信号证明了该设计的可靠性。

3.3 存储器FIFO管理与数据编帧设计

本文实验环境冲击信号的最高写入FIFO的速率为8 KB/s,噪声信号最高写入速率为16 KB/s,为协调Flash与A/D传输速率之间的异步时钟关系,选用2KB的FIFO即可满足要求。采集存储装置需要采集2种不同类型的数据信号。本文通过将不同的类型数据的帧头、帧尾、信道等加入唯一标识的方式,再混合打包发给记录器,避免了存储器不同存储区地址进行不断切换,简化了逻辑控制。先将2种不同类型的数据收受之后进行缓存,对这2类数据加入标识信息打包,再将融合后的数据再送到记录器。

冲击信号与环境信号的数据频率不同,设计过程中采用异步FIFO进行调整各数据接收模块与编帧打包之间的数据速率[8]。在FIFO设计中采用PROG_FULL半满标志信号作为进行读取FIFO的标识信号,本文设计当缓存器中数据达到512字节时该标志位置1,进行该类型数据打包发送,由于2种信号的传输速率不同,设定当进行FIFO缓存读取时先对噪声信号读取,然后读取冲击信号。当其中任意路数据量达到512字节时就按该顺序从FIFO中读出512个字节并在这些数据前面加入包头、通道标志、包计数,再写入发送FIFO缓存,当完成上述操作后再行循环操作。

每1包数据包括4个字节包标志、1个字节数据通道与3个字节包计数组成的标识符以及512个字节有效数据。数据打包格式如表3所示。

表3 数据打包格式

4 数据采集分析

4.1 转换精度分析

从16路模拟信号通道中选取冲击信号1与5通道的信号作为数据采集效果分析。通过计算公式Vo=(D/2n)Vref得出由A/D转换后的数字信号可以输出的模拟电压值,其中D为转换后的数字量,n为精度位数24,Vref为参考电压5 V。每路从采集结果选20个数据取平均数代入计算。D取A/D转换后的高16位进行计算,由于最高位为符号位,实际取后15位进行计算,各通道转换结果如表4所示。

表4 转换结果

由此可知通道1的采样精度为

(1.793 7-1.792 7)/1.7927=0.056%

通道5的采样精度为

(4.633 0-4.629 7)/4.629 7=0.071%

通道精度均达到了0.1%的设计精度需求。

4.2 采集信号复原

存储器中的数据通过WS5300网线与PC机连接,用2.5 V中心电压、振幅为1 V的正弦波测试本设计的整体性能,上位机读取采集的数据并显示出波形。点击开始采集按钮,显示结果如图6所示。

图6 波形采集效果

图6为通道1波形与通道5采集的波形,结果表明两波形没有出现杂波与畸形,说明系统采集存储平稳有效,满足多通道模拟信号的采集要求。

5 结束语

本文利用FPGA为控制芯片,ADS1258作为模数转换芯片设计采集系统,FIFO作为缓存装置,通过设计开关控制来精准地发送控制命令,可以精准地采集到不同频率信号下的模拟信号。设计弥补了目前数据采集控制领域信号采集欠缺稳定的不足,在高速发展的区域模块,非常有实用价值,满足了实际的测试需求。

猜你喜欢

模拟信号命令指令
基于CAN总线的车身控制模拟信号采集程序设计
只听主人的命令
一种基于ADG426多路模拟开关的模拟信号输入接口设计
移防命令下达后
模拟信号的三种调制方法比较研究
这是人民的命令
基于数字电路对模拟信号的转化研究
中断与跳转操作对指令串的影响
基于汇编指令分布的恶意代码检测算法研究
一种基于滑窗的余度指令判别算法