基于FPGA的UART指令控制电机实验
实验名称:基于FPGA的UART指令控制电机实验
课程简要信息
课程名称:数字电子技术实验
课程学时:32学时
项目学时:16(8+8)学时
适用专业:电子信息工程、通信工程、自动化等电类专业
学生年级:大二下
设计内容与任务
项目实验实施依托实验室自主开发的FPGA实验箱,QuartusII设计软件、Modelsim仿真软件。
基于FPGA的UART指令控制电机实验,以FPGA为核心通过UART串口与PC上位机连接,PC通过UART向FPGA下发直流电机的控制指令,FPGA对接收到指令进行译码后,控制直流电机驱动电路,实现对电机运动的控制。实验教学过程中让学生:首先明确系统设计的总体要求,重点是功能划分与实现;其次是理解UART通信的基本原理;并掌握基于PWM的直流电机控制原理;最后能独立完成系统的设计、仿真和验证。
基本功能:
(1)以FPGA为核心,PC通过UART接口下达指令;
(2)对UART指令进行译码,控制直流电机的运动方向和快慢;
(3)数码管显示电机的运动方向和指令信息。
相关知识及背景
传统数字电路课程以讲授中小规模电路为主,与产业和技术应用趋势严重脱节,导致培养的学生缺乏设计复杂数字系统的能力、缺乏熟练使用现代数字系统设计、测试和调试工具的能力,所学的知识与实际的技术应用脱钩。FPGA拥有丰富的内部资源,能根据应用需求在硬件层进行灵活修改,适用于大型集成电路和数字系统的开发。
为了进一步培养学生利用模块化的思想设计复杂数字系统的能力,将UART通信与直流电机PWM控制相结合,组成一个相对复杂和完整的系统。该实验将通信和控制的基本原理通过FPGA设计方法有机的结合起来,提高学生学习兴趣的同时,培养和锻炼学生的工程实践能力,为后续的创新实践课程打好基础。
教学目标与目的
(1)数字系统自顶向下的设计方法;
(2)HDL编程与仿真;
(3)UART串口通信的基本原理;
(4)PWM驱动电机的原理与实现;
(5)系统集成、验证与调试方法。
本实验教学紧贴电子信息产业发展与需求,培养电子信息产业发展急需的综合应用型高技能人才。培养学生利用FPGA作为工具进行系统实现,从而加深对所学知识的理解,建立概念;加深理解所学数字系统原理基础知识,锻炼FPGA编程能力;调动学生的积极性,引导学生自发学习相关的知识,培养在实践中研究问题,分析问题和解决问题的能力。
教学设计与引导
本实验是一个综合设计性项目,需要经历相关理论知识学习、技术方案论证、系统设计、计算机仿真等过程。在实验教学中,应在以下几个方面加强对学生的引导:
(1)基于FPGA的自顶向下系统设计方法:这是整个设计中的难点,学生可能不知道如何下手,老师在这一环节需要重点引导。
(2)自底向上的HDL编程:按照系统的层次结构,对功能划分的模块进行编程,采用层次清晰的编程风格,有助于功能的理解、问题排查和复用。
**(3)功能模块仿真:**从底层的功能模块逐步向上开始仿真。对设计的模块模块分别进行仿真,然后进行整体系统的集成,学生易于理解和实现。
**(4)系统调试测试:**对仿真通过的整体系统进行编译和下载,观察实际运行中存在的问题,对存在的问题分析原因,并针对性的修正。培养学生分析并解决复杂工程问题的能力。
设计原理及方案
基于FPGA的UART指令控制电机实验的系统层次框图如图1所示。
图1 系统层次框图
图2功能模块之间的逻辑关系
功能模块一:UART模块。实现波特率为9600,数据位8位,停止位1位的串行数据格式UART接口与外部MAX232连接,实现与PC上位机的通信,用于接收PC下达的电机运动控制指令。Zhu主要有三个小的功能模块组成:UART功能控制模块、发送数据模块和接收数据模块。
功能模块二:数码管译码显示。将UART接收到的PC指令对应的电机转动方向和速度以及扩展的测速数据,扫描显示在数码管上。
功能模块三:电机驱动模块。将UART接收到的PC指令译码得到的速度和方向,产生不同的PWM信号控制直流电机驱动电路,实现对电机的控制。
功能模块四:电机转速测量模块,作为扩展功能,让学生自主设计实现。
各功能模块之间的逻辑连接关系如图2所示。指明了后续的子模块功能设计的前后连接关系,可统一规划子模块端口。为自底向上的功能设计提供了详细的RTL流图。
本实验实现PC上位机通过串口向FPGA发送一个字节的指令,控制电机的转向和转速。指令的格式如下:
| 方向 | PWM占空比 | ||||||
|---|---|---|---|---|---|---|---|
| Dir | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
其中:Dir=1,正转; Dir=0,反转。电机速度根据占空比大小分为4级调速:占空比大于>=96时,PWM输出占空比90%;96>占空比大于>=64时,PWM输出占空比50%;64>占空比大于>=32时,PWM输出占空比25%;32>占空比,PWM输出占空比0。
教学实施进程
基于FPGA的UART指令控制电机实验在教学过程中严格按照实验目的与目标进行开展,将教学过程的实施分为三个阶段。
7.1 基本原理与实验电路介绍
这一阶段的教学主要讲述UART和PWM的原理,以及应用时的注意事项,让学生做到“知其然,更知其所以然”。
(1)基本原理
UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是指计算机与外设之间,或者计算机与计算机之间以串行的方式传送数据。数据位按顺序一位一位地传送,所以串行传送数据最少只需要一根传输线即可完成。UART发送端和接收端为了保持同步,必须采用相同的字符帧格式和波特率。
很实验选择的UART数据帧格式为:1位**开始位、**数据位8位,停止位1位构成,其数据帧如图3所示:
图3 UART数据传输时序图
波特率是通信中的一个重要概念,也叫做比特率。是发送二进制数据位的速率,习惯上用baud表示。常用的波特率有9600,19200,115200等,表示一秒钟发送的二进制数据量。
直流电机驱动一般采用桥式电路,如图4所示:CTR_S-和CTR_S+表示控制电机转动的两个控制端,控制电机的PWM频率一般在几百到5KHz之间,本实验采用500Hz的PWM。
利用PWM(Pulse Width Modulation)的脉冲宽度来控制图4中的CTR-S-和CTR_S+,就是利用PWM占空比大小调节直流电源输出的平均电压大小,如图5所示,以达到控制电机不同运动状态的目的。

