新闻  |   论坛  |   博客  |   在线研讨会
采用带软处理器的FPGA实现机器人车辆控制器
lulu888 | 2009-06-24 08:48:04    阅读:1187   发布文章

从玩具到移动家用电器,简单的机器人应用正呈蓬勃发展之势,这些机器人应用都依赖某种处理器。一些产品采用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)具有足够的空间,可根据需求增加其它功能。图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实现的。图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转。计算起来很简单,但对许多应用来说足够了。速度计数器还能通知处理器出现滑动或轨道拥堵状况,这种情况表现为桥电流上升。

引导系统

实际上在所有系统内,引导系统都是一个关键部分,而在ARV内,引导系统更复杂、所占体积更大。在非常小的ARV或玩具内,基于空间和成本方面的考虑,引导系统通常是个奢侈品。

微机电系统(MEMS)的引入允许更小的单元以更轻的重量、更低的功耗及成本拥有完整的引导系统。MEMS可直接连接FPGA。

本文讨论的两个引导项目是加速计和陀螺仪。加速计提供模拟或数字接口;1个、2个或3个轴;以及不同的“加速度(g)”等级。因此,应当采用数字SPI加速计以减少所用的元件数。这样还将减小在连接ADC的模拟线路上被噪声干扰的机会。X和Y轴通常可用于确定上/下倾斜或左/右倾斜。Z轴则表示ARV旋转时的速率和方向。

增加陀螺仪可简化一些工作。首先要添加的陀螺仪位于Z轴。单个Z轴能够很方便地决定减速或停止一条轨道(用于转向操作)的时间。陀螺仪将显示从初始参考点开始已旋转的度数。

如果ARV从点A移动到点B(沿一条直线除外),则该信息没有价值。增加X和Y轴可允许处理器以地球表面为参照对ARV的实际位置“画”一幅心理图像。对那些需要全部信息的应用来说,一部分MEMS模块包括三轴加速计和三轴陀螺仪。

传感器和通信

传感器是机器人感知世界的唯一途径。在开发ARV过程中用到的大多数传感器是SPI/I2C或模拟的。此时仍需要用ADC在模拟传感器和FPGA之间建立连接。

如果想要将I/O引脚数减到最少,那么可采用仅需两个引脚的I2C。但它的最高数据传输速率为3.4MHz。另一方面,SPI需要更多的引脚,但其传输速率可达12.5MHz。

传感器对于ARV的前部单元而言非常重要,它用于指示“路上有东西”、“到了世界尽头”或“别碰我脑袋。”这些描述代表路上有东西、突然失去驱动表面(例如一个大洞、楼梯边沿或悬崖)以及ARV通过时必然会受损的低悬物体。

与ARV的通信总是使事情更有趣且增加了灵活性。许多无线模块采用标准UART进行处理器通信。通过创建低冲击(low-impact)协议,数据可在操作者和ARV之间传递。这使得速度、方向甚至传感器的限制都能得到改善。通过通信链路,研究数据还可以从传感器数据包送回。

将组件整合为一个工作系统

现在到了把所有这些组件放入一片FPGA构成一个工作系统的时候了。初始项目包含一个Nios II/e处理器、8KB内部RAM、两个SPI总线模块、两个带有速度计数器的马达模块、两条中断线路(用于加速计)以及增加其它I/O和传感器的能力。该项目在最小型的QFP封装内采用现有密度最低的Cyclone III器件(图3)。

图3:该GUI屏幕截图来自Altera的SOPC Builder工具,它描述了FPGA模块内的互连。图3:该GUI屏幕截图来自Altera的SOPC Builder工具,它描述了FPGA模块内的互连。

前文中例子讨论的是简单ARV,但真实的机器人世界并非如此简单。目前的FPGA可控制一个8轮驱动ARV,这个ARV可采用不同的“有效负载”功能选择。该单元采用了4个32位Nios II处理器,它们负责如下整体功能:

主处理器:做出最终决策、处理整体路径移动、负责与现实世界通信以及管理有效负载接口。

引导处理器:负责采集来自惯性测量单元(加速计和陀螺仪)、GPS模块以及过滤/导航算法的连续数据。

传感器处理器:该器件不停地与观察ARV周围环境的传感器阵列,以及专用传感器(即甲烷监视器、氧气监视器)通信;它包括从智能光检测和测距(激光雷达)单元发回的数据。

马达处理器:该部分控制驱动单元(不限于电动马达),也被用于液压系统;在电子系统中,它控制每个马达的RPM并监测马达的电流(仍然用于检测马达停转时的过电流);液压系统在阀控制功能(两个方向上的比例激励)及线压力方面更简单。

每个处理器都拥有用于存储引导/应用代码的ROM区域以及面向主处理器的暂存RAM。一个1KB的邮箱系统被划分成4个部分负责处理器间的通信。这使得主处理器可以给其它处理器“留下信息”,或重新获取决策所需的信息。

该邮箱需要一个仲裁器。每个处理器在试图读写邮箱RAM前都必须首先与仲裁器协商。由于整个配置是从头开始构建的,因此需要制订一个最基本的通信协议。最高优先级将保证没有其它的连接“挂起”互连总线。以下是邮箱的构建以及这些值的地址(表1)。

传统方法

所有基于FPGA的SoC在加快上市速度、降低原材料成本以及缩短测试/调试时间方面都具有设计优势。由于它是一款可重新配置的单芯片方案,因此可同时实施多个设计路线。

此外,在设计FPGA的过程中就可进行原理图绘制和PCB设计。也可在进行其它处理的同时为每个处理器编制软件流程图甚至具体实现软件。可利用FPGA完成板级或系统级仿真,而不必仿真多处理器环境。

可以轻松地将许多功能集成到FPGA内,然后可对设计及任何附加的软件进行重新编译。在采用分立微处理器的传统方法中,无法利用独立的处理器实现附加功能将迫使设计工程师重新设计、并加装一块新的电路板。这将造成时间和金钱的浪费并有可能对产品的市场占有率带来负面影响。

表2对比了基于Cyclone III FPGA及Nios II处理器的SoC与基于4个独立处理器的传统方法的成本和优势。(未列出专用传统处理器。)两种方法的功能尽可能接近,PCB面积是仅就电路板的这部分功能而言的。

在这个例子中,我们同样遵循惯常的作法,留出20%~40%的“余裕”用于可能的扩展。在Cyclone III产品家族内,某些物理封装允许将更大部件安装在相同大小的PCB上。这就为在不改变PCB的前提下获取更多逻辑资源提供了更大灵活性。

如表2重点强调的,基于Altera的设计实现在成本、设计灵活性和上市时间方面具有明显优势。对于任何特定应用来说,基于FPGA的SoC能够在硬件级对每个构建元素进行优化以得到最佳效果,这使得它成为构建机器人车辆应用的理想选择。

William Lovell
CEI及资深设计工程师
Email: wlovell@c-linksystems.com
c-Link Systems公司
Martin Won
资深技术专家
Email: mwon@altera.com
Altera公司

[大 中 小][打印]

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客