当前位置:首页 > 单片机 > 单片机
[导读]以由ADSP—TSl01型高速数字处理器和EPM3256型复杂可编程逻辑器件构成的红外图像处理系统为例,详细介绍系统中DSP的DMA通道的应用。

摘  要:以由ADSP—TSl01型高速数字处理器和EPM3256型复杂可编程逻辑器件构成的红外图像处理系统为例,详细介绍系统中DSP的DMA通道的应用。
关键词红外图像处理;ADSP-TSlOl;DMA;CPLD

1 引言
    红外图像处理系统的数据吞吐量大.处理算法复杂。由高速数字处理器和复杂可编程逻辑器件(CPLD)构成的红外图像处理系统是当前红外图像处理系统的一种发展趋势。将高速处理器从繁重的数据传输中解脱出来,专注于从事图像处理,是解决速度瓶颈的重要手段。

    直接内存存取(DMA)是在CPU无需干预的情况下自动进行数据传输的方式。它对于浮点DSP进行实时信号处理有着非常重要的作用。一方面.为了发挥DSP核心运算单元的高速运算能力.必须首先把程序和数据传输到DSP的内存中.这通常需要DMA操作来实现;另一方面.DSP系统总要跟外部信号通信,不论是数据的输入还是输出,都需要DMA来完成。否则会影响DSP核的高速运算能力。

    ADSP-TSlOl是AD公司推出的新型浮点DSP之一。其内部有专门的DMA控制器。还提供了多个DMA通道.不同的通道对应不同的外部口操作。本文首先概括介绍由ADSP一TPSl01和EPM3256型CPLD构成的红外处理系统。然后对系统中的几种典型DMA操作进行详细的分析。

2 系统结构
    本文介绍的红外处理系统主要用于320x240像素红外图像的处理.对背景中的目标进行检测、跟踪和识别。系统的硬件结构如图1所示。该系统采用2个ADSP-TS101作为处理器,2个的FIFO作为输入输出缓存,1个SDRAM作为外部存储器,1个:EPM3256型CPLD作为逻辑控制。

    在此系统之前的处理是红外图像的采集过程。采集到的红外图像数据经过外部连接首先传输到输入缓冲FIFO中。当某一帧图像数据传输完毕,使用TSl01特有的FLYBY传输方式将数据由输入缓冲FIFO传输到SDRAM中,然后DSP对图像数据进行目标检测等处理。处理结果先存储在DSP内的RAM中,最后输入到输出缓冲FIFO。其中包括FIFO到SDRAM、SDRAM到DSP及DSP间的数据传输,由于都采用了DMA传输,不占用DSP资源,大大提高了系统的处理能力。

3 ADSP—TSl01的DMA描述
    ADSP-TSl01是TigerSharc系列DSP的首个成员,具有极高的运算能力。它片内的DMA控制器允许将数据传输作为后台任务执行,从而将处理器内核释放出来。其内部具有14个DMA通道,如图2所示,分别对应着不同类型的传输操作。4个通道专用于外部存储器设备,8个。DMA通道用于链路口,还有2个通道用于自动。DMA操作。多样的传输手段使得ADSP—TSl01传输数据非常方便。利用DMA控制器,DSP处理器可以执行以下几种类型的数据传输:

    (1)内部存储器到外部存储器或与存储器映射的外设设备之间的数据传递;
    (2)外部存储器与外部外设之间的飞跃式数据传输;
    (3)外部存储器到链路口I/O的数据传输;
    (4)链路口I/O到处理器内部存储器的数据传输:
    (5)链路口I/O到外部存储器的数据传输;
    (6)链路口I/O之间的闭环数据传输。

    TSl01的DMA控制器由专用的控制器核、发送端TCB寄存器与接收端TCB寄存器等构成。DMA传送的数据流具有方向性,即从发送端(源)到接收端(目的)。若发送端或接收端是存储器,则需通过TCB寄存器来描述。TCB寄存器是128 bit寄存器,如图3所示.包括启动DMA所必需的信息。例如,1个传送TCB包括数据源的地址、传输的数据字节数、地址的增量、控制信息。若启动DMA操作,需对TCB寄存器进行编程。

    TCB寄存器由4个32位寄存器组成:DI寄存器、DX寄存器、DX寄存器和DP寄存器。DI寄存器是32 bit索引寄存器,它包含传送的源地址或者接受的目的地地址,可以指向内存、外存或者LINK口。DX寄存器包含了1个16 bit的计数值和1个16 bit的修正值,分别存储在DX的前16位(前者)和后16位。如果一个二维DMA被使能,该寄存器包含的值仅仅代表X方向。例如:如果要传输4个128 bit的字.计数值将被设置为0X10,而修正值与DP寄存器中的操作数长度相对应。如果操作数长度是长字.那么修正值将会被设置为0X2。DY寄存器与DX寄存器相对应,只有启动二维DMA时才会用到。DP寄存器包括DMA所有的控制信息,分为控制信息和DMA链信息。

