您可以添加到网摘 让更多人关注此文章:
从玩具到移动家用电器,简单的机器人应用正呈蓬勃发展之势,这些机器人应用都依赖某种处理器。一些产品采用8位MCU,而另一些采用定制芯片或分立元件实现。借助当今的先进技术,工程师可以在无需考虑外形尺寸的条件下,利用现有的单片半导体器件实现一个完整的自主机器人车辆(ARV)控制器。本文将探讨如何采用带软处理器的FPGA来打造这样的控制器。
首先采用FPGA外加一个串行配置设备、两个H桥马达驱动器、一个模数转换器(ADC)、一个三轴加速器、一个DC/DC电源转换器、扩展/传感器连接器和各种辅助元件来实现一个简单的轨道式(tracked)ARV。
该FPGA被配置成一个完整的系统级芯片(SoC),它是整个设计的关键所在。在该SoC结构内,包含一个32位软核处理器、RAM/ROM、两个串行通信块和两个马达控制块。该SoC采用最小的Cyclone III FPGA(EP3C5)实现的,这款含有5000个逻辑单元的器件具有充分的空间来增加所需的其它功能(图1)。
 |
图1:图中的ARV控制卡是一款采用最小型Cyclone III FPGA实现的SoC,这款含有5,000个逻辑单元的器件(EP3C5)具有足够的空间,可根据需求增加其它功能。 |
与Cyclone III类似,大部分FPGA都是基于SRAM的。因此,它们需要配置数据资源。在本例中采用的是一款Altera串行配置器件,稍后将讨论这种器件带来的其它可能性。
ARV架构的基础
该SoC的核心是一颗32位Nios II软核处理器。由于它是基于FPGA来实现,因此可以根据设计功能的需求很容易地对其进行扩展或性能改善(图2)。
 |
图2:该表对比了三种不同Nios II处理器的资源使用情况,它们都是用Cyclone III FPGA实现的。 |
有许多因素决定着处理器的选择,如所需的处理能力、需要/可用的存储器、代码空间、所选FPGA内的布线空间以及最终系统成本。我们的初始项目是基于Nios II/e器件,这使得采用密度最低的Cyclone III FPGA以及小尺寸封装成为可能。
存储器是关键因素。在这类嵌入式设计中,既可采用内部又可采用外部存储器。尽管选择的FPGA限制了内部RAM/ROM的大小,但内部存储器允许更小的占板面积并能降低成本。事实上,外部存储器可实现任何密度和数据通路带宽。
对于机器人车辆来说,由于可用功率的限制,开发者需对整个设计施加一些约束。外部存储器主要有SRAM和DRAM两种类型,它们具有多种密度和封装类型。
有4个主要因素影响器件的选择:所需的最小密度与可用密度;功率约束,这是因为AVR的可用功率有限;存取和处理器速度;FPGA与存储器和I/O器件进行连接的可用I/O引脚数。其它约束条件包括:封装、成本及为针对FPGA预置的接口IP。
Cyclone III FPGA能够根据不同电压水平或多功能接口(PCI、差分信令)进行I/O分组。目前可用的知识产权(IP)包括大量通信、存储器和传统模块。
处理器代码存储(通常采用闪存器件)完全取决于ARV的功能以及设计工程师是否打算采用实时操作系统(RTOS)。对于小型ARV来说,利用配置器件存储代码免除了对系统提供存储器件的要求并降低了功率。Cyclone III的FPGA引脚是专用的,因此无需额外的引脚,并有可能降低整体成本。
对于无法使代码与配置器件相匹配或不适应这种方法的设计工程师来说,有两种不同的闪存接口可以使用:即串行和并行。器件的密度以及电路板空间将影响这一决定或发展方向。由于它们具有相似的密度,因此两种类型的密度问题汇聚成为一个问题。
连接物理部分的接口是挂接部分(clinching entity)。(这一分析基于16位数据路径。)并行组件会用到约44个I/O引脚。相同密度的串行组件则将使用约6个I/O引脚。(串行闪存为x8。)FPGA与组件IP的接口必须适应向x16格式的转换。
引脚数又一次成为重要因素,它可以影响器件的物理尺寸。如果采用了操作系统,则必须具有面向可用接口的驱动器。否则就要花费精力自己构建。
马达控制
对ARV的运动和控制来说,马达驱动和控制是最基本的。最简单的马达控制包含一个负责处理电流负载的驱动器和一个单独的I/O引脚。该引脚主要进行打开/关断(流通/截止)操作,但涉及ARV的整体运动性能时,该方法尚有很多不足之处。
下一步是利用脉宽调制器(PWM)来控制速度(用FPGA可以很容易地实现PWM)。速度控制允许减速至停止状态或加速至一个固定速度(类似汽车)。在不具备汽车类型转向控制或带有轨道的ARV应用中,这种转向方法被称为“滑动转向(skid steering)。”
基本上,被减速或停止的驱动侧是拟转向的方向。停止或减速的时间将决定转向的次数。外部驱动可以是采用分立器件构建的H桥(有刷电机)或带有内置FET(用于控制电流)的单芯片。
ARV实例包括两个针对基本分立器件H桥控制配置的马达IP块。PWM的输出通过两个引脚中的一个被路由至该H桥。运动方向决定着路由引脚。另一个引脚接地。
驱动安全性是一个值得考虑的问题。一种可确保安全的简单方法是在任何指定时间监控流经桥的电流量。对于采用分立器件的桥来说,可以用一个ADC和一个低阻值精密电阻来实现。
从FPGA到ADC的接口取决于所需的引脚数及ADC分辨率。现在日益流行的串行外设接口(API)ADC可提供高数据传输速率。本文例子中的ARV采用的就是SPI ADC。
该处理器可在运动的设定间歇时间读取采样值并将其与设定的故障参数进行比较。大多数带有集成FET的单芯片方案具有内置热/电流安全保护功能(关闭输入/输出),并设置了用户可参考的标记或标记群。用户应将这些功能设为高优先级。否则,ARV马达控制器有可能会损坏。
在理想情况下,每个马达都应具有速度监控器。这使得ARV可以移动地设定距离而不会受到远程控制器的干涉。监控器可以是霍尔效应变换器或光电断路器。
该IP是一个时钟输入来自该霍尔变换器或光电断路器的简单计数器。第二个时钟源用于设定样本大小。这已成为设计工程师所偏爱的方式,但计数器越大,能耗也就越高。
一个500ms的样本可在32位的计数器内保留大多数设计,在这种情况下计数器可与内部Nios-II数据总线匹配。第二个源时钟将计数器数据存入读寄存器用于访问处理器并将该计数器复位为零。
利用轨道式ARV,设计工程师为驱动齿链的每个循环计算该值,轨道移动“x”以英寸表示,在大型设备上以英尺计。借助该常数,处理器可计算其前行或后退了多少距离。
例如,常数“x”=4英寸/转,距离=“x”×转数,40英寸=4英寸/转×10转。计算起来很简单,但对许多应用来说足够了。速度计数器还能通知处理器出现滑动或轨道拥堵状况,这种情况表现为桥电流上升。
对于任何特定应用来说,基于FPGA的SoC能够在硬件级对每个构建元素进行优化以得到最佳效果,这使得它成为构建机器人车辆应用的理想选择。
[1]
|