数字积分法轮廓插补的FPGA实现方法

更新时间:2023-04-07 03:02:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京工程学院自动化学院本科毕业设计(论文)

自动化学院

本科毕业设计(论文)

题目:数字积分法轮廓插补的FPGA实现方法

I

南京工程学院自动化学院本科毕业设计(论文)

摘要

本论文设计完成的芯片由VHDL编程设计,它能按照程序设计要求,实现利用DDA插补法对直线和圆弧各个象限的插补。

本论文主要介绍了DDA插补法的插补原理、芯片设计及在MAXPIUSⅡ环境下的仿真。

为了提高伺服电机的步进精度,简化控制器结构,采用FPGA器件并运用VHDL 语言设计出的插补控制器,不仅采用数字积分法实现直线插补控制和圆弧插补控制,提高了插补速度和插补精度,而且运用多轴联动技术,实现输出脉冲的均匀分配。它可接收外部处理器指令,并发出所需的脉冲到伺服电机的驱动中,从而控制伺服电机的运转,其结果证明了该控制器的正确性。这种结构的控制器简化了一般数字控制器结构,具有良好的移植性能和一定的实用价值。

关键字:数字积分法;轮廓插补;FPGA

II

南京工程学院自动化学院本科毕业设计(论文)

ABSTRACT

In this paper, chip design is completed by the VHDL Programming, it design requirements in accordance with procedures, DDA interpolation method to achieve the use of linear and circular interpolation of each quadrant.

This paper introduces the principle of DDA interpolation interpolation method, the chip design and simulation in MAXPLUS Ⅱenvironment.

In order to improve the accuracy of servo stepper motor, simplifying the controller structure, the use of FPGA devices and the use of VHDL language design interpolation controller, not only using digital integration method to achieve control of linear interpolation and circular interpolation control, improved interpolation speed and accuracy of interpolation, and the use of multi-axis technology to achieve a uniform distribution of the output pulse. It can receive external processor instructions and issues the necessary drive pulses to the servo motor, thereby controlling the operation of the servo motor, which show the validity of the controller. This structure simplifies the control of the general structure of a digital controller, having a good performance and transplant practical value.

Key word:Digital integration;Contour Interpolation; FPGA

III

南京工程学院自动化学院本科毕业设计(论文)

目录

第一章绪论

1.1 引言 (1)

1.2 选题的背景及意义 (1)

1.3 数控系统插补 (1)

1.3.1 插补的介绍 (2)

1.3.2 插补方法的分类 (2)

1.3.3 插补技术的发展 (4)

1.4 本课题的主要工作 (4)

第二章插补芯片设计

2.1 芯片的总体设计 (6)

2.2 芯片开发工具 (7)

2.3 VHDL硬件描述语言 (8)

2.4 FPGA的设计流程 (8)

第三章读写逻辑控制模块

3.1 读写逻辑控制模块的功能 (11)

3.1.1 数据转换 (11)

3.1.2 象限处理 (14)

3.2 程序仿真及波形分析 (16)

3.3 设计元件 (17)

第四章数字积分法直线插补模块的实现

4.1 数字积分法基本原理 (18)

4.2 数字积分法直线插补 (19)

4.2.1 插补原理 (19)

4.2.2 插补实例 (21)

4.3 直线插补设计 (22)

4.4 直线插补的VHDL语言的实现 (23)

4.5 仿真波形及分析 (24)

第五章数字积分法圆弧插补模块的实现

5.1 数字积分法圆弧插补 (26)

5.1.1 插补原理 (26)

5.1.2 插补实例 (27)

5.2 圆弧插补设计 (27)

IV

南京工程学院自动化学院本科毕业设计(论文)

5.3 圆弧插补的VHDL语言的实现 (29)

5.4 仿真波形及分析 (29)

第六章结论

6.1 工作总结 (32)

6.2 展望 (32)

致谢 (33)

参考文献 (34)

附录A (35)

V

南京工程学院自动化学院本科毕业设计(论文)

第一章绪论

1.1 引言

数控系统的核心技术是运动控制技术,随着机电一体化的深入发展,运动控制技术已经成为推动机电一体化进程的重要环节,是推动新的产业革命的关键技术码。

