许 伍, 郎 朗, 李腾飞
(安徽工程大学 安徽省电气传动与控制重点实验室,安徽 芜湖 241000)
基于FPGA的手摇脉冲发生器模块的实现*
许 伍, 郎 朗, 李腾飞
(安徽工程大学 安徽省电气传动与控制重点实验室,安徽 芜湖 241000)
设计了一种基于FPGA的手摇脉冲发生器模块,在QurteusII开发软件上使用硬件描述语言(VerilogHDL)编写出手摇脉冲发生程序,将其通过FPGA器件实现了一种手摇脉冲发生器;在嵌入式数控系统应用中,该模块发挥重要的作用,实现了外置式手轮的进给轴选择、移动、方向判别、步长倍率选择的功能。
手摇脉冲发生器;嵌入式数控系统;FPGA;VerilogHDL
数控系统(简称CNC),在现代化工业中的应用越来越广泛,并得到更多的重视,其特点和功能也十分的庞大。嵌入式技术与数控系统结合后的新系统具有的实时性强、稳定性好、可靠性高等突出优点,并在实际过程中得到验证[1]。基于FPGA的手摇脉冲发生器利用FPGA内置的编码器将转角信号变换为脉冲序列信号,采集脉冲序列信号并输出,通过伺服驱动器驱动坐标轴。手摇脉冲发生器是通过A、B两相的差分信号进行数据传输,减少信号传输中的干扰。由于手摇脉冲发生器在数控系统中使用非常方便,所以得到广泛的使用[2]。通过硬件和软件两个部分设计,实现手轮脉冲发生器的功能。
手摇脉冲发生器与一般机床的手轮装置外形相似,其表面标有刻度,通过刻度的变化可以清晰的判别机床或工作台的移动量。手摇脉冲发生器的手摇速度直接影响脉冲序列的产生的速率,从而决定轴的运行速度[3]。
手摇脉冲发生器旋转个角度,可以得到一个正弦波信号,其相位差为90度,正弦波信号经过一些处理后输出方波。当手轮正转时,A相较B相超前90度,反之反转时,A相较B相滞后90度。由此对A、B两相信号的超前滞后进行控制[4]。
基于FPGA的体系结构与逻辑单元具有灵活、集成度高,并具有实现规模较大电路,同时编程也较简便等优势,因此本次设计系统中的数字信号采集模块与编码器计数模块是利用FPGA来完成实现。
图1为外置式手摇脉冲编码器与FPGA的接口示意图。手摇脉冲发生器中,轴选信号是:HX、HY、HZ、HA,倍率信号为:X1、X10、X100,轴选信号和倍率信号直接输入到FPGA的数字信号采集模块,系统采用的输入方式为光耦隔离方式。采用光耦隔离的输入方式主要是基于其能有效的减少尖脉冲与一些噪音干扰,进而实现提高过程通道上的信噪比的结果。A、*A、B、*B为两组方波差分信号,它们在相位上相差90度,采用差分-单端转换的形式被输送到FPGA的编码器计数模块。采用差分信号是基于其对干扰不够敏感,且比单端信号产生的EMI更少的优点,所以编码器反馈最常采用的就是差分的方式。
图1 外置式手摇脉冲发生器与FPGA的接口示意图
系统设计采用VerilogHDL语言来实现FPGA内部之间的逻辑关系。FPGA通过VerilogHDL的硬件描述语言实现其内部的硬件电路功能、信号连接关系、定时关系等,摇动手轮采集输入信号,由CPU读取信号并经过处理产生手轮脉冲信号。如下是用VerilogHDL编写的手轮脉冲产生的语言程序:
always @(negedge dinb or negedge rst)
begin
if(!rst)
begin
dirout<=1′b0;
antiwise<=1′b0;
end
else if(!dinb)
begin
if(!dina)
begin
dirout<=1′b0;
antiwise<=1′b0;
end
else if(dina)
begin
dirout<=1′b1;
antiwise<=1′b1;
end
always @(posedge clk or posedge dina or negedge rst)
begin
.
.
.
Else if(dina)
begin
plsnum<=plsnum+1;
end
else if(clk)
begin
if(plsnum)
begin
plsout<=~plsout;
plsnum<=plsnum-1;
end
end
在LED上显示手轮操作状态,其程序如下:
else if(!antiwise) ∥顺时针旋转时LED灯右移
begin
led_mask=led_mask>>1;
led_mask[8]=led_mask[0];
led=~led_mask[8:1];
end
else if(antiwise) ∥逆时针旋转时LED灯左移
begin
led_mask=led_mask<<1;
led_mask[1]=led_mask[9];
led=~led_mask[8:1];
end
根据上述程序在FPGA中生成的顶层程序设计模块如图2所示。
图2 顶层程序设计模块
图3 输出的正反向方波信号
利用示波器验证了手摇脉冲发生器设计的可行性。对手轮进行顺时针和逆时针的转动,通过示波器输出显示的方波信号,如图3所示,具体为A、B两组相位差为90度的方波信号。
介绍的基于FPGA的手摇脉冲发生器模块的硬件与软件设计,采用的FPGA实现了外置式手摇脉冲发生器的进给轴和步长倍率的选择以及编码计数和方向确定的功能,简化了数控系统的设计,并能使系统可靠性得到明显的提高。
[1] 苏会林,董长双.数控技术的发展与展望[J].机械研究与应用,2005,18(6):25-27
[2] 孙福清,何凯,王治森. 手摇脉冲发生器鉴相及脉冲计数的软件实现[J].制造业自动化,2001,20(10):54-56
[3] 赵海军,叶佩青.手轮脉冲驱动均匀化控制[J].机床与液压,2003,1:117-118,47
[4] 李芳.嵌入式数控系统中手摇脉冲发生器模块的实现[J].科学技术与工程,2010,10(12):2963-2964,2969
[5] 王田苗,魏洪兴.嵌入式系统设计与实例开发—基于ARM微处理器与μC/OS-Ⅱ实时操作系统[M].北京:清华大学出版社,2008
[6] 周立功.SOPC嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2006
[7] 周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005
[8] 姚放吾.嵌入式系统的硬件/软件协同设计[J].微计算机信息,2001(3):1-3
Keywords:manual pulse generator; embedded CNC system;FPGA;VerilogHDL
Implementation of Manual Pulse Generator Module Based on FPGA
XUWu,LANGLang,LITeng-fei
(Anhui Key Lab of Electric Drive and Control, Anhui Polytechnic University, Anhui Wuhu 241000, China)
A kind of manual pulse generator module based on FPGA has been designed. VerilogHDL is used to write the germination program of manual pulse in QurteusII, with the program running on the FPGA device, the manual pulse generator can be achieved. The module plays an important role in the application of embedded CNC system, realizing multiple functions of external handwheel such as the selection and movement of feed shaft, direction distinguishing and selection of step rate.
1672-058X(2013)10-0070-03
2013-07-01;
2013-07-28.
安徽高校省级自然科学研究项目(KJ2013A041);国家级大学生创新创业训练计划项目(201210363003).
许伍 (1987-),男,安徽宿州人,硕士研究生,从事运动控制系统的分析与设计研究.
TP273.6
A
责任编辑:代小红
校对田静