ADSP-21535 Blackfin的Mem DMA高速通信

发布者:SereneWanderer最新更新时间:2014-08-12 来源: 21ic关键字:ADSP-21535  Blackfin  Mem  DMA 手机看文章 扫描二维码
随时随地手机看文章
ADSP-21535 Blackfin 是美国AD公司和Intel 公司于2001年底联合推出的一款定点DSP, RISC指令结构,运作高效,具有十分优异的性能。该DSP具有300MHz的主频,2个40bit的MAC(乘加器)和2个32bit的ALU(算术逻辑单元),4个8bit的视频处理单元,16个地址寻址单元。该DSP内部集成了308KB的RAM,并具有丰富的外部接口,如PCI、USB、SPI、同步和异步串口等。同时,芯片内部设计了看门狗和多种定时器,充分满足软件工程稳定性的设计要求。值得一提的是,21535可以动态地控制电压输入,调整运行频率,减少芯片功耗,十分适用于移动产品的设计。

2002年底,AD公司在中国开始大规模推广Blackfin系列的DSP,21535成为该系列的旗舰产品。由于该DSP推出时间不长,相关文献几乎没有报道;而且,在许多接口性能方面,AD公司也没有对其给出准确的指标。根据通常的设计经验可知,新产品通常在某些方面没有达到设计要求。笔者所设计的高速通信板数据交换速度必须达20M Word/s以上,因此对该DSP的高速通信必须进行准确仔细的评估和设计。 ADSP-21535的内存访问支持I/O方式、内存映射和多种DMA方式,其中Mem DMA(Memory to memory DMA)方式是最快的一种并行通信方式。因此,笔者在设计时选择了Mem DMA作为高速通信方式。由于21535支持多种内存,因此在设计Mem DMA时,必须对21535的内存管理有一个详细的了解。

 1 ADSP-21535的内存管理 21535的内存管理十分强大。它把存储器视为一个统一的4GB的地址空间,使用32位地址。所有的资源,包括内部存储器、外部存储器、PCI地址空间和I/O控制寄存器,都具有独立的地址空间。此地址空间的各部分存储器按照分级结构排列,以提供较高的性能价格比。一些快速、低延迟的存储器(如L1)的位置接近处理器核心,而低成本低性能的存储器远离核心。 芯片内部的308KB RAM中,其中L1(一级缓存)52KB,L2(二级缓存)256KB;外部地址访问空间可以高达768MB,通过EBIU(External Bus Interface Unit,外部总线接口单元)进行管理。EBIU支持多种内存,如SDRAM、SRAM、ROM、EPROM、FLASH、FIFO等。内存地址的具体配置空间如图1所示。


L1作为DSP的一级缓存,可以与DSP的内核一样,运行在300Mbps的高速上。它分为三部分:16KB的Instruction Ram(指令存储器)、,两块16KB的Data Ram(数据存储器)、4KB的Scratchpad Ram(中间结果缓存)。指令存储器既可以作为SRAM,也可以配置为4路联合设置的Cache。数据存储器能够配置成双路联合设置的Cache或者SRAM;中间结果缓存只能作为SRAM使用。指令缓存和数据缓存都可以通过DMA方式灌入数据,但是对于中间结果缓存这种方式不能使用。 L2作为DSP的二级缓存,是一个统一的指令和数据存储器,能够根据系统设计要求同时存放代码和数据。L2具有DSP核心同样的带宽,但是延迟时间较长,访问L2单个独立的地址时系统需要经过7个周期的延时,这时它的访问速度在42.8Mbps左右。所以如果程序比较大,必须在L2中编写程序时,通常将L1配置为L2的Cache,这样,速度可以大大加快。 21535支持的片外存储器种类很多,值得一提的是它的SDRAM控制器。21535集成的SDRAM控制器能够以fSCLK(系统时钟,为核心时钟的若干分频)的速度,与多达4个Bank的工业标准SDRAM或者DIMM接口。每个Bank可以配置为16MB~128MB的存储器,符合PC133 SDRAM的标准。 存储器的DMA控制器提供高带宽的数据传输能力,它能够在内部L1/L2存储器和外部存储器(包括PCI存储空间)之间执行代码或者数据的块传输。