现代高速数控技术对运动控制器的速度和精度要求日益提高,与运用软件实现的控制器相比较,基于FPGA设计的插补控制器具有控制方便、插补速度快、精度高、通用性好、可移植性的特点,并拥有可运用硬件描述语言实现软硬结合等多种优点。为了提高伺服电机的精确度,本文设计了一个基于数字积分法并采用多轴联动技术的插补控制器,该控制器可实现两轴的直线插补和圆弧插补。

1.2 选题的背景及意义

开放化、高速化和高精度化都是现代计算机数控系统最新的发展趋势和研究热点。目前我国在紧密跟随国外发展趋势的同时,对开放式数控的体系结构和实现方法从多个侧面开展了广泛的研究。

本文基于数控智能芯片的思想,采用FPGA,电路的二次开发和在线编程能力硬化实现计算机数控系统的插补功能模块。虽然国内也有不少学者已经尝试过这种硬化实现技术,但一般仍是针对数控系统内部某项功能的局部实现和替换,没有站在整个系统的角度,按照一定的标准和规范来设计出标准的数控智能芯片,也就无法做到真正的即插即用。由于软件硬化模块处理速度相当与ASIC芯片,因此可获得很高的处理速度,为我国超高速加工机床的研制提供了一条有效途径。

1.3 数控系统插补

数控就是数字控制(Number Control,NC)的简称。从广义上讲,是指利用数字化信息实行控制,也就是利用数字控制技术实现自动控制系统,其被控对象可以是各种生产过程。而这里主要从侠义上理解,也就是利用数字化信息对数控机床轨迹和状态实行控制,例如数控车床、数控铣床、数控线切割机床、数控加工中心等。

在数控机床加工过程中,刀具只能以折线去逼近将要加工的曲线轮廓,所以它的运动轨迹并不是光滑的曲线。为了实现轮廓控制,就必须实时计算出满足零

1

南京工程学院自动化学院本科毕业设计(论文)

件形状和进给速度要求的介于起点和终点之间的若干个中间点的坐标,这些可以通过插补算法来获得。

1.3.1 插补的介绍

根据零件图编写出数控加工程序后,通过输入设备将其传送到数控装置内部,然后经过数控系统控制软件的译码和预处理,就开始针对刀具补偿计算后的刀具中心轨迹进行插补运算处理。

插补是整个数控系统软件中一个极其重要的功能模块之一,其算法的选择将直接影响到系统的精度、速度及加工能力等。

在数控机床加工过程中,刀具只能以折线去逼近将要加工的曲线轮廓,所以它的运动轨迹并不是光滑的曲线。为了实现轮廓控制,就必须实时计算出满足零件形状和进给速度要求的介于起点与终点之间的若干个中间点的坐标,这些可以通过插补算法来获得。

所谓插补,就是根据零件轮廓尺寸,结合精度和工艺等方面的要求,在已知刀具中心轨线转接点之间插入若干个中间点的过程。换句话说,就是“数据点的密化过程”,起对应的算法称之为插补算法。中间点的获取是根据相应的算法由数控系统软件或硬件自动完成,并以此来协调控制各坐标轴的运动,从而获得所要求的运动轨迹。常见零件轮廓的形状有直线、圆弧、抛物线、自由曲线等。

数控加工程序中一般都要提供直线的起点和终点坐标、圆弧的起点和终点坐标、圆弧走向(顺圆/逆圆)、圆心相对于起点的偏移量或圆弧半径等。另外,还要根据机床参数和工艺要求给出刀具长度、刀具半径和主轴转速、进给速度等。具体来说,插补的任务就是根据进给速度的要求,计算出每一段零件轮廓起点与终点之间所插入中间点的坐标值。但是为了避免坐标值计算过程中可能遇到的三角函数、乘、除以及开方等运算,一般都采用迭代算法,这样也为插补的实时处理创造了有利条件。

1.3.2 插补方法的分类

随着相关学科特别是计算机领域的迅速发展,插补算法也在不断地完善和更新。由于插补的速度直接影响到数控系统的速度,而插补的精度又直接影响整个数控系统的精度,因此,人们一直在努力探求一直计算快并且精度又高的插补方法。但不幸的是,插补速度与插补精度之间是互相制约、互相矛盾的,这是必须进行折中的选择。目前为止,已涌现出了大量的插补算法,现将它们归纳为如下两大类:

(一)脉冲增量插补算法

脉冲增量插补(又称行程标量插补)算法是通过向各个运动轴分配脉冲,

2

南京工程学院自动化学院本科毕业设计(论文)

