一种多DSP信号处理系统的单FLASH引导方法

(整期优先)网络出版时间:2015-12-22
/ 2

一种多DSP信号处理系统的单FLASH引导方法

李博

陕西长岭电子科技有限责任公司产品开发部陕西省宝鸡市721006

摘要:ADI公司的TS系列DSP在工业产品中得到了广泛应用,在实际产品中,对于多片DSP组成的并行处理系统多采用总线互联的紧耦合工作方式。本文介绍了一种单个FLASH芯片加载多个DSP的引导方法,相比较之前常用的LINK链路口顺序加载方法具有编译简单,加载方便,易于修改的特点。

关键词:TS系列DSP;单FLASH引导多片DSP;FLASHPROGRAMMER

引言

ADI公司的TS系列DSP具有完善的总线仲裁机制和支持高速数据传输的链路口。总线总裁机制可支持最多8片的多DSP芯片无缝连接,构成共享总线存储的阵列信号处理结构,高速链路口使其能够简单方便的构造阵列信号处理流水线。因此,TS系列DSP(包括TS101,TS201)在雷达、通信等领域得到了广泛应用。

在阵列信号处理结构设计中,对DSP的引导方式也是设计重点之一。单片TS系列DSP芯片支持EPROM(FLASH)、HOST、链路口等三种加载方式。对多片DSP组成的阵列结构的引导也有多种形式,常见的有每片DSP单独引导、单独引导某一片DSP再通过链路口顺序加载其余DSP等。本文将对常见的引导方式加以分析,并介绍紧耦合方式一种单片FLASH引导多片DSP芯片的简单易行的方法。

1.常见引导方式分析

采用TS系列DSP构成阵列信号处理系统有两种方式,一种为紧耦合连接方式,即共享总线连接方式,多片DSP(最多支持8片)构成一个簇,DSP的外部总线以及外部存储器都连接在簇总线上,簇内提供统一的寻址空间,总线上的任意一片DSP都可以访问外部存储器和另外一片DSP的内部存储器,这是ADI公司DSP芯片独有的连接方式,提供了簇内片间高速数据传输的能力;另一种称为松耦合连接方式,即DSP之间采用双向链路口互连的连接方式,各自的存储器相互独立,只在需要时才传递数据。近几年,实际产品中多采用二者的结合,即在总线共享连接的同时又通过链路口将各DSP两两互连,可以兼有两种方式的优点,可以认为是一种改进的紧耦合连接方式。

之前对于并行多DSP信号处理系统的引导,常见的有以下几种方式:

1.1多FLASH引导

该方法对每片DSP单独引导,引导成功后统一发送复位或者中断信号,使多片DSP同时进行工作。

该方法的优点是设计和实现简单。每片DSP都配置了独立的引导芯片,属于主引导方式,在上电复位过程中,保持BMS管脚为低电平,则DSP会从外部引导芯片自动加载程序到内部存储空间。对开发者来说,仅仅需要在ADSP的开发环境VISUALDSP++软件里为每个DSP芯片创建一个烧写文件LDR即可,对于LDR文件的数据格式不需要做任何修改。

该方法的缺点也很明显,仅适用于对印制板面积和功耗要求不高的场合,重复的FLASH加载芯片也增加了设计制造的成本。

1.2单FLASH引导

该方法采用主DSP从FLASH中加载程序,其它的DSP通过主DSP的链路口加载程序。主DSP采用FLASH主引导方式,产生独立LDR文件,其它DSP可以采用链路口引导方式也可以采用HOST引导方式,依据引导方式的不同生成不同格式的LDR文件,并以数组的形式附加在主DSP的LDR文件中。

该方式的硬件设计很简单,只为主DSP配置引导芯片,将其BMS管脚与FLASH芯片的CS管脚相连,其它DSP通过链路口与主DSP相连,BMS管脚拉高。采用该方式,能够减少芯片数量和系统功耗,也降低了研制成本。

但是该方式的缺点是设计生成LDR文件的过程比较麻烦,首先需要在主DSP的LDR中加入向后续DSP传输加载程序的代码;其次,后续的每个DSP生成一个独立的LDR文件后,还需要先把该文件转化为二进制格式,然后计算该文件的长度,并以定义数组的方式放入主DSP的LDR中。

