摘要:eTPU(增强型时间处理部件)作为控制系统中的专用I/O通道,配合宿主机完成相应的功能。角度计数作为eTPU中最重要且最复杂的功能,通过I/O通道角度模式完成角度计数的功能。本文针对eTPU角度计数功能进行了深入研究、设计相应模式实现角度计数。经过对角度计数中几个关键点的分析,发现系统存在一定的缺陷,该缺陷产生系统延迟造成角度计数误差,为了消除此误差,本文提出了硬件和软件两方面的改进方案。通过改进,使得eTPU可以提供更为精确的角度计数。尤其通过本文的实现部分,让eTPU的使用方法更加便于掌握。
关键字:动力控制;宿主机;eTPU;I/O;角度计数;TRR
Research and Implementation Based on the eTPU Angle Counter Function
Wang Ying1, Jia Zhengqiang2, Zhang Min1
(1. Xi’an Aeronautics Computing Technique Research Institute, AVIC, Xi’an Xiangyue Science, Industry and Trade Co., Ltd., Xi’an 710068, China;
2. Xi’an Aeronautics Computing Technique Research Institute, AVIC, Xi’an 710068,China)
Abstract:As a special I/O channel in the control system, the eTPU (Enhanced Time Processing Unit) cooperates with the host computer to complete the corresponding functions. As the most important and complex function in the eTPU angle counter, which is completed through I/O channel angle mode. In the paper, the angle counter function of the eTPU is deeply analyzed, and the relevant mode is designed to implement the angle counter. Through the studies of several key points in angle counter, it is found that there are some defects in the system, which cause system delay and the angle counter error. In order to eliminate this error, the paper proposes the improvement scheme of hardware and software. Through the improvement, eTPU can provide more accurate angle counter. Especially through the implementation part of this paper, the usage method of eTPU is more convenient to master.
Keys words:Power Control; host core; eTPU; I/O; Angle Counter; TRR
随着动力控制智能化的发展,eTPU(Enhanced Time Processing Unit)被越来越广泛地应用。eTPU宿主机主要是面向汽车和自动机车的应用而设计的,需要处理大量的定时通道[1]。它属于专用I/O通道。
角度计数是eTPU中最重要且最复杂的功能,利用I/O通道进行角度计数[2]。本文针对角度计数功能进行深入的分析研究、设计模式并实现,对系统存在的缺陷进行改进。主要内容包括eTPU概述、角度计数结构、设计模式及实现和改进方案,重点是eTPU角度计数设计模式并实现及其实现过程中TRR(刻度数率寄存器)精度和高频率模式下的改进。
通过本文的深度研究分析及实现,为eTPU的使用和之后的发展改进提供一个更为清晰、合理的思路,也使得eTPU更加便于使用。
eTPU作为控制系统中的时间信号处理部件,其功能相当于宿主机的专用I/O通道,配合宿主机完成相应的功能。主要功能有输入捕获(捕获时间、角度计数)和输出匹配。
输入捕获功能是捕获输入事件的时间。使用时间信息进行一些计算,得到输入信号特性。角度计数是eTPU角度计数器在角度模式下完成角度计数的功能。
输出匹配是按照设定的时间输出预先设置的信号。通过控制两个匹配事件的间隔,输出一个预先确定的信号脉冲。
其功能由线程(微指令程序段)完成。eTPU是事件驱动,即只有来自事件的服务请求才能使eTPU微代码运行,这与计算机中的中断服务程序类似。事件驱动后进入相应的处理线程,完成输入/输出功能。
一个eTPU器件包含2个独立的eTPU部件[3]:eTPU A、eTPU B。eTPU结构图,如图 1所示:
宿主机和eTPU之间通过共享代码存储器、共享数据存储器和共享总线接口单元这三部分进行信息交互。
eTPU包含主机接口、调度器、微引擎、时基计数寄存器(TCR1、TCR2)、I/O通道,如图 2所示。
微引擎提供取微指令译码、执行单元和乘除单元,可以访问共享参数RAM、配置通道硬件、读取时间信息、执行算术和逻辑运算、根据众多标志位进行条件跳转。其并行架构可以允许在一个指令周期执行多个操作。
主机接口提供微引擎配置、时基配置和I/O通道控制;按照一定的步骤完成对微引擎和所有I/O通道的配置工作。
调度器为I/O通道分配服务时间,保证所有的通道请求都能得到及时的响应并按照预先设置的方式进行处理。
时基计数寄存器:每个eTPU引擎都有两个计数寄存器,它们为所有的匹配和输入捕获事件提供参考时基。
I/O通道:每个eTPU都有32个完全一致且相互独立的时间通道。每个eTPU引擎能执行多达32个功能(一次)。一个功能由多个通道来完成,但一次只能给一个既定通道分配一个功能。每个功能包含相应线程(微指令程序段)。每个通道对应一组输入和输出信号。
角度计数是eTPU输入功能中最复杂的功能。在角度模式中,通过处理传感器检测到的转齿计数跟踪齿轮的角度。
角度计数从捕获齿轮的齿周期到输出相应的转齿角度,包括输入、处理(控制逻辑)、输出。
1. 输入
输入包括两部分:齿周期和齿位置。
2. 控制逻辑
控制逻辑主要包括3部分:角度刻度数产生器、转齿可编写寄存器和计数控制&高速率逻辑。
其中角度刻度数产生器包括刻度数率寄存器、角度预加载器、小数累加器。
3. 输出
在角度模式中,计数寄存器2是一个简单的刻度数累加器。
硬件部分包括转齿可编写寄存器、刻度数率寄存器、角度预加载器、小数累加器、计数控制&高频逻辑、计数寄存器2。
1. 转齿可编写寄存器(TPR)
TPR(转齿可编写寄存器)是当前物理齿周期。TPR为角度计数回路提供配置。在该寄存器中,微代码能适当地调整转齿计数,设置最后齿,缺齿,物理齿插入和每个齿的角度刻度数(TICKS)数,强制eTPU角度计数停机。
TICKS为当前齿的角度刻度数。该字段定义了当前物理齿的角度刻度数。它由物理齿轮的实际齿数和系统要求的精度决定。
2. 刻度数率寄存器(TRR)
TRR为一个TICK的精确周期(TICK为角度计数的单位),有整数和小数两部分。
根据最后一个齿距的周期,对每个新齿重新计算TRR。每个齿周期通过调整TRR确保无论是加速、减速模式,TRR对应的角度TICK周期不变。
3. 计数控制&高频逻辑
在角度模式中,计数控制&高频逻辑用角度刻度产生器产生的角度刻度数控制计数寄存器2,负责在适当的时机增加,保持和重置角度刻度计数,因此计数寄存器2反映准确的角度。
通过正常(匀速),暂停(减速)和高频率(加速)模式之间切换控制计数寄存器2。eTPU角度计数连续工作并自动在正常(匀速),暂停(减速)和高频率(加速)模式之间切换。
在正常模式下,预测齿周期和实际齿同时结束。这种情况下,eTPU角度计数硬件在刻度数计数到达TICKS时,预测齿周期也结束。
暂停模式(减速情况下),预测齿周期在检测到实际齿之前结束。这种情况下,eTPU角度计数硬件在刻度数计数到达TICKS后等待,此时计数控制&高频逻辑不会重置角度计数器,也不会使齿计数器增值,直到表明收到实际的齿,然后继续正常工作。
高频率模式(加速情况下),实际齿周期比预测齿周期短,新的物理齿先到达。此时,eTPU角度计数硬件通过刻度保持更新频率为8分频系统时钟直到完成一个齿周期计数,进入下一个齿后切换回正常工作。
4. 角度预加载器
角度预加载器自动加载TRR整数部分并进行减计数,减计数至0产生一个时钟脉冲,将时钟脉冲加载到计数控制&高频逻辑和小数累加器中。
当角度预加载器收到来自计数控制&高频逻辑的高频率模式时,它以系统时钟分频产生角度刻度数。
5. 小数累加器
当小数部分产生溢出时表示角度刻度早一个计数寄存器1(TCR1)时钟,暂停预加载器操作,用TCR1时钟补偿整数预加载器产生的累积误差。
6. 计数寄存器2(TCR2)
在角度模式中,TCR2连续计角度刻度数。TCR2为TICK加计数,下一个输入捕获时复位,开始重新计数。
软件部分包括宿主机相关eTPU处理的代码、eTPU微代码。
1. 宿主机相关eTPU代码
宿主机上电/复位后进行总体初始化和eTPU通道初始化;
宿主机完成初始化工作后,对eTPU发出服务请求;
eTPU功能完成后将结果放至相应存储器,主机查询结果(角度计数)。
2. eTPU微代码
eTPU响应主机服务请求进行初始化;
eTPU通道接收到信号,进入相应线程完成输入捕获/输出匹配;
eTPU将结果放至相应存储器。
EAC(eTPU Angle Counter)中各寄存器及逻辑部件之间的关系如图 3所示:
将寄存器及逻辑之间的关系通过输入、处理、输出三大模块进行详细说明。即将输入捕获的时间TCR1(齿周期)经过处理得到角度输出TCR2。
一、输入
进入角度模式,齿周期(TCR1时间信息)和齿位置作为输入。
二、处理
处理主要包括3部分:角度刻度数产生器、TPR寄存器和计数控制&高频逻辑。
1. 角度刻度数产生器
有TRR、角度预加载器、小数累加器
1) TRR由整数和小数部分组成:
TRR= T(实际齿周期) / TPR.TICKS
整数部分直接加载到角度预加载器中;小数部分加载至加法器中,在小数累加器中进行累加,消除误差。
2) 角度预加载器:自动加载TRR整数部分并进行减计数,减计数至0产生一个时钟脉冲,将时钟脉冲加载到计数控制&高频逻辑和小数累加器中。
当角度预加载器收到来自计数控制&高频逻辑的高频率模式时,它以系统时钟8分频产生角度刻度数。
3) 小数累加器处理小数部分产生的溢出,消除累积误差。
2. TPR寄存器
TPR寄存器自动加载TICKS,进行减计数。TPR减至0时,通过下一次跳变检测是否到达,判断工作模式。如果同时到达,则表明为正常模式,否则为加速或减速模式。
TPR向计数控制&高频逻辑提供角度刻度数、物理齿计数、最后齿信息。
3. 计数控制&高频逻辑
在角度模式中,计数控制和高频逻辑用角度刻度产生器产生的角度刻度数控制TCR2操作。通过检测到的物理沿、TPR提高的角度刻度数、物理齿计数、最后齿以及角度刻度数计数,使TCR2产生精确的角度计数。
三、输出
TCR2通过角度模式和计数控制&高频逻辑进行复位、停机、加速率、正常进行角度计数。
通道选择角度模式完成eTPU角度计数功能。eTPU角度计数的实现分为初始化、实现逻辑。
宿主机与eTPU交互工作流程如图 4所示:
1. 主机和eTPU上电/复位,此时主机进行系统初始化,eTPU保持空闲状态;
2. 主机完成初始化工作后,对eTPU发出服务请求;
3. eTPU响应主机服务请求进行初始化;
4. eTPU通道接收到信号,进入相应线程完成输入捕获/输出匹配;
5. eTPU将结果放至相应存储器,主机查询结果(角度计数)。
初始化工作是指上电/复位后,宿主机和eTPU进行的准备工作。包括总体初始化和eTPU通道初始化。
上电/复位后,主机进行初始化工作,设置相关寄存器,具体步骤如下:
1. 加载eTPU执行代码;
2. 设置eTPU 相关寄存器,包括:系统配置、时基分配、任务表配置。
主机初始化完成后,eTPU进行通道初始化。主要包括:
1. 接收主机初始化状态参数;
2. 配置具体的角度通道寄存器;
3. 设置角度计数输入、输出的相关配置标志。
角度计数的实现逻辑主要是线程完成的。由于eTPU中任一功能的实现都是在特定的预定义通道模式中进行的,首先介绍预定义通道模式的选择,然后设计线程实现角度计数功能。
预定义通道模式的选择依据捕获的信号特性,这样可以高效的完成输入捕获并且得到准确的信号特性。
根据齿轮特性,完成通道角度计数设置预定义通道模式。下面首先介绍该模式的特性。
预定义通道模式定义了匹配和捕获之间的使能、禁止关系,以及发生顺序,时基选择,服务请求条件。
根据系统角度计数特点选择相应的预定义通道模式。
该模式提供一个齿信号到达的时间窗口,判断齿信号是否在窗口内。在时间窗口之前为干扰信号,需滤除;如果在时间窗口之后则为超时,进行相应的处理。
设置角度输入控制状态、编制相应事件服务程序,完成角度计数。服务程序包括输入捕获的处理和匹配处理。
1. 根据输入捕获时基,计算齿周期时间;
2. 根据齿周期时间值,计算角度计数刻度计数值;
3. 确定角度输入位置,设置缺齿、最后齿、插入物理齿状态;
TRR为TICK的精确周期,是根据前一个齿周期计算的。目的是为了及时调整TRR确保无论是加速还是减速,TRR对应的角度TICK周期不变。
每个齿周期都需要在线程中计算TRR,使得下一个齿周期的角度计数存在一定的延迟,由此给系统带来一定的误差。为了消除此误差,得到更精确的角度计数,可以从硬件和软件两个方面考虑。
硬件改进方案:将TRR的计算加入到角度控制逻辑中实现,由硬件逻辑直接完成,以此消除线程计算带来的时间延迟。
软件改进方案:主要考虑在TRR的计算中对由于计算带来的时间延迟进行补偿,具体方法如下:
1. 确定TRR计算延迟时间(将微程序的执行时间换算成角度计数的时间);
2. 对比前齿周期与当前齿周期,对TRR进行相应的补偿;
3. 前齿周期大于当前齿周期时,TRR计算的值-补偿值作为实际的TRR计数值;
4. 前齿周期小于当前齿周期时,TRR计算的值+补偿值作为实际的TRR计数值;
5. 补偿值=延迟时间/TPR
高频率(加速)模式下,由于实际齿周期比预测齿周期短,新的物理齿先于预测齿到达。此时,eTPU角度计数硬件将脉冲计数以系统时钟8分频加速TCR2计数,直到完成一个齿周期计数。该处理对系统造成一定延迟,为角度计数带来一定的误差,为了消除此误差,可以从硬件和软件两个方面考虑。
硬件改进方案:由于TPR和TCR2同源都是TICK计数(TPR是TICK减计数、TCR2加计数),将TPR剩余值直接加至TCR2中,消除延迟。
软件改进方案,具体步骤如下:
1. 确定延迟时间(系统8分频计数所需时间);
2. 对TRR的实际值进行补偿,TRR计算的值-补偿值作为最终实际的TRR计数值
3. 补偿值=延迟时间/TPR
eTPU作为专用I/O通道能有效提高宿主机的运行效率,它被越来越广泛地应用于动力控制系统。
本文对eTPU角度计数功能进行了深入研究分析。现有eTPU系统可以提供基本的角度计数功能,但还存在一定可改进的空间。改进后,可以提供更精确的角度计数。本文从硬件和软件两个方面提供了初步的改进方案,提供了eTPU的一个发展方向。
[1] [美]Richard Soja Munir Bannoura. MPC5554/5553微处理器揭秘[M]. 龚光华 宫辉 安鹏,译.北京:北京航空航天大学出版社,2010
[2] Freescale Semiconductor, Inc.MPC5566 Microcontroller Preliminary Reference Manual[M] Rev. 2. 06/2006.
[3] Motorola, Inc.Enhanced Time Processing Unit (eTPU) Preliminary Reference Manual[M]. 5/2004 REV 1
作者简介:王颖(1985-),女,甘肃陇南人,工程师,硕士研究生,主要研究方向为计算机应用