《基于Xilinx System Generator设计平台快速构建PID算法以及完成硬件实现过程详解.docx》由会员分享,可在线阅读,更多相关《基于Xilinx System Generator设计平台快速构建PID算法以及完成硬件实现过程详解.docx(5页珍藏版)》请在第一文库网上搜索。
1、基于Xi1inXSystemGeneratOr设计平台快速构建P1D算法以及完成硬件实现过程详解1Xi1inxSystemGenerator简介Xi1inxSystemGenerator是专门为数字信号算法处理而推出的模型化设计平台,可以快速、简单地将幽系统的抽象算法转换成可综合的、可靠的硬件系统,弥补了大部分对缁宣以及皿也工具很熟悉的I)SP工程师对于硬件描述语言VHD1和Veri1ogH1)1认识不足的缺陷。SystemGeneratOr作为一个硬件设计工具包安装在MatIab软件中,提供了相当丰富的应用子模块。设计者如同使用Mat1ab中其他模块一样,通过拖拽和连接就可以将子模块搭建成一
2、个完整的应用系统。2增量式PID数字算法原理在P1D控制算法的应用中有位置式和增量式两种。位置式P1D控制算法中因运用了误差的累加,控制的输出量与过去所有时间的状态有关,所以位置式PID控制算法的累积误差相对较大。而增量式PID控制算法中的调整量只是与当前及前两个状态有关,并且增量式PID算法只是控制每次的输出增量,而且一般执行机构都带有记忆功能,一旦控避出错,能保持住原位,不会严重影响到系统的工作。Pn)数学模型:Ua):KJe“叶e()dr+5呼1(I)其中为比例放大系数力为积分时间,3为微分时间。数字PID模型:PA=KPe(i)+;其中表示.NOFE1ECTRONICTECHNIQUE
3、(2)时刻。工=W添Ghin弱区限。Qm2)(3)其中-2表示再上一个采样时刻。式(2)和式(3)相减得到增量式数字PID模型:=K(-r1-IH+Ke(/)+JK)(i)-2e(i-1)+(i-2)(,4)3在SySte1nGenerator中建立PID算法模型根据公式(4)的增量式数字PID模型,可在Xi1inXSystemGeneratorI具包中调用相关子函数模块来构建整个函数5,如图1所示。设计中使用了自定义函数模块(MCOde),该模块是XiIinXSystemGenerator中提供给DSP设计者的可编程逻辑模块,可以使用Mat1ab语言编写符合设计者要求的子函数。MCOde模块
4、分别支持控制逻辑、状态逻辑、二位除法运算以及定点数运算等逻辑运算,并可灵活地定义输入输出的个数以及输出数据的类型。最终在生成硬件逻辑时自动将MCOe1e中的代码转换成VHD1/Veri1og硬件描述语言。另外,由于生成的是逻辑控制,对设计者来说运用起来十分便利,并且该模块中的代码在生成为硬件逻辑以后,几乎是并行直接输出,速度和效率都非常高。如图2所示,在MCode模块中写入了代码之后,会生成对应的自定义函数模块。、一Z-inW,.ChinaAEI图2在MraIr中添加可编4控制对象与控制算法的级联在PID算法模块构建完成以后,需要嵌入到实际的控制对象中以达到预期的控制目的。实验采用的是一阶RC
5、控制对象,该对象在实验中可以明显有效地将控制效果反映出来。PID闭环控制系统框图如图3所示。对于一阶RC控制对象,选择电压作为输出的控制量,在设计中加入了A/D以及D/A转换模块来完成采样和控制量的输出。实验平台采用Xi1inx公司的Spartan3EStartKit,其中带有两路14bit的A/D(1TC1407)输入以及4路16bit蛉定值PID控制的DA(D/A输出被控对象D/A转换速率,整个实验工程分为6个步骤完成:(1)在ISE环境中建立T程.创建一个顶层文件.将A/D和D/A模块的驱动文件例化并添加到顶层文件下二关于SParta3E开发板上的A/D和D/A的VHD1驱动代码在Xi1
6、inx官方网站的ReferenceDesigner中己经开源共享.也可以根据A/D和D/A的数据手册编写VHD1驱ApTf7RMQJ.HeU“八K11、QI入,U:HkM“5XHTSdw51制MnV,idJI(U.MM尸ReHiGHWHm1!.1MH.H.?.n-Hh.H.tM1MmH1TSm1(BTOtEiFSPadrItei(11MF*ISrtIOHUM8,WN1(3)用SystemGenerator生成PID算法工程文件后导入到ISE工程中。双击图5中的SystemGenerator模块,选择HD1net1ist和生成路径后点击Generator,就能自动生成相应的VHD1/Veri1o
7、g硬件语言代码。在工程的顶层文件下把生成的SgP工程添加进去,例化后嵌入到工程中。(4)在顶层文件中由状态机安排好各个模块之间的时序。(5)综合工程,分析班时序是否满足工程要求,工程时序分析如表1所示。需要时可添加时钟管理器(KM)确保时序的正常进行。ftI工程时序分析isCi8二EX力nw.wBEP7於)-.tH1*1IS.QIKnHI*PCOHn*:卜AHkH比八MH.HIt-?nHUVUTSq.jIaaaCiAiivBU,PnUrgTn1ErJ(pSrnPSxd1wMa,gAIO原七,OvM(6)连线并把Brr文件上载到开发板中,用示波港察看实际效果。5实验数据分析实验中使用了D/A4路
8、输出信号中的2路:A路输出控制量;B路输出1V2V的方波电压作为给定值,同时方波电压接到另一个完全相同的一阶RC电路上,让其与通过P1D调节后的被控对象作对比。图6(a)图6(d)表示了频率为100HZ时,在不同参数条件下的实验结果。从实验结果可知,在屿中构建的P1D控制器完全能达到预期的效果,而且实验结果是通过示波器观测到的实测结果,证明了在FPGA中实现算法硬件化是可行的,并且控制算法在硬件中运行的实测数据和仿真出来的模拟数据相比,实测数据更有说服力。用FPGA作为嵌入式算法平台,在算法运行速度上与其他嵌入式算法平台相比有着特定的优势,利用XiIinX的SystemGenerator工具能够快速简单地完成算法构建并可直接完成硬件实现。虽然本文采用的是一阶RC电路作为控制对象,即使换成是二阶或者是耨合控制对象同样能够达到比较理想的控制效果。特别是对于大运算量的算法(如矩阵运算等),在FPGA资源充裕的情况下,可以达到其他控制器无法达到的处理速度,而且基于FPGA的可编程性,对于算法的修正、升级和验证都十分灵活,更使算法的硬件实现变得实用。缺点是FPGA对于时序较为严格,在工程中需要对整个工程的时序进行分析,以确保满足时序要求,而且如果是自己编写一些执行机构的驱动,仍需要将驱动部分也考虑进去,必要时需要添加约束。