27
’C5000 HPI 接接接接接 接接接 接接接 DSP 接接接接 专专

’C5000 HPI 接口的使用

  • Upload
    kinsey

  • View
    167

  • Download
    4

Embed Size (px)

DESCRIPTION

专题. ’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 。 - PowerPoint PPT Presentation

Citation preview

Page 1: ’C5000 HPI 接口的使用

’C5000 HPI 接口的使用

主讲人:李玉柏DSP 技术中心

专题

Page 2: ’C5000 HPI 接口的使用

C54x 的 HPI 接口 在 C54X 系列中,只有 542 , 545 , 54

8 和 549 提供了标准 8 位 HPI 接口。 C54XX 系列都提供了 8 位或 16 位的增强

HPI 接口。 外部主机或主处理器可以通过 HPI 接口

读写 C54X 的片内 RAM ,从而大大提高数据交换的能力。

Page 3: ’C5000 HPI 接口的使用

标准与增强 8 位 HPI 接口区别 标准 HPI 接口中外部主机只能访问固定位

置的 2K 大小的片内 RAM ,而增强 HPI 接口可以访问整个内部 RAM 。

增强 8位 HPI只有同步模式,而标准 8位HPI有异步模式,即可以在 DSP的时钟 CLOCK不工作时访问内部 RAM。

在增强模式中主机和 C54X都能访问 RAM,而标准模式中,可以实现 RAM的选择访问。

Page 4: ’C5000 HPI 接口的使用

增强 16 位 HPI 的特点 可以完成 8 位 HPI 通讯。 用复用和非复用的两种模式。 复用模式与 8 位 HPI 相似,使用 HPIA

( 2 种)、 HPID 、 HPIC 访问和控制 HPI 。

非复用模式可以直接使用地址线选择片内RAM ,不再使用 HPIA 和 HPID 寄存器。从而提供访问速度。

Page 5: ’C5000 HPI 接口的使用

‘C542HPI 的接口设计 主机利用 HPI 访问‘ C54X 的片内 RAM ,

实际上是通过读写 HPI 的数据和地址寄存器来实现的。

‘C542 的 HPI 为 8 位,所以一个内存单元必须通过两次 HPI 读写来完成。

HPI 有两种工作模式: RAM 共享和主机访问模式。

Page 6: ’C5000 HPI 接口的使用

‘C542HPI 的接口设计 在 RAM 共享模式中,主机和‘ C54X 都

可以访问 HPI 的共享内存。对‘ C542 而言, HPI 的共享内存大小为 2K 字,地址从 0x1000 到 0x17ff 。

使用该模式, HPI 支持的最高传输速度为 CLKOUT/5 每字节。

增强模式 HPI 只有共享模式。

Page 7: ’C5000 HPI 接口的使用

‘C542HPI 的接口设计 如果是主机访问模式,那么只有主机才

能访问’ C54X 的片内 RAM 。例如在 RESET=0 或 IDLE2 状态中,主机仍然能访问片内 RAM ,利用这一点可以实现‘ C54X 的 HPI BOOTLOADER 。

增强型 HPI 接口无此功能,所以 VC5402不能在 RESET 时写入 RAM 。

Page 8: ’C5000 HPI 接口的使用

’C542 的 HPI 与 PC 的接口示意图

Page 9: ’C5000 HPI 接口的使用

HPI 接口的数据、控制线 HPI 的数据线 HD0-HD7 通过缓冲隔离 B

UF 与 PC 机的数据线 D0-D7 相连。 HCNTL0/1 和 HBIL 为控制信号线, HDS1/2 、HAS 、 HCS 为 HPI 的选通控制线, HR/W 为读写控制信号线, HRDY 为 HPI 准备就绪信号线。 HINT 为 HPI 中断信号线。

非复用 HPI 还提供地址线 HA0-HAn

Page 10: ’C5000 HPI 接口的使用

HPI 接口连接例子 HCNTL0/1 信号线用来选择主机将要读

写的是 HPI 的哪个寄存器,它们由 PC 控制字(占用地址单元 0xd000:0x104 )的D14 和 D13 位决定。当 D14 和 D13 为 00 是,表示主机可以访问 HPI 的控制寄存器 HPIC ; 01 和 11 表示主机可以访问数据寄存器,当 D14=1 , D13=0 时,表示主机可以访问 HPI 的地址寄存器。

Page 11: ’C5000 HPI 接口的使用

