首页 理论教育 如何进行HPI操作?

如何进行HPI操作?

时间:2023-07-02 理论教育 版权反馈
【摘要】:对于16位的HPI,任何HPI寄存器的主机访问都要求HPI总线上通过两个半字访问;HHWIL为低电平表示第一个半字,HHWIL为高电平表示第二个半字。下面分别介绍16位主机接口及32位主机接口的主机初始化顺序。所有访问都是32位宽的,不使用HPIC寄存器的HWOB位。虽然访问次数不变,但在访问存储器期间,由于主机不需要更新HPIA的值,因此极大地提高了系统的性能。

如何进行HPI操作?

主机对HPI的访问分以下3个步骤:①初始化HPI控制(HPIC)寄存器;②初始化HPI地址(HPIA)寄存器;③写数据到HPI数据(HPID)寄存器或从HPID寄存器读取数据。

HPID寄存器的读或写启动一次内部访问周期,实现期望数据在HPID寄存器和TMS320C64x DSP的内部地址产生硬件之间的传输。对于16位的HPI,任何HPI寄存器的主机访问都要求HPI总线上通过两个半字访问;HHWIL为低电平表示第一个半字,HHWIL为高电平表示第二个半字。主机不能破坏第一个半字/第二个半字的顺序(HHWIL低/高)。如果顺序被破坏,数据可能会丢失,并且导致不确定的操作。

1.HPIC寄存器和HPIA寄存器的初始化

在任何数据访问之前,必须初始化HPIC寄存器和HPIA寄存器。对于TMS320C64x DSP,主机或CPU都可以用于初始化HPIC寄存器和HPIA寄存器。下面分别介绍16位主机接口(TMS320C64x DSP的HPI16)及32位主机接口(TMS320C64x DSP的HPI32)的主机初始化顺序。

(1)HPI16情况下HPIC寄存器和HPIA寄存器的初始化

由于HPI为16位数据总线,而其内部数据宽度为32位,因此必须首先设置HPIC寄存器中的HWOB位,然后主机才能初始化HPIA寄存器。访问数据之前,HPIC寄存器的HWOB位和HPIA寄存器必须以先后顺序初始化(因为HPIC寄存器的HWOB位影响HPIA寄存器访问)。初始化了HWOB位后,主机(或TMS320C64x DSP CPU)可以用正确的半字对齐方式写HPIA寄存器。HWOB=1和HWOB=0的初始化顺序分别见表4-4和表4-5。在这个实例中,HPIA寄存器设置为56781234h。在所有这些访问中,HPIC寄存器中的HRDY位被置位。表4-4和表4-5中的x表示这些值是未知的。

表4-4 HPI16的HPIC寄存器和HPIA寄存器初始化(HWOB=1时)

978-7-111-37346-9-Chapter04-100.jpg

表4-5 HPI16的HPIC寄存器和HPIA寄存器初始化(HWOB=0时)

978-7-111-37346-9-Chapter04-101.jpg

(续)

978-7-111-37346-9-Chapter04-102.jpg

(2)HPI32情况下HPIC寄存器和HPIA寄存器的初始化

对于TMS320C64x DSP的HPI32,主机或CPU都可以用来初始化HPIC寄存器和HPIA寄存器。所有访问都是32位宽的,不使用HPIC寄存器的HWOB位。因此,如果使用默认值,则不必初始化HPIC寄存器。HPI32的HPIC寄存器和HPIA寄存器初始化见表4-6。

表4-6 HPI32的HPIC寄存器和HPIA寄存器初始化

978-7-111-37346-9-Chapter04-103.jpg

2.固定地址模式下的数据读取

在HPIC寄存器和HPIA寄存器初始化完成后,主机就可以从DSP读取数据。假设主机读地址80002345h处的值为6789ABCDh。下面以实例介绍16位主机接口和32位主机接口在固定地址模式下的HPID寄存器读访问。

(1)HPI16固定地址模式下的HPID寄存器读取

主机必须通过两个16位的半字来读取32位的HPID寄存器。表4-7和表4-8分别概括了当HWOB=1和HWOB=0时的HPID寄存器读访问。

表4-7 HPI16固定地址数据读传输过程(HWOB=1时)

978-7-111-37346-9-Chapter04-104.jpg

表4-8 HPI16固定地址数据读传输过程(HWOB=0时)

978-7-111-37346-9-Chapter04-105.jpg

(续)

978-7-111-37346-9-Chapter04-106.jpg

