采用FPGA的SOPC技术研究了传感器非线性软件校正的实现

时间:2012-10-29来源:网络

2.3神经网络校正算法

利用BP神经网络实现非线性误差软件校正的文献较多,但主要是基于PC机的仿真实验。单片微处理器由于存储容量和数据总线宽度的限制,网络结构类型和计算精度只能控制在一定范围之内。SOPC在大规模集成电路的基础上,底层电路采用硬件描述语言实现,而软件算法则在SOPC IDE调试环境下采用高级语言,如C语言实现。在本文中,SOPC系统板采用NIOS-Ⅱ软核微处理器,32 bit总线,工作频率为50 MHz,BP神经网络采用动量法,在ALTERA公司提供的SOPC IDE调试环境下完成。算法处理结构如图2所示。

3 算法测试

本文采用三层前向网络,输入层神经元2个,分别代表温度传感器ADS90和气体传感器TGS813输入信号,DS18B20的测量值作为AD590的期望值,输出层神经元1个,代表AD590的校正值。

本文共采集了70个样本对数据作为神经网络的输入。神经网络的训练采样动量自适应算法,剔除部分不符合要求的样本,58个样本作为训练样本,8个样本作为测试样本。BP神经网络采用C语言编程实现,由于微处理器与PC机相比,在工作频率和总线结构方面还存在很大差距,因此,在计算算法的误差输出时,本文采用的是各个训练样本的绝对误差的累加和,而不是均方根误差,这样,可以避免大量的乘法和开方运算,否则,算法很难收敛。 作为BP神经网络动量法的重要参数,如果学习率参数选择的范围比较窄,那么,网络性能的随机性特点就会非常明显,不利于网络的推广应用。图3是选择不同的学习率时网络输出误差的变化情况。测试条件是动量系数为0.9,增益为1,隐含层节点6个,算法停止迭代的判断条件是输出绝对误差累加和小于0.01。

图4是58对训练样本完成网络训练后的测试结果。由于BP神经网络的性能受隐含层节点个数影响比较大,图中数据是在不同隐含层节点个数的条件下得到的,并与MATLAB软件仿真得到的结果作了比较。网络训练的条件:学习率为0.1,动量系数为0.9,增益为1,SOPC停止迭代的判断条件是输出绝对误差累加和小于0.01,MATLAB停止迭代的判断条件是均方根误差小于0.0001,图中,n代表隐含层节点个数。

由于采用的是12 bit的A/D转换芯片,采集数据送入FPGA系统板后,经过归一化处理,数据类型发生变化。与MATLAB仿真软件输出结果保持一致,基于FPGA的神经网络输出取小数点后4位有效数字。由图4可以得出:虽然在个别测试点上基于MATLAB软件仿真结果优于SOPC的输出结果,但在隐含层节点对算法性能的影响程度上,基于SOPC技术的输出受到的影响比较小,稳定性好,这与SOPC技术采用32位字长有很大关系。

4 结论

基于FPGA的SOPC技术不同于IC芯片设计,它是把已有的模块资源组合成一个系统,系统的功能直接由载体FPGA芯片实现;它又不同于传统的基于单片微处理器的系统设计,因为SOPC系统的微处理器性能和外围接口控制电路都是由用户编程设定的,因此,采用SOPC技术可以节省成本,提高资源利用率,缩短开发周期和便于系统升级等特点。本文采用基于FPGA的SOPC技术研究了传感器非线性软件校正的问题。算法的测试结果证实了方法的可行性。

1 2

关键词: 非线性 软件 校正 实现 传感器 研究 FPGA SOPC 技术 采用

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版