1、 2011东南大学校庆研究生学术报告会 2011 东南大学校庆论文研究生学术报告会 基于 FPGA 实现的无人直升机舵机控制模块 陈松,李冰, 陈明园, 缪 克 钻 (东南大学 集成电路学院,江苏 南京, 210096) 摘 要 : 针对目前无人直升机的控制需要大量的 PWM 通道,这些通道用于捕获接收机信号以及控制舵机动作。本文提出了一种基于 FPGA 的实现 PWM 多通道的方法。相比采用 ARM 芯片来实现,用 FPGA 方法的 更精确 ,功耗也要低很多。同时,该方法最大的优点是易于扩展,当需要扩展一个功能时,只需要在内部硬件代码上做一些改动就能实现,不需要更换硬件。该方案已经在 Spa
2、rtan 3E XC3S 1200E 开发板 上实现 验证 ,精度以及稳定性都比以前 采用 ARM 实现的 要好。 关键词 : FPGA;无人直升机; PWM The Realizing of Servo Motor Control Module of Unmanned Helicopter Based on FPGA Chen Song, Li Bing, Chen Minyuan, Miao Kezhuan (College of Integrated Circuits, Southeast University, Nanjing 210096) Abstract: In order to
3、 meet the need of abundance PWM channel which the unmanned helicopter used to control the servo motor or to capture the PWM signal that recieved, this paper puts forward a method of realizing multi-channel PWM singal capture and output by FPGA.Compared with the way of using ARM, the method relized b
4、y FPGA is more precise and its power consumption is aslo lower.Moreover, the most advantage of it is that it is very easy to expand its function, when need to add or change a function, only need to make some changes of the internal logic code, do not need to change the hardware. The project has been
5、 implemented on the development board of Spartan 3E XC3S 1200E for verification, and the results show that its accuracy and stability is better than implementation by the ARM. Key words: FPGA; The Unmanned Helicopter; PWM PWM( Pulse Width Modulation) 技术 ,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到
6、功率控制与变换的许多领域中 。 脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用 微处理器 的数字输出来对 模拟电路 进行控制的一种非常有效的技术。 PWM 控制技术 以其控制简单 ,灵活和动态响 作者简介 :陈松 ,( 1984-),男,专业硕士研究生 , ;李冰, (1968-),男,教授,博士生导师, bernie_. 应好的优点而成为 电力电子技术 最广泛应 用的控制方式 ,也是人们研究的热点。由于当今 各 个学 科 之间的联系更加紧密和交叉。
7、 结合 现代控制理论 思想或实现无谐振软开关技术将会成为 PWM控制技术发展的主要方向之一。 在目前许多控制系统中,都采用各种含有 PWM 模块的芯片来实现PWM 信号的处理。不过由于这类芯片都是已经生产好的,通道数目也是固定的,所以不适用于某些特定的应用或是对通道数目特多的场合。 在 本人 所参与的小型无人直升机控制系统 设计 中,要用到 8 个以上的 PWM 捕获通道以及 8 个以上的输出通道。以往嵌入式开发 设计人员 ,一般会 选择采用 ARM 类 SoC 芯片来实现,不过即使这样,往往还是很难找到合适的芯片来实现该功 能,一般都是最后发现捕获通道数目不够,这时就 需要2011东南大学校
8、庆研究生学术报告会 2011 东南大学校庆论文研究生学术报告会 采用定时器来协助完成;或者是采用分时复用 的方法,牺牲一些实时性来减少对捕获通道数的要 求。不过如果采用 FPGA 来实现的 PWM 通道的话,这些都问题都很容易得到解决。 1 系统 的总体设计 为了能够让 PWM 控制板将捕获的脉宽值发送给上位机或者接收上位机发送的设定脉冲值,还需要在 FPGA 上增加 UART 通信模块,整个 舵机 控制板的构架如 图 1 所示 。 整个电路的实现是基于 Xilinx 公司的开发板 Nexys2,该开发板是采用 Xilinx Spartan 3E XC3S1200E 芯片实现的。板上集成有 U
9、SB 下载工具,可以直接通过 USB 下载线连接到电脑上,直接进行程序下载。 整个开发环境 也是 采用Xilinx 官方提供 的设计 套件 ISE12.1, 它可以完成FPGA 设计 开发的全部流程,包括设计输入、仿真、综合、布局布线、生成 BIT 文件、配置以及在线调试等,功能非常强大。除了功能完整,使用方便外,它的设计性能也非常好 。 虽然前期 推出的 软件有不少 BUG,但是到 了 ISE12.1 以 后,已经 越来越 完善了。UART发送控制模块PWM_samplecounter16PWM_samplecounter16UART发送模块上 位 机UART接收模块UART接收控制模块握手
10、协议PWM_0 PWM_1 捕获的脉宽值上位机输入脉宽值MUXPWM_samplecounter16PWM_10 选通信号 PWM_generater设定脉宽值counter24PWM1 PWM0 PWM9 11路PWM捕获10路PWM波输出握手协议舵 机 板 控 制 板图 1 系统 框图整个系统中总共有十一路 PWM 捕获输入,十路 PWM 输出,一个 UART 输入模块和一个 UART输出模块以及相关的输入控制逻辑和输出控制逻辑。首先,十一路 PWM 捕获逻辑捕捉到 Futaba 无线接收机输出的各路 PWM 信号,然后将捕获的多路脉宽值经过 UART 发送控制逻辑打包发送到上位控制机。同
11、时,上位机也可以通过 UART 接口把想要设定的输出脉宽值传送过来,然后, PWM 控制板上的输入控制逻辑会把传送过来的数据,对应到各个PWM 输出脉宽。十一路 PWM 输入,其中一路可以作为 手动和自动切换用。 由它选择 PWM 产生模块的输入对像。如图 1 中所示,采用 PWM_10 路作为MUX 的切换使能信号,由它选择采用哪个通道的设定值进入 PWM 产生模块。 与以往其它的 PWM 控制 模块 的设计 不同,本设计中的 PWM 波形的周期是固定,不需要改 变 其周期 。 另外 PWM 相位也不需要对其进行控制 。 因此, 采用 FPGA 我们可以自己定制出符合项目需的2011东南大学
12、校庆研究生学术报告会 2011 东南大学校庆论文研究生学术报告会 功能模块。 2 模块 设计 下面简要介绍每个模块的实现过程和方法,以及各个部分所实现的功能。 2.1 时钟部分 时钟是每个数字逻辑电路必不可少的部分 ,可以由锁相环产生也可以直接分频得到。在本设计中,由于所用到的时钟种类不是很多,另外对时钟精度的要求也不是很高。因此,本设计采用分频电路对外部时钟分频的方法来实现多种需要时钟。本设计所用开发板上的晶振是 50MHz,可以比 较方便 的产生 5MHz、 9600 16Hz 、125600 16Hz 的各 种频率的时钟 ,如 图 2 所示。 其 中 5MHz 的时钟用来作为 PWM 捕
13、捉模块的采样时钟和 PWM 产生模块的工作时钟, 同时,5MHz 也用做其它模块的工作时 钟 ,比如计数器,串口发送、接收控制逻辑模 nRstClk_inClk_5MhzbClk_9600*16bClk_115200*16CLK图 2 时钟分频模块 块的工作时钟。另外两路时钟 9600 16Hz、115200 16Hz 则是作为串口发送、接受模块的工作 时钟,因为串口接收模块 本人 采用最大似然估计的方法来做, 也就是 在一个数据位上采样多次求平均值的方法来实现。 在 本设计 中的 每一 位 的采样次 数为 16, 所以, 串口模块的 时钟必须 采用 标准串口传输频率的 16 倍。 2.2 P
14、WM 波形捕获模块 为了方便设计, PWM 波形捕获模块采用模块化的设计思路,将其分为捕捉逻辑和一个计数器来构成整个捕获功能。在本设计中,其它模块也大量采用了模块化的思路来 进行设计。可以说整个设计也都是拆分为各个小模块进行分别设计,最后再整合的。 整 个 捕 获 模 块 的 电 路 如 图 3 所 示 。 当pwmSample 模块捕获到上升沿,就复位并驱动counter_16 进行计数,并且在当前 PWM 波形的 PWM_inClk_inReset_outDure_out15:0p w m _S a m p lenRstCounter_in15:0nRstClk_inC_out15:0c
15、o u n t e r _1 6Set图 3 PWM 采样模块 下降 沿来时把 counter 的计数值保存起来, 作为当前捕获的 PWM 波形的脉宽值。 2.2 UART 串口通信模块 串口通信模块分别包括串口发送、接收模块,以及相应的接收、发送控制逻辑。串口发送、接收模块用于实现串口通信功能,其实现过 程也比 n R s tC l k _ i nR e s e t _ o u tP W M 0 d u r e 1 5 : 0 u a r t T r a n s m i tC o u n t e r _ i n 2 3 : 0 P W M 1 1 5 : 0 P W M 0 1 5 : 0
16、P W M 1 d u r e 1 5 : 0 t x D a t a 7 : 0 t x C M Dt x C M D _ i nb C l kt x O u tt x R e a d yp w m U a r t _ t xn R s tt x D a t a _ i n 1 5 : 0 n R s tC l k _ i nC _ o u t 2 3 : 0 c o u n t e r _ 2 4S e tt x R e a d y图 4 串口发送模块 较简单在这里就不再做详细介绍,不过为了提高串口通信质量,串口接收部分中采用了最大似然判决的方法。整个发送模块如图 4 所示。 发送控制逻辑
17、,主要功能是把各路捕获模块捕获到的 PWM 波形的脉宽值打包成一帧数据,然后控制串口发送模块发送到上位机。 接收控制逻辑的功能则与发送控制逻辑相反,它的功能主要是将上位机发送过来的一帧数据解包,同时把每一路对应的脉宽值分发到对应的寄存器。 2011东南大学校庆研究生学术报告会 2011 东南大学校庆论文研究生学术报告会 2.3 PWM 波形产生模块 产生模块实现的主要功能是:产生与脉宽设定值相对应的 PWM 波形,算是整个设计中比较 PWM_outClk_inReset_outInput_dure15:0p w m _P ro d u c to rnRstCounter_in23:0nRstC
18、lk_inC_out23:0c o u n ter_24Set图 5 PWM 产生模块 简单的模块了。 整个模块如图 5 所示,产生逻辑不断的将计数器的输入值和外部输入的脉宽设定值进行比较。当然时间满足条件时,便使 PWM 信号翻转。 3 结果验证 3.1 ISim 仿真验证 FPGA 的 设计 , 首先要通过前其的功能验证,然后才能进行后期的板级验证。 为了方便,本设计在前期设计进行功能验证 采用 ISE 平台上自带的仿真工具 ISim 进行功能仿真。 仿真结果如图 6 所示。捕获了两路 PWM 波形( PWM0、 PWM1) ,然后通过 UART 口输出结果。实验中,只验证了两路波形,多路
19、的话,也就是多加上几个模块。 从图像中, 可以看出 捕获的 波形和最后产生的波形是一样的,另外串口模块也 是 工作正常 。 图 6 ISim 仿真波形 3.2 板级验证和性能分析 板级验证,也就是将代码固化到 FPGA 开发板上 进行功能上的验证 。 本设计主要是通过捕获接收机发出的 多路 PWM 波形,然后通过串口把捕获的结果传送到上位机( 上位机采 用 PC 机上的串口调试助手来实现),另外把输出的 PWM波形采用 示波器 去看。 性能的分析,主要是对串口发送出来的数据进行分析,观察其捕获功能的准确性以及抗干扰性能。具体方法是:将一定时 间内捕获过来的脉宽值数据保存起来,然后通过 matl
20、ab 软件对其绘图观察,结果如图 7 所示。 图 7 改良前 通过观察发现有不少毛刺,为了提高稳定性和抗干扰性, 需要去掉这些毛刺。通过分析,这些毛刺可能是捕获的误差,也可能是接收机输出2011东南大学校庆研究生学术报告会 2011 东南大学校庆论文研究生学术报告会 就有误差。改良设计后( 也就是 在输出脉宽值前加入了一个限幅电路) , 其结果如 图 8 所示 。 图 8 改良后 可 以看出改良后毛刺全部消 除,稳定性 和抗干扰性 大幅提高。 4 结束语 通过本设计,我们可以发现采用 FPGA 进行特殊功能接口扩展的优势所在。相比采用 SoC芯片的有限资源和不可更改的硬件电路,采用FPGA 进
21、行开发,我们 可以对硬件电路进行 某些符合自己要求上的定制设计 。这些是 SoC 芯片所不具备的 特性,当然, SoC 也有它的优势,就是纯软件上的配置,不需要对硬件了解太多,因此,设计门坎比较低。 但是,即便如此, 面对现在各种 场合 对速度的要求 越来越高 ;同时对接口的复杂性以及 低功耗的要求, FPGA 还是有不可替代的地位。 参考文献 1 基于 FPGA 的直流电机 PWM 控制器设计,微电机2009,42(10)。 2 徐军,王华东,用 FPGA 实现多路 PWM 输出的接口设计与仿真,电子工程师 , 2008。 3 汪宁,基于 FPGA 的 PWM 发生器的研究与设计, 2008
22、。 4 张岩,宋翔,基于 FPGA 的高精度 PWM 发生器设计与实现,微计算机信息 , 2009。 5 韩强,基于 FPGA 的 PWM 直流调速方案的研究与分析, 2006。 6 李建林,王立乔,李彩霞,韩冰,张仲超 , 基于现场可编程门阵列的多路 PWM波形发生器,浙江大学电气学院,2005。 7 Hongyan Xu, jianlin li, Power and Energy Engineering Conference, 2009. 8 E .Koutroulis, A .Dollas, K .Kalaitzakis, High-frequency pulse width modulation implementation using FPGA and CPLD Ics , Journal of Systems Architecture, Vol.52 (6), pp.332-344, June 2006.