基于FPGA 的运动控制卡的设计和实现.docx
基于FPGA的运动控制卡的设计和实现zouzl导语:基于FPGA的运动控制卡采用脉冲加方向的闭环控制方式,具有构造简单,集成度高、实时性好等优点摘要:基于FPGA的运动控制卡采用脉冲加方向的闭环控制方式,具有构造简单,集成度高、实时性好等优点。从硬件的构成、设计和算法实现等方面入手,阐述了运动控制卡的设计和开发。用硬件描绘语言VHDLveryhighspeedintegratedcircuitHDL和原理图结合的方式对FPGA编程实现系统的主要硬件逻辑和算法,进而进步了系统的灵敏性和移植性。在硬件算法上,采用乒乓操纵处理高速的分频倍数数据流,进步了系统的实时性和控制精度;并且提出了一种基于加二计数器的分频算法,实现任意分频倍数的分频。利用嵌入式调试工具SignalTap对运动控制卡进展硬件调试和仿真,给出了相应的误差分析。关键词:运动控制卡;伺服电机;分频;现场可编程门阵列;外设部件互连标准总线;实时;乒乓操纵Designandrealizationofmotion-controlling-cardbasedonFPGALIMu-guo,PENGPing-liang0引言传统的运动控制卡多采用单片机作为微处理器,通过一些大规模集成电路实现对的控制。由于其构造较为复杂,因此在工作时,存在高频响应慢、控制精度低等缺点。本文提出一种以FPGAfield-programmablegatearray和PCI9054接口芯片为核心硬件的运动控制卡,内部硬件接口和算法通过对FPGA的编程实现。这样,既能很好地克制传统运动控制存在的缺点,又在灵敏性和移植性等方面得到了很大的进步。1硬件构成与设计1.1构成本文所述的是PCIperipheralcomponentinterconnect接口卡1,用Altera公司消费的型号为EP1C6Q240C8的FPGA作为编程逻辑器件,实现所有的硬件算法和反应信号的检测。采用脉冲加方向2的闭环控制方式对电机进展控制。整个运动控制卡系统可用图1描绘。1.2设计运动控制卡硬件电路描绘和设计时,严格按照同步时序设计原那么3,而且核心电路用D触发器实现,电路的主要信号由时钟的上升沿触发器产生。这样可以很好地防止毛刺,并且在布局后仿真和用高速逻辑分析仪采样实际工作信号皆无毛刺。在高速变化的分频倍数数据流控制时,为了保证整个系统的分频输出的实时性,采用如图2所示的乒乓操纵3技巧。在奇数2n+1个缓冲周期时,输入的数据流缓冲到RAM和从RAM取出数据到运算模块。在第偶数2n个缓冲周期,将数据流缓冲到RAM,将RAM1里的数据通过数据输出选择单元的选择,送到最后的分频和计数的运算模块进展计算输出。如此循环,周而复始。这种流水线式算法,可以完成数据的无缝缓冲与处理。本文所述的运动控制卡共涉及总线控制器、分频器、定时器、反应控制等4个模块,其原理图如图3所示。总线控制器完成PCI90544部分总线的仲裁逻辑5、地址译码和数据流控制,使PCI数据总线上的数据正确地被译码到各分控制模块进展运算输出。定时器实现硬件定时,计算机通过驱动程序给运动控制卡输入一时间值和一个表示计时开场的控制字,运动控制卡开场计时,在计时完成时,通过产僵硬件中断方式6,进入中断效劳程序,进而实现电机的转角准确定位。我们还可以把一些用户代码作为中断处理子程序,来实现定时切换或者运算的功能。分频器实现工作频率40MHz的分频工作,得到控制转速的脉冲频率。反应控制模块实现电机的输出补偿和状态监控功能,可通过读取误差进而实现修正,以此来进步系统控制精度。这些模块在FPGA内部采用原理图SchematicDiagrams+VHDL语言结合的方式进展描绘,使逻辑层次更加明确和可读性更强。2算法设计2.1实时分频算法运动控制卡输出的不同脉冲频率来实现电机转速的控制,因此脉冲频率的响应速度决定了整个电机的控制精度。这就必然要求我们在设计算法时,要充分考虑分频算法的实时性。本文提出一种基于加二计数器的分频算法,能很好地解决此问题。其算法详细流程图如图4所示。取锁相输出时钟作为设计的全局时钟,同时用两个单口RAM来穿插刷新分频倍数。加二计数器对输入时钟进展上升沿计数,并对其计数值进展比拟判定,假如计数值大于即是两倍的分频倍数,输出为1,否那么为0。实现分频器功能。分频器输出即为运动控制卡控制电机转速的脉冲clk_out。2.2闭环控制算法整个运动控制卡采用脉冲加方向的控制方式,实现电机的转速和方向的控制。为了保证电机的控制精度,在运动控制卡输出脉冲至电机的驱动器的同时,运动控制卡从中读出反应脉冲和方向。这样,只要设计两个计数器同时对输出脉冲和反应脉冲进展计数,并且对两个计数器的计数值进展判定和求差,然后根据求出的差值进展循环插补,即可实现电机的闭环控制。3调试和结果仿真3.1系统调试本卡采用Quartus软件自带的SignalTap7进展仿真调试,它是一种基于逻辑分析核的嵌入式逻辑分析仪,在使用时,调试人员无需外接专用仪器,就可以通过对FPGA器件内部所有信号和节点的捕捉,来实现对系统故障的分析和判定,整个调试经过非常直观、方便。SignalTap在收集时钟的上升沿处收集数据,收集时钟的设置不恰当,有时候会得到不能准确反映设计的不期望数据状态,Altera建议最好使用全局时钟。文中给出以全局时钟gclk作为收集时钟,1级触发,并且以RESULT=ELDHOLD,1作为触发逻辑8,其运行分析结果如图5所示。值得留意的是,在调试完成后,需将SignalTap文件移除设计目录,以免浪费资源。3.2调试结果及误差分析从图5的调试结果来看,运动控制卡的整个控制服从于总线仲裁逻辑。PCI和FPGA数据交换在READY=0时进展,总线LD上数据在READY=0时有效。分频倍数存放器值改变,分频输出频率即刻作相应改变,知足设计目的。对电机行程journey1和journey2、报警alarm、零位zero和伺服servo等外部信号的检测和判定。对反应回来的时钟进展检测计数。由于PCI和FPGA交换数据均发生在系统时钟的上升沿。所以在数据交换经过中,必然会存在一个小于1个时钟周期的延迟误差。4完毕语本文所述的运动控制卡具有如下特点:数据输入输出口采用光隔离技术8,来防止一些不必要的干扰;FPGA采用独立的40MHz时钟和锁相环设计,保证了系统的时钟稳定;采用加二分频算法,进步分频输出的实时性;FPGA作为核心处理芯片,减少了硬件本钱、简化了硬件设计、实时性得到进步;通过状态检测和反应模块,实现电机的状态检测和误差修正;设计中断定时模块,实现电机的转角控制。参考文献: 1李贵山,陈金鹏.PCI部分总线及应用M.西安:西安电子科技大学出版社,2003:8-16. 2周志明.基于运动控制卡的步进电机控制系统J.煤矿机械,20043:95-97. 3吴继华,王诚.AlteraFPGA/CPLD设计M.北京:人民邮电出版社,2005:17-21. 4PLXTechnologyInc.PCI9054databookEBplxtech/dts/download.aspf=/PCI9000/9054/databook/9054db-21.pdf,2000. 5童鹏,吴新建.PCI9054芯片接口设计中假设干问题的深化研究J.电子技术应用,200510:64-66. 6胡刚,石亚伟.PCI总线的中断处理技术J.计算机自动测量与控制,2001,96:55-56. 7任爱峰,初秀琴.基于FPGA的嵌入式系统设计M.西安:西安电子科技大学出版社,2005:333-354. 8郭佳佳,胡晓菁.使用SignalTapII逻辑分析仪调试FPGAJ.本日电子,20055:45-47.