基于dma的实时流数据传送系统及方法

文档序号:6526960研发日期:2013年阅读:267来源:国知局
技术简介:
本发明针对传统DMA在实时流数据传送中需额外存储空间和总线带宽的问题,提出引入虚拟从属设备的解决方案。通过虚拟从属设备实现数据填充与丢弃功能,无需占用实际存储资源,减少总线访问,提升传输效率,优化系统资源利用。
关键词:DMA实时传输,虚拟从属设备
基于dma的实时流数据传送系统及方法
【专利摘要】本发明涉及一种基于DMA的实时流数据传送系统及其数据传送方法,所述传送系统包括主控CPU、DMA控制器、存储器、系统总线、外设接口和虚拟从属设备,DMA控制器通过系统总线控制存储器与外设接口之间的实时数据传送;本发明的DMA控制器可以从虚拟从属设备中读取默认填充数据,用于填充存储器内部输出的流数据,也可以将需要丢弃的外部输入的流数据写入虚拟从属设备中,以配合DMA控制器在流数据实时传送过程中实现对流数据的填充或丢弃功能;另一方面,虚拟从属设备实现了在系统总线上的单周期写入和读取,速度更快,节省了总线资源,再者,虚拟从属设备不占用存储资源,默认填充数据可配置,也节省了存储器资源。
【专利说明】基于DMA的实时流数据传送系统及方法
【技术领域】
[0001]本发明涉及DMA (直接存储器存取)【技术领域】,尤其涉及一种基于DMA的实时流数据传送系统及方法。
【背景技术】
[0002]目前,在SoC(System on Chip,称为片上系统)芯片设计中,为了提高效率、节省数据总线带宽,在数据传送时广泛采用DMA (直接存储器存取)技术和方法。而在实时流数据传送过程中,通常会面临两个问题:一个是从存储器向外围设备搬移流数据时,需要保持数据的实时性,即以均匀速率发送数据,且不可中断,这时如果存储器中的数据准备不足,将会导致实时流数据输出中断;另一个是从外设向存储器搬移流数据时,需要实时接收数据,如果存储器中没有足够的存储空间,将会导致实时流数据无处存放。
[0003]在第一种情况下,通常的做法是事先准备好一段零数据的内存空间,在存储器中的数据准备不足时,通知DMA控制器搬移该空间的数据来补充输出流数据的不足,视为填充内部输出的流数据。在第二种情况下,通常的做法是事先准备好一段内存空间,在发生内存空间不足时,通知DMA控制器把该数据搬移到该空间去,可以反复写入覆盖,视为丢弃外部输入的流数据。上述的处理方法,可以保证SoC芯片中流数据的实时搬运,也能满足DMA控制器的任务链表操作。但是,上述两种情况下,都是需要开辟额外的存储空间,即填充或丢弃缓存空间,并且需要通过SoC芯片中的总线对存储器进行存取访问,这样必然浪费了一定的存储空间和总线带宽。

【发明内容】

