CN104145255B - 数据传输装置、数据传输方法及数据传输程序 - Google Patents

数据传输装置、数据传输方法及数据传输程序 Download PDF

Info

Publication number
CN104145255B
CN104145255B CN201380011490.9A CN201380011490A CN104145255B CN 104145255 B CN104145255 B CN 104145255B CN 201380011490 A CN201380011490 A CN 201380011490A CN 104145255 B CN104145255 B CN 104145255B
Authority
CN
China
Prior art keywords
data
transmission
buffer
write
control unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201380011490.9A
Other languages
English (en)
Other versions
CN104145255A (zh
Inventor
山本佳奈子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Corp
Original Assignee
Mitsubishi Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Corp filed Critical Mitsubishi Corp
Publication of CN104145255A publication Critical patent/CN104145255A/zh
Application granted granted Critical
Publication of CN104145255B publication Critical patent/CN104145255B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • G06F5/085Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register in which the data is recirculated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明的目的是在数据的传输源区域和传输目标区域重叠的情况下,即使在使用突发传输功能进行传输的情况下,也防止数据损坏的发生。从传输源区域读出的数据一旦写入环形缓冲器,就将写入到环形缓冲器中的数据写入传输目标区域。此时,基于环形缓冲器中的写入数据发生环绕的次数与读出数据发生环绕的次数之间的大小关系,控制从环形缓冲器的数据读出。

Description

数据传输装置、数据传输方法及数据传输程序
技术领域
本发明涉及一种将在传输源区域中存储的数据传输到传输目标区域的数据传输技术。
背景技术
在数据传输技术中,存在有被称为DMA(Direct Memory Access)传输的技术。
在DMA传输中,首先,CPU(Central Processing Unit)在DMA传输控制装置的寄存器中设定数据传输源地址、数据传输目标地址、数据传输大小等传输所必需的DMA信息。并且,如果CPU向DMA传输控制装置指示传输开始,则DMA传输控制装置根据在寄存器中设定的DMA信息执行传输处理。DMA传输控制装置在与在寄存器中设定的传输大小相应的数据传输完毕时,向CPU声称DMA传输结束中断。CPU在检测到DMA传输结束中断时,读入DMA传输控制装置的寄存器的信息,并对DMA传输的结果、状况进行确认。
在DMA传输控制装置执行传输处理的期间,不需要CPU的传输控制。因此,在DMA传输中,与经由CPU进行数据传输的情况相比,能够高速地进行数据传输。此外,在DMA传输中,能够减轻CPU的负担。
在通常的DMA传输中,每次读出设定大小(单位量)的需要数据,然后进行写入。由于写入的开始定时是在读出完毕后,因此在向延迟较大的设备的传输中,传输效率不佳。
存在有使用了AXI(Advanced eXtensible Interface)总线的DMA传输控制装置。
AXI总线具有只读总线和只写总线,能够并行执行:使用只读总线从数据传输源区域的数据取得、以及使用只写总线向数据传输目标区域的数据传输。
此外,AXI总线具有突发传输功能。突发传输功能是如下功能,即,能够通过1次读取请求取得多个单位量的读取数据,通过1次写入请求执行多个单位量的写入。
在使用了AXI总线的DMA传输控制装置中,通过上述的只读/写总线、突发传输功能,从而能够进行高速传输。
专利文献1:日本特开平10-116245号公报
专利文献2:日本特开2008-83911号公报
发明内容
在DMA传输中,在数据的传输源区域和传输目标区域重叠的情况下,有时会发生数据损坏。尤其是在使用突发传输功能进行传输的情况下,难以防止数据损坏。
本发明的目的在于防止在数据的传输源区域和传输目标区域重叠的情况下的数据损坏的发生。其目的尤其在于即使在使用突发传输功能进行传输的情况下,也防止数据损坏的发生。
本发明涉及的数据传输装置是将在传输源区域中存储的数据传输到传输目标区域的数据传输装置,其特征在于,具有:
传输源读取控制部,其输出用于读出在所述传输源区域中存储的数据的读取命令;
缓冲器写入控制部,其取得利用所述传输源读取控制部输出的读取命令读出的数据,并写入环形缓冲器;
缓冲器读取控制部,其从所述环形缓冲器读出所述缓冲器写入控制部写入的数据,并发送到所述传输目标区域;
传输目标写入控制部,其输出用于将所述缓冲器读取控制部发送到所述传输目标区域的数据写入所述传输目标区域的写入命令;
写入周期计数部,其对所述缓冲器写入控制部发生环绕的次数进行计数;
读取周期计数部,其对所述缓冲器读取控制部发生环绕的次数进行计数;以及
数据无损控制部,其根据所述写入周期计数部计数的次数和所述读取周期计数部计数的次数之间的大小关系,判定是否允许向所述传输目标区域写入数据,
所述缓冲器读取控制部在所述数据无损控制部判定为允许写入的情况下从所述环形缓冲器读出数据,
所述传输目标写入控制部在所述数据无损控制部判定为允许写入的情况下,输出所述写入命令,从而将所述缓冲器读取控制部发送到所述传输目标区域的数据写入所述传输目标区域。
发明的效果
根据本发明涉及的数据传输装置,能够通过调整从缓冲器区域读出数据的定时,从而防止数据损坏的发生。
附图说明
图1是发生数据损坏的情况的说明图。
图2是发生数据损坏的情况的说明图。
图3是使用了突发传输功能的情况中的数据传输的顺序的说明图。
图4是实施方式1涉及的DMA传输系统10的结构图。
图5是实施方式1涉及的DMA传输控制装置100的结构图。
图6是实施方式1涉及的数据无损控制部160的结构图。
图7是实施方式1涉及的缓冲器写入周期计数部170的结构图。
图8是实施方式1涉及的缓冲器读取周期计数部180的结构图。
图9是表示实施方式1涉及的DMA传输控制装置100整体的动作的流程图。
图10是表示实施方式1涉及的传输源读取控制部110的动作的流程图。
图11是表示实施方式1涉及的缓冲器写入控制部120的动作的流程图。
图12是表示缓冲器读取控制部140的动作的流程图。
图13是表示实施方式1涉及的传输目标写入控制部150的动作的流程图。
图14是表示实施方式1涉及的数据无损控制部160的动作的流程图。
图15是表示实施方式1涉及的缓冲器写入周期计数部170的动作的流程图。
图16是表示实施方式1涉及的缓冲器读取周期计数部180的动作的流程图。
图17是表示DMA传输期间中的数据的变化的图(1-1)。
图18是表示DMA传输期间中的数据的变化的图(1-2)。
图19是表示DMA传输期间中的数据的变化的图(1-3)。
图20是表示DMA传输期间中的数据的变化的图(1-4)。
图21是表示DMA传输期间中的数据的变化的图(1-5)。
图22是表示DMA传输期间中的数据的变化的图(2-1)。
图23是表示DMA传输期间中的数据的变化的图(2-2)。
图24是表示DMA传输期间中的数据的变化的图(2-3)。
图25是表示DMA传输期间中的数据的变化的图(2-4)。
图26是表示DMA传输期间中的数据的变化的图(2-5)。
图27是表示DMA传输期间中的数据的变化的图(3-1)。
图28是表示DMA传输期间中的数据的变化的图(3-2)。
图29是表示DMA传输期间中的数据的变化的图(3-3)。
图30是表示DMA传输期间中的数据的变化的图(3-4)。
图31是表示DMA传输期间中的数据的变化的图(3-5)。
图32是实施方式2涉及的数据无损控制部160的结构图。
图33是表示实施方式2涉及的DMA传输控制装置100整体的动作的流程图。
具体实施方式
图1、图2是发生数据损坏的情况的说明图。特别地,图1是数据的传输源区域和传输目标区域正向偏移的情况的说明图。图2是数据的传输源区域和传输目标区域反向偏移的情况的说明图。
基于图1,对数据的传输源区域和传输目标区域的一部分重叠,并且数据的传输源区域和传输目标区域正向偏移的情况进行说明。传输源区域和传输目标区域正向偏移,是指传输源区域的起始地址的地址值比传输目标区域的起始地址的地址值小的情况。
在图1中,传输源区域和传输目标区域是相同设备中的区域,区域B重叠。此外,在图1中,作为传输源区域的起始地址的区域A的起始地址的地址值,比作为传输目标区域的起始地址的区域B的起始地址的地址值小,传输源区域和传输目标区域正向偏移。
在该情况下,如果向地址值的升序方向(递增方向)依次进行数据传输,则首先将区域A的数据写入区域B,之后,将区域B的数据写入区域C。在该情况下,在将区域B的数据写入区域C之前,将区域A的数据写入了区域B,从而原本在区域B中存储的数据被损坏。
另一方面,在该情况下,假设向地址值的降低方向(递减方向)依次进行数据传输。于是,首先,将区域B的数据写入区域C,之后,将区域A的数据写入区域B。因此,可以不破坏数据而进行传输。
基于图2,对数据的传输源区域和传输目标区域的一部分重叠,并且数据的传输源区域和传输目标区域反向偏移的情况进行说明。传输源区域和传输目标区域反向偏移,是指传输源区域的起始地址的地址值比传输目标区域的起始地址的地址值大的情况。
在图2中,与图1同样地,传输源区域和传输目标区域也是相同的设备中的区域,区域B重叠。但是,在图2中,作为传输源区域的起始地址的区域B的起始地址的地址值,比作为传输目标区域的起始地址的区域A的起始地址的地址值小,传输源区域和传输目标区域反向偏移。
在该情况下,如果向地址值的降低方向(递减方向)依次进行数据传输,则首先将区域C的数据写入区域B,之后,将区域B的数据写入区域A。在该情况下,在将区域B的数据写入区域A之前,将区域C的数据写入了区域B,从而原本在区域B中存储的数据被损坏。
另一方面,在该情况下,假设向地址值的升序方向(递增方向)依次进行数据传输。于是,首先,将区域B的数据写入区域A,之后,将区域C的数据写入区域B。因此,可以不破坏数据而进行传输。
即,如果在传输源区域和传输目标区域正向偏移的情况下,进行向地址值的降序方向依次传输数据的递减传输,则不会发生数据损坏。另一方面,如果在传输源区域和传输目标区域反向偏移的情况下,进行向地址值的升序方向依次传输数据的递增传输,则不会发生数据损坏。
图3是使用了突发传输功能的情况中的数据传输顺序的说明图。在图3中,表示使用突发传输功能而进行递减方向的数据传输的情况。
在通常的数据传输中,通过1次的读取/写入请求只能进行1个单位量的数据的传输。相对于此,在使用突发传输功能的情况下,通过1次的读取/写入请求能够进行多个单位量的数据的传输。
在图3中,假设进行数据1~8的8个单位量的数据的传输。因此,在通常的数据传输中,需要8次的读取/写入请求。相对于此,在使用了突发传输功能的情况下,能够通过2次的读取/写入请求进行传输。另外,此处,假设进行通过1次的读取/写入请求能够传输4个单位量数据的4突发传输。
此处,突发读取命令(处理)的发出顺序能够向递增方向或者向递减方向。但是,突发读取命令内的数据的读出顺序只能向递增方向。因此,如图3所示,即使以读出数据5~8的4突发读取命令作为第1个命令,以读出数据1~4的4突发读取命令作为第2个命令这样的递减方向的顺序发出突发读取命令,数据的读出顺序也变为数据5、6、7、8、1、2、3、4的顺序。即,不能以数据8、7、6、5、4、3、2、1的顺序读出。
因此,如果在传输源区域和传输目标区域正向偏移的情况下,使用突发传输功能进行数据传输,则即使使用递减传输也不能防止数据损坏。
另外,突发写入命令的情况与突发读取命令的情况同样地,突发写入命令的发出顺序也能够向递增方向或者向递减方向。但是,突发写入命令内中的数据的写入顺序只能向递增方向。
图4是实施方式1涉及的DMA传输系统10的结构图。
DMA传输系统10具有DMA传输控制装置100(数据传输装置)、CPU200、存储器300。
DMA传输控制装置100是根据CPU200等的使用者在寄存器中设定的DMA信息,访问存储器300并进行数据传输的装置。
CPU200在DMA传输控制装置100的寄存器中设定:指定传输源区域的传输源地址、指定传输目标区域的传输目标地址、指定传输数据的大小的传输大小、传输类型(递增传输或者递减传输)的DMA信息,并使DMA传输控制装置100执行数据传输。此处,使CPU200对DMA信息进行设定,但是不限于CPU200,也可以是其它装置、系统对DMA信息进行设定。
存储器300是成为数据传输的传输源区域以及传输目标区域的对象设备。
图5是实施方式1涉及的DMA传输控制装置100的结构图。
另外,在图5中,实线表示数据流动的数据线,虚线表示控制信号流动的控制线。
DMA传输控制装置100具有:传输源读取控制部110、缓冲器写入控制部120、内部缓冲器130(环形缓冲器)、缓冲器读取控制部140、传输目标写入控制部150、数据无损控制部160、缓冲器写入周期计数部170、缓冲器读取周期计数部180。
传输源读取控制部110向存储器300输出传输源读取命令,其中,该传输源读取命令读出在存储器300的传输源区域中存储的数据。
传输源读取命令是集中了读取地址、读取地址有效信号(或者,读取请求信号)、其它(突发大小、突发长度)信号的信息。
缓冲器写入控制部120经由只读总线取得利用传输源读取控制部110所输出的传输源读取命令而读出的传输源读取数据。
此外,缓冲器写入控制部120将取得的传输源读取数据输出到内部缓冲器130作为缓冲器写入数据,并将缓冲器写入数据写入到由内部缓冲器130中的缓冲器写入指针指定的位置。缓冲器写入指针是表示出当前的缓冲器写入目标的信息。
缓冲器写入控制部120将缓冲器写入数据的写入完毕的位置通知到数据无损控制部160作为缓冲器写入完毕指针。缓冲器写入完毕指针,换句话说,是表示出内部缓冲器130中的读出准备完毕了的完毕区域的信息。
内部缓冲器130是在DMA传输控制装置100中内置的传输数据储存用设备。
缓冲器读取控制部140从内部缓冲器130中的缓冲器读取指针指定的位置读出数据作为缓冲器读取数据。缓冲器读取指针是表示出当前的缓冲器读取目标的信息。
此外,缓冲器读取控制部140经由只写总线将读出的缓冲器读取数据输出到存储器300作为传输目标写入数据。
缓冲器读取控制部140将缓冲器读取指针通知到数据无损控制部160。
传输目标写入控制部150将传输目标写入命令输出到存储器300,并将缓冲器读取控制部140输出的传输目标写入数据写入到传输目标区域。
传输目标写入命令是集中了写入地址、写入地址有效信号(或者,写入请求信号)、写入数据有效信号、其它(突发大小、突发长度、选通信号)信号的信息。
数据无损控制部160将由CPU200设定的传输类型(递增传输或者递减传输)通知到各控制部、各计数部。另外,各控制部指的是:传输源读取控制部110、缓冲器写入控制部120、缓冲器读取控制部140、传输目标写入控制部150。此外,各计数部指的是缓冲器写入周期计数部170、缓冲器读取周期计数部180。
此外,数据无损控制部160在递减传输的情况下,基于“缓冲器写入周期计数部170所计数的环绕的次数(缓冲器写入周期计数值)、和缓冲器读取周期计数部180所计数的环绕的次数(缓冲器读取周期计数值)之间的大小关系”,以及“缓冲器写入完毕指针的值和缓冲器读取指针的值之间的大小关系”,判定缓冲器读取指针表示的位置处的数据读出准备是否完毕。并且,数据无损控制部160在判定为数据读出准备已经完毕的情况下,将传输目标可写入指示输出到缓冲器读取控制部140、传输目标写入控制部150。另外,数据无损控制部160在递增传输的情况下,与缓冲器写入完毕指针、缓冲器读取指针无关地,始终输出传输目标可写入指示。
缓冲器读取控制部140如果从数据无损控制部160接收到传输目标可写入指示,则从内部缓冲器130读出数据。此外,传输目标写入控制部150如果从数据无损控制部160接收到传输目标可写入指示,则输出传输目标写入命令。
缓冲器写入周期计数部170是在递减传输的情况下,对缓冲器写入完毕指针环绕的次数进行计数的计数器。
缓冲器读取周期计数部180是在递减传输的情况下,对缓冲器读取指针环绕的次数进行计数的计数器。
另外,只读总线是传递传输源读取命令、传输源读取数据的总线,只写总线是传递传输目标写入命令、传输目标写入数据的总线。只读总线和只写总线没有依赖关系,能够并行地动作。
图6是实施方式1涉及的数据无损控制部160的结构图。
数据无损控制部160具有:传输类型设定寄存器161、缓冲器写入完毕指针设定寄存器162、缓冲器读取指针设定寄存器163、第1缓冲器准备完毕判断部164、第2缓冲器准备完毕判断部165、环绕次数一致判断部166、选择器167。
CPU200在传输类型设定寄存器161中设定传输类型。在传输类型设定寄存器161中设定的传输类型从数据无损控制部160向各控制部通知。
来自缓冲器写入控制部120的缓冲器写入完毕指针设定在缓冲器写入完毕指针设定寄存器162中。
来自缓冲器读取控制部140的缓冲器读取指针设定在缓冲器读取指针设定寄存器163中。
第1缓冲器准备完毕判断部164基于传输类型、缓冲器写入完毕指针、缓冲器读取指针,判断来自内部缓冲器130的数据读出准备是否完毕。在判断为数据读出准备完毕的情况下,判定为不会发生数据损坏,将传输目标可写入指示(指针)输出到选择器167。
第2缓冲器准备完毕判断部165基于从缓冲器写入周期计数部170得到的缓冲器写入周期计数值、以及从缓冲器读取周期计数部180得到的缓冲器读取周期计数值,判断来自内部缓冲器130的数据读出准备是否完毕。在判定为数据读出准备完毕的情况下,判定为不会发生数据损坏,将传输目标可写入指示(计数器)输出到选择器167。
环绕次数一致判断部166判断从缓冲器写入周期计数部170得到的缓冲器写入周期计数值,与从缓冲器读取周期计数部180得到的缓冲器读取周期计数值是否一致。
选择器167基于环绕次数一致判断部166的判断结果,对将从第1缓冲器准备完毕判断部164输出的传输目标可写入指示(指针)、以及从第2缓冲器准备完毕判断部165输出的传输目标可写入指示(计数器)中的哪一个作为传输目标可写入指示而输出进行选择。选择器167将所选择的传输目标可写入指示输出到缓冲器读取控制部140和传输目标写入控制部150。
图7是实施方式1涉及的缓冲器写入周期计数部170的结构图。
缓冲器写入周期计数部170具有环绕检测部171、环绕次数计数部172。
环绕检测部171在递减传输的情况下,检测缓冲器写入完毕指针是否发生环绕。
环绕次数计数部172在环绕检测部171检测出发生环绕的情况下,使缓冲器写入周期计数值+1。并且,环绕次数计数部172将进行了递加计数的缓冲器写入周期计数值输出到数据无损控制部160。
图8是实施方式1涉及的缓冲器读取周期计数部180的结构图。
缓冲器读取周期计数部180具有环绕检测部181、环绕次数计数部182。
环绕检测部181在递减传输的情况下,检测缓冲器读取指针是否发生环绕。
环绕次数计数部182在环绕检测部181检测出发生环绕的情况下,使缓冲器写入周期计数值+1。并且,环绕次数计数部182将进行了递加计数的缓冲器写入周期计数值输出到数据无损控制部160。
接着,对DMA传输控制装置100的动作进行说明。
图9是表示实施方式1涉及的DMA传输控制装置100整体的动作的流程图。
在S11中,CPU200在DMA传输控制装置100的寄存器中对DMA信息进行设定,并启动DMA传输控制装置100。然后,在S12中,DMA传输控制装置100的数据无损控制部160将在寄存器(传输类型设定寄存器161)中设定的传输类型(递增传输或者递减传输)通知到各控制部。在寄存器中设定了递增传输的情况下,使处理进入S13,在设定了递减传输的情况下,使处理进入S14。
在S13中,DMA传输控制装置100对存储器300进行递增传输。另一方面,在S14中,DMA传输控制装置100对存储器300进行递减传输。
并且,在S15中,在存在DMA传输停止要因时,DMA传输控制装置100停止传输动作,DMA传输停止要因是指完成了所指定的数据长度的数据传输等情况。
图10是表示实施方式1涉及的传输源读取控制部110的动作的流程图。另外,图10表示出图9中的S13或者S14中的传输源读取控制部110的动作。
在S21中,传输源读取控制部110基于从数据无损控制部160发送的传输类型,判断是递增传输或是递减传输。在判定为递增传输的情况下,使处理进入S22,在判定为递减传输的情况下,使处理进入S23。
在S22以及S23中,传输源读取控制部110生成一个突发读取命令作为传输源读取命令。如基于图3所说明,突发读取命令是从读取起始地址起按照地址值的升序每次读出单位量的数据,直到读出规定个数单位量的数据的命令。
在S22、S23之后,在S24中,传输源读取控制部110根据内部缓冲器130中是否存在空闲区域,而判定能否进行读取访问,其中,该空闲区域用于储存利用传输源读取命令读出的数据。在判定为能够读取访问的情况下(S24中为YES),使处理进入S25。另一方面,在判定为不能读取访问的情况下(S24中为NO),使处理返回S24,经过规定的时间后再次判定能否读取访问。
在S25中,传输源读取控制部110对存储器300发出生成的传输源读取命令,并从传输源区域读出数据。
并且,在S26中,传输源读取控制部110根据是否向存储器300发送了用于读出与传输大小相应的数据的传输源读取命令,而判定是否结束向存储器300的读取访问。在判断为结束读取访问的情况下,(S26中为YES),结束处理。另一方面,在判定为没有结束读取访问的情况下(S26中为NO),使处理返回S21。
另外,在S22中,传输源读取控制部110在递增方向生成突发读取命令。即,以突发读取命令的读取起始地址的地址值成为升序的方式生成突发读取命令。
另一方面,在S23中,传输源读取控制部110在递减方向生成突发读取命令。即,以突发读取命令的读取起始地址的地址值成为降序的方式生成突发读取命令。
图11是表示实施方式1涉及的缓冲器写入控制部120的动作的流程图。另外,图11表示出图9中的S13或者S14中的缓冲器写入控制部120的动作。
在S31中,缓冲器写入控制部120基于从数据无损控制部160发送的传输类型,判定是递增传输或是递减传输。在判断为递增传输的情况下,使处理进入S32,在判断为递减传输的情况下,使处理进入S33。
在S32以及S33中,缓冲器写入控制部120生成与1个传输源读取命令对应的1个突发写入命令作为缓冲器写入命令。该缓冲器写入命令是将与相应的传输源读取命令的读取起始地址对应的、内部缓冲器130中的地址作为写入起始地址,而从写入起始地址起按照地址值的升序写入数据的命令。
另外,此时,缓冲器写入控制部120从传输源读取控制部110取得:读取起始地址、发出要读出几个单位量数据的传输源读取命令等信息,并生成与传输源读取命令对应的缓冲器写入命令。或者,缓冲器写入控制部120也可以利用与传输源读取控制部110同样的逻辑,对读取起始地址、传输源读取控制部110发出要读出几个单位量数据的传输源读取命令等进行判定,并生成与传输源读取命令对应的缓冲器写入命令。
此外,在S33中,缓冲器写入控制部120在数据无损控制部160的缓冲器写入完毕指针设定寄存器162中设定缓冲器写入完毕指针。此时,缓冲器写入完毕指针表示下述地址值,即,将与利用该写入命令写入的数据大小相对应的地址值加到缓冲器写入指针表示的地址值上而得到的地址值。
在S32、S33之后,在S34中,缓冲器写入控制部120对内部缓冲器130发出缓冲器写入命令。由此,将利用1个传输源读取命令从传输源区域读出的数据写入内部缓冲器130。
并且,在S35中,缓冲器写入控制部120根据是否向内部缓冲器130发送了用于写入与传输大小相应的数据的缓冲器写入命令,从而判定向内部缓冲器130的写入访问是否结束。在判定为结束写入访问的情况下(S35中为YES),结束处理,在判定为没有结束写入访问的情况下(S35中为NO),使处理返回S31。
另外,在S35中,在判定为结束写入访问的情况下(S35中为YES),缓冲器写入控制部120在缓冲器写入完毕指针设定寄存器162中进行设定,将最后发出的突发写入命令中的写入起始地址作为缓冲器写入完毕指针,之后,结束处理。
图12是表示缓冲器读取控制部140的动作的流程图。另外,图12表示图9中的S13或者S14中的缓冲器读取控制部140的动作。
S41中,缓冲器读取控制部140基于从数据无损控制部160发送的传输类型,判断是递增传输或是递减传输。在判断为递增传输的情况下,使处理进入S42,在判断为递减传输的情况下,使处理进入S43。
在S42和S43中,缓冲器读取控制部140生成与1个传输目标写入命令对应的1个突发读取命令作为缓冲器读取命令。该缓冲器读取命令是将与相应的传输目标写入命令的写入起始地址对应的、内部缓冲器130中的地址作为读取起始地址,而从读取起始地址起按照地址值的升序读出数据的命令。
另外,此时,缓冲器读取控制部140从传输目标写入控制部150取得:写入起始地址、发出要写入几个单位量数据的传输目标写入命令等信息,并生成与传输目标写入命令对应的缓冲器读取命令。或者,缓冲器读取控制部140也可以利用与传输目标写入控制部150同样的逻辑,对写入起始地址、传输目标写入控制部150发出要写入几个单位量数据的传输目标写入命令等进行判定,并生成与传输目标写入命令对应的缓冲器读取命令。
此外,在S42和S43中,缓冲器读取控制部140在生成缓冲器读取命令时,在数据无损控制部160的缓冲器读取指针设定寄存器163中设定表示该缓冲器读取命令的读取起始地址的缓冲器读取指针。
在S42、S43之后,在S44中,缓冲器读取控制部140判定能否读取访问。缓冲器读取控制部140在(1)只有利用传输目标写入命令写入的数据被储存在内部缓冲器130,并且(2)在从数据无损控制部160接收到传输目标可写入指示的情况下,判定为能够读取访问。在判定为能够读取访问的情况下(S44中为YES),使处理进入S45。另一方面,在判定为不能够读取访问的情况下(S44中为NO),使处理返回S44,经过规定的时间后再次判定能否读取访问。
在S45中,缓冲器读取控制部140对内部缓冲器130发出缓冲器读取命令。由此,将利用1个传输目标写入命令而写入到传输目标区域的数据从内部缓冲器130读出,并发送到存储器300。
并且,在S46中,缓冲器读取控制部140根据是否向内部缓冲器130发送了用于读出与传输大小相应的数据的缓冲器读取命令,而判定是否结束向内部缓冲器130的读取访问。在判断为结束读取访问的情况下,(S46中为YES),结束处理,在判定为没有结束读取访问的情况下(S46中为NO),使处理返回S41。
图13是表示实施方式1涉及的传输目标写入控制部150的动作的流程图。另外,图13表示出图9中的S13或者S14中的传输目标写入控制部150的动作。
在S51中,传输目标写入控制部150基于从数据无损控制部160发送的传输类型,判定是递增传输或是递减传输。在判断为递增传输的情况下,使处理进入S52,在判断为递减传输的情况下,使处理进入S53。
在S52以及S53中,传输目标写入控制部150生成1个突发写入命令作为传输目标写入命令。如基于图3所说明,突发读取命令是从写入起始地址起按照地址值的升序每次写入单位量的数据,直到写入规定个数单位量的数据的命令。
在S52、S53之后,在S54中,传输目标写入控制部150利用与缓冲器读取控制部140判定能否读取访问的条件相同的条件而判定能够写入访问。即,传输目标写入控制部150在(1)只有利用传输目标写入命令写入的数据被储存在内部缓冲器130,并且(2)在从数据无损控制部160接收到传输目标可写入指示的情况下,判定为能够写入访问。在判定为能够写入访问的情况下(S54中为YES),使处理进入S55。另一方面,在判定为不能够写入访问的情况下(S54中为NO),使处理返回S54,经过规定的时间后再次判定能否写入访问。
在S55中,传输目标写入控制部150对存储器300发出生成的传输目标写入命令,并将数据写入传输目标区域。
并且,在S56中,传输目标写入控制部150根据是否向存储器300发送了用于写入与传输大小相应的数据的传输目标写入命令,而判定是否结束向存储器300的写入访问。在判定为结束写入访问的情况下,(S56中为YES),结束处理。另一方面,在判定为没有结束写入访问的情况下(S56中为NO),使处理返回S51,生成下一个传输目标写入命令,发送到存储器300,并写入数据。
另外,在S52中,传输目标写入控制部150在递增方向生成突发写入命令。即,以突发写入命令的写入起始地址的地址值成为升序的方式生成突发写入命令。
另一方面,在S53中,传输目标写入控制部150在递减方向生成突发写入命令。即,以突发写入命令的写入起始地址的地址值成为降序的方式生成突发写入命令。
图14是表示实施方式1涉及的数据无损控制部160的动作的流程图。另外,图14表示出图9中的S13或者S14中的数据无损控制部160的动作。
在S61中,数据无损控制部160根据在传输类型设定寄存器161中设定的传输类型,判定是递增传输或是递减传输。在判断为递减传输的情况下,使处理进入S62,在判断为递增传输的情况下,使处理进入S66。
在S62中,数据无损控制部160判定缓冲器写入周期计数部170计数的缓冲器写入周期计数值,是否大于缓冲器读取周期计数部180计数的缓冲器读取周期计数值。在缓冲器写入周期计数值不大于缓冲器读取周期计数值的情况下(S62中为NO),使处理进入S63,在缓冲器写入周期计数值大于缓冲器读取周期计数值的情况下(S62中为YES),使处理进入S66。
在S63中,数据无损控制部160判定缓冲器写入周期计数部170计数的缓冲器写入周期计数值,是否小于缓冲器读取周期计数部180计数的缓冲器读取周期计数值。在缓冲器写入周期计数值不小于缓冲器读取周期计数值的情况下(S63中为NO),使处理进入S64。在缓冲器写入周期计数值小于缓冲器读取周期计数值的情况下(S63中为YES),使处理进入S65。
在S64中,数据无损控制部160判定在缓冲器写入完毕指针设定寄存器162中设定的缓冲器写入完毕指针所表示的地址值,是否小于或等于在缓冲器读取指针设定寄存器163中设定的缓冲器读取指针所表示的地址值。在缓冲器写入完毕指针所表示的地址值大于缓冲器读取指针所表示的地址值的情况下(S64中为NO),使处理进入S65。另一方面,在缓冲器写入完毕指针所表示的地址值小于或等于缓冲器读取指针所表示的地址值的情况下(S64中为YES),使处理进入S66。
在S65中,数据无损控制部160判定为缓冲器读取的准备未完毕,不发送传输目标可写入指示。另一方面,在S66中,数据无损控制部160判定为缓冲器读取的准备已完毕,将传输目标可写入指示发送到缓冲器读取控制部140和传输目标写入控制部150。
在S67中,数据无损控制部160根据与传输大小相应的数据的传输是否完毕,而判定是否结束处理。在判断为结束处理的情况下(S67中为YES),结束处理。另一方面,在判定为没有结束处理的情况下(S67中为NO),使处理返回S61,再次判定缓冲器的准备是否完毕。
即,在递增传输的情况下,始终判定为缓冲器准备完毕。
另一方面,在递减传输的情况下,
在(1)“缓冲器写入周期计数值>缓冲器读取周期计数值”成立时,以及在(2)“缓冲器写入周期计数值=缓冲器读取周期计数值”成立,并且“缓冲器写入完毕指针所表示的地址值≤缓冲器读取指针所表示的地址值”成立时,判定为缓冲器准备完毕。
图15是表示实施方式1涉及的缓冲器写入周期计数部170的动作的流程图。另外,图15表示出图9中的S13或者S14中的缓冲器写入周期计数部170的动作。
在S71中,缓冲器写入周期计数部170基于从数据无损控制部160发送的传输类型,判定是递增传输或是递减传输。在判断为递减传输的情况下,使处理进入S72,在判断为递增传输的情况下,使处理进入S74。
在S72中,缓冲器写入周期计数部170判定缓冲器写入控制部120生成的缓冲器写入完毕指针是否发生环绕。在判定为发生环绕的情况下(S72中为YES),使处理进入S73。在判定为没有发生环绕的情况下(S72中为NO),使处理进入S74。
在S73中,缓冲器写入周期计数部170使计数器+1。
在S74中,缓冲器写入周期计数部170根据与传输大小相应的数据的传输是否完毕,而判定是否结束处理。在判断为结束处理的情况下(S74中为YES),结束处理。另一方面,在判定为没有结束处理的情况下(S74中为NO),使处理返回S71,再次判定是否对计数器递加计数。
图16是表示实施方式1涉及的缓冲器读取周期计数部180的动作的流程图。另外,图16表示出图9中的S13或者S14中的缓冲器读取周期计数部180的动作。
在S81中,缓冲器读取周期计数部180基于从数据无损控制部160发送的传输类型,判定是递增传输或是递减传输。在判断为递减传输的情况下,使处理进入S82,在判断为递增传输的情况下,使处理进入S84。
在S82中,缓冲器读取周期计数部180判定缓冲器读取控制部140生成的缓冲器读取指针是否发生环绕。在判定为发生环绕的情况下(S82中为YES),使处理进入S83。在判定为没有发生环绕的情况下(S82中为NO),使处理进入S84。
在S83中,缓冲器读取周期计数部180使计数器+1。
在S84中,缓冲器读取周期计数部180根据与传输大小相应的数据的传输是否完毕,而判定是否结束处理。在判断为结束处理的情况下(S84中为YES),结束处理。另一方面,在判定为没有结束处理的情况下(S84中为NO),使处理返回S81,再次判定是否对计数器递加计数。
接着,对DMA传输控制装置100的具体的动作例进行说明。
图17到图21是表示,在对比内部缓冲器130的大小大的大小的数据进行DMA传输且缓冲器写入完毕指针先发生环绕时,DMA传输期间中的数据的变化的图。即,图17到图21是表示成为“缓冲器写入周期计数值>缓冲器读取周期计数值”的情况中的数据的变化的图。
在图17到图21的例子中,将内部缓冲器130的大小设为64字节,1单元格表示2字节。此外,将图17到图21的传输源和传输目标设为相同的设备,1单元格表示2字节。
在图17到图21的例子中,将传输源的地址00h~58h的区域中的数据递减传输到传输目标的地址20h到78h的区域中。DMA传输控制装置100按照读取1(4突发读取)、读取2(4突发读取)、读取3(4突发读取)的顺序向传输源发出。此外,DMA传输控制装置100按照写入1(4突发写入)、写入2(4突发写入)、写入3(4突发写入)的顺序向传输目标发出。
图17到图21的传输源的右侧所示的读取顺序表示DMA传输控制装置100取得读取数据的顺序,按照R1~R12的顺序接收读取数据,按照同样的顺序写入内部缓冲器130。传输目标的右侧所示的写入顺序表示DMA传输控制装置100向传输目标输出数据的顺序,按照W1~W12的顺序从内部缓冲器130接收写入数据,按照同样的顺序写入传输目标。
图17到图21的缓冲器写入完毕指针表示在内部缓冲器130中数据准备已经完毕的区域,缓冲器读取指针表示在内部缓冲器130中读取的区域。缓冲器写入周期计数器表示缓冲器写入完毕指针的环绕次数,缓冲器读取周期计数器表示缓冲器读取指针的环绕次数。两指针在每次发生环绕时,均进行+1计数。
首先,在S11中,在DMA传输控制装置100中,对以下的设定信息进行设定。
传输源地址:00h
传输目标地址:20h
传输大小:96字节
传输类型:递减传输
接着,在S12中,通过数据无损控制部160将递减传输通知到各控制部以及各计数部。并且,进入S14,执行通过递减传输进行的DMA传输。
在图17所示的过程1中,传输源读取控制部110对传输源的地址40h~58h的区域发出读取1(4突发读取)。如果从传输源接收到读取数据,则缓冲器写入控制部120将与读取1对应的缓冲器写入1向内部缓冲器130发出,从而将读取数据写入地址20h~38h的区域。缓冲器写入控制部120在缓冲器写入1完毕时,将缓冲器写入完毕指针更新到20h。
缓冲器读取控制部140将缓冲器读取指针设定到20h(将要利用向传输目标发出的写入1(4突发写入)而输出的数据的读出区域)。
在图18所示的过程2中,传输源读取控制部110对传输源的地址20h~38h的区域发出读取2(4突发读取)。如果从传输源接收到读取数据,则缓冲器写入控制部120将与读取2对应的缓冲器写入2向内部缓冲器130发出,从而将读取数据写入地址00h~18h的区域。缓冲器写入控制部120在缓冲器写入2完毕时,将缓冲器写入完毕指针更新到00h。
与上述的传输源读取并行地,数据无损控制部160检测到“缓冲器写入周期计数值=缓冲器读取周期计数值”并且“缓冲器写入完毕指针值≤缓冲器读取指针值”,输出传输目标可写入指示。缓冲器读取控制部140如果检测出传输目标可写入指示,则对内部缓冲器130的地址20h~38h的区域发出缓冲器读取1,从而读出传输目标写入数据。传输目标写入控制部150对传输目标的地址60h~78h的区域发出写入1(4突发写入)。
在图19所示的过程3中,传输源读取控制部110对传输源的地址00h~18h的区域发出读取3(4突发读取)。如果从传输源接收到读取数据,则缓冲器写入控制部120将与读取3对应的缓冲器写入3向内部缓冲器130发出,从而将读取数据写入地址20h~38h的区域。在缓冲器写入3完毕时,将缓冲器写入完毕指针更新到20h,发生环绕。缓冲器写入周期计数部170检测出缓冲器写入完毕指针的环绕,将缓冲器写入周期计数值+1。
缓冲器读取控制部140在缓冲器读取1完毕时,将缓冲器读取指针更新到00h。数据无损控制部160检测出“缓冲器写入周期计数值>缓冲器读取周期计数值”,判定为数据准备完毕,输出传输目标可写入指示。缓冲器读取控制部140在检测到传输目标可写入指示时,对内部缓冲器130的地址00h~18h的区域发出缓冲器读取2。传输目标写入控制部150对传输目标的地址40h~58h的区域发出写入2(4突发写入)。
在图20所示的过程4中,缓冲器读取控制部140在缓冲器读取2完毕时,将缓冲器读取指针更新到20h,发生环绕。缓冲器读取周期计数部180检测出环绕,将缓冲器读取周期计数值+1。数据无损控制部160检测到“缓冲器写入周期计数值=缓冲器读取周期计数值”并且“缓冲器写入完毕指针值≤缓冲器读取指针值”,判定为数据准备完毕,输出传输目标可写入指示。缓冲器读取控制部140在检测到传输目标可写入指示时,对内部缓冲器130的地址20h~38h的区域发出缓冲器读取3。传输目标写入控制部150对传输目标的地址20h~38h的区域发出写入3(4突发写入)。
在图21所示的过程5中,表示出DMA传输结果。如传输目标所示,在没有发生数据损坏的状态下数据的传输完毕。
图22到图26是表示,在对比内部缓冲器130的大小大的大小的数据进行DMA传输且缓冲器读取指针先发生环绕时,DMA传输期间中的数据的变化的图。即,图22到图26是表示成为“缓冲器写入周期计数值<缓冲器读取周期计数值”的情况中的数据的变化的图。
在图22到图26的例子中,将内部缓冲器130的大小设为64字节,1单元格表示2字节。此外,将图22到图26的传输源和传输目标设为相同的设备,1单元格表示2字节。
在图22到图26的例子中,将传输源的地址08h~58h的区域中的数据递减传输到传输目标的地址20h到70h的区域中。DMA传输控制装置100按照读取1(4突发读取)、读取2(4突发读取)、读取3(3突发读取)的顺序向传输源发出。此外,DMA传输控制装置100按照写入1(3突发写入)、写入2(4突发写入)、写入3(4突发写入)的顺序向传输目标发出。另外,在读取目标、写入目标的地址跨越32字节边界的情况下,作为尾数处理,发出小于或等于3突发的突发传输命令。
图22到图26的传输源的右侧所示的读取顺序表示DMA传输控制装置100取得读取数据的顺序,按照R1~R11的顺序接收读取数据,按照同样的顺序写入内部缓冲器130。传输目标的右侧所示的写入顺序表示DMA传输控制装置100向传输目标输出数据的顺序,按照W1~W11的顺序从内部缓冲器130接收写入数据,按照同样的顺序写入传输目标。
图22到图26的缓冲器写入完毕指针表示在内部缓冲器130中数据准备已经完毕的区域,缓冲器读取指针表示在内部缓冲器130中读取的区域。缓冲器写入周期计数器表示缓冲器写入完毕指针的环绕次数,缓冲器读取周期计数器表示缓冲器读取指针的环绕次数。两指针在每次发生环绕时,均进行+1计数。
首先,在S11中,在DMA传输控制装置100中,对以下的设定信息进行设定。
传输源地址:08h
传输目标地址:20h
传输大小:88字节
传输类型:递减传输
接着,在S12中,通过数据无损控制部160将递减传输通知到各控制部以及各计数部。并且,进入S14,执行通过递减传输进行的DMA传输。
在图22所示的过程1中,传输源读取控制部110对传输源的地址40h~58h的区域发出读取1(4突发读取)。如果从传输源接收到读取数据,则缓冲器写入控制部120将与读取1对应的缓冲器写入1向内部缓冲器130发出,从而将读取数据写入地址20h~38h的区域。缓冲器写入控制部120在缓冲器写入1完毕时,将缓冲器写入完毕指针更新到20h。
缓冲器读取控制部140将缓冲器读取指针设定到将要利用向传输目标发出的写入1(3突发写入)而输出的数据的读出区域(28h)。数据无损控制部160检测到“缓冲器写入周期计数值=缓冲器读取周期计数值”并且“缓冲器写入完毕指针值≤缓冲器读取指针值”,从而输出传输目标可写入指示。缓冲器读取控制部140在检测到传输目标可写入指示时,对内部缓冲器130的地址28h~38h的区域发出缓冲器读取1,从而读出传输目标写入数据。传输目标写入控制部150对传输目标的地址60h~70h的区域发出写入1(3突发写入)。
在图23所示的过程2中,传输源读取控制部110对传输源的地址20h~38h的区域发出读取2(4突发读取)。如果从传输源接收到读取数据,则缓冲器写入控制部120将与读取2对应的缓冲器写入2向内部缓冲器130发出,从而将读取数据写入地址00h~18h的区域。缓冲器写入控制部120在缓冲器写入2完毕时,将缓冲器写入完毕指针更新到00h。
缓冲器读取控制部140在缓冲器读取1完毕时,将缓冲器读取指针更新到08h。数据无损控制部160检测出“缓冲器写入周期计数值=缓冲器读取周期计数值”并且“缓冲器写入完毕指针值≤缓冲器读取指针值”,输出传输目标可写入指示。缓冲器读取控制部140在检测到传输目标可写入指示时,对内部缓冲器130的地址08h~20h的区域发出缓冲器读取2,从而读出传输目标写入数据。传输目标写入控制部150对传输目标的地址40h~58h的区域发出写入2(4突发写入)。
在图24所示的过程3中,传输源读取控制部110对传输源的地址08h~18h的区域发出读取3(3突发读取)。如果从传输源接收到读取数据,则缓冲器写入控制部120将与读取3对应的缓冲器写入3向内部缓冲器130发出,从而将读取数据写入地址28h~38h的区域。此处,缓冲器写入3未完毕,没有对缓冲器写入完毕指针进行更新。
由于缓冲器读取2完毕,所以缓冲器读取控制部140将缓冲器读取指针更新到28h,发生环绕。缓冲器读取周期计数部180检测出环绕,将缓冲器读取周期计数值+1。数据无损控制部160检测出“缓冲器写入周期计数值<缓冲器读取周期计数值”,判断为数据准备未完毕,不输出传输目标可写入指示(不允许传输目标写入)。由于没有检测出传输目标可写入指示,所以缓冲器读取控制部140不发出针对内部缓冲器130的下一个缓冲器读取。传输目标写入控制部150也同样,不对传输目标发出下一个写入3(4突发写入)。
在图25所示的过程4中,缓冲器写入3完毕。并且,缓冲器写入控制部120将缓冲器写入完毕指针更新到28h,发生环绕。缓冲器写入周期计数部170检测出缓冲器写入完毕指针的环绕,将缓冲器写入周期计数值+1。
数据无损控制部160检测出“缓冲器写入周期计数值=缓冲器读取周期计数值”并且“缓冲器写入完毕指针值≤缓冲器读取指针值”,判定为数据准备完毕,输出传输目标可写入指示。缓冲器读取控制部140在检测出传输目标可写入指示时,对内部缓冲器130的地址28h~00h的区域发出缓冲器读取3从而读出传输目标写入数据。传输目标写入控制部150对传输目标的地址20h~38h的区域发出写入3(4突发写入)。
在图26所示的过程5中,表示出DMA传输结果。如传输目标所示,在没有发生数据损坏的状态下数据的传输完毕。
图27到图31是表示,在对比内部缓冲器130的大小小的大小的数据进行DMA传输且两指针没有发生环绕时,DMA传输期间中的数据的变化的图。即,图27到图31是表示成为“缓冲器写入周期计数值=缓冲器读取周期计数值”的情况中的数据的变化的图。另外,此处,为了简化,列举出两指针没有环绕时作为具体例,但是在两指针发生相同次数的环绕的情况下也能得到同样的效果。
在图27到图31的例子中,将内部缓冲器130的大小设为64字节,1单元格表示2字节。此外,将图27到图31的传输源和传输目标设为相同的设备,1单元格表示2字节。
在图27到图31的例子中,将传输源的地址00h~30h的区域中的数据递减传输到传输目标的地址18h~48h的区域中。DMA传输控制装置100按照读取1(3突发读取)、读取2(4突发读取)的顺序向传输源发出。DMA传输控制装置100按照写入1(4突发写入)、写入2(3突发写入)的顺序向传输目标发出。另外,在读取目标、写入目标的地址跨越32字节边界的情况下,作为尾数处理,发出小于或等于3突发的突发传输命令。
图27到图31的传输源的右侧所示的读取顺序表示DMA传输控制装置100取得读取数据的顺序,按照R1~R7的顺序接收读取数据,按照同样的顺序写入内部缓冲器130。传输目标的右侧所示的写入顺序表示DMA传输控制装置100向传输目标输出数据的顺序,按照W1~W7的顺序从内部缓冲器130接收写入数据,按照同样的顺序写入传输目标。
图27到图31的缓冲器写入完毕指针表示在内部缓冲器130中数据准备已经完毕的区域,缓冲器读取指针表示在内部缓冲器130中读取的区域。缓冲器写入周期计数器表示缓冲器写入完毕指针的环绕次数,缓冲器读取周期计数器表示缓冲器读取指针的环绕次数。两指针在每次发生环绕时,均进行+1计数。
首先,在S11中,在DMA传输控制装置100中,对以下的设定信息进行设定。
传输源地址:00h
传输目标地址:30h
传输大小:56字节
传输类型:递减传输
接着,在S12中,通过数据无损控制部160将递减传输通知到各控制部以及各计数部。并且,进入S14,执行通过递减传输进行的DMA传输。
在图27所示的过程1中,传输源读取控制部110对传输源的地址20h~30h的区域发出读取1(3突发读取)。如果从传输源接收到读取数据,则缓冲器写入控制部120将与读取1对应的缓冲器写入1向内部缓冲器130发出,从而将读取数据写入地址28h~38h的区域。缓冲器写入控制部120在缓冲器写入1完毕时,将缓冲器写入完毕指针更新到28h。
缓冲器读取控制部140将缓冲器读取指针设定到将要利用向传输目标发出的写入1(4突发写入)而输出的数据的读出区域(20h)。
在图28所示的过程2中,传输源读取控制部110对传输源的地址00h~18h的区域发出读取2(4突发读取)。如果从传输源接收到读取数据,则缓冲器写入控制部120将与读取2对应的缓冲器写入2向内部缓冲器130发出,将读取数据写入地址08h~20h的区域。此处,缓冲器写入2未完毕,缓冲器写入控制部120没有对缓冲器写入完毕指针进行更新。
数据无损控制部160检测出“缓冲器写入周期计数值=缓冲器读取周期计数值”并且“缓冲器写入完毕指针值>缓冲器读取指针值”,判断为数据准备未完毕,不输出传输目标可写入指示。由于没有检测出传输目标可写入指示,所以缓冲器读取控制部140不发出缓冲器读取1。传输目标写入控制部150也同样,不发出突发写入1。另外,在过程2的状态下,虽然存在有下一个写入1所必需的数据量(与4突发相应),但是必需的数据种类(13~28的数据)没有齐备,所以判断为数据准备未完毕。
在图29所示的过程3中,缓冲器写入2完毕,缓冲器写入控制部120将缓冲器写入完毕指针更新到08h。
数据无损控制部160检测出“缓冲器写入周期计数值=缓冲器读取周期计数值”并且“缓冲器写入完毕指针值≤缓冲器读取指针值”,判定为数据准备完毕,输出传输目标可写入指示。缓冲器读取控制部140在检测出传输目标可写入指示时,对内部缓冲器130的地址20h~38h的区域发出缓冲器读取1,从而读出传输目标写入数据。传输目标写入控制部150对传输目标的地址30h~48h的区域发出写入1(4突发写入)。
在图30所示的过程4中,缓冲器读取控制部140在缓冲器读取1完毕时,将缓冲器读取指针更新到08h。数据无损控制部160检测到“缓冲器写入周期计数值=缓冲器读取周期计数值”并且“缓冲器写入完毕指针值≤缓冲器读取指针值”,判定为数据准备完毕,输出传输目标可写入指示。缓冲器读取控制部140在检测到传输目标可写入指示时,对内部缓冲器130的地址08h~18h的区域发出缓冲器读取2,从而读出传输目标写入数据。传输目标写入控制部150对传输目标的地址18h~28h的区域发出写入2(3突发写入)。
在图31所示的过程5中,表示出DMA传输结果。如传输目标所示,在没有发生数据损坏的状态下数据的传输完毕。
实施方式2
在实施方式1中,CPU200指定进行递增传输、或是进行递减传输。即,需要在CPU200侧判断应该进行递增传输、或是应该进行递减传输。
在实施方式2中,对DMA传输控制装置100根据传输源区域和传输目标区域重叠的状态,适当地判断应该进行递增传输、或是应该进行递减传输的方法进行说明。
实施方式2涉及的DMA传输控制装置100只有数据无损控制部160的结构与实施方式1涉及的DMA传输控制装置100不同。
图32是实施方式2涉及的数据无损控制部160的结构图。实施方式2涉及的数据无损控制部160不具有实施方式1涉及的数据无损控制部160所具有的传输类型设定寄存器161。取而代之,实施方式2涉及的数据无损控制部160具有:数据无损功能ON/OFF设定寄存器191、传输源地址设定寄存器192、传输目标地址设定寄存器193、传输大小设定寄存器194、传输类型判断部195。
在数据无损功能ON/OFF设定寄存器191中,对将数据无损功能设为ON(有效)、或是设为OFF(无效)进行设定。
传输源区域的起始地址设定在传输源地址设定寄存器192中。传输目标区域的起始地址设定在传输目标地址设定寄存器193中。传输数据的大小设定在传输大小设定寄存器194中。
传输类型判断部195在数据无损功能ON/OFF设定寄存器191中设定为ON的情况下,如以下所述地对传输类型进行判断,并通知到各控制部。
(A)传输源区域和传输目标区域不重叠的情况下,判断为递增传输。
(B)传输源区域和传输目标区域重叠的情况下,如以下的(a)到(c)进行判断。
(a)如果传输源区域和传输目标区域是完全相同的区域,则判断为递增传输。
(b)如果在传输源地址设定寄存器192中设定的地址(传输源区域的起始地址)的地址值,小于在传输目标地址设定寄存器193中设定的地址(传输目标区域的起始地址)的地址值,则判断为递减传输。
(c)如果在传输源地址设定寄存器192中设定的地址(传输源区域的起始地址)的地址值,大于在传输目标地址设定寄存器193中设定的地址(传输目标区域的起始地址)的地址值,则判断为递增传输。
另一方面,传输类型判断部195在数据无损功能ON/OFF设定寄存器191中设定为OFF的情况下,始终向各控制部通知递增传输。
图33是表示实施方式2涉及的DMA传输控制装置100整体的动作的流程图。
S71与图9的S11相同。此时,在寄存器中对将数据无损功能设为ON、或是设为OFF进行设定。
在S72中,数据无损控制部160对寄存器(数据无损功能ON/OFF设定寄存器191)的设定是否是ON进行判定。在是ON的情况下,使处理进入S73,在是OFF的情况下,将递增传输向各控制部通知,并使处理进入S75。
在S73中,对数据无损控制部160是递增传输、或是递减传输进行判定。在是递减传输的情况下,将递减传输向各控制部通知,并使处理进入S74。另一方面,在是递增传输的情况下,将递增传输向各控制部通知,并使处理进入S75。
在S74中,DMA传输控制装置100对存储器300进行递减传输。另一方面,在S75中,DMA传输控制装置100对存储器300进行递增传输。
并且,在S76中,在存在DMA传输停止要因时,DMA传输控制装置100停止传输动作,DMA传输停止要因是指完成了所指定的数据长度的数据传输等情况。
如上述地,根据实施方式2涉及的DMA传输控制装置100,CPU200无需指示传输类型,就能够在DMA传输控制装置100侧判断了适当的传输类型之后,进行数据传输。
另外,在以上的说明中,各控制部例如由电路等构成,“~部”也可以认为是“~电路”。
标号的说明
10DMA传输系统、100DMA传输控制装置、110传输源读取控制部、120缓冲器写入控制部、130内部缓冲器、140缓冲器读取控制部、150传输目标写入控制部、160数据无损控制部、161传输类型设定寄存器、162缓冲器写入完毕指针设定寄存器、163缓冲器读取指针设定寄存器、164第1缓冲器准备完毕判断部、165第2缓冲器准备完毕判断部、166环绕次数一致判断部、167选择器、170缓冲器写入周期计数部、171环绕检测部、172环绕次数计数部、180缓冲器读取周期计数部、181环绕检测部、182环绕次数计数部、191数据无损功能ON/OFF设定寄存器、192传输源地址设定寄存器、193传输目标地址设定寄存器、194传输大小设定寄存器、195传输类型判断部、200CPU、300存储器。

Claims (6)

1.一种数据传输装置,其是将在传输源区域中存储的数据突发传输到传输目标区域的数据传输装置,其特征在于,具有:
缓冲器写入控制部,其取得在所述传输源区域中存储的数据,并写入环形缓冲器;
缓冲器读取控制部,其从所述环形缓冲器读出所述缓冲器写入控制部写入的数据;
传输目标写入控制部,其将所述缓冲器读取控制部读出的数据写入所述传输目标区域,在所述传输源区域和所述传输目标区域重叠的情况下,生成用于将数据按照升序方向写入对所述传输目标区域进行分割而得到的各分割区域的突发写入命令,并且,在所述传输源区域和所述传输目标区域在地址的升序方向重叠的情况下,执行按照所述分割区域的起始地址从大到小的顺序进行每个所述分割区域的写入的递减传输;以及
数据无损控制部,其在所述传输目标写入控制部执行所述递减传输的情况下,根据所述缓冲器写入控制部发生环绕的次数和所述缓冲器读取控制部发生环绕的次数之间的大小关系,判定是否允许向所述传输目标区域写入数据,
所述传输目标写入控制部,在所述数据无损控制部判定为允许写入的情况下,输出所述递减传输的突发写入命令。
2.根据权利要求1所述的数据传输装置,其特征在于,
所述数据无损控制部,进一步根据所述缓冲器写入控制部已完成了数据写入的所述环形缓冲器中的地址值、和所述缓冲器读取控制部将要读出数据的所述环形缓冲器中的地址值之间的大小关系,判定是否允许向所述传输目标区域写入数据。
3.根据权利要求2所述的数据传输装置,其特征在于,
所述数据传输装置还具有传输源读取控制部,其以读取起始地址的地址值成为降序的方式生成多个读取命令并依次输出,其中,该读取命令从所述读取起始地址起按照地址值的升序每次读出单位量的数据,直到读出规定个数单位量的数据,
所述缓冲器写入控制部,对于所述传输源读取控制部输出的各读取命令,按照所述传输源读取控制部输出的读取命令的顺序,每次取得单位量的利用该读取命令读出的数据,然后从与该读取命令中的读取起始地址对应的环形缓冲器中的地址开始按照地址值的升序进行写入,并且,在利用该读取命令读出的数据向所述环形缓冲器的写入结束的情况下,在与所述读取起始地址对应的环形缓冲器中的地址处设定写入完毕指针,
所述传输目标写入控制部,以写入起始地址的地址值成为降序的方式生成多个写入命令,并依次输出,其中,该写入命令从所述写入起始地址起按照地址值的升序每次写入单位量的数据,直到写入规定个数单位量的数据,
所述缓冲器读取控制部,在与所述传输目标写入控制部接下来输出的写入命令中的写入起始地址对应的、所述环形缓冲器中的地址处设定读取指针,
所述数据无损控制部,在所述缓冲器写入控制部发生环绕的次数多于所述缓冲器读取控制部发生环绕的次数的情况下,以及在所述缓冲器写入控制部发生环绕的次数和所述缓冲器读取控制部发生环绕的次数相同、且被设定了所述读取指针的地址的地址值大于或等于被设定了所述写入完毕指针的地址的地址值的情况下,判定为允许写入,
所述缓冲器读取控制部,在所述数据无损控制部判定为允许写入的情况下,从被设定了所述读取指针的地址开始,按照地址值的升序每次读出单位量的数据,
所述传输目标写入控制部,在所述数据无损控制部判定为允许写入的情况下,输出下一个写入命令。
4.根据权利要求3所述的数据传输装置,其特征在于,
所述数据无损控制部,在所述传输源区域和所述传输目标区域在地址的升序方向重叠的情况下判定为进行递减传输,在其它情况下,判定为进行递增传输,
所述传输源读取控制部,在所述数据无损控制部判定为进行递减传输的情况下,以所述读取起始地址的地址值成为降序的方式生成多个所述读取命令,并依次输出,在所述数据无损控制部判定为进行递增传输的情况下,以所述读取起始地址的地址值成为升序的方式生成多个所述读取命令,并依次输出,
所述传输目标写入控制部,在所述数据无损控制部判定为进行递减传输的情况下,以所述写入起始地址的地址值成为降序的方式生成多个所述写入命令,并依次输出,在所述数据无损控制部判定为进行递增传输的情况下,以所述写入起始地址的地址值成为升序的方式生成多个所述写入命令,并依次输出,
所述数据无损控制部,如果判定为进行递减传输,则在所述缓冲器写入控制部发生环绕的次数多于所述缓冲器读取控制部发生环绕的次数的情况下,以及在所述缓冲器写入控制部发生环绕的次数和所述缓冲器读取控制部发生环绕的次数相同、并且被设定了所述读取指针的地址的地址值大于或等于被设定了所述写入完毕指针的地址的地址值的情况下,判定为允许写入,如果判定为进行递增传输,则与被设定了所述读取指针和所述写入完毕指针的地址无关,判定为允许写入。
5.根据权利要求1至4中任一项所述的数据传输装置,其特征在于,
所述缓冲器写入控制部经由读取用总线取得由读取命令读出的数据,
所述缓冲器读取控制部经由与所述读取用总线不同的写入用总线将从所述环形缓冲器读出的数据发送到传输目标区域。
6.一种数据传输方法,其是将在传输源区域中存储的数据突发传输到传输目标区域的数据传输方法,其特征在于,包括:
缓冲器写入控制步骤,其取得在所述传输源区域中存储的数据,并写入环形缓冲器;
缓冲器读取控制步骤,其从所述环形缓冲器读出在所述缓冲器写入控制步骤中写入的数据;
传输目标写入控制步骤,其将在所述缓冲器读取控制步骤中读出的数据写入所述传输目标区域,在所述传输源区域和所述传输目标区域重叠的情况下,生成用于将数据按照升序方向写入对所述传输目标区域进行分割而得到的各分割区域的突发写入命令,并且,在所述传输源区域和所述传输目标区域在地址的升序方向重叠的情况下,执行按照所述分割区域的起始地址从大到小的顺序进行每个所述分割区域的写入的递减传输;以及
数据无损控制步骤,其在所述传输目标写入控制步骤中执行所述递减传输的情况下,根据在所述缓冲器写入控制步骤中发生环绕的次数和在所述缓冲器读取控制步骤中发生环绕的次数之间的大小关系,判定是否允许向所述传输目标区域写入数据,
在所述传输目标写入控制步骤中,在所述数据无损控制步骤中判定为允许写入的情况下,输出所述递减传输的突发写入命令。
CN201380011490.9A 2012-02-29 2013-02-04 数据传输装置、数据传输方法及数据传输程序 Expired - Fee Related CN104145255B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012043994 2012-02-29
JP2012-043994 2012-02-29
PCT/JP2013/052451 WO2013129031A1 (ja) 2012-02-29 2013-02-04 データ転送装置、データ転送方法及びデータ転送プログラム

Publications (2)

Publication Number Publication Date
CN104145255A CN104145255A (zh) 2014-11-12
CN104145255B true CN104145255B (zh) 2017-03-08

Family

ID=49082235

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380011490.9A Expired - Fee Related CN104145255B (zh) 2012-02-29 2013-02-04 数据传输装置、数据传输方法及数据传输程序

Country Status (7)

Country Link
US (1) US9727504B2 (zh)
JP (1) JP5769868B2 (zh)
KR (1) KR101593865B1 (zh)
CN (1) CN104145255B (zh)
DE (1) DE112013001213T5 (zh)
TW (1) TWI524267B (zh)
WO (1) WO2013129031A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10841297B2 (en) 2013-12-16 2020-11-17 Amazon Technologies, Inc. Providing multi-factor authentication credentials via device notifications
US10362026B2 (en) 2013-12-16 2019-07-23 Amazon Technologies, Inc. Providing multi-factor authentication credentials via device notifications
US9473491B1 (en) * 2014-12-16 2016-10-18 Amazon Technologies, Inc. Computing device with integrated authentication token
US10866711B1 (en) 2013-12-16 2020-12-15 Amazon Technologies, Inc. Providing account information to applications
US9819673B1 (en) 2015-06-24 2017-11-14 Amazon Technologies, Inc. Authentication and authorization of a privilege-constrained application
US9864852B2 (en) 2015-07-27 2018-01-09 Amazon Technologies, Inc. Approaches for providing multi-factor authentication credentials
TWI615770B (zh) * 2015-11-17 2018-02-21 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
JP6206524B2 (ja) * 2016-03-14 2017-10-04 日本電気株式会社 データ転送装置、データ転送方法、プログラム
US10162751B2 (en) * 2016-04-26 2018-12-25 Macronix International Co., Ltd. Nested wrap-around memory access with fixed offset
US20180018999A1 (en) * 2016-07-12 2018-01-18 Mediatek Inc. Video processing system using ring buffer and racing-mode ring buffer access control scheme
CN112098770A (zh) * 2020-08-20 2020-12-18 深圳市宏旺微电子有限公司 针对动态耦合故障模拟极端环境下的测试方法和装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61214047A (ja) 1985-03-20 1986-09-22 Fujitsu Ltd メモリデ−タ転送回路
JPH083850B2 (ja) * 1985-03-20 1996-01-17 キヤノン株式会社 画像処理装置
JP2703417B2 (ja) 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
JP3176236B2 (ja) * 1994-11-30 2001-06-11 株式会社ソニー・コンピュータエンタテインメント 信号再生装置及び信号再生方法
JPH08292874A (ja) 1995-04-25 1996-11-05 Nec Eng Ltd メモリ状態検出回路
JP3181515B2 (ja) * 1996-09-11 2001-07-03 株式会社沖データ データ転送方法及びその方法を用いたデータ転送装置
JPH10116245A (ja) 1996-10-14 1998-05-06 Fujitsu Ltd Dma制御装置
US6311237B1 (en) 1998-01-05 2001-10-30 Canon Kabushiki Kaisha System including single host buffer for transmit and receive data and reception buffer in interface device having stand-by area for use by host buffer when abnormal state is detected
JP3768668B2 (ja) 1998-01-05 2006-04-19 キヤノン株式会社 インターフェース装置及び制御方法及び印刷装置
JP4292598B2 (ja) 1998-08-26 2009-07-08 富士通マイクロエレクトロニクス株式会社 Fifo回路及びマルチプロセッサシステム
US6571301B1 (en) 1998-08-26 2003-05-27 Fujitsu Limited Multi processor system and FIFO circuit
JP3765931B2 (ja) * 1998-10-15 2006-04-12 富士通株式会社 バッファ制御方法及びバッファ制御装置
EP1152342B1 (en) * 1999-01-12 2009-01-07 Fujitsu Limited Access control device and method for controlling access to recording medium
JP2000293480A (ja) 1999-04-12 2000-10-20 Oki Data Corp Dma転送装置
JP2001142841A (ja) 1999-11-12 2001-05-25 Nec Corp Dma転送制御方式
JP3461327B2 (ja) 2000-05-17 2003-10-27 Necマイクロシステム株式会社 トレースメモリに制限されない長時間トレースシステム
JP2002342262A (ja) 2001-05-11 2002-11-29 Fujitsu Ltd ダイレクトメモリアクセス制御装置およびダイレクトメモリアクセス制御方法
JP4749657B2 (ja) * 2003-03-20 2011-08-17 パナソニック株式会社 Dma制御装置
US7519747B1 (en) * 2003-09-11 2009-04-14 Xilinx, Inc. Variable latency buffer and method of operation
US20050289254A1 (en) * 2004-06-28 2005-12-29 Chih-Feng Chien Dynamic buffer allocation method
US20060129714A1 (en) 2004-12-10 2006-06-15 Fujitsu Limited Method and apparatus for transferring data
JP4451837B2 (ja) 2004-12-10 2010-04-14 富士通株式会社 データ転送装置およびデータ転送方法
US20070204076A1 (en) * 2006-02-28 2007-08-30 Agere Systems Inc. Method and apparatus for burst transfer
US7721018B2 (en) * 2006-08-24 2010-05-18 Microchip Technology Incorporated Direct memory access controller with flow control
JP2008083911A (ja) 2006-09-27 2008-04-10 Matsushita Electric Ind Co Ltd Dma転送制御装置および半導体集積回路装置
FR2913785B1 (fr) * 2007-03-13 2009-06-12 St Microelectronics Sa Gestion de memoire tampon circulaire
US9032113B2 (en) * 2008-03-27 2015-05-12 Apple Inc. Clock control for DMA busses
WO2011155096A1 (ja) * 2010-06-11 2011-12-15 パナソニック株式会社 データ転送制御装置とその集積回路とデータ転送制御方法、データ転送終了通知装置とその集積回路とデータ転送終了通知方法、およびデータ転送制御システム

Also Published As

Publication number Publication date
JPWO2013129031A1 (ja) 2015-07-30
DE112013001213T5 (de) 2014-12-04
KR101593865B1 (ko) 2016-02-12
CN104145255A (zh) 2014-11-12
KR20140128370A (ko) 2014-11-05
TW201403461A (zh) 2014-01-16
TWI524267B (zh) 2016-03-01
WO2013129031A1 (ja) 2013-09-06
JP5769868B2 (ja) 2015-08-26
US20150039803A1 (en) 2015-02-05
US9727504B2 (en) 2017-08-08

Similar Documents

Publication Publication Date Title
CN104145255B (zh) 数据传输装置、数据传输方法及数据传输程序
US8489786B2 (en) Acknowledgement management technique for supported command set of SMBUS/PMBUS slave applications
US8825923B2 (en) Memory system having high data transfer efficiency and host controller
CN1554050B (zh) 具有自适应优先权控制器的数据处理器及其方法
KR101988260B1 (ko) 임베디드 멀티미디어 카드, 및 이의 동작 방법
US5313588A (en) SCSI controller and method for use on an information processing system
EP1782218B1 (en) Processing apparatus with burst read and write operations
CN107111572B (zh) 用于避免死锁的方法和电路
US5410715A (en) Interrupt controller with selectable interrupt nesting function
WO2009102529A1 (en) Peripheral module register access methods and apparatus
JP6602579B2 (ja) 半導体装置およびシステム
CN106372008A (zh) 一种数据缓存方法及装置
US10884970B2 (en) Techniques for coalescing doorbells in a request message
US9473273B2 (en) Memory system capable of increasing data transfer efficiency
KR100954568B1 (ko) 집적 회로 내에서의 진단 데이터 수집 장치 및 방법
KR20140113438A (ko) 직접 메모리 접속 제어기를 위한 조건 링크
US6842812B1 (en) Event handling
JP3008895B2 (ja) マルチプロセッサの負荷の均一化装置
US10108374B2 (en) Memory controller for performing write transaction with stall when write buffer is full and abort when transaction spans page boundary
Chai et al. Improvement of I2C bus and RS-232 serial port under complex electromagnetic environment
US20230305816A1 (en) Device and method for handling programming language function
CN104102604A (zh) 一种业务处理装置
US9223542B2 (en) Variable-sized buffers mapped to hardware registers
JP2679440B2 (ja) 情報処理装置
GB2610972A (en) Decoupling atomicity from operation size

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170308

Termination date: 20210204

CF01 Termination of patent right due to non-payment of annual fee