CN108595350B - 一种基于axi的数据传输方法和装置 - Google Patents

一种基于axi的数据传输方法和装置 Download PDF

Info

Publication number
CN108595350B
CN108595350B CN201810006854.9A CN201810006854A CN108595350B CN 108595350 B CN108595350 B CN 108595350B CN 201810006854 A CN201810006854 A CN 201810006854A CN 108595350 B CN108595350 B CN 108595350B
Authority
CN
China
Prior art keywords
read
write
data
transmission
length
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.)
Active
Application number
CN201810006854.9A
Other languages
English (en)
Other versions
CN108595350A (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.)
Arkmicro Technologies Inc
Original Assignee
Arkmicro Technologies Inc
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 Arkmicro Technologies Inc filed Critical Arkmicro Technologies Inc
Priority to CN201810006854.9A priority Critical patent/CN108595350B/zh
Publication of CN108595350A publication Critical patent/CN108595350A/zh
Application granted granted Critical
Publication of CN108595350B publication Critical patent/CN108595350B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus

Landscapes

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

Abstract

本发明公开一种基于AXI的数据传输方法和装置,该方法包括:接收携带有读/写源地址和读/写数据长度的读数据请求信号;根据所述读/写源地址和读/写数据长度计算第一次Burst传输的读地址信息并发送;根据第n次Burst传输的读/写地址信息,从AXI总线读取数据/向AXI总线写入数据;并且,根据所述读/写数据长度判断数据读取/写入传输是否完成,如未完成,则计算下一次Burst传输的读/写地址信息并发送。本发明在一次Burst传输过程中,就提前发送下一次Burst传输的地址信息,并预先计算再下一次Burst传输的地址信息,不需要在一次Burst传输结束回到空闲状态再等待下一次Burst传输的地址信息和读写操作,而是整个数据传输过程完成后才回到空闲状态,提高了数据传输效率。

Description

一种基于AXI的数据传输方法和装置
技术领域
本发明涉及计算机数据读写技术领域,尤其涉及一种基于AXI的数据传输方法和装置。
背景技术
在计算机数字处理技术的领域中,伴随着半导体技术的高速发展,SOC(System-on-a-chip,片上系统)芯片的规模越来越大、功能日益复杂,需要进行大批量数据的连续搬运和传输的工作。软件虽然也可以进行一些数据的搬运和传输,但是会消耗大量的CPU资源,且功耗较大,需要设计专门的硬件接口模块来完成数据的传输。AXI(AdvancedExtensible Interface,高级扩展接口)总线是现有SOC中应用最为广泛的总线标准。
现有的基于AXI总线的数据传输装置,通常只提供从外设存储器中读取数据到内部处理模块,或只提供从内部处理模块发送数据到外设存储器中,或者只提供从主存储器中的一个区域传输数据到另一区域,鲜有同时支持处理单元通过AXI总线同时上传或接收数据的装置。更为重要的是,现有AXI的传输装置,在针对大批量数据的连续搬运和传输时,没有一个简单高效的优化数据传输的方案,没有充分利用AXI总线协议的传输优势。尤其是在内部处理模块同时进行大量数据的同时读写操作时,由于写操作需要考虑存储器的回应信号,现有技术在写操作的处理中明显存在不足,导致写传输的效率不高。
因此,有必要设计一种全新的基于AXI的数据传输方法和装置,解决上述问题,使读写效率更高。
发明内容
本发明所要解决的技术问题是提供一种基于AXI的数据传输方法和装置,使读写效率更高。
为解决本发明的技术问题,本发明公开一种基于AXI的数据传输方法包括读数据传输方法和写数据传输方法;
所述读数据步骤包括:
R1:接收携带有读源地址和读数据长度的读数据请求信号;
R2:根据所述读源地址和读数据长度计算第一次Burst传输的读地址信息并发送;
R3:根据第n次Burst传输的读地址信息,从AXI总线读取数据;并且,根据所述读数据长度判断本次数据读取传输是否完成,如未完成,则计算下一次Burst传输的读地址信息;发送所述下一次Burst传输的读地址信息;n为自然数;
R4:根据所述读数据长度判断本次数据读取传输是否完成,如未完成,返回步骤R3;如完成,则退出,等待下一次数据读取传输;
所述写数据传输方法包括步骤:
W1:接收携带有写源地址和写数据长度的写数据请求信号;
W2:根据所述写源地址和写数据长度计算第一次Burst传输的写地址信息并发送;
W3:根据第n次Burst传输的写地址信息,写入数据到AXI总线;并且,根据写数据长度判断本次数据写入传输是否完成,如未完成,则计算下一次Burst传输的写地址信息;发送所述下一次Burst传输的写地址信息;
W4:根据写数据长度判断本次数据写入传输是否完成,如未完成,返回步骤W3;如完成,则退出,等待下一次数据写入传输。
为解决本发明的技术问题,本发明还公开一种基于AXI的数据传输装置,包括读传输模块和写传输模块;
所述读传输模块包括读传输引擎、读请求控制单元和读缓存单元;
所述读请求控制单元用于根据内部处理模块的读数据需求,生成携带有读源地址和读数据长度的读数据请求信号;
所述读传输引擎用于接收所述读数据请求信号,根据所述读源地址和读数据长度计算第一次Burst传输的读地址信息,发送至AXI总线;以及,根据所述第n次Burst传输的读地址信息,读取数据存入所述读缓存单元;并且,根据所述读数据长度判断本次数据读取传输是否完成,如未完成,则计算下一次Burst传输的读地址信息,发送至AXI总线;如完成,则等待一次数据读取传输;n为自然数;
所述读缓存单元用于缓存所述读传输引擎读取的数据;
所述写传输模块包括写传输引擎、写请求控制单元和写缓存单元;
所述写请求控制单元用于根据内部处理模块的写数据需求,生成携带有写源地址和写数据长度的写数据请求信号;
所述写传输引擎用于接收所述写数据请求信号,根据所述写源地址和写数据长度计算第一次Burst传输的写地址信息,发送至AXI总线;以及,根据所述第n次Burst传输的写地址信息,获取所述写缓存单元的写数据通过AXI总线写入外部存储器;并且,根据所述写数据长度判断本次数据写入传输是否完成,如未完成,则计算下一次Burst传输的写地址信息,发送至AXI总线;如完成,则等待下一次数据写入传输;
所述写缓存单元用于缓存所述内部处理模块需写入的写数据。
与现有技术相比,本发明具有如下有益效果:本发明通过采用流水的方式,在状态机中增加了地址预计算和预发送机制,在一次Burst传输过程中,就提前发送下一次Burst传输的读/写地址信息,并预先计算再下一次Burst传输的读/写地址信息,使得传输引擎不需要在一次Burst传输结束后回到空闲状态再等待下一次Burst传输的读/写地址信息和数据读写操作,而是整个数据传输过程完成后才回到空闲状态,充分利用了至少几个周期的时间,在大批量的数据传输过程中,提高了数据读写传输的效率。
附图说明
图1是本发明实施例的读数据传输方法步骤图;
图2是本发明实施例的写数据传输方法步骤图;
图3是本发明实施例的基于AXI总线的数据传输装置结构图。
具体实施方式
下面结合附图和实施例,对本发明作进一步详细说明。
本发明实施例提供一种基于AXI总线的数据传输方法,包括读数据传输方法和写数据传输方法。
如图1所示,所述读数据传输方法包括步骤:
R1:接收携带有读源地址和读数据长度的读数据请求信号;
具体地,SOC芯片的内部处理单元需要读取外部存储设备的数据时,发出读数据信号,读请求控制单元根据该读数据信号生成携带有读源地址和读数据长度的读数据请求信号,发送到读传输引擎,读传输引擎接收该读数据请求信号。
其中,读数据长度为内部处理单元需要读取的数据总长度,在本发明实施例中以字节为单位计算数据长度。
另外,所述读数据请求信号还可包括读开始信号,当读传输引擎处于空闲状态时,收到读数据请求信号后,跳转至下一步骤R2。
R2:根据所述读源地址和读数据长度计算第一次Burst传输的读地址信息并发送;
具体地,读传输引擎通过判断所述读数据长度是否大于AXI总线一次最大Burst传输长度,若大于,则所述第一次Burst传输的读地址信息包括所述读源地址和所述AXI总线一次最大Burst传输长度;否则,所述第一次Burst传输的读地址信息包括所述读源地址和所述读数据长度。
在本发明实施例中,AXI总线一次最大Burst传输长度为16×8字节,当然也可以根据实际情况设置为其他数值,都不影响本发明的实施。
例1,假设读数据长度为36×8字节,大于AXI总线一次最大Burst传输长度(16×8字节),则,读传输引擎得出第一次Burst传输的读地址信息为读源地址和AXI总线一次最大Burst传输长度(16×8字节)。
例2,假设读数据长度为10×8字节,小于AXI总线一次最大Burst传输长度(16×8字节),则,读传输引擎得出第一次Burst传输的读地址信息为读源地址和读数据长度(10×8字节)。
在例1中,读传输引擎需计算3次Burst传输的读地址信息,在例2中,只需计算1次。
另外,在本发明实施例中,当读传输引擎计算好第一次Burst传输的读地址信息后,直接发送到AXI总线不需要等待总线上的arready(读准备)信号,避免了现有技术中由于等待arready(读准备)信号而导致发送要晚一个周期的缺点。若第一次发送不成功,就继续保持发送状态,直到发送成功为止。
R3:根据第n次Burst传输的读地址信息,从AXI总线读取数据;并且,根据所述读数据长度判断本次数据读取传输是否完成,如未完成,则计算下一次Burst传输的读地址信息;发送所述下一次Burst传输的读地址信息,n为自然数;
具体地,在本发明实施例中,读地址通道的传输和读数据通道的传输可同时进行。当读地址通道发送完第一次Burst传输的读地址信息后,读数据通道的传输开始。首先清零读缓存单元的指针,再等待AXI总线读数据通道的读有效信号,若读有效信号为高,则读传输引擎将有效的16×8字节读数据写入到读缓存单元,否则保持不变。读数据通道同样也根据读数据长度,判断是否读完所有数据,为了更灵活高效的处理,本发明不需要判断每一次Burst传输的Rlast信号,而只需判断所有读数据的长度是否读完,简化了判断的逻辑。当所有读数据都写到读缓存单元后,读传输引擎进入空闲状态,等待新的读数据传输命令。
具体地,读传输引擎将每次Burst传输读取的数据的长度累加,若累加值等于读数据长度,则表示本次数据读取传输(读数据传输)完成,否则未完成,需计算下一次Burst传输的地址信息。例如,在上述例1中,第一次Burst传输读取的数据长度为16×8字节,累加值小于读数据长度,则传输未完成,需再计算下一次Burst传输的地址信息。
其中,计算下一次Burst传输的地址信息的方法包括:读传输引擎将上一次Burst传输的读地址加上AXI总线一次最大Burst传输长度得到下一次读地址,再判断所述读数据长度减去所述累加值的差值是否大于AXI总线一次最大Burst传输长度,若大于,则下一次Burst传输的读地址信息包括所述下一次读地址和AXI总线一次最大Burst传输长度;否则,下一次Burst传输的读地址信息包括所述下一次读地址和所述差值。
具体地,在本发明实施例中,AXI总线一次最大Burst传输长度为16×8字节,当然也可以根据实际情况设置为其他数值,都不影响本发明的实施。例如,在例1中,读源地址为240,读数据长度为36×8字节,则第二次Burst传输的读地址为256,传输数据长度为16×8字节,第三次Burst传输的读地址为272,传输数据长度为4×8字节。
当读传输引擎计算好下一次Burst传输的读地址信息后,直接发送到AXI总线不需要等待总线上的arready(读准备)信号,避免了现有技术中由于等待arready(读准备)信号而导致发送要晚一个周期的缺点。若第一次发送不成功,就继续保持发送状态,直到发送成功为止。
由于本发明实施例在读数据通道传输数据的同时,就进行读地址通道的计算,而不是等读数据传输完了,再去计算下一次Burst传输地址,这样节省了几个周期的时间,计算完后直接发送发送到AXI总线,更进一步提高了传输效率。
当读缓存单元读取到有效的读数据后发送到内部处理模块。例如,在例1中,读缓存单元获取到36×8字节的有效读数据后发送到内部处理模块。
R4:根据所述读数据长度判断本次数据读取传输是否完成,如未完成,返回步骤R3;如完成,则退出,等待下一次数据读取传输。
在本步骤中,如果本次数据读取传输未完成,就继续步骤R3,如完成,读传输引擎进入空闲状态,等待新的读数据传输命令。
再如图2所示,写数据传输方法包括步骤:
W1:接收携带有写源地址和写数据长度的写数据请求信号;
具体地,SOC芯片的内部处理单元需要向外部存储设备写入数据时,发出写数据信号,写请求控制单元根据该写数据信号生成携带有写源地址和写数据长度的写数据请求信号,发送到写传输引擎,写传输引擎接收该写数据请求信号。
其中,写数据长度为内部处理单元需要写入的数据总长度,在本发明实施例中以字节为单位计算数据长度。
另外,所述写数据请求信号还可包括写开始信号,当写传输引擎处于空闲状态时,收到写数据请求信号后,跳转至下一步骤W2。
W2:根据所述写源地址和写数据长度计算第一次Burst传输的写地址信息,发送所述第一次Burst传输的写地址信息;
具体地,写传输引擎通过判断所述写数据长度是否大于AXI总线一次最大Burst传输长度,若大于,则所述第一次Burst传输的写地址信息包括所述写源地址和所述AXI总线一次最大Burst传输长度;否则,所述第一次Burst传输的写地址信息包括所述写源地址和所述写数据长度。
在本发明实施例中,AXI总线一次最大Burst传输长度为16×8字节,当然也可以根据实际情况设置为其他数值,都不影响本发明的实施。
例1,假设写数据长度为36×8字节,大于AXI总线一次最大Burst传输长度(16×8字节),则,写传输引擎得出第一次Burst传输的写地址信息为写源地址和AXI总线一次最大Burst传输长度(16×8字节)。
例2,假设写数据长度为10×8字节,小于AXI总线一次最大Burst传输长度(16×8字节),则,写传输引擎得出第一次Burst传输的写地址信息为写源地址和写数据长度(10×8字节)。
在例1中,写传输引擎需计算3次Burst传输的写地址信息,在例2中,只需计算1次。
另外,在本发明实施例中,当写传输引擎计算好第一次Burst传输的写地址信息后,直接发送到AXI总线不需要等待总线上的awready(写准备)信号,避免了现有技术中由于等待awready(写准备)信号而导致发送要晚一个周期的缺点。若第一次发送不成功,就继续保持发送状态,直到发送成功为止。
写地址通道信息计算好后,同时将需要写的数据从写缓存单元预读到写传输引擎的一级缓存单元(设为FIFO或寄存器),使得当写数据通道的回应信号到来后,一级缓存单元有即时的数据可以写到AXI总线上。下一状态跳到步骤W3。
W3:根据所述第n次Burst传输的写地址信息,通过AXI总线写入数据;并且,根据写数据长度判断数据写入传输是否完成,如未完成,则计算下一次Burst传输的写地址信息;发送所述下一次Burst传输的写地址信息;n为自然数;
具体地,在本发明实施例中,写地址通道的传输和写数据通道的传输可同时进行。当写地址通道发送完第一次Burst传输的写地址信息后,写数据通道的传输开始。首先等待AXI总线写数据通道的写回应信号,若写回应信号为高,则写传输引擎将有效的16×8字节写数据写入到AXI总线,否则保持不变。写数据通道同样也根据写数据长度,判断是否写完所有数据。当所有写数据都写到AXI总线后,写传输引擎进入空闲状态,等待新的写数据传输命令。
具体地,写传输引擎将每次Burst传输写入的数据的长度累加,若累加值等于写数据长度,则表示写数据传输完成,否则未完成,需计算下一次Burst传输的写地址信息。例如,在上述例1中,第一次Burst传输写入的数据长度为16×8字节,累加值小于写数据长度,则传输未完成,需再计算下一次Burst传输的写地址信息。
其中,计算下一次Burst传输的写地址信息的方法包括:写传输引擎将上一次Burst传输的写地址加上AXI总线一次最大Burst传输长度得到下一次写地址,再判断所述写数据长度减去所述累加值的差值是否大于AXI总线一次最大Burst传输长度,若大于,则下一次Burst传输的写地址信息包括所述下一次写地址和AXI总线一次最大Burst传输长度;否则,下一次Burst传输的写地址信息包括所述下一次写地址和所述差值。
具体地,在本发明实施例中,AXI总线一次最大Burst传输长度为16×8字节,当然也可以根据实际情况设置为其他数值,都不影响本发明的实施。例如,在例1中,写源地址为240,写数据长度为36×8字节,则第二次Burst传输的写地址为256,传输数据长度为16×8字节,第三次Burst传输的写地址为272,传输数据长度为4×8字节。
当写传输引擎计算好下一次Burst传输的写地址信息后,直接发送到AXI总线不需要等待总线上的awready(写准备)信号,避免了现有技术中由于等待awready(写准备)信号而导致发送要晚一个周期的缺点。若第一次发送不成功,就继续保持发送状态,直到发送成功为止。
由于本发明实施例在写数据通道传输数据的同时,就进行写地址通道的计算,而不是等写数据传输完了,再去计算下一次Burst传输地址,这样节省了几个周期的时间,计算完后直接发送发送到AXI总线,更进一步提高了传输效率。
写地址通道信息计算好后,同时将需要写的数据从写缓存单元预读到写传输引擎的一级缓存单元(设为FIFO或寄存器),使得当写数据通道的回应信号到来后,一级缓存单元有即时的数据可以写到AXI总线上。下一状态跳到步骤W4。
W4:根据写数据长度判断本次数据写入传输是否完成,如未完成,返回步骤W3;如完成,则退出,等待下一次数据写入传输。
在本步骤中,如果本次数据写入传输未完成,就继续步骤W3,如完成,写传输引擎进入空闲状态,等待新的写数据传输命令。
再如图3所示,本发明实施例的基于AXI总线的数据传输装置包括读传输模块和写传输模块。
所述读传输模块包括读传输引擎、读请求控制单元和读缓存单元。
其中,读请求控制单元用于根据内部处理模块的读数据需求,生成携带有读源地址和读数据长度的读数据请求信号。
具体地,SOC芯片的内部处理单元需要读取外部存储设备的数据时,发出读数据信号,读请求控制单元根据该读数据信号生成携带有读源地址和读数据长度的读数据请求信号,发送到读传输引擎,读传输引擎接收该读数据请求信号。
所述读数据长度为内部处理单元需要读取的数据总长度,在本发明实施例中以字节为单位计算数据长度。另外,所述读数据请求信号还可包括读开始信号。
其中,读传输引擎用于接收所述读数据请求信号,根据所述读源地址和读数据长度计算第一次Burst传输的读地址信息,发送至AXI总线;以及,根据所述第n次Burst传输的读地址信息,读取数据存入所述读缓存单元;并且,根据所述读数据长度判断本次数据读取传输是否完成,如未完成,则计算下一次Burst传输的读地址信息,发送至AXI总线;n为自然数。
具体地,读传输引擎通过判断所述读数据长度是否大于AXI总线一次最大Burst传输长度,若大于,则所述第一次Burst传输的读地址信息包括所述读源地址和所述AXI总线一次最大Burst传输长度;否则,所述第一次Burst传输的读地址信息包括所述读源地址和所述读数据长度。
在本发明实施例中,AXI总线一次最大Burst传输长度为16×8字节,当然也可以根据实际情况设置为其他数值,都不影响本发明的实施。
例1,假设读数据长度为36×8字节,大于AXI总线一次最大Burst传输长度(16×8字节),则,读传输引擎得出第一次Burst传输的读地址信息为读源地址和AXI总线一次最大Burst传输长度(16×8字节)。
例2,假设读数据长度为10×8字节,小于AXI总线一次最大Burst传输长度(16×8字节),则,读传输引擎得出第一次Burst传输的读地址信息为读源地址和读数据长度(10×8字节)。
在例1中,读传输引擎需计算3次Burst传输的读地址信息,在例2中,只需计算1次。
另外,在本发明实施例中,当读传输引擎计算好第n次Burst传输的读地址信息后,直接发送到AXI总线不需要等待总线上的arready(读准备)信号,避免了现有技术中由于等待arready(读准备)信号而导致发送要晚一个周期的缺点。若第一次发送不成功,就继续保持发送状态,直到发送成功为止。
具体地,在本发明实施例中,读地址通道的传输和读数据通道的传输可同时进行。当读地址通道发送完第一次Burst传输的读地址信息后,读数据通道的传输开始。首先清零读缓存单元的指针,再等待AXI总线读数据通道的读有效信号,若读有效信号为高,则读传输引擎将有效的16×8字节读数据写入到读缓存单元,否则保持不变。读数据通道同样也根据读数据长度,判断是否读完所有数据,为了更灵活高效的处理,本发明不需要判断每一次Burst传输的Rlast信号,而只需判断所有读数据的长度是否读完,简化了判断的逻辑。当所有读数据都写到读缓存单元后,读传输引擎进入空闲状态,等待新的读数据传输命令。
具体地,读传输引擎将每次Burst传输读取的数据的长度累加,若累加值等于读数据长度,则表示读数据传输完成,否则未完成,需计算下一次Burst传输的地址信息。例如,在上述例1中,第一次Burst传输读取的数据长度为16×8字节,累加值小于读数据长度,则传输未完成,需再计算下一次Burst传输的地址信息。
其中,计算下一次Burst传输的地址信息的方法包括:读传输引擎将上一次Burst传输的读地址加上AXI总线一次最大Burst传输长度得到下一次读地址,再判断所述读数据长度减去所述累加值的差值是否大于AXI总线一次最大Burst传输长度,若大于,则下一次Burst传输的读地址信息包括所述下一次读地址和AXI总线一次最大Burst传输长度;否则,下一次Burst传输的读地址信息包括所述下一次读地址和所述差值。
具体地,在本发明实施例中,AXI总线一次最大Burst传输长度为16×8字节,当然也可以根据实际情况设置为其他数值,都不影响本发明的实施。例如,在例1中,读源地址为240,读数据长度为36×8字节,则第二次Burst传输的读地址为256,传输数据长度为16×8字节,第三次Burst传输的读地址为272,传输数据长度为4×8字节。
由于本发明实施例在读数据通道传输数据的同时,就进行读地址通道的计算,而不是等读数据传输完了,再去计算下一次Burst传输地址,这样节省了几个周期的时间,计算完后直接发送发送到AXI总线,更进一步提高了传输效率。
其中,读缓存单元用于缓存所述读传输引擎读取的数据。当读缓存单元读取到所有的读数据后发送到内部处理模块。例如,在例1中,读缓存单元获取到36×8字节的所有读数据后发送到内部处理模块。
再如图3所示,所述写传输模块包括写传输引擎、写请求控制单元和写缓存单元;
其中,写请求控制单元用于根据内部处理模块的写数据需求,生成携带有写源地址和写数据长度的写数据请求信号。
具体地,SOC芯片的内部处理单元需要向外部存储设备写入数据时,发出写数据信号,写请求控制单元根据该写数据信号生成携带有写源地址和写数据长度的写数据请求信号,发送到写传输引擎,写传输引擎接收该写数据请求信号。
其中,写数据长度为内部处理单元需要写入的数据总长度,在本发明实施例中以字节为单位计算数据长度。
另外,所述写数据请求信号还可包括写开始信号。
其中,写传输引擎用于接收所述写数据请求信号,根据所述写源地址和写数据长度计算第一次Burst传输的写地址信息,发送至AXI总线;以及,根据所述第n次Burst传输的写地址信息,获取所述写缓存单元的写数据通过AXI总线写入外部存储器;并且,根据所述写数据长度判断本次数据写入传输是否完成,如未完成,则计算下一次Burst传输的写地址信息,发送至AXI总线。
具体地,写传输引擎通过判断所述写数据长度是否大于AXI总线一次最大Burst传输长度,若大于,则所述第一次Burst传输的写地址信息包括所述写源地址和所述AXI总线一次最大Burst传输长度;否则,所述第一次Burst传输的写地址信息包括所述写源地址和所述写数据长度。
在本发明实施例中,AXI总线一次最大Burst传输长度为16×8字节,当然也可以根据实际情况设置为其他数值,都不影响本发明的实施。
例1,假设写数据长度为36×8字节,大于AXI总线一次最大Burst传输长度(16×8字节),则,写传输引擎得出第一次Burst传输的写地址信息为写源地址和AXI总线一次最大Burst传输长度(16×8字节)。
例2,假设写数据长度为10×8字节,小于AXI总线一次最大Burst传输长度(16×8字节),则,写传输引擎得出第一次Burst传输的写地址信息为写源地址和写数据长度(10×8字节)。
在例1中,写传输引擎需计算3次Burst传输的写地址信息,在例2中,只需计算1次。
另外,在本发明实施例中,当写传输引擎计算好第一次Burst传输的写地址信息后,直接发送到AXI总线不需要等待总线上的awready(写准备)信号,避免了现有技术中由于等待awready(写准备)信号而导致发送要晚一个周期的缺点。若第一次发送不成功,就继续保持发送状态,直到发送成功为止。
写地址通道信息计算好后,同时将需要写的数据从写缓存单元预读到写传输引擎的一级缓存单元(设为FIFO或寄存器),使得当写数据通道的回应信号到来后,一级缓存单元有即时的数据可以写到AXI总线上。
具体地,在本发明实施例中,写地址通道的传输和写数据通道的传输可同时进行。当写地址通道发送完第一次Burst传输的写地址信息后,写数据通道的传输开始。首先等待AXI总线写数据通道的写回应信号,若写回应信号为高,则写传输引擎将有效的16×8字节写数据写入到AXI总线,否则保持不变。写数据通道同样也根据写数据长度,判断是否写完所有数据。当所有写数据都写到AXI总线后,写传输引擎进入空闲状态,等待新的写数据传输命令。
具体地,写传输引擎将每次Burst传输写入的数据的长度累加,若累加值等于写数据长度,则表示写数据传输完成,否则未完成,需计算下一次Burst传输的写地址信息。例如,在上述例1中,第一次Burst传输写入的数据长度为16×8字节,累加值小于写数据长度,则传输未完成,需再计算下一次Burst传输的写地址信息。
其中,计算下一次Burst传输的写地址信息的方法包括:读传输引擎将上一次Burst传输的写地址加上AXI总线一次最大Burst传输长度得到下一次写地址,再判断所述写数据长度减去所述累加值的差值是否大于AXI总线一次最大Burst传输长度,若大于,则下一次Burst传输的写地址信息包括所述下一次写地址和AXI总线一次最大Burst传输长度;否则,下一次Burst传输的写地址信息包括所述下一次写地址和所述差值。
具体地,在本发明实施例中,AXI总线一次最大Burst传输长度为16,当然也可以根据实际情况设置为其他数值,都不影响本发明的实施。例如,在例1中,写源地址为240,写数据长度为36×8字节,则第二次Burst传输的写地址为256,传输数据长度为16×8字节,第三次Burst传输的写地址为272,传输数据长度为4×8字节。
由于本发明实施例在写数据通道传输数据的同时,就进行写地址通道的计算,而不是等写数据传输完了,再去计算下一次Burst传输地址,这样节省了几个周期的时间,计算完后直接发送发送到AXI总线,更进一步提高了传输效率。
其中,所述写缓存单元用于缓存所述内部处理模块需写入的写数据。并且,在所述写传输引擎计算好第n次Burst传输的写地址信息后,将第n次Burst传输的写数据预存入写传输引擎的一级缓存单元。
具体的,写地址通道信息计算好后,同时将需要写的数据从写缓存单元预读到写传输引擎的一级缓存单元(设为FIFO或寄存器),使得当写数据通道的回应信号到来后,一级缓存单元有即时的数据可以写到AXI总线上。
综上所述,本发明通过采用流水的方式,在状态机中增加了地址预计算和预发送机制,在一次Burst传输过程中,就提前发送下一次Burst传输的读/写地址信息,并预先计算再下一次Burst传输的读/写地址信息,使得传输引擎不需要在一次Burst传输结束后回到空闲状态再等待下一次Burst传输的读/写地址信息和数据读写操作,而是整个数据传输过程完成后才回到空闲状态,充分利用了至少几个周期的时间,在大批量的数据传输过程中,提高了数据读写传输的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内,本发明所主张的权利范围应以发明申请范围所述为准,而非仅限于上述实施例。

Claims (9)

1.一种基于AXI的数据传输方法,其特征在于,包括读数据传输方法和写数据传输方法,所述读数据步骤包括:
R1:接收携带有读源地址和读数据长度的读数据请求信号;
R2:根据所述读源地址和读数据长度计算第一次Burst传输的读地址信息并发送;
R3:根据第n次Burst传输的读地址信息,从AXI总线读取数据;并且,根据所述读数据长度判断本次数据读取传输是否完成,如未完成,则计算下一次Burst传输的读地址信息;发送所述下一次Burst传输的读地址信息;n为自然数;
R4:根据所述读数据长度判断本次数据读取传输是否完成,如未完成,返回步骤R3;如完成,则退出,等待下一次数据读取传输;
所述写数据传输方法包括步骤:
W1:接收携带有写源地址和写数据长度的写数据请求信号;
W2:根据所述写源地址和写数据长度计算第一次Burst传输的写地址信息并发送;
W3:根据第n次Burst传输的写地址信息,写入数据到AXI总线;并且,根据写数据长度判断本次数据写入传输是否完成,如未完成,则计算下一次Burst传输的写地址信息;发送所述下一次Burst传输的写地址信息;
W4:根据写数据长度判断本次数据写入传输是否完成,如未完成,返回步骤W3;如完成,则退出,等待下一次数据写入传输。
2.如权利要求1所述的基于AXI的数据传输方法,其特征在于,所述步骤R2具体包括:
判断所述读数据长度是否大于AXI总线一次最大Burst传输长度,若大于,则所述第一次Burst传输的读地址信息包括所述读源地址和所述AXI总线一次最大Burst传输长度;否则,所述第一次Burst传输的读地址信息包括所述读源地址和所述读数据长度;
所述步骤W2具体包括:
判断所述写数据长度是否大于AXI总线一次最大Burst传输长度,若大于,则所述第一次Burst传输的写地址信息包括所述写源地址和所述AXI总线一次最大Burst传输长度;否则,所述第一次Burst传输的写地址信息包括所述写源地址和所述写数据长度。
3.如权利要求1所述的基于AXI的数据传输方法,其特征在于,所述步骤R3中根据所述读数据长度判断本次数据读取传输是否完成具体为,将每次读取的数据的长度累加,若累加值等于所述读数据长度则本次数据读取传输完成;
所述步骤W3中根据所述写数据长度判断本次数据写入传输是否完成具体为,将每次写入的数据的长度累加,若累加值等于所述写数据长度则本次数据写入传输完成。
4.如权利要求3所述的基于AXI的数据传输方法,其特征在于,所述步骤R3中计算下一次Burst传输的读地址信息具体包括:将上一次Burst传输的读地址加上AXI总线一次最大Burst传输长度得到下一次读地址,再判断所述读数据长度减去所述累加值的差值是否大于AXI总线一次最大Burst传输长度,若大于,则下一次Burst传输的读地址信息包括所述下一次读地址和AXI总线一次最大Burst传输长度;否则,下一次Burst传输的读地址信息包括所述下一次读地址和所述差值;
所述步骤W3中计算下一次Burst传输的写地址信息具体包括:将上一次Burst传输的写地址加上AXI总线一次最大Burst传输长度得到下一次写地址,再判断所述写数据长度减去所述累加值的差值是否大于AXI总线一次最大Burst传输长度,若大于,则下一次Burst传输的写地址信息包括所述下一次写地址和AXI总线一次最大Burst传输长度;否则,下一次Burst传输的写地址信息包括所述下一次写地址和所述差值。
5.一种基于AXI的数据传输装置,其特征在于,包括读传输模块和写传输模块;
所述读传输模块包括读传输引擎、读请求控制单元和读缓存单元;
所述读请求控制单元用于根据内部处理模块的读数据需求,生成携带有读源地址和读数据长度的读数据请求信号;
所述读传输引擎用于接收所述读数据请求信号,根据所述读源地址和读数据长度计算第一次Burst传输的读地址信息,发送至AXI总线;以及,根据所述第n次Burst传输的读地址信息,读取数据存入所述读缓存单元;并且,根据所述读数据长度判断本次数据读取传输是否完成,如未完成,则计算下一次Burst传输的读地址信息,发送至AXI总线;如完成,则等待一次数据读取传输;n为自然数;
所述读缓存单元用于缓存所述读传输引擎读取的数据;
所述写传输模块包括写传输引擎、写请求控制单元和写缓存单元;
所述写请求控制单元用于根据内部处理模块的写数据需求,生成携带有写源地址和写数据长度的写数据请求信号;
所述写传输引擎用于接收所述写数据请求信号,根据所述写源地址和写数据长度计算第一次Burst传输的写地址信息,发送至AXI总线;以及,根据所述第n次Burst传输的写地址信息,获取所述写缓存单元的写数据通过AXI总线写入外部存储器;并且,根据所述写数据长度判断本次数据写入传输是否完成,如未完成,则计算下一次Burst传输的写地址信息,发送至AXI总线;如完成,则等待下一次数据写入传输;
所述写缓存单元用于缓存所述内部处理模块需写入的写数据。
6.如权利要求5所述的基于AXI的数据传输装置,其特征在于,所述读传输引擎计算第一次Burst传输的读地址信息具体包括:判断所述读数据长度是否大于AXI总线一次最大Burst传输长度,若大于,则所述第一次Burst传输的读地址信息包括所述读源地址和所述AXI总线一次最大Burst传输长度;否则,所述第一次Burst传输的读地址信息包括所述读源地址和所述读数据长度;
所述写传输引擎计算第一次Burst传输的写地址信息具体包括:判断所述写数据长度是否大于AXI总线一次最大Burst传输长度,若大于,则所述第一次Burst传输的写地址信息包括所述写源地址和所述AXI总线一次最大Burst传输长度;否则,所述第一次Burst传输的写地址信息包括所述写源地址和所述写数据长度。
7.如权利要求5所述的基于AXI的数据传输装置,其特征在于,所述读传输引擎根据所述读数据长度判断本次数据读取传输是否完成具体为,将每次读取的数据的长度累加,若累加值等于所述读数据长度则本次数据读取传输完成;
所述写传输引擎根据所述写数据长度判断本次数据写入传输是否完成具体为,将每次写入的数据的长度累加,若累加值等于所述写数据长度则本次数据写入传输完成。
8.如权利要求7所述的基于AXI的数据传输装置,其特征在于,所述读传输引擎计算下一次Burst传输的读地址信息具体包括:将上一次Burst传输的读地址加上AXI总线一次最大Burst传输长度得到下一次读地址,再判断所述读数据长度减去所述累加值的差值是否大于AXI总线一次最大Burst传输长度,若大于,则下一次Burst传输的读地址信息包括所述下一次读地址和AXI总线一次最大Burst传输长度;否则,下一次Burst传输的读地址信息包括所述下一次读地址和所述差值;
所述写传输引擎计算下一次Burst传输的写地址信息具体包括:将上一次Burst传输的写地址加上AXI总线一次最大Burst传输长度得到下一次写地址,再判断所述写数据长度减去所述累加值的差值是否大于AXI总线一次最大Burst传输长度,若大于,则下一次Burst传输的写地址信息包括所述下一次写地址和AXI总线一次最大Burst传输长度;否则,下一次Burst传输的写地址信息包括所述下一次写地址和所述差值。
9.如权利要求5所述的基于AXI的数据传输装置,其特征在于,所述写缓存单元在所述写传输引擎计算好第n次Burst传输的地址信息后,将第n次Burst传输的写数据预存入写传输引擎的一级缓存单元。
CN201810006854.9A 2018-01-04 2018-01-04 一种基于axi的数据传输方法和装置 Active CN108595350B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810006854.9A CN108595350B (zh) 2018-01-04 2018-01-04 一种基于axi的数据传输方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810006854.9A CN108595350B (zh) 2018-01-04 2018-01-04 一种基于axi的数据传输方法和装置

Publications (2)

Publication Number Publication Date
CN108595350A CN108595350A (zh) 2018-09-28
CN108595350B true CN108595350B (zh) 2022-04-05

Family

ID=63599734

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810006854.9A Active CN108595350B (zh) 2018-01-04 2018-01-04 一种基于axi的数据传输方法和装置

Country Status (1)

Country Link
CN (1) CN108595350B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471824B (zh) * 2018-11-22 2021-02-05 青岛方寸微电子科技有限公司 基于axi总线的数据传输系统及方法
CN110674075B (zh) * 2019-09-27 2023-03-10 山东华芯半导体有限公司 一种axi总线广播机制的实现方法和系统
CN111124987B (zh) * 2019-12-30 2021-06-22 京信通信系统(中国)有限公司 一种基于pcie的数据传输控制系统和方法
CN112069115B (zh) * 2020-09-18 2021-06-25 上海燧原科技有限公司 数据传输方法、设备及系统
CN112463700B (zh) * 2020-11-06 2023-01-06 苏州浪潮智能科技有限公司 一种控制axi总线带宽的方法和装置
CN113886310A (zh) * 2021-11-02 2022-01-04 上海兆芯集成电路有限公司 桥接模块、数据传输系统和数据传输方法
CN114546260B (zh) * 2022-01-07 2024-03-12 华中师范大学 数据读写方法、装置、电子设备及存储介质
CN114546924B (zh) * 2022-01-28 2024-05-03 山东云海国创云计算装备产业创新中心有限公司 一种基于axi的双向数据传输方法、系统、存储介质及设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3932166B2 (ja) * 2001-08-07 2007-06-20 シャープ株式会社 同期型半導体記憶装置モジュールおよびその制御方法、情報機器
TWI243999B (en) * 2004-08-17 2005-11-21 Via Tech Inc Apparatus and related method for maintaining read caching data of south bridge with north bridge
KR100907805B1 (ko) * 2007-06-14 2009-07-16 (주)씨앤에스 테크놀로지 에이엑스아이 매트릭스 시스템과 에이에이치비 마스터시스템간의 데이터 전송을 위한 랩퍼 장치 및 제어 방법
CN101472187B (zh) * 2007-12-29 2012-11-21 深圳艾科创新微电子有限公司 一种对视频信号进行绿色增强的系统及方法
CN101308450B (zh) * 2008-06-27 2011-07-20 无锡中星微电子有限公司 Fifo控制电路及控制方法
CN101477505B (zh) * 2008-12-23 2012-11-21 无锡中星微电子有限公司 一种主、从设备之间通过总线传输数据的方法
KR20110061189A (ko) * 2009-12-01 2011-06-09 삼성전자주식회사 데이터 프로세싱 시스템에서의 비동기 통합 업사이징 회로
EP2367394B1 (en) * 2010-03-12 2015-11-25 BlackBerry Limited Base station and method for receiving transmissions on an enhanced random access channel
CN102044062B (zh) * 2010-12-23 2012-08-08 福州瑞芯微电子有限公司 基于图像块处理实现图像xy轴镜像和180度旋转系统
CN102497544B (zh) * 2011-12-15 2014-06-25 中国科学院自动化研究所 一种对视频信号的存取进行控制的装置
CN102937939B (zh) * 2012-10-10 2015-12-16 无锡众志和达数据计算股份有限公司 基于sata控制器的dma地址对预读取方法
CN104281548A (zh) * 2013-07-03 2015-01-14 炬芯(珠海)科技有限公司 一种基于axi总线传输数据的方法、装置及系统
CN103605632B (zh) * 2013-11-18 2016-06-29 山东大学 一种axi总线与ahb总线的通信方法与装置
CN103605625B (zh) * 2013-11-29 2016-04-06 山东大学 基于AXI总线的Nor Flash芯片的控制方法
CN105786741B (zh) * 2014-12-25 2023-05-23 锐迪科(重庆)微电子科技有限公司 一种soc高速低功耗总线及转换方法
CN105005546B (zh) * 2015-06-23 2018-01-30 中国兵器工业集团第二一四研究所苏州研发中心 一种内置交点队列的异步axi总线结构
CN105468547B (zh) * 2015-11-18 2018-07-06 哈尔滨工业大学 一种基于axi总线的便捷可配置帧数据存取控制系统
CN105718394A (zh) * 2016-01-25 2016-06-29 东南大学 一种粗粒度可重构系统的片上缓存访存接口及其访问方法

Also Published As

Publication number Publication date
CN108595350A (zh) 2018-09-28

Similar Documents

Publication Publication Date Title
CN108595350B (zh) 一种基于axi的数据传输方法和装置
US11269796B2 (en) Acceleration control system based on binarization algorithm, chip, and robot
CN108228498B (zh) 一种dma控制装置和图像处理器
US20050188121A1 (en) System and controller with reduced bus utilization time
CN113468097B (zh) 基于片上系统的数据交换方法
CN113791994B (zh) 一种基于AXI协议wrap访问的DDR控制器及处理方法
US8230138B2 (en) Memory control device, data processor, and data read method
US20060236001A1 (en) Direct memory access controller
US6782463B2 (en) Shared memory array
CN111221759A (zh) 一种基于dma的数据处理系统及方法
JP2011081553A (ja) 情報処理装置及びその制御方法
CN113590512A (zh) 可直连外设设备的自启动dma装置及应用
JP2008234059A (ja) データ転送装置および情報処理システム
US6791953B2 (en) Interface apparatus
CN116893991B (zh) 一种axi协议下的存储模块转换接口及其转换方法
CN211403419U (zh) 基于二值化算法的加速控制系统、芯片及机器人
CN117093157B (zh) 一种用于单向光传输的ddr高速读写方法及系统
US7296109B1 (en) Buffer bypass circuit for reducing latency in information transfers to a bus
US7007137B2 (en) Method and architecture capable of accessing data and instructions using store and forward
JP2005267148A (ja) メモリ制御装置
CN111124959B (zh) 一种NVMe协议管理命令处理的硬件卸载方法
WO2021075076A1 (ja) 情報処理装置、及び情報処理方法
CN109726149B (zh) 一种axi总线访问nand flash的方法及装置
JP2010079536A (ja) メモリアクセス制御回路、メモリアクセス制御方法
JPH09198305A (ja) メモリ制御装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Yuan Yangzhi

Inventor after: Wei Yi

Inventor after: Liu Junxiu

Inventor after: Shi Ling

Inventor before: Yuan Yangzhi

Inventor before: Wei Yi

Inventor before: Liu Junxiu

Inventor before: Shi Ling

CB03 Change of inventor or designer information