DSP链路口在并行处理系统中的应用与设计
时间:11-27
来源:互联网
点击:
随着数字信号处理技术的快速发展,数字信号处理技术在多个领域(如通信、雷达、声纳等)得到了广泛应用。在很多情况下,由于对信号要求实时处理并且数据量不断增加,单片DSP芯片已不能满足要求。AD公司推出的ADSP2106X系列,由于采用了超级哈佛结构,适用于构成各种不同的并行多处理器系统,较好地满足了上述要求,因此在国内外得到广泛应用。在多片并行ADSP2106x处理系统中,链路口的应用得到了越来越多的重视。在这方面,如何充分、有效地利用链路口进行数据传输,已成为广大DSP应用者首先要解决的一个问题。
本文根据笔者在工程中应用和调试ADSP2106X器件的经验,着重讨论链路口的适用场合、使用方法,并对使用过程中常见问题进行分析,给出解决方法。
1 ADSP2106X及其链路口的特点和功能
ADSP2106X采用超级哈佛结构,具有体积小、速度高、内存大、访问灵活等特点,适用于构成各种不同的并行多处理器系统,完成各种实时信号的处理功能,特别适用于雷达信号处理和声纳信号处理。
ADSP2106X提供了6个链路口,每个链路口包括4位数据线、一个双向时钟信号、一个双向确认信号。链路握手信号包括LxCLK和LxACK,链路口以四位码一组的方式传送32位或48位字。发送方在时钟LxCLK的上升沿送出4位码,接收方利用时钟下降沿锁存4位码,并且使LxACK有效,表示已准备接收下一个字。在每个字开始发送时,发送方如果看到LxACK无效,将使LxCLK变高,并等待LxACK有效后发送新字。当发送缓存为空时,LxCLK将保持低。如果接收时钟不超过主时钟(40MHz),LCOM寄存器的LCLKX2x位应设为0;若接收时钟为主时钟的2倍,则置为1。两个用于数据通信的链路口之间的连接关系如图1所示。
每个链路口还可以按2倍时钟频率的速率进行数据传输。
链路口有以下功能和特点:
⑴各链路口可以独立工作或同时工作;
⑵链路数据可以打包成32位或48位数据,可以被处理器核访问,可以与片内存储器进行DMA传送;
⑶外部主机可以直接访问链路口;
⑷具有双缓冲的发送和接收寄存器;
⑸可通过时钟/确认信号在链路口通信时握手,每个链路口均可收/发数据,并分别有一个DMA通道支持;
⑹利用链路连接可以组成一维到多维的各种形式处理器网络。
链路口有三种中断形式:
⑴DMA使能时,DMA完成后将产生一个可屏蔽中断;
⑵DMA禁止时,处理器核可以对存储器映射的LBUF进行读写,当接收缓冲不空或发送缓冲不满时,可产生可屏蔽中断;
⑶当外部设备访问一个未指定的链路口,或者访问一个已指定但对应LBUF被禁止的链路口时,将产生可屏蔽的LSRQ中断。
链路口有三个重要的寄存器:LAR寄存器、LCTL寄存器、LCOM寄存器,它们都是32位寄存器。LAR寄存器(3x~3x+2位)代表了LBUFx的指定链路口,x取0~5,其它位保留。LCTL寄存器主要用来对各个LBUF进行设置(是否使能、是否用DMA方式、是否用链式DMA、发送还是接收数据)。LCOM寄存器包含每个LBUF的状态位(空还是满),设置各LBUF传送数据的速率以及其它功能。
ADSP2106X有6个独立的链路缓冲LBUF5~0,每个LBUF由一个内部寄存器和一个外部寄存器组成的2级FIFO构成。当LBUF用于发送时,内部寄存器接收片内存储器送来的数据,外部寄存器将数据字展开成4位码,并且最高位先发送。当DMA或处理核送来的数据占满这2级FIFO时,将送出一个“满”标志。每当一个字展开发送后,FIFO中将空出一个位置并发出一个DMA请求。当FIFO空时,LxCLK无效。当LBUF用于接收时,外部寄存器用于数据打包,然后数据经内部寄存器以DMA方式送到片内存储器。通过链路指定寄存器LAR确定LBUF5~0与LINK5~0的连接关系。存储器之间传送数据时可以把一个LINK指定给两个LBUF,利用DMA通信。
直接数据传输(DMA)可以承担数据传输任务而无需运算控制单元干预,从而提高了程序执行效率。ADSP2106X提供了10条DMA通道,其中只有LBUF0~3支持二维DMA(即以行主模式访问一个二维阵列元素)。LBUF5~0与6个DMA通道的对应关系如下:
DMA通道1 链路缓冲LBUF0(与串口1接收共享)
DMA通道3 链路缓冲LBUF1(与串口1发送共享)
DMA通道4 链路缓冲LBUF2
DMA通道5 链路缓冲LBUF3
DMA通道6 链路缓冲LBUF4(与外部口0 EPB0共享)
DMA通道7 链路缓冲LBUF5(与外部口1 EPB1共享)
2 链路口的设置及应用中需要注意的问题
对于多DSP系统,为了克服多处理器之间占用总线的瓶颈问题,增强处理器之间的通信能力,一般利用各处理器的链路口两两互联进行高速、点到点通信。处理器间的数据连接可以根据需要进行设置,多个链路口数据通路可以同时并行工作而互不干扰。每个链路口的LxCLK和LxACK提供了处理器之间进行异步数据传输的握手信号。因为采用链路口通信,所以允许发送和接收端的长距离互联。链路口采用的是自同步方式,这样时钟和数据均只有相对延时,不存在绝对延时,这对印制板布线很重要。
如果传输的数据在内存中不是一段数据,而是多段数据,就可以利用链式DMA。先禁止链路口所要指定的LBUF,对LAR指定,依次设置LCOM和LCTL(置LxCHEN位为1),向CP寄存器写入DMA控制块(每个控制块包含了相应收/发数据段的信息)在内存中的首地址,就可启动链式DMA;而向CP写入0则禁止链式DMA。当前DMA完成后,由DMA控制器自动装入下一套参数,放在存储器中的(DMA)参数寄存器,建立下一个DMA。CP的位17为1时表示当前DMA完成后产生一个中断请求。DMA参数有4个:
IIx 地址(存储器起始地址)
IMx 地址修改量
Cx 计数指针
CPx 链指针
它们在内存中的位置关系如图2所示。
链式DMA方式只是对同一个LBUF口而言,多个LBUF不存在相互之间的链式DMA的情况。
如果两个链路口之间是单次传输数据,那么先设置接收方DMA还是先设置发送方DMA都没关系;但是,如果是多次循环的收发数据,一定要保证接收方的DMA设置早于发送方DMA,否则每次传输数据时都会丢掉前两个32位字。这是因为发送方一旦准备好,就往接收方的缓存预先打入两个32位字。而当接收方设置DMA接收数据时,首先要清除这个将要用到的缓存,因此这两个32位字就丢掉了。在实际DMA传输数据过程中,一定不能对正在用的LBUF进行其它操作。
当链路口禁止时,其数据线LxDAT3~0及LxCLK、LxACK都是三态。为了允许收发双方在被使能的时间上有先后,在链路口禁止时要对LPDPD清0,以使LxDAT3~0及LxCLK、LxACK被内部下拉(50kΩ)。要注意的是,这些信号线如果悬空,则必须用内部或外部下拉电阻。
通过LINK口对DSP进行程序加载,一般用host(主机)或EPROM加载模式。
本文根据笔者在工程中应用和调试ADSP2106X器件的经验,着重讨论链路口的适用场合、使用方法,并对使用过程中常见问题进行分析,给出解决方法。
1 ADSP2106X及其链路口的特点和功能
ADSP2106X采用超级哈佛结构,具有体积小、速度高、内存大、访问灵活等特点,适用于构成各种不同的并行多处理器系统,完成各种实时信号的处理功能,特别适用于雷达信号处理和声纳信号处理。
ADSP2106X提供了6个链路口,每个链路口包括4位数据线、一个双向时钟信号、一个双向确认信号。链路握手信号包括LxCLK和LxACK,链路口以四位码一组的方式传送32位或48位字。发送方在时钟LxCLK的上升沿送出4位码,接收方利用时钟下降沿锁存4位码,并且使LxACK有效,表示已准备接收下一个字。在每个字开始发送时,发送方如果看到LxACK无效,将使LxCLK变高,并等待LxACK有效后发送新字。当发送缓存为空时,LxCLK将保持低。如果接收时钟不超过主时钟(40MHz),LCOM寄存器的LCLKX2x位应设为0;若接收时钟为主时钟的2倍,则置为1。两个用于数据通信的链路口之间的连接关系如图1所示。
每个链路口还可以按2倍时钟频率的速率进行数据传输。
链路口有以下功能和特点:
⑴各链路口可以独立工作或同时工作;
⑵链路数据可以打包成32位或48位数据,可以被处理器核访问,可以与片内存储器进行DMA传送;
⑶外部主机可以直接访问链路口;
⑷具有双缓冲的发送和接收寄存器;
⑸可通过时钟/确认信号在链路口通信时握手,每个链路口均可收/发数据,并分别有一个DMA通道支持;
⑹利用链路连接可以组成一维到多维的各种形式处理器网络。
链路口有三种中断形式:
⑴DMA使能时,DMA完成后将产生一个可屏蔽中断;
⑵DMA禁止时,处理器核可以对存储器映射的LBUF进行读写,当接收缓冲不空或发送缓冲不满时,可产生可屏蔽中断;
⑶当外部设备访问一个未指定的链路口,或者访问一个已指定但对应LBUF被禁止的链路口时,将产生可屏蔽的LSRQ中断。
链路口有三个重要的寄存器:LAR寄存器、LCTL寄存器、LCOM寄存器,它们都是32位寄存器。LAR寄存器(3x~3x+2位)代表了LBUFx的指定链路口,x取0~5,其它位保留。LCTL寄存器主要用来对各个LBUF进行设置(是否使能、是否用DMA方式、是否用链式DMA、发送还是接收数据)。LCOM寄存器包含每个LBUF的状态位(空还是满),设置各LBUF传送数据的速率以及其它功能。
ADSP2106X有6个独立的链路缓冲LBUF5~0,每个LBUF由一个内部寄存器和一个外部寄存器组成的2级FIFO构成。当LBUF用于发送时,内部寄存器接收片内存储器送来的数据,外部寄存器将数据字展开成4位码,并且最高位先发送。当DMA或处理核送来的数据占满这2级FIFO时,将送出一个“满”标志。每当一个字展开发送后,FIFO中将空出一个位置并发出一个DMA请求。当FIFO空时,LxCLK无效。当LBUF用于接收时,外部寄存器用于数据打包,然后数据经内部寄存器以DMA方式送到片内存储器。通过链路指定寄存器LAR确定LBUF5~0与LINK5~0的连接关系。存储器之间传送数据时可以把一个LINK指定给两个LBUF,利用DMA通信。
直接数据传输(DMA)可以承担数据传输任务而无需运算控制单元干预,从而提高了程序执行效率。ADSP2106X提供了10条DMA通道,其中只有LBUF0~3支持二维DMA(即以行主模式访问一个二维阵列元素)。LBUF5~0与6个DMA通道的对应关系如下:
DMA通道1 链路缓冲LBUF0(与串口1接收共享)
DMA通道3 链路缓冲LBUF1(与串口1发送共享)
DMA通道4 链路缓冲LBUF2
DMA通道5 链路缓冲LBUF3
DMA通道6 链路缓冲LBUF4(与外部口0 EPB0共享)
DMA通道7 链路缓冲LBUF5(与外部口1 EPB1共享)
2 链路口的设置及应用中需要注意的问题
对于多DSP系统,为了克服多处理器之间占用总线的瓶颈问题,增强处理器之间的通信能力,一般利用各处理器的链路口两两互联进行高速、点到点通信。处理器间的数据连接可以根据需要进行设置,多个链路口数据通路可以同时并行工作而互不干扰。每个链路口的LxCLK和LxACK提供了处理器之间进行异步数据传输的握手信号。因为采用链路口通信,所以允许发送和接收端的长距离互联。链路口采用的是自同步方式,这样时钟和数据均只有相对延时,不存在绝对延时,这对印制板布线很重要。
如果传输的数据在内存中不是一段数据,而是多段数据,就可以利用链式DMA。先禁止链路口所要指定的LBUF,对LAR指定,依次设置LCOM和LCTL(置LxCHEN位为1),向CP寄存器写入DMA控制块(每个控制块包含了相应收/发数据段的信息)在内存中的首地址,就可启动链式DMA;而向CP写入0则禁止链式DMA。当前DMA完成后,由DMA控制器自动装入下一套参数,放在存储器中的(DMA)参数寄存器,建立下一个DMA。CP的位17为1时表示当前DMA完成后产生一个中断请求。DMA参数有4个:
IIx 地址(存储器起始地址)
IMx 地址修改量
Cx 计数指针
CPx 链指针
它们在内存中的位置关系如图2所示。
链式DMA方式只是对同一个LBUF口而言,多个LBUF不存在相互之间的链式DMA的情况。
如果两个链路口之间是单次传输数据,那么先设置接收方DMA还是先设置发送方DMA都没关系;但是,如果是多次循环的收发数据,一定要保证接收方的DMA设置早于发送方DMA,否则每次传输数据时都会丢掉前两个32位字。这是因为发送方一旦准备好,就往接收方的缓存预先打入两个32位字。而当接收方设置DMA接收数据时,首先要清除这个将要用到的缓存,因此这两个32位字就丢掉了。在实际DMA传输数据过程中,一定不能对正在用的LBUF进行其它操作。
当链路口禁止时,其数据线LxDAT3~0及LxCLK、LxACK都是三态。为了允许收发双方在被使能的时间上有先后,在链路口禁止时要对LPDPD清0,以使LxDAT3~0及LxCLK、LxACK被内部下拉(50kΩ)。要注意的是,这些信号线如果悬空,则必须用内部或外部下拉电阻。
通过LINK口对DSP进行程序加载,一般用host(主机)或EPROM加载模式。
- F1aSh存储器在TMS320C3X系统中的应用(11-11)
- 基于PIC18F系列单片机的嵌入式系统设计(11-19)
- DSP在卫星测控多波束系统中的应用(01-25)
- 基于PCI总线的双DSP系统及WDM驱动程序设计(01-26)
- 利用Virtex-5 FPGA实现更高性能的方法(03-08)
- DSP与单片机通信的多种方案设计(03-08)