- 1 -
中国科技论文在线
一种改进的最小偏差法插补器的设计
李兰英1,钟健男1,高明2,3**
作者简介:李兰英(1964-),女,教授,主要研究嵌入式系统
通信联系人:钟健男(1984-),男,硕士研究生 主要研究嵌入式系统
(1. 哈尔滨理工大学计算机学院,哈尔滨 150080;
2. 哈尔滨理工大学计算机学院;
3. 第二炮兵青州士官学校,哈尔滨 150080)
摘要:本文对直线插补最小偏差算法进行了改进,在此基础上提出了一种基于改进的最小偏
差法插补器的 IP核设计方法,给出了该插补器 IP核的工作原理及结构,利用 Verilog语言
在 Quartus II 开发平台下实现了该插补器 IP核的设计,该插补器可实现直线及圆弧的插补,
并通过ModuleSim工具得出仿真波形,仿真结果验证了设计的正确性。
关键词: 最小偏差法;IP核;ModuleSim工具
中图分类号:TP399 文献标识码:A
Design of An Improved Least Deviation Algorithm
Interpolator
LI Lanying1, ZHONG Jiannan1, GAO Ming2,3
(1. Department of Computer Science & Engineering,Harbin University of Science and
Technology,Harbin 150080;
2. Department of Computer Science & Engineering,Harbin University of Science and
Technology;
3. The Second Artillery NCO School Qingzhou,HarHarbin 150080)
Abstract: This paper improved linear least deviation algorithm,and designed an interpolator using the
improved algorithm,it carries on the description using the Verilog HDL language to each basic function
unit and has completed the IP soft core , the IP soft core is implemented through Quartus II .this
interpolator can implement linear interpolation and circular interpolation . the interpolator structure and
principle were introduced in this paper. and experimental result proved the correctness of the IP core
through ModuleSim software.
Key words: least deviation algorithm; IP core; ModuleSim
0 引言
由于数控机床对几何形状的加工是非连续的,从理论上导致加工出的几何形状是一种近
似形状,因此,选用何种算法以达到和理想几何形状较小的偏差是提高加工精度的一个重要
因素,目前大部分控制技术是采用直线插补及圆弧插补来实现几何形状绘制,对于任意曲线
及曲面都可用直线及圆弧来逼近[1],所以,直线及圆弧的插补精度直接决定着所绘制的曲线
及曲面等各种几何形状的精度[2]。
以往的插补芯片基于传统的芯片设计方式,设计效率低下,系统的重用性、灵活性不高
[3],而近年来兴起的 FPGA 技术及硬件描述语言大大提高了硬件的开发效率,使硬件开发人
员不必拘泥于具体细节,而是从一个高的层次上来设计硬件[4],因此本文以 FPGA 为平台实
- 2 -
中国科技论文在线
现该插补器,可广泛应用于各种数控机床。
1 最小偏差插补算法分析与改进
为了便于硬件实现,本文对最小偏差直线插补算法进行了改进,避免了浮点运算,提高
了插补精度,简化了硬件设计。
最小偏差直线插补算法的改进
在最小偏差法二维直线插补过程中,首先是偏差计算、偏差判别,然后产生进给方向。
进给方向就是按 x 方向或 y 方向或对角线方向偏差最小的方向进给(即 x 和 y 同时进给)。
实际编程时,先将二维坐标系分成八个卦限,然后将八个卦限的公式均用第 I 卦限的递推
公式表示,各个卦限仅仅进给方向不同[5]。设 k 为直线斜率,以第一象限直线 k ≤ 1 的情况
分析,直线上点的横坐标大于纵坐标,按偏差减小的原则,进给只有二种方向:沿 x 方向进
给一步和沿 x,y 方向同时进给一步。若当前插补点在直线上方,则向右进给一步;则在直
线下方,则向右上进给一步;若当前插补点在直线上,则按插补点在直线上方或下方处理均
可。递推公式为:
1
1
( 0)
( 0)
i i e i
i i e e i
F F y F
F F y x F
+
+
= − ≥⎧⎨ = − + <⎩
① 或
1
1
( 0)
( 0)
i i e i
i i e e i
F F y F
F F y x F
+
+
= − >⎧⎨ = − + ≤⎩
②。
其中 Fi 为第 i 次进给的偏差,xe、ye分别为直线终点的横纵坐标,且 F0=0。从以上递推
公式可以看出,当偏差为 0 时,进给方向及新偏差的计算仅仅将其简单的归为上述的一种情
况,并没有向偏差最小的方向进给,虽计算判别简单,但在偏差为 0 时必然导致一定的误差。
如图 1 所示,按传统最小偏差法,若取②为递推公式,则插补轨迹如图 1 箭头方向所示,当
第一次进给时,F0=0,进给方向为右上,很明显,偏差最小的进给方向应是向右进给,此时
误差较大。
图 1 传统最小偏差法直线插补
Fig. 1 traditional Least Deviation linear interpolation
本文将偏差为 0 时的进给方向及新偏差的计算单独分析,若当前偏差为 0 时,先判断下
一进给的可能方向中哪个偏差最小,则向哪个方向进给,如图 2 所示,设点 P 为线段 M、
N 中点,若点 P 在直线上方,则应向右进给一步,否则向右上进给一步,这时进给的方向是
偏差最小的方向。可用直线斜率判断点 P 在直线上方还是下方,即当直线斜率 k>1/2 时,
点 P 在直线下方;k>1/2 时,点 P 在直线上方;k=1/2 时,点 P 在直线上,这时进给方向任
选一个即可。对于直线的斜率,可用直线终点坐标确定,设直线终点坐标为(x,y),则 k=y/x,
- 3 -
中国科技论文在线
故只需判断 2y 和 x 的大小即可确定 k 是否大于 1/2。综上所述,改进后的最小偏差法如下:
①当偏差 F >0 时,向右进给一步,新偏差: 1i i eF F y+ = − ;②当偏差 F <0 时,向右上进
给一步,新偏差: 1i i e eF F y x+ = − + ;③当偏差 F=0 时,首先判断直线斜率(根据直线终
点坐标判断),若斜率大于 1/2,则向右上进给,新偏差为: 1i i e eF F y x+ = − + ;否则向右
进给,新偏差为: 1i i eF F y+ = − 。用此改进的最小偏差算法得出的进给方向如图 2 箭头所
示,和图 1 相比较,本文改进的最小偏差法具有更高的精度。
图 2 改进后最小偏差法直线插补
Fig. 2 improved Least Deviation linear interpolation
最小偏差圆弧插补算法分析
与直线类似,先将二维坐标系分成八个卦限,然后将八个卦限的公式均用第 I 卦限的
递推公式表示,如图 3 所示:取从坐标(0,R)到坐标 ( / 2, / 2)R R 的顺圆弧讨论,设 F 为偏
差,xi、yi 为当前插补点坐标,则进给方向及偏差递推公式如下[6]:
若 Fi<0,向右进给一步,且进给后的偏差为:
2 2 2
1 ( 2, ) ( 2) ( ) 2 3i i i i i i iF f x y x y R F x+ = + − = + + − − = + + ①
若 Fi≥0,则向右下进给一步,进给后偏差为:
2 2 2
1 ( 2, .5) ( 2) ( .5) 2( ) 5i i i i i i i iF f x y x y R F x y+ = + − = + + − − = + − + 1 1 ②
起始的偏差: 0 (1, ) -F f R R= − = 。
由于 0F 涉及浮点运算,为简化算法,使 0F =1-R,当 -R<0 时,1-R 必然小于 0,故
上述转换不会损失精度。
图 3 最小偏差圆弧插补原理
Fig. 3 Least Deviation circular interpolation
- 4 -
中国科技论文在线
2 插补器的设计与实现
插补器的结构
本插补器可实现 4 轴脉冲输出,可进行直线及圆弧的插补,以进行各种几何形状的绘制。
该系统在 QuartusII 下生成,如图 4 所示由如下几个部分组成。
(1) 微指令发生器:由时序电路、微操作发生器组成,用来产生插补过程中的时序,clk
为外部时钟输入;count_in 用来接收计数器模块发出的中断信号,用以停止微指令发生器;
reg_in 为 8 位引脚,接收寄存器组中控制寄存器的输出,用以开启微指令发生器,开始插补
过程;inst_reg、inst_decorder、inst_compute、inst_pluse 为使能信号,连接至如图 4 所示 4
个模块的 Load 端,依次使能该 4 个模块。
(2) 存储管理部分:由地址译码器和寄存器组构成,地址译码接收外部的地址及读写信
号、片选信号等,用于 CPU 控制对寄存器组的读写;寄存器组由①控制寄存器(CON) X② ,
Y 轴起点坐标、终点坐标寄存器(start_x、start_y、end_x、end_y)③当前插补点坐标寄存器
(cur_x、cur_y)④当前偏差寄存器组成(F)。控制寄存器用于控制插补开始、插补模式;X,Y
轴起点坐标、终点坐标寄存器用于存放插补的起终点坐标值;当前插补点寄存器用于存放当
前插补坐标;当前偏差寄存器用于存放当前的偏差。寄存器组除控制寄存器为 8 位外,其余
寄存器均为 16 位。寄存器组由 decoder_in 引脚接收地址信号;data_in 接收来自 CPU 的插
补数据;store_in 接收插补计算后新的当前点坐标值及偏差数据。
(3) 插补计算部分:由卦限选择器、插补计算模块组成,卦限选择器接收来自寄存器组
的 X,Y 轴起点坐标、终点坐标寄存器(start_x、start_y、end_x、end_y)数据及当前插补点坐
标寄存器(cur_x、cur_y)等数据,并输出当前插补点的卦限,卦限由 quad 引脚输出。插补计
算模块接收寄存器组的输出信号和卦限选择器的输出信号,并输出下一插补点的横纵坐标
(next_x、next_y)及新的偏差(next_F)。
(4) 脉冲发生部分:接收插补计算模块的偏差数据及寄存器组的控制数据,根据偏差输
出四个方向的脉冲 XP/YP+、XP/YP-,用于控制电机的转向和转速及输出计数脉冲(count)。
(5) 计数器部分:该计数器为一减法计数器,初值由寄存器组通过 init 引脚装入,计数
器的时钟端(clk)接收脉冲发生器输出的计数脉冲,每次脉冲输出便递减计数器的值,当计数
减小至 0 时将中断引脚(INT)使能。
插补算法的实现流程
(1)首先由 CPU 通过地址线及数据线将插补模式、起点坐标值、终点坐标值装入寄存器
组,然后向控制寄存器的插补开始位写入 1。
(2)当控制寄存器插补开始位写入 1 后,微指令发生器在外部时钟 CLK 的作用下依次输
出芯片使能信号,依次使能寄存器组、卦限选择、插补计算、脉冲输出模块,可保证插补在
4 个 CLK 周期完成。
(3)当减法计数器减小到 0 时,使能中断引脚并停止微指令发生器,插补结束。
本插补器采用各模块直接相连接的方式,在微指令发生器的控制下完成插补过程,插
补速度较快。
- 5 -
中国科技论文在线
图 4 插补器系统结构
Fig. 4 the structure of Interpolator
3 仿真与验证
本设计在 Quartus II 下进行模块的编写,设计语言采用 Verilog 硬件描述语言,仿真软
件采用 ModuleSim [7],并在 Altera 公司的 FPGA 芯片上予以实现,图 5 为直线插补波形,
起点坐标为(0,0),终点坐标为(20,10)。其中 xp_increase 为 X 轴正方向脉冲输出,xp_decrease
为 X 轴负方向脉冲输出,yp_increase 为 Y 轴正方向脉冲输出,yp_decrease 为 Y 轴负方向脉
冲输出,由图 5 可以看出,根据算法,X 轴正向的输出始终为 1,Y 轴正向生成如图 5 所示
波形,脉冲波形符合直线插补进给脉冲的时序波形。图 6 为圆弧插补波形,圆弧起点坐标为
(0,20),终点坐标为(20,0),此时圆弧插补过程跨越 2 个卦限,在从起点坐标开始的第一个卦
限内,X 轴正方向始终有脉冲输出,Y 轴负方向形成如图 6 所示脉冲,在第二个卦限内由于
存在坐标变换,Y 轴正方向始终有脉冲输出,X 轴负方向生成如图 6 所示脉冲,脉冲波形符
合圆弧插补进给脉冲的时序波形,实验结果完全符合预期要求。
图 5 最小偏差直线插补仿真波形图
Fig. 5 The experimental figure of least deviation algorithm of linear interpolation
- 6 -
中国科技论文在线
图 6 最小偏差圆弧插补仿真波形图
Fig. 6 The experimental figure of least deviation algorithm of circular interpolation
4 结论
利用 FPGA 进行硬件设计的方法可以替代传统的 ASIC 芯片设计方法,在硬件开发上具
有更高的效率,同时使硬件的灵活性大大提高。对于各种采用不同算法的插补器,均可用
FPGA 的设计方法,结合本文所设计的插补器,多种插补器的联合工作可实现优势上的互补,
且可以根据需要改写其硬件功能,可广泛应用于各种数控机床。
[参考文献] (References)
[1] LUO L,WANG the modeling and analysis of an improved CNC interpolation algorithm[C].13th
International Manufacturing Conference,2009,156(1):1-3.
[2] CHO JUNG..FPGA-based motion controller using CAN[C].International Conference on Control,
Automation and Systems, ICCAS 2007,New York,2007,24(11):2-3.
[3] SHAO XIAO FPGA Based Motion Control IC and Its Application[J].IEEE,2006,5(3):4-7.
[4] JIN MIN.Research of embedded motion controller for construction machinery[C].The 5th IEEE
International Symposium on Embedded Computing, SEC,Canadian, 2008: 4-6.
[5] 蒋存波,杜婷婷.逐点比较法运动控制器的 SOPC 实现[J] .制造技术与机床,2008,13(2) :1-5
[6] 罗炳军,陈健,樊亚妮.基于运动控制器的开放式运动控制系统研究与应用[J].工业仪表和自动化
装置,2006,14(3):2-3.
[7] 黄大贵,金振林,冯代伟.ARM 运动控制平台下高精度高速插补算法的研究[J].电子科技大学学报,
2008,11(5):2-4.