2 DMA寄存器的配置 为了描述Mem DMA序列,DMA控制器使用一套名为描述子块(Descriptor)的参数。当需要后继的DMA序列时,这些描述子块被链接起来。这样,一个DMA序列完成时能够自动初始化下一个序列,并将其启动。如果不需启动下一个序列,只要将其指向一个内容为0的地址空间即可。如果下一次链接指向原描述子块,则DMA完成后暂停。为访问整个ADSP-21535的地址空间,源地址和目的地址描述子块采用了全32位地址的基指针。两个描述子块均为5个字的连续空间,需要注意的是该连续空间必须定义在L2范围内。描述子块内包含的内容如图2所示。 Mem DMA规定,描述子块所在的首地址必须传入相关的寄存器。描述子块首地址的高16位装入DMA_DBP寄存器(DMA Descriptor Base Pointer Register,DMA描述子块基地址寄存器)内。由于该寄存器严格限定必须在0xF000~0xF003,这就限定了源和目的地址描述子块只能定义在L2存储器内,并且高16位地址相同。 描述子块首地址的低16位放在两个寄存器中,源地址描述子块低16位装入MDS_DND寄存器(Source Memory DMA Next Descriptor Pointer Register,DMA源地址下一个描述子块寄存器),而目的地址描述子块低16位装入MDD_DND寄存器(Destination Memory DMA Next Descriptor Pointer Register,DMA目的地址下一个描述子块寄存器)。其说明如图3所示。 在描述子块的地址传入相应寄存器后,后面的四项先配置,然后设置第一项。也就是对管理DMA启动参数的寄存器进行参数配置。两个配置寄存器的详细内容如图4所示。例如当目的地址寄存器为0x8003,源地址寄存器为0x8001时,传输的数据总长=DMA传输的长度%26;#215;字。需要注意的是,虽然此时传输以16位(字长)传输,但DMA的带宽是32位,剩下的带宽资源将被浪费。8位传输时,带宽资源利用率更低。 下面,以一个具体的32位DMA例子说明上面的描述子块和多个寄存器的使用方法。 图4 DMA源地址和目的地址配置寄存器 3 32位DMA的例程 R0.H = 0x8009 //DMA源配置字,设置为32位传输 R0.L = 0x800 //DMA长度 R1.L = 0x2000 //DMA源地址低16位 R1.H = 0xf000 //DMA源地址高16位,这里指向L2 R2.L = RAM_READ //DMA源描述子块首地址 低十六位,DMA读 R2.H = 0x800b //DMA目的配置字,设置为32位传输 R3.L =0x0000 //DMA目的地址低16位 R3.H =0xff90 //DMA目的地址高16位,这里指向 L1数据存储器-Bank B R4.L = RAM_WRITE //DMA目的描述子块首地址低 十六位,DMA写 P0.L = RAM_READ //将32位的源描述子块的地址 载入P0 P0.H = RAM_READ P1.L = RAM_WRITE //将32位的目的描述子块的地 址载入P1 P1.H = RAM_WRITE WP0+0x2 = R0 //将DMA长度写入源描述块第 二个字中 P0+0x4 = R1 //将DMA的32位源起始地址 写入源描述块第三第四个字中 WP0+0x8 = R2.L //将下一个源描述子块的地址 写入源描述块第五个字中 WP1+0x2 = R0 //将DMA长度写入目的描述块 第二个字中 P1+0x4 = R3 //将DMA的32位目的起始地址 写入目的描述块第三第四个字中 WP1+0x8 = R4 //将下一个目的描述子块的地 址写入目的描述块第五个字中 WP0 = R0.H //将DMA源配置字写入源描述 块第一个字中 WP1 = R2.H //将DMA目的配置字写入目的 描述块第一个字中 R6 = P0 //将P0的值同时存在R6内 P2.L = 0x390A //将DMA源描述子块配置寄存 器的地址传给P2 P2.H = 0xFFC0 WP2 = R6.L //将DMA源描述子块所在地址 的低16位传给P2指向的地方 P3.L = 0x4880 //将描述子块基地址寄存器的 地址传给P3 P3.H = 0xFFC0 WP3 = R6.H //将DMA源描述子块所在地址 的高16位传给基地址寄存器 P4.L = 0x380A P4.H = 0xFFC0 //将DMA目的描述子块配置寄 存器的地址传给P4 R6 = P1 //将P1的值转存到R6 WP4 = R6.L //将目的描述子块所在地址的 低16位传给配置目的地址寄存器 P5.L = 0x3902 P5.H = 0xFFC0 //将DMA源地址配置寄存器所 在地址传给P5 R6 = WP5 BITSETR60 //设置R6的最低位为1,表示 准备启动读DMA I0.L = 0x3802 I0.H = 0xFFC0 //将DMA目的地址配置寄存器 的地址传给I0 R7.L = WI0 BITSETR70 //设置R7的最低位为1,表示 准备启动写DMA WP5 = R6 //将R6和R7的低16位写入 两个配置寄存器中,真正启动DMA WI0 = R7.L DMA_WAIT //等待DMA结束 R6 = WP1 //根据写描述子块第一个字的 最高位判断描述子块的所有权 cc = bittstR615 IF cc JUMP DMA_WAIT //如果为1,表示还在DMA 状态,继续判断,等待 RTS .align 4 //在L2空间范围内定义两个 描述子块,要求4个字节对齐 .BYTE2 RAM_READ5 .align 4 .BYTE2 RAM_WRITE5 值得注意的是,在上述DMA例程中,笔者使用了查询等待方式,但中间完全可以插入其他指令,例如DSP还可以同时作双乘加和两次32位取数。只要不访问正在DMA读写的地址区域,没有任何影响。这意味着,在系统DMA的同时,DSP可以同时进行其他操作,这一点对于提高DSP的效率至关重要。 4 各种内存空间的DMA访问指标测试及分析 根据以上配置,笔者对ADSP-21535的DMA性能进行了比较详尽的测试。测试数据如表1所示。 表1 21535的DMA实测数据 源地址目的地址 DMA长度(双字)周期数(个)速度(双字/秒) L2 L1 4096 43615 28.2M L2 SDRAM 8192 54878 44.8M L2 L2 8192 66737 36.8M L1 L1 4096 64164 19.1M L1 SDRAM 4096 39891 30.8M L1 L2 4096 52661 23.3M SDRAM L1 4096 28625 42.9M SDRAM SDRAM 4096 65668 18.7M SDRAM L2 8192 52314 46.9M 注:测试环境-DSP核心时钟300MHz,系统时钟120MHz,SDRAM为PC133标准。样本采样:各15次 从表1中的实测数据可以看出,DMA的速度均在18.7M双字/秒以上,最高速度达46.9M双字/秒,可以满足工程中高速采集的需要。从表中数据可以得出以下结论: (1)DMA双向速度不对称,将源地址和目的地址交换后,速度会发生变化; (2)低速向高速区域传输时,要比反向传输快; (3)同类区域DMA一般比区域之间DMA要慢。如L1 DMA到L1,比L1 DMA到L2和SDRAM都要慢一些。其它区域也有类似现象。 (4)高速区域DMA速度并不一定快,如L1区域DMA速度总体表现反而最低。