[0004]本发明所要解决的技术问题是针对现有DMA控制器在实时流数据传送过程中存在存储空间和总线带宽浪费的问题,提供了一种在满足实时流数据传送时填充和丢弃需求的同时,解决存储空间和总线带宽浪费的问题,用于实时流数据填充与丢弃的基于DMA的实时流数据传送系统和基于DMA的实时流数据传送方法。
[0005]为解决上述问题,本发明的一种技术方案是:
[0006]一种基于DMA的实时流数据传送系统,包括主控CPU、DMA控制器、存储器、系统总线和外设接口,DMA控制器通过系统总线控制存储器与外设接口之间的实时数据传送,所述传送系统还包括用于提供默认填充数据及丢弃写入数据的虚拟从属设备,虚拟从属设备占用总线地址空间,虚拟从属设备设有总线从设备接口,总线从设备接口与系统总线相连;DMA控制器通过系统总线读取虚拟从属设备中的默认填充数据到外设接口中,或者DMA控制器通过系统总线将外设接口中的数据写入虚拟从属设备中,写入虚拟从属设备中的数据由虚拟从属设备直接丢弃。
[0007]相比较于现有技术,本发明的基于DMA的实时流数据传送系统采用虚拟从属设备作为DMA控制器的附属设备,配合DMA控制器在流数据实时传送过程中实现对流数据的填充或丢弃功能;另一方面,虚拟从属设备实现了在系统总线上的单周期写入和读取,速度更快,节省了总线资源,再者,虚拟从属设备不占用存储资源,默认填充数据是可以配置的,也节省了存储器资源。
[0008]本发明的另一种技术方案是:
[0009]一种基于DMA的实时流数据传送系统,包括主控CPU、DMA控制器、存储器、系统总线和外设接口,DMA控制器通过系统总线控制存储器与外设接口之间的实时数据传送,所述DMA控制器内设有用于提供默认填充数据及丢弃写入数据的虚拟从属设备,虚拟从属设备占用总线地址空间,虚拟从属设备设有数据接口,数据接口与DMA控制器的内部总线相连;DMA控制器读取虚拟从属设备中的默认填充数据到外设接口中,或者DMA控制器将外设接口中的数据写入虚拟从属设备中,写入虚拟从属设备中的数据由虚拟从属设备直接丢弃。
[0010]相比较于现有技术,本发明的基于DMA的实时流数据传送系统采用虚拟从属设备作为DMA控制器的虚拟子模块,配合DMA控制器在流数据实时传送过程中实现对流数据的填充或丢弃功能,DMA控制器对虚拟从属设备进行读写访问时,不需要进行总线接口协议转换,可以进一步减少系统总线上的读写操作,更有利于节约总线资源和功耗;另一方面,虚拟从属设备不占用存储资源,默认填充数据是可以配置的,也节省了存储器资源。
[0011]本发明的再一种技术方案是:
[0012]一种基于DMA的实时流数据传送系统的数据传送方法,所述传送方法包括两种数据传送方式,第一种为存储器实时将流数据传送到外设接口,第二种为外设接口实时将流数据传送到存储器,所述传送方法基于上述的传送系统;
[0013]所述第一种数据传送方式包括如下步骤:
[0014]步骤a:主控CPU配置启动DMA控制器,总线控制权由主控CPU转移到DMA控制器;
[0015]步骤b:DMA控制器读取存储器中的流数据,并将流数据实时写入到外设接口中,实现实时流数据的传送;在流数据传送过程中,主控CPU实时检测存储器中流数据,当检测到的流数据不足以实时传送时,进入步骤C,否则继续实时传送流数据;
[0016]步骤c:DMA控制器通过系统总线读取虚拟从属设备中的默认填充数据,并将默认填充数据实时写入到外设接口中,当主控CPU检测到存储器中的流数据充足可以实时传送时,返回步骤b,否则继续实时传送默认填充数据;
[0017]第二种数据传送方式包括如下步骤:
[0018]步骤d:主控CPU配置启动DMA控制器,总线控制权由主控CPU转移到DMA控制器;
[0019]步骤e:DMA控制器通过系统总线读取外设接口中的流数据,并将流数据实时写入存储器中,实现实时流数据的传送;在流数据传送过程中,主控CPU实时检测存储器的存储空间,当检测到存储空间不充足时,进入步骤f,否则继续实时传送流数据;
[0020]步骤f:DMA控制器通过系统总线将从外设接口中实时读取的流数据反复写入到虚拟从属设备中,将写入流数据直接丢弃,当主控CPU检测到存储器存储空间充足时,返回步骤e,否则继续实时将流数据写入虚拟从属设备中。
[0021]相比较于现有技术,本发明的基于DMA的实时流数据传送方法采用虚拟从属设备作为DMA控制器的附属设备,DMA控制器可以从虚拟从属设备中读取默认填充数据,用于填充存储器内部输出的流数据,也可以将需要丢弃的外部输入的流数据写入虚拟从属设备中,以配合DMA控制器在流数据实时传送过程中实现对流数据的填充或丢弃功能;另一方面,虚拟从属设备实现了在系统总线上的单周期写入和读取,速度更快,节省了总线资源,再者,虚拟从属设备不占用存储资源,默认填充数据可配置,也节省了存储器资源。
【专利附图】

