基于FPGA的圆弧插补算法的设计

2016-03-10 00:16集美大学信息工程学院沈旭照吴一亮
电子世界 2016年24期
关键词:寄存器圆弧圆心

集美大学信息工程学院 沈旭照 吴一亮

基于FPGA的圆弧插补算法的设计

集美大学信息工程学院 沈旭照 吴一亮

本项目设计了一款基于FPGA的圆弧插补系统。选用京微雅格CME-M7系列的集成了ARM 硬核的高性能开发板,步进最小精度可达0.005mm。圆弧半径最大可达2.7m,但是由于受到滑台的自身尺寸的限制,最大的整圆的最大半径为40cm。插补速度可达3m/min。系统具有较高的集成度和良好的稳定性。

FPGA;圆弧插补;DDA;步进电机

1. 系统设计方案

本次选用的是京微雅格CME-M7 系列,该系列是集成了ARM Cortex-M3硬核高性能FPGA,根据设计要求(输入圆弧起点,终点,半径,实现匀速和匀加速控制),可以将本次设计DDA圆弧插补功能主要划分为如图所示几个部分(框图中的路径为数据路径,时钟路径未画出)。

2. MCU模块

该芯片内嵌ARM Cortex-M3硬核,MCU主频率最高达300M,MCU的时钟也可由FPGA的PLL端供给,运用MCU高速的运算指令,将圆弧的起点、终点、半径以及速度控制信号由pc的上位机通过UART串口输入到MCU,通过一系列算法运算得到该圆弧的圆心位置以及x轴和y轴的总进给数。

本设计的FPGA端的时钟频率为50M,ARM核的时钟频率为200M,ARM端的时钟通过FPGA的PLL端配置,但是由于FPGA与ARM核两部分工作在不同频域,为了减小亚稳态等现象,本设计采用异步FIFO进行FPGA与ARM核跨时钟域通信处理,ARM向FIFO中写入圆心位置以及x轴和y轴的总进给数,待ARM端写结束后,FPGA向FIFO中读取数据并送到数据接收端。具体的通信细节是FPGA通过GPIO口向ARM端发送FIFO空状态,ARM端确认FIFO为空状态时通过AHB FPGA slave port 1向FIFO中写数据,FPGA端监测到ARM端写结束后,开始从FIFO中读取数据,并验证每次读取的数据通过发送PASS或FAIL的信号到LED指示灯。

具体的FPGA和ARM核异步FIFO通信架构如下图所示。

3. FPGA模块

3.1 PLL时钟及脉冲发生模块

CME-M7系列FPGA拥有资源丰富的PLL资源,8个de-skew全局时钟,2个支持倍频、分频及de-skew 的PLL,ARM核的时钟也由FPGA的PLL供给。根据DDA插补算法原理,积分器的累加是根据脉冲信号进行的,每来一个脉冲,积分器累加一次,并且根据DDA圆弧插补速度计算公式,合成的速度与源脉冲的频率是成正比的,所以当脉冲频率一定时,合成的速度便是匀速运动,脉冲频率随时间呈现递增趋势时,合成速度便是匀加速运动,所以该模块首先会用PLL产生一个全局时钟,供给各个同步模块,而且还要根据速度控制算法产生频率固定的均匀脉冲和频率随时间递增或递减的脉冲。

3.2 数据接收模块

数据接收模块接收来自ARM核运算后的数据,包括圆弧的起点,终点,半径,圆心,x轴y轴各自需要的总进给数,以及速度控制信号和圆弧插补方向信号。

3.3 数据左移规格化模块

根据圆弧插补改进原理,需要将输入的圆弧起点(经过运算后的,即起点坐标减去圆心坐标的值)经过左移规格化后送入到被积函数寄存器,本次设计的被积函数寄存器位数定为20位,在程序设计中可以用parameter根据需要灵活定义寄存器位数,因为此时的数值为有符号数,被积函数的最高位为符号位,所以本次设计规格化是使除符号位的次高位为1;因为被积函数是起点坐标减去圆心坐标的值,而且圆弧的起点和圆心坐标都为有符号数,所以圆弧的真正起点坐标为20位有符号数。

3.4 DDA积分模块

DDA积分模块作为本次设计的算法核心,在PLL时钟及脉冲发生模块发出的脉冲控制下进行累加运算,这里余数寄存器的位数也为20位,因为余数寄存器中的值为无符号数,所以每次进行累加都是用被积函数寄存器的绝对值进行累加的,当最高位为1时即是发生溢出。发生溢出后最高位清零其余位不变。

DDA圆弧插补算法结构图如下所示。

3.5 位置判断模块

此模块用于实时的位置判断,根据动点的位置给出动点所在的象限,根据动点的象限位置给出累加器溢出时的进给脉冲和进给方向,并且需要根据象限相应的修改被积函数值。

3.6 终点判断模块

终点判断模块开始会从数据接收模块接收x轴和y轴的各自终点判断的计数值,然后根据DDA积分模块每当有累加器溢出时,相应的终点计数值会相应的减一,直到x轴终点计数器和y轴终点计数器都为0时,停止插补,并输出插补完成信号。

3.7 脉冲及进给方向输出模块

在DDA积分模块累计溢出时,根据位置判断模块出相应的尽给脉冲和进给方向,并且修改被积函数寄存器的值。

4. Matlab算法验证截图

猜你喜欢
寄存器圆弧圆心
浅析圆弧段高大模板支撑体系设计与应用
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
外圆弧面铣削刀具
以圆周上一点为圆心作圆的图的性质及应用
移位寄存器及算术运算应用
六圆弧齿廓螺旋齿轮及其啮合特性
等截面圆弧无铰板拱技术状况评价
参考答案
Lx5280模拟器移植设计及实施