图4
电机桥式控制原理图
图5 PWM控制原理
(2)电路原理

以下是uart串口和电机驱动的电路,不同的电路控制与驱动的方式不同,让学生理解HDL设计与外部电路相匹配才能实现对应的功能。
图6 UART电路 图7 直流电机驱动电路
7.2 功能模块的设计与仿真
系统按照自顶向下的方法设计,确定功能模块之间的连接端口;功能实现则按照自底向上,一个一个功能模块的设计与仿真。以一电机驱动模块为例如下图所示:
图8 电机驱动control_moter模块
电机驱动control_moter模块由命令解析pwm_config、PWM调制和驱动控制motor_drives三个子模块构成,其内部连接如图8示。
图9 control_moter的内部子模块
电机驱动control_moter模块的端口由系统时钟clk,系统复位rst_n和指令command三个输入端,电机驱动Postive和Negtive输出端构成。根据指令的功能与构成,首先在pwm_config模块里分离出转动方向Rota_dir信号和根据占空比得到的4各速度等级信号speed[1:0]信号;PWM模块根据speed信号等级在时钟信号clk和复位信号rst_n的控制下产生不同占空比的pwm信号;驱动motor_drive模块在Rota_dir方向信号的控制下,将pwm信号传递给postive或negtive电机驱动端,实现不同占空比的电机速度和转动方向控制。
各模块的仿真,结果如下:
图10 pwm_config模块仿真波形