控制机床坐标轴相互协调运动,从而加工出一定轮廓形状的算法。这类插补算法的特点是每次插补的结果仅产生一个单位的行程增量,以单位脉冲的形式输出给步进电动机。因此,该类插补被称为脉冲增量插补。每个单位脉冲对应的坐标轴位移量,称之为脉冲当量,一般用BLU表示。脉冲当量是脉冲分配的基本单位,对应于内部数据处理的一个二进制位,它决定了数控机床的加工精度。对于普通数控机床,一般去BLU=0.01mm,比较精密的数控机床可取BLU=0.005mm、0.0025mm、0.001mm等。

脉冲增量插补算法比较简单,通常仅需几次加法和位移操作就可完成插补运算。比较容易用硬件实现,并且处理速度很快。当然,也可以用软件来实现。属于这类插补的具体算法有:数字脉冲乘法器法、逐点比较法、最小偏差法、数字积分法、比较积分法、目标点跟踪法、单步追踪法等。早期常用的脉冲增量式插补算法有逐点比较法、单步跟踪法、DDA法等。

80年代后期插补算法有改进逐点比较法、直接函数法、最小偏差法等,使插补精度提高到半个脉冲当量,但执行速度不很理想,在插补精度和运动速度均高的CNC系统中应用不广。近年来的插补算法有改进的最小偏差法,映射法。兼有插补精度高和插补速度快的特点。

(二)数据采样插补算法

数据采样插补(又称时间标量插补)算法是根据数控加工程序编写的进给速度,先将零件轮廓曲线按插补周期分割为一系列首位相连的微小直线段,然后输出这些微小直线段对应的位置增量数据,用以控制伺服系统实现坐标轴进给。与脉冲增量插补算法相比,数据采样插补算法不再是单个脉冲,而是位置增量的数字量。这类插补算法适用于以直线或交流伺服电动机作为执行元件的闭环或半闭环数控系统。

在数据采样插补的数控系统中,每调用一次插补程序,就计算出本次插补周期内各坐标轴的位置增量,据此求得各坐标轴相应的位置,并与采样所获得的实际位置(反馈值)进行比较,从而获得位置跟踪误差。伺服位置控制软件则根据当前的位置误差计算出进给坐标轴的速度,随后输出至驱动装置,通过执行机构带动机床移动部件朝着减小误差的方向移动,以保证整个系统的加工精度。

数控系统是一个多任务控制装置,它不仅有插补运算任务。而且还应完成数控加工程序编制、存储、收集运行状态数据、监视机床等其他数控功能。因此,要求插补运算仅占用插补周期的部分时间。当CNC系统选用数据采样插补法算法时,特别是当插补频率较低,大约在50~125Hz时,插补周期约为8~20ms,一般要求插补程序占用的时间不大于计算机在一个插补周期工作机时的30%~40%,一边在余下的时间内,计算机可以去做其他工作。在这种插补频率下,数控系统可

3

南京工程学院自动化学院本科毕业设计(论文)

达到的最大轨迹速度可达10m/min以上,也就是说数据采样插补程序的运行时间也不再是限制加工速度的主要因素。加工速度的上限将取决于圆弧轮廓插补过程中弦弧误差以及伺服系统的动态响应特性。

1.3.3 插补技术的发展

数控技术的发展与计算机领域的发展是息息相关的,特别是20世纪80年代以后微型计算机的出现,给数控技术注入了新的活力,基于微型计算机的数控系统已成为现在数控系统的主流。为了进一步提高数控系统性能,克服其在速度和精度之间的矛盾,人们提出了如下一些切实可行的方案来加以弥补。

(一)采用软硬件相配合的两级插补方案

在这种数控系统中,为了减轻数控装置的插补负担,将整个插补任务分成两步完成,即先用插补软件将加工零件的轮廓段插补周期(10~20ms)分割成若刚微笑之线段这个过程称为粗插补。随后利用附加的硬件插补器对粗插补输出的微直线段做进一步的插补,形成一簇单位脉冲输出,这个过程称为精插补。大官人,精插补也可以利用软件来实现粗插补将完成插补任务中的绝大部分计算工作量,而占用的时间却比用一级软件插补方案少得多。这样可大大缓和实时插补与多任务控制之间的矛盾。例如FANUC公司生产的SYSTEN-5数控系统就是采用这种方案实现的。

(二)采用多个CPU的分布式处理方案

