基于DSP-dMAX的嵌入式FIFO 数据传输系统设计
嵌入式设备由于具有硬件可在线配置,实现灵活等特点,使得其应用越来越广泛。尤其在基于FPGA的硬件系统中应用较多,目前在许多产品中实现了嵌入式网口、嵌入式PCI/PCI-E、嵌入式USB等各种模块。但在DSP中实现嵌入式设备还比较少,一般DSP都直接集成这些设备模块,用户选择不同型号的DSP芯片以满足产品应用要求。但对于一些较为特殊的嵌入式设备,DSP也可以实现该功能。
TI公司的DSP芯片C6727B,由于其片内集成dMAX模块,使得实现嵌入式FIFO成为可能。其实现嵌入式FIFO的本质就是将DSP的片内一段RAM空间设置成FIFO空间,FIFO和外部设备的数据交换由EMIF接口完成。该FIFO的数据读写不需要DSP的CPU参与,从而提高整个系统性能,实现数据交换和数据处理的同时进行。本文以dMAX和EMIF接口的数据传输为例,介绍嵌入式FIFO的设计、配置及其使用。
dMAX及其结构
dMAX(Dual Data Movement Accelerator,双向数据传输加速器)是TI公司的DSP芯片C6727B特有的一种片内设备。应用dMAX和EMIF(External Memory Interface,外部存储器接口)可以实现片内RAM、片内和片外设备以及两个片外设备之间的数据传输。dMAX模块的内部结构如图1所示。
图1 dMAX内部结构图
从图中可以看出,dMAX主要由事件和中断处理模块、事件编码器、传输事件模块等组成。事件模块分成高优先级和低优先级两个相互独立的模块,各自有独立的事件入口和事件参数表,和CPU有独立的接口。使得dMAX可以同时处理两个不同的事件。当访问CPU端口时,MAX0的优先级高,MAX1的优先级低。dMAX能够通过执行先进的一维、二维与三维数据的存储器传输工作,从而使DSP得以专注于信号处理任务,显著提高系统性能。适合图像的子帧提取或者语音信号的子信道提取。
DSP内部的数据交换中心在dMAX的控制下,可以实现片内RAM、EMIF以及HPI接口之间的数据交换。本文介绍在dMAX控制下,实现片内RAM和EMIF接口之间的数据交换。如果DSP采用普通的异步接口方式,数据传输需要建立、选通和保持3个阶段,最少需要5个EMIF时钟(建立和保持各1个时钟,选通3个时钟)。为了保证通信的可靠性,一般采用10个EMIF时钟(建立3个时钟,保持2个时钟,选通5个时钟)。而EMIF时钟最快为133MHz;这样,采用异步接口的通信速率一般为13.3M×32b/s(采用32位数据总线宽度)。此外,异步接口数据传输必须在CPU的参与下,使用指令实现数据搬移。将占用大量的CPU开销,在很多高速的数据采集和处理中,将降低系统的整体性能。为此,采用dMAX实现嵌入式FIFO数据传输克服异步传输的缺点,其传输采用突发读写方式进行,可以连续突发读写8个数据,一共只需要20个时钟,通信速率提高为53.2M×32b/s,提高4倍读写速率。还可以采用和DMA后台运行,这样将大大降低整个系统数据读写的开销,从而可以实现更加复杂和可靠的算法处理。
嵌入式FIFO设计
嵌入式FIFO的设计主要就是控制FIFO的7个参数。这7个参数分别为基地址、空间大小、空标志、满标志、错误标志、读指针和写指针。它们之间的关系如图2所示。
图2 FIFO结构示意图
- 基于 DSP-dMAX 的嵌入式 FIFO 数据传输系统设计(04-11)
- 一种基于DSP-dMAX 的嵌入式FIFO 数据传输系统(02-09)
- DSP核信号采集系统通讯接口设计(05-13)
- 用FIFO实现DSP间的双向并行异步通讯(08-15)
- 异步FIFO在FPGA与DSP通信中的运用 (03-22)