270 likes | 469 Views
专题. ’C5000 HPI 接口的使用. 主讲人:李玉柏 DSP 技术中心 1998.10.1. C54x 的 HPI 接口. 在 C54X 系列中,只有 542 , 545 , 548 和 549 提供了标准 8 位 HPI 接口。 C54XX 系列都提供了 8 位或 16 位的增强 HPI 接口。 外部主机或主处理器可以通过 HPI 接口读写 C54X 的片内 RAM ,从而大大提高数据交换的能力。. 标准与增强 8 位 HPI 接口区别. 标准 HPI 接口中外部主机只能访问固定位置的 2K 大小的片内 RAM ,而增强 HPI 接口可以访问整个内部 RAM 。
E N D
专题 ’C5000 HPI接口的使用 主讲人:李玉柏 DSP技术中心 1998.10.1
C54x的HPI接口 • 在C54X系列中,只有542,545,548和549提供了标准8位HPI接口。 • C54XX系列都提供了8位或16位的增强HPI接口。 • 外部主机或主处理器可以通过HPI接口读写C54X的片内RAM,从而大大提高数据交换的能力。
标准与增强8位HPI接口区别 • 标准HPI接口中外部主机只能访问固定位置的2K大小的片内RAM,而增强HPI接口可以访问整个内部RAM。 • 增强8位HPI只有同步模式,而标准8位HPI有异步模式,即可以在DSP的时钟CLOCK不工作时访问内部RAM。 • 在增强模式中主机和C54X都能访问RAM,而标准模式中,可以实现RAM的选择访问。
增强16位HPI的特点 • 可以完成8位HPI通讯。 • 用复用和非复用的两种模式。 • 复用模式与8位HPI相似,使用HPIA(2种)、HPID、HPIC访问和控制HPI。 • 非复用模式可以直接使用地址线选择片内RAM,不再使用HPIA和HPID寄存器。从而提供访问速度。
‘C542HPI的接口设计 • 主机利用HPI访问‘C54X的片内RAM,实际上是通过读写HPI的数据和地址寄存器来实现的。 • ‘C542的HPI为8位,所以一个内存单元必须通过两次HPI读写来完成。 • HPI有两种工作模式:RAM共享和主机访问模式。
‘C542HPI的接口设计 • 在RAM共享模式中,主机和‘C54X都可以访问HPI的共享内存。对‘C542而言,HPI的共享内存大小为2K字,地址从0x1000到0x17ff。 • 使用该模式,HPI支持的最高传输速度为CLKOUT/5每字节。 • 增强模式HPI只有共享模式。
‘C542HPI的接口设计 • 如果是主机访问模式,那么只有主机才能访问’C54X的片内RAM。例如在RESET=0或IDLE2状态中,主机仍然能访问片内RAM,利用这一点可以实现‘C54X的HPI BOOTLOADER。 • 增强型HPI接口无此功能,所以VC5402不能在RESET时写入RAM。
HPI接口的数据、控制线 • HPI的数据线HD0-HD7通过缓冲隔离BUF与PC机的数据线D0-D7相连。HCNTL0/1和HBIL为控制信号线,HDS1/2、HAS、HCS为HPI的选通控制线,HR/W为读写控制信号线,HRDY为HPI准备就绪信号线。HINT为HPI中断信号线。 • 非复用HPI还提供地址线HA0-HAn
HPI接口连接例子 • HCNTL0/1信号线用来选择主机将要读写的是HPI的哪个寄存器,它们由PC控制字(占用地址单元0xd000:0x104)的D14和D13位决定。当D14和D13为00是,表示主机可以访问HPI的控制寄存器HPIC;01和11表示主机可以访问数据寄存器,当D14=1,D13=0时,表示主机可以访问HPI的地址寄存器。
HPI接口控制信号 • HBIL为比特传输控制位,由PC控制字的D5位决定。当HBIL(即D5)=0时,表示当前传输的是一个‘C54X内存单元(16位)的第一个字节(第一个8位),HBIL为高时表示传输第二个字节。而这两个8位哪个是高8位,哪个是低8位,不是由该信号控制,而是由HPIC中的BOB位确定。
HPI接口控制信号 • 在HPI的选通控制信号中,HCS为片选信号,HAS为地址锁存信号,HDS1/2为读写或数据始能信号。 可以将它们简化,仅使用HCS和HDS2,其它接为高电平。图中,PC机通过内存单元0xd000:0x100来访问HPI。所以HPI的选通信号由PC的地址译码信号产生。
HPI接口控制信号 • HR/W为HPI的读写控制信号,高电平为读操作,低电平为写操作。 • HRDY为HPI的输出信号,高电平表示HPI准备就绪,HINT也是一个输出信号,由HPIC中的HINT比特位确定,HPI可以利用该引脚中断主机。 • 另外,引脚HPIENA为高电平表示允许HPI接口工作,若要使用HPI,该引脚必须接高电平。
HPI控制寄存器HPIC • PC主机读HPI控制寄存器HPIC PC主机写HPI控制寄存器HPIC
HPI控制寄存器HPIC • ‘C54X读取HPIC ‘C54X写HPIC
HPI控制寄存器HPIC • BOB位:该比特位只能由主机读写,‘C54X无法访问。如果BOB=1,表示HPI的16位传输中的第一个8位字节是低8位;BOB=0,表示第一个8位字节为高8位。该比特位必须在读写数据和地址寄存器之前设置。 • DSPINT位:该比特位只能由主机写,并且‘C54X和主机都无法读取。当主机将1写到该比特位时,将产生一个中断到‘C54X。如果IMR寄存器中的HPINT位(D9)被设置为1,DSP将响应该中断,执行相应的中断服务程序。
HPI控制寄存器HPIC • HINT位:该比特位主机和C54X都可以读写。该比特决定了‘C54X引脚HINT的状态。 • ‘C54X可以利用该信号发送中断到主机。当‘C54X在复位状态时,HINT比特位为0,对应的HINT脚为高电平。当‘C54X将该比特位设置为1时,HINT脚将变为低电平。 • 注意,当主机和‘C54X读取该比特位时,它将反映HINT引脚的状态,0表示高电平,1表示低电平。 • 另外,该比特位只能由‘C54X设置,由主机清除。主机将1写到该比特位,将清除HINT位,即HINT位为0。
HPI地址寄存器的修改 • 当主机通过HPI接口的数据寄存器HPID读写‘C54X的片内RAM时,可以选择地址自动或不自动增加模式。 • 对于自动增加模式,读和写对应不同的增加方式。如果主机是读操作,那么HPIA在读完后自动加1;如果是写操作,那么HPIA将在写之前自动加1。 • 例如,如果HPIA的值为0FFh,这时主机对HPI的数据寄存器HPID进行写入操作(使用地址自动加模式),那么修改的将是HPI RAM的100h。
通过HPI接口访问片内RAM • 先设置HCNTL1和HCNTL0为0,选择将要对HPIC进行操作。然后将HPIC的值写入HPI。注意HPIC的高8位和低8位是一样的。(注意BOB的设置!) • 若将HPIC=0,即将BOB设置为0,那么在以后读写HPIA和HPID时一定是高8位在前,低8位在后。 • 注意,8位HPI通过两次操作读写数据 !
通过HPI接口访问片内RAM • 设置地址寄存器HPIA。先设置HCNTL1=1&HCNTL0=0,选择将要对HPIA进行操作。然后将要访问的‘C54X片内RAM的地址写入HPI。一定是高8位先写,低8位后写(对应BOB=0)。
通过HPI接口访问片内RAM • 读写‘C54X的片内RAM。先设置HCNTL1/0,选择将要对数据锁存器HPID进行操作。如果设置HCNTL1=0&HCNTL0=1,表示使用地址自动增加模式;如果设置HCNTL0=HCNTL1=1时,表示不使用地址自动增加模式,这时完成读写操作后,地址寄存器HPIA将不会变。
HPI接口中断的使用 • 通过HPI接口,主机和‘C54X之间可以相互发送中断请求:主机通过HPIC寄存器的DSPINT位中断‘C54X,而‘C54X可以通过HPIC寄存器的HINT位发送中断请求到主机。
主机发送中断到‘C54X • 当主机将1写入到HPI控制寄存器HPIC的DSPINT比特位时,‘C54X将产生一个中断请求。 • 在‘C54X中,该中断位于中断屏蔽寄存器IMR和中断标志寄存器IFR的D9位,其中断入口地址位于中断向量表中64h。 • 如果IMR中该比特位为1,同时INTM标志为0允许中断请求时,‘C54X将响应并口中断,程序将跳转到中断向量表的64h,开始执行中断服务程序。 • 本实验中,学生可以使用C语言将1写入DSPINT位,然后查看IFR寄存器,检查是否产生中断请求。
‘C54X发送中断到主机 • 当‘C54X将1写入HPIC的HINT比特位时,HINT引脚变为低电平,主机可以利用该引脚接收‘C54X发生的中断信号。 • 无论是主机或‘C54X都可以通过读取HPIC来判断HINT引脚的状态。读出的HINT比特位为0,表示该引脚为高电平;1表示该引脚为低电平。 • HPIC中的HINT比特位只能通过主机清除,即主机写1到HPIC的HINT位后,外部引脚HINT的状态变回到高电平(这时再读取HPIC,HINT位为0)。
通过HPI完成BOOT LOADER • ‘C54X的BOOTLOADER是芯片在出厂时由生产厂家写入的一段ROM程序。该程序的启动地址正是‘C54X复位后的起始地址0FF80h。 • 用户可以利用BOOTLOADER方便地将自己的代码程序传送到指定的地方,并开始执行。 • BOOTLOADER有多种工作方式,通过HPI完成BOOTLOADER是其中的一种。HPI模式需要外部引脚连接配合,即需要将引脚HINT与引脚INT2相连,参见前面连接图。
利用HPI实现BOOTLOADER • ‘C54X复位后,BOOTLOADER程序将HPIC的DSPINT位置1,于是HINT引脚和INT2引脚变为低电平,然后BOOTLOADER程序通过判断IFR的D2位(即有无INT2中断)以确定是否为HPI启动。 • 若使用C542,则从1000h开始执行。 • 若使用VC5402,从7Fh单元提供地址开始执行。