DSP

DSP之外部设备连接接口之HPI

2019-07-13 10:14发布

      通过主机借口HPI,外部主机可以直接访问DSP内部的双访问RAM(DARAM).       HPI可以让外部的主处理器直接访问DSP内存映射中的部分内存,而无需DSP干预。通过主机接口还可以完成DSP的程序引导,DSP向主机发出中断信号要求主机响应中断等功能。HPI提供了一个16位宽的并口,使用14位地址,每个地址装一个16位的字。 HPI不能直接访问其他的外设寄存器,如果主机需要从其他外设获取数据,则必须通过CPU或6个DMA通道中的一个,先将数据搬到DARAM中,反之依然。       主机在HPI外部地址线上的地址,当成字地址,而不是字节地址来对待。       HPI的14根地址线,使主机可以访问到内部的地址为000060H~003FFFH的双访问RAM(DARAM)。0~00005Fh为MMR保留,HPI不能访问。       在所有的C5509上,HPI和EMIF共享一个并口。EBSR(外部总线选择寄存器)中的并行端口位决定这个端口用于数据EMIF模式(00b),完全EMIF(01b),非复用HPI(10b)或者HPI模式(11b)。并口模式位的复位值由复位时GPIO 0引脚的状态决定。复位是GPIO 0引脚为高,是完全EMIF模式,低,复用HPI模式。      HPI信号简介 信号名称 类型 说明 HD[15:0] 输入/输出/高阻 主机数据总线 在非复用模式下,只传输数据信号;复用模式下传输数据和地址信号 HA[19:0] 输入 主机地址总线 复用模式下传输主机到HPI口的地址信号;复用模式下HA[1]变成HCNTL1HA[2]变为HAS_,其他引脚没有使用 HBE[1:0] 输入 主机字节选择信号,但在TMS320VC55102.0版本之后不再支持该信号 HCS_ 输入 片选信号,低有效 HR/W_ 输入 读写信号 HDS1_,HDS2_ 输入 数据选通信号,HPI接口的数据选通信号是这两个信号的同或结果。选通信号至少应持续2CPU周期,HDS1_HDS2_号的连接根据主机选通信号而对应不同的接法。 主机有独立的读写选通信号,并且低有效,则一个接HDS1_,一个接HDS2_主机只有一个低有效的选通信号,则这个信号接到HDS1_HDS2_之一,而另一个引脚接高电平;主机有一个高有效地选通信号,则这个信号接HDS1_HDS2_,另一个引脚接低电平 HRDY 输出 EHPI就绪信号。当这个信号为低时,标志EHPI接口忙,主机应延长传输周期,信号为高时,表示传输过程已经结束,主机可以继续下一次传输。当HCS_信号为高时,HRDY信号总为 HCNTL0HCNTL1 输入 EHPI口控制信号 非复用模式下HCNTLO为低时,EHPI接口将访问数据存储器,为高时访问EHPI控制寄存器,HCNTL1被地址线占用;复用模式下,HCNTL1HCNTL0信号用来选择访问的寄存器类 HCNTL[1:0]           寄存器访问类型        00                      HPIC读或写        01                      HPID读写,并且访问后地址自动增加1        10                      HPIA读写        11                      HPID读写,访问后地址不增加 HAS_ 输入 地址选通信号,该信号只在复用模式下起作用,这个信号使得HCNTL[1:0]HR/W_信号可以在访问结束之前就消失 HMODE 输入 EHPI模式选择信号,当为高时EHPI接口工作在非复用模式下,为低工作在复用模式下 RST_MODE 输入 复位模式信号,但该信号在高版本C55x处理器中已经不再支持 HINT_ 输出 DSP到主机中断信号,该信号受状态寄存器ST3_55HINT位控制 1 HPI接口的非复用连接方式         非复用模式下,HPI口地址和数据分别使用单独的总线,接下来给出C55x DSP通过HPI接口采用非复用方式访问另一个C55x DSP的信号连接图。
        图中DSP1的通用IO信号IO7用来选通数据寄存器或者控制寄存器,图中没有标出的EHPI口信号不连接即可。非复用连接方式下数据和地址分别使用不同的总线,地址信号不必再通过EHPI数据总线传递,访问更加方便、快捷。     1, 不使用HPIA HPI地址寄存器。对于每次传输的地址,必须在HA上给定。     2.HPID HPI数据寄存器的作用是,临时保存通过HPI传送的数据。如果当前的访问是读操作,HPID保存从DSP存储器中读取的数据,如果是写操作,保存要写给DSP的数据。DSP CPU不能访问HPID.     3.HPIC 包含了DSPINT位,使主机可以发送中断请求给DSP, DSP CPU不能访问HPIC。 特点:     1 数据和地址使用分开的总线。     2 主机用HCNTL0和HR/W信号来说明周期类型。        包括:                  主机驱动HCNTL0引脚上的电平,来选择访问类型。0 HPIC访问,1 HPID访问。                  主机通过HR/W引脚来选择传输方向。 高 读 低 写   2  EHPI接口的复用连接方式
         EHPI口如果采用复用连接方式,地址和数据则都将通过数据总线传递,接下来给出PCI总线控制器PCI2040同C55x EHPI口的连接图。
         PCI2040是为C54x和C6000系列处理器通过HPI接口连接到PCI总线专门提供的,但由于C55x处理器的主机接口数据总线由C54x的8位变为16位,因此C55x是模拟C6000的HPI接口同PCI2040相连接的,由于C6000的HRDY信号为低有效,而C55x的HRDY为高有效,因此C55x的HRDY信号必须通过一个非门连接到PCI2040上。PCI2040没有HAS信号,故而C55x中的HAS_信号接到高电平。      复用模式下:              1 地址和数据在同一条总线(HPI数据总线,HD[15:0])上传输,因此需要地址寄存器HPIA来存放地址,但HPIA是16位寄存器,主机必须写一个16位地址,其中bit13~0是真正地址,15~14为0,且在读写操作前,必须加载HPIA。              2 HPID与非复用模式一样。              3 HPIC 也是。       特点:              地址和数据共用数据总线HD              主机用HCNTL[1:0]和HR/W信号来表示周期类型。              HAS允许HCNTL[1:0]和HR/W在访问周期内先撤销,可以有更多时间将总线状态从地址转为数据。HAS对主机是个可选信号,用一个总线来装载地址和数据,HPI可以不用HAS,将其拉高。 3 EHPI口的寄存器         EHPI有下列寄存器:数据寄存器(HPID)、地址寄存器(HPIA)和控制寄存器(HPIC),数据寄存器是一个16位寄存器,用来存放输入、输出的数据,在非复用方式下,该寄存器只起缓存作用,对主机来说该寄存器是透明的;而复用方式下,主机对DSP内存的访问都必须经过数据寄存器,DSP再根据地址寄存器中的地址访问数据存储器。地址寄存器是一个16或20位寄存器,该寄存器保存复用方式下读写操作的地址,而地址寄存器也将根据HCNTL1和HCNTL0的状态决定访问结束后寄存器内的地址是否加1,地址寄存器在非复用方式下不起作用。
        控制寄存器HPIC控制数据的传输,主机还可以通过该寄存器向DSP发出中断,要求DSP响应中断,另外主机通过控制HPIC中的RESET位,在DSP复位引脚为高时可以控制DSP的复位或使DSP脱离复位状态。 HPIC寄存器的说明 字段 复位值 说明 15~6 Reserved   保留 5 XADD 0 1 扩展地址使能位。在复用模式下如果使用20位地址,则须通过设置该位决定访问的是HPIA19~16位还是15~0位。 写到HPIA15~0位; 写到HPIA19~16 4~2 Reserved   保留 1 DSPINT 0 1 主机对DSP的中断申请位。 清除DSPINT DSP发出中断申请 0 RESET 0 1 复位。 清除复位; 使DSP停止进入复位状态   利用RESET位,主机可以通过软件使DSP进入复位状态,在该状态下,主机可以对DSP进行程序加载,加载完成之后清除复位标志,如果DSP设置的是EHPI引导,在主机清除复位标志后,DSP接下来将从10000h地址开始执行程序。下图给出了通过EHPI口加载DSP程序的流程. 通过EHPI口加载程序的过程   注意:           HPI不属于任何idle域,因此,不能进入idle模式。然而:           1 如果时钟发生器idle域,或DMA idle域处于idle,主机不能访问DSP的存储器。           2 DSP 在EBSR中,包含一个主机模式idle 位HIDL。若为0,时钟发生器不能进入idle模式,为了使HPI工作,它保持激活状态,若为1,时钟发生器可以进入idle状态。           HPI依靠DMA控制器工作,因此仿真影响了DMA控制器,也会影响HPI。DMA的FREE位决定遇到仿真断点和其他仿真中断时的行为:           0 复位后的值,中断将DMA挂起。           1 不会中断DMA传输      DSP进入复位状态,HPIC强制恢复其默认值,HPIA和HPIA不会被DSP初始化。