4 系统中的典型DMA操作
    在本文介绍的红外图像系统中,主要使用以下几种DMA操作:内存与外存(内存与SDRAM间的数据传输)、内存与LINK口间的数据传输、外设与外存的数据传输(FIFO与SDRAM间的数据传输)。

4.1 内存与外存间的DMA操作

    TSl01处理器有4个专用DMA通道,用于内部存储器与外部存储器之间的数据传输。每个通道有2个TCB DP寄存器、1个发送TCB和1个接收。TCB.其中发送端用来驱动数据,接收端用来接收数据。DP寄存器的TY域指定了要执行的DMA传送的类型。

    实现外部存储器与内部存储器的数据传输有2种途径:一是对4个DMA通道中的1个进行编程,将数据块从一个存储器移人另一个存储器。此时.发送和接收TCB都需要进行配置:二是使用2个AutoDMA通道中的一个,此时,外设首先对通道的2个TCB寄存器编程,然后向目标AutoDMA数据寄存器写人数据。向这个地址进行写操作,激活相应的DMA。

    下面以在红外处理系统中的应用为例说明第一种用法。如要将SDRAM内地址为0x400000~
Ox4003FF中的1024个数用DMA通道0传送到内存地址0xS0000~0x803FF中.可用下面的

编程来实现:
XR0=0x400000:← DI Register
XRl=OxO4D00004:← DX Register
XR2=0x00000000;← DY Register
XR3=Ox87000000:←DP Register
DCS0=XR3:0:
XR8=0x80000; ← DI Rester
XR9=ox04000004;←DX ReRister
XRl0=0x0000000;← DY Re西sler
XRll=ox47000000;← DP Register
DCD0=XRll:8:

4.2  内存与LINK口间的DM_A操作

    TSl01的链路口为处理器内部或外部的数据传输提供了快速、独立的通信机制,它为系统中的DSP之间提供了点对点的通信方法。每个DSP有4个链路口,每个链路口都由8位双向数据线和另外3条控制线构成。链路口的结构如图4所示。每个链路口有2个端口(发送端和接收端)和2个缓冲区。缓冲区用于打包或解包链路口数据,与内部存储器进行数据交换。

    TSl01的4个链路口均可使用DMA方式发送或接收数据,可以实现链路口与内部存储器、外部存储器或其他链路口之间的双向数据传送。处理器为每个链路口提供了2个专用的DMA通道,1个用于发送数据,1个用于接收数据。两个DMA通道均可以与内部或外部存储器接口。当接收端寄存器空且链路DMA通道使能时,链路口向发送DMA通道发出DMA请求,链路1:3可以继续向缓存区写数据。当接收寄存器满且DMA通道使能时,链路口向接收DMA通道发出DMA请求。

    以红外处理系统中的应用为例,如图l所示.DSPO通过LINK口0与DSPl的LINK口1相连。如果将DSP0内存中的数组data_tx中N个数通过链路口传输到DSPl内存中的数组data_rx中.首先要对DSPl的LINK口l的接收DMA通道进行编程,然后对DSP0的LINK口O的发送DMA通道进行编程。