HPI 接口控制信号 HBIL 为比特传输控制位,由 PC 控制字

的 D5 位决定。当 HBIL (即 D5 ) =0 时,表示当前传输的是一个‘ C54X 内存单元( 16 位)的第一个字节(第一个 8位), HBIL 为高时表示传输第二个字节。而这两个 8 位哪个是高 8 位,哪个是低 8 位,不是由该信号控制,而是由HPIC 中的 BOB 位确定。

Page 12: ’C5000 HPI 接口的使用

HPI 接口控制信号 在 HPI 的选通控制信号中, HCS 为片选

信号, HAS 为地址锁存信号, HDS1/2为读写或数据始能信号。 可以将它们简化,仅使用 HCS 和 HDS2 ,其它接为高电平。图中, PC 机通过内存单元 0xd000:0x100 来访问 HPI 。所以 HPI 的选通信号由 PC 的地址译码信号产生。

Page 13: ’C5000 HPI 接口的使用

HPI 接口控制信号 HR/W 为 HPI 的读写控制信号,高电平为读

操作,低电平为写操作。 HRDY 为 HPI 的输出信号,高电平表示 HPI

准备就绪, HINT 也是一个输出信号,由 HPIC 中的 HINT 比特位确定, HPI 可以利用该引脚中断主机。

另外,引脚 HPIENA 为高电平表示允许 HPI接口工作,若要使用 HPI ,该引脚必须接高电平。

Page 14: ’C5000 HPI 接口的使用

HPI 的控制寄存器

寄存器 ‘ C54X地址

说 明

HPIA - HPI地址寄存器,只能由主机读写。该寄存器对应主机访问的‘ C54X的片内 RAM地址。

HPIC 002Ch HPI控制寄存器。‘ C54X和主机都可以读写。详细说明后面介绍。HPID - HPI数据寄存器。只能由主机读写。主机读写该寄存器将修改‘ C54X

的片内 HPI共享 RAM。

Page 15: ’C5000 HPI 接口的使用

PC 主机读 HPI 控制寄存器 HPIC

HPI 控制寄存器 HPIC

PC 主机写 HPI 控制寄存器 HPIC

Page 16: ’C5000 HPI 接口的使用

‘C54X 读取 HPIC

HPI 控制寄存器 HPIC

‘C54X 写 HPIC

Page 17: ’C5000 HPI 接口的使用

HPI 控制寄存器 HPIC

BOB 位:该比特位只能由主机读写,‘ C54X 无法访问。如果 BOB=1 ,表示 HPI 的 16 位传输中的第一个 8 位字节是低 8 位; BOB=0 ,表示第一个 8位字节为高 8 位。该比特位必须在读写数据和地址寄存器之前设置。

DSPINT 位:该比特位只能由主机写,并且‘ C54X 和主机都无法读取。当主机将 1 写到该比特位时,将产生一个中断到‘ C54X 。如果 IMR 寄存器中的HPINT 位( D9 )被设置为 1 , DSP 将响应该中断,执行相应的中断服务程序。

Page 18: ’C5000 HPI 接口的使用

HPI 控制寄存器 HPIC

HINT 位:该比特位主机和 C54X 都可以读写。该比特决定了‘ C54X 引脚 HINT 的状态。

‘C54X 可以利用该信号发送中断到主机。当‘ C54X 在复位状态时, HINT 比特位为 0 ,对应的 HINT 脚为高电平。当‘ C54X 将该比特位设置为 1 时, HINT 脚将变为低电平。

注意,当主机和‘ C54X 读取该比特位时,它将反映 HINT 引脚的状态, 0 表示高电平, 1 表示低电平。

另外,该比特位只能由‘ C54X 设置,由主机清除。主机将 1 写到该比特位,将清除 HINT 位,即 HINT 位为0 。

Page 19: ’C5000 HPI 接口的使用

HPI 地址寄存器的修改 当主机通过 HPI 接口的数据寄存器 HPID 读写

‘ C54X 的片内 RAM 时,可以选择地址自动或不自动增加模式。

对于自动增加模式,读和写对应不同的增加方式。如果主机是读操作,那么 HPIA 在读完后自动加 1 ;如果是写操作,那么 HPIA 将在写之前自动加 1 。

例如,如果 HPIA 的值为 0FFh ,这时主机对 HPI的数据寄存器 HPID 进行写入操作(使用地址自动加模式),那么修改的将是 HPI RAM 的 100h 。

Page 20: ’C5000 HPI 接口的使用

