首页 基于FPGA的步进电机控制器毕业论文

基于FPGA的步进电机控制器毕业论文

举报
开通vip

基于FPGA的步进电机控制器毕业论文南京林业大学本科毕业设计(论文) 本科毕业设计(论文) 题 目:基于FPGA的步进电机控制器 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名...

基于FPGA的步进电机控制器毕业论文
南京林业大学本科毕业设计(论文) 本科毕业设计(论文) 题 目:基于FPGA的步进电机控制器 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 注 意 事 项 1.设计(论文)的内容包括: 1)封面(按教务处制定的标准封面格式制作) 2)原创性声明 3)中文摘要(30 0字 个人自传范文3000字为中华之崛起而读书的故事100字新时代好少年事迹1500字绑架的故事5000字个人自传范文2000字 左右)、关键词 4)外文摘要、关键词 5)目次页(附件不统一编入) 6)论文主体部分:引言(或绪论)、正文、结论 7)参考文献 8)致谢 9)附录(对论文支持必要时) 2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。 3.附件包括:任务书、开题 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 、外文译文、译文原文(复印件)。 4.文字、图表要求: 1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写 2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画 3)毕业论文须用A4单面打印,论文50页以上的双面打印 4)图表应绘制于无格子的页面上 5)软件工程类课题应有程序清单,并提供电子文档 5.装订顺序 1)设计(论文) 2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订 3)其它 摘 要 步进电机是一种将电脉冲信号转换成相应的角位移的特殊电机,每改变一次通电状态,步进电机的转子就转动一步[1]。步进电机的突出优点是它可以在宽广的频率范围内,利用改变脉冲频率来实现调速,快速起停、正反转控制及制动等,并且由其组成的开环系统简单、廉价、可靠,因此在众多领域有着极其广泛的应用。由于工业技术的不断进步,在自动化控制、精密机械加工、航空航天技术以及所有要求高精度定位、自动记录、自动瞄准等高新技术领域内,对步进电机的细分要求也越来越高。 本文介绍了EDA技术及其发展趋势,分析了步进电机加减速正反转及其细分驱动的基本原理。在EDA技术软件平台上,以硬件描述语言VHDL为描述手段完成了逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合,以及逻辑优化和仿真测试,最终完成了基于FPGA的步进电机控制器的设计。 关键词:EDA技术,步进电机,FPGA,VHDL Abstract Stepper motor is a kind of special motor that is driven in step angle or line displacement by electric pulse signal. To every change of electrifying state, the rotor in stepper motors will rotate one step. The prominent advantages of stepper motor are regulating-rate, quickly rise-stop, positive-reverse controlling and brake etc by changing the frequency of pulse. The stepper motor opening-ring system is simple, cheap, stability and reliability, therefore its application is very extensive in many realm. With the continuous development of industrial technology, Stepper Motor Subdivision is required higher and higher in automatic control, precision machining, aerospace technology and all high-technology fields that required High Precision Positioning, automatic recording, automatic aiming etc. This paper presents EDA technology and its development trendency, analyzes the basic theory of stepper motor Acceleration,deceleration,reversing,and studies the design method of FPGA hardware circuit based on the software platform of EDA. Then, on EDA software platform, we do logical compile, logical simplify, logical synthesis, structural synthesis and logical optimization, simulation test to the design document,which is obtained using hardware description language VHDL as description method,and completes the design of the stepper motor controller based on FPGA. Key words:EDA technology, stepping motor, FPGA,VHDL 目 录 I摘 要 IIAbstract III目 录 1第一章 绪论 11.1研究背景 11.2国内外研究现状 31.3主要研究内容 4第二章 EDA技术与VHDL语言及FPGA简介 42.1 EDA技术 52.2 EDA技术发展史 52.2.1 CAD阶段 62.2.2 CAE阶段 62.2.3 EDA阶段 72.3 VHDL硬件描述语言 82.4 VHDL语言的发展史 92.5 FPGA的简介 102.6 FPGA的基本结构及特点 112.7 FPGA的发展 112.8 FPGA一般设计 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 112.8.1 设计输入 122.8.2 设计实现 122.8.3 设计验证 122.8.4 仿真软件MAX+PLUSⅡ简介 132.9 本章小结 14第三章 基于FPGA的步进电机控制器设计 143.1 步进电机特点和固有参数及控制原理 143.1.1 步进电机的特点 153.1.2 步进电机的固有参数 163.1.3 步进电机的控制原理 173.2 步进电机控制系统的VHDL设计 183.2.1 步进电机控制系统的VHDL模块图 183.2.2 步进电机速度控制系统VHDL程序设计说明 193.2.3 ENTITY模块 203.2.4 ARCHITECTURE模块 203.2.5 步进电机速度控制模块 203.2.6 步进电机方向设定电路模块 213.2.7 步进电机移动控制模块 223.2.8 编码输出电路模块 223.2.9 步进电机细分驱动的探索 233.3 步进电机控制系统的硬件实现电路 233.3.1 工作原理 243.3.2 硬件组成 263.4 本章小结 27第四章 仿真实验 274.1 建立工作库文件夹和编辑设计文件 274.1.1 新建一个文件夹 274.1.2 编辑源程序 294.2 原理图输入设计 294.2.1 mif文件的设计 304.2.2 rom存储器的设计 324.3 创建工程 324.3.1 打开建立新工程管理窗 334.3.2 将设计文件加入工程 334.3.3 选择目标芯片 344.3.4 结束设置 344.4利用VHDL文件及BDF文件生成元器件 344.4.1利用VHDL文件生成元器件 354.4.2利用BDF文件生成元器件 354.5电路图的整体设计 364.6 时序仿真 384.7 本章小结 39第五章 总结与展望 395.1 总结 395.2 展望 40第六章 致谢 41参考文献 第一章 绪论 1.1研究背景 步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。 步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。 EDA(Electronic Design Automation,电子设计自动化)是以大规模可编程逻辑器件替代中小规模集成电路作为硬件载体,以EDA软件编程的方式对可编程器件进行电子系统设计的计算机辅助电路设计技术。目前已经广泛应用于电子电路与系统的设计和产品的开发,逐渐取代了传统的手工硬件电路设计方式。设计的系统具有体积小、重量轻、功耗小、速度快、价格低、可靠性高、设计周期短等优点[1]。 常用的EDA软件包括VHDL,Verilog HDL,ABEL等硬件描述语言。其中,VHDL(Very High Speed Integrated Circuit Hardware Description Language)即超高速集成电路硬件描述语言,在基于CPLD/FPGA和ASIC的数字系统设计中有着广泛的应用[2]。VHDL作为IEEE的工业标准硬件描述语言,又受到众多EDA工具厂家的支持,在电子工程领域,已成为事实上的通用硬件描述语言。许多主流EDA开发软件使用集成设计环境,支持多种输入方式,具有综合、适配、仿真和在系统下载等功能,界面友好,操作方便,功能强大[3]。 目前常用的可编程逻辑器件有FPGA(Field Programmable Gate Array,现成可编程门阵列)和CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)[4]。FPGA是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA器件作为设计数字电路或系统的首选器件之一,目前已广泛应用于通信、自动控制、信息处理等诸多领域[5]。随着可编程逻辑器件的发展,FPGA的应用已经越来越广泛,且用可编程逻辑器件代替传统的普通集成电路已成为一种发展的趋势。 因此,用可编程逻辑器件FPGA来实现对步进机的控制是一个很好的选择。 1.2国内外研究现状 步进电机最早是在1920年由英国人所开发,而步进电机细分驱动技术70年代中期发展起来的一种可以显著改善步进电机综合使用性能的驱动控制技术。1975年美国学者T.R. Fredriksen首次在美国增量运动控制系统及器件年会上提出了步进电机步距角细分的控制方法,在其后的二十多年里,步进电机细分驱动技术得到了很大的发展,对于精确控制步进电机的控制器的研究不断深入。 在国内,近年来对步进电机控制器的研究也不少。例如: 杭州电子科技大学的任勇以FPGA为控制核心,通过RS232串口与上位机进行通讯。上位机采用了PC机,在PC上采用LABVIEW编写控制界面,可以设置工作模式、细分数、转向、启停、升速步数、恒速步数、减速步数。利用LabVIEW的web发布工具,可通过客户端浏览器查看和操作控制界面,并可以对步进电机实现远程控制的功能。浙江财经学院信息学院的应芳琴采用FPGA 控制步进电机,利用其中的EAB 可以构成存放电机各相电流所需的控制波形数据表, 利用FPGA设计的数字比较器可以同步产生多路PWM 电流波形,并对多相步进电机进行灵活控制。当改变控制波形表的数据, 增加计数器的位数, 提高计数精度后, 就可以对步进电机的步进转角进行任意细分, 从而实现了步进转角的精确控制。南京师范大学的刘清则提出了用系数乘法器实现步进电机调速的方法。该控制器可以使步进电机驱动信号的频率高精度、平滑变化。另外,用该控制器控制步进电机转速,实现汽车车速表校验的检测系统已在重庆长安汽车公司投入使用[10]。大多数设计人员常习惯于用逻辑电路来实现复杂的步进电机的控制,虽然取得了较大的成效,但由于成本高,费时多,而且一旦组成电路,改进就比较困难。据此,郑伟研究了步进电机的计算机控制方法。微处理器与微型计算机的先进技术和便宜的价格给步进电机的控制开创了一个新局面,完全可以用它来实现复杂而成本又不高的控制系统[9]。潘松和王国栋则强调了VHDL的学习与运用在EDA设计中重要的地位,介绍了VHDL 设计多路选择器、锁存器以及全加器。采用VHDL语言并根据步进电机的不同,改变模块程序的参数,实现不同型号的步进电机控制[1]。在系统设计过程中,力求硬件简单,并充分发挥了VHDL语言软件编程灵活方便和FPGA快速的特点来满足系统设计要求,同时大大缩短系统的开发时间和成本。高速发展的FPGA 器件为EDA 技术的不断进步奠定了坚实的物质基础,而FPGA 器件更广泛的应用及厂商间的竞争使得普通的设计人员获得廉价的器件和EDA 软件成为可能。 步进电机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。然而,黄文平在研究步进电机的驱动时,指出步进电机按运行频率工作时,启动和停止都需要有一个缓慢的升频和降频的过程[11]。启动时,可在启动频率之下启动步进电机,然后逐渐上升到运行频率;停止时,先将频率逐渐降低到启动频率以下才能停止。特别是负载转动惯性比较大时,该现象很明显,以致严重影响到细分步进转角的非线性和均匀旋转的控制。这就是现有细分技术方案不能达到超高分辨的根本原因。为解决这个问题,很多资料都曾经提出对细分电流进行修正的方法,但一直未见一个实用、统一的数学模型及可行的细分方案。 综上可见,步进电机控制器的研究任重而道远。 1.3主要研究内容 利用VHDL语言,采用FPGA器件对步进电机进行软件编程,通过EDA设计软件MAX+PLUSⅡ对由VHDL编写的主控制电路程序进行编译。程序经编译优化、综合、仿真、适配,最后将生成的文件配置于制定的目标芯片中,实现步进机控制器的设计。 第二章 EDA技术与VHDL语言及FPGA简介 2.1 EDA技术 现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术,即EDA(Electronic Design Automation)技术。 EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能[9]。EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言VHDL和EDA软件来完成对系统硬件的实现。 EDA技术在硬件实现方面融合了大规模集成电路制造技术,IC版图设计技术、ASIC测试和封装技术、FPGA/CPLD编程下载技术、自动测试技术等;在计算机辅助工程方面融合了计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)、计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等。因此EDA技术为现代电子理论和设计的表达与实现提供了可能性。 EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。 “自顶向下”的设计方法首先从系统设计人手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。 相对于传统的电子设计方法,EDA还存在以下等优势: (1)可以大大降低设计成本,缩短设计周期。 (2)库都是EDA公司与半导体生产厂商合作、共同开发,从而能够完成各种自动设计过程。 (3)极大地简化设计文档的管理。 (4)极大地提高了大规模系统电子设计的自动化程度。 (5)设计者拥有完全的自主权,再无受制于人之虞。 (6)良好的可移植与可测试性,为系统开发提供可靠的保证。 (7)能将所有设计环节纳入统一的自顶向下的设计方案中。 (8)在系统板设计结束后仍可利用计算机对硬件系统进行完整的测试。 (9)对设计者的硬件知识和硬件经验要求低,使设计者能更大程度地将自己的材质和创造力集中在设计项目性能的提高和成本的降低上。 (10)EDA技术具有更好的高速性能。 (11)EDA技术以全硬件来实现,具有高可靠性[13]。 2.2 EDA技术发展史 EDA技术已有30年的发展历程,大致可分为三个阶段。70年代为计算机辅助设计(CAD)(Computer Aided Design)阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。80年代为计算机辅助工程(CAE)(Computer Aided Engineering)阶段。与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。CAE的主要功能是:原理图输人,逻辑仿真,电路分析,自动布局布线,PCB后分析。90年代为电子系统设计自动化(EDA)(Electronic System Design Automation)阶段。 2.2.1 CAD阶段 20世纪70年代,随着中、小规模集成电路的开发和应用,传统的手工制图设计印刷电路板和集成电路的方法已无法满足设计精度和效率的要求,于是工程师们开始进行二维平面图形的计算机辅助设计,这样就产生了第一代EDA工具,设计者也从繁杂、机械的计算、布局和布线工作中解放了出来。但在EDA发展的初始阶段,一方面计算机的功能还比较有限,个人计算机还没有普及;另一方面电子设计软件的功能也较弱,人们主要是借助与计算机对所设计电路的性能进行一些模拟和预测。此处就是完成印刷电路板的布局布线、简单版图的绘制等工作。例如,目前常用的PCB布线软件Protel的早期版本Tango、用于电路模拟的SPICE软件以及后来产品化的IC版图编辑与设计规则检查系统等软件,都是这个时期的产品。 20世纪80年代初,随着集成电路规模的快速增大,EDA技术有了较快的发展。更多的软件公司,如当时的Mentor公司、Daisy Systems及Logic System公司等相继进入EDA领域,开始提供带电路图编辑工具和逻辑模拟工具的EDA软件,主要解决了设计之前的功能检验问题。 总的来说,这一阶段的EDA水平还很低,对设计工作的支持十分有限,主要存在两个方面的问题需要解决。 (1)EDA软件的功能单一、相互独立。这个时期的EDA工具软件都是分别针对设计流程中的某个截断开发的,一个软件只能完成其中一部分工作,所以设计者不得不在设计流程的不同阶段分别使用不同的EDA软件包。然而,由于不同的公司开发的EDA工具之间兼容性较差,为了使设计流程前一级软件的输出结果能够被后一级软件接收,就需要人工处理或再运行另外的转换软件,这往往很复杂,势必影响设计的速度。 (2)对于复杂电子系统的设计,不能提供系统级的仿真和综合,所以设计中的错误往往只能在产品开发的后期才能被发现,这时再进行修改十分困难。 2.2.2 CAE阶段 进入20世纪80年代以后,随着集成电路规模的扩大及电子系统设计的逐步复杂,使得电子设计自动化的工具逐步完善和发展,尤其是人们在设计方法学、设计工具集成化方面取得了长足的进步。各种设计工具,如原理图输入、编译与连接、逻辑模拟、逻辑综合、测试码生成、版图自动布局以及各种单元库均已齐全。不同功能的设计工具之间的兼容性得到了很大改善,那些不走兼容道路、想独树一帜的CAD工具受到了用户的抵制,逐渐被淘汰。EDA软件设计者采用统一数据管理技术,把多个不同功能的软件结合成一个集成设计环境。按照设计方法学制定的设计流程,在一个集成的设计环境中就能实现由寄存器传出级(Register Transfer Level,RTL)开始,从设计输入到版图输出的全程设计自动化。在这个阶段,基于门阵列和标准单元库设计的半定制ASIC得到了极大的发展,将电子系统设计推入了ASIC时代。但是,大部分从原理图出发的CAE工具仍然不能适应复杂电子系统的要求,而且具体化的元件图形也制约着优化设计。 2.2.3 EDA阶段 20世纪90年代以来,继承电路技术以惊人的速度发展,其工艺水平已经达到了深亚微米级,在一个芯片上已经可以集成上百万、上千万乃至上亿个晶体管,芯片的工作频率达到了GHz级。这不仅为片上系统(System On Chip,SOC)的实现提供了可能,同时对电子设计的工具提出了更高的要求,促进了EDA技术的发展。 在这一阶段,出现了以硬件描述语言、系统级仿真和综合技术为基本特征的第三代EDA技术,它使设计师们摆脱了大量的具体设计工作,而把精力集中于创造性的方案与概念构思上,从而极大地提高了系统设计的效率,缩短了产品的研制周期。EDA技术在这一阶段的发展主要有以下几个方面: (1)用硬件描述语言来描述数字电路与系统 这是现代EDA技术的基本特征之一,并且已经形成了VHDL和Verilog-HDL两种硬件描述语言,它们都符合IEEE(The Institute of Electrical and Electronics Engineers,电气和电子工程师协会)标准,均能支持系统级、算法级、RTL级(又称数据流级)和门级各个层次的描述或多个不同层次的混合描述,设计的领域有行为描述和结构描述两种形式。硬件描述与实现工艺无关,而且还支持不同层次上的综合与仿真。硬件描述语言的使用,规范了设计文档,便于设计的传递、交流、保存、修改及重复使用。 (2)高层次的仿真与综合 所谓综合,就是由较高层次描述到低层次描述,由行为描述到结构描述的转换过程。仿真是在电子系统设计过程中对设计者的硬件描述或设计结果进行查错、验证的一种方法。对应于不同层次的硬件描述,有不同级别的综合与仿真工具。高层次的综合与仿真将自动化设计的层次提高到了算法行为级,使设计者无需面对低层电路,而把精力集中到系统行为建模和算法设计上,而且可以帮助设计者在最早的时间发现设计中的错误,从而大大缩短了设计周期。 (3)平面规划技术 平面规划技术对逻辑综合和物理版图设计进行联合管理,做到在逻辑综合早期设计阶段就考虑到物理设计信息的影响。通过这些信息,可以再进一步对设计进行综合和优化,并保证不会对版图设计带来负面的影响。这在深亚微米级时代,布线时延已经成为主要延时的情况下,对加速设计过程的收敛与成功是有所帮助的。在Synopsys和Cadence等著名公司的EDA系统中都采用了这项技术。 (4)可测试性综合设计 随着ASIC规模和复杂性的增加,测试的难度和费用急剧上升,由此产生了将可测试性电路结构做在ASIC芯片上的思想,于是开发出了扫描插入、内建自测试(BIST)和边界扫描等可测试性设计(DFT)工具,并已集成到EDA系统中。如Compass公司的Test Assistant和Mentor Graphics公司的LBLST Achitect、BSD Achitect和DFT Advistor等。 (5)开放性、标准化框架结构的集成设计环境和并行设计工程 近年来,随着硬件描述语言等设计数据格式的逐渐标准化,不同设计风格和应用的要求使得有必要建立开放性、标准化的EDA框架。所谓框架,就是一种软件平台结构,为EDA工具提供操作环境。框架的关键在于建立与硬件平台无关的图形用户界面以及工具之间的通信、设计数据和设计流程的管理等,此外包还括各种与数据库相关的服务项目。任何一个EDA系统只要建立一个符合标准的开放式框架结构,就可以接纳其他厂商的EDA工具一起进行设计工作。这样,框架作为一套使用和配置EDA软件包的规范,就可以实现各种EDA工具间的优化组合,并集成在一个易于管理的统一环境下,实现资源共享。 针对当前电子设计中数字电路与模拟电路并存、硬件设计与软件设计并存以及产品更新换代快的特点,并行设计工程要求一开始就从管理层次上把工艺、工具、任务、智利和时间安排协调好。在统一的集成设计环境下,由若干相关设计小组共享数据库和知识库,同步进行设计。 2.3 VHDL硬件描述语言 硬件描述语言(HDL)是一种用于设计硬件电子系统的计算机语言,是EDA技术的重要组成成分,英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件需要输人500至1000个门,而利用VHDL语言只需要书写一行“A=B+C”即可。而且 VHDL语言可读性强,易于修改和发现错误,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,是本课题设计过程中所使用的硬件描述语言。 VHDL支持各种模式的设计方法:自顶向下与自底向上或混合方法[14]。自底向上的设计方法是一种低效、低可靠性、费时费力且成本高昂的设计方法。而在EDA技术应用中,自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过程,是其首选设计方法。 应用VHDL进行自顶向下的设计,就是使用VHDL模型在所有综合级别对硬件设计进行说明、建模和仿真测试。流程如图2-1所示: SHAPE \* MERGEFORMAT 图2-1自顶向下的设计流程 VHDL还具有以下优点: (1)VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。 (2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。 (3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。 (4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。 2.4 VHDL语言的发展史 VHDL是Very High Speed Integrated Circuit Hardware Description Language的缩写,意思是超高速集成电路硬件描述语言。诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本(IEEE-1076)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993年,IEEE(The Institute of Electrical and Electronics Engineers)对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,即IEEE标准的1076—1993版本。VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL与Verilog语言将承担起几乎全部的数字系统设计[5]。 2.5 FPGA的简介 FPGA(Field programmable Gates Array,现场可编程门阵列)是可编程逻辑器件,它是在PAL、GAL 等逻辑器件基础上发展起来的,是20世纪80年代中期出现的可编程专用集成电路(ASIC)芯片。数字集成电路本身在不断地进行更新换代,它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担,系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,并且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD) [7] 。 早期的可编程逻辑器件只有可编程只读存贮器(PROM)、紫外线可擦除只读存贮器(EPROM)和电可擦除只读存贮器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。 其后,出现了一类结构上较复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。在PAL的基础上,又发展了一种通用阵列逻辑GAL (Generic Array Logic),如GAL16V8,GAL22V10 等,它采用了EEPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路[8]。 为了弥补这一缺陷,20世纪80年代中期。Altera和Xilinx分别推出了类似于PAL结构的扩展型 CPLD(Complex Programmab1e Logic Dvice)和与标准门阵列类似的FPGA(Field Programmable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与其它ASIC相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可用FPGA和CPLD器件。 2.6 FPGA的基本结构及特点 现场可编程门阵列(FPGA)器件采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线资源(Interconnect Resource )三个部分,FPGA的结构示意图如图2-2所示。 图2-2 FPGA的结构示意图 (1) CLB模块(Configurable Logic Block) CLB是FPGA的主要组成部分,是实现逻辑功能的基本单元,CLB主要是由逻辑函数发生器、触发器、数据选择器等电路组成。CLB的功能很强,不仅能够实现逻辑函数,还可以配置成RAM等复杂的形式,配置数据存放在片内的SRAM或熔丝图上,基于SRAM的FPGA器件工作前需要从芯片外部加载配置数据。配置数据可以存储在片外的EPROM或计算机上,设计人员可以控制加载过程,在现场修改器件的逻辑功能,即现场可编程。 (2) IOB模块(Input Output Block) IOB提供了器件引脚和内部逻辑阵列之间的连接,通常排列在芯片的四周。主要是由输入触发器、输入缓冲器、输出触发器和输出缓冲器组成,每个IOB控制一个引脚,可被配置为输入、输出或双向I/O功能。 (3)可编程内部连线资源IR(Interconnect Resource ) 可编程互连资源包括各种长度的金属连线线段和一些可编程开关,它们将各个CLB之间和CLB与IOB之间互相连接起来,构成各种复杂功能的系统。 FPGA的基本特点主要有[9]: (1)FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 (2)FPGA可做其它全定制或半定制ASIC电路的样片。 (3)FPGA内部有丰富的触发器和I/O引脚。 (4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 (5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 2.7 FPGA的发展 随着亚微米技术的发展,FPGA芯片密度不断增加,并以强大的并行计算能力和方便灵活的动态可重构性,被广泛地应用于各个领域。但是在复杂算法的实现上,FPGA却远没有32位RISC处理器灵活方便,所以在设计具有复杂算法和控制逻辑的系统时,往往需要RISC和FPGA结合使用。这样,电路设计的难度也就相应大大增加。随着第四代EDA开发工具的使用,特别是在IP核产业的迅猛发展下产生的SOPC技术,使嵌入的RISC及标准的FPGA器件呼之欲出。单片集成的RISC处理器和FPGA大大减小了硬件电路的复杂性和体积,同时也降低了功耗、提高了系统可靠性。Altera公司的EPXA10芯片就是应用SOPC技术,集高密度逻辑器件(FPGA)、存储器(SRAM)及嵌入式处理器(ARM)于单片可编程逻辑器件上,实现了速度与编程能力的完美结合。充分发挥了FPGA逻辑控制实现简单、对大量数据做简单处理速度快的优势以及ARM软件编程灵活的特点[10]。本设计使用ALTERA公司的FLEX10K系列FPGA,它具有高密度,低成本,低功耗等特点。 2.8 FPGA一般设计流程 与其他逻辑设计类似,FPGA设计流程也有三个彼此相关的重要步骤:设计输入、设计实现、设计验证仿真等,无论哪一步都应由通用或专用软件完成[11]。 2.8.1 设计输入 设计输入是将特定应用所需的逻辑功能输入到FPGA开发系统中,以便于用FPGA实现。设计输入方式目前留下三种:一是原理图输入方式;二是硬件描述语言输入方式;三是采用布尔方程式、真值表、状态机的文本输入方式。设计输入完成后得到XNF文件。 在设计输入中,往往是采用层次化设计方法,即分模块分层次的进行设计描述。描述设计总功能的模块放置最顶层,称顶层设计;描述设计最基本功能的模块放置最底层,称底层设计。设计实现工具可以自动地将各层逻辑结合到一起。层次化设计比较灵活,不同层次的逻辑设计可以采用不同的设计输入,允许设计者混合使用原理图、HDL、状态机设计输入。复杂的逻辑功能可以用HDL描述,如底层模块的设计;简单的连接关系和接口关系可以用电路图描述,如底层模块的设计[12]。 2.8.2 设计实现 设计实现是FPGA开发系统的核心部分。这一阶段主要是利用FPGA开发系统软件进行各种编译,以完成三方面工作。 一是进行设计的逻辑简化、逻辑优化(Optimization)、合并(Merging)、逻辑分割(Partioning)。化简和优化是把逻辑描述转变为最合适在FPGA器件中实现的形式,合并是将层次化设计产生的多个文件合并为一个网表文件XNF。分割是把设计分为多个适用于FPGA器件内部的CLB和IOB资源实现的逻辑小块。 二是完成设计的布局(Placement)、布线(Routing)。布局是将已分割的逻辑小块放到FPGA器件内部逻辑资源的具体位置,并使它们易于连接,且连线最少。布线上利用FPGA器件的布线资源完成个功能块之间和反馈性信号的连接。 三是生成设计的数据文件,对FPGA来说是位数据流文件(Bit stream Generation)。分割、布局、布线一般自动进行,也可采用手工介入进行。如F1.5能够当检索设计输入文件,完成网表转换、逻辑映射(Mapping)、布局布线,以及产生FPGA配置数据等一系列步骤。对于要求较高的应用,用户可以手工介入,对设计实现过程实施不同程度的控制。如将指定的分割、布局及布线信息作为设计输入的一部分,以指导自动设计工具。设计阶段完成后应给出LCA逻辑块及连线的延时报告和XNF网表注释文件,产生可配置的数据流文件,以备下载[13]。 2.8.3 设计验证 设计验证主要是对电路进行仿真测试。仿真测试包括功能仿真和实时仿真。 功能仿真:假设信号通过每个逻辑门产生同样的延迟时间(0.1ns),而通过路径没有延时。这种仿真可测试系统功能是否满足设计要求。 实时仿真:是在布局布线后进行,它能按照所选器件的实际延迟时间进行模拟,主要用来验证系统的时序关系。 设计输入、设计实现和设计验证三个部分交替进行,最后得到完全满足设计要求的二进制文件,用该文件通过加载电缆或编程EPROM对FPGA加载,即可得到用户需要的专用集成电路芯[14]。 2.8.4 仿真软件MAX+PLUSⅡ简介 Altera公司的MAX+PLUSⅡ开发系统是一个完全集成化、易学易用的可编程逻辑设计环境,它可以在多种平台上运用。它所提供的灵活性和高效性是无可比拟的。其丰富的图形界面,辅之以完整的、可及时访问的在线文档,使我们能够轻松掌握和使用MAX+PLUSⅡ软件。MAX+PLUSⅡ软件支持各种HDL设计输入选项,如本文所用的Verilog HDL硬件描述语言,它允许设计人员添加自己认为有价值的宏函数。 MAX+PLUSⅡ系统的核心Compiler支持Altera公司的FLEX10K、FLEX8000、FLEX6 000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件系列,提供了商业界唯一真正与结构无关的可编程逻辑设计环境。 MAX+PLUSⅡ软件的设计输入方式有多种,主要包括原理图输入方式、文本输入方式、波形设计输入方式、层次设计输入方式和底层设计输入方式。 MAX+PLUSⅡ编译一个设计时,Compiler在设计文件中读取信息并产生编程文件和仿真文件,Message Processor(信息处理程序)可自动定位错误。设计校验过程包括设计仿真和定时分析,仿真起的作用是测试逻辑操作和设计功能的完备性;Timing Analyzer(定时分析程序)可分析设计的定时和延时情况[15]。 2.9 本章小结 本章介绍了EDA技术,VHDL硬件描述语言,FPGA的发展和特点以及MAX+PLUSⅡ软件。EDA技术是电子设计领域的一场革命,目前正处于高速发展阶段,每年都有新的EDA工具问世。EDA技术在仿真、时序分析、集成电路自动测试、高速印刷电路板设计及操作平台的扩展等方面都面临着新的、巨大的挑战,这些问题实际上也是新一代EDA技术未来发展的趋势。掌握这一先进技术,这不仅是提高设计效率的需要,更是在世界市场上生存、竞争与发展的需要。 第三章 基于FPGA的步进电机控制器设计 3.1 步进电机特点和固有参数及控制原理 步进电机是一种将电脉冲信号转换成相应的角位移的特殊电机,每改变一次通电状态,步进电机的转子就转动一步。目前大多数步进电机控制器需要主控制器发送时钟信号,并且要至少一个I/O口来辅助控制和监控步进电机的运行情况。在单片机或DSP的应用系统中,经常配合CPLD或者FPGA来实现特定的功能。 步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合对数字系统的控制。常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度 或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。出于制作成本考虑,本设计以永磁式步进电机为例。 3.1.1 步进电机的特点 步进电机区别于其他控制电机的最大特点是,通过输入脉冲信号来进行控制,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定[13]。步进电机在单单仅给予电压时,电机是不会动作的,必须透过脉波产生器提供位置(脉波数)、速度的脉波信号指令,以及驱动器驱动电流流过电机内部线圈、依顺序切换激磁相序的方式才能够让电机运转。所以欲使步进电机动作的必要系统组成有: a.脉冲产生器:给予角度(位置移动量)、动作速度及运转方向之脉冲信号的电机驱动指令。 b.步进驱动器:依控制器所投入的脉冲信号指令,提供电流来驱动步进电机动作。 c.步进电机:提供转矩动力输出来带动负载。 所以步进电机系统构成简单,不需要速度感应器(ENCODER、转速发电机)、位置传感器(SENSOR),即能依照脉冲产生器所输入的脉冲来做到速度及位置的控制。 步进电机还有着以下优点: (1)高精度的定位: 步进电机最大特征即是能够简单的做到高精度的定位控制。以5相步进电机为例:其定位基本单位(分辨率)为0.72°(全步级)/0.36°(半步级),是非常小的;停止定位精度误差皆在±3分(±0.05°)以内,且无累计误差,故可达到高精度的定位控制 (步进电机的定位精度是取决于电机本身的机械加工精度) 。 (2)位置及速度控制: 步进电机在输入脉冲信号时,可以依输入的脉冲数做固定角度的回转进而得到灵活的角度控制(位置控制),并可得到与该脉冲信号周波数(频率)成比例的回转速度。 (3)具定位保持力: 步进电机在停止状态下(无脉波信号输入时),仍具有激磁保持力,故即使不依靠机械式的剎车,也能做到停止位置的保持。 (4)动作灵敏: 步进电机因为加速性能优越,所以可做到瞬时起动、停止、正反转之快速、频繁的定位动作。 (5)开回路控制、不必依赖传感器定位: 步进电机的控制系统构成简单,不需要速度感应器(ENCODER、转速发电机)及位置传感器(SENSOR),就能以输入的脉波做速度及位置的控制。也因其属开回路控制,故最适合于短距离、高频度、高精度之定位控制的场合下使用。 (6)中低速时具备高转矩: 步进电机在中低速时具有较大的转矩,故能够较同级伺服电机提供更大的扭力输出。 (7)高信赖性: 使用步进电机装置与使用离合器、减速机及极限开关等其它装置相较,步进电机的故障及误动作少,所以在检查及保养时也较简单容易。 (8)小型、高功率: 步进电机体积小、扭力大,尽管于狭窄的空间内,仍可顺利做安装,并提供高转矩输出。 步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。  步进电动机以其显著的特点,在数字化制造时代发挥着重大的途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。 3.1.2 步进电机的固有参数 (1)电机固有步距角:它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为1.8°),这个步距角可以称之为‘电机固有步距角’,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 (2)步进电机的相数:是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°/0.72° 。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则‘相数’将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。 (3)保持转矩(HOLDING TORQUE):是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。 (4)步进电机外表允许的最高温度:步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。 3.1.3 步进电机的控制原理 步进电机是一种离散运动的装置,步进电机驱动器通过外加控制脉冲,并按环形分配器决定的分配方式,控制步进电机各相绕组的导通或截止,从而使电机产生步进运动[14]。步进电机的驱动电路根据控制信号工作,控制信号由各类控制器来产生。 3-1步进电机FPGA控制系统框图 3.2 步进电机控制系统的VHDL设计 应用VHDL语言进行电子设计,首先要了解基本的设计流程。在EDA解决方案中采用VHDL要经过的流程如图2所示。 图3-2 VHDL的设计流程 从图3-2可以看出,在分析系统指标后,就进入了设计阶段,首先是设计输入,可以采用的输入方式有VHDL语言、VHDL语言与逻辑图混合输入或采用逻辑图输入,这一步通常都使用芯片生产商提供的开发工具。接下来是对所输入的源文件进行编译,即HDL Synthesis。通常称为合成或逻辑合成,这一步通常由三个过程组成,分别是HDL语言合成(language synthesis或HDL compilation)、逻辑优化(optimization)、目标映射(technology mapping)[10]。逻辑功能调试也就是图中的功能仿真,这是在芯片装载程序前的功能仿真模拟,它仅仅验证逻辑的正确性。在一般的EDA解决方案中,这一步一般采用编写测试向量或加激励波形的方法,只能对逻辑的输出信号进行模拟,而对于一些重要的内部信号则无能为力了,一般还要经过时序模拟(timing simulatior)[16]。 对于这些步骤,一般均可借助由芯片生产商提供的开发软件完成。因此一定要在这里将各项功能都调试正确,接下来就是对芯片进行装载程序。最后是对装载的芯片进行系统调试以验证设计的正确性。如果其中哪一步出现错误,都要重复前面的步骤,直到最终产品调试通过。 3.2.1 步进电机控制系统的VHDL模块图 图3-3是VHDL设计的步进电机控制系统模块图:它由选择器,分频器,编码器,计数器,寄存器组成。 图3-3 步进电机控制系统模块图 3.2.2 步进电机速度控制系统VHDL程序设计说明 将电动机中的转子置于线圈所产生的磁场中,便会受到磁场的作用而产生与磁场方向一致的力,转子便开始转动,直到转子的磁场方向与线圈的磁场方向一致为止。如下图3-4所示: 图3-4 步进电机绕组 由A和B两组线圈电流方向的排列组合,最多可以产生8种磁场方向,分别是 00,450,1350,1800,2250,2700,3150。这些方向的电流列于表1中,有表1中可以知道。假设电动机的转子刻度原先在00的位置,想让其转到1800,就必须让端口信号依次由0001,0011,0010,0110到0100变化。但也可以让电动机直接到达1800。这就是激磁方式的不同。四相电动机可以分为3种激磁方式。 表1 四相步进电机的磁场方向和电流以及电压信号的关系 磁场方向 00 450 900 1350 1800 2250 2700 3150 电流方向A线圈B线圈 A(A’ A(A’ 0 A(A’ A(A’ A(A’ 0 A(A’ 0 B(B’ B(B’ B(B’ 0 B(B’ B(B’ B(B’ 端口信号B’A’BA 0001 0011 0010 0110 0100 1100 1000 1001 (1)1 —相激磁法:当目标角度是900的整数倍时,采用这种方法。例如要从00转到2700,只要让端口信号的顺序为0000,0001,0010,0100,1000即可。 (2)2 —相激磁法:当目标角度是450,1350,2250,3150时,可采用这种方法。例如要从00转到2250,只要让端口信号的顺序为0000,0011,0110,1100即可。 (3)1 — 2相混合激磁法。即完全按照表1所列的信号顺序。 3种不同的激磁法所用到的端口信号整理列于表2。 表2 四相步进电机3种不同激磁方式对应提供的端口信号(V表示被选择) 磁场方向 00 450 900 1350 1800 2250 2700 3150 端口信号B’A’BA 0001 0011 0010 0110 0100 1100 1000 1001 1—相激磁 V V V V 2—相激磁 V V V V 1—2相激磁 V V V V V V V V 表2所示的激磁顺序是逆时针方向的,若要让电动机顺时针转动,只要提供给转子的激磁信号顺序相反即可。对于其他更多相位的步进电机而言,其控制原理是相同的,只要找出所需的端口信号的顺序,就可以自由进行控制,以下是步进电机电路的VHDL模块程序说明。 3.2.3 ENTITY模块 系统输入信号: reset:系统内部自复位信号 dir:步进电机正反转的方向控制开关 clk:有FPGA内部提供的时钟信号 ini:赋初值的使能开关 maner:激磁方式的选择开关 babA[3:0]:输出信号 ENTITY模块的VHDL代码 entity step_motor is port (reset,stop:in STD_LOGIC; --系统复位信号 dir: in STD_LOGIC; --方向控制信号 clk: in STD_LOGIC; --系统时钟信号 ini: in STD_LOGIC; --初始化使能信号 maner,SD: in STD_LOGIC_VECTOR (1 downto 0); --激磁方式的择开关 SD: in STD_LOGIC_VECTOR (1 downto 0);--控制速度 badA: out STD_LOGIC_VECTOR (3 downto 0)); --步进电机状态输出 end step_motor; 3.2.4 ARCHITECTURE模块 结构体的VHDL代码如下 architecture stepmotor_arch of step_motor is signal count: INTEGER range 0 to 7; --计数器 signal cntInc: INTEGER range -2 to 2; --设定累加器所需的累(加/减)计数值 signal cc : integer range 0 to 3; signal cntIni: INTEGER range -1 to 0; --设定累加器所需的计数初值 signal clk0,CLK1,CLK2,CLK3,CLK4:std_logic;时钟信号,控制速度 signal div:STD_LOGIC_VECTOR(17 DOWNTO 0);计数器,用于分频 3.2.5 步进电机速度控制模块 该模块的主要功能是对步进电机速度的控制,根据所需速度进行速度的选择控制。原理是:输出信号端的数字脉冲输出频率越大,则步进电机转动的越快,对系统时针钟的分频,可以实现对频率的控制,从而达到对速度的控制。 步进电机速度控制模块的VHDL代码。 SD:process(clk,SD) begin if clk'event and clk='1' then div<=div+1; end if; CLK1<=DIV(16); CLK2<=DIV(17); CLK3<=DIV(14); CLK4<=DIV(15); CASE SD IS WHEN "00"=>CLK0<=CLK1; WHEN "01"=>CLK0<=CLK2; WHEN "10"=>CLK0<=CLK3; WHEN OTHERS=>CLK0<=CLK4; END CASE; end process; 3.2.6 步进电机方向设定电路模块 该模块的主要功能是设定步进电机的旋转方向(顺时针或逆时针),并设定在顺时针或逆时针转动时所需的初值与累加值。 步进电机方向设定电路模块的VHDL代码。 process(dir, maner) begin cc<=conv_integer(maner); if dir='0' then case cc is when 1 => -- 1-相激励 cntIni<=0; cntInc<=2; when 2 => -- 2-相激励 cntIni<=-1; cntInc<=2; when others=> -- 1-2相激励 cntIni<=0; cntInc<=1; end case; elsif dir='1' then case cc is when 1 => -- 1-相激励 cntIni<=0; cntInc<=-2; when 2 => -- 2-相激励 cntIni<=-1; cntInc<=-2; when others => -- 1-2相激励 cntIni<=0; cntInc<=-1; end case; --manner end if; end process; 程序说明: 当dir=0时,如果maner=1时,cntIni=0,cntInc=2;maner=2时,cntIni=-1,cntInc=2;maner等于其他值时,cntIni=0,cntInc=1。 当dir=1时,如果maner=1时,cntIni=0,cntInc=-2;maner=2时,cntIni=-1,cntInc=-2;maner等于其他值时,cntIni=0,cntInc=-1。 3.2.7 步进电机移动控制模块 该模块的主要功能是利用ini(赋初值的使能开关)将数值传到该模块中,并配合系统时钟(clk0)作为同步控制信号进行电机的步进移动控制。 步进电机移动控制模块的VHDL代码: counting_reset: process(reset,ini ,clk0) begin if reset='1' then count<=0; elsif clk0'event and clk0='1' then if ini='0' then count<=0+cntIni; else count <= count+cntInc; end if; end if; end process; 3.2.8 编码输出电路模块 该模块的主要功能是将count产生的数值经过编码并利用badA[3:0]输出连线信号将结果输出显示。详细的编码方式如表3所示: 表3 输出脉冲编码 计数器初值 count 0 1 2 3 4 5 6 7 端口badA 0001 0011 0010 0110 0100 1100 1000 1001 磁场方向 00 450 900 1350 1800 2250 2700 3150 编码输出电路模块VHDL代码。 badA <= "0000" when stop<='0' else "0001" when count=0 else "0011" when count=1 else "0010" when count=2 else "0110" when count=3 else "0100" when count=4 else "1100" when count=5 else "1000" when count=6 else "1001";-- when count>=7; end stepmotor_arch; 3.2.9 步进电机细分驱动的探索 驱动器细分后的主要优点为:完全消除了电机的低频振荡;提高了电机的输出转矩;提高了电机的分辨率。 如图3-5所示,将各个时刻细分电流波形所对应的数值存放于波形ROM中,波形ROM的地址由地址计数器产生。通过对地址计数器进行控制,可以改变步进电机的旋转方向、转动速度、工作\停止状态。FPGA产生的PWM信号控制各功率管驱动电路的导通和关断,其中PWM信号随ROM数据而变化,改变输出信号的占空比,达到限流及细分控制,最终使电机绕组呈现阶梯形变化,从而实现布局细分的目的。输出细分电流信号采用FPGA中LPM_ROM查表法,它是通过在不同地址单元内写入不同的PWM数据,用地址选择来实现不同通电方式下的可变步距细分。 图3-5步进电机细分驱动电路结构图 在线性电流的驱动下,步进电机转子的微步进是不均匀的,并呈现出明显的周期性波动。磁场的边界条件按齿槽情况呈周期性重复是导致微步距角周期性变化的根本原因。同时,不可避免的摩擦负载以及其他负载力矩的波动导致失调角出现不规则的小变动或小跳跃,也使微步距角曲线在周期性波动上出现不光滑的小锯齿形。 步进电机的电流矩角特性并非线性函数,而是近似于正弦函数。若使电流按线性规律上升或下降,必然会造成每一细分步的步距角不均匀,从而影响步距精度。若提高LPM_ROM数据精度,将数据提高到十六位,使输出的步进细分电流近似为正弦电流,这样不仅提高了步距精度,而且可以改善低频震荡。 3.3 步进电机控制系统的硬件实现电路 3.3.1 工作原理 由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专用设备。步进电机控制驱动器典型步进电机控制系统如图3-6所示。 控制器可以发出脉冲频率从几赫兹到几十千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列。环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输人端,以驱动步进电机的转动。环形分配器主要有两大类:一类是用计算机软件设计的方法实现环分器要求的功能,通常称软环形分配器。另一类是用硬件构成的环形分配器,通常称为硬环形分配器。在此设计中采用软环形分配器,它用编程应用软件的方法在FPGA上实现。功率放大器主要对环形分配器的较小输出信号进行放大,以达到驱动步进电机目的。功率放大器采用L298芯片实现。 图3-6 典型步进电机控制框图 3.3.2 硬件组成 本文所设计的步进电机控制驱动器的框图如图3-7所示。它有FPGA芯片(控制器),集成芯片L298(驱动器)和电动机组成: 图3-7 步进电机的控制框图 L298是SGS公司的产品, L298芯片是一种高压、大电流双全桥式驱动器,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机其设计是为接受标准TTL逻辑电平信号和驱动电感负载的,例如继电器、圆筒形线圈、直流电动机和步进电动机 具有两抑制输入来使器件不受输入信号影响。每桥的三级管的射极是连接在一起的,相应外接线端可用来连接外设传感电阻。可安置另一输入电源,使逻辑能在低电压下工作。L298有Mutiwatt15和PowerSO20两种封装,其封装图如图3-8(a),(b)所示: 图3-8(a) L298Mutiwatt15封装引脚图 Mutiwatt15封装的L298引脚1、15和PowerSO20封装的L298引脚2、19用法一样,分别为两个H桥的电流反馈脚,不用时可以直接接地。 Mutiwatt15封装的L298引脚2、3与PowerSO20封装的L298引脚4、5用法相同,为输出端,与对应输入端同逻辑,引脚4(VS)驱动电压,最小值须比输入的低电平电压高2.5v 。Mutiwatt15封装的L298引脚5、7与PowerSO20封装的L298引脚7、9用法相同,为输入端,TTL电平兼容 。Mutiwatt15封装的L298引脚6、11与PowerSO20封装的L298引脚8、14用法相同,为使能端,低电平禁止输出 。Mutiwatt15封装的L298引脚8与PowerSO20封装的L298引脚1、10、11、20,用法相同,为地(GND);Mutiwatt15封装的L298引脚9与PowerSO20封装的L298引脚12用法相同,Vss逻辑电源,4.5--7V 。Mutiwatt15封装的L298引脚10、12与PowerSO20封装的L298引脚13、15用法一样,为输入端;TTL电平兼容 。Mutiwatt15封装的L298引脚13、14与PowerSO20封装的L298引脚16、17用法相同,为输出端 。 图3-8(b) L298 PowerSO20封装引脚图 本文硬件电路采用Mutiwatt15封装的L298,其电路图如图3-9所示。 图3-9 步进电机控制电路图 这种方式结合的优点是,需要的元件很少,从而使得装配成本低,可靠性高和占空间少,将FPGA输出的脉冲信号直接放大。 3.4 本章小结 本章介绍了步进电机的特点和固有参数及控制原理,对VHDL设计的步进电机控制系统各个模块进行了分析,尝试探索了细分驱动,并且介绍了硬件实现电路。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。 第四章 仿真实验 本此设计的软件环境是MAX+PLUSⅡ。Altera公司的MAX+PLUSⅡ开发系统是一个完全集成化、易学易用的可编程逻辑设计环境,它可以在多种平台上运用。其基本操作流程包括: (1)建立工作库文件夹和编缉设计文件。 (2)建立工程、编译前的设置。编译前设置包括:所需要FPGA目标芯片选择(此项有可能在建立工程项目时已作),选择配置器件的工作方式,选择配置器件和编程方式,选择输出设置,选择目标器件闲置引脚状态等。 (3)全程编译。这一块负责对设计项目进行检错,逻辑综合、结构综合、输出结果的编辑配置以及时序分析,在这一过程中,将设计项目适配到FPGA/CPLD目标器中,同时产生多种用途的输出文件,如功能和时序信息文件,器件编成的目标文件等等。编译器首先检查出工程设计文件中可能错误的信息,供设计者排出。然后产生一个结构化的以网表文件表达的电路原理图文件。 (4)时序仿真。对工程编译后,必须对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。这一步骤适用大型设计,因为对于大型设计来说,在综合前对派代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。 (5)引脚锁定。根据硬件设计要求,查阅附录有关芯片引脚对照表,来确定引脚连接,即锁定引脚。 (6)配置文件下载。将编译产生的SOF格式配置文件配置进FPGA中[15]。 4.1 建立工作库文件夹和编辑设计文件 建立工作库目录,以便存储工程项目设计文件。 任何一项设计都是一项工程,都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。此文件夹将被EDA软件默认为工作库。 4.1.1 新建一个文件夹 打开计算机上的F盘,点击鼠标右键新建一个文件夹,在此取名为stepmoto,则路径为:F:\stepmoto。 4.1.2 编辑源程序 打开软件,选择菜单File→New选项。在New窗口中的Device Design Files子目录中选择编辑程序所用的语言类型,这里面包括AHDL File、Block Diagram/Schematic File、EDIF File、Verilog HDL File和VHDL File。如图4-1所示。 图4-1 选择编辑文件的语言类型 本次设计用到了VHDL File这种语言。单击VHDL File选项,在弹出的编辑窗口中输入VHDL程序如图4-2。 4.1.3 文件存盘 输入程序结束后进行存盘,选择第一步中新建的工程文件夹F:\stepmoto,把程序存储在此文件夹中并使文件名与程序中实体名一致,该程序实体名为Dec2,因此存储文件名为Dec2.vhd,如图4-3。当出现问句“Do you want to creat…”时,若单击“是”按钮,则直接进入创建工程流程。因为这里并非顶层设计,因此不能在此创建工程,单击“否”按钮。 图4-2 编写VHDL语言程序 图4-3 保存文件 按照同样方法完成CNT8、CNT24的程序设计。 4.2 原理图输入设计 本次设计无法由VHDL语言设计直接完成,只能通过VHDL语言完成模块设计,然后由原理图输入设计方法完成最终的步进电机控制器的电路结构图设计。 4.2.1 mif文件的设计 在设计控制器前,必须完成存放PWM波形的ROM存储器的设计,而在此之前还必须定制LPM_ROM初始化数据文件。QuartusII能接受的LPM_ROM中的初始化数据文件格式有两种:Memory Initialization File (.mif)格式和Hexadecimal (Intel-Formart) File (.hex)格式。 在QuartusII中选择ROM数据文件编辑窗,即选择菜单File→New命令,并在NEW窗口中单击Other files标签,然后选择Memory Initialization File选项,单击OK按钮后产生ROM数据文件大小选择窗,如图4-4。在此选择ROM的数据数Number为32,数据宽Word size取8位。单击OK按钮将出现如图4-5所示的空的mif数据 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 ,表格中的数据格式可以通过鼠标右键单击窗口边缘的地址数据弹出的窗口选择。将波形数据填入表中,如图4-6所示。然后选择菜单File→Save As命令,保存此数据文件,取名为PWM_1.mif。 图4-4 ROM设置窗 图4-5 新建mif数据表格 图4-6 输入波形数据 4.2.2 rom存储器的设计 打开原理图编辑窗。选择菜单File→New命令,在New窗口中的Device Design Files子目录中选择Block Diagram/Schematic File,点击OK按钮后弹出原理图编辑窗口。如图4-7,可以看到该编辑窗口左侧有一排工具栏,点击第三个按钮即进入模块选择Symbol窗口。如图4-8显示了一个lpm_rom模块。 在Symbol窗口左栏选择storage项下的LPM_ROM,如图4-8所示。 图4-7 电路图编辑窗 图4-8 模块选择窗口 点击OK则弹出如图4-9对话框,选择VHDL语言方式并输入ROM文件存放的路径和文件名:F:\stepmoto\rom3,单击Next按钮。 图4-9 LPM宏功能块设置 在如图4-10所示的对话框中选择地址线位宽和ROM中数据数分别为16和32;选择地址锁存控制信号inoclock。单击按钮后在弹出的如图4-12对话框中输入加载数据文件路径:F:\stepmoto\PMW_1.mif,单击Next完成rom3模块的定制。 图4-10 选择模块的数据线和地址线宽度 图4-11 选择地址锁存信号inclock 图4-12 给模块加载数据 图4-13 rom3设计完成 设计好的rom3模块如图4-14所示。 图4-14 设计好的rom3模块 按照相似的方法完成了BUSMUX模块的设计 图4-15 设计好的BUSMUX模块 4.3 创建工程 元器件都设计好了最终连成电路结构图。Dec2、CNT8、CNT24、cmp3都需要在建立工程后生成为工程元件。创建工程,令顶层文件设计stepmoto.bdf为工程。 4.3.1 打开建立新工程管理窗 选择菜单File→Save As命令,存储原理图为stepmoto.bdf。点击保存则弹出“Do you want to creat…”,单击“是”按钮,直接进入创建工程流程。如图4-16所示。 图4-16 创建工程 4.3.2 将设计文件加入工程 单击图4-16下方的Next按钮,在弹出的对话框中单击File栏的按钮,将与工程相关的所有VHDL文件加入进此工程 4.3.3 选择目标芯片 单击图4-17中的Next按钮,选择目标芯片。首先在Family栏选择芯片系列为Cyclone系列,然后在Available devices栏选择所需要的芯片型号EP1C3T144C8,这里EP1C3表示Cyclone系列及此器件的规模;T表示芯片的封装方式是TQFP封装;C8表示芯片的速度级别。如图4-18所示。 图4-18 选择执行器件 4.3.4 结束设置 单击图4-18中Next按钮后,即弹出工程设置统计窗口,上面列出了此项工程相关设置情况。最后单击Finish按钮,即已设定好此工程。如图4-19所示,从图上可以一下看清这个工程所有的信息:本次工程的工程名是stepmoto,顶层文件也是stepmoto,设计文件一共是6个,用到的目标芯片是Cyclone系列的,具体型号是EP1C3T144C8。 图4-19 创建工程结束 4.4利用VHDL文件及BDF文件生成元器件 4.4.1利用VHDL文件生成元器件 工程创建好了,用4.1节设计好的VHDL语言文件生成工程模块。 打开Dec2.vhd文件,点击菜单中File→Create/Update→Create Symbol Files for Current File命令,则生成图4-20所示Dec2模块。 按照同样的方法生成CNT8和CNT24模块。如图4-21。 此时再打开Symbol窗口可看到在Libraries下多出了Prioject文件,其中就有刚刚生成的Dec2、CNT8和CNT24模块。如图4-22。 图4-20 Dec2模块 图4-21 CNT8和CNT24模块 图4-22 生成模块后的Symbol窗口 4.4.2利用BDF文件生成元器件 电路图设计中还差一个cmp3元器件,需要用bdf文件生成。 新建一个BDF文件,定制一个lpm_compare0元件,如图4-23所示。 图4-23 定制lpm_compare0模块 在lpm_compare0的输入输出端接入输入信号输出信号,如图4-24。保存文件为cmp3.bdf后,点击File→Create/Update→Create Symbol Files for Current File命令,生成图4-25所示cmp3模块。 图4-24 cmp3内部电路结构 图4-25 cmp3模块 4.5电路图的整体设计 各元器件都已设计好,把电路图所需的所有模块、元器件调出来,在工程文件stepmoto.bdf中按照第三章的电路设计连成完整的电路图,如图4-26所示。 图4-26 步进电机控制器电路图 4.6 时序仿真 利用MAX+PLUSⅡ对由VHDL编写的主控制电路程序进行编译。程序编译时,应选取合适的器件,否则,仿真不能得到正确的序列信号输出。编译生成的配置文件经计算机并行通信口接到Altera专用编程电缆上,再接到器件的编程接口。程序经过编译、优化后,就要选择合适的目标芯片进行综合、管脚配置。利用应用软件提供的编程软件,即可对器件进行配置。这种方法的优点是配置方便、迅速,便于修改。选用优化效率和兼容性优秀的综合器对程序进行综合,将综合生成的文件由MAX+PLUSⅡ进行仿真。系统仿真时,设计的CLK周期应与器件的时延相适应,否则不能正确输出。当选取的器件为max7000s,进行逻辑仿真时,由波形图4-27可知用此方法设计的电路正确实现了控制脉冲信号的输出。 仿真结果: 图4-27 (a) 步进电机输出控制脉冲模块仿真(一二相激磁法) 如果maner=0(00)或3(11)时,电路使用一二相激磁法,则count的初值为0,每次加1,经过编码, 输出控制脉冲为3(0011),2(0010),6(0110),4(0100),C(1100),8(1000),9(1001)。仿真结果如图4-27 (a)所示。 图4-27(b) 步进电机输出控制脉冲模块仿真(一相激磁法) 如果maner=1(01),电路使用一相激磁法,则count的初值为0,每次加2,经过编码,输出控制脉冲为1(0001),2(0010),4(0100),8(1000)。仿真结果如图4-27(b)所示。 图4-27(c)步进电机输出控制脉冲模块仿真(二相激磁法) 如果maner=2(10),电路使用二相激磁法,则count的初值为7,每次加2,经过编码,输出控制脉冲为9(1001),3(0011),6(0110),C(1100). 仿真结果如图4-27(c)所示。 图4-27(d) 步进电机输出控制脉冲模块仿真(一二相激磁法) 如果maner=0(00)或3(11)时,电路使用一二相激磁法,则count的初值为7,每次减1,经过编码, 输出控制脉冲为9(1001),8(1000),C(1100),4(0100),6(0110),2(0010),3(0011)。仿真结果如图4-27(d)所示。 图4-27(e) 步进电机输出控制脉冲模块仿真(一相激磁法) 如果maner=1(01)时,电路使用一相激磁法,则count的初值为6,每次减2,经过编码, 输出控制脉冲为8(1000),4(0100),2(0010),1(0001)。仿真结果如图4-27(e)所示。 图4-27(f)步进电机输出控制脉冲模块仿真(二相激磁法) 如果maner=2(10)时,电路使用二相激磁法,则count的初值为7,每次减2,经过编码, 输出控制脉冲为9(1001),C(1100),6(0110),3(0011)。仿真结果如图4-27(f)所示。 综上所述,由上仿真结果知:当dir=0时,步进机正转。若maner=0或3时,输出信号badA的脉冲依次是“0001”,“0011”,“0010”,“0110”,“0100”, “1100”,“1000”,“1001”,则步进电机以一,二相混合激磁方式转动。若maner=1,则输出信号badA的脉冲依次是“0001”,“0010”,“0100”,“1000”, 则步进电机以一相激磁方式转动。若maner=2时则输出信号脉冲badA为“1001””””””, “0011”,“0110”,“1100”,则步进电机以二相激磁方式转动。 当dir=1则反转。Stop=0时,输出为0,电机停止转动。当maner=1时,对比上仿真结果知道输出的脉冲信号badA与dir=0时刚好相反,此时反转。 4.7 本章小结 本章详细介绍了使用软件MAX+PLUSⅡ编辑源程序、生成元器件、完成电路图设计、编译仿真的整个过程。本次设计最终取得了令人满意的结果。MAX+PLUSⅡ作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,将会受到越来越多的数字系统设计者的欢迎。 第五章 总结与展望 5.1 总结 本系统以FPGA为核心部件,根据步进电机的工作原理及细分原理、利用EDA技术实现了对步进电机的控制。在系统的设计过程中,充分发挥了MAX+PLUSⅡ软件编程的灵活方便。步进电机在半步、整步几种工作模式之间的切换较容易实现。设计的结合使用FPGA和L298控制步进电机控制器具有价格低、控制简单、工作可靠的特点,所以具有很高的推广价值和广阔的应用前景。本文创新点在于提出应用FPGA和L298集成电路构成步进电机控制驱动器,使之具有元件少,可靠性高、占空间少、装配成本低等优点。通过软件开发,可以简化电路和减少开发时间。 但步进电机转子的微步进是不均匀的,并呈现出明显的周期性波动,这是因为磁场的边界条件按齿槽情况呈周期性重复,从而导致微步距角周期性变化。同时,不可避免的摩擦负载以及其他负载力矩的波动导致失调角出现不规则的小变动或小跳跃,也使微步距角曲线在周期性波动上出现不光滑的小锯齿形。对于这一问题还有待于进一步的研究与优化。 5.2 展望 步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。 但是,步进电机按运行频率工作时,启动和停止都需要有一个缓慢的升频和降频的过程。启动时,可在启动频率之下启动步进电机,然后逐渐上升到运行频率;停止时,先将频率逐渐降低到启动频率以下才能停止。特别是负载转动惯性比较大时,该现象很明显以致严重地影响到细分步进转角的非线性和均匀旋转的控制。这就是现有细分技术方案不能达到超高分辨的根本原因。为解决这个问题,很多资料都曾经提出对细分电流进行修正的方法,但一直未见一个实用、统一的数学模型及可行的细分方案。步进电机驱动控制器的研究任重而道远。 第六章 致谢 从文献综述到开题报告,再到反反复复修改后毕业论文的完成,这些看似是煎熬对我却也是一种历练。至此论文完成之际,我首先要向我的指导老师黄石红教授表达诚挚的谢意。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,耐心的指导以及和蔼可亲的优秀品质深深地感染和激励着我。在整个毕业设计过程中,黄老师提出了宝贵的意见和建议,不辞辛劳地指导我电路的改进、文章的修改,才使我的论文获得全面改进,才使我的论文获得全面改进,顺利完稿,也使我在大学最后还能学到一些知识。 在此非常感谢和我一起在实验室工作的丁必勇同学,本课题从开始研究到最终完成都离不开丁必勇同学的鼓励与支持,感谢他长久以来对我的激励与帮助。同时,要向负责实验室的同学表示感谢,你们每天要早起去实验室开门,给了我们良好的环境进行毕业设计。 由于本人水平有限,论文中的有些理论的分析、公式的阐述、电路的搭建难免有疏漏和不足的地方,欢迎老师和专家们指正。 参考文献 [1] 潘松,王国栋.VHDL使用教程[M].电子科技出版社,2002. [2] 侯伯亨,顾新编. VHDL硬件描述语言及数字逻辑电路设计[M]. 西安:西安电子科技大学出版社,1999,(13). [3] 徐志军.CPLD/FPGA的开发与应用[M].北京:电子工业出版社, 2005.1. [4] 侯同强,刘和平. FPGA与CPLD器件的特点与应用[J]. 电子与自动化,2000,(2). [5] 王志华,邓仰东编著. 数字集成系统的结构化设计与高层次综合[M]. 北京:清华大学出版社2000. [6] 宋万杰,罗丰,吴顺君编著. CPLD技术及其应用[M]. 西安:西安电子科技大学出版社1999(7). [7] 刘昌华编著. 数字逻辑EDA设计与实践---MAX+PLUS与Quartus[M]. 北京:国防工业出版社,2006.8. [8] 王鸿钰. 步进电机控制技术入门[M]. 上海:同济大学出版社,1990. [9] 郑伟. 步进电机的计算机控制[J]. 韶关大学学报,1994 (4) :56-59. [10] 刘清. 一种控制步进电机转速的方法[J]. 微特电机,2004 (1) :34-36. [11] 黄文平. 浅谈步进电机的驱动[J]. 机床电器,2004 (5) :25-28. [12] 朱敏,李秀红.基于FPGA的集成式步进电机驱动器的研究[J].微计算机信息.2008年.第3-2期. [13] 辛元芳.QuartusⅡ仿真技术在教学中的应用[J].科技情报开发与经济.2007年.第32期 [14] 叶韦韦.步进电动机高精度细分方法及其控制系统[D].华南师范大学电信工程系,2002. [15] 邹道生.EDA技术在步进电机驱动中的应用[J].江西师范大学学报(自然科学版). 2006年,第4期. [16] 潘松,黄继业. EDA技术与VHDL[M].北京:清华大学出版社,2005. [17] 潘松,黄继业. EDA技术实用教程[M].第二版.北京:科学出版社,2005. [18] 林敏.VHDL数字系统设计与高层次综合[M].北京:电子工业出版社,2002年. [19] 金元郁,李勇,李园园.基于FPGA的步进电机控制器设计.单片机及嵌入式系统应用. [20] S.Poorani1,FPGA based fuzzy logic controller for electric vehicle[J],Journal of The Institution of Engineers, Singapore Vol. 45 Issue 5 2005 [21] Xilinx Co.,Spartan-3 FPGA Family: Complete Data Sheet,www.xilinx.com [22] K.C. Aw, S.Q. Xie and E. Haemmerle.A FPGA-based rapid prototyping approach for teaching of Mechatronics Engineering.Department of Mechanical Engineering, University of Auckland, New Zealand Mechatronics Volume 17, Issue 8, October 2007. [23] Daniel Carrica, Marcos A. Funes, Sergio A. González.Novel Stepper Motor Controller Based on FPGA Hardware Implementation[J].IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003. 附 录 源程序 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity step_motor is port (reset,stop:in STD_LOGIC; --系统复位信号 dir: in STD_LOGIC; --方向控制信号 clk: in STD_LOGIC; --系统时钟信号 ini: in STD_LOGIC; --初始化使能信号 maner,SD: in STD_LOGIC_VECTOR (1 downto 0); --激磁方式的选择开 关 badA: out STD_LOGIC_VECTOR (3 downto 0)); --步进电机状态输出 end step_motor; architecture stepmotor_arch of step_motor is signal count: INTEGER range 0 to 7; --计数器 signal cntInc: INTEGER range -2 to 2; --设定累加器所需的累(加/减)计数值 signal cc : integer range 0 to 3; signal cntIni: INTEGER range -1 to 0; --设定累加器所需的计数初值 signal clk0,CLK1,CLK2,CLK3,CLK4:std_logic; signal div:STD_LOGIC_VECTOR(17 DOWNTO 0); begin process(clk,SD) begin if clk'event and clk='1' then div<=div+1; end if; CLK1<=DIV(16); CLK2<=DIV(17); CLK3<=DIV(14); CLK4<=DIV(15); CASE SD IS WHEN "00"=>CLK0<=CLK1; WHEN "01"=>CLK0<=CLK2; WHEN "10"=>CLK0<=CLK3; WHEN OTHERS=>CLK0<=CLK4; END CASE; end process; process(dir, maner) begin cc<=conv_integer(maner); if dir='0' then case cc is when 1 => -- 1-相激励 cntIni<=0; cntInc<=2; when 2 => -- 2-相激励 cntIni<=-1; cntInc<=2; when others=> -- 1-2相激励 cntIni<=0; cntInc<=1; end case; elsif dir='1' then case cc is when 1 => -- 1-相激励 cntIni<=0; cntInc<=-2; when 2 => -- 2-相激励 cntIni<=-1; cntInc<=-2; when others => -- 1-2相激励 cntIni<=0; cntInc<=-1; end case; --manner end if; end process; counting_reset: process(reset,ini ,clk0) begin if reset='1' then count<=0; elsif clk0'event and clk0='1' then if ini='0' then count<=0+cntIni; else count <= count+cntInc; end if; end if; end process; badA <= "0000" when stop<='0' else "0001" when count=0 else "0011" when count=1 else "0010" when count=2 else "0110" when count=3 else "0100" when count=4 else "1100" when count=5 else "1000" when count=6 else "1001";-- when count>=7; end stepmotor_arch; module fenpin(clk_50m,reset,out_door,addr,data,E,rd,rw,Grating_a,Grating_b,lock); input clk_50m,reset,rd,rw,Grating_a,Grating_b,lock,E; input [4:0]addr; output out_door; inout [7:0]data; //主频,复位,读、写控制,光栅输入a、b,锁存信号,使能 //地址线 //输出 //双向IO; wire clk_1m; //1M信号 wire clk_1k; //1K信号 reg [8:0]clk_div=0; reg [16:0]clk_div_main=0; //主状态机频率寄存器 reg FLAG; //步数标志,达到要求步数后为0,未达到为1 reg counter_en,pul_counter_en,pul_clr; //counter,pul_counter使能、清0信号 reg[23:0] pul_counter=0,pul_counter_lock; //步数寄存器和步数寄存器的锁存器 reg[23:0] F_INI,F_WANT,F_END; //初始、稳态、停止时的分频值 reg[15:0] ACC,DEC; //加速、减速值 reg [15:0]STEP_END; reg [23:0]STEP; //减速,总步数 reg [23:0]counter; //分频用计数器 reg[23:0] counter_now,counter_now_lock; //当前分品值及其锁存器 reg[23:0] Grating_counter,Grating_counter_lock; //光栅计数器及其锁存器 reg [7:0]COM; //命令寄存器 reg [7:0]databuff; //8位输出寄存器 reg data_link; //IO端口方向选择 reg out=0; //频率输出 reg direct; //光栅方向 reg [2:0]state=0; //FPGA状态寄存器 parameter S0=5'b000, //起始状态 S1=5'b001, //加速状态 S2=5'b010, //稳定状态 S3=5'b011, //减速状态 S4=5'b100, //停止状态 S5=5'b101, S6=5'b110, S7=5'b111; assign data=(data_link)?databuff:8'bzzzzzzzz; //datalink控制IO方向,1时与databuff连接,为输出,0时高阻态,为输入 assign out_door=out&FLAG; //FLAG控制是否有频率输出 assign clk_1k=(clk_div_main==16'hc350); //状态机频率合成 assign clk_1m=(clk_div==8'h32); //1M频率合成 /*1M分频,与主状态机分频*/ always @(posedge clk_50m) begin if(clk_div==8'h32) clk_div=1; else clk_div=clk_div+1; end always @(posedge clk_50m) begin if(clk_div_main==16'hc350) clk_div_main=1; else clk_div_main=clk_div_main+1; end /*主状态机*/ always @(posedge clk_1k) begin if(!reset&E) //同步复位 begin counter_now<=24'hffffff; state<=S0; FLAG<=1; counter_en<=0; pul_counter_en<=0; pul_clr<=0; end else case(state) S0:begin if(COM==8'b0000_0001) begin state<=S1; counter_now<=F_INI; counter_en<=1; pul_counter_en<=1; pul_clr<=1; counter_clr<=1; end else state<=S0; end S1:begin if(COM[7:0]==8'b0000_0010) begin state<=S4; end else if(pul_counter>=STEP-{16'h0000,STEP_END}) state<=S4; else if(counter_nowF_WANT) begin counter_now<=counter_now-{8'h00,ACC}; state<=S1; end else begin state<=S2; counter_now<=F_WANT; end end S2:begin if(COM==8'b0000_0010) begin state<=S4; end else if(pul_counter>=STEP) state<=S4; else if(counter_now>F_WANT) begin state<=S5; end else if(counter_now=STEP-{8'h00,STEP_END}) state<=S3; else state<=S2; end S3:begin if(pul_counter=STEP) begin state<=S7; pul_counter_en<=0; counter_now<=F_END; end else if(counter_nowF_WANT) begin counter_now<=counter_now-{16'h0000,ACC}; state<=S5; end else begin state<=S2; counter_now<=F_WANT; end end S6: begin if(counter_now=counter_now) begin counter<=1; out=~out; end else begin counter<=counter+1; end end else begin end end /*输出计数模块*/ always @ (posedge out_door or negedge pul_clr) begin if(!pul_clr) begin pul_counter<=0; //异步复位 end else if(pul_counter_en) pul_counter<=pul_counter+1; else begin end //输出计数 end /*光栅计数模块*/ always@(posedge Grating_a) if(Grating_b==1) direct=1; else direct=0; always@(posedge Grating_a) begin if(!reset&E) Grating_counter<=0; else if(direct==1) Grating_counter<=Grating_counter+1; else Grating_counter<=Grating_counter-1; end /*IO端口方向控制,rd为1、rw为0时为出入,反之为输出*/ always @(posedge clk_50m) begin if(rd) data_link<=1'b0; else if(rw) data_link<=1'b1; else begin end end /*输入模块,E为使能信号*/ always @( posedge clk_1m ) begin if(!reset&E) begin F_INI<=0; F_WANT<=0; F_END<=0; STEP<=0; STEP_END<=0; ACC<=0; DEC<=0; COM<=0; //复位,各寄存器清0 end else if(!data_link&rd&E) case(addr) 5'b00000 : F_INI[7:0]<= data; 5'b00001 : F_INI[15:8]<= data; 5'b00010 : F_INI[23:16]<=data; 5'b00011 : F_WANT[7:0]<= data; 5'b00100 : F_WANT[15:8]<= data; 5'b00101 : F_WANT[23:16]<=data; 5'b00110 : F_END[7:0]<= data; 5'b00111 : F_END[15:8]<= data; 5'b01000 : F_END[23:16]<=data; 5'b01001 : STEP[7:0]<=data; 5'b01010 : STEP[15:8]<=data; 5'b01011 : STEP[23:16]<=data; 5'b01100 : STEP_END[7:0]<=data; 5'b10010 : STEP_END[15:8]<=data; 5'b01101 : ACC[7:0]<=data; 5'b01110 : ACC[15:0]<=data; 5'b01111 : DEC[7:0]<=data; 5'b10000 : DEC[15:0]<=data; 5'b10001 : COM[7:0]<=data; //addr为地址线,供16个寄存器 endcase end /*锁存模块,lock为1时锁存寄存器数据*/ always @ (posedge clk_1m) begin if(!reset&E) begin pul_counter_lock[23:0]<=0; counter_now_lock[23:0]<=0; Grating_counter_lock[23:0]<=0; end else if(lock) begin pul_counter_lock<=pul_counter; counter_now_lock<=counter_now; Grating_counter_lock<=Grating_counter; end else begin end end /*输出模块*/ always @(posedge clk_1m) begin if(!reset&E) begin databuff<=0; end else if(data_link&rw&E) case(addr) 5'b00000:databuff<=pul_counter_lock[23:16]; 5'b00001:databuff<=pul_counter_lock[15:8]; 5'b00010:databuff<=pul_counter_lock[7:0]; 5'b00011:databuff<=counter_now_lock[23:16]; 5'b00100:databuff<=counter_now_lock[15:8]; 5'b00101:databuff<=counter_now_lock[7:0]; 5'b00110:databuff<=Grating_counter_lock[23:16]; 5'b00111:databuff<=Grating_counter_lock[15:8]; 5'b01000:databuff<=Grating_counter_lock[7:0]; endcase else begin end end endmodule 元件CNT8 LIBRARY IEEE; -- 8进制计数器 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT8 IS PORT ( CLK : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CNT8; ARCHITECTURE behav OF CNT8 IS SIGNAL CQI : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN CQI <= CQI + 1; END IF; END PROCESS; CQ <= CQI(4 DOWNTO 1); END behav; 元件DEC2 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY Dec2 IS PORT ( CLK : IN STD_LOGIC; A : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; D : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ; ARCHITECTURE one OF Dec2 IS SIGNAL CQ : STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN PROCESS( CQ ) BEGIN CASE CQ IS WHEN "00" => D <= "1001" ; WHEN "01" => D <= "1100" ; WHEN "10" => D <= "0110" ; WHEN "11" => D <= "0011" ; WHEN OTHERS => NULL ; END CASE ; END PROCESS ; PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN CQ <= A; END IF; END PROCESS; END ; 元件CNT24 LIBRARY IEEE; -- 24进制计数器 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT24 IS PORT ( CLK,EN, U_D : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(4 DOWNTO 0)); END CNT24; ARCHITECTURE behav OF CNT24 IS SIGNAL CQI : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS(CLK, EN, U_D) BEGIN IF EN = '1' THEN CQI <= CQI; ELSIF CLK'EVENT AND CLK = '1' THEN IF U_D = '1' THEN CQI <= CQI + 1; ELSE CQI<= CQI-1; END IF; END IF; END PROCESS; CQ(4 DOWNTO 0) <= CQI; END behav; 5位地址线ROM3中的数据: pwm_1.mif WIDTH = 16; DEPTH = 32; ADDRESS_RADIX = HEX; DATA_RADIX = HEX; CONTENT BEGIN 0:f000; 1:f600; 2:f900; 3:fc00; 4:ff00; 5:cf00; 6:9f00; 7:6f00; 8:0f00; 9:0f60; a:0f90; b:0fc0; c:0ff0; d:0cf0; e:0af0; f:06f0; 10:00f0; 11:00f6; 12:00f9;13:00fc; 14:00ff; 15:00cf; 16:009f; 17:006f; 18:000f; 19:600f; 1a:900f;1b:c00f; 1c:f00f; 1d:f00c; 1e:f009; 1f:f006; END; 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 指导教师评阅书 指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、学生掌握专业知识、技能的扎实程度 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 □ 优 □ 良 □ 中 □ 及格 □ 不及格 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 □ 优 □ 良 □ 中 □ 及格 □ 不及格 5、完成毕业论文(设计)期间的出勤情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 指导教师: (签名) 单位: (盖章) 年 月 日 评阅教师评阅书 评阅教师评价: 一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 评阅教师: (签名) 单位: (盖章) 年 月 日 教研室(或答辩小组)及教学系意见 教研室(或答辩小组)评价: 一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、对答辩问题的反应、理解、表达情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生答辩过程中的精神状态 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 评定成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 教研室主任(或答辩小组组长): (签名) 年 月 日 教学系意见: 系主任: (签名) 年 月 日 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。 学位论文作者(本人签名): 年 月 日 学位论文出版授权书 本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。 论文密级: □公开 □保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ) 作者签名:_______ 导师签名:_______ _______年_____月_____日 _______年_____月_____日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 二〇一〇年九月二十日   毕业设计(论文)使用授权声明 本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 二〇一〇年九月二十日 致 谢 时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。 首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。 首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。 其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。 另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。 最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。 四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。 回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。 学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。 在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。 最后,我要特别感谢我的导师***老师、和研究生助教***老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。 致 谢 这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。 通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。 即将结束*大学习生活,我感谢****大学提供了一次在农大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 年 月 日   毕业设计(论文)使用授权声明 本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 年 月 日 基本要求:写毕业论文主要目的是培养学生综合运用所学知识和技能,理论联系实际,独立分析,解决实际问题的能力,使学生得到从事本专业工作和进行相关的基本训练。毕业论文应反映出作者能够准确地掌握所学的专业基础知识,基本学会综合运用所学知识进行科学研究的方法,对所研究的题目有一定的心得体会,论文题目的范围不宜过宽,一般选择本学科某一重要问题的一个侧面。 毕业论文的基本教学要求是: 1、培养学生综合运用、巩固与扩展所学的基础理论和专业知识,培养学生独立分析、解决实际问题能力、培养学生处理数据和信息的能力。2、培养学生正确的理论联系实际的工作作风,严肃认真的科学态度。3、培养学生进行社会调查研究;文献资料收集、阅读和整理、使用;提出论点、综合论证、总结写作等基本技能。 毕业论文是毕业生总结性的独立作业,是学生运用在校学习的基本知识和基础理论,去分析、解决一两个实际问题的实践锻炼过程,也是学生在校学习期间学习成果的综合性总结,是整个教学活动中不可缺少的重要环节。撰写毕业论文对于培养学生初步的科学研究能力,提高其综合运用所学知识分析问题、解决问题能力有着重要意义。 毕业论文在进行编写的过程中,需要经过开题报告、论文编写、论文上交评定、论文答辩以及论文评分五个过程,其中开题报告是论文进行的最重要的一个过程,也是论文能否进行的一个重要指标。 撰写意义:1.撰写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。大学生在毕业前都必须完成毕业论文的撰写任务。申请学位必须提交相应的学位论文,经答辩通过后,方可取得学位。可以这么说,毕业论文是结束大学学习生活走向社会的一个中介和桥梁。毕业论文是大学生才华的第一次显露,是向祖国和人民所交的一份有份量的答卷,是投身社会主义现代化建设事业的报到书。一篇毕业论文虽然不能全面地反映出一个人的才华,也不一定能对社会直接带来巨大的效益,对专业产生开拓性的影响。但是,实践证明,撰写毕业论文是提高教学质量的重要环节,是保证出好人才的重要措施。 2.通过撰写毕业论文,提高写作水平是干部队伍“四化”建设的需要。党中央要求,为了适应现代化建设的需要,领导班子成员应当逐步实现“革命化、年轻化、知识化、专业化”。这个“四化”的要求,也包含了对干部写作能力和写作水平的要求。 3.提高大学生的写作水平是社会主义物质文明和精神文明建设的需要。在新的历史时期,无论是提高全族的科学文化水平,掌握现代科技知识和科学管理方法,还是培养社会主义新人,都要求我们的干部具有较高的写作能力。在经济建设中,作为领导人员和机关的办事人员,要写指示、通知、总结、调查报告等应用文;要写说明书、广告、解说词等说明文;还要写科学论文、经济评论等议论文。在当今信息社会中,信息对于加快经济发展速度,取得良好的经济效益发挥着愈来愈大的作用。写作是以语言文字为信号,是传达信息的方式。信息的来源、信息的收集、信息的储存、整理、传播等等都离不开写作。 论文种类:毕业论文是学术论文的一种形式,为了进一步探讨和掌握毕业论文的写作规律和特点,需要对毕业论文进行分类。由于毕业论文本身的内容和性质不同,研究领域、对象、方法、表现方式不同,因此,毕业论文就有不同的分类方法。 按内容性质和研究方法的不同可以把毕业论文分为理论性论文、实验性论文、描述性论文和设计性论文。后三种论文主要是理工科大学生可以选择的论文形式,这里不作介绍。文科大学生一般写的是理论性论文。理论性论文具体又可分成两种:一种是以纯粹的抽象理论为研究对象,研究方法是严密的理论推导和数学运算,有的也涉及实验与观测,用以验证论点的正确性。另一种是以对客观事物和现象的调查、考察所得观测资料以及有关文献资料数据为研究对象,研究方法是对有关资料进行分析、综合、概括、抽象,通过归纳、演绎、类比,提出某种新的理论和新的见解。 按议论的性质不同可以把毕业论文分为立论文和驳论文。立论性的毕业论文是指从正面阐述论证自己的观点和主张。一篇论文侧重于以立论为主,就属于立论性论文。立论文要求论点鲜明,论据充分,论证严密,以理和事实服人。驳论性毕业论文是指通过反驳别人的论点来树立自己的论点和主张。如果毕业论文侧重于以驳论为主,批驳某些错误的观点、见解、理论,就属于驳论性毕业论文。驳论文除按立论文对论点、论据、论证的要求以外,还要求针锋相对,据理力争。 按研究问题的大小不同可以把毕业论文分为宏观论文和微观论文。凡届国家全局性、带有普遍性并对局部工作有一定指导意义的论文,称为宏观论文。它研究的面比较宽广,具有较大范围的影响。反之,研究局部性、具体问题的论文,是微观论文。它对具体工作有指导意义,影响的面窄一些。 另外还有一种综合型的分类方法,即把毕业论文分为专题型、论辩型、综述型和综合型四大类: 1.专题型论文。这是分析前人研究成果的基础上,以直接论述的形式发表见解,从正面提出某学科中某一学术问题的一种论文。如本书第十二章例文中的《浅析领导者突出工作重点的方法与艺术》一文,从正面论述了突出重点的工作方法的意义、方法和原则,它表明了作者对突出工作重点方法的肯定和理解。2.论辩型论文。这是针对他人在某学科中某一学术问题的见解,凭借充分的论据,着重揭露其不足或错误之处,通过论辩形式来发表见解的一种论文。3.综述型论文。这是在归纳、总结前人或今人对某学科中某一学术问题已有研究成果的基础上,加以介绍或评论,从而发表自己见解的一种论文。4.综合型论文。这是一种将综述型和论辩型两种形式有机结合起来写成的一种论文。如《关于中国民族关系史上的几个问题》一文既介绍了研究民族关系史的现状,又提出了几个值得研究的问题。因此,它是一篇综合型的论文。 写作步骤:毕业论文是高等教育自学考试本科专业应考者完成本科阶段学业的最后一个环节,它是应考者的 总结 性独立作业,目的在于总结学习专业的成果,培养综合运用所学知识解决实际 问题 的能力。从文体而言,它也是对某一专业领域的现实问题或 理论 问题进行 科学 研究 探索的具有一定意义的论说文。完成毕业论文的撰写可以分两个步骤,即选择课题和研究课题。 首先是选择课题。选题是论文撰写成败的关键。因为,选题是毕业论文撰写的第一步,它实际上就是确定“写什么”的问题,亦即确定科学研究的方向。如果“写什么”不明确,“怎么写”就无从谈起。 教育部自学考试办公室有关对毕业论文选题的途径和要求是“为鼓励理论与工作实践结合,应考者可结合本单位或本人从事的工作提出论文题目,报主考学校审查同意后确立。也可由主考学校公布论文题目,由应考者选择。毕业论文的总体要求应与普通全日制高等学校相一致,做到通过论文写作和答辩考核,检验应考者综合运用专业知识的能力”。但不管考生是自己任意选择课题,还是在主考院校公布的指定课题中选择课题,都要坚持选择有科学价值和现实意义的、切实可行的课题。选好课题是毕业论文成功的一半。 第一、要坚持选择有科学价值和现实意义的课题。科学研究的目的是为了更好地认识世界、改造世界,以推动社会的不断进步和发展 。因此,毕业论文的选题,必须紧密结合社会主义物质文明和精神文明建设的需要,以促进科学事业发展和解决现实存在问题作为出发点和落脚点。选题要符合科学研究的正确方向,要具有新颖性,有创新、有理论价值和现实的指导意义或推动作用,一项毫无意义的研究,即使花很大的精力,表达再完善,也将没有丝毫价值。具体地说,考生可从以下三个方面来选题。首先,要从现实的弊端中选题,学习了专业知识,不能仅停留在书本上和理论上,还要下一番功夫,理论联系实际,用已掌握的专业知识,去寻找和解决工作实践中急待解决的问题。其次,要从寻找科学研究的空白处和边缘领域中选题,科学研究。还有许多没有被开垦的处女地,还有许多缺陷和空白,这些都需要填补。应考者应有独特的眼光和超前的意识去思索,去发现,去研究。最后,要从寻找前人研究的不足处和错误处选题,在前人已提出来的研究课题中,许多虽已有初步的研究成果,但随着社会的不断发展,还有待于丰富、完整和发展,这种补充性或纠正性的研究课题,也是有科学价值和现实指导意义的。 第二、要根据自己的能力选择切实可行的课题。毕业论文的写作是一种创造性劳动,不但要有考生个人的见解和主张,同时还需要具备一定的客观条件。由于考生个人的主观、客观条件都是各不相同的,因此在选题时,还应结合自己的特长、兴趣及所具备的客观条件来选题。具体地说,考生可从以下三个方面来综合考虑。首先,要有充足的资料来源。“巧妇难为无米之炊”,在缺少资料的情况下,是很难写出高质量的论文的。选择一个具有丰富资料来源的课题,对课题深入研究与开展很有帮助。其次,要有浓厚的研究兴趣,选择自己感兴趣的课题,可以激发自己研究的热情,调动自己的主动性和积极性,能够以专心、细心、恒心和耐心的积极心态去完成。最后,要能结合发挥自己的业务专长,每个考生无论能力水平高低,工作岗位如何,都有自己的业务专长,选择那些能结合自己工作、发挥自己业务专长的课题,对顺利完成课题的研究大有益处。 致 谢 这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。 通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。 即将结束*大学习生活,我感谢****大学提供了一次在**大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。 最终产品 系统调试 装载芯片 时序分析 功能仿真 编译 设计输入 (VHDL/VHD与电路图混合) 设计完成 硬件测试 结构综合 门级时序仿真 功能仿真 测试向量生成 前端功能仿真 逻辑综合 VHDL-RTL级建模 VHDL行为仿真 设计说明书 建立VHDL行为模型 系统指标 VII _1234567894.vsd 控制器 驱动器 步进电机 _1234567897.vsd � � reset stop dir clk ini Maner[1..0] Sd[1..0] badA0 badA1 badA2 badA3 FPGA IN1 IN2 IN3 IN4 GND ENA ENB ISENA ISENB OUT1 OUT2 OUT3 OUT4 VCC5V VCC VSS VCC 12V VCC 5V L298 步进机 _1234567893.vsd 控制器 环形分配器 功率放大器 步进电机 辅助电路
本文档为【基于FPGA的步进电机控制器毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
不系舟红枫
从教近30年,经验丰富,教学水平较高
格式:doc
大小:1MB
软件:Word
页数:0
分类:工学
上传时间:2019-01-23
浏览量:28