ADSP2106x中DMA的应用
发布时间:2007/9/11 0:00:00 访问次数:560
摘 要: 直接内存存取(DMA)是DSP芯片中用于快速数据交换的重要技术,对AD公司的浮点系列芯片ADSP2106x中的DMA的应用进行了详细介绍,并给出实际应用中的一些例子。
关键词: DMA 浮点系列芯片ADSP2106x
1 DMA概述
直接内存存取(DMA)对计算机系统是非常重要的。它可以使CPU在运行指令的同时,系统能实现从外部存储器或设备中存取数据,也可以在CPU不参与的情况下,由专用的DMA设备存取数据。
对于浮点DSP芯片来讲,DMA的作用更是重要。众所周知,DSP芯片主要是面向实时的信号处理,其核心的运算部件具有很高的运算速度,常以MFLOPS(每秒百万次浮点运算)来衡量。ADSP2106x为120MFLOPS,但该速度是以存储在芯片内部存储器中的程序和数据为前提的。在DSP内部往往采用多总线的哈佛结构,数据总线和程序总线相互独立,即指令的存取和数据的存取并行不悖;另外在ADSP2106x内部还有各种接口总线,用以提高数据的流通能力。但在芯片的外部,所有的总线都合并在一起了。因此为了发挥DSP核心运算单元的高速运算能力,首先必须把程序和数据传输到芯片的内存中,这通常需要DMA操作来实现。
另一方面,DSP系统总要与各种外部信号打交道,它从外部输入数字信号,经过各种算法的处理后,再输出给其他设备。不仅如此,对于浮点DSP系统,数据的输入和输出常常是连续不断的。试想,如果用DSP的核心部件来完成数据的输入和输出,它高速的运算能力又如何发挥得出来呢?所以,浮点系列的DSP芯片大都把DMA控制部分直接集成到了芯片上,用DMA来完成数据的输入和输出。
高效的DSP系统通常采用图1所示的结构。在内存中开辟出四块缓存区,两个作为输入缓存,两个作为输出缓存,用来实现输入、输出的乒乓切换。核心处理单元直接从输入缓存中取数运算,然后把运算结果写入输出缓存;而数据从外部接口的输入和输出则完全由DMA来实现,不需核心处理单元的参与。只要核心处理单元的运算速度和DMA的数据率满足要求,图1所示的结构就可以完成连续的数据流输入和输出。当然,从外部看,数据的输入和输出是连续的,但在芯片内部却是分段处理的。分段处理虽然带来一些误差,但只要缓存的数据足够长,就可以使误差降到允许的范围。因为间隔越长,前后数据间的相关性越小,相互间的影响就越小,故分段处理是可行的。由于分段处理,也给DSP芯片的结构带来了一个重要影响,那就是尽可能地增加其内部存储器的容量。对于ADSP21060,其内部的SRAM容量达4Mbit,可以满足大多数分段处理的需要。
下面首先对ADSP2106x中的DMA做概要介绍,然后对几种典型的DMA操作进行详细分析。
2 ADSP2106x中的DMA
ADSP2106x中的片内DMA控制器可以同时控制10个通道的DMA,完成下列类型的数据传输操作:
·内存外存或外部存储器映射设备
·内存其他ADSP2106x的内存
·内存主机接口
·内存串行口
·内存Link口
·内存外部设备
·外存外部设备
丰富的数据流向可以使ADSP2106x实现对各种外设的接口;另外,由于ADSP2106x的内存是双口SRAM,因此在进行上述DMA操作的同时,核心处理单元仍可以读写内存,使DMA操作与内部运算处理达到高度的并行性。当然,应尽量避免二者同时对同一内存地址进行读写。
每个DMA通道都有一个(或两个)用FIFO实现的数据缓存器,最大的缓冲深度为6级,用以提高DMA数据传输率。所有的DMA数据传输都是通过这10个数据缓存器来完成的,这些缓存器如表1所示。其中通道1、3、6、7都是两个缓存器共用一个DMA通道。所有数据缓存器作为I/O寄存器被映射到内存的前256个地址中。
DMA的编程是通过内部核心处理单元或外部主机对片内有关的I/O寄存器设置来实现的,这些I/O口寄存器也被映射到内存的前256个地址上。与DMA操作有关
摘 要: 直接内存存取(DMA)是DSP芯片中用于快速数据交换的重要技术,对AD公司的浮点系列芯片ADSP2106x中的DMA的应用进行了详细介绍,并给出实际应用中的一些例子。
关键词: DMA 浮点系列芯片ADSP2106x
1 DMA概述
直接内存存取(DMA)对计算机系统是非常重要的。它可以使CPU在运行指令的同时,系统能实现从外部存储器或设备中存取数据,也可以在CPU不参与的情况下,由专用的DMA设备存取数据。
对于浮点DSP芯片来讲,DMA的作用更是重要。众所周知,DSP芯片主要是面向实时的信号处理,其核心的运算部件具有很高的运算速度,常以MFLOPS(每秒百万次浮点运算)来衡量。ADSP2106x为120MFLOPS,但该速度是以存储在芯片内部存储器中的程序和数据为前提的。在DSP内部往往采用多总线的哈佛结构,数据总线和程序总线相互独立,即指令的存取和数据的存取并行不悖;另外在ADSP2106x内部还有各种接口总线,用以提高数据的流通能力。但在芯片的外部,所有的总线都合并在一起了。因此为了发挥DSP核心运算单元的高速运算能力,首先必须把程序和数据传输到芯片的内存中,这通常需要DMA操作来实现。
另一方面,DSP系统总要与各种外部信号打交道,它从外部输入数字信号,经过各种算法的处理后,再输出给其他设备。不仅如此,对于浮点DSP系统,数据的输入和输出常常是连续不断的。试想,如果用DSP的核心部件来完成数据的输入和输出,它高速的运算能力又如何发挥得出来呢?所以,浮点系列的DSP芯片大都把DMA控制部分直接集成到了芯片上,用DMA来完成数据的输入和输出。
高效的DSP系统通常采用图1所示的结构。在内存中开辟出四块缓存区,两个作为输入缓存,两个作为输出缓存,用来实现输入、输出的乒乓切换。核心处理单元直接从输入缓存中取数运算,然后把运算结果写入输出缓存;而数据从外部接口的输入和输出则完全由DMA来实现,不需核心处理单元的参与。只要核心处理单元的运算速度和DMA的数据率满足要求,图1所示的结构就可以完成连续的数据流输入和输出。当然,从外部看,数据的输入和输出是连续的,但在芯片内部却是分段处理的。分段处理虽然带来一些误差,但只要缓存的数据足够长,就可以使误差降到允许的范围。因为间隔越长,前后数据间的相关性越小,相互间的影响就越小,故分段处理是可行的。由于分段处理,也给DSP芯片的结构带来了一个重要影响,那就是尽可能地增加其内部存储器的容量。对于ADSP21060,其内部的SRAM容量达4Mbit,可以满足大多数分段处理的需要。
下面首先对ADSP2106x中的DMA做概要介绍,然后对几种典型的DMA操作进行详细分析。
2 ADSP2106x中的DMA
ADSP2106x中的片内DMA控制器可以同时控制10个通道的DMA,完成下列类型的数据传输操作:
·内存外存或外部存储器映射设备
·内存其他ADSP2106x的内存
·内存主机接口
·内存串行口
·内存Link口
·内存外部设备
·外存外部设备
丰富的数据流向可以使ADSP2106x实现对各种外设的接口;另外,由于ADSP2106x的内存是双口SRAM,因此在进行上述DMA操作的同时,核心处理单元仍可以读写内存,使DMA操作与内部运算处理达到高度的并行性。当然,应尽量避免二者同时对同一内存地址进行读写。
每个DMA通道都有一个(或两个)用FIFO实现的数据缓存器,最大的缓冲深度为6级,用以提高DMA数据传输率。所有的DMA数据传输都是通过这10个数据缓存器来完成的,这些缓存器如表1所示。其中通道1、3、6、7都是两个缓存器共用一个DMA通道。所有数据缓存器作为I/O寄存器被映射到内存的前256个地址中。
DMA的编程是通过内部核心处理单元或外部主机对片内有关的I/O寄存器设置来实现的,这些I/O口寄存器也被映射到内存的前256个地址上。与DMA操作有关
上一篇:餐厅无线呼叫服务系统设计