基于MPC8260和FPGA的DMA接口设计
引言
本文引用地址:http://www.amcfsurvey.com/article/82690.htm在基于软件无线电的某无线通信信号侦收平台的设计中,天线接收到的信号经过变频器处理和A/D变换之后,经过高速通道把采集的信号送入主控板进行数据分发处理。系统的结构框图如图1所示。
图1 主控板的系统结构框图
主控板的硬件核心是嵌入式微处理器MPC8260,负责系统软件的加载、数据的分发以及与外界命令控制的交互。软件上,采用高性能的VxWorks嵌入式实时操作系统。从天线接收到的射频信号经过变频和A/D变换之后作为数据源连接到FPGA,FPGA对接收到的数据进行中频变换和信道估计等预处理后,在CPU的控制下将数据传输到本地内存,最后CPU对数据打包后进行快速分发。因此,将40~50 Mbps的高速数据流从FPGA传给CPU成为系统设计的一个关键。
如果每传递一个字节的数据都需要CPU的介入,那么不论是采用中断驱动还是采用程序查询的方式,数据传输速率都会很低,无法满足系统需求。DMA(直接存储器存取)和一般的程序控制传送方式相比具有数据传送速度高、I/O响应时间短和CPU额外开销小的优点,因此,选择DMA的传输模式,使FPGA中的数据不经过CPU内部寄存器的中转而直接存放到本地内存。MPC8260支持多种DMA实现方式,分别适用于不同数据传输源/目的设备、不同传输数据块大小和存储模式的需要,因此需要根据主控板的系统特点设计出合适的DMA传输接口。
1 MPC8260的 DMA系统结构
图2 CPM原理框图
MPC8260是Freescale公司主要针对数据通信领域而设计的一种嵌入式PowerPC微处理器,具有双核结构:1个高性能的MPC603e 64位RISC微处理器内核和1个专为通信设计的32位RISC通信处理模块(Communication Processor Module,CPM)。CPM能够分担PowerPC内核大部分的外围通信任务,其中就包含两个DMA控制器,即串行直接存储器存取通道(Serial Direct Memory Access,SDMA),所以这种双处理器的体系结构比单处理器具有更强的通信控制功能。CPM的原理框图如图2所示。除了PowerPC内核和CPM之外,MPC8260还包含一个灵活的系统接口单元(System Interface Unit,SIU)主要用于控制与外部总线的接口。
图2中, CPM内除了SDMA模块以外,还包括通信控制器(Communications Processor,CP)、双口RAM和一些串行外围设备的控制接口等。SDMA和60x总线、本地总线相连,并且可以直接访问CPM内部的双口RAM。CP利用这两个SDMA为每个外围串行控制器提供了两个虚拟SDMA通道:一个用于输入,一个用于输出。同时,CPM还用这2个物理的SDMA通道模拟4个可编程控制的、独立的DMA (Independent DMA,IDMA)通道,用于存储器—存储器及外设—存储器之间的数据传输。
主控板上的FPGA和SDRAM都是挂接在MPC8260的60x总线上的,所以只能利用IDMA来实现二者之间的DMA传输。根据传输启动的触发方式不同,IDMA可分为握手信号控制的IDMA传输和CP命令控制的IDMA传输两种。下面分别介绍两种方式的特点。
1.1 握手信号控制的IDMA传输
握手信号控制的IDMA传输主要用于外设和内存之间的数据传输。每个IDMA通道都有3个握手信号用于传输握手控制:DMA请求信号DREQ[1~4]、DMA应答信号DACK[1~4]和DMA结束信号DONE[1~4]。
在这种方式下,PowerPC内核只需要参与IDMA通道初始化,之后的传输过程全部由CP按照通道参数设置和握手信号控制数据的收发,在最大程度上释放内核。握手信号控制的缺点在于:① SDRAM中的数据和MPC8260的数据同步比较复杂。② 每次发出请求信号后都要进行总线仲裁,并且在得到总线使用权之后一次只能够传输外设端口大小或者32位的数据,总线利用率低。③ 握手控制逻辑和时序比较复杂,加重了FPGA内部控制逻辑设计的负担。
虽然这种传输方式基本上不占用内核资源,但是由于总线带宽有限且利用率较低,所以在连续高速的通信条件下会造成内核长时间得不到总线使用权而一直处于等待状态。因此,握手信号控制的IDMA一般只适用于由外设发起的、数据不是太频繁的传输使用。
评论