图11 pwm模块仿真波形
图12 motor_drive模块仿真波形
图13 control_moter模块仿真波形
另外功能模块:UART通信模块、显示模块和测速模块依此执行。
通过仿真,让学生掌握仿真的作用:在不同的输入信号作用下,该功能模块是否达到对应的设计功能?没达到,修改设计文件直至实现;达到后,进行各功能模块的级联实现较复杂的功能。
7.3 系统的集成与验证
完成各功能模块的设计与仿真后,系统各模块的级联,管脚的映射,布局布线和编译,最后下载到实验平台进行验证。
(1)各功能模块在系统层上例化完成,掌握局部与整体的关系,以及对数据流的掌控。
图14 系统整体设计RTL图
(2)正确的管脚映射,实现理论设计与实际电路的统一,把设计落实为具体的实物。


图15 系统管脚映射表
(3)功能测试与验证,内化指令与系统运行的逻辑,成就思想与行为统一的成功。
图16 串口指令控制电机运动
学生通过设计、仿真、系统集成到最后的程序下载,并成功运行的一系列过程,体会系统的概念,掌握自顶向下的系统设计方法,统筹全局;在实现的过程中,除了功能模块的具体功能的实现,还要注意与其他模块之间的关系;在测试中,检验指令与系统行为的统一与否,能判断运行状态与指令是否一致;最后思考对现有的系统在功能完善、扩展和代码质量方面是否还有改进的空间,使学习过程得到进一步的消化和沉淀。
课程设计报告要求
报告主要包括如下内容:
-
设计任务及要求;
-
问题分析与方案选择;
-
功能模块的划分,编程、仿真和实现;
-
系统实现过程中的问题分析及解决办法
-
体会与改进意见和建议
考核要求与方法
(1)系统设计:设计方案层次合理,功能模块划分与信号定义;成绩占比20%。
(2)功能实现:HDL编程良好的代码风格;在Quartus II或Modelsim对各层次功能模块进行较全面覆盖的仿真,实际测试功能正确;成绩占比45%。
(3)功能扩展:串口波特率灵活调整,PWM占空比连续可调,电机转速测量等;成绩占比15%。
(4)实验报告:方案设计描述,所遇问题分析与解决方案,收获与建议;成绩占比20%。
项目特色或创新
设计的以FPGA为核心的数字系统实验平台解决了分立元件实验中的学用脱节、功能单一、连线繁琐杂乱的问题。本实验的特色与创新点:
**(1)强调自顶向下系统设计方法,树立系统意识:**从系统整体概念出发,从总体到局部的设计方法,完成单独知识点向多知识点的融合;促进学生学习思维能力的提升,提高应用型人才培养质量。
**(2)通过自底向上的功能实现,锻炼工程实践能力:**自底向上的实现过程,体现理论知识点和实际应用的一一映射,让学生不仅对数字逻辑电路的内部结构知其然而且知其所以然;锻炼学生解决工程复杂问题的能力
**(3)应用与理论的表里统一,培养创新意识:**通过功能模块不同的实现方式,破解从理论到实践的鸿沟,让学生体会到解决问题的成就感;引导学生自主、自发的学习兴趣,培养创新意识。
参赛选手信息表
| 案例提供单位 | 长江大学电工电子国家级实验教学示范中心 | 相关专业 | 电子信息类专业 | |||
|---|---|---|---|---|---|---|
| 设计者姓名 | 郑恭明 | 电子邮箱 | zgm931@yangtzeu.edu.cn | |||
| 移动电话 | 18986660902 | 通讯地址 (含邮编) |
湖北省荆州市长江大学东校区 | |||
| 设计者姓名 | 电子邮箱 | |||||
| 移动电话 | 通讯地址 (含邮编) |
|||||
| 设计者姓名 | 电子邮箱 | |||||
| 移动电话 | 通讯地址 (含邮编) |
|||||
| 相关课程名称 | 数字电子技术、FPGA程序设计与实战 | 学生年级 | 二年级下 | 学时(课内+课外) | 16(8+8) | |
支撑 条件 |
仪器设备 | 电脑、直流稳压电源、万用表、示波器 | ||||
| 软件工具 | Quartus II,Modelsim | |||||
| 主要器件 | FPGA系统平台 | |||||