首先将数控系统的全部功能划分为几个子功能模块,每个子功能模块配置一个独立的CPU来完成其相应功能,然后通过系统软件来协调各个CPU之间的工作。美国麦克唐纳·道格拉斯公司的ActrionⅢ型数控系统就是一个典型的代表,它采用四个微处理器分别实现输入/输出、轮廓插补及进给速度控制功能、坐标轴私服功能、数控加工程序编程和CRT显示功能。这种系统具有较高的性能/价格比,代表着数控技术发展的一个方向。

(三)采用但太高性能微型计算机方案

采用高性能的微型计算机来完成整个数控系统的软件功能。目前32位和64位的微型计算机技术已经成熟,其处理速度可达到2GHz以上,综合性能已经超过原来的小型机。可见,将它们应用于数控系统中在合适不过了,并且已经有这种系统上市。

1.4 本课题的主要工作

1.熟悉开发工具、VHDL等

2.方案设计

3.控制芯片读写逻辑实现与仿真

4

南京工程学院自动化学院本科毕业设计(论文)

4.数字积分法直线插补实现与仿真

5.数字积分法圆弧插补实现与仿真

5

南京工程学院自动化学院本科毕业设计(论文)

第二章插补芯片设计

完成插补运算的装置或程序称为插补器,分为硬件插补器、软件插补器和软硬件结合插补器。插补器是计算机数控系统的一个基本单元,用来完成运动轨迹的拟合。由于计算机技术的发展,目前数控系统所使用的插补器多为软件插补器。尽管软件插补有很多优点,但由于其插补运算是串行的,因而运算速度较低,特别是对于一些高精度、高速度的多轴数控系统,往往不能满组需求。而硬件插补则可以实现多轴插补的并行运算,因而具有较高的插补速度。应用现场可编程逻辑门阵列可以弥补硬件插补器结构复杂、灵活性差的缺点。

本文利用FPGA 可以弥补硬件插补器的不足,是执行速度提高,且可与运动控制部分很好的集成,制成运动控制器,实现高速运动控制。

2.1芯片的总体设计

根据插补的定义及目的,我们所要设计的芯片应具备接收外部传送的数据、指令,完成直线和圆弧各象限的插补功能。

该控制器的核心部分是DDA插补模块,整个插补模块可分成直线插补模块和圆弧插补模块两部分。每个插补模块内都由数据缓存器、插补积分器和位置计数器3个部分组成。

插补控制器具备直线插补及圆弧插补的能力,2种插补均采用数字积分法实现。数字积分法(DDA)具有逻辑能力强、可实现多轴联动控制,且输出脉冲均匀的特点。如图1所示,插补控制器接收到外部处理器的控制信号和数据,经过译码及配置寄存器模块的译码和配置后,根据需要选择进行直线插补或圆弧插补,输出指脉冲和方向信号。脉冲用于通过伺服电机驱动控制伺服电机的转动,方向信号则控制伺服电机的转动方向。

6

南京工程学院自动化学院本科毕业设计(论文)

图1

根据上述对芯片功能的概述,把芯片分为三个模块:读写逻辑控制模块(简称LD模块)、DDA直线插补模块、DDA圆弧插补模块。下面我们就要一一解决这三个模块的内容。

2.2 芯片开发工具

MAX plus是 Multiple Array Matrix and Programmable Logic User System 缩写。它提供的灵活性和高效性是无可比拟的。

MAX plus Ⅱ开发系统有许多特点:

(1) 开放的界面

(2) 与结构无关

(3) 多平台运行

(4) 完全集成化

(5) 丰富的设计库

(6) 模块化工具

(7) 支持多种硬件描述语言

MAX plus Ⅱ是一款非常成功的EDA设计软件,在全球拥有广泛的用户群。但随着大型FPGA/CPLD设计的迅速发展,MAX plus Ⅱ软件在功能上逐渐显现出许多不足的地方。Quartus Ⅱ作为Altera公司近年推出的一款成功的综合EDA 设计软件,它的强大功能使开发者能够缩短产品设计周期、减少上市时间,而且支持最新的MAXⅡ、StratixⅡ、Stratix, Cyclone、APEX 20KE、APEXⅡ、ACEX、

7

南京工程学院自动化学院本科毕业设计(论文)

Excalibur、FLEX 10KE、FLEX 10K、FLEX 10KA、FLEX 6000、MAX 7000S、MAX 7000B、MAX 7000AE和MAX 3000A器件,是现今使用最广的Altera器件软件开发平台。

