FPGA芯片选用ALTEra公司的Cyclone系列EP1C6TC44C8,这是一款高性能、低功耗的FPGA。EP1C6TC44C8具有2个锁相环,包含5980个逻辑单元,相当于12万门的规模,同时还包含了最高频率200MHz、92160bit的内部RAM。该芯片所拥有的逻辑门数量、频率和引脚I/O等资源都能很好地满足运动控制器的设计要求。由于本系统的控制对象是伺服电机,所以设计中主要利用EP1C6TC44C8的I/O口设计电机控制信号的输入输出、编码器信号的输入与部分数字量输入输出。另外,该芯片在整个硬件系统设计完毕后还可以通过JTAG接口对硬件进行重配置,可以增加系统设计的灵活性。
2.3 FPGA外围电路模块
X轴伺服电机控制电路如图3所示。Y轴、Z轴、U轴伺服电机控制电路与X轴相同。
(1)输入输出开关量接口设计。
输入信号主要包括限位开关信号LIMX+、LIMX-~LIMU+、LIMU-,伺服报警信号ALMX~ALMU和回零信号HMX~HMU。输出信号主要包括伺服使能信号SRVX~SRVU和复位信号RSTX~RSTU。当检测到这些信号后,确定具体触发的信号,限位信号触发,则立即停止对应电机该方向的运动,直到限位消除,电机才能在该方向继续运动;回零信号触发,则电机等待Index信号的输入后立即让电机反向运行用户设定的回零距离作为机械零点;伺服报警信号输入时,程序立即停止该电机的运动,直到用户将报警清除。
(2)输出控制脉冲电路设计。
输出控制脉冲信号为伺服电机的4路脉冲控制输出信号。此控制采用“脉冲+方向”指令,由于每个控制轴分别有脉冲和方向信号,所以4路共8个输出信号。输出控制脉冲信号由FPGA输出,要先经过电平转换,将FPGA的I/O引脚的3.3V变为5V,再经过光电隔离,然后再经过施密特触发器整形后输出。由于脉冲和方向信号需要进行差分,所以将信号接入差动线驱动器后再输出。XPLS~UPLS为脉冲信号,XDIR~UDIR为方向信号。差动线驱动器由AM26LS31构成,该电路的功能是将输入的单极性的方波信号转化为一对极性相反的电机驱动信号,它的高阻抗输出状态在电源掉电时是有保障的。
(3)反馈脉冲处理电路设计。
伺服电机的编码器信号直接接入到电机驱动器中,驱动器提供三对差分信号A+、A-、B+、B-、Z+、Z-作为反馈。这三对信号由于受到驱动器内部大电源的干扰,在电机旋转时,所发出的信号会出现许多毛刺,直接接到FPGA中会引起误判断,所以三对信号经过差分电路转化为单路信号A、B、Z。差分电路由AM26LS32构成,该芯片功能与AM26LS31相反,该电路的功能是将输入的一对极性相反的编码器反馈信号转化为单极性的方波信号。A、B两路为正交编码脉冲,Z路每转产生一个低电平脉冲,用于回零时的精确定位。
2.4 数字量输入输出接口模块
考虑到系统的可扩展性和DSP的GPIO口的数量,此运动控制器在DSP与FPGA上分别设计8路,共16路数字量输入输出。运动控制器的所有数字量输入输出信号均采用光电隔离处理,并对每一路信号进行相应的数字滤波处理,以消除噪声信号。数字量输入通道可以根据用户的要求自定义用途,用于零点、限位信号的输入等;数字量输出通道用于各轴方向、脉冲信号的输出以及一些外部设备的启停控制等。