在第一次读取时,数据未准备好,978-7-111-37346-9-Chapter04-107.jpg信号为高。此时HPI表现的情况为:HPID数据未知、数据总线状态不定,虽然其他状态正确,但由于978-7-111-37346-9-Chapter04-108.jpg信号为高,主机不会读取任何数据;第二次读取时,由于上一次未完成数据的读取,各种控制信息仍然保持,尤其是HHWIL状态。此时数据准备好,978-7-111-37346-9-Chapter04-109.jpg信号为低,HPID数据准备好,根据HHWIL的状态,低字节的数据1234已经被送到数据总线上,主机读取数据总线的值得到ABCD并保存,完成低字节数据的读写;第三次读取时,此时读取高字节,978-7-111-37346-9-Chapter04-110.jpg信号为低,和第二次读取类似,主机从数据总线读取高字节数据6789并保存,完成一个32位字数据的读取。

对于HWOB为0时的数据读取,和HWOB为1时的区别仅仅在于高低字节读取的顺序,其他控制信息和时序完全一样。

(2)HPI32固定地址模式下的HPID寄存器读取

HPI32的主机访问HPID寄存器的顺序与HPI16时的类似,对于32位HPI的数据读取,可以一次读取32位的数据,读取过程更加简单。表4-9显示了固定地址模式下TMS320C64x DSP HPI32的HPID寄存器读访问实例。在该实例中,主机读地址80002345h的字,并且字的值为6789ABCDh。

表4-9 HPI32固定地址数据读传输过程

978-7-111-37346-9-Chapter04-111.jpg

3.地址自增模式下的数据读取

所有的HPI外设都具有提高HPI数据吞吐量的特性,这个特性也称为地址自增方式。在当前访问完成后,HPI预先获取数据并指向下一个高位数据单元,该特性自动修改HPIA寄存器。要使用地址自增方式,需要设置HCNTL。

自动增量模式能获得有效的连续主机访问。对于HPID寄存器读和写访问,该模式可以去掉主机加载增加的地址到HPIA寄存器的过程。对于读访问,在当前读操作完成后,指向下一个地址的数据立刻被捕获。因为连续的读之间的间隔用于预取指数据,所以会减少下一次访问的延迟。地址自增方式便于访问一段连续的片内RAM。当使能地址自增后,每完成一次数据访问,HPIA寄存器能够自动增加为下一次访问的数据地址。虽然访问次数不变,但在访问存储器期间,由于主机不需要更新HPIA的值,因此极大地提高了系统的性能。

使能地址自增后,因为HPIA在每次读操作后增加1,在每次写操作前增加1,所以在进行写操作时,HPIA寄存器的值应该初始化为目标地址减1。地址自增功能会影响HPIA寄存器所有的32位,对具有扩展片内RAM的器件,地址自增功能也会影响扩展寻址。例如,如果HPIA被初始化为0FFFFFFFFh,并且使能地址自增,那么下次访问将把HPI的地址变为0100000000h。由于一些芯片的地址自增功能不影响扩展HPI地址,上面的例子将把其HPI地址变为00000000h。

由于地址自增模式具有预先获取的特性,因此预先修改的读访问可能会使主机读取无效的数据。通常发生在主机执行一次读访问后,DSP更新了下一个数据所在位置的高位,由于预获取和预修改的特性,主机所读取的下一个数据并不是更新后的数据。如果主机和DSP都向同一个位置执行写操作,则最好在读访问之前先执行一次FETCH操作,然后才开始读取数据。在从HPI读取数据之前,先读取HPIC寄存器来确定978-7-111-37346-9-Chapter04-112.jpg的状态。对于使用自增模式的初始读操作和没有使用自增模式的其他读操作,在访问开始时(内部978-7-111-37346-9-Chapter04-113.jpg的下降沿),978-7-111-37346-9-Chapter04-114.jpg信号并没有处于准备好的状态,接下来的读操作(地址自增模式)才执行数据预获取。

(1)HPI16地址自增模式下的HPID寄存器读取

表4-10和表4-11分别概括了在HPI16地址自增模式下,当HWOB=1和HWOB=0时,主机的数据读传输过程。在该实例中,主机读地址80001234h的字,并且字的值为6789ABCDh。首先设置HCNTL1和HCNTL0引脚为10状态,表示地址自增读数据。一旦978-7-111-37346-9-Chapter04-115.jpgY信号为0,主机利用两次读周期读取一个32位数据,之后HPIA寄存器地址增加1个字,也就是4B,从80001234增加到80001238;同时该地址的内容写入到HPID寄存器,为主机下一次读取数据做好准备。

表4-10 HPI16地址自增模式下的数据读传输过程(HWOB=1时)

978-7-111-37346-9-Chapter04-116.jpg(www.xing528.com)

表4-11 HPI16地址自增模式下的数据读传输过程(HWOB=0时)

978-7-111-37346-9-Chapter04-117.jpg

(续)

978-7-111-37346-9-Chapter04-118.jpg

(2)HPI32地址自增模式下的HPID寄存器读取

HPI32的主机访问HPID寄存器的顺序与HPI16类似。对于32位HPI的数据读取,可以一次读取32位的数据,读取过程更加简单。表4-12显示了在地址自增模式下TMS320C64x DSP HPI32的HPID寄存器读访问实例。在该实例中,主机读地址80002345h的字,并且字的值为6789ABCDh。

