基于MPC8260处理器和FPGA的DMA接口设计

发布者:dadigt最新更新时间:2010-02-06 来源: 国防科技大学关键字:FPGA  MPC8260  嵌入式  DMA接口 手机看文章 扫描二维码
随时随地手机看文章

  引言

  在基于软件无线电的某无线通信信号侦收平台的设计中,天线接收到的信号经过变频器处理和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系统结构

CPM原理框图

图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一般只适用于由外设发起的、数据不是太频繁的传输使用。[page]

  1.2  CP命令控制的IDMA传输

  MPC8260的IDMA还可以通过向CP命令寄存器中写入START_IDMA命令进行内部触发。每次启动传输以后PowerPC内核就被释放,传输的源地址、目的地址和传输数据长度等参数由CP按照在IDMA通道初始化的信息控制执行。每次传输的最大长度为4 GB。

  相比握手信号控制的IDMA传输,在这种方式下,PowerPC内核除了需要初始化IDMA通道以外还要以命令的形式启动每一次的传输,所以要占用多一些的内核资源。不过,在一次传输启动之后最多可以传输4 GB的数据,所以只要每次传输的数据长度比较长,内核写一个寄存器的额外开销就完全可以忽略不计。同时,由于内部命令触发方式不需要握手信号,不需要频繁地每几个字节就竞争一次总线控制权,所以这种方式的传输效率更高、传输速度更快。内部命令触发方式是以空间换时间——用前端大的缓冲区来换取传输速度的提升。

  考虑到主控板上软硬件系统的瓶颈都在于总线带宽,而存储资源相对比较丰富,所以选择CP命令控制的IDMA传输作为数据流从FPGA到SDRAM的传输方式。

  2  DMA传输方案设计

  FPGA和MPC8260间的数据传输接口设计如图3所示。图中左侧FPGA,通过16位数据线、10位地址线、2根中断请求线和一些读写控制信号线连接到右侧的MPC8260。MPC8260通过64位数据线与本地内存SDRAM相连。

IDMA传输设计框图

图3  IDMA传输设计框图

  FPGA内部分配有两个大的存储空间,用于轮流缓冲从数据源接收到的数据。任何一个缓冲区收满后,继续接收的数据保存到下一个缓冲区,同时以中断的方式触发MPC8260启动相应的IDMA通道把数据传到SDRAM中。IDMA控制、数据同步和错误处理都由MPC8260完成,FPGA只负责收发数据和触发中断。下面分别介绍二者的程序设计。

  2.1  MPC8260程序设计

  MPC8260内部的程序处理流程如图4所示。MPC8260预先初始化两个IDMA通道:通道的源地址和传输数据长度等信息与FPGA中的缓冲区一一对应。当收到FPGA的中断信号之后,如果此时对应的IDMA通道空闲,则在中断处理程序中发出CP命令开始接收数据,同时将对应的IDMA通道置忙状态;否则,在FPGA中可能发生了未读取的数据被覆盖的情况,MPC8260进入错误处理程序。在数据传输结束时由DMA控制器发送CPM内部中断到内核,在中断处理程序中一方面要恢复IDMA通道的参数设置,另一方面要把该IDMA通道置闲状态等待下一次传输的开始。

  MPC8260程序的核心部分是IDMA通道设置和中断处理。

MPC8260传输处理流程

图4  MPC8260传输处理流程

  2.1.1  IDMA通道设置

  与一般的DMA通道设置一样,IDMA通道设置的主要参数包括:源地址、目的地址和传输数据长度。除此之外,MPC8260的 IDMA通道设置还包括通道模式、缓冲区和中断配置等,所涉及的寄存器比较多,配置比较复杂。IDMA通道设置的逻辑结构如图5所示。

IDMA通道设置的逻辑结构框图

