CN116795746A - 数据传输装置、系统、组件、电子设备及方法 - Google Patents

数据传输装置、系统、组件、电子设备及方法 Download PDF

Info

Publication number
CN116795746A
CN116795746A CN202311091826.9A CN202311091826A CN116795746A CN 116795746 A CN116795746 A CN 116795746A CN 202311091826 A CN202311091826 A CN 202311091826A CN 116795746 A CN116795746 A CN 116795746A
Authority
CN
China
Prior art keywords
data
access request
request signal
transmission data
bit width
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.)
Granted
Application number
CN202311091826.9A
Other languages
English (en)
Other versions
CN116795746B (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.)
Beijing Xiangdixian Computing Technology Co Ltd
Original Assignee
Beijing Xiangdixian Computing Technology Co Ltd
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 Beijing Xiangdixian Computing Technology Co Ltd filed Critical Beijing Xiangdixian Computing Technology Co Ltd
Priority to CN202311091826.9A priority Critical patent/CN116795746B/zh
Publication of CN116795746A publication Critical patent/CN116795746A/zh
Application granted granted Critical
Publication of CN116795746B publication Critical patent/CN116795746B/zh
Active 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本公开提供一种数据传输装置、系统、组件、电子设备及方法。该装置包括地址通道转换模块,被配置为在接收到主设备的访问请求信号时,将主设备的访问请求信号转换为从设备的访问请求信号并发送至从设备;数据通道转换模块,被配置为在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,以主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔传输数据进行一次或多次位宽转换操作,以转换成另一侧的传输数据并发送至另一侧。这种位宽转换方案位宽转换延时较小,且可以适用于各种场景下的位宽转换,适用性强。

Description

