基于FPGA的运动控制卡的设计和实现
引言
传统的运动控制卡多采用单片机作为微处理器, 通过一些大规模集成电路实现对伺服电机的控制。由于其结构较为复杂,因此在工作时,存在高频响应慢、控制精度低等缺点。本文提出一种以FPGA (field-programmable gate array) 和PCI9054 接口芯片为核心硬件的运动控制卡,内部硬件接口和算法通过对FPGA 的编程实现。这样,既能很好地克服传统运动控制存在的缺点,又在灵活性和移植性等方面得到了很大的提高。
1 硬件构成与设计
1.1 构成
本文所述的运动控制卡是PCI(peripheral component interconnect)接口卡[1],用Altera 公司生产的型号为EP1C6Q240C8的FPGA 作为编程逻辑器件,实现所有的硬件算法和反馈信号的检测。采用脉冲加方向[2]的闭环控制方式对电机进行控制。整个运动控制卡系统可用图1 描述。
1.2 设计
运动控制卡硬件电路描述和设计时,严格按照同步时序设计原则[3],而且核心电路用D 触发器实现,电路的主要信号由时钟的上升沿触发器产生。这样可以很好地避免毛刺,并且在布局后仿真和用高速逻辑分析仪采样实际工作信号皆无毛刺。在高速变化的分频倍数数据流控制时,为了保证整个系统的分频输出的实时性,采用如图2 所示的“乒乓操作[3]”技巧。在奇数(2n+1)个缓冲周期时,输入的数据流缓冲到RAMⅠ和从RAMⅡ取出数据到运算模块。在第偶数(2n)个缓冲周期,将数据流缓冲到RAMⅡ,将RAM1 里的数据通过“数据输出选择单元”的选择,送到最后的分频和计数的运算模块进行计算输出。如此循环,周而复始。这种流水线式算法,可以完成数据的无缝缓冲与处理。
本文所述的运动控制卡共涉及总线控制器、分频器、定时器、反馈控制等4 个模块,其原理图如图3 所示。总线控制器完成PCI9054 [4] 局部总线的仲裁逻辑[5]、地址译码和数据流控制,使PCI 数据总线上的数据正确地被译码到各分控制模块进行运算输出。定时器实现硬件定时,计算机通过驱动程序给运动控制卡输入一时间值和一个表示计时开始的控制字,运动控制卡开始计时,在计时完成时,通过产生硬件中断方式[6],进入中断服务程序,从而实现电机的转角准确定位。我们还可以把一些用户代码作为中断处理子程序,来实现定时切换或运算的功能。分频器实现工作频率(40MHz) 的分频工作,得到控制电机转速的脉冲频率。反馈控制模块实现电机的输出补偿和状态监控功能,可通过读取误差从而实现修正,以此来提高系统控制精度。这些模块在FPGA 内部采用原理图(Schematic Diagrams)+VHDL 语言结合的方式进行描述,使逻辑层次更加明确和可读性更强。
相关文章
- 2023-12-06阴极弧离子镀磁过滤器
- 2023-08-17计量光栅空间位姿参数光场输出模型与仿真
- 2021-12-05基于ARM的2M测试系统
- 2022-01-20LabVIEW在全自动点胶机中的应用
- 2022-07-17光纤密封转接的氦质谱检漏技术研究
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。