关键字:ADSP-21535  Blackfin  Mem  DMA 引用地址:ADSP-21535 Blackfin的Mem DMA高速通信

上一篇:FSK信息解码的电话网数据通信
下一篇:无线通信技术在可穿戴计算机中的应用研究

推荐阅读最新更新时间:2024-05-02 23:07

STM32待机模式Standby Mode与ADC DMA模式测试备忘
1)STM32运行十秒后自动进入待机,使用WakeUp引脚唤醒CPU后,重复以上动作。 int main(void) { time_cnt = 0; HAL_Init(); SystemClock_Config(); HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET); HAL_PWR_DisableWakeUpPin(PWR_CSR_EWUP); //禁止wakeup PA0引脚,可以用来做普通引脚功能 while (1) { HAL_Delay(1000); HAL_GPIO_TogglePin(GPIOG, GPIO_P
[单片机]
STM32待机模式Standby Mode与ADC <font color='red'>DMA</font>模式测试备忘
基于H.264解码器的软件优化
1 引言 H.264是在ITU-T和ISO/IEC等组织先前制定的编码标准的基础上提出的,它与现今国际上大多数的视频压缩标准一样,例如H.264、H.263、MPEG-2、MPEG-4都是采用基于块的离散余弦变换与量化相结合的混合编码技术。基于分块的离散余弦变换具有压缩率高,计算复杂度低。易于实现等优点。H.264具有以下特点:比H.263+和MPEG-4(SP)减小50%码率;对信道时延的适应性较强;提高差错恢复能力;复杂度可分级设计,以适应不同复杂度的应用;引入先进技术,包括4×4整数变换、空域内的帧内预测、1/4像素精度的运动估计新技术带来较高的编码比,同时大大提高算法的复杂度。因此,H.264技术已广泛应用于高清视频
[嵌入式]
STM32串口+DMA使用1
STM32有5个串口资源(USART1,USART2,USART3及UART4,UART5)。其中3个USART(通用同步/异步收/发器universalsynchronous asynchronous receiver and transmitter);2个UART(通用异步收/发器universalasynchronous receiver and transmitter);至于USART与UART的区别,如果只是拿来做串口用,没什么区别,在车载项目里,我们拿来做串口用,USART与UART在编程上并没有区别。 其中USART1,USART2,USART3,UART4支持DMA方式,UART5不支持DMA。(详
[单片机]
STM32串口接收使用DMA双缓冲
#define IMAGE_BUFFER_SIZE 100 //以字为单位 经试验,增大这个数值速度并未提升 u32 Image_Buffer1 ={0}; u32 Image_Buffer2 ={0}; //OV2640 JPEG模式接口配置 void OV2640_JpegDcmiInit(void) { DCMI_InitTypeDef DCMI_InitStructure; DMA_InitTypeDef DMA_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; //NVIC /*** Configures the DCMI to interface with the
[单片机]
STM32的DMA基本原理及实现过程
1、什么是DMA DMA全称是Direct Memory Access,即是直接存储器访问。 DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。 2、DMA特性 ● STM32F1有12个独立的可配置的通道(请求):DMA1有7个通道,DMA2有5个通道 ● 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。可通过软件来配置。 ● 在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有四级:很高、高、 中等和低),优先权设置相等时由硬件决定(请求0优先于请
[单片机]
STM32的<font color='red'>DMA</font>基本原理及实现过程
RS485通讯中使用STM32串口以DMA方式发送数据丢失字节的问题
1、开发平台 计算机操作系统:WIN7 64位; 开发环境:Keil MDK 5.14; MCU:STM32F407ZET6; STM32F4xx固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0; 串口调试助手; 2、问题描述 在测试用STM32F4xx芯片的串口USART1以DMA方式进行RS485收发通讯时,出现数据字节丢失的现象,一般丢失1~2个字节。 出现问题时测试的简单收发机制:使能串口USART1的DMA收发功能,开启了DMA发送完成中断和USART1空闲中断。通过串口调试助手发送N个字节给MCU,当MCU产生USART1空闲中断时,在USART1空闲中断服务
[单片机]
RS485通讯中使用STM32串口以<font color='red'>DMA</font>方式发送数据丢失字节的问题
arm7的DMA工作原理-PDC方式
dma当前组的ptr和len PDC_RPR PDC_RCR dma的下一组备用ptr和len PDC_RNPR PDC_RNCR 设备启动时,PDC_RCR会从最大递减,直到为1时,当再收到一个数据之后,PDC_RPR将被cpu 内部自动设置为PDC_RNPR中的数值, 同时将PDC_RCR设置为PDC_RNCR,同时PDC_RNCR计数值被清0, (所以可以通过检测PDC_RNCR为0来作很多事情)这样pnpr就又空闲出来了, 我们可以设置一个内存地址给PDC_RNPR同时设置PDC_RNCR大小
[单片机]
40.DMA基本原理与配置
一。DMA简介 如果没有DMA,我们要把一个数据从一个空间复制到另外一个空间,需要先把数据读进CPU,然后再写到另外一个空间。当用了DMA后就不再需要CPU,DMA控制器可以开启一个传输通道,直接把数据从一个空间传到另外一个空间。 二。DMA框图 DMA1有7个通道,DMA2有5个通道。仲裁器用来处理优先级。 DMA请求来自于外设,经过仲裁器连接到相应的通道,通过DMA总线去访问存储器。 DMA可以把外设某个寄存器的数据通过DMA开辟一个通道直接传输到存储器,或者从存储器传输到外设。 三。STM32的DMA的特性 注: 每个通道对应不同的外设,使用的时候要根据外设选择相对应的通道。 四。DMA
[单片机]
40.<font color='red'>DMA</font>基本原理与配置
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved