在嵌入式系统技术中难道我们不能基于MPC8260和FPGA的强大组合来设计一个高效的DMA接口吗
引言在设计基于软件无线电的某无线通信信号接收平台时,天线捕获的信号经历变频、A/D转换后通过高速通道送至主控板进行数据分发处理。系统结构如图1所示,其中主控板核心为嵌入式微处理器MPC8260,运行高性能VxWorks实时操作系统。从天线接收的射频信号经过预处理后,以FPGA为数据源连接到CPU控制下存储于本地内存。因此,将40~50 Mbps高速数据流从FPGA传给CPU成为关键挑战。
若每字节数据需CPU介入,无论中断驱动或程序查询方式,速度都无法满足需求。DMA与程序控制相比,有更快的传送速度、更短的I/O响应时间和较小额外开销,因此选择DMA模式,使FPGA直接将数据存放于本地内存,而非通过CPU寄存器转移。
MPC8260支持多种DMA实现方式,每种适用于不同设备和传输参数,因此需要根据主控板特点设计合适DMA接口。
MPC8260 DMA系统结构
图2显示了CPM原理框图,MPC8260是双核架构,由PowerPC内核和32位RISC通信处理模块(CPM)组成,其中包含串行直接存储器存取通道(SDMA)。除了PowerPC内核及CPM,还包括灵活的SIU用以控制外部总线接口。
IDMA介绍
CPM内部含有SDMA及两口RAM,并可直接访问CPM内部双口RAM。此外,CP利用这两个物理SDMA模拟四个独立可编程IDMA通道用于MEM-MEM及Periph-Mem之间传输。
IDMA类型与特性
3.1 握手信号控制IDMA:主要用于外设-内存间传输,每个IDMA通道有三个握手信号用于控制握手过程。在这种方式下,PowerPC仅参与初始化,其余由CP按照设置执行,但存在同步复杂、总线仲裁低效等问题。
CP命令触发IDMA
在此方法中,由向命令寄存器写入START_IDMA启动一次性大规模传输(最大4GB),释放了更多资源,对于长距离连续高速通信有效而不占用大量资源。
FPGA & MPC8260 数据交换接口设计
如图3所示,从FPGA到SDRAM的16位宽度、10位地址宽度、中断请求以及读写控制信号连接至MP8026;MP8026则通过64位宽度与SDRAM连接。这一方案使用两个缓冲区轮流缓冲来自数据源的输入并以中断形式触发MP8026开始对应IDMA通道把这些信息发送至SDRAM中的过程由MP8026完成错误检测和同步工作。
最后,在讨论上述技术选型之后,我们可以得出结论,即在考虑到软硬件瓶颈主要集中在总线带宽方面且拥有丰富空间资源的情况下,我们应该选择基于CPR命令触发的一种DMATransmission来优化我们平台上的性能,以达到最佳效果。而具体实施这个方案,则需要精心规划相关算法,以及详细分析可能出现的问题并提供相应解决策略,这将是未来研究方向的一个重要组成部分。