引言
本文围绕使用16颗TMS320C6713 DSP的实时处理系统平台,研究如何解决DSP阵列的管理问题,重点讨论复位的管理,以及加载方式的正确选择配置和解决HPI总线的分时复用问题。其中难点就是在解决DSP在应用过程中,如何处理加载方式的配置通道和数据加载通道的复用,以及16颗DSP阵列如何共用1个HOST的HPI数据通道的复用。本论文围绕着提出的HPI总线分时复用模型,就如何解决HPI总线的复用问题进行探讨,详细阐述了其设计的精妙之处,以达到对DSP阵列的合理科学管理。
1 复位的管理
通常情况下,单颗DSP的复位就是由自身所在的系统上电复位产生,并和所在系统的硬复位同步,完成对DSP的寄存器、内部程序区的清零,使其正常启动。但在实际的应用系统中,考虑到使用场合的特殊性,提高产品的可靠性,需要对DSP的复位进行管理。
系统对复位的管理主要是从以下两方面进行考虑的:一是当DSP在运行过程中出现异常,无法和HOST进行正常的通信,无法按照既定的要求进行工作,DSP处于非受控状态时,就需要复位该DSP,使其重新启动,进入正常工作状态;二是当系统在运行过程中,需要不定期地对DSP的数据和程序进行更新,此时就需要对DSP进行复位操作,将原来的数据和程序清除,使其接收到新的数据和程序后,按照新的要求来进行工作,从而完成其DSP功能的重置,达到更新数据和程序的目的。
根据上面的两点要求,对DSP阵列的复位进行合理管理就显得尤为重要。为使DSP能够在提高系统可靠性的同时按照系统的既定要求进行工作,设计通过HOST进行控制的复位方式来实现对DSP进行复位管理。具体电路设计如图1所示。
图1 DSP阵列复位逻辑管理
图中D0~D15为HOST的数据信号,DSPRS~0至DSPRS~15为16颗DSP的复位信号,RSW~是HOST访问此复位管理空间的控制信号,RESET~为系统的复位信号,此信号可满足DSP的工作和系统同步,PRN273是为了保证系统的可靠性而增加的使能信号。相应的逻辑设计如图2所示。
图2 主系统复位逻辑
图中RESET~信号为系统的复位信号,当RESET~为低电平,即系统处于复位状态的时候,此时DSP也处于复位状态。当系统的复位信号结束时,DSP仍然要处于复位状态,此时需要等待HOST完成启动后,再根据系统的要求对DSP进行停止复位操作,完成对DSP的解复位。在系统运行过程中,如果某颗DSP异常或者需要对其进行功能重置,则需要更新其数据和程序,此时在DSP相对应的位写“0”,通过其控制信号输出,使DSP处于复位状态,适当延时后,再在此端口写“1”,停止复位该DSP,则可将相应的程序和数据加载到DSP中去,就实现了DSP的再启动。也就是在系统实现中通过软件可控的方式来完成对DSP阵列中任意DSP的复位管理。
具体的数字仿真波形如图3所示。在第1个基准位,通过对D15写“0”,经过逻辑送达DSPRS~0,实现对DSP0的复位。在第2个标志位,对D15进行写“1”操作,经过逻辑DSPRS~0变为“1”,从而达到对DSP0的解复位目的。
图3 DSP复位逻辑仿真图
2 加载方式的选择和正确设置
TMS320C6713的启动加载方式包括不加载(JTAG调试模式)、EMIF加载和主机HOST加载3种方式,各加载方式具体说明如下:
不加载方式的特点是,存储器0地址不必映射到RAM空间,否则在RAM空间初始化之前DSP会读取无效的代码而导致错误。这种情况下一般使用JTAG口,需要在PC机上安装特定的操作软件,通过加载电缆将需要执行的代码由JTAG口传给DSP,可以设定一些断点供调试DSP使用,这种方式一般使用在调试阶段,无法应用与现场并网运行。
EMIF接口的加载模式,则需要在DSP的EMIF接口处外挂一个存储器,需要事先将相应的程序和数据固化在外部存储器中。在使用过程中,DSP复位结束后,从这个存储器中读取程序和数据,来完成DSP的启动。使用这种加载方式的场合一般是单颗DSP独立使用,系统相对比较小,并且程序和数据不需要经常更新,DSP的功能不需要经常进行重置。
HOST加载方式需要系统有一个外部的主机来控制DSP的初始化。使用过程中,根据要求将相应的程序和数据通过HPI口写入DSP的内部RAM区,然后启动DSP,使得DSP工作正常化。工作过程中,若是需要更新数据和程序,就需要按照前面的软件可控的复位模式,让HOST复位DSP,清掉原来的程序和数据,通过HPI口将新的程序和数据送入DSP,来完成DSP的功能重置。
在DSP阵列的应用中,需要经常对DSP的程序和运行数据进行更新,来完成功能重置。考虑到电信级的产品应用场合,还应支持远程进行程序和数据的更新和维护,因此需要选择使用HPI口的加载方式来对DSP进行程序和数据的加载。在此DSP阵列的应用中,选择使用MPC860作为系统的HOST使用。系统运行过程中,DSP需要更新程序和数据时,可以从MPC860的以太网口将所需要的程序和数据加载到MPC860的SDRAM区,然后由MPC860完成对16颗DSP阵列的复位管理,将DSP原来运行的程序和数据清零,MPC860再申请HPI总线,从SDRAM区将数据经HPI口送入DSP,就可以对DSP进行数据和程序更新。这样一来,不但满足了不定期更新数据和程序的要求,也可以满足远程管理的要求,提高了产品的可靠性。
上面选择的TMS320C6713的加载方式是HPI口加载,但是其加载方式的设置是通过DSP在复位状态时检查其相应配置引脚的电平值来决定其加载方式的。如表1所列。
表1 DSP加载方式配置
根据上表的说明,需要将HD3和HD4的值设置为“00”,并且还要注意此配置信号有效的时机为DSP从复位状态解复位的时候,实现方式在后面会进行详细的描述。
3 HPI口数据通信道道的管理
通过配置HD3和HD4两个使能引脚在DSP复位状态的值为“00”来设置DSP的加载方式为HPI口加载,但是由于HD3和HD4是DSP的复用信号,它们是HPI口16位数据总线的其中两位。因此需要重点解决DSP的加载方式配置使能和DSP数据程序加载通道的复用问题,还需要解决DSP阵列中的16颗TMS320C6713DSP如何复用一个HOST的HPI总线问题。
如图4所示,提出了这样一套分时复用模型,16颗DSP阵列同时共享一个MPC860作为HOST使用,并且还使用了FPGA来完成相应的逻辑设计。在FPGA中,有对DSP的复位管理逻辑,就是MPC860软件可以复位控制16颗DSP的逻辑设计,还有HD3和HD4的配置字的设置,以及HOST访问DSP的HPI口的控制逻辑以及数据线的互访设计。
图4 DSP阵列HPI通道的管理
上图中16颗DSP各自需要一个隔离驱动电路,此电路的控制由MPC860通过FPGA来完成。由于8个DSP的HPI数据线通过各自的隔离驱动电路互接到一起,再和MPC860的数据线进行互控访问,因此需要添加一个驱动电路来增加FPGA输出的HPI口HD_BUS的驱动能力。FPGA中设计了可以通过MPC860来软件复位DSP的电路,系统可以根据需要通知MPC860来实现对任意一颗DSP的复位与控制。DSP的加载方式的配置字设计电路,也就是保证HD3和HD4在DSP由复位状态解复位的时候有效值为“00”,这个复位控制信号和前面的软件可控的复位逻辑结合起来都由MPC860来控制完成。
针对一颗DSP的启动过程是这样的:若系统需要DSP0启动时,MPC860下达申请HPI总线请求,先将总的驱动电路和连接DSP0的隔离驱动有效,再由MPC860软件针对复位控制逻辑进行操作复位,此时复位配置电路有效,MPC860再下达停止复位信号,加载配置字电路将HD3和HD4的“00”有效信息传递给DSP0,实现其加载方式的配置。此时DSP0的HPI口和MPC860可以相互通信,MPC860将其需要的数据和程序加载到DSP0去,DSP0按照接收到的程序和数据运行起来,就完成了DSP0的启动。
这样的设计解决了DSP的加载配置字信息和HPI口总线加载数据的复用问题。
系统要求启动16颗DSP时,要根据需要按序逐个完成DSP的启动。由于每颗DSP都分别使用了一个独立的隔离驱动芯片。各自的DSP_HD总线经过第1级隔离驱动后,汇集成HD_DBUS信号,该信号再经过一级驱动后,进入FPGA。控制信号需要对每一级的隔离驱动芯片进行方向和使能控制,每个DSP都有各自独立的复位信号。
当需要对其中任意一颗DSP(如DSP1)加载的时候,将其他7颗DSP连接的隔离驱动电路置于输出高阻状态,也就是需要这7颗DSP和HOST的HPI总线隔离开来,同时将控制DSP1的隔离驱动芯片置于有效工作状态,总的隔离驱动芯片需要和将启动的DSP1的隔离驱动电路同时有效。此时MPC860对DSP1进行复位管理,并且将加载配置字电路也要同时置为有效,加载配置使能信号“11”经过FPAG中的HPI接口,外部的总的HPI驱动以及连接DSP1的隔离驱动电路来完成对DSP加载方式的正确配置。接着MPC860再对DSP1的复位信号写“1”停止其复位,DSP1就等待从HPI口接收程序和数据。此时隔离驱动芯片仍然由DSP1占用,MPC860将需要的数据和程序经HPI口送入DSP1,就完成了DSP0的数据和程序的更新,DSP1就可以按照系统的要求正常工作了,这样系统就实现了对任意DSP进行加载和更新其数据和程序的功能。
通过分时复用HPI总线的设计,解决了16颗DSP共用1颗HOST的HPI总线问题,并且完成了对DSP加载方式的正确配置。按照这样设计的应用,大大提高了DSP阵列的可靠性,并且可以根据要求来完成对DSP功能的任意重置。
3 结语
本系统经过调试,证明总体设计思路正确,方案可行,DSP阵列的稳定型已经得到相应验证,现已经成熟应用于某海量数据实时处理的系统中。另外该系统中采用的是DSP+FPGA+CPU的典型架构,随着DSP多核技术的发展以及更大规模的FPGA使用,CPU的处理能力也会得到更大的提升。该系统在应用中,会对某一部分功能的提升提出改进,而相应的数据处理流程不需要复杂的改动,后续系统的性能提升会更方便。可以通过在DSP和HOST中编写不同的程序和数据,应用于其他类似需要海量数据实时处理的DSP阵列的场合。