基于HPI接口的高速数据传输设计
时间:08-06
来源:互联网
点击:
DSP芯片能够大大提高数字信号处理的效率,但在主机与DSP构成的系统中,当DSP与主机间需要大数据量传输时,数据传输速率就会成为程序运行速度的瓶颈。所以在程序调试过程中,实现主机与DSP之间的快速数据传输,不仅可以提高程序运行效率,还可以大大节省调试程序的时间。
TMS320C6000系列的HPI(Host Port Interface)接口不仅可以方便主机对DSP的控制,还可以实现主机与DSP内存的快速数据传输。这里用双TMS320C6416(600MHz)来进行实验,通过HPI接口实现了主DSP(下文中都称为"主机")和从DSP的快速数据传输,并通过实验测试了HPI接口的数据传输速率。
系统介绍
HPI概述
HPI(Host-Port Interface)主机接口,是TI高性能DSP上配置的与主机进行通信的片内外设。通过HPI接口,主机可以非常方便地访问DSP的所有地址空间,从而实现对DSP的控制。
TMS320C6416的HPI接口是一个16bit/32bit宽的并行端口。主机(host)对CPU地址空间的访问是通过EDMA控制器实现的。HPI接口的访问主要通过三个专用寄存器来实现,它们分别是HPI控制寄存器(HPIC)、HPI地址寄存器(HPIA)和HPI数据寄存器(HPID)。
HPI接口信号简介
(1) HD[31∶0](数据总线)
(2) HCNTL[1∶0](控制HPI访问类型)
如前所述,对HPI的访问需要通过三个寄存器,即HPI地址寄存器(HPIA),HPI数据寄存器(HPID)和HPI控制寄存器(HPIC)来实现。HCNTL[1∶0]就是用于选择这三个寄存器的专用引脚。
(3) HHWIL (半字指示选择)
HHWIL指示当前的为第一个或是第二个半字传输,但需要注意的是,它并不代表是最高有效的(most significant)还是最低有效的(least significant),而决定的依据是HPIC中的HWOB位的状态。在HPI32模式下,不使用此信号。
(4) HR/W (读/写操作指示)
(5) HRDY (输出准备好)
(6) HCS,HDS1,HDS2(选通信号)
当HCS有效,并且HDS1和HDS2中仅有一个有效时,内部触发信号HSTROBE有效。这三个信号的组合逻辑其实就是片选和读/写信号构成的组合逻辑,因此,可直接与主机的片选和读/写信号相连。
(7) HAS (地址输入选通)
(8) HINT(向主机输出的中断)
HPI接口寄存器简介
如上所述,主机通过HPI接口对DSP的访问实际上是通过三个寄存器来实现的,下面就针对这三个专用寄存器进行介绍。
(1) HPI控制寄存器(HPIC)
HPIC中每一位都有特定的功能,在对HPI进行访问的过程中需要特别注意。简要介绍一下这些功能位的作用。
①HWOB(半字顺序位)
如果HWOB=1,第一个半字为最低有效;如果HWOB=0,第一个半字为最高有效。HWOB对地址和数据都起作用,如果采用HPI16模式,在访问数据或者地址寄存器之前,应该首先初始化HWOB位。
②DSPINT(主机产生的Processor-to-CPU中断,用于HPI启动方式中将DSP内核从复位状态中唤醒)
③HINT(DSP-to-Host中断,即通过向此位写入特定值来产生对主机的中断)
(2) HPI地址寄存器(HPIA)
存放32bit数据,指向将要访问的DSP地址空间中的地址。
(3) HPI数据寄存器(HPID)
在写操作中存放将要写入HPIA所指向地址的数据,在读操作中为HPIA所指向地址中的数据。
系统设计
硬件设计
外设选择
在C6416中,一些外设共用某些引脚。其中HPI,GP[15:9],PCI, EEPROM以及McBSP2共用一组引脚,DSP在复位时通过锁存PCI_EN及McBSP2_EN引脚的值来选择使用何种外设。如表1,在本设计中,将这两个选择引脚都拉低。
数据总线
C6416 HPI数据总线具有32个外部引脚HD[31:0]。因此,C6416 HPI支持16位或32位的数据总线。当用16位宽的主机接口时,C6416 HPI称为HPI16;当用32位宽的主机接口时,C6416 HPI称为HPI32。C6416 HPI通过复位时的自举和器件配置引脚(HD5)选择采用HPI16还是HPI32。
HPI16具有16位数据总线,HPI16将两个连续的16位传输组成一个32位数据传送到CPU。为了和其他C6000器件兼容,无论复位时选择何种Endian模式,HPI16都使用HD[15:0]作为数据引脚。HPI32具有32位的数据总线,使用该增加的总线宽度,所有传输均为一个32位的字传输,而不是两个连续的16位半字。在本设计中采用HPI32总线模式。
主机EMIF配置
对主机,EMIFA (64位总线)和EMIFB (16位总线)都可以与HPI相连。在HPI16模式下,可以采用EMIFB,在HPI32模式下,可以采用EMIFA。在本设计中,影射EMIFA CE1存储器空间为主机接口,对CE1空间控制寄存器的设置。
硬件连接
从C6416 HPI寄存器的编址方式可以看出,主机需两根地址线寻址到HPI接口的控制寄存器、地址寄存器和数据寄存器,因此选择主机的地址线A3、A2连接C6416 HPI的HCNTL1、HCNTL0。HPI的选通由HCS、HDS1、HDS2三根信号线共同作用,最后的HPI使能信号(STROBE)为HDS1异或HDS2后,再与HCS进行与非运算的结果。若将HPI接口安排在主机的ACE1区域(即地址范围0X90000000-0X9FFFFFFF),则直接将主机的片选信号ACE1接到HCS,而将读写信号RE、WE分别接到HDS1、HDS2。对于HR/W信号,可以连接到地址线A4,当A4=1时,代表读操作,反之为写操作。
若使用HPI16,可以使用主机的地址线A1接HHWIL来完成高低字节的识别:当A1=0时,表示为第一字节;A1=1时表示第二字节。
由于主机的ARDY信号和C6416 HPI接口的HRDY信号逻辑刚好相反,因此要将HRDY信号经过反相后再接ARDY信号。C6416 HPI的HINT信号可以直接连接到主机的EXT_INT7引脚上实现HPI对主机的中断信号连接。HPI接口信号线中的HAS线直接拉高。
软件设计
主机必须按照顺序进行HPI访问:
(1)初始化HPI控制(HPIC)寄存器;
(2)初始化HPI控制(HPIA)寄存器;
(3)写数据到HPI数据(HPID)寄存器或从HPID寄存器读取数据。
一旦HPI被初始化,主机就可以固定地址模式或自动增加模式对DSP地址进行读写访问,下面以HPI接口地址增加模式写操作为例来介绍。
TMS320C6000系列的HPI(Host Port Interface)接口不仅可以方便主机对DSP的控制,还可以实现主机与DSP内存的快速数据传输。这里用双TMS320C6416(600MHz)来进行实验,通过HPI接口实现了主DSP(下文中都称为"主机")和从DSP的快速数据传输,并通过实验测试了HPI接口的数据传输速率。
系统介绍
HPI概述
HPI(Host-Port Interface)主机接口,是TI高性能DSP上配置的与主机进行通信的片内外设。通过HPI接口,主机可以非常方便地访问DSP的所有地址空间,从而实现对DSP的控制。
TMS320C6416的HPI接口是一个16bit/32bit宽的并行端口。主机(host)对CPU地址空间的访问是通过EDMA控制器实现的。HPI接口的访问主要通过三个专用寄存器来实现,它们分别是HPI控制寄存器(HPIC)、HPI地址寄存器(HPIA)和HPI数据寄存器(HPID)。
HPI接口信号简介
(1) HD[31∶0](数据总线)
(2) HCNTL[1∶0](控制HPI访问类型)
如前所述,对HPI的访问需要通过三个寄存器,即HPI地址寄存器(HPIA),HPI数据寄存器(HPID)和HPI控制寄存器(HPIC)来实现。HCNTL[1∶0]就是用于选择这三个寄存器的专用引脚。
(3) HHWIL (半字指示选择)
HHWIL指示当前的为第一个或是第二个半字传输,但需要注意的是,它并不代表是最高有效的(most significant)还是最低有效的(least significant),而决定的依据是HPIC中的HWOB位的状态。在HPI32模式下,不使用此信号。
(4) HR/W (读/写操作指示)
(5) HRDY (输出准备好)
(6) HCS,HDS1,HDS2(选通信号)
当HCS有效,并且HDS1和HDS2中仅有一个有效时,内部触发信号HSTROBE有效。这三个信号的组合逻辑其实就是片选和读/写信号构成的组合逻辑,因此,可直接与主机的片选和读/写信号相连。
(7) HAS (地址输入选通)
(8) HINT(向主机输出的中断)
HPI接口寄存器简介
如上所述,主机通过HPI接口对DSP的访问实际上是通过三个寄存器来实现的,下面就针对这三个专用寄存器进行介绍。
(1) HPI控制寄存器(HPIC)
HPIC中每一位都有特定的功能,在对HPI进行访问的过程中需要特别注意。简要介绍一下这些功能位的作用。
①HWOB(半字顺序位)
如果HWOB=1,第一个半字为最低有效;如果HWOB=0,第一个半字为最高有效。HWOB对地址和数据都起作用,如果采用HPI16模式,在访问数据或者地址寄存器之前,应该首先初始化HWOB位。
②DSPINT(主机产生的Processor-to-CPU中断,用于HPI启动方式中将DSP内核从复位状态中唤醒)
③HINT(DSP-to-Host中断,即通过向此位写入特定值来产生对主机的中断)
(2) HPI地址寄存器(HPIA)
存放32bit数据,指向将要访问的DSP地址空间中的地址。
(3) HPI数据寄存器(HPID)
在写操作中存放将要写入HPIA所指向地址的数据,在读操作中为HPIA所指向地址中的数据。
系统设计
硬件设计
外设选择
在C6416中,一些外设共用某些引脚。其中HPI,GP[15:9],PCI, EEPROM以及McBSP2共用一组引脚,DSP在复位时通过锁存PCI_EN及McBSP2_EN引脚的值来选择使用何种外设。如表1,在本设计中,将这两个选择引脚都拉低。
数据总线
C6416 HPI数据总线具有32个外部引脚HD[31:0]。因此,C6416 HPI支持16位或32位的数据总线。当用16位宽的主机接口时,C6416 HPI称为HPI16;当用32位宽的主机接口时,C6416 HPI称为HPI32。C6416 HPI通过复位时的自举和器件配置引脚(HD5)选择采用HPI16还是HPI32。
HPI16具有16位数据总线,HPI16将两个连续的16位传输组成一个32位数据传送到CPU。为了和其他C6000器件兼容,无论复位时选择何种Endian模式,HPI16都使用HD[15:0]作为数据引脚。HPI32具有32位的数据总线,使用该增加的总线宽度,所有传输均为一个32位的字传输,而不是两个连续的16位半字。在本设计中采用HPI32总线模式。
主机EMIF配置
对主机,EMIFA (64位总线)和EMIFB (16位总线)都可以与HPI相连。在HPI16模式下,可以采用EMIFB,在HPI32模式下,可以采用EMIFA。在本设计中,影射EMIFA CE1存储器空间为主机接口,对CE1空间控制寄存器的设置。
硬件连接
从C6416 HPI寄存器的编址方式可以看出,主机需两根地址线寻址到HPI接口的控制寄存器、地址寄存器和数据寄存器,因此选择主机的地址线A3、A2连接C6416 HPI的HCNTL1、HCNTL0。HPI的选通由HCS、HDS1、HDS2三根信号线共同作用,最后的HPI使能信号(STROBE)为HDS1异或HDS2后,再与HCS进行与非运算的结果。若将HPI接口安排在主机的ACE1区域(即地址范围0X90000000-0X9FFFFFFF),则直接将主机的片选信号ACE1接到HCS,而将读写信号RE、WE分别接到HDS1、HDS2。对于HR/W信号,可以连接到地址线A4,当A4=1时,代表读操作,反之为写操作。
若使用HPI16,可以使用主机的地址线A1接HHWIL来完成高低字节的识别:当A1=0时,表示为第一字节;A1=1时表示第二字节。
由于主机的ARDY信号和C6416 HPI接口的HRDY信号逻辑刚好相反,因此要将HRDY信号经过反相后再接ARDY信号。C6416 HPI的HINT信号可以直接连接到主机的EXT_INT7引脚上实现HPI对主机的中断信号连接。HPI接口信号线中的HAS线直接拉高。
软件设计
主机必须按照顺序进行HPI访问:
(1)初始化HPI控制(HPIC)寄存器;
(2)初始化HPI控制(HPIA)寄存器;
(3)写数据到HPI数据(HPID)寄存器或从HPID寄存器读取数据。
一旦HPI被初始化,主机就可以固定地址模式或自动增加模式对DSP地址进行读写访问,下面以HPI接口地址增加模式写操作为例来介绍。
- 基于IXP421的VoIP网关及其性能测评(10-02)
- 新一代移动通信系统的关键技术(10-26)
- 基于DSP和FPGA的机器人声控系统设计与实现 (04-16)
- 设计基于TMS320LF2407的低功耗中文人机界面 (04-16)
- USB接口芯片的原理及应用 (04-15)
- 利用以太网硬件在环路实现高带宽DSP仿真(05-04)