您当前的位置:五五电子网电子知识单元电路接口电路HPI接口在TI SOC的应用介绍 正文
HPI接口在TI SOC的应用介绍

HPI接口在TI SOC的应用介绍

点击数:7133 次   录入时间:03-04 11:52:58   整理:http://www.55dianzi.com   接口电路

    图3. HPI读写数据流

    HPID的访问分为自增模式和非自增模式。在自增模式下,访问HPID后,HPIA会自动增加指向下一个字地址,在连续访问时,自增模式因为减少了主机对HPIA的操作,可以增加HPI数据访问的吞吐率。非自增模式下访问HPID后,HPIA的值保持不变,主机需要更新HPIA来访问下一个地址。

    在写操作时,主机把数据写到HPID,HPI将第二个半字的数据通过HSTROBE的上升沿锁存到HPID后,将HRDY置为忙状态,并启动HPI DMA将HPID的内容搬到HPIA所指向的内存单元,然后清除HRDY指示可以进行下一次操作。

    在读操作时,在第一个HSTROBE的下降沿,HPI采样到HR/W为读命令,则将HRDY置为忙状态,启动HPI DMA将HPIA指向的内存单元的数据搬到HPID,清除HRDY忙状态,主机端方可结束总线访问周期,锁存数据线上的有效数据。



www.55dianzi.com

    5. HPI操作流程 

    主机对HPI的一次总线访问周期为分三个阶段:主机发起访问,HPI响应,主机结束访问周期。

    A. 主机发起访问:即对HPI寄存器的读,或者写命令。主机送出的硬件信号为HSTROBE(由HCS, HDS1/2产生),HR/W,HCNTL0/1,HWIL,以及HD[0:n]。HPI在HSTROBE的下降沿采样控制信号HR/W,HCNTL0/1,HWIL判断主机的操作命令。

    B. HPI响应:HPI在HSTROBE的下降沿采样控制信号,根据控制信号做出相应的响应。如果是写(HR/W为低)命令,则在HSTROBE的上升沿将数据线上的信号锁存到HCNTL0/1和HWIL指向的寄存器。如果是读命令(HR/W为高),如果是读HPIC,或者HPIA寄存器,HPI将寄存器的值直接送到数据总线上;如果读HPID,HPI先将HRDY置为忙状态,HPI DMA将数据从HPIA指向的内存单元读到HPID,再送到数据线上,并清除HRDY忙状态,在读HPID后半字时,数据从寄存器直接送到数据总线上,不会出现HRDY信号忙状态。

    C. 主机结束访问周期:对于写操作,主机将数据送出后,只要满足芯片手册中HPI对HCS的最小宽度要求,即可结束访问周期。对于读HPID操作,要等HRDY信号由忙变为不忙,主机才能结束访问周期。

    a) 两次连续的HPI操作的间隔,在芯片手册的HPI时序参数表里有要求,最小间隔为两个HPI功能模块时钟周期。

    6. HPI常见故障案例分析 

    在HPI应用调试过程中,常遇到的问题分为:写数据不成功,读数据不正确,HRDY常高。这些问题通常都是由于时序不正确造成的,下面结合实际应用当中的案例进行分析。

    6.1 写数据不成功 

    案例的硬件连接如下:

硬件连接

    硬件连接

    首先关注核心信号HSTROBE由DSP_CS,ARM_WR(HDS1),ARM_RD(HDS2)产生,从下面时序图可以看出ARM_WR的下降沿是最后产生的,所以写操作时HSTROBE的下降沿反应的是ARM_WR的下降沿。

    写HPIC的时序截图如下:

写HPICHPID的时序截图

    写HPICHPID的时序截图

    两个时序图显示主机送出的数据111b在HSTROBE(ARM_WR)的下降沿后,很快被改变成其它值000b。在写HPID的时序截图中,第一个HSTROBE的下降后,HPI送出HRDY信号,然后数据线被改变,首先判断HPI对主机的命令做出了响应,通过HRDY信号的出现时机,说明HPI判断这是一个读操作,可以判断为HSTROBE的下降沿采样HR/W信号不正确。

    从硬件连接来看,HSTROBE(HR/W)要采样HR/W,HCNTL0/1来判断主机命令, HR/W的与HSTROBE为同一信号源,且同为下降沿,HR/W与HSTROBE的下降沿之间的setup时间不够,采样HR/W的电平状态出现误判,认为是高电平读命令,HPI对读命令的响应则是在第一个HSTROBE的下降沿之后送出HRDY信号,并在HRDY之后,HPI送出数据到总线上。

    对于该问题,需要对参与HSTROBE逻辑译码的HR/W信号的下降沿做延时处理,可在逻辑电路如CPLD或FPGA里实现,以确保HSTROBE的下降沿采样到稳定的HR/W电平。

    6.2 读数据不正确 

    通常表现为读读HPIC,HPIA正常,但读HPID不正常,前半字为0,后半字正确,对同一个地址读两次,第二次的数据完全正确。

    在案例中,用示波器观察HCS与HRDY之间的时序关系,发现HCS的上升沿在HRDY的上升沿之前,即主机在HPI数据有效之前结束了访问周期。HRDY的上升沿其实是因为HCS的结束而拉高的,并非数据真正有效。

