《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于Xilinx System Generator的PID算法快速硬件实现
基于Xilinx System Generator的PID算法快速硬件实现
来源:电子技术应用2011年第11期
钱伟康1,倪元鸿1,谢凯年2,蒋 艳1
1.上海理工大学 光电信息与计算机工程学院,上海200093; 2.上海赛灵思电子科技有限公司 大学计划部大中华区,上海201203
摘要: 介绍了利用Xilinx System Generator平台构建模型化数字PID控制算法,并通过FPGA将数字PID算法结合传感器与实际硬件控制对象快速建立控制模型,构成完整的闭环控制。通过对控制效果的实验验证,证明了其控制方法的可行性。
中图分类号: TP273
文献标识码: B
文章编号: 0258-7998(2011)11-0048-04
Simpler realization of PID algorithm based on Xilinx system generator
Qian Weikang1,Ni Yuanhong1,Xie Kainian2,Jiang Yan1
1.College of Optoelectronic Information and Computer Engineering,University of Shanghai for Science and Technology, Shanghai 200093,China; 2.Shanghai Xilinx Technology Company(XUP China), Shanghai 201203,China
Abstract: This paper introduced how to create the digital PID control algorithm model and form a complete closed-loop control system through digital PID algorithm combining with the sensor and actual hardware control object based on Xilinx System Generator tools and FPGA. Finally, the experiment results of control effect proved the feasibility of the control method.
Key words : FPGA;system generator;PID algorithm


1 Xilinx System Generator简介
    Xilinx System Generator 是专门为数字信号算法处理而推出的模型化设计平台,可以快速、简单地将DSP系统的抽象算法转换成可综合的、可靠的硬件系统,弥补了大部分对C语言以及Matlab工具很熟悉的DSP工程师对于硬件描述语言VHDL和Verilog HDL认识不足的缺陷[1]。
    System Generator作为一个硬件设计工具包安装在Matlab软件中,提供了相当丰富的应用子模块[2]。设计者如同使用Matlab中其他模块一样,通过拖拽和连接就可以将子模块搭建成一个完整的应用系统。
2 增量式PID数字算法原理
    在PID控制算法的应用中有位置式和增量式两种[3-4]。位置式PID控制算法中因运用了误差的累加,控制的输出量与过去所有时间的状态有关,所以位置式PID控制算法的累积误差相对较大。而增量式PID控制算法中的调整量只是与当前及前两个状态有关,并且增量式PID算法只是控制每次的输出增量,而且一般执行机构都带有记忆功能,一旦控制器出错,能保持住原位,不会严重影响到系统的工作。
    PID数学模型:

3 在System Generator中建立PID算法模型
    根据公式(4)的增量式数字PID模型,可在Xilinx System Generator工具包中调用相关子函数模块来构建整个函数[5],如图1所示。

    设计中使用了自定义函数模块(Mcode),该模块是Xilinx System Generator中提供给DSP设计者的可编程逻辑模块,可以使用Matlab语言编写符合设计者要求的子函数。Mcode模块分别支持控制逻辑、状态逻辑、二位除法运算以及定点数运算等逻辑运算,并可灵活地定义输入输出的个数以及输出数据的类型。最终在生成硬件逻辑时自动将Mcode中的代码转换成VHDL/Verilog硬件描述语言。另外,由于生成的是逻辑控制,对设计者来说运用起来十分便利,并且该模块中的代码在生成为硬件逻辑以后,几乎是并行直接输出,速度和效率都非常高。如图2所示,在Mcode模块中写入了代码之后,会生成对应的自定义函数模块。

4 控制对象与控制算法的级联
    在PID算法模块构建完成以后,需要嵌入到实际的控制对象中以达到预期的控制目的。
    实验采用的是一阶RC控制对象,该对象在实验中可以明显有效地将控制效果反映出来。PID闭环控制系统框图如图3所示。对于一阶RC控制对象,选择电压作为输出的控制量,在设计中加入了A/D 以及D/A转换模块来完成采样和控制量的输出。
    实验平台采用Xilinx公司的Spartan3E Start Kit,其中带有两路14 bit的A/D(LTC1407)输入以及4路16 bit

    (2)在PID算法的输入与输出端搭建数据转换模块。由于通过A/D采样得到的数据和D/A输出的数据都是二进制,而PID算法模块中使用的是十进制数据,并且小数点的位数也不一样,所以需要在PID算法的输入和输出端插入数据转换模块。另外还必须加入Gateway in和Gateway out来实现数据的前端输入和后端输出。PID控制器完整模型如图5所示。

 

 

    (3)用System Generator生成PID算法工程文件后导入到ISE工程中。双击图5中的System Generator模块,选择HDL\netlist和生成路径后点击Generator,就能自动生成相应的VHDL/Verilog硬件语言代码。在工程的顶层文件下把生成的sgp工程添加进去,例化后嵌入到工程中。
    (4)在顶层文件中由状态机安排好各个模块之间的时序。
    (5)综合工程,分析时钟时序是否满足工程要求,工程时序分析如表1所示。需要时可添加时钟管理器(DCM)确保时序的正常进行。


    (6)连线并把BIT文件下载到开发板中,用示波器察看实际效果。
5 实验数据分析
    实验中使用了D/A 4路输出信号中的2路:A路输出控制量;B路输出1 V~2 V的方波电压作为给定值,同时方波电压接到另一个完全相同的一阶RC电路上,让其与通过PID调节后的被控对象作对比。图6(a)~图6(d)表示了频率为100 Hz时,在不同参数条件下的实验结果。

    从实验结果可知,在FPGA中构建的PID控制器完全能达到预期的效果,而且实验结果是通过示波器观测到的实测结果,证明了在FPGA中实现算法硬件化是可行的,并且控制算法在硬件中运行的实测数据和仿真出来的模拟数据相比,实测数据更有说服力。
    用FPGA作为嵌入式算法平台,在算法运行速度上与其他嵌入式算法平台相比有着特定的优势,利用Xilinx的System Generator工具能够快速简单地完成算法构建并可直接完成硬件实现。虽然本文采用的是一阶RC电路作为控制对象,即使换成是二阶或者是耦合控制对象同样能够达到比较理想的控制效果。特别是对于大运算量的算法(如矩阵运算等),在FPGA资源充裕的情况下,可以达到其他控制器无法达到的处理速度,而且基于FPGA的可编程性,对于算法的修正、升级和验证都十分灵活,更使算法的硬件实现变得实用。缺点是FPGA对于时序较为严格,在工程中需要对整个工程的时序进行分析,以确保满足时序要求,而且如果是自己编写一些执行机构的驱动,仍需要将驱动部分也考虑进去,必要时需要添加约束。
参考文献
[1] 孟宪元,钱伟康.FPGA嵌入式系统设计[M].北京:电子工业出版社,2007.
[2] 纪志成.FPGA数字信号处理设计教程—System Generator入门与提高[M].西安:西安电子科技大学出版社,2008.
[3] 彭小卫.基于System Generator的Gardner 算法设计与实现[J].电子设计工程,2010(7):16-18.
[4] 蔡晓宁.数字PID控制器的硬件优化设计[J].中国科学院研究生院学报,2010(9):690-694.
[5] Shi Changchun,Hwang James,McMILLAN S,et al.A system level resource estimation tool for FPGAs[C].14th International Conference,FPL 2004,Leuven,Belgium,2004:424-433.

此内容为AET网站原创,未经授权禁止转载。