HPI接口在TI DSP中的应用及常见问题分析
寄存器地址映射
4. HPI寄存器功能说明
HPIC (HPI Control Register)
HPI控制寄存器HPIC的位图如表3所示,C6000系列DSP的HPI寄存器是32位的,也只有低16位有效,与C5000系列DSP的HPIC寄存器定义的功能保持一致。不同版本的HPI接口的HPIC位定义的主要不同之处在于软件握手HRDY位的有无,其它位名称可能存在细小差异,但功能定义都是一样的。
表3:HPI Control Register
主机在对HPI进行访问前可以通过HPIC配置字节序(HWOB)和地址寄存器模式(DUALHPIA)。默认的配置为HWOB=0,即先访问高半;DUALHPIA=0,即单地址寄存器模式,读和写操作使用同一个HPIA;通常都采用默认的HPIC 寄存器配置。
HWOB与硬件信号HWIL是没有联系的,HWIL信号必须保证先低后高分别访问两个半字单元。至于先访问一个字当中的高或低半字,是由HWOB控制的。
HPIA (HPI Address Register)
物理上存在HPIAR,HPIAW两个地址寄存器。HPIAR是读操作地址寄存器;HPIAW是写操作地址寄存器。由HPIC的DUALHPIA位来决定是采用双地址寄存器模式还是单地址寄存器模式。如果采用双地址寄存器模式,在对HPIA操作之前,通过设置HPIC的HPISEL位选择下一个要访问的HPIA.通常为了简化在读写操作转换时对HPIC的操作,选用单地址寄存器模式。
HPIA的地址信息在不同系列DSP上有所不同:
在C5000上,数据空间,I/O空间只能按16位字寻址,程序空间按字节寻址。HPI的DMA访问属于I/O空间,HPIA的值代表16位字地址。如主机端要访问DSP内存字节地址0x100, 则要往HPIA写的地址值是0x80.在用HPI启动时,要注意DSP代码是按字节地址链接的,即代码段的地址是字节地址,主机端要将代码段的地址信息除以2再送到HPIA.
在C64上,HPIA的值代表字节地址,但是HPI访问的数据是32位的,所以HPI会忽略HPIA地址值的低两位。
在C64+的DSP上,HPIA代表32位字地址,HPI会将字地址左移两位转换成字节地址,主机若要访问DSP字节地址0x100,则要赋值HPIA 为0x40.
HPID (HPI Data Register)
主机通过HPI对DSP的内存访问是间接访问,主机只能访问HPID,HPID与DSP内存之间是通过HPI专属的DMA进行数据搬运的。如图3所示。
图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置为忙状态,启动HPIDMA将HPIA指向的内存单元的数据搬到HPID,清除HRDY忙状态,主机端方可结束总线访问周期,锁存数据线上的有效数据。
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信号由忙变为不忙,主机才能结束访问周期。两次连续的HPI操作的间隔,在芯片手册的HPI时序参数表里有要求,最小间隔为两个HPI功能模块时钟周期。
6. HPI常见故障案例分析
在HPI应用调试过程中,常遇到的问题分为:写数据不成功,读数据不正确,HRDY常高。这些问题通常都是由于时序不正确造成的,下面结合实际应用当中的案例进行分析。
6.1 写数据不成功
案例的硬件连接如下:
首先关注核心信号HSTROBE 由DSP_CS,ARM
- 基于DSP的HPI接口的视频数据传输系统设计(03-01)
- 处理器的HPI接口与PCI总线接口设计(02-11)
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)