简介
HPI接口是TI为处理器之间直接互连通讯定义的一种异步接口,大多数TI DSP芯片上都有HPI接口。HPI接口是从(Slave)端口,接在主机的扩展内存总线上,DSP不能通过HPI向主机(Host)的访问,只能被主机读写。两个DSP的HPI接口之间不能通讯。两个DSP之间互连,可以将一个DSP(从)的HPI接到另一个DSP(主)的扩展内存接口(EMIF)上[1]。
1. HPI工作模式
不同系列DSP上的HPI接口版本有所不同,区别体现在DSP对HPI的控制上,如C6727上的UHPI可通过寄存器使能与关闭HPI接口,对主机访问DSP内存空间的控制,以及对HPI接口信号的功能复用上。但从主机访问的角度,HPI的工作模式分为:复用模式(Multiplexed-Mode)和非复用模式(Non-multiplexed-Mode)。
复用模式下没有地址线,主机访问DSP的地址信息是以数据方式送到HPIA(HPI地址寄存)。从硬件信号的角度,地址,数据信号是由同一组数据线传递,所以称为复用模式。
非复用模式的数据线与地址线是分开的,与内存接口连接相似。非复用模式不需要操作HPIA寄存器,主机访问的地址信息通过地址总线直接送给HPI.
所有的HPI接口都支持复用模式,但不是所有芯片的HPI接口都支持非复用模式(参考相应的芯片手册确定是否支持)。除了有无HPIA的操作区别外,两种模式的操作没有区别。因为非复用模式的操作是复用模式操作的子集,为方便起见,本文以复用模式展开讨论。
2. HPI硬件信号连接
HPI接口复用模式连线如图1所示,根据在应用当中的必要性分为:必要的,和可选的两组信号。可选的信号以虚线表示。
图1. HPI接口复用模式硬件连接
数据线HD[0:n]:在复用模式下,数据线的宽度一般为CPU位宽的一半,一个HPI访问分为高低半字的两次访问,如C5000是16-bit CPU,HPI数据线为8位,C6000是32-bit CPU,其HPI数据线为16位。C64x系列的HPI支持32位,在32位模式下一个HPI访问不需要分为高低半字两次访问组成一个完整的访问。
HCNTL0/1,HWIL:HCNTL0/1选择要访问的HPI寄存器,HWIL控制访问寄存器的高低半字,必须先高后低。一个寄存器的高低半字的两次访问一定要连续完成,中间不能插入其它的HPI操作。只有HPIC可以只访问半个字。
HR/W:指示对HPI寄存器进行读,还是写操作。如果主机的读,写信号是分开的,可以利用其中一个信号,但要注意做上拉或下拉处理以控制其在三态时的电平。
HCS,HDS1/2:这三个信号根据图2的逻辑产生内部HSTROBE信号,其逻辑关系是要求HDS1和HDS2信号相反,HCS低有效。HSTROB下降沿的时间点反应的是三个信号中最后跳变的信号。HPI在HSTROB的下降沿采样控制信号HR/W,HCNTL0/1,HWIL以判断主机要对哪个寄存器进行读,或者写操作命令。注意控制信号在HSTROBE的下降沿之前需要最少5ns的setup稳定时间,而HDS1/2和HCS到HSTROBE信号内部门电路的延时是皮秒级的,所以控制信号的setup时间需要外部时序保证。
图2. HSTROBE信号产生逻辑
HRDY:HPI的输出信号,指示当前操作状态,用做硬件流量控制握手信号。
HINT:通过HPI,主机与DSP之间可以互发中断。HINT是HPI送给主机的中断信号,DSP对HPIC[HINT]位写1,HINT信号线上送出高电平信号,主机可利用此信号做为中断信号输入。DSP不能清除HPIC[HINT]状态,主机在响应中断后,需要对HPIC[HINT]位写1清除状态,DSP才能再次对HPIC[HINT]置位发中断。主机通过写HPIC[DSPINT]置1给DSP产生中断,DSP在响应中断后,需要对HPIC[DSPINT]写1清除状态,主机才能继续操作HPIC[DSPINT]给DSP发中断。通过HPI传输数据,结合互发中断做为软件层的握手信号,可有效提高通讯的效率与灵活性。