首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于FPGA的神经元自适应PID控制器设计
来源:本站整理  作者:佚名  2009-08-25 09:59:45




同理,浮点除法运算中,商的阶码是两个数的阶码之差(被除数减除数),商的尾数是两个数尾数的商,符号是两个数符号的异或,注意这里结果的规格化与以往不同,是向右规格化操作。
由于篇幅所限,本文在此不再给出乘法器和除法器的详细设计图,在具体实现中,乘法器的尾数乘积运算采用了booth算法,除法器的尾数相除运算采用了移位相减的方法。
二进制与十进制浮点数相互
转换电路的设计
系统输入值、从传感器反馈回来的系统输出值以及送给DAC的输出控制量都不是上述二进制的浮点数类型,因此就需要能够将两种类型的数据进行相互转换的电路。完成二进制浮点数转换成十进制浮点数的全部操作所需要的时钟数取决于二进制浮点数的大小,最少232个,最多1069个;而十进制浮点数转换成二进制浮点数时,不论浮点数的大小,都只需要194个时钟周期。
神经元算法在FPGA上的实现
有了以上加、减、乘、除浮点运算模块以及进制转换模块,要实现神经元算法只需合理地把他们组织到一起。在FPGA里,是通过一个状态机来完成这一功能的。状态转换图如图3所示,在图中每个标有计算字样的状态里,所有运算都是并行完成的,大大节省了运算时间。图中的START信号可以由微控制器给出,需要注意的是,并不只是在最后的状态里START=0才使状态机复原到IDLE状态,实际情况是,任意时刻只要START=0,状态机都会复原。这一点由于篇幅所限没能在图上标示出来,在此做一简要说明。
使用 Synplify Pro 7.1在Xilinx Virtex2 XC2V1500fg676-4上实现了该系统的综合,时钟频率为98.4MHz,LUT资源占用率为76%。

基于BP神经网络整定的PID
控制器的FPGA设计概述
基于BP(Back Propagation)网络的PID控制系统参数整定结构如图4所示,控制器由两部分构成:
(1) 经典的PID控制器:直接对被控对象进行闭环控制,三个参数kp、ki、kd为在线调整方式;
(2)神经网络:根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化。即使输出层神经元的输出状态对应于PID控制器的三个可调参数kp、ki、kd,通过神经网络的自学习、加权系数调整,使神经网络的输出对应于某种最优控制率下的PID控制器参数。
用FPGA实现BP神经网络,除了各个浮点运算模块之外,还需要实现隐层神经元的活化函数——正负对称的Sigmoid函数:

和输出层神经元的活化函数——非负的Sigmoid函数:

其中超越函数ex的实现,常用的有两大类:一是多项式迭代,该方法实现速度快,但需要乘法器,当计算精度较高时,硬件成本大;二是移位加迭代,此方法只需加法器,结构简单易于实现,但实现速度慢。参考文献2中还提到了一种采用分段线性化的方法,虽然实现容易,但是精度较低。笔者拟在现有浮点四则运算模块的基础上,采用指数函数幂级数展开式前n项和的形式实现超越函数ex。这虽然也是采用了多项式迭代的方式,但采用FPGA实现,可以在保证精度的前提下,减少硬件成本。有了这一模块后,经过合理安排BP算法的运算顺序,就可以在FPGA上实现基于BP神经网络整定的PID控制器了。

结语
当今神经网络的应用大多以软件方式完成核心算法,但受限于微处理器(或DSP)工作频率太慢或PC机体积较大的弱点,难以大规模应用。鉴于此,本文提出了一种基于FPGA、以硬件方式完成神经网络算法的方案,在保证运算精度的前提下,运算速度可比同频率的处理器以软件方式实现快上百倍。另外,文中各个浮点运算模块的实现还有一些有待优化的地方,因此可以在硬件资源上更为节省。由此可见,硬神经网络是解决其学习速度慢、满足实时控制需要的必由之路。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:297,414.10000 毫秒