基于eTPU技术的信号处理模块的设计与实现

2014-11-10 06:18
关键词:管脚寄存器信号处理

华 金

(上海船舶运输科学研究所,上海200135)

0 引 言

目前,对于实时嵌入式系统中运行的控制器,更加注重其精确而快速的定时功能。频繁地中断服务程序将占据大部分中央处理器(Central Processing Unit,CPU)开销,削弱执行高速实时性任务的能力。为此,飞思卡尔将增强型时间处理单元模块(Enhanced Ti me Processing Unit,e TPU)作为其32位处理器的一部分,与主CPU并行运行,执行复杂的时序和输入/输出(Input/Output,I/O)管理。在CPU系统初始化过程中,对e TPU外设模块做相关设置即可自动产生或测量信号,无需CPU的干预,从而减轻CPU的工作负荷。以脉冲宽度调制功能(Pulse Width Modulation,PWM)和频率脉冲测量(Frequency of Pluse Measures,FPM)功能为例,设计与实现一般I/O信号处理模块的过程。

1 e TPU硬件结构

e TPU模块包含了运行需要的所有微控制器:共享代码存储器、共享数据存储器、微引擎、任务调度器以及32条I/O通道(见图1)。

各控制器的主要功能特点有:2个24位全局时钟计数寄存器TCR1和TCR2,为通道匹配和捕获提供基准参考;32个独立通道,每个通道有2个相互作用的事件集寄存器Action Unit A和Action Unit B,每个事件寄存器可设置为匹配寄存器、捕获寄存器、大于或等于比较寄存器,结构见图2;CPU接口模块,允许CPU控制e TPU操作,如初始化e TPU通道、提出服务请求和中断响应入口地址;共享数据存储器(Shared Pa-rameter RA M,SPRA M),可以被CPU和e TPU共同进行读写操作,是传递e TPU数据参数的平台;共享代码存储器(Shared Code Memor y,SCM),主要用于e TPU代码的存储;任务调度器,主要根据分配的优先级(高、中、低)和通道标记,决策所有通道的服务顺序,确保所有提出服务请求的通道被响应。

图1 eTPU硬件框图

图2 双动作通道结构

2 功能设计与实现

e TPU功能可涵盖所有重要应用领域,如I/O信号处理PWM、FPM等;通信接口功能UART、SPI、I2C等;以及在电机控制和汽车引擎,燃油喷射控制等。以PWM、FPM功能为例,阐述其设计与实现过程。

e TPU功能开发涉及两方面。

1.e TPU的主机接口(API)函数的开发,作为CPU和e TPU的交互控制。

2.e TPU固件代码,利用第三方软件编译器(如ByteCraft),生成的代码文件通过API函数写入共享代码存储器中。

2.1 PWM 功 能

通过CPU设置频率和占空比,产生0~100%PWM波形,可用于工业应用领域,如实现电机控制、调光等。

主机接口API函数

CPU调用主机接口函数fs_etpu_p w m_init(),产生服务请求(Host Ser vice Request,HSR),e TPU代码进入S0线程,管脚低电平输出,设置Action Unit A和Action Unit B的参考时钟及匹配时电平变化。等待Action Unit A产生匹配进入S1线程,管脚变高电平并配置下一次Action Unit A匹配时间点。同理,等待Action Unit B产生匹配进入S2线程,管脚变低电平并配置下一次Action Unit B匹配时间点。如果产生异常,进入S3线程进行处理。应用过程中可调用主机接口函数fs_et pu_p w m_update(),通过修改参数Period和Active Ti me的数值,实现不同频段的PWM输出。

2.2 FPM 功能

采用等精度的多周期同步测频原理,在特定时间窗口内对被测脉冲计数。通过计算,得出被测脉冲频率,可用于测量高精度要求的转速。

主机接口API函数

/*FPM初始化,设置测量时间窗口 * /

uint32 fs_etpu_f p m_init(uint8 channel,uint8 pri,uint32 window_size);

/* 修 改测量时间窗口 * /

uint32 fs_etpu_f p m_update_window_size(uint8 channel,uint32 windo w);

/* 获 取被测频率 * /

uint32 fs_etpu_f p m_get_freq(uint8 channel,uint32*freq);

e TPU固件代码

void FPM(Window,Edge Count,TCRCounts)

CPU调用主机接口函数fs_etpu_f p m_init(),产生HSR,e TPU代码进入S0线程,设置管脚为输入模式上升沿触发,设置Action Unit A参考时钟及匹配时电平无变化,置位flag0。待第一个上升沿信号触发进入S2线程,记录Ti meStart=ert A(捕获寄存器)和Acc Egde Count=0,开启测量时间窗口并复位flag0。在时间窗口未匹配之前,每次上升沿信号触发进入S3线程,记录上升沿时刻Ti meCurrent=ert A和Acc Egde Count++。最后,时间窗口匹配时进入S4线程,计算标准时钟个数TCRCounts与被测频率个数Egde-Count,赋值Acc EgdeCount=0和Ti meStart=Ti meCurrent,并产生1个中断,让CPU调用主机接口函数fs_etpu_f p m_get_freq()来获取被测频率,接着进入下一时间窗口测量周期。此外,CPU可以调用主机接口函数fs_etpu_f p m_update_window_size()产生服务请求进入S1线程,通过修改参数 Window数值测量时间窗口大小。

3 仿真与试验

e TPU的功能设计由ByteCraft C软件完成,结合ASH WARE仿真套件进行相关验证。图3为仿真验证图,提供了丰富的调试窗口,如查看变量和跟踪寄存器。

图3 仿真验证图

e TPU命令脚本文件中,设置CPU工作频率为100 MHz,CPU时钟的2分频分配给TCR1,e TPU引脚4、引脚5分别被定义为PWM和FPM功能。内部寄存器写入PWM周期及高电平保持时间,输出波形如PWMChannel所示,计算结果T=0x1000/50=81.92 us符合仿真结果Delta Cursor=081.914u S。

e TPU测试向量脚本文件中,定义变量state hi 1和state lo 0,激励基准波形频率为1 MHz,输出波形为如FPMChannel所示(hi 60 l o 40),理论频率计算为10 000 Hz。在某段时间窗口内,通过查看仿真后变量Edge Count=3,Elapsed TCRCount=15 000,计算结果

符合预期测量频率结果。

在Code Warrior开发环境下,初始化fs_et pu_init()、fs_etpu_p w m_init()、fs_etpu_f p m_init()等主机接口函数,PWM输出波形观察示波器及信号发生器产生激励用于测量频率,试验结果与理论预期完全吻合。

4 结 语

基于e TPU技术实现PWM和FPM等功能模块的简单的I/O信号处理,有效降低主CPU的负载,避免因中断风暴而导致系统瘫痪。经过测试验证,误差较小,符合高精度的条件,最多能实现32路通道以满足实际多路信号处理的要求。

[1] Munir Bannoura.e TPU Programming Made Easy[M].USA:A MT Publishing,2004.

[2] Enhanced Ti me Processing Unit(e TPU)Preliminary Reference Manual[EB/OL].[2004-05].http://www.freescale.co m.

[3] Freescale Cor p MPC5634 M Microcontroller Reference Manual[EB/OL].[2012-09-04].http://www.freescale.co m.

猜你喜欢
管脚寄存器信号处理
专题征稿启事
——信号处理
面向DSP+FPGA通用处理架构检测的硬件系统设计
Lite寄存器模型的设计与实现
基于MATLAB的语音信号处理
一种异步FIFO的Read/Write Data Flow Through功能测试方法∗
二进制翻译中动静结合的寄存器分配优化方法
基于DSP的电子侦察信号处理技术的探析
移位寄存器及算术运算应用
一种激光/无线电复合引信信号处理技术
略谈如何利用三极管管脚间电阻值判断其型号及管脚