基于FPGA和HPI的DSP间的通信装置及通信方法与流程

文档序号:12464463阅读:421来源:国知局
基于FPGA和HPI的DSP间的通信装置及通信方法与流程

本发明属于实现多DSP之间通信的领域,特别是涉及一种基于FPGA和HPI的DSP间的通信装置及通信方法。



背景技术:

数字信号处理器DSP自诞生以来,发展极其迅速,其应用已经涉及航天航空、工业控制、电力系统等各个领域。虽然DSP的功能日益强大,但很多场合仍需要多个DSP协同工作来实现应有的功能,尤其对于实时性要求较高的场合,多DSP之间如何实现高效和稳定的通信就显得尤为重要。

目前比较广泛的多个DSP间的通信方式,是串行工作方式中的串口通信和双口RAM通信,这两种方法一般都会占用DSP较多的时间资源,传输速度较慢,实时性较差,影响DSP的效率。

HPI(host port interface)接口,是TI的TMS320C6000系列DSP配置的并行接口。而HPI接口可以让外部的主机直接访问DSP内存映射的部分内存,而无需DSP干预。本发明就是利用这一特点,通过操作多个DSP的HPI接口来实现多个DSP之间的通信。



技术实现要素:

为了解决目前多个DSP间的串口通信和双口RAM通信会占用DSP较多的时间资源、传输速度较慢、实时性较差、影响DSP的效率等技术问题,本发明采用现场可编程逻辑门阵列FPGA作为主机,多个DSP作为从机,通过FPGA操作多个DSP的HPI接口,对需要通信的多个DSP的HPI接口进行读写操作,来实现多DSP之间的通信。

基于FPGA处理速度快、并行处理的特性,使用FPGA来完成数据交换的中转功能。中转过程用时较少,基本等同于任意两个DSP或多个DSP之间的直接通信。本发明可用于TMS320C6000全系列DSP的HPI接口之间的通信,具有很强的通用性。

本发明为解决上述技术问题,所采取的技术方案是:

基于FPGA和HPI的DSP间的通信装置,包括:作为主机的一个FPGA,作为从机的、带有HPI接口的至少两个DSP,在FPGA中分区存储每个DSP所对应的HPI读写操作控制模块、数据缓存区读写模块、缓存区数据交互模块。

HPI读写操作控制模块,实现FPGA对HPI接口的读写操作,采用的是先读后写的操作方式,读采用的定时读,即每隔一定的时间,FPGA对需要通信的DSP的HPI接口进行读操作,以获取各DSP需要发送给其他DSP的数据;而对于写操作,则要等待FPGA将某DSP所需要写入的数据全部准备好后,才能将数据通过HPI接口写入DSP。

HPI读写操作控制模块包括两部分:一是HPI数据读写时序部分,负责构建对DSP进行数据读写时所需要的控制逻辑,读操作和写操作分别置于相互独立的程序模块内、触发的条件互斥,否则会产生HPI接口访问错误;二是HPI接口控制信号输出部分,负责向HPI数据读写时序部分输出所需要的HPI控制信号,读操作采用定时读以获取各DSP需要发送给其他DSP的数据,以HPI接口定时读标志到达为控制条件,而写操作则要等待FPGA将待写入数据的DSP所需要写入的数据全部准备好并将写缓存完成标志置起后才执行。

数据缓存区读写模块,包含至少2个数据缓存区,一个是读缓存区,用于存储通过HPI接口读出的所应对的DSP内部RAM数据;另一个是写缓存区,用于存储需要写给所对应的DSP的有效数据;此模块还对定时器进行定时设置以产生相应的HPI接口定时读标志。

缓存区数据交互模块,负责将除待写入数据的DSP以外的其他DSP的读缓存区的数据进行汇总和处理,并按照一定的格式存储在该待写入数据的DSP对应的写缓存区内,完成后将该DSP的写缓存区的写缓存完成标志置起。如果某个数字信号处理器DSPn需要其他DSP的数据,由于FPGA从各DSP读取的数据长度不一定相同,故所需时间也有所差异,FPGA要等待所有读缓存区读取动作全部完成后,才能进行缓存区数据的汇总和处理,处理完成后按照一定的格式存储在DSPn对应的HPI接口的写缓存区内,存储完成后,将DSPn写缓存区的写缓存完成标志置起。