DSPl中的程序:
TCB_temp.DI=data_rx;
TCB_temp.DX=4 I(N<<16);
TCB_temp.DY=O:
TCB_temp.DP=0x47000000;
q=_buihin_compose_128((1ong long)TCB_temp.DI │
(10ng long)TCB_temp.DX<<32.(10ng ions)
(TCB_temp.DY│(10ng long)TCB_temp.DP<<321);
builtin_sysreg_write(LCTLl.0x000004D2);//设定

链路口的控制寄存器
builtin_sysreg_write4(DC9,cO;
DSPO中的程序:
TCB_temp.DI:data_tx;
TCB_temp.DX=4 I(N<<16);
TCB_temp.DY=0:
TCB_temp.DP=0x47000000;
q= builtin_eompose_128((10ng long)TCB_temp.DI │
(10ng long)TCB_temp.DX<<32,(1ong 1ong)
(TCB_temp.DY I(1ong long)TCB_temp.DP<<32));
buihin_sysreg_write(LCTL0,0x000004D2);
/,设定链路口的控制寄存器
builtin_sysreg_write4(DC4,q);

    在以上编程中,将链路口时钟配置成1/3核时钟。当处理器核工作在300 MHz和链路口工作在100 MHz时链路口的吞吐率可以达到200 MB。

4.3  外存与外设间的DMA操作(飞跃传输)

    在程序设计中,要实现外部存储器与其他外部设备之间的数据传输,通常都需要通过处理器内核将数据传输到处理器内部。在这种情况下.TSl01处理器支持全新的数据传输即飞跃传(上接第60页)输方式.此时不必对内部存储器进行访问,数据直接在外部存储器和外部其他设备之间传输。在飞跃传输方式下。可把TSl01看作独立的DMA控制器。飞跃传输方式与标准的DMA传输方式类似,程序设计也基本相同,但是数据宽度必须与外部10设备匹配。而且只能使用DMA通道0。

5 结束语
    充分利用DSP的DMA功能是解决高速图像处理器速度瓶颈的重要手段。ADSP一TS101的DMA操作功能强大,形式多样。它可以在不中断信号处理器算法处理工作的同时完成图像数据的传输,提高处理系统的性能。本文分析的几种操作在红外图像处理系统中得到具体的实践,获得良好的效果。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

《带得走的智能制造》暑期课程圆满落幕 北京2025年7月25日 /美通社/ -- 近日,由国际独立第三方检测、检验和认证机构德国莱茵TÜV大中华区(以下简称"TÜV莱茵")与北京...

关键字: 智能制造 BSP DMA 信息安全

在实时控制系统、高速通信协议处理及高精度数据采集等对时间敏感的应用场景中,中断响应延迟的优化直接决定了系统的可靠性与性能上限。STM32系列微控制器凭借其灵活的嵌套向量中断控制器(NVIC)、多通道直接内存访问(DMA)...

关键字: STM32 DMA

在嵌入式系统、网络通信等对数据传输效率要求极高的场景中,零拷贝技术能够显著减少数据在内存中的拷贝次数,降低CPU负载,提高系统性能。DMA(直接内存访问)环形缓冲区与内存池相结合的双重优化策略,为实现高效的零拷贝数据传输...

关键字: 零拷贝 DMA 嵌入式系统

STM32单片机凭借其高性能、低功耗、丰富的外设资源等优势,在工业控制、消费电子、汽车电子等领域得到了广泛应用。在嵌入式系统开发中,高效的数据处理和传输至关重要。中断技术和DMA技术作为STM32单片机中重要的数据处理和...

关键字: STM32 DMA

在嵌入式系统中,随着数据量的不断增加和实时性要求的提高,传统的CPU直接控制数据传输的方式逐渐暴露出效率低下的问题。为了应对这一挑战,直接内存访问(Direct Memory Access,DMA)技术应运而生,成为实现...

关键字: DMA 嵌入式系统 高速数据传输

广州2025年1月21日 /美通社/ -- 在数字营销领域快速发展的今天,每一场行业盛会都预示着新的转折与机遇。2025年1月10日,由DMAA数字营销奖主办,广州4A联合主办,广州市广告行业协会指导的第八届DMAA国际...

关键字: DMA AI AI技术 创始人

在现代计算机系统中,直接内存访问(DMA)技术被广泛应用于高速数据传输,其核心理念在于让数据传输不再依赖CPU的参与,从而释放CPU资源以处理其他任务。然而,在DMA操作完成后,系统需要一种机制来检测DMA传输是否已完成...

关键字: DMA CPU 轮询检测

之前有个同事因为用串口查询方式发送数据,被我说了一顿,明明有DMA资源,竟然放着不用,对于鱼鹰这种性能强迫症来说,肯定无法忍受,所以当时就和他说,有时间你把它改一下。谁知道过了好几个月他才有时间弄这个,然后还是出了问题,...

关键字: DMA 串口

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种常用的串行通信协议,广泛应用于单片机或各种嵌入式设备之间的通信。

关键字: UART DMA

转移数据(尤其是转移大量数据)是可以不需要CPU参与。比如希望外设A的数据拷贝到外设B,

关键字: CPU DMA 数据通路
关闭