表4-12 HPI32地址自增模式下的数据读传输过程

978-7-111-37346-9-Chapter04-119.jpg

4.固定地址模式下的数据写入

(1)HPI16固定地址模式下的HPID寄存器写入

在HPI的写访问期间,HPID寄存器的第一个半字(HWOB选择是高位还是低位)被来自主机的数据覆盖,并且当HHWIL引脚为低电平时第一个978-7-111-37346-9-Chapter04-120.jpg信号被锁存。HPID寄存器的第二个半字也被来自主机的数据覆盖,并且当HHWIL引脚为高电平并且在978-7-111-37346-9-Chapter04-121.jpg的上升沿时,第二个978-7-111-37346-9-Chapter04-122.jpg信号被锁存。在写访问结束时(第二个978-7-111-37346-9-Chapter04-123.jpg的上升沿),HPID被传送到HPIA指定的地址处。

在HWOB=1和HWOB=0情况下,HPI16固定地址模式下的HPID寄存器写传输过程分别见表4-13和表4-14。主机写5566h到HPIA寄存器指向的地址80001234h的低16位。HPI通过设置978-7-111-37346-9-Chapter04-124.jpgY为高电平延迟主机直到前一个传输完成。如果HPID寄存器没有挂起的写等待,则写访问通常不会有一个没有准备好(Not-Ready)的等待时间。

表4-13 HPI16固定地址模式下的数据写传输过程(HWOB=1时)

978-7-111-37346-9-Chapter04-125.jpg

(续)

978-7-111-37346-9-Chapter04-126.jpg

注:wxyz表示HD引脚上不用关心的一个值,在本实例中,其值为0000。

表4-14 HPI16固定地址模式下的数据写传输过程(HWOB=0时)

978-7-111-37346-9-Chapter04-127.jpg

注:wxyz表示HD引脚上不用关心的一个值,在本实例中,其值为0000。

(2)HPI32固定地址模式下的HPID寄存器写入

HPI32的主机访问HPID寄存器的顺序与HPI16类似,对于32位HPI的数据读取,可以一次写入32位的数据,写入过程更加简单。表4-15显示了固定地址模式下TMS320C64x DSP HPI32的HPID寄存器写入实例。

表4-15 HPI32固定地址模式下的数据写传输过程

978-7-111-37346-9-Chapter04-128.jpg

5.地址自增模式下的数据写入

(1)HPI16地址自增模式下的HPID寄存器写入

表4-16和表4-17分别概括了在自增模式下,当HWOB=1和HWOB=0时,主机的数据写访问过程。除了HCNTL[1:0]值和后面的增量地址为80001238h外,该实例和上面的实例是一样的。地址增加发生在下一个HPID写访问的978-7-111-37346-9-Chapter04-129.jpgE的上升沿。如果下一次访问是HPIA寄存器或HPIC寄存器访问,或者HPID寄存器读,则不会发生自动地址增加。

对于自动增量模式的TMS320C64x DSP HPI,主机所写的数据立刻从HPID寄存器复制到内部写缓冲区。另外,当内部写缓冲是半满时,或当写周期被终止时,DSP只服务于自动模式下的HPI写访问。

表4-16 自动增量模式下的HPID寄存器写访问(HWOB=1时)

978-7-111-37346-9-Chapter04-130.jpg

注:wxyz、mnop、qr表示HD引脚上不用关心的一个值,在本实例中,其值为0000。

表4-17 自动增量模式下的HPID寄存器写访问(HWOB=0时)

978-7-111-37346-9-Chapter04-131.jpg

注:wxyz、mnop、qr表示HD引脚上不用关心的一个值,在本实例中,其值为0000。

(2)HPI32地址自增模式下的HPID寄存器写入

对于自动增量模式的TMS320C64x DSP HPI,主机写的数据也是立刻从HPID寄存器复制到内部写缓冲区。因此,如果内部写缓冲区没有满,则978-7-111-37346-9-Chapter04-132.jpg保持为低电平(准备好)。表4-18概括了在HPI32自增模式下的HPID寄存器写访问。

表4-18 HPI32在自增模式下的HPID寄存器写访问

978-7-111-37346-9-Chapter04-133.jpg

如表4-18所示,地址80001234h和80001238h的值并没有更新(00005566h、33000000h),而是直到内部写缓冲得到DSP的响应时才实现更新。

在复位期间,当HCS为有效的低电平时,978-7-111-37346-9-Chapter04-134.jpg为无效的高电平;当978-7-111-37346-9-Chapter04-135.jpg为无效的高电平时,978-7-111-37346-9-Chapter04-136.jpg为有效的低电平。所以当器件复位时,不能使用HPI。EMIF的SDCKE信号必须接入到SDRAM的CKE信号上,方可使用自刷新操作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