FPGA通过控制线实现对HPI接口的控制、通过数据线实现与HPI接口间的数据交互。

基于FPGA和HPI的DSP间的通信装置的通信方法,包括以下步骤:

步骤1、在FPGA中为需要通信的DSP分别构建其各自的HPI读写操作控制模块、数据缓存区读写模块、缓存区数据交互模块,所述数据缓存区读写模块包含一个读缓存区和一个写缓存区;

步骤2、各DSP的HPI读写操作控制模块并行分别读取各自的内存数据并放置该DSP所对应的读缓存区内;

步骤2-1、等待HPI接口定时读标志是否到达,若否,则继续等待,若是,则初始化该DSP的HPIC寄存器、HPIA寄存器,并转步骤2-2;

步骤2-2、FPGA利用HPI读写操作控制模块通过HPI接口读取该DSP的内存数据,并放置在该DSP所对应的读缓存区内;

步骤2-3、判断读取该DSP的内存数据是否完成,若否,转步骤2-2,若是,则在该DSP的读缓存区置起读完成标志;

步骤3、待所有需要通信的DSP的读完成标志置起后,FPGA利用缓存区数据交互模块将除待写入数据的DSP以外的其他所有DSP对应的读缓存区的数据进行汇总和处理,并放置在该待写入数据的DSP的写缓存区内;

步骤4、判断各DSP的读缓存区的数据汇总和处理是否完成,如果否,则转步骤3,如果是,则在待写入数据的DSP的写缓存区中置起写缓存完成标志并转步骤5;

步骤5、初始化待写入数据的DSP的HPIC寄存器、HPIA寄存器;

步骤6、FPGA利用HPI读写操作控制模块通过HPI接口将写缓存区的数据写入待写入数据的DSP的内存;

步骤7、判断写缓存区的数据写入待写入数据的DSP的内存是否完成,若否,则转步骤6,若是则本次通信完成。

本发明相对于以前的DSP通信方式,有以下优点:

(1)速度块,实时性高,速度主要受限于所选择DSP的HPI接口最高工作频率以及所选择FPGA的最高工作频率,速度可达100MB/s以上。

(2)基本不消耗DSP的资源,因HPI接口可以让外部的主机直接访问DSP内存映射的部分内存,而无需DSP干预,因此基本不占用DSP的负载,大大提高了DSP的运行效率。

(3)可同时实现任意两个或多个DSP之间的通信,可扩展性较强,其扩展的数量主要取决于所选用FPGA的IO引脚的数量和开辟数据缓存区所需要的RAM资源。

附图说明

图1是本发明的装置结构示意图

图2是本发明的通信方法逻辑框图

具体实施方式

下面结合附图,具体说明基于FPGA的DSP间HPI通信装置及其通信方法。

如图1所示,基于FPGA和HPI的DSP间的通信装置,包括:作为主机的一个FPGA,作为从机的、带有HPI接口的至少两个DSP,在FPGA中分区存储每个DSP所对应的HPI读写操作控制模块、数据缓存区读写模块、缓存区数据交互模块;

HPI读写操作控制模块,实现FPGA对HPI接口的读写操作,采用的是先读后写的操作方式,读采用的定时读,即每隔一定的时间,FPGA对需要通信的DSP的HPI接口进行读操作,以获取各DSP需要发送给其他DSP的数据;而对于写操作,则要等待FPGA将某DSP所需要写入的数据全部准备好后,才能将数据通过HPI接口写入DSP。

HPI读写操作控制模块包括两部分:一是HPI数据读写时序部分,负责构建对DSP进行数据读写时所需要的控制逻辑,读操作和写操作分别置于相互独立的程序模块内、触发的条件互斥,否则会产生HPI接口访问错误;二是HPI接口控制信号输出部分,负责向HPI数据读写时序部分输出所需要的HPI控制信号,读操作采用定时读以获取各DSP需要发送给其他DSP的数据,以HPI接口定时读标志到达为控制条件,而写操作则要等待FPGA将待写入数据的DSP所需要写入的数据全部准备好并将写缓存完成标志置起后才执行。

