利用PCI2040将TMS320VC5420桥接到PCI总线上_DSP论文
关键词:pci2040 tms320vc5420 pci总线
pci2040是ti公司生产的专门用于dsp与pci总线之间的桥接芯片,内部原理图如图1所示。关于pci2040具体介绍可以参照ti公司的相关资料(见参考文献1)。pci局部总线标准由intel公司提出并由外围部件联合专门权益组织(pcisig)制定。目前pci总线已不再是一种局部总线,而成为一种受欢迎的高端总线和现代总线,被广泛运用于图形、图像、动画及其它各种外设对高速数据进行传输。pci总线的主要优点是高性能,(数据传输率可达到132/264mbps)总线通用性强、低成本、使用方便灵活。
pci2040可以接口8位tms320c54xhpi总线或者16位tms320c6x hpi总线。本文介绍如何通过pci2040的16位c6x模式接口将tms320vc5420的16位hpi接口连到pci总线上。
1 tms320vc5420映射到主存的两种方式
tms320vc5420是具有a、b两个核的dsp,根据tms320vc5420的数量,有两种将tms320vc5420映射到主存或pc存储空间的方式。若tms320vc5420的数量少于三个,可用映射方式1(如图2)。如果tms320vc5420的数量多于两个,可用映射方式2(如图3),这种方式将每个dsp映射到一个特定的存储器空间,每个dsp核或dsp子系统占用同样的存储空间。
值得注意的是:控制空间的偏移量是相对于pci2040上的256字节pci配置寄存器中的14h处控制空间基址寄存器所代表的值。
2 硬件方面的考虑
tms320vc5420是一个双cpu设备,有两个独立的c54x子系统,能够实现核对核通信。尽管pci2040不是专门设计用来与双cpu设备接口,但经过特殊的处理还是可以实现接口的。需要考虑的主要有三方面:①c6201hpi协议到tms320vc5420 hpi-16协议的转换;②两个dsp核间的切换;③多个复位和多个断的处理。
2.1 c6x hpi协议到tms320vc5420 hpi-16的转换
tms320vc5420对hpi总线提供了两种操作模式。
非多路复用模式(hmode=1),tms320vc5420 hpi接口提供一个18位地址总线,用来访问所有的内部存储器。
多路复用模式(hmode=0),地址和数据复用同样的管脚。pci2040只是完成多路复用模式,所以tms320vc5420的hmode脚必须被拖到地址。另外由于c6x hpi的hpdy信号低电平有效,而tms320vc5420的hrdy信号高电平有效,所以针对tms320bvc5420必须使用转换器(例如sn74alcv04),这样才能将vcc_h端直接连接到vcc端。
2.2 两个dsp核间的切换
通过tms320vc5420的sela/b脚选择被访问的dsp子系统。例如可以将pci2040的脚gpio2连到sela/b,这样就可以通过gpio2的高低电平来选择核a或核b。
2.3 多个hrst
tms320bvc5420的两种方式控制每个子系统的复位功能。
第一种,在hpirs脚从低电平过渡到高电平时,同时保持a_rs和b_rs脚处于低电平,可以在两个核处于复位状态的同时将应用程序代码下载到dsp中。下载完之后,可以将a_rs和b_rs重新设置成高电平而将两个子系统拖出复位状态。
在hpirs脚从低电平过渡到高电平时,同时保持a_rs和b_rs脚处于高电平也可以在两个核处于复位状态的同时将应用程序代码下载到dsp中。下载完之后,可以通过对地址2fh的写操作将子系统拖出复位状态。另外,可以根据sela/b的值选择指定的子系统。
第二种,使用power-on复位逻辑复位每个子系统(a_rs和b_rs),这时需要将hpirs脚连接到pic2040的hrst脚。注意,当应用程序下载完成之后,必须有一个向地址2fh的写操作,以将子系统拖出复位状态。
2.4 对同一个dsp产生的两个hint中断的处理
根据连接到pci2040的tms320vc5420数量可决定多个中断的处理方式。
如果有两个或更少的tms320vc5420,可以将第一个tms320vc5420的a_hint连到hint0,将b)hint连到hint1。将pci2040的hint2和hint3连接到第二个tms320vc5420的a_hint和b_hint(如图4),这种情况下存储器的设置利用映射方式1。
如果板子上含有多个两个的tms320vc5420,此时需要将每个dsp上的两个中断相与(如图5)。每个dsp上的中断共享pci2040的同一根中断线,这样就无法知道某个dsp上到底到个子系统申请的中断。此时必须向每个子系统中hplc寄存器的hint位写1,这种情况下存储器的设置利用映射方式2。
3 软件方面的考虑
c6x有一个16位的hpi接口,使用32位的字长,所以所有的hpi操作需要两个hpi周期。既然pci2040的16位接口用来与c6x接口,所以pci2040也需要两个hpi周期。与c6x不同,tms320vc5420使用16位的字长,这样只需要一个hpi周期就可以完成一次操作。所以程序员通过pci2040访问tms320vc5420时,必须知道对dsp的读和写需要遵循特殊的原则。
3.1 向hpia、hpic和hpic寄存器写数据
当向hpia(hpi地址寄存器)、hpic(hpi控制寄存器)和hpid(hpi数据寄存器)写数据时,由于pci2040对hpi口两个周期的操作是针对同一个寄存器,所以第一个周期写的数据会在第二个周期被覆盖。故应将数据多次写到寄存器中,对保证写入数据的正确(如图6)。
3.2 从hpia、hpic、hpid寄存器读数据
当从hpia、hpic、hpid寄存器读数据时,pci读这些寄存器两遍,返回pci双字节的上下两部分(如图7)。
3.3 利用自动增特性
为了最大提高hpi的性能,在读和写hpid寄存器时,利用dsp寄存器在第一个和第二个hpi周期中hpia的自动增特性。自动增特性使得经pci总线可以对两个字连续的进行读和写,最终使得一次性可以读写32位的字长,这样就有效地加速了数据传输速率。