一种基于FPGA实现脉冲均匀输出的方法及装置制造方法及图纸

技术编号:18971848 阅读:21 留言:0更新日期:2018-09-19 03:25
本发明专利技术公开了一种基于FPGA实现脉冲均匀输出的方法及装置,涉及工业数控技术领域,以FPGA系统时钟为基准产生同步时钟,与CPU进行同步数据处理和多轴脉冲发送同步,本发明专利技术采用的方法通过CPU将脉冲串参数同步写入FPGA,并根据FPGA的系统时钟,通过预设的加法运算对多个脉冲串的脉冲输出进行处理,使FPGA的脉冲均匀输出,提高了输出脉冲的质量以及精度,相对于传统的除法运算,加法运算不会产生余数,降低脉冲输出的精度,同时加法运算减少了运算所需的时间,降低硬件资源消耗。

A method and device for achieving uniform pulse output based on FPGA

The invention discloses a method and a device for realizing pulse uniform output based on FPGA, which relates to the technical field of industrial numerical control, generates synchronous clocks according to the clock of the FPGA system, processes synchronous data and sends multi-axis pulses synchronously with the CPU, and writes pulse string parameters synchronously into the FPGA through the CPU, and according to the F. PGA system clock processes the pulse output of multiple pulse trains by preset addition operation, which makes the pulse output of FPGA uniform and improves the quality and precision of output pulse. Compared with traditional division operation, addition operation does not produce remainder, reduces the precision of pulse output, and additive operation reduces operation. Calculate the time needed to reduce the consumption of hardware resources.