通过 HPI 接口访问片内 RAM

先设置 HCNTL1 和 HCNTL0 为 0 ,选择将要对 HPIC 进行操作。然后将 HPIC 的值写入 HPI 。注意 HPIC 的高 8 位和低 8位是一样的。(注意 BOB 的设置!)

若将 HPIC=0 ,即将 BOB 设置为 0 ,那么在以后读写 HPIA 和 HPID 时一定是高8 位在前,低 8 位在后。

注意, 8 位 HPI 通过两次操作读写数据 !

Page 21: ’C5000 HPI 接口的使用

通过 HPI 接口访问片内 RAM

设置地址寄存器 HPIA 。先设置 HCNTL1=1&HCNTL0=0 ,选择将要对 HPIA 进行操作。然后将要访问的‘ C54X 片内 RAM 的地址写入 HPI 。一定是高 8 位先写,低 8 位后写 ( 对应 BOB=0 )。

Page 22: ’C5000 HPI 接口的使用

通过 HPI 接口访问片内 RAM

读写‘ C54X 的片内 RAM 。先设置 HCNTL1/0 ,选择将要对数据锁存器 HPID进行操作。如果设置 HCNTL1=0&HCNTL0=1 ,表示使用地址自动增加模式;如果设置 HCNTL0=HCNTL1=1 时,表示不使用地址自动增加模式,这时完成读写操作后,地址寄存器 HPIA 将不会变。

Page 23: ’C5000 HPI 接口的使用

HPI 接口中断的使用 通过 HPI 接口,主机和‘ C54X 之间可

以相互发送中断请求:主机通过 HPIC 寄存器的 DSPINT 位中断‘ C54X ,而‘ C54X 可以通过 HPIC 寄存器的 HINT 位发送中断请求到主机。

Page 24: ’C5000 HPI 接口的使用

主机发送中断到‘ C54X

当主机将 1 写入到 HPI 控制寄存器 HPIC 的 DSPINT 比特位时,‘ C54X 将产生一个中断请求。

在‘ C54X 中,该中断位于中断屏蔽寄存器 IMR 和中断标志寄存器 IFR 的 D9 位,其中断入口地址位于中断向量表中 64h 。

如果 IMR 中该比特位为 1 ,同时 INTM 标志为 0 允许中断请求时,‘ C54X 将响应并口中断,程序将跳转到中断向量表的 64h ,开始执行中断服务程序。

本实验中,学生可以使用 C语言将 1 写入 DSPINT 位,然后查看 IFR 寄存器,检查是否产生中断请求。

Page 25: ’C5000 HPI 接口的使用

‘C54X 发送中断到主机 当‘ C54X 将 1 写入 HPIC 的 HINT 比特位时, HI

NT 引脚变为低电平,主机可以利用该引脚接收‘ C54X 发生的中断信号。

无论是主机或‘ C54X 都可以通过读取 HPIC 来判断 HINT 引脚的状态。读出的 HINT 比特位为 0 ,表示该引脚为高电平; 1 表示该引脚为低电平。

HPIC 中的 HINT 比特位只能通过主机清除,即主机写 1 到 HPIC 的 HINT 位后,外部引脚 HINT 的状态变回到高电平(这时再读取 HPIC , HINT 位为 0 )。

Page 26: ’C5000 HPI 接口的使用

通过 HPI 完成 BOOT LOADER

‘C54X 的 BOOTLOADER 是芯片在出厂时由生产厂家写入的一段 ROM 程序。该程序的启动地址正是‘ C54X 复位后的起始地址 0FF80h 。

用户可以利用 BOOTLOADER 方便地将自己的代码程序传送到指定的地方,并开始执行。

BOOTLOADER 有多种工作方式,通过 HPI 完成 BOOTLOADER 是其中的一种。 HPI 模式需要外部引脚连接配合,即需要将引脚 HINT 与引脚 INT2 相连,参见前面连接图。

Page 27: ’C5000 HPI 接口的使用

利用 HPI 实现 BOOTLOADER

‘C54X 复位后, BOOTLOADER 程序将 HPIC 的 DSPINT 位置 1 ,于是 HINT 引脚和INT2 引脚变为低电平,然后 BOOTLOADER 程序通过判断 IFR 的 D2 位(即有无 INT2 中断)以确定是否为 HPI启动。

若使用 C542 ,则从 1000h开始执行。 若使用 VC5402 ,从 7Fh 单元提供地址开始执行。