示波器观察HCS与HRDY之间的时序关系

    示波器观察HCS与HRDY之间的时序关系

    用户由于没有在硬件上将HRDY与主机PowerPC的TA信号互连,没有硬件握手机制,于是从软件配置上加大主机的总线访问周期,即增加HCS的宽度,故障现象没有变化。

    原因分析:读HPID与HPIC,HPIA时序不同,读HPID操作需要HPI DMA从HPIA所指向的地址读数据到HPID,会有时间上的延时。而读HPIC和HPIA直接从寄存器读数据,没有延时,所以读HPIC,HPIA是正确的。在读HPID时,HPI会在第一个HSTROBE的下降沿后将HRDY置位,指示数据未准备好的忙状态,主机应当在总线上插入等待周期,数据准备好后HPI清除HRDY,主机才可以结束总线周期,通过HCS的上升沿将有效数据锁存。

    HSTROBE的下降沿到数据有效之间的延时与芯片及HPI接口的工作频率相关,以C5502,C5501为例,在芯片手册中,这个延时参数H1在SYSCLK1与CPU时钟的分频为4时,最大延时为12*2H+20(ns),H=SYSCLK1/2,在HPI启动期间,PLL没有倍频,处于旁通状态,系统输入时钟就是CPU的工作时钟,SYSCLK1默认分频为CPU时钟的4分频,以输入时钟为25MHz为例,最大延时为:

延时计算

    延时计算

    这个时间长度通常超出了主机端总线周期的软件配置范围,所以通过软件配置增加HCS的宽度不一定能满足HRDY的最大延时要求。在有的DSP芯片手册上只提供了HRDY的最小延时,最大延时与芯片的优先级设置,及系统配置相关而不确定,比如与系统中其它主模块如EDMA同时访问DDR,那么延时与HPI的优先级,EDMA的优先级,EDMA的burst长度,以及DDR的命令排序等配置相关,这样通过延长主机的总线访问周期,更加不可靠。

    解决办法:在硬件设计之初,一定要利用HRDY硬件握手信号[2][3]。虽然有的芯片HPIC寄存器提供了HRDY软件握手方式,只能做为弥补硬件设计之初遗漏HRDY硬件握手信号的权宜之计,软件轮循HRDY的办法会带来额外的开销,降低HPI总线的吞吐率,增加主机软件实现的复杂度。而且有的芯片HPI不支持HRDY软件查询方法,只能通过硬件HRDY保证数据的有效性。

    6.3 HRDY常高 

    有的系统在长时间运行中偶尔出现HRDY常高,导致主机端总线访问异常,需要重新上电才能恢复HPI的正常操作。这种故障是由于HPI状态机出现异常。

    从实际故障定位中总结出以下几点原因:

    A. HPI的高低半字访问的顺序访问被其它HPI访问打断:在复用模式下,一个完整的HPI访问是由高低半字两次访问组成,需要严格保证,否则会破坏HPI的状态机,从而导致不可预期的后果。

    B. 主机通过HPI访问了DSP内部的保留空间,或者破坏了DSP的程序,数据空间,导致DSP运行异常,进而导致HPI状态机异常。

    C. 主机的HSTROBE信号有毛刺,或者信号完整性不好,如下图中HCS(些案例HSTROBE是由HCS控制)的上升沿的回勾,都会导致HPI误判断为主机的新的访问的开始,从而打乱了高低半字的访问顺序要求,导致HPI状态机的错乱。

HSTROBE信号

    HSTROBE信号

    7. 总结 

    HPI是一种简单的异步接口,只要设计中满足了时序要求,即可稳定工作。在开发当中遇到数据读写不正确,从HSTROBE信号入手检查与之相关的信号的时序关系,便可以找出问题原因。另外,信号完整性是任何系统稳定工作的前提。

    关于特定芯片上HPI接口的特有功能本文没有针对讨论,如C6727的字地址模式和字节地址模式可通过HPIC配置;C6727在HPI启动后ROM bootloader将HPI关闭,需要软件重新使能才能使用等;以及不同芯片的HPI启动模式下的跳转方式不同,请参考相应芯片的HPI手册及bootloader应用手册。



上一页  [1] [2] 


本文关键字:接口  接口电路单元电路 - 接口电路