分级缓冲的DMA传送装置及传送方法技术领域
本发明涉及芯片设计领域,尤其涉及向DDR(双倍速率同步动态数据存储器)
传送大量数据的DMA(Direct Memery Access,直接存储访问)读写控制方法、装
置及系统。
背景技术
在芯片设计中,通常涉及一个大数据量的实时外设与芯片系统主存DDR发生
大量数据交互的过程。由于外设被动性和对数据需求的恒定性,与DDR主存反馈
信息的不能精确可控性,在芯片设计中时常用到一个大FIFO(First Input First Output,
先入先出)芯片将外设数据和DDR响应之间隔离开来,并用以平滑DDR响应的突
发性,保证外设数据传输的均衡性。
现有的方法往往采用全异步设计,异步数据读写控制方法通常采用异步先入先
出方式实现,即在将双口随机存取存储器(Random Access Memory,RAM)的地
址进行格雷码转换后,通过判决地址的距离来判断FIFO的空满状态,并将其作为
跨时钟域的握手信号。上述方法能很好的处理跨时钟域隔离,适用于大批量固定方
向数据传输的情况,特别是全异步处理的最主要选择。但是随着芯片DDR控制端
竞争复杂度增加时,DDR所反馈的数据很不均匀,因此用于隔离外设和DDR的
FIFO需要很大,才能很好地平滑DDR端的突发性和外设需求的恒定性。
RAM一般有双口和单口两种:双口的RAM能同时进行读操作和写操作,共
享一片内存区域,在一个端口写入的内容,可以在另一个端口相同的地址读取出来;
而单口的RAM只有一套读写地址,某一个时刻只能由一个设备完成对RAM的操
作,但面积只有双口的RAM的一半。
当外设时钟和DDR控制时钟存在同步关系时,如果采用分时复用(Time
Dvision Multiplex Accesss)的方法,将这种大块的双口RAM替换成单口RAM,成
为芯片设计缩减面积重要手段之一,而发明的出发点就是提供在DMA数据传输中,
用单口RAM替换双口RAM所遇到问题的解决办法。
发明内容
有鉴于此,本发明实施例的目的在于提供一种将DMA two ports FIFO(双口
FIFO)替换成single port memory(Spram,单口RAM)的设计方法和相应的控制逻
辑的设计方法,旨在保证平衡DDR和外设之间数据传输稳定的同时,尽可能缩小
芯片面积。
为解决以上技术问题,本发明实施例提供的技术方案是:一种分级缓冲的DMA
传送装置,包括若干外设端、一主控端、一DMA单口主缓冲及一主缓冲控制器和
一前置缓冲及一前置缓冲控制器,其中:
所述外设端,用于匀速地定向发送/接收请求数据;
所述主控端,用于迸发式响应外设端的发送/接收请求,响应后在有限时间内完
成;
所述单口主缓冲,在所述主缓冲控制器的调度下,用于平滑外设端匀速数据请
求与主控端迸发式处理之间的矛盾冲突,在正常运行状态时,所述外设端可直接访
问所述单口主缓冲;当所述单口主缓冲中数据量达到预设阀值时,由所述主缓冲控
制器启动对所述主控端的DMA访问请求;
所述前置缓冲,在所述前置缓冲控制器的调度下,用于在所述主控端响应所述
外设端的DMA请求时,启动所述前置缓冲接纳所述外设端发来的数据请求。
较优地,所述前置缓冲可在所述主控端完成对所述外设端的DMA请求响应与
所述外设端访问所述单口主缓冲的间隙处,将所述前置缓冲的内容逐步搬移到所述
单口主缓冲区内,合并成一个完整的数据体。
较优地,所述单口主缓冲可在外设端请求为读请求时,在所述外设端发起DMA
请求之前,将所述单口主缓冲中的部分数据预先搬移到所述前置缓冲内。
较优地,所述前置缓冲为单口RAM。
较优地,所述前置缓冲为双口RAM。
本发明实施例还提供一种分级缓冲的DMA传送方法,包括:
外设端匀速地定向发送/接收请求数据;
主控端迸发式响应外设端的发送/接收请求,响应后在有限时间内完成;
单口主缓冲在主缓冲控制器的调度下,平滑外设端匀速数据请求与主控端迸发
式处理之间的矛盾冲突,其中:在正常运行状态时,外设端直接访问单口主缓冲;
在单口主缓冲中数据量达到预设阀值时,主缓冲控制器启动对主控端的DMA访问
请求;
前置缓冲在前置缓冲控制器的调度下,在主控端响应所述外设端的DMA请求
时,启动前置缓冲接纳外设端发来的数据请求。
较优地,前置缓冲在主控端完成对外设端的DMA请求响应与外设端访问单口
主缓冲的间隙处,将前置缓冲的内容逐步搬移到单口主缓冲区内,合并成一个完整
的数据体。
较优地,单口主缓冲在外设端请求为读请求时,在外设端发起DMA请求之前,
将单口主缓冲中的部分数据预先搬移到前置缓冲内。
较优地,根据外设端匀速数据请求与主控端迸发式处理之间的矛盾冲突峰值确
定单口主缓冲的访问深度。
较优地,根据主控端迸发式响应时间、外设端请求数据量总和与外设端数据访
问频率之比的峰值确定前置缓冲的访问深度。
与现有技术相比,本发明实施例提供了一种大量数据往内存控制器传送时,
DMA控制电路的一种设计方法,通过将上传DMA缓冲buffer拆分成大的主缓冲和
很小的前置缓冲,主缓冲用单口memory,得以大幅度缩减芯片面积,并保证平衡
DDR和外设之间数据传输的稳定。
附图说明
图1是现有DMA传送装置的控制信号示意图;
图2是本发明分级缓冲的DMA传送装置一实施例的原理框图;
图3是图2中的控制信号示意图;
图4是本发明分级缓冲的DMA传送方法一实施例的时序图。
具体实施方式
本发明的核心是将上传DMA buffer(缓冲)拆分成主缓冲和很小的前置缓冲,
主缓冲用单口memory(存储器),从而得以在保证平衡DDR和外设之间数据传输
稳定的同时大幅度缩减芯片面积。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,
对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释
本发明,并不用于限定本发明。
参见图1,为现有DMA传送装置的控制信号示意图,其主控端的DDR由于
是多线程处理,总是处于忙状态,对于CPU访问DDR或其它设备访问DDR的请
求,并不能及时相应,但一旦响应则在有限时间内完成请求处理。为了平滑DDR
响应的突发性,保证外设数据传输的均衡性,设置有大的双口DMA buffer,因而芯
片面积较大。
该方案中,双口DMA buffe涉及到Read_clk(读时钟)、Read_en(读使能)、
Read_addr(读地址)、Read_data(读数据),以及Write_clk(写时钟)、Write_en
(写使能)、Write_addr(写地址)、Write_data(写数据)等控制信号,它们由缓
冲控制器(图未示出)统一调度,且读信号的频率大于写信号的频率(Freq_rclk>
Freq_wclk)。
与之不同,本发明将上传DMA buffer拆分成很大的主缓冲和很小的前置缓冲,
其中主缓冲用单口memory,从而可有效缩小芯片面积。
参见图2,表示出本发明分级缓冲的DMA传送装置的一实施例。该用于大数
据量传送的DMA发送和控制装置实施例是这样实现的,其主要包括以下几个部分:
匀速的数据发起/接收外设端200、迸发式数据接收/发送主控端400、DMA单口主
缓冲200及主缓冲控制器100、前置缓冲500及前置缓冲控制器600等部分,其中:
匀速的数据发起/接收外设端200,源源不断的定向对主控端400发送/请求数
据。由于外设端200是相比主控端400速度较缓慢的匀速发起数据请求,而主控端
400由于是多线程处理而总是处于忙状态,因此对某个外设的请求并不能及时响应,
但一旦响应则在有限时间内完成对外设端200的请求处理。
为此,单口主缓冲300(single port RAM,spram)则用来平滑外设的匀速数据
请求和主控的迸发处理的矛盾。这个单口主缓冲300的spram的访问深度,根据实
际中外设和主控之间矛盾冲突的峰值进行选择。
单口主缓冲300在主缓冲控制器100调度下工作,其控制逻辑是:在正常运行
时,或者单口主缓冲300的读写控制信号没有被迸发的主控所占用时,外设端200
拥有对单口主缓冲300的直接访问权;当单口主缓冲300中的数据量达到一定设定
的阈值时,DMA主缓冲控制器100启动对主控端400的DMA访问请求。
当主控端400响应外设端的DMA请求时,将完全占据单口主缓冲300的spram
的访问权限。而此时为了防止外部设备发送/请求的数据丢失,启动前置缓冲500用
于接纳外设端200发来的数据请求。
当主控端400完成对外设端200的DMA请求响应时,外设端200恢复对主缓
冲300的spram的访问控制权,但由于外设端200还有部分数据请求寄存在前置缓
冲500内,因此在外设端200访问spram的间隙处,前置缓冲500的内容将逐步搬
移到单口主缓冲200,合并成一个完整的数据体。
当外设端200数据请求为读请求时,在外设端200发起DMA请求之前,将单
口主缓冲300部分的数据,预先搬移到前置缓冲500内,可以保证主控端400对单
口主缓冲300访问时,由前置缓冲500提供给外设数据。
前置缓冲区500的深度由主控迸发式响应时间、外设请求的数据量的总和与外
设数据访问频率比的峰值决定。而前置缓冲500由于深度很小,无论采用单口RAM
还是双口RAM都可以。而使用双口RAM可以简化前置缓冲500的控制逻辑,但
对面积影响不是很大。
参见图3,为图2所示方案中单口DMA buffe涉及到控制信号,包括Write_bus(写
总线)、CLK(时钟)、Wen(写使能)、Wdata(写数据)、Waddr(写地址)等,
它们由主缓冲控制器100统一调度。同样地,读信号的频率大于写信号的频率
(Freq_rclk>Freq_wclk)。
图3中涉及两条路径:第一条表示“DDR不访问big DMA buffer”,即外设
可以直接写通到big buffer中;第二条路径的左上角设有一个“非门”,表示“DDR
正访问big DMA buffe”,即外设必须写到前置缓冲上去,此为本发明的关键所在。
在前述基础上,下面对本发明分级缓冲的DMA传送方法进行描述。
参见图4,表示本发明分级缓冲的DMA传送方法的时序,其具体过程为:
外设端匀速地定向发送/接收请求数据(过程1);
当主控端为非忙状态时,主控端迸发式响应外设端的发送/接收请求,响应后在
有限时间内完成(过程6);
当主控端为忙状态时,单口主缓冲在主缓冲控制器的调度下,平滑外设端匀速
数据请求与主控端迸发式处理之间的矛盾冲突,其中:
在正常运行状态时,外设端直接访问单口主缓冲(过程3);
在单口主缓冲中数据量达到预设阀值时,主缓冲控制器启动对主控端的DMA
访问请求(过程5);
前置缓冲在前置缓冲控制器的调度下,在主控端响应所述外设端的DMA请求
时,启动前置缓冲接纳外设端发来的数据请求(过程7)。
同时,前置缓冲在主控端完成对外设端的DMA请求响应与外设端访问单口主
缓冲的间隙处,将前置缓冲的内容逐步搬移到单口主缓冲区内,合并成一个完整的
数据体(过程8)。
特别地,在单口主缓冲在外设端请求为读请求时,在外设端发起DMA请求之
前,将单口主缓冲中的部分数据预先搬移到前置缓冲内。
该传送方法中,根据外设端匀速数据请求与主控端迸发式处理之间的矛盾冲突
峰值确定单口主缓冲的访问深度;同时,根据主控端迸发式响应时间、外设端请求
数据量总和与外设端数据访问频率之比的峰值确定前置缓冲的访问深度。
以上实施例通过将上传DMA缓冲buffer拆分成大的主缓冲和很小的前置缓冲,
主缓冲用单口memory,从而得以大幅度缩减芯片面积,并保证平衡DDR和外设之
间数据传输的稳定。
以下为本发明的一具体应用实例,简要描述如下。
应用实例
外设终端是camera(摄像机)摄像头,在录制DV时,基本上基于40M左右
的时钟,持续向DDR中送入采集数据,再由CPU进行视频编码,传输到SD卡(安
全数码卡)中进行存储,同时LCD屏幕上进行图像预览。
Camera的控制器与DDR控制器工作在同一个频率120M,正好3个周期由
camera控制器送出一个象素点。
由于LCD屏幕是源源不断的获取数据显示,因此LCD的DMA优先级最高,
DDR优先响应LCD的DMA请求。为提高DMA效率,每次每个设备DMA申请
都为256个字节。
经过系统的统计评估,camera的DMA控制器需要深度为2048的数据缓冲,
才能无风险地平滑系统繁忙时的突发工作导致无法及时响应camera的DMA请求。
否则容易发生camera数据缓冲的写溢出状态。
由于是连续地址访问,DDR控制器,每次服务256个字节的数据访问,需要
54个周期,加上控制信号的开销,一共要60个服务周期。即当camera发起DMA
请求时,什么开始得到真正响应时间不确定,但一旦得到服务响应,最多将在60
个周期内完成服务,完成之后DDR就释放对DMA单口主缓冲的读写控制。
而在这60个周期之内,大约有20个象素的数据需要缓冲,考虑DDR控制器
时钟和camera数据采集时钟的频率比可能发生变化,因此保守起见,前置缓冲区的
大小为32个象素。
初始时,camera每3个周期往big buffer里面写一个象素(为简化描述,这里认
为一个象素就是一个字节,只有亮度一路分量,色度两个分量在此文中描述忽略)。
而此时前置缓冲处于空闲状态。
当big buffer的写地址达到256时,CC(camera controller,摄像机控制器)启
动DMA请求上传数据。由于DDRC(DDR controller,DDR控制器)一直处于忙
状态,当CC获得DMA请求确认时,big buffer的写地址已经到达280。
CC获得DMA请求确认后,big buffer的读写控制权由完全交给DDRC,此时
CC将CC对big buffer的写地址进行锁存,并同时启动前置缓冲区。
在DDRC对CC的DMA请求服务期间,CC继续往地址281,282,283的地
址上写入数据,只不过前置缓冲区的此时0地址有个概念上的偏移地址280,即big
buffer控制权移交时的状态。
CC一共往前置缓冲写道300地址时,DDRC完成了CC的DMA服务请求——
将big buffer中的256个字节全部读走,并释放了big buffer的控制权。当CC继续
往big buffer中填入下一个数据时,填充的地址是301,以后依次增加。
由于CC平均3个周期往big buffer填入1个象素点,因此big buffer实际上还
有2/3的时间处于空闲。因此前置缓冲中的20个象素点的内容,可以在CC往311
地址上写入新的数据之前,利用间隙将这个数据完全搬移到big buffer的280~299
的地址空间,完成搬移后,前置缓冲区再次进入空闲状态。
下次CC发起新的DMA请求时,big buffer中的地址256~511空间内容为连续
内容,类似的动作周而复始。
以上仅是本发明的优选实施方式,应当指出的是,上述优选实施方式不应视为
对本发明的限制,本发明的保护范围应当以权利要求所限定的范围为准。对于本技
术领域的普通技术人员来说,在不脱离本发明的精神和范围内,还可以做出若干改
进和润饰,这些改进和润饰也应视为本发明的保护范围。