【技术实现步骤摘要】
一种基于FPGA实现脉冲均匀输出的方法及装置
本专利技术涉及工业数控
,尤其涉及一种基于FPGA实现脉冲均匀输出的方法及装置。
技术介绍
在数控系统中,连接多个脉冲串类型驱动器时,一般单独使用一个FPGA进行多路脉冲串同时输出控制,实现多轴的同步运行。但是传统的FPGA实现脉冲串输出一般采用除法运算,即在每个插补周期开始时,由一次插补周期内FPGA的系统时钟数Clocks除以该周期需要输出的脉冲数Pulse,从而得到每产生一个脉冲需要间隔的时钟数Period,即:Period=Clocks/Pulse。如果Clocks能够被Pulse整除,则该除法算式不会产生余数,按照每Period个FPGA时钟产生一个脉冲输出,则在一个插补周期结束时,就会产生Pulse个脉冲输出。但是在Clocks不能够被整除时,则会产生余数,如果这时候仍然按照每间隔Period个时钟周期产生一个脉冲输出,则有可能在一个插补周期结束时,产生超过Pulse个脉冲的输出。一般解决这个算法存在的问题,是在脉冲输出部分添加一个积分电路,将每次的余数计入积分器,在积分器数值达到Period脉冲时,进行一次脉冲输出的修正,从而达到最终输出Pulse个脉冲的目的。这样虽然能够输出正确的脉冲个数,但是在脉冲修正的过程中,必然会造成输出脉冲频率的变化,从而会导致设备进给速度的变化,可能会造成设备的抖动或者刀具纹路的变化,从而降低了设备的加工精度。
技术实现思路
本专利技术要解决的技术问题目的在于提供一种基于FPGA实现脉冲均匀输出的方法及装置,用以解决现有数控系统中脉冲串输出不均匀,导致产生精度误差的问题。为了实现上述目的,本专利技术采用的技术方案如下:一种基于FPGA实现脉冲均匀输出的方法,包括步骤:步骤一、获取插补周期及FPGA的系统时钟信息;步骤二、根据插补周期同步时钟,读取脉冲串参数并获取所述脉冲串的初始相位值作为预设数值;步骤三、判断FPGA的系统时钟是否触发,若是,则获取所述插补周期内的所需发送的脉冲个数以对所述预设数值进行累加;步骤四、获取所述插补周期内输出脉冲的电平状态,判断所述电平状态是否为高电平,若是,执行步骤五,若否,则执行步骤六;步骤五、判断所述预设数值是否大于所述插补周期内系统时钟高电平所占个数,若是,则将所述输出脉冲翻转,改变为低电平状态输出并将所述预设数值与所述系统时钟高电平所占个数的差值作为所述预设数值的初始值,转至步骤三;步骤六、获取所述插补周期内系统时钟个数与所述插补周期内系统时钟高电平所占个数的差值作为第一差值,判断所述预设数值是否大于所述第一差值,若是,则将所述输出脉冲翻转,改变为高电平状态输出并将所述预设数值与所述第一差值的差值作为所述预设数值的初始值,转至步骤三。进一步的,所述步骤一还包括步骤:采用FPGA系统时钟产生插补周期同步时钟,将脉冲串参数同步写入FPGA。进一步的,所述步骤二还包括:通过所述插补周期同步时钟,产生锁存信号以将所述脉冲串参数信息锁存至预设寄存器中。进一步的,所述脉冲串参数包括插补周期所需发送的脉冲个数、插补周期内系统时钟高电平所占个数、脉冲串初始相位值。进一步的,还包括步骤:获取所述FPGA系统时钟周期,接收插补周期时长,计算所述插补周期内系统时钟个数上式中,Clocks表示所述插补周期内系统时钟个数,SYSCLock表示系统时钟周期,T表示插补周期时长。进一步的,所述步骤一之前还包括步骤:获取所述系统时钟的占空比,计算脉冲高电平所占个数PulseHi=Clocks*DutyRatio上式中,PulseHi表示系统时钟高电平所占个数,Clocks表示所述插补周期内系统时钟个数,DutyRatio表示所述系统时钟的占空比。进一步的,所述步骤六之后还包括步骤:判断所述系统时钟的触发次数是否达到所述插补周期内的系统时钟个数,若是,则将所述插补周期内的脉冲进行输出。一种基于FPGA实现脉冲均匀输出的装置,包括:数据存储模块:用于获取插补周期及FPGA的系统时钟信息;数据读取模块:用于根据插补周期同步时钟,读取脉冲串参数并获取所述脉冲串的初始相位值作为预设数值;累加模块:用于判断FPGA的系统时钟是否触发,若是,则获取所述插补周期内的所需发送的脉冲个数以对所述预设数值进行累加;电平判断模块:用于获取所述插补周期内输出脉冲的电平状态,判断所述电平状态是否为高电平,若是,转至低电平输出模块,若否,则转至高电平输出模块;低电平输出模块:用于判断所述预设数值是否大于所述插补周期内系统时钟高电平所占个数,若是,则将所述输出脉冲翻转,改变为低电平状态输出并将所述预设数值与所述系统时钟高电平所占个数的差值作为所述预设数值的初始值,转至累加模块;高电平输出模块:用于获取所述插补周期内系统时钟个数与所述插补周期内系统时钟高电平所占个数的差值作为第一差值,判断所述预设数值是否大于所述第一差值,若是,则将所述输出脉冲翻转,改变为高电平状态输出并将所述预设数值与所述第一差值的差值作为所述预设数值的初始值,转至累加模块。采用本专利技术,通过加法运算,保证了脉冲串在插补周期内的均匀输出,提高输出脉冲的精度及质量,减少了脉冲输出算法的运算所需时间,降低硬件资源消耗。附图说明图1是本专利技术提供的一种基于FPGA实现脉冲均匀输出的方法流程图;图2是本专利技术提供的一种基于FPGA实现脉冲均匀输出的装置结构图。具体实施方式以下是本专利技术的具体实施例并结合附图,对本专利技术的技术方案作进一步的描述,但本专利技术并不限于这些实施例。实施例一如图1所示,本实施例提供了一种基于FPGA实现脉冲均匀输出的方法,包括步骤:S1、获取插补周期及FPGA的系统时钟信息;S2、根据插补周期同步时钟,读取脉冲串参数并获取所述脉冲串的初始相位值作为预设数值;S3、判断FPGA的系统时钟是否触发,若是,则获取所述插补周期内的所需发送的脉冲个数以对所述预设数值进行累加;S4、获取所述插补周期内输出脉冲的电平状态,判断所述电平状态是否为高电平,若是,执行步骤五,若否,则执行步骤六;S5、判断所述预设数值是否大于所述插补周期内系统时钟高电平所占个数,若是,则将所述输出脉冲翻转,改变为低电平状态输出并将所述预设数值与所述系统时钟高电平所占个数的差值作为所述预设数值的初始值,转至步骤S3;S6、获取所述插补周期内系统时钟个数与所述插补周期内系统时钟高电平所占个数的差值作为第一差值,判断所述预设数值是否大于所述第一差值,若是,则将所述输出脉冲翻转,改变为高电平状态输出并将所述预设数值与所述第一差值的差值作为所述预设数值的初始值,转至步骤S3。在数控系统中,通过脉冲串来对各种设备或刀具等进行控制,例如,在连接多个脉冲串类型驱动器时,使用一个FPGA进行多路脉冲同时输出控制,实现多轴同步运行。本实施例在对脉冲进行均匀输出时,首先,需要获取插补周期的时间长度信息,一般插补周期在2-4ms之间,本实施例以2ms为例,作为插补周期,同时将FPGA的系统时钟频率设定为100MHZ,插补周期及FPGA的系统时钟信息都需要使用者预先生成或设置。步骤S2中,脉冲串参数主要包括有Clocks、Pulse、PulseHi、Phase。其中,Clocks表示插补周期内FPGA的时钟个数,通过获取插补周本文档来自技高网...