数据缓存区读写模块,包含至少2个数据缓存区,一个是读缓存区,用于存储通过HPI接口读出的所对应的DSP内部RAM数据;另一个是写缓存区,用于存储需要写给所对应的DSP的有效数据;此模块还对定时器进行定时设置以产生相应的HPI接口定时读标志。

缓存区数据交互模块,负责将除待写入数据的DSP以外的其他DSP的读缓存区的数据进行汇总和处理,并按照一定的格式存储在该待写入数据的DSP对应的写缓存区内,完成后将该DSP的写缓存区的写缓存完成标志置起。如果某个数字信号处理器DSPn需要其他DSP的数据,由于FPGA从各DSP读取的数据长度不一定相同,故所需时间也有所差异,FPGA要等待所有读缓存区读取动作全部完成后,才能进行缓存区数据的汇总和处理,处理完成后按照一定的格式存储在DSPn对应的HPI接口的写缓存区内,存储完成后,将DSPn写缓存区的写缓存完成标志置起。

图1中有关HPI接口的说明:

(1)HD[0:15]:HPI数据交互总线,16位;

(2)RD/WR:HPI读写控制线。RD/WR=0时,写;RD/WR=1时,读;

(3)HCNTL:主机用来控制选择访问哪个寄存器的地址信号。当HCNTL=00时访问HPIC;当HCNTL=01时访问HPIA;当HCNTL=10时,读写HPID,且每读写一次HPIA自动增加1(主要用该模式);当HCNTL=11时,读写HPID,且每读写一次HPIA不受影响;

(4)HAS:地址选通信号。此信号用于主机的数据线和地址线复用的情况。不用时该信号接高(没有使用);

(5)HHWIL:字节识别信号,用于识别主机传送过来的是第一个字节(或者叫半字)还是第二个字节。当HHWIL=0时为第一个字节,当HHWIL=1时是第二个字节;

(6)HCS:片选信号。使能输入端,在每次寻址期间为低电平,其他时候也可以保留在低电平;

(7)/HDS,直接连接高电平,没有单独进行控制;

(8)/HRDY DSP的HPI接口状态,若为低,则可以被访问,若为高,则要等待。主机操作HPI前,都要先等待此状态为低,才能够进行;

(9)/HINT,输出中断给主机,可不使用。

基于FPGA和HPI的DSP间的通信装置的通信方法,下面以把DSP2至DSPn的数据写入DSP1为例具体说明,如图2所示,包括以下步骤:

步骤1、在FPGA中为需要通信的DSP1至DSPn分别构建其各自的HPI读写操作控制模块、数据缓存区读写模块、缓存区数据交互模块,所述数据缓存区读写模块包含一个读缓存区和一个写缓存区;

步骤2、DSP1至DSPn的HPI读写操作控制模块并行分别读取各自的内存数据并放置该DSP所对应的读缓存区内;

步骤2-1、等待HPI接口定时读标志(Read_Start=1)是否到达,若否,则继续等待,若是,则初始化该DSP的HPIC寄存器、HPIA寄存器,并转步骤2-2;

步骤2-2、FPGA利用HPI读写操作控制模块通过HPI接口读取该DSP的内存数据,并放置在该DSP所对应的读缓存区内;

步骤2-3、判断读取该DSP的内存数据是否完成,若否,转步骤2-2,若是,则在该DSP的读缓存区置起读完成(Read_Dsp(1-n)_OK=1)标志;

步骤3、待DSP1至DSPn的读完成标志(Read_Dsp(1-n)_OK=1)置起后,FPGA利用缓存区数据交互模块将DSP2至DSPn对应的读缓存区的数据进行汇总和处理,并放置在DSP1的写缓存区内;

步骤4、判断DSP2至DSPn的读缓存区的数据汇总和处理是否完成,如果否,则转步骤3,如果是,则在DSP1的写缓存区中置起写缓存完成(Write_EN=1)标志并转步骤5;

步骤5、初始化DSP1的HPIC寄存器、HPIA寄存器;

步骤6、FPGA利用HPI读写操作控制模块通过HPI接口将写缓存区的数据写入DSP1的内存;

步骤7、判断写缓存区的数据写入DSP1的内存是否完成,若否,则转步骤6,若是则本次通信完成。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1