这种做法会带来以下问题:1)当后续DSP生成程序代码较长,生成的LDR很大时,会影响主DSP的程序存储空间设计;2)当后续DSP中的某一片的程序需要更改时,需要重新生成LDR文件并计算长度,然后更改主DSP中关于该片DSP的数组长度,再重新生成主DSP的LDR文件。特别在采用多片DSP顺序向后加载程序的方式时,更改后面一片的程序,可能需要把前面所有DSP的程序都进行更改,带来了很多额外的工作量。

2.简单的单FLASH引导方法

以上介绍了并行多DSP系统常用的两种引导方式,各有优缺点。二者还都需要自行编写烧写程序将编译的LDR文件在线烧写到FLASH中去,对此已有很多成熟的方法。下面介绍一种更为简单的单FLASH引导方式,能够一次性将多DSP的程序编译成一个LDR文件,并能在VISUALDSP++开发环境中以图形化的编程接口烧写进FLASH,步骤更为简单,界面更友善。

采用这种方式,在硬件设计时,必须将多DSP按照严格的紧耦合连接方式连接。除了将各DSP的数据总线、地址总线和控制总线连接成一个簇,还需要给各DSP芯片分配一个在系统中唯一的ID号(从000到111,最多支持8片),并将DSP的ID2、ID1、ID0按此连接到电源或者地上。各DSP之间通过BRX(X为对应的ID号)管脚来申请总线仲裁,并用HBR、HBG管脚来进行主机总线授权。

软件设计时,在VISUALDSP++开发环境中,将多个DSP芯片的源程序加入同一个工程,并分别编译生成可执行文件DSPX.DXE(X取值为1-7,为对应的ID号),随后在“生成加载文件”选项中的“多处理器输入文件”子选项内,将DSPX.DXE按照对应的顺序分别设置到0-7的选项中,然后编译连接生成一个独立的LDR文件,该文件会按照多DSP的统一寻址空间自动将每个DSP的加载程序映射到相应的地址上,不需要人工设置数据格式,也不需要计算文件长度。开发环境设置界面如图1所示。

采用了以上设计后,就可以直接采用VISUALDSP++开发环境中的FLASHPROGRAMMERAPI接口程序对FLASH芯片进行烧写。该API接口原本是提供给ADI官方开发板的使用者的,使其能够对开发板上的FLASH芯片进行擦除、烧写、查看、以及段操作等,同时提供了开发板上FLASH芯片AT49BV040的驱动程序及源程序。设计者只需根据自己选用的FLASH芯片的厂家和型号对源程序进行相应修改就能编译出驱动程序供API接口程序调用。该过程烧写简单,全程可视化,烧写完后可以直接查看FLASH芯片的使用情况和内容,相比之前的方式界面更为友好,步骤更为简单。图2是FLASHPROGRAMMER使用界面例子,加载完驱动后已经识别出了所采用的FLASH型号AM29LV160DT,可以继续在Programming选项卡里选择前一个步骤生成的LDR文件进行烧写。

烧写完毕后,每次系统上电时,多片DSP会按照各自的总线优先权轮流从FLASH中读取自己的加载程序(ID号小的芯片优先级更高,因此一般把ID号为000的DSP作为主DSP),加载完成后释放总线控制权自动运行工作程序。整个过程简单快捷,不需要链路口参与,也减少了引导过程可能出错的环节。

总结

本文介绍的单FLASH芯片引导多个DSP芯片的方法,要点是通过VISUALDSP++为多个DSP生成一个共用的LDR文件,并通过修改官方提供的例程编译自己适用的驱动程序,最后通过VISUALDSP++提供的API接口函数“FLASHPROGRAMMER”对板上FLASH芯片进行图形化烧写。

比较之前常用的引导方式,这种引导方式在硬件上没有增加额外的芯片和电路,只是对总线控制信号和ID号管脚做出了明确规定;软件设计时步骤简单,对程序进行反复修改也不会增加额外的工作量;在操作上能够利用开发环境提供的接口程序,操作更为简单。该方法已在多个设备的软硬件设计中得到了成功的应用。

参考文献:

[1]刘书明.TigerSHARCDSP应用系统设计[M].北京:电子工业出版社,2004.

[2]AnalogDevicesInc..TigerSHARCDSPHardwareReferenceRevision1.0[Z].2003.

[3]AnalogDevicesInc..ADSP-TS101TigerSHARCProgrammingReference[Z].2003.

[4]AnalogDevicesInc..VISUALDSP++3.5GettingStarted32-BitProcessors(Revision1.0)[Z].2004.

[5]LernerB.ADSP-TS101STigerSHARCProcessorBootKernelsOperation[EB/OL].http://www.analog.com,2003.