【技术保护点】
1.一种基于FPGA实现脉冲均匀输出的方法,其特征在于,包括步骤:步骤一、获取插补周期及FPGA的系统时钟信息;步骤二、根据插补周期同步时钟,读取脉冲串参数并获取所述脉冲串的初始相位值作为预设数值;步骤三、判断FPGA的系统时钟是否触发,若是,则获取所述插补周期内的所需发送的脉冲个数以对所述预设数值进行累加;步骤四、获取所述插补周期内输出脉冲的电平状态,判断所述电平状态是否为高电平,若是,执行步骤五,若否,则执行步骤六;步骤五、判断所述预设数值是否大于所述插补周期内系统时钟高电平所占个数,若是,则将所述输出脉冲翻转,改变为低电平状态输出并将所述预设数值与所述系统时钟高电平所占个数的差值作为所述预设数值的初始值,转至步骤三;步骤六、获取所述插补周期内系统时钟个数与所述插补周期内系统时钟高电平所占个数的差值作为第一差值,判断所述预设数值是否大于所述第一差值,若是,则将所述输出脉冲翻转,改变为高电平状态输出并将所述预设数值与所述第一差值的差值作为所述预设数值的初始值,转至步骤三。

【技术特征摘要】
1.一种基于FPGA实现脉冲均匀输出的方法,其特征在于,包括步骤:步骤一、获取插补周期及FPGA的系统时钟信息;步骤二、根据插补周期同步时钟,读取脉冲串参数并获取所述脉冲串的初始相位值作为预设数值;步骤三、判断FPGA的系统时钟是否触发,若是,则获取所述插补周期内的所需发送的脉冲个数以对所述预设数值进行累加;步骤四、获取所述插补周期内输出脉冲的电平状态,判断所述电平状态是否为高电平,若是,执行步骤五,若否,则执行步骤六;步骤五、判断所述预设数值是否大于所述插补周期内系统时钟高电平所占个数,若是,则将所述输出脉冲翻转,改变为低电平状态输出并将所述预设数值与所述系统时钟高电平所占个数的差值作为所述预设数值的初始值,转至步骤三;步骤六、获取所述插补周期内系统时钟个数与所述插补周期内系统时钟高电平所占个数的差值作为第一差值,判断所述预设数值是否大于所述第一差值,若是,则将所述输出脉冲翻转,改变为高电平状态输出并将所述预设数值与所述第一差值的差值作为所述预设数值的初始值,转至步骤三。2.根据权利要求1所述的一种基于FPGA实现脉冲均匀输出的方法,其特征在于,所述步骤一还包括步骤:采用FPGA系统时钟产生插补周期同步时钟,将脉冲串参数同步写入FPGA。3.据权利要求1或2所述的一种基于FPGA实现脉冲均匀输出的方法,其特征在于,所述步骤二还包括:通过所述插补周期同步时钟,产生锁存信号以将所述脉冲串参数信息锁存至预设寄存器中。4.权利要求1所述的一种基于FPGA实现脉冲均匀输出的方法,其特征在于,所述脉冲串参数包括插补周期所需发送的脉冲个数、插补周期内系统时钟高电平所占个数、脉冲串初始相位值。5.根据权利要求1所述的一种基于FPGA实现脉冲均匀输出的方法,其特征在于,还包括步骤:获取所述FPGA系统时钟周期,接收插补周期时长,计算所述插补周期内系统时钟个数上式中,Clocks表...

【专利技术属性】
技术研发人员:王金领卢鸥徐百里邹骞卓宏治魏威岳巍
申请(专利权)人:海天塑机集团有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1