版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.z.---.可修编.本科毕业设计论文基于FPGA的直流电机控制系统研制学生**:*明达班级:电自113学号:0901011022指导教师:*晓峰所在单位:电气工程学院答辩日期:2015年6月28日-.z.摘要EDA技术具有很强的实践性,在学习过程中必须加强实际动手能力的训练,将书本上介绍的理论知识与实际应用相结合,从丰富多样的实验操作中增加实践经验,从应用实例中学习和模仿编程方法,可以获得事半功倍的效果。直流电机具有速度控制容易,启、制动性能良好等优点,本文利用了PWM(脉宽调制)调速方法。本课题介绍了利用FPGA对直流电机实现控制的方法及其电路设计,直流电机转速控制器,锯齿波发生器,PMW波形发生器,来实现对直流电机的控制。采用VHDL语言对FPGA进行编程,将直流电机转速控制器和锯齿波发生器的值进行比较,从而实现对直流电机速度以及旋转方向精确灵活的控制。关键词:FPGA,直流电机,VHDL,QuartusⅡAbstractThetechnologyofEDAhastheverystrongpracticality,wemuststrengthenthecapacityoftheactualhands-traininginthelearningprocess,wemustputtheknowledgewehavelearnedfromthebooksintoapplication,thenwecanaccumulatemuche*periencefromvariousoperations,wecanalsolearnhowtoprogramandimitateit.Thiscanbesuppressedeffectively.DCmotorshavemanyadvantages,suchaseasyspeedcontrollingandgoodstartingandbrakingperformance.ThisarticleintroduceshowtouseFPGAtocontroltheDCmotorsanddesignelectriccircuit,wecancontroltheDCmotorsthroughDCmotorspeedcontroller,sawtoothgeneratorandPMWwaveformgenerator.WeuseVHDLforFPGAprogramming,WeparethevalueoftheDCmotorspeedcontrollerandsawtoothgeneratorsothatwecancontrolthespeedofDCmotorandtherotationdirectionaccuratelyandfle*ibly.Keywords:FPGA,DCMotor,VHDL,QuartusII目录摘要IAbstractII第1章绪论11.1课题研究背景及意义11.2课题研究现状11.3本课题所做的工作1第2章EDA技术及VHDL描述语言32.1EDA的发展历程32.1.1EDA的起源32.1.2EDA发展史及其主要内容.32.2FPGA简介42.2.1FPGA的开发与配置52.2.2FPGA优点及FPGA/CPLD的选择52.3VHDL简介62.3.1VHDL的特点7第3章直流电机控制方案概述和对比83.1直流电机控制概述83.1.1直流电机控制方案对比83.1.2FPGA为核心器件的直流电机控制的系统构成9第4章基于VHDL的硬件模块设计104.1基于FPGA的直流电机PWM控制104.2实现系统控制的各模块114.2.1直流电机转速控制器(binary_up_down_counter)114.2.2锯齿波发生器(binary_counter)154.2.3PMW波形发生器(CMP)164.3直流电机工作时序分析21第5章液晶图文显示225.1LCD液晶显示225.5.1OCMJ液晶显示器225.5.2模块管脚说明225.2液晶图文显示23结论27致谢28参考文献29附录1:原理图30附录2:液晶显示部分实物图31第1章绪论1.1课题研究背景及意义电动机作为机电能量转换装置,一直在现代化的生产和生活中起着十分重要的作用[1]。直流电机由于具有速度控制容易,启、制动性能良好,且在宽*围内平滑调速等特点而在冶金、制造、轻工等工业部门中得到广泛应用。由于现今集成电路、现代电力电子技术、控制理论的飞快发展,如今电机控制技术已经得到普及,已经由过去的提供动力为目的转变为可以对电机进行精确管制。通常应用ALTERA公司的现场可编程门阵列(FPGA)芯片来进行对电机控制器的设计、制造和调试且在此基础上来分析研究应用控制器对直流电机来进行调度控制的方法。1.2课题研究现状近几年来,由于微电子技术与计算机技术的飞速发展及单片机的普及,将调速装置向密集化、小型化和智能化方向发展。国外交直流系统数字化已经达到实用阶段。由微处理器为技术核心的数字控制系统硬件电路的标准化程度高,需要成本低,并不受器件的温度漂移所引起的影响。数字控制系统能够有效的进行逻辑判断和复杂的运算,能做到不同于一般线性调节的最优化、适应性、非线性、智能化等控制规律。如采用微机控制产生PWM信号。用微机或单片机产生PWM信号波形,需要通过D/A转换器产生锯齿波电压和设置参考电压,通过外接模拟比较器输出PWM波形,因此外围电路比较复杂[2]。单片机,虽然DSP具备生成PWM信号及捕获电机编码器信号的能力,但其对IC生成PWM信号的通道数目及电机编码器捕获通道数目有限。对多个直流电机的控制很难满足要求。基于现场可编程门阵列FPGA对直流电机的控制策略,为实现电动机数字控制提供了一种有效的方法[3]。FPGA器件具有集成度高、体积小、运算速度快、易于修改等特点。用FPGA来实现多路PWM调控,内部自带数模变换功能,不再需要外接数模转换设备,形式简单,误差小、控制性能强。用单片机和DSP的控制都难以达到同样的控制效果。1.3本课题所做的工作FPGA的开发语言(VHDL语言)是一种用于数字系统设计和测试的硬件描述语言,也是我们国家极力推广的一种标准语言。本课题采用VHDL语言编程,利用Altera公司的QuartusII开发平台创建成调速系统所需的各个特殊功能“器件”。通过设计工具QuartusⅡ对设计进行综合、适配与时序仿真,利用FPGA器件—EP1K30实现对PMW占空比的调节,从而达到对直流电机控制系统的设计[4]。具体工作如下:1.掌握VHDL硬件编程语言;2.掌握Altera公司推出的集成仿真工具QuartusII6.0的使用方法;3.利用VHDL硬件编程语言设计直流电机系分驱动控制模块工程项目;4.以EP1K30TC144-3器件为核心制作可实际运行的直流电机系分驱动控制硬件电路。第2章EDA技术及VHDL描述语言2.1EDA的发展历程EDA的起源EDA是电子设计自动化(ElectronicDesignAutomation)缩写,是1965年结合了CAD、CAM、CAT和CAE的理念,并将其完善得到的。EDA技术是以计算机为工具,根据硬件描述语言HDL(HardwareDescriptionlanguage)完成的设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合及优化、布局布线和仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对*个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件[4]。综合器在工作前,要给定所要实现的硬件结构参数,其功能就是将软件描述和所给定的硬件结构用一定的方式联系起来。也就是,综合器要在软件描述与硬件实现间搭一座桥梁。综合过程就是要将电路的高级语言描述转换成低级的、可与目标器件FPGA/CPLD相映射的网表文件。2.1.2EDA发展史及其主要内容.人类已步入高度发达的信息化社会,信息化社会的发展永远离不开电子产品的进步。虽然电子产品的功能越来越强大,制作工艺也愈加繁琐,可其价格却只低不高,同时电子产品的淘汰速度逐年加开,淘汰率也逐年增大,导致上述现象的因素很多,但之所以有这样飞跃性的发展,要归功于电子设计技术的日益发达。电子设计技术当中应用最广泛的便是EDA。EDA可以对以下三种设计进行辅助:IC设计电子电路设计PCB设计在EDA没有被研发成功时,要实现超大规模集成电路的设计制造是不可能的,同时,怎样完善EDA来适应发展愈发快速的电子设计工业,是一个值得探讨的问题。EDA技术有三个发展阶段:(1)第一个阶段为CAD的应用,在这个阶段以前,人们对于版图设计,布局等工作只能手工完成。而在这之后,人们开始利用计算机对其进行辅助工作。这个时期的主要存在两个问题,即:EDA软件的功能单一,相互独立;对相对复杂的电子系统设计,不能提供系统级的仿真和综合,所以在设计中错误只能在产品开发的后期才能发现,这时想要修正是十分困难的。(2)八十年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并通过电气连接网络表将两者结合于一起,实现了工程设计,这就是计算机辅助工程的概念。CAE的主要作用是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。在这个阶段中,基于门阵列和标准单元库设计的半定制ASIC得到了极大的发展,将电子系统设计推入了ASIC时代。但是,大部分从原理图出发的CAE工具仍然不能适应复杂电子系统的要求,而且具体化的元件图形也制约着优化设计。(3)九十年代为ESDA阶段。尽管CAD/CAE的技术取得了巨大的成功,但并没有将人从繁重的设计工作中彻底的解放出来。在整个的设计过程中,自动化与智能化的程度还不高,各种EDA软件界面也千差万别,要学习并使用很困难,并且互不兼容,这直接影响到了设计环节间的衔接。针对上述的情况,更多学者开始追求贯彻整个设计过程的自动化,这就是ESDA即电子系统设计自动化。从目前的EDA技术来看,其未来趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大[5]。EDA技术相当于在电子设计领域中发起的一场变革,它一直引领着电子设计领域走向更高的高度,如今正在飞速发展阶段,新的EDA工具正在不断的被开发出来,但国内的EDA技术的应用水平长期落后于发达国家,广大电子工程人员需尽早掌握这一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竞争与发展的需求。2.2FPGA简介FPGA(FieldProgrammableGateArray)即现场可编程门阵列,它是在PAL(ProgrammableLogicArray)、GAL(GenericLogicArray)、EPLD等可编程器件的基础上进一步发展的产物。FPGA是一种半定制电路,它不仅弥补了定制电路的不足,也在一定程度上改进了原始的可编程门列阵门数受限的劣势。它是一种采用可编程互连连接在一起的逻辑单元阵结构。是其内部呈阵列状排列的多个可配置逻辑块(CLB),可以提供用户需要的逻辑功能;四周围绕输入/输出接口块(IOB),可以提供内部逻辑和外部封装之间的接口;其余为垂直交叉的可编程互连资源,用于在块与块之间的传输信号,类似与连接中,小规模集成电路器件的印刷版上的走线[6]。FPGA较原有电路的优势:体积小、精度高、响应迅速、灵活性、稳定性,可无限次反复编程,主要是能现场模拟调试验证。通常利用FPGA器件很短时间内便可以实现电子系统的设计和制造。利用研制周期短这一优势,在上市时间和制作成本等方面都有很好的效果。FPGA有着很强的‘变通能力’,当数据输入发生变化时,其电路功能也发生相应的变化。所以FPGA已经成为许多领域中运用最普遍的一种电路。2.2.1FPGA的开发与配置FPGA的设计是应用FPGA开发系统完成的。人们要做的仅仅是将硬件描述语言或电路原理图输入计算机,FPGA开发系统便可以自动完成设计过程,完成FPGA的内部配置,使硬件描述语言或电路原理图所描述的功能,这样一块空白的FPGA芯片就变成了一块特殊功能ASIC芯片。常用的配置模式有:并行主模式:一个FPGA加一个EPROM;(2)主从模式:用一个PROM可对多个FPGA进行编程;(3)外设模式:将FPGA作为微处理器的外设;(4)串行模式:可以采用串行PROM编程FPGA。2.2.2FPGA优点及FPGA/CPLD的选择PGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,其内部含有三个部分,分别是:可配置逻辑模块CLB(ConfigurableLogicBlock)输出输入模块IOB(InputOutputBlock)内部连线(Interconnect)所以FPGA具有很多的基本特点,主要有:1)设计ASIC时,用户无须进行投片生产,便可制作出合适的芯片。2)可用作其它ASIC电路试样片。3)内部含充足的触发器和输入输出引脚。4)具有设计周期短、成本低的优点。5)CHMOS的运用,减小了功耗,能和CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。CPLD是由GAL(GenericLogicArray)发展起来的,其主题结构人人是与或阵列,具有ISP功能的CPLD器件由于具有和FPGA器件相似的集成度和易用性,使其在可编程逻辑期间技术的竞争中和FPGA并驾齐驱,成为两支领导可编程器件技术发展的力量之一[7]。在很多的时候需要对两者进行比较,使用最佳选择,这里简单比较如下。FPGA与CPLD都是可编程ASIC器件,有很多共同的特点,且在一些领域中,它都体现出巨大的优势,但基于两者的结构不同,它们的特征也存在着一定的不同当今世界正经历着波澜壮阔的科技技术的巨大变革,FPGA等可编程逻辑器件技术发展一日千里,推动着电子技术设计的变革和深入发展,我们应该不断更新知识,掌握不断发展的科学技术2.3VHDL简介目前用于CPLD/FPGA、ASIC设计的语言种类有如下几种:VHDL语言、Verilog语言、AHDL语言、ABEL语言等。其中在CPLD/FPGA编程中使用最广泛的当属VHDL语言和AHDL语言,但Verilog以其统一的标准,强大的描述能力,也逐渐被用户接受[9]。VHDL的英文全称是VHSIC(VeryHighSpeedIntegratedCircuitHdwareDescriptionLanguage),诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE-1076(简称87版)之后,各EDA公司相继推出自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,简称93版。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言[10]。相信,在未来,VHDL将担负起大部分的数字系统设计任务。2.3.1VHDL的特点VHDL语言是一种用于电路设计的高级语言,主要是应用在数字电路的设计中。VHDL主要用于描述数字系统的结构/行为/功能和接口。VHDL的程序结构特点是将一项工程设计,或称设计实体分成外部和内部,既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的[11]。与其它的硬件描述语言比较,VHDL拥有更为强大的行为描述能力,这也奠定了它会是系统设计领域的最佳硬件描述语言。其强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。VHDL具有丰富的仿真语句和库函数,使它能在任何大系统的设计早期就能查验设计系统的功能可行性,并随时可对设计进行仿真模拟。VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场对大规模系统高效的需求,且能高速完成需由多人或多个代发组共同并行工作才能实现的设计。对于用VHDL来完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。VHDL对设计的描述具有相对对立性,使设计者可以不必懂硬件的结构,也不必管理最终设计现实的目标器件是什么,而进行独立的设计。VHDL本身的生命周期长。第3章直流电机控制方案概述和对比3.1直流电机控制概述直流电机由于具有速度控制容易,启、制动性能良好,且在宽*围内平滑调速等特点而在冶金、制造、轻工等工业部门中得到广泛应用。通常我们将直流电动机转速的控制方法分为两类,一类是励磁控制法,另一类是电枢电压控制法。励磁控制法控制磁通,其控制功率虽然小,但低速时受到磁饱和的限制,高速时受到换向火花和换向器结构强度的限制;而且由于励磁线圈电感较大,动态响应较差。所以我们常用的控制方法是改变电枢端电压调速的电枢电压控制法。通过调节电阻R就可以改变端电压,从而达到调速目的。但是用这种传统的调压调速方法效率非常低。如今随着电力电子技术的进步,出现了许多新的电枢电压控制方法,其中PWM(脉宽调制)是常用的一种调速方法。其基本原理是用改变电机电枢(定子)电压的接通和断开的时间比(占空比)来控制马达的速度,在脉宽调速系统中,当电机通电时,其速度增加;电机断电时,其速度减低[12]。只需按一定的规律改变通、断电的时间,就可以使电机的速度达到并保持一稳定值。本文采取了FPGA来改进步进电机多路PWM控制,内部自带数模变换功能,不再需要外接数模转换设备,形式简单,误差小、控制性能强。用单片机和DSP的控制都难以达到同样的控制效果。3.1.1直流电机控制方案对比由于以微处理器为核心的数字控制系统硬件电路的标准化程度高,制作成本低,又不受器件温度漂移的影响。其控制软件能够进行逻辑判断和复杂运算,能够实现不同于一般线性调节的最优化、自适应、非线性、智能化等控制规律。如采用微机控制产生PWM信号[13]。一般的PWM信号事通过模拟比较器产生的,比较器的一端接给定的参考电压,另一端接周期性线性增加的锯齿波电压。当锯齿波电压小于参考电压时输出低电平,当锯齿波电压大于参考电压时输出高电平。改变参考电压就可以改变PWM波形中的高电平的宽度。若用微机或单片机产生PWM信号波形,需要通过D/A转换器产生锯齿波电压和设置参考电压,通过外接模拟比较器输出PWM波形,因此外围电路比较复杂。FPGA中的数字PWM控制与一般的模拟PWM控制不同。用FPGA产生PWM波形,只需FPGA内部资源就可以实现。用数字比较器代替模拟比较器,数字比较器的一端接设定值计数器输出,另一端接线性递增计数器输出。当线性计数器的计数值小于设定值时输出低电平,当计数器大于设定值时输出高电平。与模拟控制相比,省去了外接的D/A转换器和模拟比较器,FPGA外部连线很少,电路更加简单,便于控制[14]。具有广泛的应用前景。经过对比本课题决定采用基于FPGA的直流电机控制系统。FPGA为核心器件的直流电机控制的系统构成直流电机控制系统主要由五部分组成,如图3-1所示:直流电机转速控制器,锯齿波发生器,PMW波形发生器,直流电机转动方向控制器和由功率放大电路和H桥组成的正∕反转功率驱动电路。图3-1FPGA直流电机控制电路第4章基于VHDL的硬件模块设计4.1基于FPGA的直流电机PWM控制如图4-1所示:直流电机控制系统主要由五部分组成:直流电机转速控制器,锯齿波发生器,PMW波形发生器,直流电机转动方向控制器和由功率放大电路和H桥组成的正∕反转功率驱动电路。图4-1直流电机PMW控制图图4-1所示电路完成的主要功能为:Enable为使能信号,当Enable=1时允许调速,相反当Enable=0时则禁止调速。Up_Down为加速\减速控制信号,当Up_Down=1,输入CLK1使直流电机转速控制器计数器的输出值增大,PMW占空比增大,电机转速加快;当Up_Down=0,输入CLK1使直流电机转速控制器的输出值减小,PMW的占空比减小,电机转速变慢。在CLK0的作用下,锯齿波计数器输出周期性线性增加的锯齿波。当锯齿波的计数值小于直流电机转速控制器的设定值时,数字比较器输出高电平;当锯齿波的计数值大于直流电机转速控制器的设定值时,数字比较器输出低电平,由此产生周期性的PMW波形。旋转方向控制电路控制控制直流电动机转向和启∕停,该电路由两个2选1多路选择器组成,Zheng_Fan为方向控制信号,Zheng_Fan引脚控制选择进入H桥的PMW波形,以控制电机的旋转方向。Start_Stop为启/停信号,Start_Stop引脚通过“与”门控制PMW的输出,实现对电机的工作∕停止控制。H桥电路由大功率晶体管组成,PMW波形经方向控制电路送至H桥,将功率放大以后驱动电机转动。PMW控制电路由直流电机转速控制器(binary_up_down_counter)和锯齿波发生器(binary_counter)组成。binary_up_down_counter是一个简单的5位二进制计数器,做直流电机转速控制器,而binary_counter是一个线性递增计数器,作锯齿波发生器,其余的模块是2选1多路选择器和比较器。锯齿波发生器在CLK0的激励下输出从0开始的逐渐增大的锯齿波。两路计数器的输出同时加在数字比较器上,当直流电机转速控制器输出值小于锯齿波发生器输出的值,比较器输出低电平;当直流电机转速控制器输出大于锯齿波发生器输出的值时,比较器输出高电平。这样就产生了占空比保持不变的方波。改变直流电机转速控制器的设定值initial时,就可以改变PMW输出信号的在占空比即初调;直流电机转速控制器是一个双向计数器,能够进行加∕减计数,由Up_Down控制其加∕减计数方向,在时钟CLK上升沿到来时可以改变binary_up_down_counter的输出即微调。为了方便连续变速控制,在计数器CLK端通过“与”门,加入了CLK1外部变速控制附加时钟,并由Enable信号控制是否允许变速。4.2实现系统控制的各模块4.2.1直流电机转速控制器(binary_up_down_counter)直流电机转速控制器(binary_up_down_counter)是一个可控制的加减计数器,作细分计数器。输出CQ[4.0]加载到数字比较器的一端。通过VHDL语言实现的直流电机转速控制器硬件电路如图4-2所示:图4-2直流电机转速控制器通过VHDL语言的编译定义了直流电机转速控制器硬件电路的五个输入引脚,分别为系统时钟引脚(CLK)、数据清零引脚(Reset)、使能输入引脚(Enable)、变速控制引脚(Up_Down)、起始数据输入引脚(Initial)。还有一个输出端(CQ)。直流电机转速控制器是一个双向计数器,能够进行加∕减计数,并由Up_Down控制其加∕减计数方向,CLK是计数时钟输入端。为了方便连续变速控制,在计数器CLK端通过“与”门,加入了CLK1外部变速控制附加时钟,并由Enable信号控制是否允许变速。Reset为清零键用来控制初值是否给定。Initial用来给定控制直流电机速度的初始值,即给定初始速度。几个输入引脚相互配合起到了对直流电机转速控制器控制速度的功能。具体程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.numeric_std.all;entitybinary_up_down_counteris port ( clk :instd_logic; reset :instd_logic; enable :instd_logic; updown :instd_logic; Initial :instd_logic_vector(4downto0); CQ :outstd_logic_vector(4downto0) );endentity;直流电机转速控制器是五位的加减计数器,计数器加的过程实为系统的加速过程,相反减的过程为系统的减速过程。直流电机转速控制器输出的数据被连到PMW波形发生器(数字比较器)与锯齿波发出的数据相比较,从而完成直流电机速度的控制。初值的加入,当reset引脚输入低电平时由initial引脚输入五位数据初值,从而给定直流电机的初始速度。系统的加速过程,当enable引脚输入高电平且up_down引脚输入高电平时,此时直流电机转速控制器进行一个加的过程,通过比较与锯齿波发生器发出的数值使输出波形的占空比变大,从而达到直流电机加速的目的。相反enable引脚输入低电平则不发生加速过程。系统的加速过程,当enable引脚输入高电平且up_down引脚输入低电平时,此时直流电机转速控制器进行一个减的过程,通过比较与锯齿波发生器发出的数值使输出波形的占空比变小,从而达到直流电机减速的目的。具体程序如下:architecturertlofbinary_up_down_counteris signalInit :std_logic_vector(4downto0);begin init<=initial; process(clk) variablet:std_logic_vector(4downto0); begin --Synchronouslyupdatecounter ifreset='0'then --Resetthecountertoinitial t:=init; elsif(rising_edge(clk))then ifenable='1'then ifupdown='1'then ift="11111"thent:=t; elset:=t+1; endif; else ift="00000"thent:=t; elset:=t-1; endif; endif; endif; endif; CQ<=t; endprocess;endrtl;直流电机转速控制器功能仿真如图4-3所示:当输入时钟clk为上升沿时,输出值CQ就会加1。输出值*围由0可以自加到31。图4-3binary_up_down_counter仿真波形图4.2.2锯齿波发生器(binary_counter)锯齿波发生器(线性递增计数器)通过脉宽时钟作用下递增计数,产生阶梯形上升的周期性的锯齿波。锯齿波发生器输出五位数据。锯齿波发生器确定了脉冲的宽度,其输出的数据被连到PMW波形发生器与直流电机转速控制器输出的数据比较。从而达到了对占空比的控制。通过VHDL语言实现的锯齿波发生器硬件电路如图4-4所示:图4-4binary_counter(锯齿波发生器)具体设计程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.numeric_std.all;entitybinary_counteris port ( clk :instd_logic; CQ :outstd_logic_vector(4downto0) );endentity;architecturertlofbinary_counterisbegin process(clk) variablet:std_logic_vector(4downto0); begin if(rising_edge(clk))then ift="11111"thent:="00000"; else t:=t+1; endif; endif; --Outputthecurrentcount CQ<=t; endprocess;endrtl;锯齿波发生器功能仿真如图4-5所示:当输入时钟clk为上升沿时,输出值CQ就会加1。输出值*围由0可以自加到31。图4-5binary_counter仿真波形4.2.3PMW波形发生器(CMP)PMW波形发生器(数字比较器)用来对锯齿波发生器和直流电机转速控制器输出值的大小做比较,当锯齿波发生器的值小于直流电机转速控制器的设定值时输出高电平,当锯齿波发生器的值大于直流电机转速控制器的设定值时输出低电平。由此可输出周期性的PWM波形。其硬件电路如图4-6所示:图4-6比较器PMW波形发生器的生成步骤如下:(1)打开MegaWizardPlugInManager初始对话框。选择Tools→MegaWaizardPlugInManager命令,打开如图对话框,选中Createanewcustommegafuncitionvariation单选按钮,即定制一个新的模块。如图4-7所示:图4-7定制新的宏功能块(2)单击Ne*t按钮后,打开如图对话框,在左栏选择storage项下的LPMPARE然后选择ACE*1K器件和VHDL语言方式:最后再输入文件存放的路径和文件名。如图4-8所示:图4-8比较器选择定义路径(3)比较器的生成如图4-9所示:图4-9采用LPM宏功能模块生成的位比较器(4)单击Ne*t按钮,由于本文涉及到的数值不为常数且无符号,所以分别选择No和Unsigned。如图4-10所示::图4-10选择数的类型(5)单击Ne*t按钮,选择No即不加时钟。如图4-11所示:图4-11时钟的选择(6)生成的文件会保存在设定的路径当中。如图4-12所示:图4-12完成定制4.3直流电机工作时序分析图4-13直流电机PWM仿真波形图图4-13是直流电机仿真波形图,给出了直流电机工作过程的仿真波形。图中展示了FPGA控制直流电机的情况。直流电机转速控制器输出的5位数据作为直流电机电流的参考值,通过PMW波形发生器来调节占空比,从而达到调节直流电机速度的目的。图中,Start_Stop用来控制直流电机的启动和停止,Enable为使能信号用来命令直流电机是否加速,Reset为清零信号当为低电平时允许输入初始值。Up_Down则为控制速度的信号当为高电平时电机开始加速,低电平时电机开始减速。Zheng_Fan则用来调节直流电机的方向,当为高电平时正向旋转,低电平时为反向旋转。实测结果表明,通过启∕停信号、使能信号、清零信号、速度控制信号、方向控制信号的设置可以对直流电机的速度方向做出精确的控制。
第5章液晶图文显示5.1LCD液晶显示由于液晶显示器具有体积小,功耗低,质量轻等特点,因此广泛应用于各种智能型仪器和低功耗电子产品中。许多电子公司相继推出各种型号各种系列的液晶显示模块,这些模块不仅可以显示字符和数字,有的还可以显示各种图形和汉字。这里介绍了液晶显示器OCMJ液晶显示器及软件编程特点。5.5.1OCMJ液晶显示器OCMJ液晶显示器内含GB231216×16点阵国标一级简体汉字和ASCII8×8点阵英文字库,输入区位码或ASCII码即可实现文本显示。它同时为用户提供位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以位为单位或以字节为单位进行图形显示。完全兼容一般的点阵模块。OCMJ中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。同时保留了一条专用的复位线供用户接口命令代码,非常容易记忆。标准拥护硬件接口采用REQ/BUSY握手协议,简单可靠。5.5.2模块管脚说明LCD+/LCD-为背光源引脚,由用户接上相应的电阻调整LCD背光亮度,电阻阻值在10~30Ω之间。RT1/RT2接脚为辉度调节电位器接脚,接10kB左右电位器可调节辉度。RESET为低电平有效。接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY高电平(BUSY=1)表示OCMJ忙于内部处理,不能接收用户命令;BUSY低电平(BUSY=0)表示OCMJ空闲,等待接收用户命令。发送命令到OCMJ可在BUSY=0后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ信号(REQ=1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在接收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表示模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可做模块显示以外的其他工作,也可不断的查询应答线BUSY是否为低,如果BUSY=0,表明模块对用户的写操作已经执行完毕,可以再送下一个数据。如果模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节后才开始执行整个命令的内部操作,因此,最后一个字节的应答BUSY高电平(BUSY=1)持续时间较长,具体时序图参见图5-1。图5-1对模块写汉字时序图5.2液晶图文显示显示单元可以显示电机的转速、和转向。如图5-2所示液晶显示模块各引脚功能如下:d3至d0为测速译码模块4位输入引脚。busy、req、dout为液晶输入输出引脚。clr为系统复位引脚。如图5-2所示:图5-2液晶显示模块具体程序如下:IBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYlcd_displayIS PORT(d3,d2,d1,d0 :INSTD_LOGIC_VECTOR(3DOWNTO0); busy :IN STD_LOGIC; dout :out STD_LOGIC_VECTOR(7DOWNTO0); req :OUT STD_LOGIC; clr :in STD_LOGIC );ENDlcd_display;ARCHITECTUREoneOFlcd_displayISSIGNALaddr:integerrange0to40; BEGINP1:PROCESS(busy,clr) BEGIN ifclr='0'thenaddr<=0; ELSIFbusy'eventANDbusy='1'THEN ifaddr=25thenaddr<=0;--rest<='1'; elseaddr<=addr+1; endif; ENDIF; ENDPROCESSP1; req<='1'WHENbusy='0'ELSE'0'; P2:PROCESS(addr) BEGIN CASEaddrIS when0=>dout<="11110100";--F4 WHEN1=>dout<="11110000";--F0--d3 WHEN2=>dout<="00000000";--00 WHEN3=>dout<="00000000";--00 WHEN4=>dout<=*"d7";--转 WHEN5=>dout<=*"aa"; WHEN6=>dout<="11110000";--F0--d3 WHEN7=>dout<="00000001";--00 WHEN8=>dout<="00000000";--00 WHEN9=>dout<=*"cb";--速 WHEN10=>dout<=*"d9"; WHEN11=>dout<="11110000";--F0 WHEN12=>dout<="00000000"; WHEN13=>dout<="00000001";--03 WHEN14=>dout<=*"d7";--转 WHEN15=>dout<=*"aa"; WHEN16=>dout<="11110000";--f0 WHEN17=>dout<="00000001";--04 WHEN18=>dout<="00000001";--00 WHEN19=>dout<=*"cf";--向 WHEN20=>dout<=*"f2"; WHEN21=>dout<="11111001";--F9--d3 WHEN22=>dout<="00000010";--02 WHEN23=>dout<="00000000";--00 WHEN24=>dout<=*"30"+d3; WHEN25=>dout<="11111001";--F9--d2 WHEN26=>dout<="00000011";--03 WHEN27=>dout<="00000000";--00 WHEN28=>dout<=*"30"+d2; WHEN29=>dout<="11111001";--F9--d1 WHEN30=>dout<="00000100";--04 WHEN31=>dout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物医药创新智造中心项目可行性研究报告模板立项申批备案
- 泥石流避险路线
- 人工智能在金融科技领域的应用创新试题试卷及答案
- 年产3000吨高性能复合材料产业化项目可行性研究报告模板-立项申报用
- JavaScript 程序设计 课件 第3章-顺序结构程序设计
- 生命体征监测与护理领导力发展
- 2026年及未来5年市场数据中国防火阻尼器行业市场发展数据监测及投资策略研究报告
- 初中沪科版第二节 力的合成教案设计
- 重庆大学附属三峡医院急性胰腺炎指南解读考核试卷
- 过敏性休克应急预案考核试题(含青霉素相关附答案解析)
- 2026年宣城市振宣水务有限公司第一批次招聘工作人员3名笔试参考题库及答案解析
- 2026内蒙古呼和浩特市北兴产业投资发展有限责任公司及所属子公司招聘27人笔试备考试题及答案解析
- 八年级物理下学期期中(深圳专用)模拟卷(含答案)
- 老年人食品药品防误食
- 2026北京昌平区卫生健康委员会所属事业单位第一批招聘事业单位56人笔试备考试题及答案解析
- 2026年高考政治三轮复习:选择性必修二《法律与生活》主观题答题方法指南
- 动量(知识+5大重难题型+过关验收)原卷版-2025-2026学年高二物理上学期期末复习(人教版)
- 储能电站建设与运营管理自查自纠整改落实报告
- 2026年新员工入入厂三级安全教育试卷及答案
- 天津辅警笔试题型及答案
- 儿童牙外伤临床指南
评论
0/150
提交评论