【附图说明】
[0022]图1是本发明基于DMA的实时流数据传送系统的电路原理框图。
[0023]图2是本发明基于DMA的实时流数据传送系统另一种解决方案的电路原理框图。
【具体实施方式】
[0024]下面结合附图和实施例进一步详细说明本发明,但本发明的保护范围并不限于此。
[0025]参照图1,本发明的基于DMA的实时流数据传送系统包括主控CPU、DMA控制器、存储器、系统总线、外设接口和虚拟从属设备,系统总线分别与主控CPU、DMA控制器、存储器、外设接口和虚拟从属设备相连,DMA控制器通过系统总线控制存储器与外设接口之间的实时流数据传送,通过虚拟从属设备配合DMA控制器在流数据实时传送过程中实现对流数据的填充或丢弃功能。
[0026]其中,虚拟从属设备(dummy slaver)是DMA控制器的附属设备,虚拟从属设备具有总线从设备接口,是系统总线上的从设备,与系统总线相连;虚拟从属设备占用总线地址空间,在其地址空间内,允许DMA控制器等其他总线主设备对其进行读写操作。虚拟从属设备内配置有默认填充数据,用于填充存储器的内部数据,虚拟从属设备支持写操作,可以将外部需要丢弃的流数据直接写入,实现丢弃。当对虚拟从属设备进行读操作时,单周期可获取预先配置的默认填充数据;当对虚拟从属设备进行写操作时,单周期完成并直接丢弃写入数据,不具备存储功能。
[0027]主控CPU用于产生数据源,并将产生的数据源通过系统总线写入存储器中,或者主控CPU用于消费存储器中的数据源,同时,主控CPU为主控制中心,控制系统的运行。系统在实时流数据传送过程中,需要在存储器中需要开辟两块存储功能空间,首先是流数据缓存,流数据缓存由多个数据块构成;其次是DMA任务链表,通常由两个任务链表构成,实现乒乓操作,每个DMA任务链表中存放当前DMA任务的基本要素:DMA搬运的数据源端地址,DMA搬运的数据终端地址,DMA搬运传输控制,以及下一个任务链表的读取地址。
[0028]为了更加清楚阐述本发明的流数据传送方式,将系统总线根据传输通道的不同分为I号系统总线、2号系统总线和3号系统总线,I号系统总线分别与2号系统总线、主控CPU和存储器进行通信,2号系统总线分别与DMA控制器、虚拟从属设备和外设接口进行通信,3号系统总线分别与DMA控制器、虚拟从属设备和存储器进行通信,I号系统总线和2号系统总线通过总线桥相连。DMA控制器通过2号和3号系统总线读取虚拟从属设备中的默认填充数据到外设接口中,或者DMA控制器通过2号和3号系统总线将外设接口中的数据写入虚拟从属设备中,写入虚拟从属设备中的数据由虚拟从属设备直接丢弃。
[0029]本发明的基于DMA的实时流数据传送系统的数据传送方法,是基于上述提及的传送系统,即为传送系统的工作流程,传送方法包括两种数据传送方式,第一种为存储器实时将流数据传送到外设接口,即内部数据的访问;第二种为外设接口实时将流数据传送到存储器,即外部数据的访问,以实现实时流数据的双向通信。
[0030]在第一种数据传送方式下,即存储器实时将流数据传送到外设接口,由主控CPU产生数据源,并将数据源通过I号系统总线写入存储器的流数据缓存中,配置虚拟从属设备的默认填充数据,具体包括如下步骤:
[0031]步骤a:主控CPU配置启动DMA控制器,总线控制权由主控CPU转移到DMA控制器;主控CPU配置DMA控制器内的配置寄存器,建立数据传送由存储器到外设接口的数据通道,配置搬运类型,DMA通道使能,中断使能等全局配置,同时在存储器中准备DMA任务链表。
[0032]步骤b:主控CPU配置DMA任务链表的内容,将数据源端地址指向存储器,数据终端地址指向外设接口,启动DMA数据传输,DMA控制器通过3号系统总线读取存储器中的流数据,并将流数据通过2号系统总线实时写入到外设接口中,实现实时流数据的传送;在流数据传送过程中,一方面,主控CPU不断的将产生流数据源存放到存储器的流数据缓存中,另一方面,主控CPU接收DMA任务中断,主控CPU实时检测存储器中流数据是否即将变空,当检测到的流数据不足以实时传送时,进入步骤C,否则继续实时传送流数据;
[0033]步骤c:主控CPU配置下一个DMA任务链表的内容,将数据源端地址由存储器改为虚拟从属设备的地址,其它配置不变,DMA控制器通过3号系统总线读取虚拟从属设备中的默认填充数据,并将默认填充数据通过2号系统总线实时写入到外设接口中,弥补主控CPU产生的数据源不足的问题。当主控CPU检测到存储器中的流数据充足可以实时传送时,返回步骤b,否则继续实时传送默认填充数据。
[0034]第二种数据传送方式,即外设接口实时将流数据传送到存储器,由与外设接口相连的外设产生数据源,主控CPU消费数据源,主控CPU配置虚拟从属设备中的写入功能,具体包括如下步骤:
[0035]步骤d:主控CPU配置启动DMA控制器,总线控制权由主控CPU转移到DMA控制器;主控CPU配置DMA控制器内的配置寄存器,建立数据传送由外设接口到存储器的数据通道,配置搬运类型,DMA通道使能,中断使能等全局配置,同时在存储器中准备DMA任务链表。
[0036]步骤e:主控CPU配置DMA任务链表的内容,将数据源端地址指向外设接口,数据终端地址指向存储器,启动DMA数据传输,DMA控制器通过2号系统总线读取外设接口中的流数据,并将流数据实时通过3号系统总线写入到存储器中,实现实时流数据的传送;在流数据传送过程中,一方面,主控CPU不断的消耗流数据,另一方面,主控CPU接收DMA任务中断,主控CPU实时检测存储器的存储空间,当检测到存储器存储空间不充足时,进入步骤f,否则继续实时传送流数据;
[0037]步骤f:主控CPU配置下一个DMA任务链表的内容,将数据终端地址由存储器改为虚拟从属设备的地址,DMA控制器通过2号系统总线读取外设接口中流数据,并将流数据通过3号系统总线反复写入到虚拟从属设备中,实现流数据的直接丢弃,弥补存储器存储空间不足的问题。当主控CPU检测到存储器存储空间充足时,返回步骤e,否则继续实时将流数据写入虚拟从属设备中。
[0038]参照图2,本发明的基于DMA的实时流数据传送系统的另一种解决方案,与上述实施方案不同的是,本实施例中的虚拟从属设备集成到DMA控制器中,可以省去系统总线从设备接口,直接作为DMA数据传送通道上特定地址空间的节点。
[0039]本发明的基于DMA的实时流数据传送系统,包括主控CPU、DMA控制器、存储器、系统总线和外设接口,DMA控制器通过系统总线控制存储器与外设接口之间的实时数据传送,所述DMA控制器内设有用于提供默认填充数据及丢弃写入数据的虚拟从属设备,虚拟从属设备占用总线地址空间,虚拟从属设备设有数据接口,数据接口与DMA控制器的内部总线相连;DMA控制器读取虚拟从属设备中的默认填充数据到外设接口中,或者DMA控制器将外设接口中的数据写入虚拟从属设备中,写入虚拟从属设备中的数据由虚拟从属设备直接丢弃。
[0040]此时虚拟从属设备作为DMA控制器的虚拟附属子模块,DMA控制器对虚拟从属设备进行读写访问时,不需要进行总线接口协议转换,可以进一步减少系统总线上的读写操作,更有利于节约总线资源和功耗。该实施方案的工作流程请参照本发明的方法,在此不再赘述。
[0041 ] 上述说明中,凡未加特别说明的,均采用现有技术中的技术手段。
【权利要求】
1.一种基于DMA的实时流数据传送系统,包括主控CPU、DMA控制器、存储器、系统总线和外设接口,DMA控制器通过系统总线控制存储器与外设接口之间的实时数据传送,其特征在于,所述传送系统还包括用于提供默认填充数据及丢弃写入数据的虚拟从属设备,虚拟从属设备占用总线地址空间,虚拟从属设备设有总线从设备接口,总线从设备接口与系统总线相连;DMA控制器通过系统总线读取虚拟从属设备中的默认填充数据到外设接口中,或者DMA控制器通过系统总线将外设接口中的数据写入虚拟从属设备中,写入虚拟从属设备中的数据由虚拟从属设备直接丢弃。
2.一种基于DMA的实时流数据传送系统,包括主控CPU、DMA控制器、存储器、系统总线和外设接口,DMA控制器通过系统总线控制存储器与外设接口之间的实时数据传送,其特征在于,所述DMA控制器内设有用于提供默认填充数据及丢弃写入数据的虚拟从属设备,虚拟从属设备占用总线地址空间,虚拟从属设备设有数据接口,数据接口与DMA控制器的内部总线相连;DMA控制器读取虚拟从属设备中的默认填充数据到外设接口中,或者DMA控制器将外设接口中的数据写入虚拟从属设备中,写入虚拟从属设备中的数据由虚拟从属设备直接丢弃。
3.如权利要求1或2所述的基于DMA的实时流数据传送系统的数据传送方法,所述传送方法包括两种数据传送方式,第一种为存储器实时将流数据传送到外设接口,第二种为外设接口实时将流数据传送到存储器,其特征在于,所述第一种数据传送方式包括如下步骤:步骤a:主控CPU配置启动DMA控制器,总线控制权由主控CPU转移到DMA控制器;步骤b =DMA控制器通过系统总线读取存储器中的流数据,并将流数据实时写入到外设接口中,实现实时流数据的传送;在流数据传送过程中,主控CPU实时检测存储器中流数据,当检测到的流数据不足以实时传送时,进入步骤C,否则继续实时传送流数据;步骤c =DMA控制器读取虚拟从属设备中的默认填充数据,并将默认填充数据实时写入到外设接口中,当主控CPU检测到存储器中的流数据充足可以实时传送时,返回步骤b,否则继续实时传送默认填充数据;第二种数据传送方式包括如下步骤:步骤d:主控CPU配置启动DMA控制器,总线控制权由主控CPU转移到DMA控制器;步骤e =DMA控制器通过系统总线读取外设接口中的流数据,并将流数据实时写入存储器中,实现实时流数据的传送;在流数据传送过程中,主控CPU实时检测存储器的存储空间,当检测到存储空间不充足时,进入步骤f,否则继续实时传送流数据;步骤f =DMA控制器通过系统总线将从外设接口中实时读取的流数据反复写入到虚拟从属设备中,将写入流数据直接丢弃,当主控CPU检测到存储器存储空间充足时,返回步骤e,否则继续实时将流数据写入虚拟从属设备中。
【文档编号】G06F13/28GK103678205SQ201310751601
【公开日】2014年3月26日 申请日期:2013年12月30日 优先权日:2013年12月30日
【发明者】张奇, 董东升 申请人:杭州士兰微电子股份有限公司
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!