图5  IDMA通道设置的逻辑结构框图[page]

  BD(Buffer Descriptors)表是用于指定传输方式、源/目的地址和数据长度等基本信息的数据结构。BD表的基地址由参数RAM中IBASE寄存器的值指定。除IDMA BD表的基地址之外,IDMA参数RAM内还存放有IDMA BD指针、IDMA传输缓冲区的起始地址、IDMA传输缓冲区大小和DMA通道模式等IDMA通道信息。IDMA参数RAM的基地址由参数RAM中IDMAx_BASE寄存器的值指定。IDMAx_BASE寄存器的地址是固定的,如IDMA1_BASE在偏移RAM基地址0x87FE的位置。CP就是通过IDMAx_BASE寄存器找到IDMA参数RAM,再通过IBASE找到BD表的顺序初始化IDMA通道的。具体的寄存器配置可以参考文献[1]第19章的IDMA编程示例。

  为了提高通道的传输速率,系统中IDMA通道初始化应该注意以下几点:

  ①  需要在SIU中为FPGA配置UPM模式控制MPC8260和FPGA之间的突发读写。不要使用通用目的片选机(GeneralPurpose Chipselect Machine,GPCM)模式。因为MPC8260内存控制的GPCM模式不支持突发传输,IDMA工作在GPCM模式下一方不论传输数据的长度是否满足突发的要求,都只能以普通的单次读写进行。

  ②  把FPGA当作存储器操作,IDMA工作在内存到内存的双地址模式下,缓冲区设为最大的2 KB。

  ③  BD表的配置应该与FPGA中的缓冲区一一对应。BD表结构中的CM(Continuous Mode)位应该设置为缓冲链模式,在每一个BD表传输完之后,清BD表的有效位;同时,CP根据下一个BD表的值自动装载IDMA寄存器进行后面的传输。

  IDMA通道初始化以后等待CP发出START_IDMA命令开始传输。在最后一个BD表传输结束时触发中断信号通知PowerPC内核本次传输过程的完成。传输过程中会发生改变的通道设置寄存器包括IDMA BD表指针、源地址、目的地址和BD表有效位等,所以在BD表传输结束的中断处理程序中需要恢复这些寄存器为下一次传输作准备。

  2.1.2  中断处理

  系统设计中使用了两类中断方式: IRQ引脚引入的外部中断和CPM触发的内部中断。初始化过程包括:使能对应的中断屏蔽位、选择中断优先级、连接对应中断向量号和中断服务程序等。为了保证较好的传输实时性,需要把中断优先级尽量设得高一些。

  与一般中断处理过程的区别在于:MPC8260中断处理控制器采用分级结构来扩展中断信号总数。CPM内的中断就是二级中断,需要通过CPM中断控制器和SIU中断控制器两级中断控制。本设计中用来通知内核本次传输过程结束的中断是CPM内最后一个BD表传送结束的信号BC(BD Completed)。BC信号和命令结束等几个信号一起通过SIU中断挂起寄存器中的IDMA位向内核发出中断信号。所以在中断初始化时要同时有效IDMA屏蔽寄存器和SIU中断屏蔽寄存器对应的比特位。具体的中断初始化实例如下:

程序

  尤其要注意的是,中断处理程序结束之前的清SIU中断挂起寄存器,不能直接在SIU中断挂起寄存器的IDMA位写1,而是要通过在IDMA事件寄存器的BC位写1来间接地清SIU中断挂起寄存器。

  2.2  FPGA部分程序

  系统中的FPGA芯片选用Xilinx公司的VirtexII 3000。利用VirtexII内嵌的大容量BlockRAM配置为单口RAM来做缓冲区,在程序中可以用Xilinx的集成开发环境ISE 7.1i内部自带的IP核生成。对FPGA来说,由于数据的输入/输出都是顺序的,所以两端都只要1根地址线用于区分相邻的两个数据就可以了。地址线配合内部计数器构成读写指针,当写指针从缓冲区的一半跳到另外一半时发相应的中断信号。

  FPGA设计的关键部分是和MPC8260的总线接口设计。通过适当选择缓冲区的起始地址和长度,可以使MPC8260读FPGA都以突发的方式进行。设计中,MPC8260对FPGA的突发读写遵循自己配置的UPM模式,所以要综合考虑UPM模式设计和FPGA读写逻辑设计。在设计UPM模式时,可以在每次MPC8260锁定数据总线数据之前由通用功能信号线(General Purpose Line,GPL)产生一个下降沿通知FPGA往数据总线上写新数据;或者通过GPL把总线时钟送到FPGA达到收发同步来完成MPC8260与FPGA之间的读写。

  3  总结

  结合MPC8260的中断处理和IDMA传输机制,设计了一种MPC8260和FPGA之间的高速数据传输接口。测试结果显示:采用循环读的方式把FPGA中的数据复制到SDRAM中,数据传输速率只有11 Mbps左右;而采用本文介绍的IDMA方式,最高速率能够达到500 Mbps,并且内核占用率较低,实验结果完全能够满足系统设计需求。本研究对于PowerPC系列CPU的接口设计有一定的参考价值。

  参考文献

  [1]  Freescale. MPC8260 PowerQUICCTM II Family Reference Manual .MPC8260RM Rev.2, 2005-12.

  [2]  Freescale. MPC8260 PowerQUICCTM II IDMA Functionality.Rev. 3,2006-02.

  [3]  Freescale. MPC8260 IDMA Timing Diagrams. Rev. 4,2006-07.

