基于神经网络电机速度控制器的SOPC系统
时间:06-02
来源:互联网
点击:
由于时变非线性和强耦合的控制系统还没有精确的数学模型,因而传统的依赖被控对象数学模型的控制策略及其控制系统的封闭式结构很难对其实施有效控制。神经网络控制能够很好地克服系统中模型参数的变化和非线性等不确定因素影响[1],并且随着可编程片上系统SoPC和大规模现场可编程门阵列FPGA 的出现,为神经网络控制器的硬件实现提供了新的载体[2]。
本文以Altera FPGA及内含的一个Nios II嵌入式软核处理器作为上位机来研究机械手臂直流电机速度控制器的片上可编程系统(SoPC)。根据模块化的设计思想,采用Verilog HDL语言,将神经网络控制器和其他电路模块在FPGA芯片内以硬件方式实现。
1 系统总体结构
系统控制部分采用Altera公司的CycloneII EP2C35芯片,取代了传统的单片机或DSP。FPGA与单片机最大的区别是它的并行性,FPGA能够并行地采集、处理和输出信号,是实现神经网络并行运算的关键,对提高系统的运行速度起了很大的作用。其FPGA芯片内集成的Nios II软核处理器作为上位机,根据末端执行器的速度,采用C++语言进行坐标变换和轨迹规划,定时向伺服控制系统发出控制命令和运行参数。系统总体框图如图1所示。
2 神经网络速度控制器
2.1 神经网络参数辨识自适应控制的基本原理
用作自适应控制器的BPNNC,输入为电机给定转速y与实际转速yf相比较得到的转速误差e及其变化率ec,输出为PWM的控制信号 Vp(k)。用作参数辨识的BPNNI的输入为驱动系统的实际输入(即BPNNC的输出值Vp)和电机实际转速yf,输出为辩识的系统输出y*,y*为预测转速,利用y*代替yf,用作RBFNNC的在线训练。图2为参数辨识自适应控制方框图。
本文所用的两个BPNN都是双输入单输出网络,离线训练的样本均通过实验方法获得。NNC的输入样本向量为Xci={e(k),ec(k)},输出样本向量为Yci={Vp(k)};NNI的输入样本向量XIi={Vp(k-1),yf(k-1)},输出样本向量YIi={y*(k)}。网络参数的学习分两步进行:先在离线训练中确定隐层节点的个数及其各层的网络连接初始权值,再通过在线训练自适应地调整权值。
两个BPNN都采用三层网络。输入层结点只起信号传输作用,隐含层和输出层神经元的激活函数采用Sigmoid函数:
网络训练采用负梯度下降的误差反向传播算法。
2.2 BPNN在FPGA中的硬件可重构实现
目前基于SRAM工艺的FPGA具有易失性的特点,每次重新加电后FPGA都要重配置,才能使其进入工作状态。配置信息通常存放在片外存储器中,因此导致FPGA器件的资源配置可改变特性刚好可以满足由上述可知的BP网络的结构可重构、激活函数可重构和学习算法可重构的要求。
从计算的角度考虑,BP网络的算法可以分为三个步骤,即前向传播、误差反向传播以及权值更新。但是考虑到神经网络的复杂性和设计文件的复用性,BP神经网络的硬件实现必须解决与算法有关的运算速度、计算精度、并行性和可存储性等问题。本文本着层次化、模块化的原则,采用由 VerilogHDL硬件描述语言输入的自上而下的设计方法,把BP神经网络分为前向运算模块、误差反传及权值调整模块、权值存储模块、权值分配模块等几大功能模块。系统结构如图3。
将上述各个BP网络运算模块组合后就可以实现一整套人工神经网络。但是仅仅将这些模块简单连在一起并不能让网络进行工作或训练,还必须精确设定在每一个时钟沿对每一个模块发出正确的使能信号,使每一个模块处在工作状态或者停滞状态,并且还必须有合适的地址信号发生器在正确的时间产生正确的地址信号,使每一次数据都能从正确位置读出并写入正确的位置。本文根据BP算法的运算规则设计控制模块,并且在整个系统中采用一个共用的地址发生器。控制模块有七个输出信号,分别是:前向模块使能信号、学习模块使能信号、片内RAM及地址产生模块使能信号、片内RAM写入控制信号 wen、片内RAM读出控制信号ren、片外存储器写控制信号save、片外存储器读控制信号load。因此最后的控制器可以使网络进行离线训练时将前向模块、误差反传模块和相应的控制模块同时配置到FPGA中进行网络训练。当训练好的网络正常工作时,只要在FPGA中配置前向模块和相应的控制模块就可以高速运行该神经网络。逻辑工作流程如图4所示。
2.3 BP网络控制器的仿真结果
文献[6]中,通过对一些典型应用的研究和分析发现,16位定点数是不削弱神经网络能力的最小精度要求。为避免运算规模过于庞大和节约芯片资源,本设计对32位的输出数据进行了截尾操作,仅取32位中的前16位。
源代码通过功能仿真和时序仿真测试后综合生成网表文件,最后在Altera公司的Cyclone II EP2C35器件中实现。BP网络控制器的QuartusⅡ仿真结果如图5所示。由图5可知经过多次训练后系统输出值f越来越接近于给定值t,误差err 变小,小于给定误差。
本文以Altera FPGA及内含的一个Nios II嵌入式软核处理器作为上位机来研究机械手臂直流电机速度控制器的片上可编程系统(SoPC)。根据模块化的设计思想,采用Verilog HDL语言,将神经网络控制器和其他电路模块在FPGA芯片内以硬件方式实现。
1 系统总体结构
系统控制部分采用Altera公司的CycloneII EP2C35芯片,取代了传统的单片机或DSP。FPGA与单片机最大的区别是它的并行性,FPGA能够并行地采集、处理和输出信号,是实现神经网络并行运算的关键,对提高系统的运行速度起了很大的作用。其FPGA芯片内集成的Nios II软核处理器作为上位机,根据末端执行器的速度,采用C++语言进行坐标变换和轨迹规划,定时向伺服控制系统发出控制命令和运行参数。系统总体框图如图1所示。
2 神经网络速度控制器
2.1 神经网络参数辨识自适应控制的基本原理
用作自适应控制器的BPNNC,输入为电机给定转速y与实际转速yf相比较得到的转速误差e及其变化率ec,输出为PWM的控制信号 Vp(k)。用作参数辨识的BPNNI的输入为驱动系统的实际输入(即BPNNC的输出值Vp)和电机实际转速yf,输出为辩识的系统输出y*,y*为预测转速,利用y*代替yf,用作RBFNNC的在线训练。图2为参数辨识自适应控制方框图。
本文所用的两个BPNN都是双输入单输出网络,离线训练的样本均通过实验方法获得。NNC的输入样本向量为Xci={e(k),ec(k)},输出样本向量为Yci={Vp(k)};NNI的输入样本向量XIi={Vp(k-1),yf(k-1)},输出样本向量YIi={y*(k)}。网络参数的学习分两步进行:先在离线训练中确定隐层节点的个数及其各层的网络连接初始权值,再通过在线训练自适应地调整权值。
两个BPNN都采用三层网络。输入层结点只起信号传输作用,隐含层和输出层神经元的激活函数采用Sigmoid函数:
网络训练采用负梯度下降的误差反向传播算法。
2.2 BPNN在FPGA中的硬件可重构实现
目前基于SRAM工艺的FPGA具有易失性的特点,每次重新加电后FPGA都要重配置,才能使其进入工作状态。配置信息通常存放在片外存储器中,因此导致FPGA器件的资源配置可改变特性刚好可以满足由上述可知的BP网络的结构可重构、激活函数可重构和学习算法可重构的要求。
从计算的角度考虑,BP网络的算法可以分为三个步骤,即前向传播、误差反向传播以及权值更新。但是考虑到神经网络的复杂性和设计文件的复用性,BP神经网络的硬件实现必须解决与算法有关的运算速度、计算精度、并行性和可存储性等问题。本文本着层次化、模块化的原则,采用由 VerilogHDL硬件描述语言输入的自上而下的设计方法,把BP神经网络分为前向运算模块、误差反传及权值调整模块、权值存储模块、权值分配模块等几大功能模块。系统结构如图3。
将上述各个BP网络运算模块组合后就可以实现一整套人工神经网络。但是仅仅将这些模块简单连在一起并不能让网络进行工作或训练,还必须精确设定在每一个时钟沿对每一个模块发出正确的使能信号,使每一个模块处在工作状态或者停滞状态,并且还必须有合适的地址信号发生器在正确的时间产生正确的地址信号,使每一次数据都能从正确位置读出并写入正确的位置。本文根据BP算法的运算规则设计控制模块,并且在整个系统中采用一个共用的地址发生器。控制模块有七个输出信号,分别是:前向模块使能信号、学习模块使能信号、片内RAM及地址产生模块使能信号、片内RAM写入控制信号 wen、片内RAM读出控制信号ren、片外存储器写控制信号save、片外存储器读控制信号load。因此最后的控制器可以使网络进行离线训练时将前向模块、误差反传模块和相应的控制模块同时配置到FPGA中进行网络训练。当训练好的网络正常工作时,只要在FPGA中配置前向模块和相应的控制模块就可以高速运行该神经网络。逻辑工作流程如图4所示。
2.3 BP网络控制器的仿真结果
文献[6]中,通过对一些典型应用的研究和分析发现,16位定点数是不削弱神经网络能力的最小精度要求。为避免运算规模过于庞大和节约芯片资源,本设计对32位的输出数据进行了截尾操作,仅取32位中的前16位。
源代码通过功能仿真和时序仿真测试后综合生成网表文件,最后在Altera公司的Cyclone II EP2C35器件中实现。BP网络控制器的QuartusⅡ仿真结果如图5所示。由图5可知经过多次训练后系统输出值f越来越接近于给定值t,误差err 变小,小于给定误差。
神经网络 FPGA Altera 嵌入式 Verilog 电路 单片机 DSP PWM 信号发生器 仿真 Quartus 编码器 电压 电流 机器人 电动机 相关文章:
- 基于MSP430的自主式移动机器人设计与实现(06-12)
- 无线机器人的进化(02-23)
- 一种视觉导航机器人的设计(03-22)
- 精密运动控制器LM628的应用设计(06-20)
- 基于多传感器信息融合的移动机器人导航综述(10-28)
- 机器人视觉识别技术简介(09-25)