数据传输装置、系统、组件、电子设备及方法
技术领域
本公开涉及总线技术领域,尤其涉及一种数据传输装置、系统、组件、电子设备及方法。
背景技术
在互联领域中,片上总线的不同IP或者模块可能具有不同的总线位宽,并且一些上游IP会通过总线接口发送窄突发(narrow burst,即实际传输的数据的位宽与总线位宽不匹配的突发传输,如总线位宽为256bit,但是每周期的实际有效数据大小小于256bit),但下游端口不支持narrow burst。当上游IP和下游IP具有不同的总线位宽或者下游IP不支持narrow burst时,无法直接进行互联。
现有技术多是将对应的标准总线协议转换到其它非标准协议,然后在非标准下进行位宽转换,再将非标准协议转换回对应的标准总线协议。因为存在非标准中间协议,导致位宽转换的延时比较大。
发明内容
本公开的目的是提供一种数据传输装置、系统、组件、电子设备及方法,解决了现有技术中总线协议下的位宽转换延时较大的技术问题。
根据本公开的一个方面,提供一种数据传输装置,应用于总线系统,包括:
地址通道转换模块,被配置为在接收到主设备的访问请求信号时,根据主设备的访问请求信号和从设备的最大传输位宽,将主设备的访问请求信号转换为从设备的访问请求信号并发送至从设备;其中,主设备的访问请求信号为在主设备侧的地址通道传输的信号,从设备的访问请求信号为在从设备侧的地址通道传输的信号;访问请求信号中包括起始地址、突发长度、突发大小和突发类型;
数据通道转换模块,被配置为在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,以主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔传输数据进行一次或多次位宽转换操作,以转换成另一侧的传输数据并发送至另一侧。
在一些实施例中,上述数据传输装置中,地址通道转换模块包括写地址通道转换模块和读地址转换模块;
写地址通道转换模块,被配置为在接收到主设备的写访问请求信号时,根据主设备的写访问请求信号和从设备的最大传输位宽,将主设备的写访问请求信号转换为从设备的写访问请求信号并发送至从设备;
读地址通道转换模块,被配置为在接收到主设备的读访问请求信号时,根据主设备的读访问请求信号和从设备的最大传输位宽,将主设备的读访问请求信号转换为从设备的读访问请求信号并发送至从设备。
在一些实施例中,上述数据传输装置中,地址通道转换模块,被配置为根据主设备的访问请求信号和从设备的最大传输位宽,将主设备的访问请求信号转换为从设备的访问请求信号,包括:
地址通道转换模块,被配置为根据从设备的最大传输位宽,确定从设备的访问请求信号中的突发大小;
根据主设备的访问请求信号中的起始地址和突发类型,确定从设备的访问请求信号中的起始地址和突发类型;
根据主设备的访问请求信号中的起始地址、突发长度和突发大小,确定主设备的访问请求信号对应的总传输数据量,并根据总传输数据量以及从设备的访问请求信号中的起始地址、突发大小,确定从设备的访问请求信号中的突发长度。
在一些实施例中,上述数据传输装置中,地址通道转换模块,被配置为根据从设备的最大传输位宽,确定从设备的访问请求信号中的突发大小,包括:
地址通道转换模块,被配置为根据从设备的最大传输位宽,通过以下计算式确定从设备的访问请求信号中的突发大小:
AxSIZE_S=log2(WIDTH_S);
其中,AxSIZE_S为从设备的访问请求信号中的突发大小,WIDTH_S为从设备的最大传输位宽,单位为字节。
在一些实施例中,上述数据传输装置中,地址通道转换模块,被配置为根据主设备的访问请求信号中的起始地址和突发类型,确定从设备的访问请求信号中的起始地址和突发类型,包括:
地址通道转换模块,被配置为确定主设备的访问请求信号中的突发类型与从设备的访问请求信号中的突发类型相同;
当主设备的访问请求信号中的突发类型为INCR时,确定主设备的访问请求信号中的起始地址与从设备的访问请求信号中的起始地址相同;
当主设备的访问请求信号中的突发类型为WRAP时,根据主设备的访问请求信号中的起始地址和从设备的访问请求信号中的突发大小,通过以下计算式确定从设备的访问请求信号中的起始地址:
AxADDR_S=ceil(AxADDR_M/2AxSIZE_S)2AxSIZE_S
其中,AxADDR_S为从设备的访问请求信号中的起始地址,ceil为向上取整函数,AxADDR_M为主设备的访问请求信号中的起始地址,AxSIZE_S为从设备的访问请求信号中的突发大小。
在一些实施例中,上述数据传输装置中,地址通道转换模块,被配置为根据主设备的访问请求信号中的起始地址、突发长度和突发大小,确定主设备的访问请求信号对应的总传输数据量,并根据总传输数据量以及从设备的访问请求信号中的起始地址、突发大小,确定从设备的访问请求信号中的突发长度,包括:
地址通道转换模块,被配置为根据主设备的访问请求信号中的起始地址、突发长度和突发大小,确定以下计算式确定主设备的访问请求信号对应的总传输数据量:
Ax_Byte_NUM=2AxSIZE_M-mod(AxADDR_M,2AxSIZE_M)+ (AxLEN_M)2AxSIZE_M
其中,Ax_Byte_NUM为主设备的访问请求信号对应的总传输数据量, AxADDR_M、AxLEN_M和AxSIZE_M分别为主设备的访问请求信号中的起始地址、突发长度和突发大小,mod为取模函数;
根据总传输数据量以及从设备的访问请求信号中的起始地址、突发大小,确定以下计算式确定从设备的访问请求信号中的突发长度:
AxLEN_S=floor((AxADDR_S+Ax_Byte_NUM-1)/2AxSIZE_S)-floor(AxADDR_S/2AxSIZE _S);
其中,AxLEN_S、 AxADDR_S和AxSIZE_S分别为从设备的访问请求信号中的突发长度、起始地址和突发大小,floor为向下取整函数。
在一些实施例中,上述数据传输装置中,数据通道转换模块包括写数据通道转换模块和读数据通道转换模块;
写数据通道转换模块,被配置为在接收到主设备的一笔写传输数据时,以主设备的写访问请求信号中的突发大小和从设备的写访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔写传输数据进行一次或多次位宽转换操作,以转换成从设备的写传输数据并发送至从设备;
读数据通道转换模块,被配置为在接收到从设备的一笔读传输数据时,以主设备的读访问请求信号中的突发大小和从设备的读访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔读传输数据进行一次或多次位宽转换操作,以转换成主设备的读传输数据并发送至主设备。
在一些实施例中,上述数据传输装置中,数据通道转换模块,被配置为对接收到的该笔传输数据进行一次或多次位宽转换操作,包括:
数据通道转换模块,被配置为根据接收到的该笔传输数据对应的源设备的访问请求信号,确认接收到的该笔传输数据在源设备侧的起始地址,并基于最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作,以将接收到的该笔传输数据中的每个数据块逐块对应转换成目的设备的一笔传输数据中的数据块,并根据其对应的目的设备的访问请求信号,确定每个数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址;其中,目的设备的一笔传输数据由其对应的数据块打包而成;每个数据块的最大位宽为最大操作位宽;当接收到的该笔传输数据为写传输数据时,其对应的源设备为主设备,对应的目的设备为从设备,当接收到的该笔传输数据为读传输数据时,其对应的源设备为从设备,目的设备为主设备;
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块,若是,则将数据通道转换模块对应源设备的READY信号拉高,以指示源设备发出下一笔传输数据;
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块,若是,则将数据通道转换模块对应目的设备的VALID信号拉高,以将该数据块对应的目的设备的一笔传输数据打包并发送至目的设备。
在一些实施例中,上述数据传输装置中,数据通道转换模块,还被配置为在当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据对应的LAST信号为高电平,且该数据块进行位宽转换操作后,对应的突发传输中已进行位宽转换操作的数据块的数量等于对应的主设备的访问请求信号中的突发长度和从设备的访问请求信号中的突发长度中的较大者加1时,将数据通道转换模块对应目的设备的VALID和LAST信号均拉高,以将该数据块对应的目的设备的一突发传输的最后一笔传输数据打包并发送至目的设备,以及将数据通道转换模块对应源设备的READY信号拉高。
在一些实施例中,上述数据传输装置中,数据通道转换模块,还被配置为在接收到源设备的一突发传输的第一笔传输数据且其对应的源设备的访问请求信号中的突发类型为WRAP时,将该突发传输对应的源设备的访问请求信号中的起始地址、目的设备的访问请求信号中的起始地址分别与源设备的突发大小和目的设备的突发大小对齐,分别得到该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址,以及对应的目的设备的第一笔传输数据在目的设备侧的起始地址;
当该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址小于对应的目的设备的第一笔传输数据在目的设备侧的起始地址时,将该突发传输对应的源设备的传输数据中,源设备的第一笔传输数据在源设备侧的起始地址,至与目的设备的第一笔传输数据在目的设备侧的起始地址对齐的地址之间的数据,进行暂存,并在该突发传输的传输数据的位宽转换过程中,当数据通道转换模块对应目的设备的VALID和LAST信号均拉高时,将暂存的数据打包至该突发传输对应的目的设备的最后一笔传输数据中。
在一些实施例中,上述数据传输装置中,数据通道转换模块,被配置为根据接收到的该笔传输数据对应的源设备的访问请求信号,确认接收到的该笔传输数据在源设备侧的起始地址,包括:
数据通道转换模块,被配置为在接收到源设备的一突发传输的第一笔传输数据时,将该突发传输对应的源设备的访问请求信号中的起始地址与突发大小对齐,得到该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址;
每次将数据通道转换模块对应源设备的READY信号拉高时,将当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址加上对应的源设备的访问请求信号中的突发大小对应的位宽,得到同一突发传输的下一时钟周期接收到的源设备的下一笔传输数据在源设备侧的起始地址。
在一些实施例中,上述数据传输装置中,当对应的源设备的访问请求信号中的突发类型为WRAP时,每次将数据通道转换模块对应源设备的READY信号拉高时,下一时钟周期接收到的源设备的同一突发传输的下一笔传输数据在源设备侧的起始地址只更新最低的预设个数的比特位,预设个数等于[AxSIZE +log2( (AxLEN +1)),其中,AxSIZE和AxLEN分别为对应的源设备的访问请求信号中的突发大小和突发长度。
在一些实施例中,上述数据传输装置中,数据通道转换模块,被配置为确定每个数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,包括:
数据通道转换模块,被配置为在接收到源设备的一突发传输的第一笔传输数据时,将该突发传输对应的目的设备的访问请求信号中的起始地址与目的设备的突发大小对齐,得到该突发传输对应的目的设备的第一笔传输数据在目的设备侧的起始地址;
每次将数据通道转换模块对应目的设备的VALID信号拉高时,将当前时钟周期正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址加上目的设备的访问请求信号中的突发大小对应的位宽,得到同一突发传输的下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,否则下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址与当前时钟周期正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址相同。
在一些实施例中,上述数据传输装置中,当对应的源设备的访问请求信号中的突发类型为WRAP时,每次将数据通道转换模块对应目的设备的VALID信号拉高时,下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址只更新最低的预设个数的比特位,预设个数等于[AxSIZE +log2( (AxLEN +1)),其中,AxSIZE和AxLEN分别为对应的目的设备的访问请求信号中的突发大小和突发长度。
在一些实施例中,上述数据传输装置中,数据通道转换模块,被配置为基于最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作,包括:
数据通道转换模块,被配置为基于最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作并按照低位到高位的顺序,对接收到的该笔传输数据中的各个数据块进行编号;
数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块;在当前时钟周期,根据正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块,包括:
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号;
根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,确定正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块;
根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块。
在一些实施例中,上述数据传输装置中,数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号,包括:
数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,通过如下计算式确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号:
BLK_INDEX_M=mod(CUR_ADDR_MAX/2AxSIZE_MIN,
2AxSIZE_MAX_M-AxSIZE_MIN);
BLK_INDEX_S= mod(CUR_ADDR_MAX/2AxSIZE_MIN,
2AxSIZE_S-AxSIZE_MIN);
AxSIZE_MAX_M= log2(WIDTH_M);
其中,BLK_INDEX_M和BLK_INDEX_S分别为正在进行位宽转换操作的数据块在对应的主设备的一笔传输数据中的编号,以及在对应的从设备的一笔传输数据中的编号;当正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小小于对应的从设备的访问请求信号中的突发大小时,CUR_ADDR_MAX等于正在进行位宽转换操作的数据块对应的主设备的一笔传输数据在主设备侧的起始地址;当正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小大于对应的从设备的访问请求信号中的突发大小时,CUR_ADDR_MAX等于正在进行位宽转换操作的数据块对应的从设备的一笔传输数据在从设备侧的起始地址;AxSIZE_MIN为正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小与对应的从设备的访问请求信号中的突发大小中的较小者,WIDTH_ M为主设备的最大传输位宽,单位为字节;AxSIZE_S为正在进行位宽转换操作的数据块对应的从设备的访问请求信号中的突发大小。
在一些实施例中,上述数据传输装置中,数据通道转换模块,被配置为根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,确定正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块;根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块,包括:
数据通道转换模块,被配置为根据正在进行位宽转换操作的数据块在对应的主设备的一笔传输数据中的编号BLK_INDEX_M以及对应的主设备的访问请求信号中的突发大小AxSIZE_M、对应的从设备的访问请求信号中的突发大小AxSIZE_S,计算[mod(BLK_INDEX_M,2AxSIZE_M-AxSIZE_MIN)+1]是否等于2AxSIZE_M-AxSIZE_MIN,其中,AxSIZE_MIN为正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小AxSIZE_M与对应的从设备的访问请求信号中的突发大小AxSIZE_S中的较小者;
若是,则判断正在进行位宽转换操作的数据块为对应的主设备的一笔传输数据中的最后一个数据块;
根据正在进行位宽转换操作的数据块在对应的从设备的一笔传输数据中的编号BLK_INDEX_S以及对应的主设备的访问请求信号中的突发大小AxSIZE_M、对应的从设备的访问请求信号中的突发大小AxSIZE_S,计算(BLK_INDEX_S+1)是否等于2AxSIZE_S-AxSIZE_MIN;其中,AxSIZE_MIN为正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小AxSIZE_M与对应的从设备的访问请求信号中的突发大小AxSIZE_S中的较小者;
若是,则判断正在进行位宽转换操作的数据块为对应的从设备的一笔传输数据中的最后一个数据块。
在一些实施例中,上述数据传输装置中,数据通道转换模块,被配置为基于最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作,以将接收到的该笔传输数据中的每个数据块逐块对应转换成目的设备的一笔传输数据中的数据块,包括:
数据通道转换模块,被配置为基于最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作并按照低位到高位的顺序,对接收到的该笔传输数据中的各个数据块进行编号;
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号;
根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,确定正在进行位宽转换操作的数据块在其对应的源设备的一笔传输数据中的比特位范围;
根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号,确定正在进行位宽转换操作的数据块在其对应的目的设备的一笔传输数据中的比特位范围;
根据正在进行位宽转换操作的数据块在其对应的源设备的一笔传输数据中的比特位范围以及在其对应的目的设备的一笔传输数据中的比特位范围,将该数据块每个比特位上的数据转换成对应的目的设备的一笔传输数据中对应比特位上的数据。
在一些实施例中,上述数据传输装置中,正在进行位宽转换操作的数据块在其对应的主设备的一笔传输数据中的比特位范围为[(BLK_INDEX_M+1)DATA_BLOCK-1:BLK_INDEX_M/>DATA_BLOCK],其中,BLK_INDEX_M为正在进行位宽转换操作的数据块在对应的主设备的一笔传输数据中的编号,DATA_BLOCK为最大操作位宽;
正在进行位宽转换操作的数据块在其对应的从设备的一笔传输数据中的比特位范围为:[(BLK_INDEX_S+1)DATA_BLOCK-1:BLK_INDEX_S/>DATA_BLOCK],其中,BLK_INDEX_S为正在进行位宽转换操作的数据块在对应的从设备的一笔传输数据中的编号。
在一些实施例中,上述数据传输装置中,访问请求信号中还包括标识;一笔传输数据的标识与其对应的访问请求信号的标识相对应;
地址通道转换模块,还被配置为在接收到主设备的访问请求信号时,将接收到的主设备的访问请求信号写入缓存查找表的无效条目中,写入后,该条目的状态为有效;
数据通道转换模块,还被配置为在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,根据该笔传输数据的标识,从缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入缓存查找表中的一访问请求信号,作为该笔传输数据对应的主设备的访问请求信号,并根据对应的主设备的访问请求信号得到对应的从设备的访问请求信号;
在接收到应答信息时,根据该应答信息的标识,从缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入缓存查找表中的一访问请求信号所在的条目,并将该条目的状态置为无效。
在一些实施例中,上述数据传输装置中,访问请求信号中还包括标识;一笔传输数据的标识与其对应的访问请求信号的标识相对应;
地址通道转换模块,还被配置为将主设备的访问请求信号转换为从设备的访问请求信号时,将主设备的访问请求信号及其对应的从设备的访问请求信号写入缓存查找表的无效条目中,写入后,该条目的状态为有效;
数据通道转换模块,被配置为在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,根据该笔传输数据的标识,从缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入缓存查找表中一访问请求信号所在的条目,并将其中缓存的信号作为该笔传输数据对应的主设备的访问请求信号和从设备的访问请求信号;
在接收到应答信息时,根据该应答信息的标识,从缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入缓存查找表中的一访问请求信号所在的条目,并将该条目的状态置为无效。
根据本公开的另一方面,提供一种总线系统,包括总线,以及上述任一实施例的数据传输装置。
根据本公开的另一方面,提供一种电子组件,包括上述任一实施例的总线系统。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子装置。
根据本公开的另一方面,提供一种数据传输方法中的数据传输装置,包括:
在接收到主设备的访问请求信号时,根据主设备的访问请求信号和从设备的最大传输位宽,将主设备的访问请求信号转换为从设备的访问请求信号并发送至从设备;其中,主设备的访问请求信号为在主设备侧的地址通道传输的信号,从设备的访问请求信号为在从设备侧的地址通道传输的信号;访问请求信号中包括起始地址、突发长度、突发大小和突发类型;
在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,以主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔传输数据进行一次或多次位宽转换操作,以转换成另一侧的传输数据并发送至另一侧。
附图说明
图1为本公开一个实施例提供的数据传输装置的结构示意图;
图2为本公开一个实施例提供的缓存查找表的缓存数据的排布示意图;
图3为本公开一个实施例提供的缓存查找表的缓存数据的另一排布示意图;
图4为本公开一个实施例提供的缓存查找表的缓存数据的另一排布示意图;
图5为本公开一个实施例提供的写数据通道(W通道)位宽转换前(主设备侧)的数据排布示意图;
图6为图5对应的写数据通道(W通道)位宽转换后(从设备侧)的数据排布示意图;
图7为本公开一个实施例提供的读数据通道(R通道)位宽转换前(从设备侧)的数据排布示意图;
图8为图7对应的读数据通道(R通道)位宽转换后(主设备侧)的数据排布示意图;
图9为本公开一个实施例提供的写数据通道(W通道)位宽转换前(主设备侧)的数据排布示意图;
图10为图9对应的写数据通道(W通道)位宽转换后(从设备侧)的数据排布示意图;
图11为本公开一个实施例提供的读数据通道(R通道)位宽转换前(从设备侧)的数据排布示意图;
图12为图11对应的读数据通道(R通道)位宽转换后(主设备侧)的数据排布示意图;
图13为本公开一个实施例提供的写数据通道(W通道)位宽转换前(主设备侧)的数据排布示意图;
图14为图13对应的写数据通道(W通道)位宽转换后(从设备侧)的数据排布示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种数据传输装置、系统、组件、电子设备及方法,该装置包括地址通道转换模块,被配置为在接收到主设备的访问请求信号时,根据主设备的访问请求信号和从设备的最大传输位宽,将主设备的访问请求信号转换为从设备的访问请求信号并发送至从设备;其中,主设备的访问请求信号为在主设备侧的地址通道传输的信号,从设备的访问请求信号为在从设备侧的地址通道传输的信号;访问请求信号中包括起始地址、突发长度、突发大小和突发类型;数据通道转换模块,被配置为在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,以主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔传输数据进行一次或多次位宽转换操作,以转换成另一侧的传输数据并发送至另一侧。这种位宽转换方案可以将主设备侧标准总线协议下的访问请求信号和传输数据直接转换为从设备侧标准总线协议下的访问请求信号和传输数据,位宽转换延时较小,且可以适用于各种场景下的位宽转换,适用性强。
本公开的一个实施例提供一种数据传输装置,应用于总线系统,如图1所示,该装置包括:
地址通道转换模块,被配置为在接收到主设备的访问请求信号时,根据主设备的访问请求信号和从设备的最大传输位宽,将主设备的访问请求信号转换为从设备的访问请求信号并发送至从设备;其中,主设备的访问请求信号为在主设备侧的地址通道传输的信号,从设备的访问请求信号为在从设备侧的地址通道传输的信号;访问请求信号中包括起始地址、突发长度、突发大小和突发类型;
数据通道转换模块,被配置为在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,以主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔传输数据进行一次或多次位宽转换操作,以转换成另一侧的传输数据并发送至另一侧。
其中,主设备的写传输数据为在主设备侧的写数据通道传输的数据,从设备的读传输数据为在从设备侧的读数据通道传输的数据。
上述总线系统内部总线的互联协议有高级可扩展接口(Advanced eXtensibleInterface,AXI)协议、I2C(Inter Integrated Circuit)总线、I3C(Improved InterIntegrated Circuit)等。优选的,上述总线系统内部总线的互联协议为AXI标准协议。
上述访问请求信号分为写访问请求信号和读访问请求信号。
在一些实施例中,访问请求信号中还包括标识(ID),如写访问请求信号的标识为AWID,读访问请求信号的标识为ARID,写访问请求信号的标识AWID与对应的写传输数据的标识WID是相匹配(相对应)的,读访问请求信号的标识ARID与对应的读传输数据的标识RID是相匹配(相对应)的。所以,在数据传输装置接收到写传输数据时,根据其标识WID,确定包括(具有)对应标识AWID的写访问请求信号,在数据传输装置接收到读传输数据时,根据其标识RID,确定包括(具有)对应标识ARID的读访问请求信号。
同理,写访问请求信号的标识AWID与对应的写应答的标识BID是相匹配(相对应)的,读访问请求信号的标识ARID与对应的读应答的标识RID(由于读应答是在读数据通道上传输,也是由从设备发往主设备,所以其ID与对应的读数据的ID相同)是相匹配(相对应)的。所以,在数据传输装置接收到写应答(通过写应答通道传输的)时,根据其标识BID,确定包括(具有)对应标识AWID的写访问请求信号,在数据传输装置接收到读应答时,根据其标识RID,确定包括(具有)对应标识ARID的读访问请求信号。
需要说明的是,地址通道转换模块对一访问请求信号进行转换,不会改变该访问请求信号的标识,数据通道转换模块对一笔传输数据进行位宽转换,也不会改变该笔传输数据的标识。
在一些实施例中,为了便于在数据通道转换模块接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,能够根据该笔输出数据的标识,确定对应的主设备的访问请求信号和从设备的访问请求信号,地址通道转换模块,还被配置为在接收到主设备的访问请求信号时,将接收到的主设备的访问请求信号写入缓存查找表的无效条目中,写入后,该条目的状态为有效;
数据通道转换模块,还被配置为在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,根据该笔传输数据的标识,从缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入缓存查找表中的一访问请求信号,作为该笔传输数据对应的主设备的访问请求信号,并根据对应的主设备的访问请求信号得到对应的从设备的访问请求信号;
在接收到应答信息时,根据该应答信息的标识,从缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入缓存查找表中的一访问请求信号所在的条目,并将该条目的状态置为无效。
上述方案中,利用缓存查找表来缓存访问请求信号,而不是为每个标识都分配固定的存储空间,节省存储空间。
其中,一访问请求信号存入缓存查找表的对应条目中的相关信息包括数据通道转换模块进行位宽转换操作需要的信息,至少包括标识(ID)、起始地址(AxADDR)、突发长度(AxLEN)、突发大小(AxSIZE)和突发类型(AxBURST)。
可以理解为,由于对应的从设备的访问请求信号可以根据主设备的访问请求信号计算得到,所以缓存查找表中可以只缓存主设备的访问请求信号。
除此之外,由于主设备通常会将写访问请求信号和对应的写传输数据一起发出,所以写访问请求信号可以不用写入缓存查找表中,也即缓存查找表中可以只缓存主设备的读访问请求信号。
在一些实施例中,将查找表中一条目置为无效的方式为将该条目中缓存的信息进行删除,对应的,无效条目为空条目,有效条目为非空条目。
在一些实施例中,将查找表中一条目置为无效的方式为将该条目中对应的标志位(valid)置为无效(置0),缓存查找表中每一条目存入访问请求信号后,将该条目对应的标志位(valid)置为有效(置1)。这种情况下,将条目的状态由有效置为无效时,可以同步将条目中缓存的信息进行删除,也可以不删除;在不删除的场景下,若无效条目为非空状态,新写入该条目中的访问请求信号的信息会将之前的信息覆盖。
如图2所示,为假定一段时间后的缓存查找表的状态,该缓存查找表有16个条目(buffer0~buffer16),最多可以记录16条Outstanding(在途)的读访问请求信号,当前已经有6条记录。当主设备新的读访问请求信号到达时,ARID_M=0x3,此时还有空的条目(无效条目),故将新的读访问请求信号更新到最靠近Head(查找表头部)的空条目(无效条目)上(以保证各个读访问请求信号按照写入时间顺序从Head开始依次排列于缓存查找表中),更新后结果如图3所示。从图中可以看到,更新前已经有一条标识ARID_M为0x3的Outstanding读访问请求信号,更新后一共有两条标识ARID_M为0x3的Outstanding读访问请求信号保持在缓存查找表中。新的读应答到达时,其标识RID_S=0x3,此时从缓存查找表中从Head开始找第一条ARID_M为0x3的条目(也即具有ARID_M为0x3的读访问请求信号中最先写入缓存查找表的信号),该条目对应的存储信息取出供读应答使用,且该条目之后条目中的访问请求信号均向前移动一个位置,更新后结果如图4所示。从图中可以看到,更新前有两条标识ARID_M为0x3的Outstanding读访问请求信号,更新后前面一条被取出,该操作保证了AXI的ID保序功能。在新的读访问请求信号和读应答到达时,均重复上述过程。
在一些实施例中,为避免数据传输装置重复计算从设备的访问请求信号,地址通道转换模块,还被配置为主设备的访问请求信号转换为从设备的访问请求信号时,将主设备的访问请求信号及其对应的从设备的访问请求信号写入缓存查找表的无效条目中,写入后,该条目的状态为有效;
数据通道转换模块,被配置为在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,根据该笔传输数据的标识,从缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入缓存查找表中一访问请求信号所在的条目,并将其中缓存的信号作为该笔传输数据对应的主设备的访问请求信号和从设备的访问请求信号;
在接收到应答信息时,根据该应答信息的标识,从缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入缓存查找表中的一访问请求信号所在的条目,并将该条目的状态置为无效。
可以理解为,为了避免数据通道转换模块需要使用对应的从设备访问请求信号时,再次根据主设备的访问请求信号计算对应的从设备访问请求信号,地址通道转换模块在将主设备的访问请求信号转换为从设备的访问请求信号时,直接将主设备的访问请求信号及其对应的从设备的访问请求信号写入缓存查找表的对应的一条目中,这样数据通道转换模块需要使用对应的从设备访问请求信号时,直接从缓存查找表中查找即可,进一步缩短了位宽转换延时。
进一步的,访问请求信号中还包括锁类型、缓存类型、保护类型、服务质量、区域标识符、用户信息或写入地址有效(Valid)等信息。
在一些实施例中,地址通道转换模块包括写地址通道转换模块和读地址转换模块;
写地址通道转换模块,被配置为在接收到主设备的写访问请求信号时,根据主设备的写访问请求信号和从设备的最大传输位宽,将主设备的写访问请求信号转换为从设备的写访问请求信号并发送至从设备;
读地址通道转换模块,被配置为在接收到主设备的读访问请求信号时,根据主设备的读访问请求信号和从设备的最大传输位宽,将主设备的读访问请求信号转换为从设备的读访问请求信号并发送至从设备。
其中,主设备的写访问请求信号为在主设备侧的写地址通道传输的信号,从设备的写访问请求信号为在从设备侧的写地址通道传输的信号;主设备的读访问请求信号为在主设备侧的读地址通道传输的信号,从设备的读访问请求信号为在从设备侧的读地址通道传输的信号。
在一些实施例中,地址通道转换模块,被配置为根据主设备的访问请求信号和从设备的最大传输位宽,将主设备的访问请求信号转换为从设备的访问请求信号,包括:
地址通道转换模块,被配置为根据从设备的最大传输位宽,确定从设备的访问请求信号中的突发大小;
根据主设备的访问请求信号中的起始地址和突发类型,确定从设备的访问请求信号中的起始地址和突发类型;
根据主设备的访问请求信号中的起始地址、突发长度和突发大小,确定主设备的访问请求信号对应的总传输数据量,并根据总传输数据量以及从设备的访问请求信号中的起始地址、突发大小,确定从设备的访问请求信号中的突发长度。
需要说明的是,主设备的访问请求信号的突发大小(AxSIZE_M)对应的位宽可以小于主设备的最大传输位宽(即主设备侧的总线位宽,WIDTH_M),此时,为窄突发(narrowburst)情形,当主设备的访问请求信号的突发大小(AxSIZE_M)对应的位宽等于主设备的最大传输位宽(WIDTH_M)时,为非窄突发(非narrow burst)情形。而从设备的访问请求信号中的突发大小(AxSIZE_S)对应的位宽是等于从设备的最大传输位宽(即从设备侧的总线位宽WIDTH_S)的。
因此,地址通道转换模块,被配置为根据从设备的最大传输位宽,通过以下计算式确定对应的从设备的访问请求信号中的突发大小:
AxSIZE_S=log2(WIDTH_S);
其中,AxSIZE_S为对应的从设备的访问请求信号中的突发大小,WIDTH_S为从设备的最大传输位宽,单位为字节。
地址通道转换模块在进行访问请求信号转换时,不改变访问请求信号中的突发类型,且突发类型包括INCR和WRAP。INCR类型的突发传输的地址是递增的,WRAP型的突发传输的地址是轮回的。
因此,地址通道转换模块,被配置为根据主设备的访问请求信号中的起始地址和突发类型,确定从设备的访问请求信号中的起始地址和突发类型,包括:
地址通道转换模块,被配置为确定主设备的访问请求信号中的突发类型与从设备的访问请求信号中的突发类型相同;
当主设备的访问请求信号中的突发类型为INCR时,确定主设备的访问请求信号中的起始地址与从设备的访问请求信号中的起始地址相同;
当主设备的访问请求信号中的突发类型为WRAP时,根据主设备的访问请求信号中的起始地址和从设备的访问请求信号中的突发大小,通过以下计算式确定从设备的访问请求信号中的起始地址:
AxADDR_S=ceil(AxADDR_M/2AxSIZE_S)2AxSIZE_S
其中,AxADDR_S为从设备的访问请求信号中的起始地址,ceil为向上取整函数,AxADDR_M为主设备的访问请求信号中的起始地址,AxSIZE_S为从设备的访问请求信号中的突发大小。
可以理解为,由于WRAP类型下,主设备的访问请求信号的起始地址AxADDR_M是与其突发大小AxSIZE_M是对齐的,从设备的访问请求信号中的起始地址需要与其突发大小AxSIZE_S对齐,数据通道收到数据先缓存,然后找到对齐地址再来发送,对齐的地址即为AxADDR_M除以地址块大小,下取整后再乘以地址块大小,即得到转换后地址。WRAP类型下,突发传输中AxADDR_M与AxADDR_S之间非对齐的数据,会在数据通道转换模块打包最后一笔传输数据时进行打包。
另外,由于位宽转换前后,总传输数据量是不变的,因此,在一些实施例中,地址通道转换模块,被配置为根据主设备的访问请求信号中的起始地址、突发长度和突发大小,确定主设备的访问请求信号对应的总传输数据量,并根据总传输数据量以及从设备的访问请求信号中的起始地址、突发大小,确定从设备的访问请求信号中的突发长度,包括:
地址通道转换模块,被配置为根据主设备的访问请求信号中的起始地址、突发长度和突发大小,确定以下计算式确定主设备的访问请求信号对应的总传输数据量:
Ax_Byte_NUM=2AxSIZE_M-mod(AxADDR_M,2AxSIZE_M)+ (AxLEN_M)2AxSIZE_M;/>
其中,Ax_Byte_NUM为主设备的访问请求信号对应的总传输数据量, AxADDR_M、AxLEN_M和AxSIZE_M分别为主设备的访问请求信号中的起始地址、突发长度和突发大小,mod为取模函数;
根据总传输数据量以及从设备的访问请求信号中的起始地址、突发大小,确定以下计算式确定从设备的访问请求信号中的突发长度:
AxLEN_S=floor((AxADDR_S+Ax_Byte_NUM-1)/2AxSIZE_S)-floor(AxADDR_S/2AxSIZE _S);
其中,AxLEN_S、 AxADDR_S和AxSIZE_S分别为从设备的访问请求信号中的突发长度、起始地址和突发大小,floor为向下取整函数。
上述总传输数据量的计算公式可以理解为,(2AxSIZE_M-mod(AxADDR_M,2AxSIZE_M))表示主设备的访问请求信号对应的突发传输的第一个时钟周期的有效数据量(即第一笔传输数据的有效数据量,第一个transfer的有效数据量),其中,2AxSIZE_M表示一个时钟周期,主设备的写数据通道或读数据通道传输多少个字节的数据,mod(AxADDR_M,2AxSIZE_M)表示在主设备的访问请求信号对应的突发传输的第一个时钟周期,从主设备的写数据通道的哪个字节开始写或者从主设备的读数据通道的哪个字节开始读,所以,2AxSIZE_M减去mod(AxADDR_M,2AxSIZE_M) 表示在主设备的访问请求信号对应的突发传输的第一个时钟周期,主设备的写数据通道或读数据通道传输多少个字节的数据。
而,主设备的访问请求信号对应的突发传输在第一个时钟周期外,还会传输AxLEN_M个时钟周期的数据,即还会传输AxLEN_M笔传输数据,也即还会传输AxLEN_M个transfer的数据,每笔传输数据(每个transfer)的数据量为2AxSIZE_M个字节,所以第一个时钟周期的数据量(2AxSIZE_M-mod(AxADDR_M,2AxSIZE_M))加上剩余周期的数据量(AxLEN_M)2AxSIZE_M,就得到主设备的访问请求信号对应的突发传输的总传输数据量为Ax_Byte_NUM=2AxSIZE_M-mod(AxADDR_M,2AxSIZE_M) + (AxLEN_M)/>2AxSIZE_M
在得到主设备的访问请求信号对应的总传输数据量Ax_Byte_NUM,也是对应的从设备的访问请求信号对应的总传输数据量Ax_Byte_NUM后,根据从设备的访问请求信号中的起始地址、突发大小,就可以知道总传输数据量Ax_Byte_NUM在从设备的写数据通道或读数据通道中需要几个时钟周期(即几次数据传输,也即几个transfer)才能传输完,从而得到对应的从设备的访问请求信号中的突发长度。上述计算从设备的访问请求信号中的突发长度的方式可以理解为:通过floor((AxADDR_S+Ax_Byte_NUM-1)/2AxSIZE_S)计算从设备的访问请求信号对应的突发传输的终止字节地址在从设备侧对应的对齐地址编号(宽度为2AxSIZE_S的对齐地址块的编号),通过floor(AxADDR_S/2AxSIZE_S) 计算从设备的访问请求信号对应的突发传输的起始字节地址在从设备侧对应的对齐地址编号,两个floor函数相减,即得到从设备的访问请求信号对应的突发传输在从设备侧所占的宽度为2AxSIZE_S的对齐地址块的数量减1,该数值即为对应的从设备的访问请求信号中的突发长度。
而访问请求信号中的其它信息(如标识、锁类型、缓存类型、保护类型、服务质量、区域标识符、用户信息或写入地址有效等信息),转换前的信息与转换后的信息相同,直通输出。
在一些实施例中,数据通道转换模块包括写数据通道转换模块和读数据通道转换模块;
写数据通道转换模块,被配置为在接收到主设备的一笔写传输数据时,以主设备的写访问请求信号中的突发大小和从设备的写访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔写传输数据进行一次或多次位宽转换操作,以转换成从设备的写传输数据并发送至从设备;
读数据通道转换模块,被配置为在接收到从设备的一笔读传输数据时,以主设备的读访问请求信号中的突发大小和从设备的读访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔读传输数据进行一次或多次位宽转换操作,以转换成主设备的读传输数据并发送至主设备。
其中,主设备的写传输数据为在主设备侧的写数据通道传输的数据,从设备的写传输数据为在从设备侧的写数据通道传输的数据;从设备的读传输数据为在从设备侧的读数据通道传输的数据,主设备的读传输数据为在主设备侧的读数据通道传输的数据。
在一些实施例中,数据通道转换模块,被配置为对接收到的该笔传输数据进行一次或多次位宽转换操作,包括:
数据通道转换模块,被配置为根据接收到的该笔传输数据对应的源设备的访问请求信号,确认接收到的该笔传输数据在源设备侧的起始地址,并基于最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作,以将接收到的该笔传输数据中的每个数据块逐块对应转换成目的设备的一笔传输数据中的数据块,并根据其对应的目的设备的访问请求信号,确定每个数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址;其中,目的设备的一笔传输数据由其对应的数据块打包而成;每个数据块的最大位宽为最大操作位宽;当接收到的该笔传输数据为写传输数据时,其对应的源设备为主设备,目的设备为从设备,当接收到的该笔传输数据为读传输数据时,其对应的源设备为从设备,目的设备为主设备;
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块,若是,则将数据通道转换模块对应源设备的READY信号拉高,以指示源设备发出下一笔传输数据;
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块,若是,则将数据通道转换模块对应目的设备的VALID信号拉高,以将该数据块对应的目的设备的一笔传输数据打包并发送至目的设备。
可以理解为,由于一突发传输对应的源设备的访问请求信号和目的设备的访问请求信号是已知的,对应的源设备的一突发传输的每一笔传输数据的大小和起始地址是可以确定的,对应的目的设备的一突发传输的每一笔传输数据的大小和起始地址也是可以确定的。
当源设备侧的突发大小小于源设备侧的突发大小时,源设备发出的一笔传输数据即为一个数据块,源设备发出的多少笔传输数据(多少个数据块,多少个时钟周期的传输数据)才能打包为目的设备侧的一笔传输数据是可以确定的;当源设备侧的突发大小大于源设备侧的突发大小时,源设备发出的一笔传输数据划分为多个数据块,一个数据块可打包为目的设备侧的一笔传输数据,即源设备发出的一笔传输数据分为多少笔(多少个时钟周期)的目的设备的传输数据,也是可以确定的。
所以,在源设备侧,根据当前时钟周期的序号以及该对应的一笔传输数据的起始地址,即可得到该数据块正在进行位宽转换操作的数据块是否为对应的一笔传输数据中的最后一个数据块。在目的设备侧,根据当前时钟周期的序号以及该对应的一笔传输数据的起始地址,即可得到该数据块是否对应的一笔传输数据中的最后一个数据块。
且通过对应源设备的READY信号和对应目的设备的VALID信号的控制,可以实现数据通道转换模块的输入输出吞吐量的匹配。
在一些实施例中,数据通道转换模块,还被配置为在当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据对应的LAST信号为高电平,且该数据块进行位宽转换操作后,对应的突发传输中已进行位宽转换操作的数据块的数量等于对应的主设备的访问请求信号中的突发长度和从设备的访问请求信号中的突发长度中的较大者加1时,将数据通道转换模块对应目的设备的VALID和LAST信号拉高,以将该数据块对应的目的设备的一突发传输的最后一笔传输数据打包并发送至目的设备,以及将数据通道转换模块对应源设备的READY信号拉高。
其中,当数据通道转换模块接收到的该笔传输数据为写传输数据时,源设备为主设备,目的设备为从设备,对应的,对应源设备的READY信号、LAST信号分别为WREADY_M信号、WLAST_M信号,对应目的设备的VALID信号、LAST信号分别为WVALID_S信号、WLAST_S信号;
当该笔传输数据为读传输数据时,源设备为从设备,目的设备为主设备,对应的,对应源设备的READY信号、LAST信号分别为RREADY_S信号、RLAST_S信号,对应目的设备的VALID信号、LAST信号为RVALID_M信号、RLAST_M信号。
当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据对应的LAST信号为高电平,说明当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据是对应的一突发传输在源设备侧的最后一笔传输数据,所以在该数据块进行位宽转换操作后,对应的突发传输中已进行位宽转换操作的数据块的数量等于对应的主设备的访问请求信号中的突发长度和从设备的访问请求信号中的突发长度中的较大者(也是主设备和从设备中,突发大小较小的设备对应的突发长度)加1时,说明此时(当前时钟周期)在打包该突发传输的最后一个数据块,所以将数据通道转换模块对应目的设备的VALID和LAST信号拉高,以将该数据块对应的目的设备的一突发传输的最后一笔传输数据打包并发送至目的设备。若此时数据通道转换模块对应源设备的READY信号未拉高,也可以同时将数据通道转换模块对应源设备的READY信号拉高。
在一些实施例中,对应的突发传输中已进行位宽转换操作的数据块的数量可通过对该突发传输进行位宽转换操作的时钟周期数进行计数来实现,例如,计数值初始值为0,该突发传输每进行一时钟周期的位宽转换操作,计数值加1。
在一些实施例中,数据通道转换模块,还被配置为在接收到源设备的一突发传输的第一笔传输数据且其对应的源设备的访问请求信号中的突发类型为WRAP时,将该突发传输对应的源设备的访问请求信号中的起始地址、目的设备的访问请求信号中的起始地址分别与源设备的突发大小和目的设备的突发大小对齐,分别得到该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址,以及对应的目的设备的第一笔传输数据在目的设备侧的起始地址;
当该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址小于对应的目的设备的第一笔传输数据在目的设备侧的起始地址时,将该突发传输对应的源设备的传输数据中,源设备的第一笔传输数据在源设备侧的起始地址,至与目的设备的第一笔传输数据在目的设备侧的起始地址对齐的地址之间的数据,进行暂存,并在该突发传输的传输数据的位宽转换过程中,当数据通道转换模块对应目的设备的VALID和LAST信号均拉高时,将暂存的数据打包至该突发传输对应的目的设备的最后一笔传输数据中。
上述即为WRAP数据ReAligne操作的数据拼接过程。
可以理解为,当该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址(源设备的AxADDR)小于对应的目的设备的第一笔传输数据在目的设备侧的起始地址(目的设备的AxADDR)时,源设备的传输数据中在源设备侧的起始地址(源设备的AxADDR)至与目的设备侧的起始地址(目的设备的AxADDR)对齐的地址之间的数据(即源设备的传输数据中在源设备的AxADDR至目的设备的AxADDR之间的数据),不会在位宽转换的时钟周期内就打包至目的设备,同一突发传输下,数据通道转换模块打包至目的设备的第一笔传输数据的第一个数据块在源设备侧的起始地址需要与其在目的设备侧的起始地址对齐,该数据块之前进行转换操作的数据块(即将源设备的第一笔传输数据在源设备侧的起始地址至与目的设备的第一笔传输数据在目的设备侧的起始地址对齐的地址之间的数据,也即源设备的AxADDR至目的设备的AxADDR之间的数据)会暂存在数据通道转换模块中,当数据通道转换模块对应目的设备的VALID和LAST信号均拉高时,将暂存的数据打包至对应的目的设备的同一突发传输的最后一笔传输数据中。
也即,WRAP类型下的,突发传输中AxADDR_M与AxADDR_S之间非对齐的数据,会暂存在数据通道转换模块中,然后在数据通道转换模块打包最后一笔传输数据时进行打包。
需要说明的是,如果WRAP类型下,一突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址小于对应的目的设备的第一笔传输数据在目的设备侧的起始地址时,将该突发传输下源设备的第一笔传输数据整体缓存后,该突发传输下源设备的第二笔传输数据在源设备侧的起始地址仍然小于对应的目的设备的第一笔传输数据在目的设备侧的起始地址,那么继续对未对齐的数据块进行缓存,以此类推,直至某个数据块在源设备侧的起始地址与对应的目的设备的第一笔传输数据在目的设备侧的起始地址对齐时,结束数据块的缓存操作。
上述方案可以进行INCR和WRAP传输类型的位宽转换操作,适用性强。
在一些实施例中,上述提及的源设备侧的起始地址均为与对应的源设备的访问请求信号中的突发大小(AxSize)对应的位宽对齐的对齐起始地址,即上述提及的源设备侧的起始地址均为对应的2AxSize的自然数倍。上述提及的目的设备侧的起始地址均为与对应的目的设备的访问请求信号中的突发大小(AxSize)对应的位宽对齐的对齐起始地址,即上述提及的目的设备侧的起始地址均为对应的2AxSize的自然数倍。
对应的,数据通道转换模块,被配置为根据接收到的该笔传输数据对应的源设备的访问请求信号,确认接收到的该笔传输数据在源设备侧的起始地址,包括:
数据通道转换模块,被配置为在接收到源设备的一突发传输的第一笔传输数据时,将该突发传输对应的源设备的访问请求信号中的起始地址与突发大小对齐,得到该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址;
每次将数据通道转换模块对应源设备的READY信号拉高时,将当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址加上对应的源设备的访问请求信号中的突发大小对应的位宽,得到同一突发传输的下一时钟周期接收到的源设备的下一笔传输数据在源设备侧的起始地址。
可以理解为,在同一突发传输的数据的位宽转换操作过程中,若当前时钟周期内数据通道转换模块对应源设备的READY信号未拉高时,说明下一时钟周期进行位宽转换操作的数据块与当前时钟周期进行位宽转换操作的数据块同属于源设备侧的同一笔传输数据,对应的源设备的一笔传输数据在源设备侧的起始地址是相同的,若当前时钟周期内数据通道转换模块对应源设备的READY信号拉高时,说明下一时钟周期进行位宽转换操作的数据块所在的源设备的一笔传输数据是当前时钟周期进行位宽转换操作的数据块所在的源设备的一笔传输数据的下一笔传输数据。因此,每次将数据通道转换模块对应源设备的READY信号拉高时,将当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址加上对应的源设备的访问请求信号中的突发大小对应的位宽,得到同一突发传输的下一时钟周期接收到的源设备的下一笔传输数据在源设备侧的起始地址,也即得到下一时钟周期进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址,否则下一时钟周期进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址与当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址相同。
以及对应的,数据通道转换模块,被配置为确定每个数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,包括:
数据通道转换模块,被配置为在接收到源设备的一突发传输的第一笔传输数据时,将该突发传输对应的目的设备的访问请求信号中的起始地址与目的设备的突发大小对齐,得到该突发传输对应的目的设备的第一笔传输数据在目的设备侧的起始地址;
每次将数据通道转换模块对应目的设备的VALID信号拉高时,将当前时钟周期正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址加上目的设备的访问请求信号中的突发大小对应的位宽,得到同一突发传输的下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,否则下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址与当前时钟周期正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址相同。
同理,在同一突发传输的数据的位宽转换操作过程中,若当前时钟周期内数据通道转换模块对应目的设备的VALID信号未拉高时,说明下一时钟周期进行位宽转换操作的数据块与当前时钟周期进行位宽转换操作的数据块同属于目的设备侧的同一笔传输数据,对应的目的设备的一笔传输数据在源设备侧的起始地址是相同的,若当前时钟周期内数据通道转换模块对应目的设备的READY信号拉高时,说明下一时钟周期进行位宽转换操作的数据块所在的目的设备的一笔传输数据是当前时钟周期进行位宽转换操作的数据块所在的目的设备的一笔传输数据的下一笔传输数据。因此,每次将数据通道转换模块对应目的设备的VALID信号拉高时,将当前时钟周期正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址加上对应的目的设备的访问请求信号中的突发大小对应的位宽,得到下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,否则下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址与当前时钟周期正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址相同。
其中,当对应的源设备的访问请求信号中的突发类型为INCR时,每次将数据通道转换模块对应源设备的READY信号拉高时,同一突发传输的下一时钟周期接收到的源设备的下一笔传输数据在源设备侧的起始地址(即下一时钟周期进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址)为:
NXT_ADDR_M=CUR_ADDR_M+2AxSIZE_M(源设备为主设备);或,
NXT_ADDR_S=CUR_ADDR_S+2AxSIZE_S(源设备为从设备);
其中,NXT_ADDR_M和CUR_ADDR_M分别为下一时钟周期和当前时钟周期进行位宽转换操作的数据块对应的主设备的一笔传输数据在主设备侧的起始地址,AxSIZE_M为对应的主设备的访问请求信号中的突发大小;NXT_ADDR_S和CUR_ADDR_S分别为下一时钟周期和当前时钟周期进行位宽转换操作的数据块对应的从设备的一笔传输数据在从设备侧的起始地址,AxSIZE_S为对应的从设备的访问请求信号中的突发大小;
同理,每次将数据通道转换模块对应目的设备的VALID信号拉高时,下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址为:
NXT_ADDR_M=CUR_ADDR_M+2AxSIZE_M(目的设备为主设备);或,
NXT_ADDR_S=CUR_ADDR_S+2AxSIZE_S(目的设备为从设备)。
当对应的源设备的访问请求信号中的突发类型为WRAP时,每次将数据通道转换模块对应源设备的READY信号拉高时,按照突发类型为INCR时同样的公式,来计算同一突发传输的下一时钟周期接收到的源设备的下一笔传输数据在源设备侧的起始地址(即下一时钟周期进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址),但是计算结果中下一时钟周期接收到的源设备的下一笔传输数据在源设备侧的起始地址只更新最低的预设个数的比特位,即得到的起始地址中其它比特位与当前时钟周期对应的起始地址中的对应比特位保持不变;预设个数等于[AxSIZE_M+log2( (AxLEN_M+1)) (源设备为主设备)或[AxSIZE_S+log2( (AxLEN_S+1)) (源设备为从设备),AxSIZE_M和AxLEN_M分别为对应的主设备的访问请求信号中的突发大小和突发长度,AxSIZE_S和AxLEN_S分别为对应的从设备的访问请求信号中的突发大小和突发长度;
同理,当对应的源设备的访问请求信号中的突发类型为WRAP时,每次将数据通道转换模块对应目的设备的VALID信号拉高时,按照突发类型为INCR时同样的公式,来计算同一突发传输的下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,但是计算结果中下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址只更新最低的预设个数的比特位,即得到的起始地址中其它比特位与当前时钟周期对应的起始地址中的对应比特位保持不变;预设个数等于[AxSIZE_M+log2( (AxLEN_M+1)) (目的设备为主设备)或[AxSIZE_S+log2((AxLEN_S+1)) (目的设备为从设备)。
在一些实施例中,数据通道转换模块,被配置为基于最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作,包括:
数据通道转换模块,被配置为基于最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作并按照低位到高位的顺序,对接收到的该笔传输数据中的各个数据块进行编号;
数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块;在当前时钟周期,根据正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块,包括:
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号;
根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,确定正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块;
根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块。
可以理解为,如前,当源设备侧的突发大小小于源设备侧的突发大小时,源设备发出的一笔传输数据即为一个数据块,源设备发出的多少笔传输数据(多少个数据块,多少个时钟周期的传输数据)才能打包为从设备侧的一笔传输数据是可以确定的;当源设备侧的突发大小大于源设备侧的突发大小时,源设备发出的一笔传输数据划分为多个数据块,一个数据块即可打包为目的设备侧的一笔传输数据,即源设备发出的一笔传输数据分为多少笔(多少个时钟周期)的从设备的传输数据,也是可以确定的。
所以,在确认了正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号之后,就知道了正在进行位宽转换操作的数据块是对应的源设备的一笔传输数据中的第几个数据块,以及是对应的目的设备的一笔传输数据中的第几个数据块。
而当源设备侧的突发大小小于源设备侧的突发大小时,每个时钟周期进行位宽转换的数据块对应的源设备的一笔传输数据的起始地址在每个时钟周期都会进行更新,所以根据在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址,不仅可以得到正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,还可以得到正在进行位宽转换操作的数据块在整个突发传输的全部传输数据中的序号(即整个突发传输中的第几个数据块),进而得到正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号。当源设备侧的突发大小大于源设备侧的突发大小时,同理可以得到正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号。
在一些实施例中,数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号,包括:
数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,通过如下计算式确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号:
BLK_INDEX_M=mod(CUR_ADDR_MAX/2AxSIZE_MIN,
2AxSIZE_MAX_M-AxSIZE_MIN);
BLK_INDEX_S= mod(CUR_ADDR_MAX/2AxSIZE_MIN,
2AxSIZE_S-AxSIZE_MIN);
AxSIZE_MAX_M= log2(WIDTH_ M);
其中,BLK_INDEX_M和BLK_INDEX_S分别为正在进行位宽转换操作的数据块在对应的主设备的一笔传输数据中的编号,以及在对应的从设备的一笔传输数据中的编号;当正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小小于对应的从设备的访问请求信号中的突发大小时,CUR_ADDR_MAX等于正在进行位宽转换操作的数据块对应的主设备的一笔传输数据在主设备侧的起始地址;当正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小大于对应的从设备的访问请求信号中的突发大小时,CUR_ADDR_MAX等于正在进行位宽转换操作的数据块对应的从设备的一笔传输数据在从设备侧的起始地址;AxSIZE_MIN为正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小与对应的从设备的访问请求信号中的突发大小中的较小者,WIDTH_ M为主设备的最大传输位宽,单位为字节;AxSIZE_S为正在进行位宽转换操作的数据块对应的从设备的访问请求信号中的突发大小。
上述计算BLK_INDEX_M的公式中,(CUR_ADDR_MAX/2AxSIZE_MIN)计算的是正在进行位宽转换操作的数据块在整个突发传输的全部传输数据中的序号,2AxSIZE_MAX_M-AxSIZE_MIN计算的是主设备的最大传输位宽WIDTH_M会被拆分成2AxSIZE_MAX_M-AxSIZE_MIN个数据块(该数据与主设备的数据位宽WIDTH_M相关而与AxSIZE_M无关是因为,当Narrow传输时,对应的数据必须符合AXI要求放到对应的字节位置上,因此通过WIDTH_M来计算),mod(CUR_ADDR_MAX/2AxSIZE _MIN, 2AxSIZE_MAX_M-AxSIZE_MIN)即可得到正在进行位宽转换操作的数据块在对应的主设备的一笔传输数据中的编号。
上述计算BLK_INDEX_S的公式中,(CUR_ADDR_MAX/2AxSIZE_MIN)计算的是正在进行位宽转换操作的数据块在整个突发传输的全部传输数据中的序号,2AxSIZE_S-AxSIZE_MIN计算的是从设备的一笔传输数据会被拆分成2AxSIZE_S-AxSIZE_MIN个数据块(从设备侧不会有Narrow传输,所以2AxSIZE_S就是对应的从设备的一笔传输数据的完整字节数)。
其中,根据正在进行位宽转换操作的数据块为主设备发出的写传输数据或是从设备发出的读传输数据时,源设备、目的设备与主设备、从设备的对应关系,选择对应的BLK_INDEX_M和BLK_INDEX_S的计算公式来计算正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号。
上述方案可以统一处理Narrow和非Narrow Burst传输类型,适用性强。
对应的,数据通道转换模块,具体被配置为根据正在进行位宽转换操作的数据块在对应的主设备的一笔传输数据中的编号BLK_INDEX_M以及对应的主设备的访问请求信号中的突发大小AxSIZE_M、对应的从设备的访问请求信号中的突发大小AxSIZE_S,计算[mod(BLK_INDEX_M,2AxSIZE_M-AxSIZE_MIN)+1]是否等于2AxSIZE_M-AxSIZE_MIN,其中,AxSIZE_MIN为正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小AxSIZE_M与对应的从设备的访问请求信号中的突发大小AxSIZE_S中的较小者;
若是,则判断正在进行位宽转换操作的数据块为对应的主设备的一笔传输数据中的最后一个数据块,否则,判断正在进行位宽转换操作的数据块不为对应的主设备的一笔传输数据中的最后一个数据块;
根据正在进行位宽转换操作的数据块在对应的从设备的一笔传输数据中的编号BLK_INDEX_S以及对应的主设备的访问请求信号中的突发大小AxSIZE_M、对应的从设备的访问请求信号中的突发大小AxSIZE_S,计算(BLK_INDEX_S+1)是否等于2AxSIZE_S-AxSIZE_MIN;其中,AxSIZE_MIN为正在进行位宽转换操作的数据块对应的主设备的访问请求信号中的突发大小AxSIZE_M与对应的从设备的访问请求信号中的突发大小AxSIZE_S中的较小者;
若是,则判断正在进行位宽转换操作的数据块为对应的从设备的一笔传输数据中的最后一个数据块,否则,判断正在进行位宽转换操作的数据块不为对应的从设备的一笔传输数据中的最后一个数据块。
上述计算[mod(BLK_INDEX_M,2AxSIZE_M-AxSIZE_MIN)+1]是否等于2AxSIZE_M-AxSIZE_MIN的公式中,考虑到主设备侧的Narrow传输,所以BLK_INDEX_M需要取模,即mod(BLK_INDEX_M,2AxSIZE_M-AxSIZE_MIN)得到该数据块在对应的主设备的一笔传输数据中的真正序号(后面加1是因为数据块的编号是从0开始的),2AxSIZE_M-AxSIZE_MIN计算的是主设备的一笔传输数据会被拆成2AxSIZE_M-AxSIZE_MIN个数据块,所以当[mod(BLK_INDEX_M,2AxSIZE_M-AxSIZE_MIN)+1]等于2AxSIZE _M-AxSIZE_MIN时,说明该数据块是对应的主设备的一笔传输数据中的最后一个数据块。
而计算(BLK_INDEX_S+1)是否等于2AxSIZE_S-AxSIZE_MIN的公式中,2AxSIZE_S-AxSIZE_MIN计算的是从设备的一笔传输数据会被拆分成2AxSIZE_S-AxSIZE_MIN个数据块,所以当(BLK_INDEX_S+1)是否等于2AxSIZE_S-AxSIZE_MIN时,说明该数据块是对应的从设备的一笔传输数据中的最后一个数据块。
其中,根据正在进行位宽转换操作的数据块为主设备发出的写传输数据或是从设备发出的读传输数据时,源设备、目的设备与主设备、从设备的对应关系,选择对应的判断条件来确定正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块,以及判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块。
在一些实施中,由上述对传输数据中的数据块进行编号的实施例可知,正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号,与根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址以及源设备侧的突发大小和目的设备侧的突发大小有关,而这些信息在上一时钟周期结束前都是可以确定的(即当前时钟周期开始前都是可以确定的),所以在一些实施例中,在当前时钟周期开始时,可以根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,确定正在进行位宽转换操作的数据块在其对应的源设备的一笔传输数据中的比特位范围;
根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号,确定正在进行位宽转换操作的数据块在其对应的目的设备的一笔传输数据中的比特位范围;
根据正在进行位宽转换操作的数据块在其对应的源设备的一笔传输数据中的比特位范围以及在其对应的目的设备的一笔传输数据中的比特位范围,将该数据块每个比特位上的数据转换成对应的目的设备的一笔传输数据中对应比特位上的数据。
可以理解为,由于数据块的位宽(大小)是已知的,即最大操作位宽,且源设备的一笔传输数据和目的设备的一笔传输数据被划分为几个数据块是可以确定的,所以源设备的一笔传输数据中每个数据块对应的比特位范围,目的设备的一笔传输数据中每个数据块对应的比特位范围,都是可以确定的,从而根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,就可以确定正在进行位宽转换操作的数据块在其对应的源设备的一笔传输数据中的比特位范围;根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号,就可以确定正在进行位宽转换操作的数据块在其对应的目的设备的一笔传输数据中的比特位范围。
具体的,正在进行位宽转换操作的数据块在其对应的主设备的一笔传输数据中的比特位范围为[(BLK_INDEX_M+1)DATA_BLOCK-1:BLK_INDEX_M/>DATA_BLOCK],其中,BLK_INDEX_M为正在进行位宽转换操作的数据块在对应的主设备的一笔传输数据中的编号,DATA_BLOCK为最大操作位宽;
正在进行位宽转换操作的数据块在其对应的从设备的一笔传输数据中的比特位范围为:[(BLK_INDEX_S+1)DATA_BLOCK-1:BLK_INDEX_S/>DATA_BLOCK],其中,BLK_INDEX_S为正在进行位宽转换操作的数据块在对应的从设备的一笔传输数据中的编号。
其中,根据正在进行位宽转换操作的数据块为主设备发出的写传输数据或是从设备发出的读传输数据时,源设备、目的设备与主设备、从设备的对应关系,选择对应的计算公式来计算正在进行位宽转换操作的数据块在其对应的源设备的一笔传输数据中的比特位范围,以及正在进行位宽转换操作的数据块在其对应的目的设备的一笔传输数据中的比特位范围。
需要说明的是,上述各个计算公式中的“Ax”相关的参数,当对应写传输数据时,“Ax”为“AW”,对应写突发传输相关的参数,当对应读传输数据时,“Ax”为“AR”,对应读突发传输相关的参数。
下面给出上述数据传输装置在以下3种具体场景下的位宽转换操作的具体过程:场景1、突发类型为INCR且非Narrow burst传输下,大位宽转小位宽;场景2、突发类型为INCR且Narrow burst传输下,小位宽转大位宽;场景3、突发类型为WRAP且Narrow burst传输下,小位宽转大位宽。
场景1、突发类型为INCR且非Narrow burst传输下,主设备侧大位宽(256bit位宽)转从设备侧小位宽(32bit位宽)。
a)写地址(AW)通道转换:
转换前,主设备的访问请求信号中:起始地址AWADDR_M=0x0037,突发大小AWSIZE_M=5,突发长度AWLEN_M=2;
转换后,从设备的访问请求信号中:起始地址AWADDR_S=0x0037,突发大小AWSIZE_S=2;
总传输数据量AW_Byte_NUM=25-mod(0x0037,25)+225= 73Bytes;
转换后,从设备的访问请求信号中:突发长度AWLEN_S= floor(0x0037+73-1)/22-floor(0x0037)/22=18。
b)写数据(W)通道转换:
如图5和图6所示,分别为位宽转换前后的数据排布,基于前面描述的技术方案:
主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者AWSIZE_MIN=min(5,2)=2,对应的最大操作位宽WDATA_BLOCK=22=4Bytes,AWSIZE_MAX_M=log2(32)=5;
第1个时钟周期CUR_ADDR_M=floor(0x0037/25)25=0x0020;
第1个时钟周期CUR_ADDR_S=floor(0x0037/22)22=0x0034;
第1个时钟周期CUR_ADDR_MAX=0x0034,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0034/22,25-2)=5,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0034/22,1)=0,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(5+1)4-1:5/>4],即取当前周期WDATA_M的20~23共4个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(0+1)/>4-1:0/>4],即取当前周期WDATA_S的0~3共4个字节(大位宽转小位宽,所以小位宽是一次填满的,符合预期);
第1个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件不满足,所以WREADY_M不拉高,即M端的该笔传输数据未完全被取完,数据保持住;CUR_ADDR_M不更新;
第1个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件满足,所以WVALID_S拉高,即S端数据当前周期完成一笔传输数据的打包,输出一笔转换后数据;CUR_ADDR_S在下个周期更新为NXT_ADDR_S=0x0034+22=0x0038;
第1个时钟周期WLAST_M和WREADY_M未拉高,所以WLAST_S不拉高,继续下个周期处理;
第2个时钟周期CUR_ADDR_M保持上个周期数据,即0x0020;
第2个时钟周期CUR_ADDR_S更新为上个周期的NXT_ADDR_S即0x0038;
第2个时钟周期CUR_ADDR_MAX= 0x0038,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0038/22,25-2)=6,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0038/22,1)=0,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(6+1)4-1:6/>4],即取当前周期WDATA_M的24~27共4个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(0+1)/>4-1:0/>4],即取当前周期WDATA_S的0~3共4个字节(大位宽转小位宽,所以小位宽是一次填满的,符合预期);
第2个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件不满足,所以WREADY_M不拉高,即M端的该笔传输数据未完全被取完,数据保持住;CUR_ADDR_M不更新;
第2个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件满足,所以WVALID_S拉高,即S端数据当前周期完成一笔传输数据的打包,输出一笔转换后数据;CUR_ADDR_S在下个周期更新为NXT_ADDR_S=0x0038+22=0x003C;
第2个时钟周期WLAST_M和WREADY_M未拉高,所以WLAST_S不拉高,继续下个周期处理;
第3个时钟周期CUR_ADDR_M保持上个周期数据,即0x0020;
第3个时钟周期CUR_ADDR_S更新为上个周期的NXT_ADDR_S即0x003C;
第3个时钟周期CUR_ADDR_MAX=0x003C,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x003C/22,25-2)=7,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x003C/22,1)=0,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(7+1)4-1:7/>4],即取当前周期WDATA_M的28~31共4个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(0+1)/>4-1:0/>4],即取当前周期WDATA_S的0~3共4个字节(大位宽转小位宽,所以小位宽是一次填满的,符合预期);
第3个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x0020+25=0x0040;
第3个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件满足,所以WVALID_S拉高,即S端数据当前周期完成一笔传输数据的打包,输出一笔转换后数据;CUR_ADDR_S在下个周期更新为NXT_ADDR_S=0x003C+22=0x0040;
第3个时钟周期WLAST_M未拉高,所以WLAST_S不拉高,继续下个周期处理;
以此类推,第19个时钟周期CUR_ADDR_M为0x0060,CUR_ADDR_S为0x007C;
第19个时钟周期CUR_ADDR_MAX=0x007C,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M= mod(0x007C/22,25-2)=7,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x007C/22,1)=0,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(7+1)4-1:7/>4],即取当前周期WDATA_M的28~31共4个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(0+1)/>4-1:0/>4],即取当前周期WDATA_S的0~3共4个字节(大位宽转小位宽,所以小位宽是一次填满的,符合预期);
第19个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x0060+25=0x0080;
第19个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件满足,所以WVALID_S拉高,即S端数据当前周期完成一笔传输数据的打包,输出一笔转换后数据;CUR_ADDR_S在下个周期更新为NXT_ADDR_S=0x007C+22=0x0080;
第19个时钟周期转换前该数据块(W数据)对应WLAST_M为高电平(为1)且转换后该突发传输中已进行位宽转换操作的数据块的个数与AWLEN_S对应(等于AWLEN_S+1),所以WLAST_S和WVALID_S拉高,该突发传输(Burst)的位宽转换操作结束;后续重新处理新的Burst。
c)读地址(AR)通道转换:
转换前,主设备的访问请求信号中:起始地址ARADDR_M=0x00A9,突发大小ARSIZE_M=5,突发长度AWLEN_M=1;
转换后,从设备的访问请求信号中:起始地址ARADDR_S=0x00A9,突发大小ARSIZE_S=2;
总传输数据量AR_Byte_NUM=25-mod(0x00A9,25)+125=55Bytes;
转换后,从设备的访问请求信号中:突发长度ARLEN_S=floor((0x00A9+55-1)/22)- floor(0x00A9/22)=13。
d)读数据(R)通道转换:
如下面图7和图8所示,分别为位宽转换前后的数据排布,基于前面描述的技术方案:
基于读传输数据的标识RID在缓存查找表中索引得到ARADDR_M=0x00A9,ARSIZE_M=5,ARSIZE_MAX_M=log2(32)=5;
主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者ARSIZE_MIN=min(5,2)=2,对应的最大操作位宽RDATA_BLOCK=22=4Bytes;
第1个时钟周期CUR_ADDR_M=floor(0x00A9/25)25=0x00A0;
第1个时钟周期CUR_ADDR_S=floor(0x00A9/22)22=0x00A8;
第1个时钟周期CUR_ADDR_MAX= 0x00A8,该时钟周期进行位宽转换操作的数据块(Block)在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x00A8/22,1)=0,以及在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x00A8/22,25-2)=2,该数据块在其对应的从设备的一笔传输数据RDATA_S中的比特位范围为[(0+1)4-1:0/>4],即取当前周期RDATA_S的0~4共4个字节;该数据块在其对应的主设备的一笔传输数据RDATA_M中的比特位范围为[(2+1)/>4-1:2/>4],即取当前周期RDATA_M的8~11共4个字节;
第1个时钟周期(BLK_INDEX_S+1)==2ARSIZE_S-ARSIZE_MIN条件满足,所以RREADY_S拉高,即S端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_S在下个周期更新为NXT_ADDR_S==0x00A8+22=0x00AC;
第1个时钟周期mod(BLK_INDEX_M,2ARSIZE_M-ARSIZE_MIN)+1==2ARSIZE_M-ARSIZE_MIN条件不满足,所以RVALID_M不拉高,即M端数据当前周期未完全组包成一笔传输数据,数据保持住;CUR_ADDR_M不更新;
第1个时钟周期RLAST_S未拉高,所以RLAST_M不拉高,继续下个周期处理;
以此类推,第14个时钟周期CUR_ADDR_M为0x00C0,CUR_ADDR_S为0x00DC;
第14个时钟周期CUR_ADDR_MAX=0x00DC,该时钟周期进行位宽转换操作的数据块(Block)在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x00DC/22,1)=0,以及在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x00DC/22,25-2)=7,该数据块在其对应的从设备的一笔传输数据RDATA_S中的比特位范围为[(0+1)4-1:0/>4],即取当前周期RDATA_S的0~4共4个字节;该数据块在其对应的主设备的一笔传输数据RDATA_M中的比特位范围为[(7+1)/>4-1:7/>4],即取当前周期RDATA_M的28~31共4个字节;
第14个时钟周期(BLK_INDEX_S+1)==2ARSIZE_S-ARSIZE_MIN条件满足,所以RREADY_S拉高,即S端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_S在下个周期更新为NXT_ADDR_S=0x00DC+22=0x00E0;
第14个时钟周期mod(BLK_INDEX_M,2ARSIZE_M-ARSIZE_MIN)+1==2ARSIZE_M-ARSIZE_MIN条件满足,所以RVALID_M拉高,即M端数据完全组包完,输出一笔转换后数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x00C0+25=0x00E0;
第14个时钟周期转换前该数据块(R数据)对应RLAST_S为1且转换后该突发传输中已进行位宽转换操作的数据块的个数与ARLEN_S对应(等于ARLEN_S+1),所以RVALID_M和RLAST_M拉高,该突发传输(Burst)的位宽转换操作结束;后续重新处理新的Burst。
场景2、突发类型为INCR且Narrow burst传输(主设备侧的最大传输位宽为128bit,突发大小为64bit)下,主设备侧小位宽(64bit位宽)转从设备侧大位宽(256bit位宽)。
a)写地址(AW)通道转换:
转换前,主设备的访问请求信号中:起始地址AWADDR_M=0x002A,突发大小AWSIZE_M=3,突发长度AWLEN_M=3;
转换后,从设备的访问请求信号中:起始地址AWADDR_S=0x002A,突发大小AWSIZE_S=5;
总传输数据量AW_Byte_NUM=23-mod(0x002A,23)+323=30Bytes
转换后,从设备的访问请求信号中:突发长度AWLEN_S=floor((0x002A+30-1)/25)-floor(0x002A/25)=1。
b)写数据(W)通道转换:
如图9和图10所示,分别为位宽转换前后的数据排布,基于前面描述的技术方案:
主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者AWSIZE_MIN=min(3,5)=3,对应的最大操作位宽WDATA_BLOCK=23=8Bytes,AWSIZE_MAX_M=log2(16)=4;
第1个时钟周期CUR_ADDR_M=floor(0x002A/23)23=0x0028;
第1个时钟周期CUR_ADDR_S=floor(0x002A/25)25=0x0020;
第1个时钟周期CUR_ADDR_MAX=0x0028,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0028/23,24-3)=1,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0028/23,25-3)=1,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(1+1)8-1:1/>8],即取当前周期WDATA_M的8~15共8个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(1+1)/>8-1:1/>8],即取当前周期WDATA_S的8~15共8个字节;
第1个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x0028+23=0x0030;
第1个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件不满足,所以WVALID_S不拉高,即S端数据当前周期未完全组包成一笔传输数据;CUR_ADDR_S不更新;
第1个时钟周期WLAST_M未拉高,所以WLAST_S不拉高,继续下个周期处理;
第2个时钟周期CUR_ADDR_M更新为上个周期的NXT_ADDR_M即0x0030;
第2个时钟周期CUR_ADDR_S保持上个周期数值即0x0020;
第2个时钟周期CUR_ADDR_MAX= 0x0030,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0030/23,24-3)=0,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0030/23,25-3)=2,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(0+1)8-1:0/>8],即取当前周期WDATA_M的0~7共8个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(2+1)/>8-1:2/>8],即取当前周期WDATA_S的16~23共8个字节;
第2个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x0030+23=0x0038;
第2个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件不满足,所以WVALID_S不拉高,即S端数据当前周期未完全组包成一笔传输数据;CUR_ADDR_S不更新;
第2个时钟周期WLAST_M未拉高,所以WLAST_S不拉高,继续下个周期处理;
第3个时钟周期CUR_ADDR_M更新为上个周期的NXT_ADDR_M即0x0038;
第3个时钟周期CUR_ADDR_S保持上个周期数值即0x0020;
第3个时钟周期CUR_ADDR_MAX= 0x0038,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0038/23,24-3)=1,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0038/23,25-3)=3,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(1+1)8-1:1/>8],即取当前周期WDATA_M的8~15共8个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(3+1)/>8-1:3/>8],即取当前周期WDATA_S的24~31共8个字节;
第3个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x0038+23=0x0040;
第3个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件满足,所以WVALID_S拉高,即S端数据当前周期完成一笔传输数据的打包;CUR_ADDR_S在下个周期更新为NXT_ADDR_S=0x0020+25=0x0040;
第3个时钟周期,WLAST_M未拉高,所以WLAST_S不拉高,继续下个周期处理;
第4个时钟周期CUR_ADDR_M更新为上个周期的NXT_ADDR_M即0x0040;
第4个时钟周期CUR_ADDR_S更新为上个周期的NXT_ADDR_S即0x0040;
第4个时钟周期CUR_ADDR_MAX=0x0040,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0040/23,24-3)=0,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0040/23,25-3)=0,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(0+1)8-1:0/>8],即取当前周期WDATA_M的0~7共8个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(0+1)/>8-1:0/>8],即取当前周期WDATA_S的0~7共8个字节;
第4个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端数据完全被取完,等待下一笔数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x0040+23=0x0048;
第4个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件不满足,所以WVALID_S不拉高,即S端数据当前周期未完成一笔传输数据的打包;CUR_ADDR_S不更新;
第4个时钟周期转换前该数据块(W数据)对应WLAST_M为1且转换后该突发传输中已进行位宽转换操作的数据块的个数与AWLEN_M对应(等于AWLEN_M+1),所以WLAST_S和WVALID_S拉高,该突发传输(Burst)的位宽转换操作结束;后续重新处理新的Burst。
c)读地址(AR)通道转换:
转换前,主设备的访问请求信号中:起始地址ARADDR_M=0x009E,突发大小AWSIZE_M=1,突发长度AWLEN_M=2;
转换后,从设备的访问请求信号中:起始地址AWADDR_S=0x009E,突发大小AWSIZE_S=5;
总传输数据量AW_Byte_NUM=21-mod(0x009E,21)+221=6Bytes;
转换后,从设备的访问请求信号中:突发长度AWLEN_S=floor((0x009E+6-1)/25)-floor(0x009E/25)=1。
d)读数据(R)通道转换:
如下面图11和图12所示,分别为位宽转换前后的数据排布,基于前面描述的技术方案:
基于读传输数据的标识RID在读请求缓存查找表中索引得到ARADDR_M=0x009E,ARSIZE_M=1,ARSIZE_MAX_M=log2(16)=4;(读请求缓存查找表的索引在后面通过单独的示例进行介绍)
主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者ARSIZE_MIN=min(1,5)=1,对应的最大操作位宽RDATA_BLOCK=21=2Bytes;
第1个时钟周期CUR_ADDR_M=floor(0x009E/21)21=0x009E;
第1个时钟周期CUR_ADDR_S=floor(0x009E/25)25=0x0080;
第1个时钟周期CUR_ADDR_MAX=0x009E,该时钟周期进行位宽转换操作的数据块(Block)在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x009E/21,25-1)=15,以及在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x009E/21,24-1)=7,该数据块在其对应的从设备的一笔传输数据RDATA_S中的比特位范围为[(15+1)2-1:15/>2],即取当前周期RDATA_S的30~31共2个字节;该数据块在其对应的主设备的一笔传输数据RDATA_M中的比特位范围为[(7+1)/>2-1:7/>2],即取当前周期RDATA_M的14~15共2个字节;
第1个时钟周期(BLK_INDEX_S+1)==2ARSIZE_S-ARSIZE_MIN条件满足,所以RREADY_S拉高,即S端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_S在下个周期更新为NXT_ADDR_S=0x0080+25=0x00A0;
第1个时钟周期mod(BLK_INDEX_M,2ARSIZE_M-ARSIZE_MIN)+1==2ARSIZE_M-ARSIZE_MIN条件满足,所以RVALID_M拉高,即M端数据完全组包完;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x009E+21=0x00A0;
第1个时钟周期RLAST_S未拉高,所以RLAST_M不拉高,继续下个周期处理;
第2个时钟周期CUR_ADDR_M更新为上个周期的NXT_ADDR_M即0x00A0;
第2个时钟周期CUR_ADDR_S更新为上个周期的NXT_ADDR_S即0x00A0;
第2个时钟周期CUR_ADDR_MAX=0x00A0,该时钟周期进行位宽转换操作的数据块(Block)在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x00A0/21,25-1)=0,以及在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x00A0/21,24-1)=0,该数据块在其对应的从设备的一笔传输数据RDATA_S中的比特位范围为[(0+1)2-1:0/>2],即取当前周期RDATA_S的0~1共2个字节;该数据块在其对应的主设备的一笔传输数据RDATA_M中的比特位范围为[(0+1)/>2-1:0/>2],即取当前周期RDATA_M的0~1共2个字节;
第2个时钟周期(BLK_INDEX_S+1)==2ARSIZE_S-ARSIZE_MIN条件不满足,所以RREADY_S不拉高,即S端的该笔传输数据未完全被取完,数据保持住;CUR_ADDR_S在下个周期保持不变;
第2个时钟周期mod(BLK_INDEX_M,2ARSIZE_M-ARSIZE_MIN)+1==2ARSIZE_M-ARSIZE_MIN条件满足,所以RVALID_M拉高,即M端数据完全组包完;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=0x00A0+21=0x00A2;
第2个时钟周期RLAST_S未拉高,所以RLAST_M不拉高,继续下个周期处理;
第3个时钟周期CUR_ADDR_M更新为上个周期的NXT_ADDR_M即0x00A2;
第3个时钟周期CUR_ADDR_S保持上个周期值即0x00A0;
第3个时钟周期CUR_ADDR_MAX=0x00A2,该时钟周期进行位宽转换操作的数据块(Block)在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x00A2/21,25-1)=1,以及在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x00A2/21,24-1)=1,该数据块在其对应的从设备的一笔传输数据RDATA_S中的比特位范围为[(1+1)2-1:1/>2],即取当前周期RDATA_S的2~3共2个字节;该数据块在其对应的主设备的一笔传输数据RDATA_M中的比特位范围为[(1+1)/>2-1:1/>2],即取当前周期RDATA_M的2~3共2个字节;
第3个时钟周期(BLK_INDEX_S+1)==2ARSIZE_S-ARSIZE_MIN条件不满足,所以RREADY_S不拉高;
第3个时钟周期mod(BLK_INDEX_M,2ARSIZE_M-ARSIZE_MIN)+1==2ARSIZE_M-ARSIZE_MIN条件满足,所以RVALID_M拉高,即M端数据完全组包完;CUR_ADDR_M在下个周期更新为NXT_ADDR_M;
第3个时钟周期转换前该数据块(R数据)对应RLAST_S为1且转换后该突发传输中已进行位宽转换操作的数据块的个数与ARLEN_M对应(等于ARLEN_M+1),所以RREADY_S、RVALID_M和RLAST_M拉高,该突发传输(Burst)的位宽转换操作结束;后续重新处理新的Burst。
场景3、突发类型为WRAP且Narrow burst(主设备侧的最大传输位宽为64bit,突发大小为32bit)传输下,小位宽(32bit)转大位宽(64bit)。
a)写地址(AW)通道转换:
转换前,主设备的访问请求信号中:起始地址AWADDR_M=0x0024,突发大小AWSIZE_M=2,突发长度AWLEN_M=3;
转换后,从设备的访问请求信号中:起始地址AWADDR_S=ceil(0x0024/23)23=0x0028, 突发大小AWSIZE_S=3;/>
总传输数据量AW_Byte_NUM=22-mod(0x0024,22)+322=16Bytes
转换后,从设备的访问请求信号中:突发长度AWLEN_S=floor((0x0028+16-1)/23)-floor(0x0028/23)=1。
b)写数据(W)通道转换:
如下面图13和图14所示,分别为位宽转换前后的数据排布,基于前面描述的技术方案:
主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者AWSIZE_MIN=min(2,3)=2,对应的最大操作位宽WDATA_BLOCK=22=4Bytes,AWSIZE_MAX_M=log2(8)=3;
第1个时钟周期CUR_ADDR_M=floor(0x0024/22)22=0x0024;
第1个计算周期CUR_ADDR_S=floor(0x0028/23)23=0x0028;
第1个时钟周期CUR_ADDR_M小于AWADDR_S,所以该数据块在其对应的主设备的一笔传输数据WDATA_M中0x0024~0x0028之间的数据存入WRAP缓存,为后续WRAP ReAlign拼接处理时使用;
第1个时钟周期CUR_ADDR_MAX=0x0024,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0024/22,23-2)=1,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0024/22,23-2)=1,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(1+1)4-1:1/>4],即取当前周期WDATA_M的4~7共4个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(1+1)/>4-1:1/>4],即取当前周期WDATA_S的4~7共4个字节;
第1个计算周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=WRAP(0x0024+22)=0x0028(只更新最低的2+log2(3+1)=4个比特位);
第1个计算周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件满足,但WVALID_S不拉高不输出数据,CUR_ADDR_S不更新;
第2个时钟周期CUR_ADDR_M更新成上个周期NXT_ADDR_M值即0x0028,CUR_ADDR_M到达AWADDR_S值,开始非缓存处理;
第2个时钟周期CUR_ADDR_S=floor(0x0028/23)23=0x0028;
第2个时钟周期CUR_ADDR_MAX=0x0028,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0028/22,23-2)=0,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0028/22,23-2)=0,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(0+1)4-1:0/>4],即取当前周期WDATA_M的0~3共4个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(0+1)/>4-1:0/>4],即取当前周期WDATA_S的0~3共4个字节;
第2个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=WRAP(0x0028+22)=0x002C(只更新最低的2+log2(3+1)=4个比特位);
第2个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件不满足,所以WVALID_S不拉高,即S端数据当前周期未完成一笔传输数据的打包;CUR_ADDR_S不更新;
第2个时钟周期WLAST_M未拉高,所以WLAST_S不拉高,继续下个周期处理;
第3个时钟周期CUR_ADDR_M更新成上个周期NXT_ADDR_M值即0x002C;
第3个时钟周期CUR_ADDR_S保持上个周期值即0x0028;
第3个时钟周期CUR_ADDR_MAX=0x002C,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x002C/22,23-2)=1,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x002C/22,23-2)=1,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(1+1)4-1:1/>4],即取当前周期WDATA_M的4~7共4个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(1+1)/>4-1:1/>4],即取当前周期WDATA_S的4~7共4个字节;
第3个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M=WRAP(0x002C+22)=0x0020(只更新最低的2+log2(3+1)=4个比特位);
第3个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件满足,所以WVALID_S拉高,即S端数据当前周期完成一笔传输数据的打包;CUR_ADDR_S下个时钟周期更新成NXT_ADDR_S=WRAP(0x0028+23)=0x0020(只更新最低的3+log2(1+1)=4个比特位);
第3个时钟周期WLAST_M未拉高,所以WLAST_S不拉高,继续下个周期处理;
第4个时钟周期CUR_ADDR_M更新成上个周期NXT_ADDR_M值即0x0020;
第4个时钟周期CUR_ADDR_S更新成上个周期NXT_ADDR_S值即0x0020;
第4个时钟周期CUR_ADDR_MAX=0x0020,该时钟周期进行位宽转换操作的数据块(Block)在对应的主设备的一笔传输数据中的编号为BLK_INDEX_M=mod(0x0020/22,23-2)=0,以及在对应的从设备的一笔传输数据中的编号为BLK_INDEX_S=mod(0x0020/22,23-2)=0,该数据块在其对应的主设备的一笔传输数据WDATA_M中的比特位范围为[(0+1)4-1:0/>4],即取当前周期WDATA_M的0~4共4个字节;该数据块在其对应的从设备的一笔传输数据WDATA_S中的比特位范围为[(0+1)/>4-1:0/>4],即取当前周期WDATA_S的0~4共4个字节;
第4个时钟周期mod(BLK_INDEX_M,2AWSIZE_M-AWSIZE_MIN)+1==2AWSIZE_M-AWSIZE_MIN条件满足,所以WREADY_M拉高,即M端的该笔传输数据完全被取完,等待下一笔数据;CUR_ADDR_M在下个周期更新为NXT_ADDR_M;
第4个时钟周期(BLK_INDEX_S+1)==2AWSIZE_S-AWSIZE_MIN条件不满足,所以WVALID_S不拉高,即S端数据当前周期未完成一笔传输数据的打包;CUR_ADDR_S保持不变;
第4个时钟周期转换前该数据块(W数据)对应WLAST_M为1且转换后该突发传输中已进行位宽转换操作的数据块的个数与AWLEN_M对应(等于AWLEN_M+1),所以WLAST_S和WVALID_S拉高,同时基于WRAP起始地址为Unaligned,所以将WRAP缓存中的数据拼接在WDATA_S的字节4~7位置处,该突发传输(Burst)的位宽转换操作结束;后续重新处理新的Burst。
c)读地址(AR)通道转换:
WRAP AR通道转换与AW通道转换类似,这里不再做详细示例。
d)读数据(R)通道转换:
WRAP R通道转换与W通道转换类似,这里不再做详细示例。
基于相同的发明构思,本公开实施例还提供一种总线系统,包括总线,以及上述任一实施例的数据传输装置。
其中,上述总线系统可以为需要通过总线实现读写操作的处理系统或片上系统(System-on-a-chip,SOC)。
基于相同的发明构思,本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例的总线系统。
在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
基于相同的发明构思,本公开实施例还提供一种数据传输方法,应用于总线系统的数据传输装置,包括:
在接收到主设备的访问请求信号时,根据主设备的访问请求信号和从设备的最大传输位宽,将主设备的访问请求信号转换为从设备的访问请求信号并发送至从设备;其中,主设备的访问请求信号为在主设备侧的地址通道传输的信号,从设备的访问请求信号为在从设备侧的地址通道传输的信号;访问请求信号中包括起始地址、突发长度、突发大小和突发类型;
在接收到主设备的一笔写传输数据或从设备的一笔读传输数据时,以主设备的访问请求信号中的突发大小和从设备的访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔传输数据进行一次或多次位宽转换操作,以转换成另一侧的传输数据并发送至另一侧。
上述各个步骤的具体实施过程可参见上述数据传输装置的任一实施例,此处不再赘述。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (25)

