让我们更近距离地了解电机控制eTPU的可能性。老版本的TPU已经能够控制步进式电机--在最短时间内到达需要的位置;处理来自正交解码器的信号,进行位置和速度测量;为电源逆变器生成辅助的PWM信号。然而,在使用eTPU时,飞思卡尔工程师向前迈进了一大步。他们能够最充分地利用eTPU的新功能和更好的算术运算性能。因此,eTPU可以成为一种完全成熟的电机控制协处理器。例如,他们将eTPU用于直流电机、无刷直流电机(BLDC)、永磁同步电机(PMSW)和交流感应电机(ACIM)控制用途,包括电流、速度和位置闭环。eTPU功能库还包括一些用于PMSW和ACIM矢量控制的功能,这被视为最先进的控制技术之一。当使用eTPU作为电机控制协处理器时,CPU的唯一工作就是设置所需的值,如所需的扭矩、速度或电机位置。eTPU模块负责处理所有的必要任务,而不会产生中断,也不会干扰CPU。由于eTPU是为处理两相信号设计的,因此不可能独立测量一些类似数据,例如相电流或直流总线电压。相反,它能通过DMA转移,确保CPU不会受到干扰,触发模数转换器,接收取样值。
eTPU详解
eTPU模块包含了它运行所需的所有微控制器:数据和程序存储器、微引擎、任务调度器以及32条I/O通道。
图1:eTPU方块图。
I/O通道
32条I/O通道中的任何一条都可以配置作为输入或输出通道。每条通道还包含两个硬件"输入捕获/输出比较"动作单元,能在无需服务的情况下处理两个事件,例如,先生成上升沿,然后生成下降沿,或捕获两个连续沿的时间。凭借这种能力,它可能生成或测量非常窄的脉冲。在一个或两个事件后,通道会请求CPU服务。实际上,对CPU来说,这并不是中断,该通道只是通知调度器:必须读取捕获的值,为以后的事件设置通道动作单元。
调度器
由于eTPU拥有32条通道,但只有一个微引擎,很多通道可能在同一时间请求服务,因此就必须决定首先应为哪条通道服务。这就是调度器的工作。调度器根据用户设置的各条通道的优先级和内部调度算法做出决定。一方面,这种算法使它能够更快、更高频率地为高优先级通道服务,另一方面,它又能防止低优先级通道被高优先级通道消除。一旦选择了通道,微引擎就在可用通道上下文中开始其服务。事件服务不能中断,出于这个原因,下一个服务必须在当前服务完成后才能处理。
调度器的决定过程正好占用3个eTPU周期。对于在100MHz系统频率下(既不是配有eTPU的处理器之间的最大频率,也不是最小频率)运行的处理器而言,事件服务可在事件发生后的60纳秒后开始。这要比CPU中的中断延迟快得多。相反,当几个服务请求同时发出时,这个时间可能会长很多。良好的eTPU功能不应在一条通道的服务上花费太多时间,以保证不延迟其它通道。对时间要求非常苛刻的任务应作为不同事件的几个服务或一个事件的几个服务进行调度组织。
微引擎
除了算术逻辑单元以外,eTPU微引擎还包括一个乘法和除法单元,使eTPU变得更为强大。eTPU微引擎基本整数大小为24位。一个eTPU周期占用两个CPU时钟周期。可以通过一条eTPU指令,访问存储器或为通道硬件服务,从而进行算术运算。
eTPU整数大小为什么是24位,而不是16位或32位?24位分辨率对定时模块意味着什么?我们想一下,一颗100MHz处理器,带有eTPU时钟定时器,在50MHz (100MHz/2)的最大频率下运行。这意味着eTPU时间分辨率是20纳秒(1/50MHz)。eTPU能在指定时间内转换输出针脚,精确度达到±10纳秒,另外,它还能捕获跳变时间,同样达到±10纳秒的精确度。这真的非常不错,并且没有不必要地过度精确(取决于应用)。同时,eTPU硬件能在上述准确度范围内,生成或测量最大宽度达到0.335秒(224*20纳秒)的脉冲。对于16位分辨率,其最大脉冲宽度将为0.0013秒,这是远远不够的,而如果是32位准确率,其最大脉冲宽度是1分钟25秒,这又是不必要的。
代码和数据存储器
在eTPU模块初始化期间,CPU将eTPU二进制程序代码(选定的eTPU功能集)加载到eTPU代码存储器中。然后,eTPU代码存储器就被锁住。一旦eTPU运行,代码存储器就只能由eTPU访问,而且为只读。eTPU和CPU都可以访问数据存储器,可以进行读写。数据存储器管理数据交换空间,以便在eTPU和CPU之间交换数据(参数、变量和结果)。
应用中的eTPU使用
截至目前,我们已经介绍了eTPU的功能、eTPU的用途以及它的内部结构。现在,让我们了解一下工程师的工作,他们才是那些在真实应用中使用eTPU的人。在使用飞思卡尔eTPU库时,只需要两个简单的步骤。第一步的目标是创建eTPU二进制程序代码。eTPU代码存储器的空间不足以容纳飞思卡尔的整个eTPU库。但是,没有一种应用会同时需要所有功能。我们可从库中选择必要的功能,并将它们集中在一起,这就足够了。飞思卡尔网页上提供了一个用于这种用途的简单编辑工具。如图2所示,用户选择希望在其应用中使用的eTPU功能,然后点点"Compile(编辑)"按钮,即可生成eTPU二进制程序代码,并能随时下载到用户的计算机中。
图2:飞思卡尔网页上的eTPU功能选择器。
第一个控制平面包括处理器选择和时钟频率设置。在第二个控制平面中,用户可以选择所需的功能。第三个控制平面用于设置全局eTPU选项,最重要的是选择内部时钟和通道输入数字过滤器。第四个控制平面上带有通道设置,为特殊通道和特殊功能参数分配的eTPU功能都在此设置。
eTPU功能的通道分配以及功能参数的设置决定了eTPU的负载。图形化配置工具可以计算出该负载,并以百分比的形式表示出来。在大多数情况下,结果都相当不错,只有在少数几个应用中,eTPU负载比较高。在这种情况下,应该考虑在eTPU上运行的功能的定时,这一点非常重要。必须确认:可能出现的最大服务延迟不会过长,及至影响到正常的功能。而且,这并不是一项无关紧要的任务。我们需要了解调度器算法、eTPU功能的通道分配、功能参数、输入信号参数、通道优先级,以及所有事件的服务时间。更简单的途径是使用eTPU模拟器,模拟最关键的场景,了解定时。
eTPU应用示例
最后,让我们介绍几个使用eTPU模块的应用。
通信网关
ColdFire MCF5235处理器控制通信网关,这些网关通过串行链路,在TCP/IP网络中的计算机和一系列通过串行链路连接到网关的传感器之间传输数据。MCF5235带有三个用于串行通信的UART模块。它还可以使用由8 UART eTPU功能分配的16条eTPU通道,连接另外8个传感器。在8 x 57.6 KB/S的传输速度下,eTPU模块负载约为56%。
简单逻辑分析仪
该应用基于ColdFire MCF5235处理器,处理器放置在只有信用卡大小的评估板上。它为eTPU和CPU分别单独处理时间关键任务和高级控制任务提供了很好的范例。eTPU模块负责管理输入逻辑信号取样。与普通逻辑分析仪不同,它不会定期对输入信号进行取样,只是在任何输入的状态发生变化(上升和下降沿),跳变时间被捕获时,它才会取样。这就是eTPU的工作。CPU提取数据块,并对它们进行处理。处理器内核上运行操作系统uClinux,包括TCP/IP支持、Web服务器和其它部件。逻辑分析仪连接到局域网,网络中的任何PC都可以控制它,并显示测量的信号。必须将正在逻辑分析仪内运行的Web服务器的地址键入到Web浏览器中。您可以在逻辑分析仪网页上设置测量参数、设置触发、查看测量的信号,并阅读文档。
两个永磁同步电机矢量控制驱动
PowerPC MPC5554处理器包括一个eTPU模块,带有64条通道、两个引擎和一个共享数据及程序存储器。eTPU用于两个永磁同步电机(PMSM)的独立矢量控制驱动。CPU程序只设置每台电机所需的扭矩。从定时的角度看,以下配置似乎是最佳的。一个eTPU引擎只负责处理来自两台电机的位置传感器(正交编码器)的信号。它可以实现每秒50万个脉冲的处理能力。两台电机(安装了编码器,每转1024个脉冲)可以同时在15 000 rpm的理论速度下运行。然后,备用引擎负责管理PWM信号生成,并控制两台电机。其负载是恒定的,与电机速度无关。在20kH的PWM频率和20kH的控制环路更新的条件下,它承担78%的负载。
结语
eTPU在汽车行业的嵌入式系统中占据着非常重要的地位。然而,它也可以在其它一些领域中得到很好的使用。eTPU是一个可编程的外围设备模块,是一种介乎嵌入式软件和硬件模块之间的处理单元。在为eTPU编程时,软件工程师面临一些困难,因为他们必须符合eTPU硬件的要求。硬件工程师通常说,只有硬件才是可靠的,包含软件的任何产品总是存在这样那样的缺陷。飞思卡尔提供的现成eTPU功能库使这种情况得到一定改观。该库可以帮助软件工程师避免错误。根据对eTPU web工具的访问次数的评估,我们可以说,eTPU的使用正在日渐增多。在评估eTPU库、源代码模块、文档和配置工具的下载数量时,我们也注意到了同样的上升趋势。我们可以设想开发人员正在关注这一领域,而且还在试图充分利用这些免费的工具和库。我们将看到eTPU会取得多大的成功,它在现代嵌入式系统中的使用是否会越来越多,因为它的功能实在值得我们关注。
文章评论(0条评论)
登录后参与讨论