关键字:FPGA  MPC8260  嵌入式  DMA接口 引用地址:基于MPC8260处理器和FPGA的DMA接口设计

上一篇:意法半导体任命新执行副总裁以优化职能和资源
下一篇:AVnu 音频/视频网络联盟确保实现互操作性

推荐阅读最新更新时间:2024-05-02 21:00

基于LINUX和CAN总线的工业嵌入式控制系统研究
1.引言       基于现场总线的控制系统在工业控制中已经得到广泛的应用,现场总线是根据国际电工委员会的IEC61158标准的定义而应用于生产现场,在现场设备之间、现场设备与控制装置之间实行双向、串行、多节点通信的通信网络,也被称为开放式、数字化、多点通信的底层控制网络。现场总线具有系统的开放性;互操作性与互用性;现场设备的智能化与功能自治性;系统结构的高度分散性;对现场环境的适应性的优点,因此,现场总线成为当今自动化领域技术发展的热点之一。近年来已经设计出与现场总线相适应的控制模块,其功耗小、可靠性高、易开发等的优点已经成为嵌入式系统的主要成员。所谓嵌入式应用技术,是指将一个具有完整功能的小型或微型机装置作为一个部件或子系
[工业控制]
基于FPGA的超声波信号处理研究
摘要:为了降低超声波流量检测过程中噪声对检测精度的影响,采用FPGA器件构建了FIR滤波器,并提出一种新颖的查表法替代滤波器中的乘法运算。试验结果表明,该滤波器设计方法显著降低了FPGA的片内硬件开销,提高了滤波器的运算速度,并具有良好的降噪效果。 关键词:超声波;信号;FPGA;FIR滤波器 0 引言 在超声流量检测过程中,由于环境噪声使得流量检测的精度收到了严重的影响。目前多采用软件滤波的方法,对采集回来的声波信号进行数字处理,以提高检测的精度。此类方法对硬件处理器的运算能力要求较高,而且会影响检测的实时性。随着微电子技术的不断进步,FPGA的容量和处理速度已有了飞跃性的提高。特别是在数字信号处理方面,其性能已经超过
[嵌入式]
基于<font color='red'>FPGA</font>的超声波信号处理研究
如何创建FPGA控制的机器人手臂?
技术处于 4.0、和边缘革命的前沿。让我们看看如何创建 控制的机器人手臂。 介绍 机器人技术与人工智能和一起处于工业 4.0 和边缘革命的最前沿。 因此,我认为创建一个基础机器人手臂项目会很有趣,我们可以回过头来添加几个功能,例如: 逆运动学 - 确定末端执行器的位置。 / ML - 操作期间的对象分类。 控制——实现边缘远程控制。 此示例将使用一个机器人手臂,该机器人手臂在 Zynq SoC 的控制六个伺服系统。可以使用简单的软件界面或使用两个进行直接控制。 伺服控制 我们需要做的第一件事是弄清楚如何控制伺服位置。是最简单的驱动电机之一,也是机器人技术的理想选择,因为只要我们保持相同的驱动,它们就能保持相对位置。 那么伺
[机器人]
嵌入式系统的SD卡接口技术分析与研究
  SD卡是一种基于半导体快闪记忆器开发的新一代记忆设备,目前SD卡被广泛应用于各种便携式装置上,一般重量约为2 g,拥有较好的安全性、移动灵活性、快速数据传输率和高记忆容量。许多嵌入式设备都选择使用SD卡以提高系统的稳定性、降低成本。   1 嵌入式系统的特点   因为嵌入式系统是一种特殊的计算机系统,所以它和计算机系统一样,由软件和硬件构成。以PC为代表的通用计算机系统和嵌入式系统相比,不同的嵌入式系统有不同的特点,但是其主要特点一样。   (1)嵌入式系统是一种专用计算机系统。嵌人式系统的软件和硬件是针对特定任务和应用对象进行设计的,具有较强的多样性和专用性。嵌入式系统所能够提供的功能,均可提前预知,相对较为固定。