2.3 VHDL硬件描述语言

硬件描述语言最早出现于20世纪60年代,至今在工业生产和科学研究中得以应用的HDL有百余种之多。众多软件公司开发研制的具有自己特色的电路硬件描述语言(Hardware Description Language,HDL),存在着很大的差异,工程师一旦选用某种硬件描述语言作为输入工具,就被束缚在这个硬件设计环境之中。因此,硬件设计工程师需要一种强大的、标准化的硬件描述语言,作为可相互交流的设计环境。迄今只有两种HDL被IEEE列为标准,被众多EDA工具所支持。它们是VHDL(IEEE 1076)和Verilog HDL(IEEE 1364)。

VHDL语言是美国国防部在20世纪80年代初为实现超高速集成电路计划(very high speed integrated circuit,VHDL)而提出的一种HDL,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。1981年提出了一种新的HDL,称之为VHSIC Hardware Description Language,简称为VHDL,这种语言的成就有两个方面:1.描述复杂的数字电路系统,2.成为国际的硬件描述语言标准。

VHDL语言的优点主要有:

1.用于设计复杂的、多层次的设计。支持设计库和设计的重复使用

2.与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的硬件细节。

3.有丰富的软件支持VHDL的综合和仿真,从而能在设计阶段就能发现设计中的Bug,缩短设计时间,降低成本。

4.更方便地向ASIC过渡

5.VHDL有良好的可读性,容易理解。

VHDL语言与计算机语言的区别主要体现在:

1.运行的基础不同

计算机语言是在CPU+RAM构建的平台上运行。

VHDL设计的结果是由具体的逻辑、触发器组成的数字电路。

2.执行方式不同

计算机语言基本上以串行的方式执行。

VHDL在总体上是以并行方式工作。

3.验证方式不同

计算机语言主要关注于变量值的变化。

VHDL要实现严格的时序逻辑关系。

2.4 FPGA的设计流程

FPGA设计可以分为设计输入、综合、功能仿真(前仿真)、实现、时序仿真、

8

南京工程学院自动化学院本科毕业设计(论文)

配置下载等六个步骤。

1设计输入

设计输入包括使用硬件描述语言HDL、状态图与原理图输入三种方式。HDL 设计方法是现在设计大规模数字集成电路的良好形式。HDL语言描述在状态机、控制逻辑、总线功能方面较强,使其描述的电路能在特定综合器作用下以具体硬件单元很好的实现:而原理图的输入在顶层设计、数据通路逻辑和手工最优化电路等方面,具有图形化强、单元节俭、功能明确等优点。以HDL语言为主,原理图为辅,进行混合设计是常用的方式来发挥二者各自特色。在进行混合设计时,设计者应该严格按照自上而下或自下而上的结构化设计方法。

2设计综合

综合,就是按照给定的电路实现的功能和实现这个电路的约束条件,比如速度、功耗、成本及电路类型等,通过计算机对此进行优化处理,得到一个能满足上述要求的最优的电路设计方案。综合包括分析、综合和优化这三个步骤。用HDL描述作为例,分析是利用标准的HDL语法规则对HDL源文件进行分析并纠正语法错误;综合是用选定的FPGA结构和器件作为目标,对HDL和FPGA网表的文件进行逻辑综合;优化则是根据用户的设计约束对速度和面积等进行逻辑优化,产生一个优化过的FPGA网表文件,以供FPGA布局和布线工具使用。综合与优化可分为两步独立进行,在两步之间进行约束指定,例如时钟的确定、通路与端口的延时、模块的算子共享和寄存器的扇出等。如果设计模型较大,可以采用层次化方式进行综合,先综合下级模块,然后综合上级模块。在进行上级模块综合后设置下级模块为Don?t Touch,使设计与综合过程合理和规范化。综合后形成的网表可以导入FPGA设计厂商提供的可支持第三方设计输入的专业软件中,就可进行后续FPGA芯片的实现。综合完成后可得到报告文件,输出综合状态与综合结果,如资源使用情况、综合以后层次信息等。

3仿真验证

从广义上讲,设计验证包括功能与时序仿真和电路验证。仿真是指使用设计软件包对已实现的设计进行完整测试,模拟实际物理环境下的工作情况。前仿真是指仅对逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程没有加入时序信息,不涉及具体器件的硬件特性,如延时特性:而在布局布线后,提取有关的器件延迟、连线延时等时序参数,而在此基础上进行的时序仿真称为后仿真,它已是接近真实器件运行的仿真。

4设计实现

实现是利用FPGA厂商的实现工具把综合后逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行连线,

9

南京工程学院自动化学院本科毕业设计(论文)

并产生相应文件(如配置文件与相关报告)。通常可分为如下五个步骤。

1).转换:将多个设计文件进行转换并合并到一个设计库文件中。

2).映射:将网表中逻辑门映射成物理元素,即把逻辑设计分割到构成可编程逻辑阵列内的可配置逻辑块与输入输出块及其它资源中的过程。

3).布局与布线:布局是指从映射取出定义的逻辑和输入输出块,并把它们分配到FPGA内部的物理位置,通常基于某种先进的算法来完成布线是指利用自动布线软件使用布线资源选择路径完成所有的逻辑连接。可以使用约束条件操作布线软件,完成设计规定的性能要求。在布局布线过程中,可同时提取时序信息形成报告。

4).时序提取:产生反标文件,供给后续的时序仿真使用。

5).配置:产生FPGA配置时的需要的位流文件。

5时序分析

在设计实现过程中,在映射后需要对一个设计的实际功能块的延时和估计的布线延时进行时序分析,而在布局布线后,也要对实际布局布线的功能块延时和实际布线延时进行静态时序分析。静态时序分析允许设计者详尽地分析所有关键路径并得出一个有次序的报告,而目‘报告中含有其’已调试信息。静态时序分析器可以用来检杳设计的逻辑和时序,以便计算各通路性能,识别可靠的路径,检测建立和保持时间的配合。

6下载验证

下载是在功能仿真与时序仿真正确的前提下,将综合后形成的位流下载到具体的FPGA芯片中,也叫芯片配置。因FPGA大多支持IEEE的JTAG标准,所以使用芯片上的JTAG口是常用下载方式。将位流文件下载到FPGA器件内部后进行实际器件的物理测试即为电路验证,当得到正确的验证结果后就证明了设计的正确性。电路验证对ASIC最后的投片生产具有较大意义。

10

南京工程学院自动化学院本科毕业设计(论文)

第三章读写逻辑控制模块

3.1 读写逻辑控制模块的功能

由上一章节对LD模块的介绍知道,其功能是将单片机送来的数据写入芯片当中,并对待插补的直线或圆弧进行象限处理。

由于微处理器的位数有8位、16位、32位不等,在进行芯片设计时,考虑不同处理器之间的通信关系,若以8位数据作为输入,则其既可向16位数据转换,也可向32位数据转换。故,从兼容性方面考虑,数据输入部分采用8位即可。而芯片内部,采用16位已经足够。

3.1.1 数据转换

根据上面文章对LD模块功能的介绍,我们知道输入给LD模块的是一个8位的脉冲信号,LD模块要把这个8位的脉冲信号转换成我们所需要的16位脉冲信号。下面我们介绍一下LD模块中数据转换的流程:

11

南京工程学院自动化学院本科毕业设计(论文)

图二数据转换流程图

下面是数据转换的VHDL语言描述:

P1:PROCESS(WR,A)

V ARIABLE LINE: STD_LOGIC;

Variable HDA:STD_LOGIC_VECTOR(7 DOWNTO 0);

Variable TMP:STD_LOGIC_VECTOR(2 DOWNTO 0):="000";

BEGIN

if WR'EVENT AND WR='0' then

12

南京工程学院自动化学院本科毕业设计(论文)

if A='0' THEN

TMP:="000";

elsif CS='0' then

if TMP="000" then

HDA:=D;

TMP:=TMP+1;

elsif TMP="001" then

XXE<=CONV_INTEGER(HDA&D);

TMP:=TMP+1;

elsif TMP="010" then

HDA:=D;

TMP:=TMP+1;

elsif TMP="011" then

YYE<=CONV_INTEGER(HDA&D);

TMP:=TMP+1;

LINE:='1';

ELSif TMP="100" then

HDA:=D;

TMP:=TMP+1;

elsif TMP="101" then

XXS<=CONV_INTEGER(HDA&D);

TMP:=TMP+1;

elsif TMP="110" then

HDA:=D;

TMP:=TMP+1;

elsif TMP="111" then

YYS<=CONV_INTEGER(HDA&D);

TMP:="000";

LINE:='0';

end if;

end if;

end if;

LL<=LINE;

END PROCESS P1;

13

南京工程学院自动化学院本科毕业设计(论文)

在VHDL程序中,P1:PROCESS(WR) 为进程语句,WR为敏感变信号,敏感信号有事件发生时,进程中的顺序语句都会按照他们出现的顺序执行。

WR'EVENT AND WR='0'表示为WR下降沿,'EVENT是信号预定义属性,表示有事件发生,WR'EVENT AND WR= '0'为WR发生变化且WR=O,从而实现WR的下降沿,WR为下降沿有效。程序中TMP为标志位,HAD是一个中间变量,用来存放脉冲信号的高8位。其中D是输入的一个8位信号。然后把HAD和D并起来,就得到了我们需要的16位信号,从而实现了数据的转换。

3.1.2 象限处理

DDA法在插补不同象限的直线和圆弧时,其算法也有所不同,如表3.1。在程序设计当中,以XXDIR和YYDIR分别作为X轴和Y轴的进给方向,为“1”表示向负方向进给,为“0”则表示向正方向进给。而进给方向则通过起、终点的坐标值及其大小比较来确定。

表3.1 不同象限脉冲分配修正

为避免程序设计繁冗,及因坐标值的正负而出现程序错误等现象的出现,对于坐标值为负的点,将其坐标取绝对值后,在确定其进给方向,这样,经过绝对值修正后,就将四象限的插补过程均转化为第一象限的插补,简化了程序及插补算法。

不同象限进给方向的程序设计:

IF (LL='0') THEN --直线类型

IF XXE<0 THEN

XXDIR:='1'; --X轴正方向进给

TXE:=-XXE; --取绝对值

ELSE

XXDIR:='0'; --X轴负方向进给

END IF;

IF YYE<0 THEN

14

南京工程学院自动化学院本科毕业设计(论文)

YYDIR:='1'; --Y轴正方向进给

TYE:=-YYE; --取绝对值

ELSE

YYDIR:='0'; --Y轴负方向进给

END IF;

ELSE

IF XXE>XXS THEN

XXDIR:='0';

ELSE

XXDIR:='1';

END IF;

IF YYE>YYS THEN

YYDIR:='0';

ELSE

YYDIR:='1';

END IF;

IF XXE<0 THEN --对圆弧的起点和终点取绝对值:TXE:=-XXE; --对终点X轴坐标取绝对值ELSE

TXE:=XXE;

END IF;

IF XXS<0 THEN

TXS:=-XXS; --对起点的X轴坐标取绝对值ELSE

TXS:=XXS;

END IF;

IF YYE<0 THEN

TYE:=-YYE; --对终点的Y轴坐标取绝对值ELSE

TYE:=YYE;

END IF;

IF YYS<0 THEN

TYS:=-YYS; --对起点的Y轴坐标取绝对值ELSE

15

南京工程学院自动化学院本科毕业设计(论文)

TYS:=YYS;

END IF;

END IF;

3.2 程序仿真及波形分析

首先通过MAX+plusⅡ在File菜单中选择“New…”选项,然后选择建立一个Txt Editor File ,如图3.1

图3.1

然后输入数据输入缓存模块的VHDL的程序,完成设计程序输入,并用与ENTITY实体名一致的文件名以vhd格式保存,然后在MAX+plusⅡ菜单中选择compiler进行编译。如果编译成功这只能说明设计符合一定的语法规范,并不能保证满足设计者的功能要求。仿真的目的是验证电路的行为是否和设计目的保持一致。

仿真是通过MAX+plusⅡ在File菜单中选择“New…”选项,然后选择“Waveform Editor File”,从其右边的下拉列表框中选择.scf文件扩展名,单击“OK”按钮即可创建一个新的仿真文件。从File菜单中选择“End Time”,设置欲仿真的时间长度。选择Node菜单中的“Enter Nodes from SNF”菜单项,选中Type框中的“input”和“output”,单击“List”,列出所有的输入输出项。选择向右箭头,将所有输入输出信号加入仿真窗口。在编辑波形窗口,根据需要来编辑波形,对信号进行赋值。WR设置时钟周期为100ns的信号,CS置“1”,A置“1”保存后选择“Simulator”,单击“Start” 开始仿真,在Waveform Editor窗口里进行波形仿真,得到如图3.2所示波形。

16

本文来源:https://www.bwwdw.com/article/ebvl.html

Top