1.一种数据传输装置,应用于总线系统,包括:
地址通道转换模块,被配置为在接收到主设备的访问请求信号时,根据所述主设备的访问请求信号和从设备的最大传输位宽,将所述主设备的访问请求信号转换为所述从设备的访问请求信号并发送至所述从设备;其中,所述主设备的访问请求信号为在所述主设备侧的地址通道传输的信号,所述从设备的访问请求信号为在所述从设备侧的地址通道传输的信号;所述访问请求信号中包括起始地址、突发长度、突发大小和突发类型;
数据通道转换模块,被配置为在接收到所述主设备的一笔写传输数据或所述从设备的一笔读传输数据时,以所述主设备的访问请求信号中的突发大小和所述从设备的访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔传输数据进行一次或多次位宽转换操作,以转换成另一侧的传输数据并发送至另一侧。
2.根据权利要求1所述的装置,所述地址通道转换模块包括写地址通道转换模块和读地址转换模块;
所述写地址通道转换模块,被配置为在接收到所述主设备的写访问请求信号时,根据所述主设备的写访问请求信号和所述从设备的最大传输位宽,将所述主设备的写访问请求信号转换为所述从设备的写访问请求信号并发送至所述从设备;
所述读地址通道转换模块,被配置为在接收到所述主设备的读访问请求信号时,根据所述主设备的读访问请求信号和所述从设备的最大传输位宽,将所述主设备的读访问请求信号转换为所述从设备的读访问请求信号并发送至所述从设备。
3.根据权利要求1所述的装置,所述地址通道转换模块,被配置为根据所述主设备的访问请求信号和从设备的最大传输位宽,将所述主设备的访问请求信号转换为所述从设备的访问请求信号,包括:
所述地址通道转换模块,被配置为根据所述从设备的最大传输位宽,确定所述从设备的访问请求信号中的突发大小;
根据所述主设备的访问请求信号中的起始地址和突发类型,确定所述从设备的访问请求信号中的起始地址和突发类型;
根据所述主设备的访问请求信号中的起始地址、突发长度和突发大小,确定所述主设备的访问请求信号对应的总传输数据量,并根据所述总传输数据量以及所述从设备的访问请求信号中的起始地址、突发大小,确定所述从设备的访问请求信号中的突发长度。
4.根据权利要求3所述的装置,所述地址通道转换模块,被配置为根据所述从设备的最大传输位宽,确定所述从设备的访问请求信号中的突发大小,包括:
所述地址通道转换模块,被配置为根据所述从设备的最大传输位宽,通过以下计算式确定所述从设备的访问请求信号中的突发大小:
AxSIZE_S=log2(WIDTH_S);
其中,AxSIZE_S为所述从设备的访问请求信号中的突发大小,WIDTH_S为所述从设备的最大传输位宽,单位为字节。
5.根据权利要求3所述的装置,所述地址通道转换模块,被配置为根据所述主设备的访问请求信号中的起始地址和突发类型,确定所述从设备的访问请求信号中的起始地址和突发类型,包括:
所述地址通道转换模块,被配置为确定所述主设备的访问请求信号中的突发类型与所述从设备的访问请求信号中的突发类型相同;
当所述主设备的访问请求信号中的突发类型为INCR时,确定所述主设备的访问请求信号中的起始地址与所述从设备的访问请求信号中的起始地址相同;
当所述主设备的访问请求信号中的突发类型为WRAP时,根据所述主设备的访问请求信号中的起始地址和所述从设备的访问请求信号中的突发大小,通过以下计算式确定所述从设备的访问请求信号中的起始地址:
AxADDR_S=ceil(AxADDR_M/2AxSIZE_S)2AxSIZE_S
其中,AxADDR_S为所述从设备的访问请求信号中的起始地址,ceil为向上取整函数,AxADDR_M为所述主设备的访问请求信号中的起始地址,AxSIZE_S为所述从设备的访问请求信号中的突发大小。
6.根据权利要求3所述的装置,所述地址通道转换模块,被配置为根据所述主设备的访问请求信号中的起始地址、突发长度和突发大小,确定所述主设备的访问请求信号对应的总传输数据量,并根据所述总传输数据量以及所述从设备的访问请求信号中的起始地址、突发大小,确定所述从设备的访问请求信号中的突发长度,包括:
所述地址通道转换模块,被配置为根据所述主设备的访问请求信号中的起始地址、突发长度和突发大小,确定以下计算式确定所述主设备的访问请求信号对应的总传输数据量:
Ax_Byte_NUM=2AxSIZE_M-mod(AxADDR_M,2AxSIZE_M)+ (AxLEN_M)2AxSIZE_M
其中,Ax_Byte_NUM为所述主设备的访问请求信号对应的总传输数据量, AxADDR_M、AxLEN_M和AxSIZE_M分别为所述主设备的访问请求信号中的起始地址、突发长度和突发大小,mod为取模函数;
根据所述总传输数据量以及所述从设备的访问请求信号中的起始地址、突发大小,确定以下计算式确定所述从设备的访问请求信号中的突发长度:
AxLEN_S=floor((AxADDR_S+Ax_Byte_NUM-1)/2AxSIZE_S)-floor(AxADDR_S/2AxSIZE_S);
其中,AxLEN_S、 AxADDR_S和AxSIZE_S分别为所述从设备的访问请求信号中的突发长度、起始地址和突发大小,floor为向下取整函数。
7.根据权利要求1所述的装置,所述数据通道转换模块包括写数据通道转换模块和读数据通道转换模块;
所述写数据通道转换模块,被配置为在接收到所述主设备的一笔写传输数据时,以所述主设备的写访问请求信号中的突发大小和所述从设备的写访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔写传输数据进行一次或多次位宽转换操作,以转换成所述从设备的写传输数据并发送至所述从设备;
所述读数据通道转换模块,被配置为在接收到所述从设备的一笔读传输数据时,以所述主设备的读访问请求信号中的突发大小和所述从设备的读访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔读传输数据进行一次或多次位宽转换操作,以转换成所述主设备的读传输数据并发送至所述主设备。
8.根据权利要求1所述的装置,所述数据通道转换模块,被配置为对接收到的该笔传输数据进行一次或多次位宽转换操作,包括:
所述数据通道转换模块,被配置为根据接收到的该笔传输数据对应的源设备的访问请求信号,确认接收到的该笔传输数据在源设备侧的起始地址,并基于所述最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作,以将接收到的该笔传输数据中的每个数据块逐块对应转换成目的设备的一笔传输数据中的数据块,并根据其对应的目的设备的访问请求信号,确定每个数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址;其中,目的设备的一笔传输数据由其对应的数据块打包而成;每个数据块的最大位宽为所述最大操作位宽;当接收到的该笔传输数据为写传输数据时,其对应的源设备为所述主设备,对应的目的设备为所述从设备,当接收到的该笔传输数据为读传输数据时,其对应的源设备为所述从设备,目的设备为所述主设备;
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块,若是,则将所述数据通道转换模块对应源设备的READY信号拉高,以指示源设备发出下一笔传输数据;
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块,若是,则将所述数据通道转换模块对应目的设备的VALID信号拉高,以将该数据块对应的目的设备的一笔传输数据打包并发送至目的设备。
9.根据权利要求8所述的装置,所述数据通道转换模块,还被配置为在当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据对应的LAST信号为高电平,且该数据块进行位宽转换操作后,对应的突发传输中已进行位宽转换操作的数据块的数量等于对应的所述主设备的访问请求信号中的突发长度和所述从设备的访问请求信号中的突发长度中的较大者加1时,将所述数据通道转换模块对应目的设备的VALID和LAST信号均拉高,以将该数据块对应的目的设备的一突发传输的最后一笔传输数据打包并发送至目的设备,以及将所述数据通道转换模块对应源设备的READY信号拉高。
10.根据权利要求9所述的装置,所述数据通道转换模块,还被配置为在接收到源设备的一突发传输的第一笔传输数据且其对应的源设备的访问请求信号中的突发类型为WRAP时,将该突发传输对应的源设备的访问请求信号中的起始地址、目的设备的访问请求信号中的起始地址分别与源设备的突发大小和目的设备的突发大小对齐,分别得到该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址,以及对应的目的设备的第一笔传输数据在目的设备侧的起始地址;
当该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址小于对应的目的设备的第一笔传输数据在目的设备侧的起始地址时,将该突发传输对应的源设备的传输数据中,源设备的第一笔传输数据在源设备侧的起始地址,至与目的设备的第一笔传输数据在目的设备侧的起始地址对齐的地址之间的数据,进行暂存,并在该突发传输的传输数据的位宽转换过程中,当所述数据通道转换模块对应目的设备的VALID和LAST信号均拉高时,将暂存的数据打包至该突发传输对应的目的设备的最后一笔传输数据中。
11.根据权利要求8所述的装置,所述数据通道转换模块,被配置为根据接收到的该笔传输数据对应的源设备的访问请求信号,确认接收到的该笔传输数据在源设备侧的起始地址,包括:
所述数据通道转换模块,被配置为在接收到源设备的一突发传输的第一笔传输数据时,将该突发传输对应的源设备的访问请求信号中的起始地址与突发大小对齐,得到该突发传输对应的源设备的第一笔传输数据在源设备侧的起始地址;
每次将所述数据通道转换模块对应源设备的READY信号拉高时,将当前时钟周期正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址加上对应的源设备的访问请求信号中的突发大小对应的位宽,得到同一突发传输的下一时钟周期接收到的源设备的下一笔传输数据在源设备侧的起始地址。
12.根据权利要求11所述的装置,当对应的源设备的访问请求信号中的突发类型为WRAP时,每次将所述数据通道转换模块对应源设备的READY信号拉高时,下一时钟周期接收到的源设备的同一突发传输的下一笔传输数据在源设备侧的起始地址只更新最低的预设个数的比特位,所述预设个数等于[AxSIZE +log2( (AxLEN +1)),其中,AxSIZE和AxLEN分别为对应的源设备的访问请求信号中的突发大小和突发长度。
13.根据权利要求8所述的装置,所述数据通道转换模块,被配置为确定每个数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,包括:
所述数据通道转换模块,被配置为在接收到源设备的一突发传输的第一笔传输数据时,将该突发传输对应的目的设备的访问请求信号中的起始地址与目的设备的突发大小对齐,得到该突发传输对应的目的设备的第一笔传输数据在目的设备侧的起始地址;
每次将所述数据通道转换模块对应目的设备的VALID信号拉高时,将当前时钟周期正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址加上目的设备的访问请求信号中的突发大小对应的位宽,得到同一突发传输的下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,否则下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址与当前时钟周期正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址相同。
14.根据权利要求13所述的装置,当对应的源设备的访问请求信号中的突发类型为WRAP时,每次将所述数据通道转换模块对应目的设备的VALID信号拉高时,下一时钟周期进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址只更新最低的预设个数的比特位,所述预设个数等于[AxSIZE +log2( (AxLEN +1)),其中,AxSIZE和AxLEN分别为对应的目的设备的访问请求信号中的突发大小和突发长度。
15.根据权利要求8所述的装置,所述数据通道转换模块,被配置为基于所述最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作,包括:
所述数据通道转换模块,被配置为基于所述最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作并按照低位到高位的顺序,对接收到的该笔传输数据中的各个数据块进行编号;
所述数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块;在当前时钟周期,根据正在进行位宽转换操作的数据块对应的目的设备的一笔传输数据在目的设备侧的起始地址,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块,包括:
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号;
根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,确定正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块;
根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块。
16.根据权利要求15所述的装置,所述数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号,包括:
所述数据通道转换模块,被配置为在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,通过如下计算式确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号:
BLK_INDEX_M=mod(CUR_ADDR_MAX/2AxSIZE_MIN,
2AxSIZE_MAX_M-AxSIZE_MIN);
BLK_INDEX_S= mod(CUR_ADDR_MAX/2AxSIZE_MIN,
2AxSIZE_S-AxSIZE_MIN);
AxSIZE_MAX_M= log2(WIDTH_M);
其中,BLK_INDEX_M和BLK_INDEX_S分别为正在进行位宽转换操作的数据块在对应的所述主设备的一笔传输数据中的编号,以及在对应的所述从设备的一笔传输数据中的编号;当正在进行位宽转换操作的数据块对应的所述主设备的访问请求信号中的突发大小小于对应的所述从设备的访问请求信号中的突发大小时,CUR_ADDR_MAX等于正在进行位宽转换操作的数据块对应的所述主设备的一笔传输数据在所述主设备侧的起始地址;当正在进行位宽转换操作的数据块对应的所述主设备的访问请求信号中的突发大小大于对应的所述从设备的访问请求信号中的突发大小时,CUR_ADDR_MAX等于正在进行位宽转换操作的数据块对应的所述从设备的一笔传输数据在所述从设备侧的起始地址;AxSIZE_MIN为正在进行位宽转换操作的数据块对应的所述主设备的访问请求信号中的突发大小与对应的所述从设备的访问请求信号中的突发大小中的较小者,WIDTH_ M为所述主设备的最大传输位宽,单位为字节;AxSIZE_S为正在进行位宽转换操作的数据块对应的所述从设备的访问请求信号中的突发大小。
17.根据权利要求16所述的装置,所述数据通道转换模块,被配置为根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,确定正在进行位宽转换操作的数据块是否为对应的源设备的一笔传输数据中的最后一个数据块;根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号以及对应的源设备的访问请求信号中的突发大小、对应的目的设备的访问请求信号中的突发大小,判断正在进行位宽转换操作的数据块是否为对应的目的设备的一笔传输数据中的最后一个数据块,包括:
所述数据通道转换模块,被配置为根据正在进行位宽转换操作的数据块在对应的所述主设备的一笔传输数据中的编号BLK_INDEX_M以及对应的所述主设备的访问请求信号中的突发大小AxSIZE_M、对应的所述从设备的访问请求信号中的突发大小AxSIZE_S,计算[mod(BLK_INDEX_M,2AxSIZE_M-AxSIZE_MIN)+1]是否等于2AxSIZE_M-AxSIZE_MIN,其中,AxSIZE_MIN为正在进行位宽转换操作的数据块对应的所述主设备的访问请求信号中的突发大小AxSIZE_M与对应的所述从设备的访问请求信号中的突发大小AxSIZE_S中的较小者;
若是,则判断正在进行位宽转换操作的数据块为对应的所述主设备的一笔传输数据中的最后一个数据块;
根据正在进行位宽转换操作的数据块在对应的所述从设备的一笔传输数据中的编号BLK_INDEX_S以及对应的所述主设备的访问请求信号中的突发大小AxSIZE_M、对应的所述从设备的访问请求信号中的突发大小AxSIZE_S,计算(BLK_INDEX_S+1)是否等于2AxSIZE _S-AxSIZE_MIN;其中,AxSIZE_MIN为正在进行位宽转换操作的数据块对应的所述主设备的访问请求信号中的突发大小AxSIZE_M与对应的所述从设备的访问请求信号中的突发大小AxSIZE_S中的较小者;
若是,则判断正在进行位宽转换操作的数据块为对应的所述从设备的一笔传输数据中的最后一个数据块。
18.根据权利要求8所述的装置,所述数据通道转换模块,被配置为基于所述最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作,以将接收到的该笔传输数据中的每个数据块逐块对应转换成目的设备的一笔传输数据中的数据块,包括:
所述数据通道转换模块,被配置为基于所述最大操作位宽,按照低位到高位的顺序对接收到的该笔传输数据逐块进行位宽转换操作并按照低位到高位的顺序,对接收到的该笔传输数据中的各个数据块进行编号;
在当前时钟周期,根据正在进行位宽转换操作的数据块对应的源设备的一笔传输数据在源设备侧的起始地址和对应的目的设备的一笔传输数据在目的设备侧的起始地址,确认正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,以及在对应的目的设备的一笔传输数据中的编号;
根据正在进行位宽转换操作的数据块在对应的源设备的一笔传输数据中的编号,确定正在进行位宽转换操作的数据块在其对应的源设备的一笔传输数据中的比特位范围;
根据正在进行位宽转换操作的数据块在对应的目的设备的一笔传输数据中的编号,确定正在进行位宽转换操作的数据块在其对应的目的设备的一笔传输数据中的比特位范围;
根据正在进行位宽转换操作的数据块在其对应的源设备的一笔传输数据中的比特位范围以及在其对应的目的设备的一笔传输数据中的比特位范围,将该数据块每个比特位上的数据转换成对应的目的设备的一笔传输数据中对应比特位上的数据。
19.根据权利要求18所述的装置,正在进行位宽转换操作的数据块在其对应的所述主设备的一笔传输数据中的比特位范围为[(BLK_INDEX_M+1)DATA_BLOCK-1:BLK_INDEX_MDATA_BLOCK],其中,BLK_INDEX_M为正在进行位宽转换操作的数据块在对应的所述主设备的一笔传输数据中的编号,DATA_BLOCK为所述最大操作位宽;
正在进行位宽转换操作的数据块在其对应的所述从设备的一笔传输数据中的比特位范围为:[(BLK_INDEX_S+1)DATA_BLOCK-1:BLK_INDEX_S/>DATA_BLOCK],其中,BLK_INDEX_S为正在进行位宽转换操作的数据块在对应的所述从设备的一笔传输数据中的编号。
20.根据权利要求1所述的装置,所述访问请求信号中还包括标识;一笔传输数据的标识与其对应的访问请求信号的标识相对应;
所述地址通道转换模块,还被配置为在接收到所述主设备的访问请求信号时,将接收到的所述主设备的访问请求信号写入缓存查找表的无效条目中,写入后,该条目的状态为有效;
所述数据通道转换模块,还被配置为在接收到所述主设备的一笔写传输数据或所述从设备的一笔读传输数据时,根据该笔传输数据的标识,从所述缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入所述缓存查找表中的一访问请求信号,作为该笔传输数据对应的所述主设备的访问请求信号,并根据对应的所述主设备的访问请求信号得到对应的所述从设备的访问请求信号;
在接收到应答信息时,根据该应答信息的标识,从所述缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入所述缓存查找表中的一访问请求信号所在的条目,并将该条目的状态置为无效。
21.根据权利要求1所述的装置,所述访问请求信号中还包括标识;一笔传输数据的标识与其对应的访问请求信号的标识相对应;
地址通道转换模块,还被配置为将所述主设备的访问请求信号转换为所述从设备的访问请求信号时,将所述主设备的访问请求信号及其对应的所述从设备的访问请求信号写入缓存查找表的无效条目中,写入后,该条目的状态为有效;
数据通道转换模块,被配置为在接收到所述主设备的一笔写传输数据或所述从设备的一笔读传输数据时,根据该笔传输数据的标识,从所述缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入所述缓存查找表中一访问请求信号所在的条目,并将其中缓存的信号作为该笔传输数据对应的所述主设备的访问请求信号和所述从设备的访问请求信号;
在接收到应答信息时,根据该应答信息的标识,从所述缓存查找表的各个有效条目中找到具有相应标识的访问请求信号中最先写入所述缓存查找表中的一访问请求信号所在的条目,并将该条目的状态置为无效。
22.一种总线系统,包括总线,以及如权利要求1至21中任意一项所述的数据传输装置。
23.一种电子组件,包括如权利要求22中所述的总线系统。
24.一种电子设备,包括如权利要求23中所述的电子组件。
25.一种数据传输方法,应用于总线系统中的数据传输装置,包括:
在接收到主设备的访问请求信号时,根据所述主设备的访问请求信号和从设备的最大传输位宽,将所述主设备的访问请求信号转换为所述从设备的访问请求信号并发送至所述从设备;其中,所述主设备的访问请求信号为在所述主设备侧的地址通道传输的信号,所述从设备的访问请求信号为在所述从设备侧的地址通道传输的信号;
在接收到所述主设备的一笔写传输数据或所述从设备的一笔读传输数据时,以所述主设备的访问请求信号中的突发大小和所述从设备的访问请求信号中的突发大小中的较小者对应的位宽为最大操作位宽,对接收到的该笔传输数据进行一次或多次位宽转换操作,以转换成另一侧的传输数据并发送至另一侧。
CN202311091826.9A 2023-08-29 2023-08-29 数据传输装置、系统、组件、电子设备及方法 Active CN116795746B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311091826.9A CN116795746B (zh) 2023-08-29 2023-08-29 数据传输装置、系统、组件、电子设备及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311091826.9A CN116795746B (zh) 2023-08-29 2023-08-29 数据传输装置、系统、组件、电子设备及方法

Publications (2)

Publication Number Publication Date
CN116795746A true CN116795746A (zh) 2023-09-22
CN116795746B CN116795746B (zh) 2023-12-19

Family

ID=88046395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311091826.9A Active CN116795746B (zh) 2023-08-29 2023-08-29 数据传输装置、系统、组件、电子设备及方法

Country Status (1)

Country Link
CN (1) CN116795746B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918072A (en) * 1995-09-18 1999-06-29 Opti Inc. System for controlling variable length PCI burst data using a dummy final data phase and adjusting the burst length during transaction
CN109947677A (zh) * 2019-02-27 2019-06-28 山东华芯半导体有限公司 支持乱序功能的axi总线位宽转换装置及数据传输方法
CN112988647A (zh) * 2021-02-06 2021-06-18 江南大学 一种TileLink总线到AXI4总线转换系统及方法
CN113791994A (zh) * 2021-11-17 2021-12-14 南京芯驰半导体科技有限公司 一种基于AXI协议wrap访问的DDR控制器及处理方法
CN115794722A (zh) * 2023-02-10 2023-03-14 智绘微电子科技(南京)有限公司 一种AXI outstanding接口转换实现方法
CN116126763A (zh) * 2023-04-17 2023-05-16 苏州浪潮智能科技有限公司 总线互联系统、数据处理方法、装置、电子设备及介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918072A (en) * 1995-09-18 1999-06-29 Opti Inc. System for controlling variable length PCI burst data using a dummy final data phase and adjusting the burst length during transaction
CN109947677A (zh) * 2019-02-27 2019-06-28 山东华芯半导体有限公司 支持乱序功能的axi总线位宽转换装置及数据传输方法
CN112988647A (zh) * 2021-02-06 2021-06-18 江南大学 一种TileLink总线到AXI4总线转换系统及方法
CN113791994A (zh) * 2021-11-17 2021-12-14 南京芯驰半导体科技有限公司 一种基于AXI协议wrap访问的DDR控制器及处理方法
CN115794722A (zh) * 2023-02-10 2023-03-14 智绘微电子科技(南京)有限公司 一种AXI outstanding接口转换实现方法
CN116126763A (zh) * 2023-04-17 2023-05-16 苏州浪潮智能科技有限公司 总线互联系统、数据处理方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN116795746B (zh) 2023-12-19

Similar Documents

Publication Publication Date Title
US6594722B1 (en) Mechanism for managing multiple out-of-order packet streams in a PCI host bridge
EP1435717A2 (en) Encapsulation mechanism for packet processing
US20060215691A1 (en) Network adaptor, communication system and communication method
US20040109468A1 (en) Apparatus and method for input clock signal detection in an asynchronous transfer mode interface unit
RU2405195C2 (ru) Скоординированные операции записи по адресному каналу шины
US20040015598A1 (en) Method for increasing the transmit and receive efficiency of an embedded ethernet controller
US8626963B2 (en) Packet based data transfer system and method for host-slave interface
WO2021147045A1 (zh) 一种基于PCIe的数据传输方法及装置
CN116795746B (zh) 数据传输装置、系统、组件、电子设备及方法
CN116126763B (zh) 总线互联系统、数据处理方法、装置、电子设备及介质
JP2002084311A (ja) パケット転送処理装置
WO2022111326A9 (zh) 一种数据传输方法、装置、电子设备和存储介质
US7134070B2 (en) Checksum determination
CN112187669B (zh) 一种数据交互方法、装置、设备及可读存储介质
US8140792B2 (en) Indirectly-accessed, hardware-affine channel storage in transaction-oriented DMA-intensive environments
TW202306365A (zh) 用於互連協定的訊框接收的資料處理的方法以及儲存裝置
FR2838537A1 (fr) Procede d'application d'allocation et de desallocation de memoire pour un circuit de memoire destine a mettre en tampon des donnees et circuit de memoire associe
US7739423B2 (en) Bulk transfer of information on network device
US6728861B1 (en) Queuing fibre channel receive frames
US7624157B2 (en) Ethernet controller with excess on-board flash for microcontroller interface
US20070140281A1 (en) Network communication apparatus with shared buffers
CN113422792A (zh) 数据传输方法、装置、电子设备及计算机存储介质
CN108599907B (zh) 网络接口控制器
US20020078246A1 (en) Method and system for network protocol processing
CN115391247B (zh) 一种phy数据传输系统

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