[单片机]
<font color='red'>嵌入式</font>系统的SD卡<font color='red'>接口</font>技术分析与研究
运用SAD算法降低FPGA资源利用率
基于 FPGA 的设计,需要仔细检查设计所占用的面积以及实施后的时序性能,以确保设计适合目标器件,并满足其时序或吞吐力要求。在基于FPGA的商用设计中,设计师通常会将查找表( LUT )的资源占用率上限设置为80%左右,以便为未来升级和功能改进留有资源,并可让时序收敛更容易。余下约20%的空闲LUT留下了空余的布线资源,有助于满足严格的时序约束。 在设计中,FPGA结构里嵌入的逻辑越多,占用的布线资源就会越多。综合工具或许能将更多逻辑成功地映射到LUT和其它资源,但很可能无法在二者之间布线。因为现有的逻辑已经显著提高了互连使用率,已经没有端到端路径来路由更多连接的信号。即使可能存在布线空间,布线器也无法对其建立端
[嵌入式]
运用SAD算法降低<font color='red'>FPGA</font>资源利用率
基于GPRS的嵌入式智能家居终端的设计与实现
1引言 随着网络技术和通信技术的不断发展,人们希望即使在工作或外出时也能通过某种方式及时了解和控制家中的情况,同时伴随着数字化家庭的普及,实现智能家居的远程控制已经成为一种趋势。家庭智能控制系统通过家庭总线技术,把家庭中各种家用电器、家庭保安装置和各种计量设备连接到一起组成一个家庭内部网络,由家庭智能控制器进行统一管理 。远程控制就是通过某种通讯方式将智能家庭控制器与外界相连,使人们能够在本地或异地对家庭系统进行集中的监视、控制。本文中介绍的方案,结合了GPRS(GeneralPacketRadioService) 技术永远在线,速度快,接入范围广,体积小,功耗低等优点 ,采用RS485工业总线,设计实现了一种基于嵌入式系统的家
[工业控制]
基于GPRS的<font color='red'>嵌入式</font>智能家居终端的设计与实现
嵌入式系统设计的多种串行总线特性及比较
  微处理器中常用的集成串行总线是通用异步接收器传输总线(UART)、串行通信接口(SCI)和通用串行总线(USB)等,这些总线在速度、物理接口要求和通信方法学上都有所不同。本文详细介绍了嵌入式系统设计的串行总线、驱动器和物理接口的特性,并为总线最优选择提供性能比较和选择建议。   由于在消费类电子产品、计算机外设、汽车和工业应用中增加了嵌入式功能,对低成本、高速和高可靠通信介质的要求也不断增长以满足这些应用,其结果是越来越多的处理器和控制器用不同类型的总线集成在一起,实现与PC软件、开发系统(如仿真器)或网络中的其它设备进行通信。目前流行的通信一般采用串行或并行模式,而串行模式应用更广泛。    微处理器中常用的集成
[嵌入式]
是谁在拉动嵌入式存储的技术革新和市场扩张?
近年来,受到全球半导体产能短缺、新冠疫情以及季节性需求等因素的影响,存储器件的价格呈现出较大的波动态势。 J.P. Morgan, Gartner and Deloitte等主要行业分析机构的分析师都预测了半导体产能的短缺将持续整个2022年,甚至更长。根据WSTS的数据分析,2022年全球存储器件市场的规模将达到1716.82亿美元,较之前预估的2022年增加135.21亿美元,同比增长将会达到8.5%。 图 | WSTS的电子元器件市场预测(2021年11月) 图源:WSTS 作为占半导体芯片行业大约30%的存储器件,其需求增长速度是快于半导体行业的。是什么在拉动存储器件的市场需求?目前来看,类似于5G、物联网
[嵌入式]
是谁在拉动<font color='red'>嵌入式</font>存储的技术革新和市场扩张?
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved