- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
低功耗通用语音处理平台的设计实现
2.3 MCU与DSP的接口电路及通信方式
DSP(TMS320VC5510A)提供了增强型主机接口(EHPI),可以工作在数据地址复用和不复用2种模式。在本例中采用了数据地址复用方式。MCU(MSP430F149)与DSP EHPI具体连接方式如图4所示,EHPI的接口时序如图5所示。
MSP430F149 与TMS320VCAA10A EBPI 连接示意图
图4 MSP430F149 与TMS320VCAA10A EBPI 连接示意图
EHIP 接口时序图
图5 EHIP 接口时序图
主机接口的关键控制信号线功能简述如下。
HD[15:0]:HPI数据线,双向,三态总线。在复用模式下,通过这16位总线传输地址和数据。
HA[19:0]:HPI地址总线。在复用模式下,HA[1]用作HCNTL1信号线,HA[2]用作HAS信号线。
HCS:HPI的片选信号线。作为MCU访问DSP时的片选信号,在访问过程中一直保持为低。本例中为了节省主机的I/O口线,将其一直接低。
HR/W:HPI读写信号线。标识着MCU与DSP的通信方向。该信号线为高,表示MCU从DSP的存储空间中读取数据;为低,表示MCU将数据写入DSP的存储空间。
HDS1/2:HPI数据控制信号。可以适应不同类型的MCU的数据控制信号。要将HCNTL2置高,本例中的接法是HCNTL1通过MSP430F149的P2.1来控制。
HRDY:HPI准备好信号。DSP通过该信号通知MCU当前主机接口是否可以访问。为低,DSP的主机接口忙,MCU不能通过它访问;为高,可以访问。
HCNTL0/1:HPI访问控制信号。在复用模式中,通过这2个信号决定本次MCU访问的是DSP的HPI接口的内部寄存器。
HAS:HPI地址控制信号。在复用模式中,直接置高。
HMODE:HPI模式选择信号。置高,HPI工作在非复用模式下;置低,HPI工作在复用模式下。
HINT:主机中断信号。当DSP将该信号线置低时,表示DSP请求主机中断。因此这根信号线应加上拉电阻。
HBE0/1:HPI字节使能信号。TMS320VC5510A中置低,忽略该信号。
MSP430F149通过向DSP主机接口内部的3个寄存器写入相应的数据来控制相应的通信方式。在复用方式下,这3个寄存器分别是 HPIC(控制寄存器)、HPIA(地址寄存器)、HPID(数据寄存器)。为了提高在复用方式下的访问速度,DSP的HPI接口还提供了另外一个数据寄存器。当MCU访问连续地址时,可以通过HCNTL0/1选择利用这个数据寄存器进行连续访问DSP内部存储器,相应的地址寄存器会在每次访问这个数据寄存器之后自动增加。
MCU和DSP的通信通过中断完成。其中MSP430F149通过访问HPIC寄存器,将其中的DSPINT位置1来触发DSP的中断,而DSP则通过将HINT信号线置低来触发MCU的中断。
当前的硬件平台中,通过置I/O口线的方式实现了MCU对DSP主机接口的读写操作,可以选择通过主机启动DSP的方式[4]。启动过程的框图如图6所示。
HPI 启动方式流程图
图6 HPI 启动方式流程图
3 系统软件优化降低功耗
上面已提到,在硬件平台的设计中采用了低功耗的器件,属于低功耗设计中的静态技术。在系统软件的具体实现中,可以根据执行算法的情况进行动态调整,从而达到降低系统功耗的目的。由于DSP采用内部可编程锁相环(PLL)产生时钟,可以使处理器根据对于计算能力的即时需求动态改变运行速度。虽然系统提供了几种低功耗模式,但是相应的唤醒时间各不相同,实际中要根据具体情况对功耗和唤醒时间综合考虑。
由于MCU具有较强的事件响应能力以及DSP具有较强的数据处理能力,因此可以通过MCU针对不同算法动态地改变系统的工作频率及DSP的工作状态,从而降低系统功耗。例如在该平台运行清华大学自主研制的600、1 200、2 400bps语音算法,需要针对不同算法要求不同的数据运算量进行动态配置。DSP采用MCU提供的8.192MHz的时钟、通过片内集成的DPLL进行倍频得到所需要的主时钟。由于系统的部分代码是处于54兼容模式下,所以在系统软件的主函数中,当不需要进行编解码操作时,系统可以处于正常状态,即IDLE1或IDLE2状态。更具体的管理可以使用c55x系列的IDLE domain(IDLE域)机制进行管理[6]。3种状态具体描述如下:
NO IDLE:定时器、通用串口和内核均处于正常工作模式。
IDLE 1:定时器和通用串口正常工作模式,内核处于IDLE状态,由中断唤醒。
IDLE 2:定时器、通用串口和内核都处于IDLE状态,由中断唤醒。
针对不同的算法,由于要求的数据运算量不同,能够保证算法工作的最低系统频率也不同。通过对不同的数据运算要求动态调整系统的工作状态,可以最大限度地实现降低功耗的目的,从而实现针对不同运算量的功耗控制。实际使用中,当DSP:运行600SELP算法时,系统工作在32.768MHz;运行1 200SELP算法时,系统工作在40.960MHz;运行2 400SELP算法时,系统工作在24.576MHz。与单一的运行在81.92MHz情况下相比,系统功耗分别降低了41%、36%、48%,大大减少了系统功耗。
该硬件平台已经成功运行了G.723.1、G.729A/B和CVSD等算法,并且获得了良好的效果,具有广阔的应用前景。
来源:维库