运动控制卡硬件电路描述和设计时,严格按照同步时序设计原则[3],而且核心电路用
D 触发器实现,电路的主要信号由时钟的上升沿触发器产生。这样可以很好地避免毛刺,并
且在布局后仿真和用高速逻辑分析仪采样实际工作信号皆无毛刺。在高速变化的分频倍数数
据流控制时,为了保证整个系统的分频输出的实时性,采用如图
2 所示的“乒乓操作[3]”技
巧。在奇数(
2n+1)个缓冲周期时,输入的数据流缓冲到 RAM
Ⅰ 和从 RAMⅡ 取出数据到运
算模块。在第偶数(
2n)个缓冲周期,将数据流缓冲到 RAM
Ⅱ,将 RAM1 里的数据通过“数
据输出选择单元
”的选择,送到最后的分频和计数的运算模块进行计算输出。如此循环,周
而复始。这种流水线式算法,可以完成数据的无缝缓冲与处理。
本文所述的运动控制卡共涉及总线控制器、分频器、定时器、反馈控制等 4 个模块,其原
理图如图
3 所示。总线
控制
器完成
PCI9054 [4] 局部总线的仲裁逻辑[5]、地址译码和数据流控
制,使
PCI 数据总线上的数据正确地被译码到各分控制模块进行运算输出。定时器实现硬件
定时,计算机通过驱动程序给运动控制卡输入一时间值和一个表示计时开始的控制字,运
动控制卡开始计时,在计时完成时,通过产生硬件中断方式
[6],进入中断服务程序,从而
实现电机的转角准确定位。我们还可以把一些用户代码作为中断处理子程序,来实现定时切
换或运算的功能。分频器实现工作频率(
40MHz) 的分频工作,得到控制电机转速的脉冲
频率。反馈控制模块实现电机的输出补偿和状态监控功能,可通过读取误差从而实现修正,
以此来提高系统控制精度。这些模块在
FPGA 内部采用原理图(Schematic Diagrams)
+VHDL 语言结合的方式进行描述,使逻辑层次更加明确和可读性更强。