CN109828941A - Axi2wb总线桥实现方法、装置、设备及存储介质 - Google Patents
Axi2wb总线桥实现方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109828941A CN109828941A CN201910168109.9A CN201910168109A CN109828941A CN 109828941 A CN109828941 A CN 109828941A CN 201910168109 A CN201910168109 A CN 201910168109A CN 109828941 A CN109828941 A CN 109828941A
- Authority
- CN
- China
- Prior art keywords
- axi
- data
- write
- read
- address
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
Abstract
本发明公开了一种AXI2WB总线桥实现方法,包括:锁存AXI写地址通道信号和AXI写数据通道信号;根据AXI写数据的位宽与WB写数据的位宽的倍率,确定当前AXI写数据需要的WB传输次数;针对每一次WB写操作,将AXI写地址转换为该次WB写操作的WB写地址,将AXI写数据转换为该次WB写操作的WB写数据,并基于WB写地址和WB写数据,执行该次WB写操作;直至WB写操作次数达到AXI写数据需要的WB传输次数。应用本发明实施例所提供的技术方案,可以实现适用于FPGA内部的高速无缓存AXI2WB总线桥设计。本发明还公开了一种AXI2WB总线桥实现装置、设备及存储介质,具有相应技术效果。
Description
技术领域
本发明涉及芯片设计技术领域,特别是涉及一种AXI2WB总线桥实现方法、装置、设备及存储介质。
背景技术
目前,SoC(System on Chip,片上系统)已经成为大规模数字集成电路设计的主流技术。SoC芯片一般由多个IP模块构成,如嵌入式CPU、DSP、各功能模块、存储模块、外部接口模块等。主模块与从模块之间由片上总线相连接,以完成控制信号和数据信号的传递。应用较为广泛的SoC总线协议是ARM公司的AMBA(Advanced Microcontroller BusArchitecture,高级微处理器总线架构)总线协议,AMBA总线协议包括AXI(AdvancedeXtensible Interface,高级可扩展接口)、AHB(Advanced High-performance Bus,高级高性能总线)、APB(Advanced Peripheral Bus,高级外围总线)等总线协议,其中AXI总线协议传输速率最快,但也最为复杂,是一种面向高性能、高带宽、低延迟的片内总线,可以满足超高性能和复杂的SoC设计的需求。
现有的RISC-V SoC系统在现有开源RISC-V core的verilog RTL代码基础上,在MMIO(Memory-mapped I/O,内存映射I/O)接口自主添加了相关外设,在MEMIO(Memory I/O,存储I/O)接口添加了DDR(Double Data Rate,双倍速率)作为SoC的内存。该RISC-V SoC系统实现环境为xilinux FPGA开发板。
为了提高处理器速率,该RISC-V SoC系统的MMIO接口采用了AXI总线协议。将外设直接挂载到AXI总线上时,需要对外设接口封装成AXI协议,由于AXI总线协议信号繁多,当外设数量较多时,每一个外设的接口都需要封装成AXI接口,导致工作量很大,工作效率较低。
发明内容
本发明的目的是提供一种AXI2WB总线桥实现方法、装置、设备及存储介质,以实现AXI总线协议到WB(Wishbone)总线协议的转换。
为解决上述技术问题,本发明提供如下技术方案:
一种AXI2WB总线桥实现方法,包括:
在监听到AXI写地址通道信号有效时,将AXI写地址做对齐处理,并锁存AXI写地址通道信号;
在监听到AXI写数据通道信号有效时,锁存AXI写数据通道信号;
根据AXI写数据的位宽与WB写数据的位宽的倍率,确定当前AXI写数据需要的WB传输次数;
针对每一次WB写操作,根据所述AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,根据所述AXI写数据通道信号,将所述AXI写数据转换为该次WB写操作的WB写数据,并基于所述WB写地址和所述WB写数据,执行该次WB写操作;直至WB写操作次数达到所述AXI写数据需要的WB传输次数。
在本发明的一种具体实施方式中,所述根据所述AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,包括:
根据以下公式将AXI写地址转换为该次WB写操作的WB写地址:
wb_waddr=awaddr_ff+(w_data_cnt–1)*data_width+addr_addend*(w_wb_transfer_cnt–1);
其中,w_data_cnt为当前AXI写地址传输的有效数据wdata个数;w_wb_transfer_cnt为当前有效数据wdata下已完成的WB写操作次数;addr_addend为WB数据字节个数;awaddr_ff为锁存的对齐后的AXI写地址;wb_waddr为WB写地址;data_width为AXI数据字节宽度。
在本发明的一种具体实施方式中,所述根据所述AXI写数据通道信号,将所述AXI写数据转换为该次WB写操作的WB写数据,包括:
根据以下公式将所述AXI写数据转换为该次WB写操作的WB写数据:
wb_dat_o=(wdata_ff>>(data_width*addr_addend*(wb_transfer_cnt–1)));
其中,wb_dat_o为WB写数据;wdata_ff为锁存的AXI写数据。
在本发明的一种具体实施方式中,还包括:
在监听到AXI读地址通道信号有效时,将AXI读地址做对齐处理,并锁存AXI读地址通道信号;
根据AXI读数据的位宽与WB读数据的位宽的倍率,确定当前AXI读数据需要的WB传输次数;
针对每一次WB读操作,根据所述AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,将WB读数据转换为AXI读数据,并基于所述WB读地址和所述WB读数据,执行该次WB读操作;直至WB读操作次数达到所述AXI读数据需要的WB传输次数。
在本发明的一种具体实施方式中,所述根据所述AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,包括:
根据以下公式将AXI读地址转换为该次WB读操作的WB读地址:
wb_raddr=araddr_ff+(r_data_cnt–1)*data_width+addr_addend*(r_wb_transfe r_cnt–1);
其中,r_data_cnt为当前AXI读地址需要传输的有效数据rdata个数;r_wb_transfer_cnt为当前需要传输的有效数据rdata下已完成的WB读操作次数;addr_addend为WB数据字节个数;araddr_ff为锁存的对齐后的AXI读地址;wb_raddr为WB读地址;data_width为AXI数据字节宽度。
在本发明的一种具体实施方式中,所述将WB读数据转换为AXI读数据,包括:
根据以下公式将WB读数据转换为AXI读数据:
rdata=wb_dat_i<<(data_width*addr_addend*(r_wb_transfer_cnt–1));
其中,wb_dat_i为WB读数据。
一种AXI2WB总线桥实现装置,包括:
锁存单元,用于在监听到AXI写地址通道信号有效时,将AXI写地址做对齐处理,并锁存AXI写地址通道信号;在监听到AXI写数据通道信号有效时,锁存AXI写数据通道信号;
适配单元,用于根据AXI写数据的位宽与WB写数据的位宽的倍率,确定当前AXI写数据需要的WB传输次数;
控制单元,用于针对每一次WB写操作,根据所述AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,根据所述AXI写数据通道信号,将所述AXI写数据转换为该次WB写操作的WB写数据,并基于所述WB写地址和所述WB写数据,执行该次WB写操作;直至WB写操作次数达到所述AXI写数据需要的WB传输次数。
在本发明的一种具体实施方式中,
所述锁存单元,还用于在监听到AXI读地址通道信号有效时,将AXI读地址做对齐处理,并锁存AXI读地址通道信号;
所述适配单元,还用于根据AXI读数据的位宽与WB读数据的位宽的倍率,确定当前AXI读数据需要的WB传输次数;
所述控制单元,还用于针对每一次WB读操作,根据所述AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,将WB读数据转换为AXI读数据,并基于所述WB读地址和所述WB读数据,执行该次WB读操作;直至WB读操作次数达到所述AXI读数据需要的WB传输次数。
一种AXI2WB总线桥实现设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任一项所述AXI2WB总线桥实现方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述AXI2WB总线桥实现方法的步骤。
应用本发明实施例所提供的技术方案,可以实现适用于FPGA内部的高速无缓存AXI2WB总线桥设计,在处理器外设设计过程中可以降低外设开发的难度,对搭建基于RISC-V处理器的SoC系统具有突破性意义,有助于CPU自主研发的进程,且本发明适用于多种位宽的总线转换,具有通用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中AXI2WB总线桥实现结构示意图;
图2为本发明实施例中AXI总线协议读通道示意图;
图3为本发明实施例中AXI总线协议写通道示意图;
图4为本发明实施例中WB主从互联信号示意图;
图5为本发明实施例中一种AXI2WB总线桥实现方法的实施流程图;
图6为本发明实施例中AXI写地址通道处理流程示意图;
图7为本发明实施例中AXI写数据通道处理流程示意图;
图8为本发明实施例中WB写操作处理流程示意图;
图9为本发明实施例中AXI写响应通道处理流程示意图;
图10为本发明实施例中AXI读地址通道处理流程示意图;
图11为本发明实施例中AXI读数据通道处理流程示意图;
图12为本发明实施例中WB读操作处理流程示意图;
图13为本发明实施例中一种AXI2WB总线桥实现装置的结构示意图;
图14为本发明实施例中一种AXI2WB总线桥实现设备的结构示意图。
具体实施方式
本发明的核心是提供一种AXI2WB总线桥实现方法,实现AXI总线协议到WB(Wishbone,一种片内总线)总线协议的转换,使得AXI总线上可以挂载接口为WB协议的相关外设,如UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)、GPIO(General Purpose Input Output,通用输入/输出)等,如图1所示,为AXI2WB总线桥实现结构示意图,通过AXI2WB总线桥将AXI总线协议转换成WB总线协议,再挂载对速率要求不高的低速外设,如挂载有GPIO和UART等外设,通过WB仲裁WB_Arbiter确定当前通信的是哪个外设,S为Slave,从接口,M为Master,主接口,AXI2WB总线桥可以包括地址对齐模块Addr_Align、位宽适配模块Width_Adapt和流控模块Flow_Ctrl。
首先说明一下AXI协议和WB协议的不同之处:
第一,AXI协议是基于burst的传输,并且定义了5个独立的传输通道:读地址通道、读数据通道、写地址通道、写数据通道、写响应通道,分别如图2和图3所示。
AXI协议每个通道可同时进行。AXI是基于VALID/READY握手机制的数据传输协议,传输源端使用VALID表明地址/控制信号、数据是有效的,目的端使用READY表明自己能够接受信息。
读/写地址通道:读、写传输每个都有自己的地址通道,对应的地址通道承载着对应传输的地址控制信息。
读数据通道:读数据通道承载着读数据和读响应信号包括数据总线(8/16/32/64/128/256/512/1024bit)和指示读传输完成的读响应信号。
写数据通道:写数据通道的数据信息被认为是缓冲(buffered)了的,“主”无需等待“从”对上次写传输的确认即可发起一次新的写传输。写通道包括数据总线(8/16…1024bit)和字节线(用于指示8bit数据信号的有效性)。
写响应通道:“从”使用写响应通道对写传输进行响应。所有的写传输需要写响应通道的完成信号。
而WB协议只有一个通道,读写操作不能同时进行。如图4所示,WB协议读写操作必选的信号除了数据外都是共用的,其中各个信号含义均为现有技术中的通用含义,本发明实施例对此不再赘述。
第二,AXI协议数据位宽有32位、64位、128位等,WB协议数据位宽最高为32位,需要进行数据位宽匹配。
第三,AXI协议有地址对齐的规则,地址信号与字节选通信号不能直接传递给WB协议,需要进行一定转换才可传递给WB协议。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图5所示,为本发明实施例所提供的一种AXI2WB总线桥实现方法的实施流程图,该方法可以包括以下步骤:
S510:在监听到AXI写地址通道信号有效时,将AXI写地址做对齐处理,并锁存AXI写地址通道信号。
本发明实施例所提供的AXI2WB总线桥实现方法可以应用于AXI2WB总线桥,为方便描述,以下均简称为总线桥。
在实际应用中,总线桥可以对AXI写地址通道、AXI写数据通道、AXI写响应通道进行监听。在监听到AXI写地址通道信号有效时,可以将AXI写地址做对齐处理,并锁存AXI写地址通道信号。
具体的,可以通过以下步骤确定AXI写地址通道信号是否有效:
在监听到指示当前锁存的写数据是否有效的信号wdata_valid、指示当前锁存的反馈是否有效的信号bresp_valid和指示当前锁存的读地址是否有效的信号araddr_valid均为低的情况下,awvalid和awready同时为高时,确定AXI写地址通道信号有效。
如图6所示,总线桥判断指示当前锁存的写数据是否有效的信号wdata_valid、指示当前锁存的反馈是否有效的信号bresp_valid和指示当前锁存的读地址是否有效的信号araddr_valid是否均为低,如果否,则可以重复执行判断指示当前锁存的写数据是否有效的信号wdata_valid、指示当前锁存的反馈是否有效的信号bresp_valid和指示当前锁存的读地址是否有效的信号araddr_valid是否均为低的步骤,如果是,则进一步判断awvalid和awready是否同时为高,如果是,则可以确定AXI写地址通道信号有效,否则,可重复执行判断awvalid和awready是否同时为高的步骤,在确定AXI写地址通道信号有效时,可进行AXI写地址对齐。
在本发明实施例中,在锁存AXI写地址通道信号之后,可以将awready置0,将指示当前锁存的写地址是否有效的信号awaddr_valid置高,如图6所示,进一步,如果判断AXIwlast信号为高,则将awready置1,将指示当前锁存的写地址是否有效的信号awaddr_valid置0。
S520:在监听到AXI写数据通道信号有效时,锁存AXI写数据通道信号。
总线桥在对AXI写地址通道和AXI写数据通道监听过程中,如果监听到AXI写数据通道信号有效,则可以锁存AXI写数据通道信号。
具体的,可以通过以下步骤确定AXI写数据通道信号是否有效:
在监听到AXI写操作次数data_cnt为0、AXI的指示当前锁存的写地址是否有效的信号awaddr_valid为高,且wvalid与wready同时为高时,确定AXI写数据通道信号有效。
如图7所示,总线桥在AXI写操作次数data_cnt为0时,可以判断AXI的指示当前锁存的写地址是否有效的信号awaddr_valid是否为高,如果否,则可以令AXI写操作次数data_cnt为0,如果是,则可以进一步判断wvalid与wready是否同时为高,如果同时为高,则可以确定AXI写数据通道信号有效,否则可以重复执行判断wvalid与wready是否同时为高的步骤。
在本发明实施例中,在锁存AXI写数据通道信号之后,还可以将wready置0,将指示当前锁存的写数据是否有效的信号wdata_valid置1,AXI写操作次数data_cnt加1,如图7所示。
S530:根据AXI写数据的位宽与WB写数据的位宽的倍率,确定当前AXI写数据需要的WB传输次数。
在本发明实施例中,可以预先设置宏定义开关以选择AXI和WB的位宽。根据AXI写数据的位宽与WB写数据的位宽的倍率,确定当前AXI写数据需要的WB传输次数。即一个AXI写数据wdata需要的WB传输次数tranfer_conv。
通过宏定义开关可以很方便地选择AXI与WB的位宽,控制逻辑代码中的中间变量addr_addend,实现不同位宽的AXI2WB总线桥设计,无需对代码进行大的改动。
S540:针对每一次WB写操作,根据AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,根据AXI写数据通道信号,将AXI写数据转换为该次WB写操作的WB写数据,并基于WB写地址和WB写数据,执行该次WB写操作;直至WB写操作次数达到AXI写数据需要的WB传输次数。
在确定当前AXI写数据需要的WB传输次数后,可以针对每一次WB写操作,根据AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,根据AXI写数据通道信号,将AXI写数据转换为该次WB写操作的WB写数据,并基于WB写地址和WB写数据,执行该次WB写操作。
具体的,可以根据以下公式将AXI写地址转换为该次WB写操作的WB写地址:
wb_waddr=awaddr_ff+(w_data_cnt–1)*data_width+addr_addend*(w_wb_transfer_cnt–1);
其中,w_data_cnt为当前AXI写地址传输的有效数据wdata个数;w_wb_transfer_cnt为当前有效数据wdata下已完成的WB写操作次数;addr_addend为WB数据字节个数;awaddr_ff为锁存的对齐后的AXI写地址;wb_waddr为WB写地址;data_width为AXI数据字节宽度。
根据以下公式将AXI写数据转换为该次WB写操作的WB写数据:
wb_dat_o=(wdata_ff>>(data_width*addr_addend*(wb_transfer_cnt–1)));
其中,wb_dat_o为WB写数据;wdata_ff为锁存的AXI写数据。
基于WB写地址和WB写数据,执行每一次的WB写操作,直至WB写操作次数达到AXI写数据需要的WB传输次数。
具体的,如图8所示,总线桥判断指示当前锁存的写地址是否有效的信号awaddr_valid和指示当前锁存的写数据是否有效的信号wdata_valid是否均为高且指示当前锁存的读地址是否有效的信号araddr_valid是否为低,如果均为是,则拉高读写传输区分信号wb_we_o、数据周期信号wb_stb_o、总线周期信号wb_cyc_o,开始一次WB写操作,否则,重复执行判断指示当前锁存的写地址是否有效的信号awaddr_valid和指示当前锁存的写数据是否有效的信号wdata_valid是否均为高且指示当前锁存的读地址是否有效的信号araddr_valid是否为低的步骤。进一步的,总线桥可以判断WB响应信号wb_ack_i是否为高,如果是,则判断WB写操作次数wb_transfer_cnt是否等于需要的WB传输次数transfer_conv,如果否,则将WB写操作次数wb_transfer_cnt加1,重复执行判断WB写操作次数wb_transfer_cnt是否等于需要的WB传输次数transfer_conv的步骤,如果是,则完成所有的WB写操作,拉低读写传输区分信号wb_we_o、数据周期信号wb_stb_o、总线周期信号wb_cyc_o。
总线桥在判断WB写操作次数wb_transfer_cnt等于需要的WB传输次数transfer_conv时,将wready置1,将指示当前锁存的写数据是否有效的信号wdata_valid置0,如图7所示。
总线桥在进行WB写操作时,判断AXI写响应通道的AXI bvalid与bready信号是否同时为高,如果是,则将bvalid置0,进一步判断AXI wlast信号是否为高,如果是,则将bvalid置1,如图9所示。
在本发明的一个实施例中,该方法还可以包括以下步骤:
步骤一:在监听到AXI读地址通道信号有效时,将AXI写地址做对齐处理,并锁存AXI读地址通道信号;
步骤二:根据AXI读数据的位宽与WB读数据的位宽的倍率,确定当前AXI读数据需要的WB传输次数;
步骤三:针对每一次WB读操作,根据AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,将WB读数据转换为AXI读数据,并基于WB读地址和WB读数据,执行该次WB读操作;直至WB读操作次数达到AXI读数据需要的WB传输次数。
在本发明实施例中,总线桥可以对AXI读地址通道、AXI读数据通道进行监听。在监听到AXI读地址通道信号有效时,可以将AXI读地址做对齐处理,并锁存AXI读地址通道信号。
具体的,可以通过以下步骤确定AXI读地址通道信号是否有效:
在监听到指示当前锁存的写地址是否有效的信号awaddr_valid、指示当前锁存的写数据是否有效的信号wdata_valid、bvalid、指示当前锁存的读地址是否有效的信号araddr_valid均为低的情况下,arvalid和arready同时为高时,确定AXI读地址通道信号有效。
如图10所示,总线桥判断指示当前锁存的写地址是否有效的信号awaddr_valid、指示当前锁存的写数据是否有效的信号wdata_valid、bvalid和指示当前锁存的读地址是否有效的信号araddr_valid是否均为低,如果否,则可以重复执行判断指示当前锁存的写地址是否有效的信号awaddr_valid、指示当前锁存的写数据是否有效的信号wdata_valid、bvalid和指示当前锁存的读地址是否有效的信号araddr_valid是否均为低的步骤,如果是,则进一步判断arvalid和arready是否同时为高,如果是,则可以确定AXI读地址通道信号有效,否则,可重复执行判断arvalid和arready是否同时为高的步骤,在确定AXI读地址通道信号有效时,可进行AXI读地址对齐。
在本发明实施例中,在锁存AXI读地址通道信号之后,可以将arready置0,将指示当前锁存的读地址是否有效的信号araddr_valid置高,如图10所示。如果判断WB读操作次数wb_transfer_cnt等于需要WB传输次数transfer_conv,则将arready置1,将指示当前锁存的读地址是否有效的信号araddr_valid置0,rlast置1。
总线桥在AXI读操作次数data_cnt为0,判断AXI的指示当前锁存的读地址是否有效的信号araddr_valid为高时,可以根据AXI读数据的位宽与WB读数据的位宽的倍率,确定当前AXI读数据需要的WB传输次数。即一个AXI读数据rdata需要的WB传输次数tranfer_conv。
针对每一次WB读操作,根据AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,将WB读数据转换为AXI读数据,并基于WB读地址和WB读数据,执行该次WB读操作。
具体的,可以根据以下公式将AXI读地址转换为该次WB读操作的WB读地址:
wb_raddr=araddr_ff+(r_data_cnt–1)*data_width+addr_addend*(r_wb_transfe r_cnt–1);
其中,r_data_cnt为当前AXI读地址需要传输的有效数据rdata个数;r_wb_transfer_cnt为当前需要传输的有效数据rdata下已完成的WB读操作次数;addr_addend为WB数据字节个数;araddr_ff为锁存的对齐后的AXI读地址;wb_raddr为WB读地址;data_width为AXI数据字节宽度。
根据以下公式将WB读数据转换为AXI读数据:
rdata=wb_dat_i<<(data_width*addr_addend*(r_wb_transfer_cnt–1));
其中,wb_dat_i为WB读数据。
基于WB读地址和WB写数据,执行每一次的WB读操作,直至WB读操作次数达到AXI读数据需要的WB传输次数。
具体的,如图12所示,总线桥判断指示当前锁存的写地址是否有效的信号awaddr_valid、指示当前锁存的写数据是否有效的信号wdata_valid、指示当前锁存的读地址是否有效的信号araddr_valid是否均为低,如果是,则拉高数据周期信号wb_stb_o、总线周期信号wb_cyc_o,开始一次WB读操作,否则,重复执行判断指示当前锁存的写地址是否有效的信号awaddr_valid、指示当前锁存的写数据是否有效的信号wdata_valid、指示当前锁存的读地址是否有效的信号araddr_valid是否均为低的步骤。进一步的,总线桥可以判断WB响应信号wb_ack_i是否为高,如果是,则判断WB读操作次数wb_transfer_cnt是否等于需要的WB传输次数transfer_conv,如果否,则将WB读操作次数wb_transfer_cnt加1,重复执行判断WB读操作次数wb_transfer_cnt是否等于需要的WB传输次数transfer_conv的步骤,如果是,则完成所有的WB读操作,拉低读写传输区分信号wb_we_o、数据周期信号wb_stb_o、总线周期信号wb_cyc_o,令WB读操作次数为0。
总线桥在判断WB读操作次数wb_transfer_cnt等于需要的WB传输次数transfer_conv时,将读数据通道rvalid置1,将AXI读操作次数data_cnt加1,如图11所示,并可进一步判断AXI读数据通道信号是否有效,即rvalid与rready是否同时为高,如果是,则将rvalid置0,AXI读操作次数data_cnt加1。
应用本发明实施例所提供的技术方案可以实现适用于FPGA内部的高速无缓存AXI2WB总线桥设计,在处理器外设设计过程中可以降低外设开发的难度,对搭建基于RISC-V处理器的SoC系统具有突破性意义,有助于CPU自主研发的进程,且本发明适用于多种位宽的总线转换,具有通用性。
相应于上面的方法实施例,本发明实施例还提供了一种AXI2WB总线桥实现装置,下文描述的一种AXI2WB总线桥实现装置与上文描述的一种AXI2WB总线桥实现方法可相互对应参照。
参见图13所示,该装置包括以下单元:
锁存单元1301,用于在监听到AXI写地址通道信号有效时,将AXI写地址做对齐处理,并锁存AXI写地址通道信号;在监听到AXI写数据通道信号有效时,锁存AXI写数据通道信号;
适配单元1302,用于根据AXI写数据的位宽与WB写数据的位宽的倍率,确定当前AXI写数据需要的WB传输次数;
控制单元1303,用于针对每一次WB写操作,根据AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,根据AXI写数据通道信号,将AXI写数据转换为该次WB写操作的WB写数据,并基于WB写地址和WB写数据,执行该次WB写操作;直至WB写操作次数达到AXI写数据需要的WB传输次数。
应用本发明实施例所提供的技术方案可以实现适用于FPGA内部的高速无缓存AXI2WB总线桥设计,在处理器外设设计过程中可以降低外设开发的难度,对搭建基于RISC-V处理器的SoC系统具有突破性意义,有助于CPU自主研发的进程,且本发明适用于多种位宽的总线转换,具有通用性。
在本发明的一种具体实施方式中,控制单元1303,具体用于:
根据以下公式将AXI写地址转换为该次WB写操作的WB写地址:
wb_waddr=awaddr_ff+(w_data_cnt–1)*data_width+addr_addend*(w_wb_transfer_cnt–1);
其中,w_data_cnt为当前AXI写地址传输的有效数据wdata个数;w_wb_transfer_cnt为当前有效数据wdata下已完成的WB写操作次数;addr_addend为WB数据字节个数;awaddr_ff为锁存的对齐后的AXI写地址;wb_waddr为WB写地址;data_width为AXI数据字节宽度。
在本发明的一种具体实施方式中,控制单元1303,具体用于:
根据以下公式将AXI写数据转换为该次WB写操作的WB写数据:
wb_dat_o=(wdata_ff>>(data_width*addr_addend*(wb_transfer_cnt–1)));
其中,wb_dat_o为WB写数据;wdata_ff为锁存的AXI写数据。
在本发明的一种具体实施方式中,
锁存单元1301,还用于在监听到AXI读地址通道信号有效时,将AXI读地址做对齐处理,并锁存AXI读地址通道信号;
适配单元1302,还用于根据AXI读数据的位宽与WB读数据的位宽的倍率,确定当前AXI读数据需要的WB传输次数;
控制单元1303,还用于针对每一次WB读操作,根据AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,将WB读数据转换为AXI读数据,并基于WB读地址和WB读数据,执行该次WB读操作;直至WB读操作次数达到AXI读数据需要的WB传输次数。
在本发明的一种具体实施方式中,控制单元1303,具体用于:
根据以下公式将AXI读地址转换为该次WB读操作的WB读地址:
wb_raddr=araddr_ff+(r_data_cnt–1)*data_width+addr_addend*(r_wb_transfer_cnt–1);
其中,r_data_cnt为当前AXI读地址需要传输的有效数据rdata个数;r_wb_transfer_cnt为当前需要传输的有效数据rdata下已完成的WB读操作次数;addr_addend为WB数据字节个数;araddr_ff为锁存的对齐后的AXI读地址;wb_raddr为WB读地址;data_width为AXI数据字节宽度。
在本发明的一种具体实施方式中,控制单元1303,具体用于:
根据以下公式将WB读数据转换为AXI读数据:
rdata=wb_dat_i<<(data_width*addr_addend*(r_wb_transfer_cnt–1));
其中,wb_dat_i为WB读数据。
相应于上面的方法实施例,本发明实施例还提供了一种AXI2WB总线桥实现设备,如图14所示,包括:
存储器1401,用于存储计算机程序;
处理器1402,用于执行计算机程序时实现上述AXI2WB总线桥实现方法的步骤。
相应于上面的方法实施例,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述AXI2WB总线桥实现方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种AXI2WB总线桥实现方法,其特征在于,包括:
在监听到AXI写地址通道信号有效时,将AXI写地址做对齐处理,并锁存AXI写地址通道信号;
在监听到AXI写数据通道信号有效时,锁存AXI写数据通道信号;
根据AXI写数据的位宽与WB写数据的位宽的倍率,确定当前AXI写数据需要的WB传输次数;
针对每一次WB写操作,根据所述AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,根据所述AXI写数据通道信号,将所述AXI写数据转换为该次WB写操作的WB写数据,并基于所述WB写地址和所述WB写数据,执行该次WB写操作;直至WB写操作次数达到所述AXI写数据需要的WB传输次数。
2.根据权利要求1所述的方法,其特征在于,所述根据所述AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,包括:
根据以下公式将AXI写地址转换为该次WB写操作的WB写地址:
wb_waddr=awaddr_ff+(w_data_cnt–1)*data_width+addr_addend*(w_wb_transfer_cnt–1);
其中,w_data_cnt为当前AXI写地址传输的有效数据wdata个数;w_wb_transfer_cnt为当前有效数据wdata下已完成的WB写操作次数;addr_addend为WB数据字节个数;awaddr_ff为锁存的对齐后的AXI写地址;wb_waddr为WB写地址;data_width为AXI数据字节宽度。
3.根据权利要求2所述的方法,其特征在于,所述根据所述AXI写数据通道信号,将所述AXI写数据转换为该次WB写操作的WB写数据,包括:
根据以下公式将所述AXI写数据转换为该次WB写操作的WB写数据:
wb_dat_o=(wdata_ff>>(data_width*addr_addend*(wb_transfer_cnt–1)));
其中,wb_dat_o为WB写数据;wdata_ff为锁存的AXI写数据。
4.根据权利要求1至3之中任一项所述的方法,其特征在于,还包括:
在监听到AXI读地址通道信号有效时,将AXI读地址做对齐处理,并锁存AXI读地址通道信号;
根据AXI读数据的位宽与WB读数据的位宽的倍率,确定当前AXI读数据需要的WB传输次数;
针对每一次WB读操作,根据所述AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,将WB读数据转换为AXI读数据,并基于所述WB读地址和所述WB读数据,执行该次WB读操作;直至WB读操作次数达到所述AXI读数据需要的WB传输次数。
5.根据权利要求4所述的方法,其特征在于,所述根据所述AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,包括:
根据以下公式将AXI读地址转换为该次WB读操作的WB读地址:
wb_raddr=araddr_ff+(r_data_cnt–1)*data_width+addr_addend*(r_wb_transfer_cnt–1);
其中,r_data_cnt为当前AXI读地址需要传输的有效数据rdata个数;r_wb_transfer_cnt为当前需要传输的有效数据rdata下已完成的WB读操作次数;addr_addend为WB数据字节个数;araddr_ff为锁存的对齐后的AXI读地址;wb_raddr为WB读地址;data_width为AXI数据字节宽度。
6.根据权利要求5所述的方法,其特征在于,所述将WB读数据转换为AXI读数据,包括:
根据以下公式将WB读数据转换为AXI读数据:
rdata=wb_dat_i<<(data_width*addr_addend*(r_wb_transfer_cnt–1));
其中,wb_dat_i为WB读数据。
7.一种AXI2WB总线桥实现装置,其特征在于,包括:
锁存单元,用于在监听到AXI写地址通道信号有效时,将AXI写地址做对齐处理,并锁存AXI写地址通道信号;在监听到AXI写数据通道信号有效时,锁存AXI写数据通道信号;
适配单元,用于根据AXI写数据的位宽与WB写数据的位宽的倍率,确定当前AXI写数据需要的WB传输次数;
控制单元,用于针对每一次WB写操作,根据所述AXI写地址通道信号,将AXI写地址转换为该次WB写操作的WB写地址,根据所述AXI写数据通道信号,将所述AXI写数据转换为该次WB写操作的WB写数据,并基于所述WB写地址和所述WB写数据,执行该次WB写操作;直至WB写操作次数达到所述AXI写数据需要的WB传输次数。
8.根据权利要求7所述的装置,其特征在于,
所述锁存单元,还用于在监听到AXI读地址通道信号有效时,将AXI读地址做对齐处理,并锁存AXI读地址通道信号;
所述适配单元,还用于根据AXI读数据的位宽与WB读数据的位宽的倍率,确定当前AXI读数据需要的WB传输次数;
所述控制单元,还用于针对每一次WB读操作,根据所述AXI读地址通道信号,将AXI读地址转换为该次WB读操作的WB读地址,将WB读数据转换为AXI读数据,并基于所述WB读地址和所述WB读数据,执行该次WB读操作;直至WB读操作次数达到所述AXI读数据需要的WB传输次数。
9.一种AXI2WB总线桥实现设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述AXI2WB总线桥实现方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述AXI2WB总线桥实现方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910168109.9A CN109828941B (zh) | 2019-03-06 | 2019-03-06 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
PCT/CN2019/103674 WO2020177283A1 (zh) | 2019-03-06 | 2019-08-30 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910168109.9A CN109828941B (zh) | 2019-03-06 | 2019-03-06 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109828941A true CN109828941A (zh) | 2019-05-31 |
CN109828941B CN109828941B (zh) | 2020-07-07 |
Family
ID=66865491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910168109.9A Active CN109828941B (zh) | 2019-03-06 | 2019-03-06 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109828941B (zh) |
WO (1) | WO2020177283A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321260A (zh) * | 2019-06-28 | 2019-10-11 | 西安紫光国芯半导体有限公司 | 一种基于uvm的axi总线接口读写数据比较方法和uvm验证平台 |
CN110389919A (zh) * | 2019-07-04 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 基于risc-v处理器的异步收发传输器外设及系统 |
CN110401586A (zh) * | 2019-07-26 | 2019-11-01 | 广东浪潮大数据研究有限公司 | 一种总线通信方法、装置、设备及可读存储介质 |
CN110704345A (zh) * | 2019-09-06 | 2020-01-17 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于pcie的高速多串口卡系统及其发送、接收方法 |
WO2020177283A1 (zh) * | 2019-03-06 | 2020-09-10 | 苏州浪潮智能科技有限公司 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
CN112988647A (zh) * | 2021-02-06 | 2021-06-18 | 江南大学 | 一种TileLink总线到AXI4总线转换系统及方法 |
CN114595181A (zh) * | 2020-12-03 | 2022-06-07 | 沈阳中科数控技术股份有限公司 | 一种面向嵌入式系统的总线匹配实现方法 |
WO2023284169A1 (zh) * | 2021-07-15 | 2023-01-19 | 苏州浪潮智能科技有限公司 | 从axi总线到opb总线的数据写入方法及读取方法 |
CN117640783A (zh) * | 2024-01-25 | 2024-03-01 | 富瀚微电子(成都)有限公司 | 一种数据传输方法、系统、电子设备以及可读介质 |
CN117640783B (zh) * | 2024-01-25 | 2024-04-09 | 富瀚微电子(成都)有限公司 | 一种数据传输方法、系统、电子设备以及可读介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113495862A (zh) * | 2021-06-29 | 2021-10-12 | 山东华芯半导体有限公司 | 一种具有ecc功能的总线桥装置 |
CN114546924A (zh) * | 2022-01-28 | 2022-05-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于axi的双向数据传输方法、系统、存储介质及设备 |
CN116756071B (zh) * | 2023-08-21 | 2023-12-22 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、设备、存储介质和计算机程序产品 |
CN116893991B (zh) * | 2023-09-11 | 2024-01-02 | 芯动微电子科技(珠海)有限公司 | 一种axi协议下的存储模块转换接口及其转换方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828865A (en) * | 1995-12-27 | 1998-10-27 | Intel Corporation | Dual mode bus bridge for interfacing a host bus and a personal computer interface bus |
CN103761208A (zh) * | 2013-10-08 | 2014-04-30 | 苏州爱思索电子科技有限公司 | 用于AHB总线向Crossbar总线的通讯转换桥设备 |
CN104750644A (zh) * | 2015-04-20 | 2015-07-01 | 哈尔滨工业大学 | Dsp的emif读写时序与fpga的avalon读写时序的转换方法 |
CN107341053A (zh) * | 2017-06-01 | 2017-11-10 | 深圳大学 | 异构多核可编程系统及其内存配置和计算单元的编程方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101620460B1 (ko) * | 2010-05-04 | 2016-05-13 | 삼성전자주식회사 | 인터커넥트, 그것을 포함하는 버스 시스템 그리고 버스 시스템의 동작 방법 |
CN109828941B (zh) * | 2019-03-06 | 2020-07-07 | 苏州浪潮智能科技有限公司 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
-
2019
- 2019-03-06 CN CN201910168109.9A patent/CN109828941B/zh active Active
- 2019-08-30 WO PCT/CN2019/103674 patent/WO2020177283A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828865A (en) * | 1995-12-27 | 1998-10-27 | Intel Corporation | Dual mode bus bridge for interfacing a host bus and a personal computer interface bus |
CN103761208A (zh) * | 2013-10-08 | 2014-04-30 | 苏州爱思索电子科技有限公司 | 用于AHB总线向Crossbar总线的通讯转换桥设备 |
CN104750644A (zh) * | 2015-04-20 | 2015-07-01 | 哈尔滨工业大学 | Dsp的emif读写时序与fpga的avalon读写时序的转换方法 |
CN107341053A (zh) * | 2017-06-01 | 2017-11-10 | 深圳大学 | 异构多核可编程系统及其内存配置和计算单元的编程方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020177283A1 (zh) * | 2019-03-06 | 2020-09-10 | 苏州浪潮智能科技有限公司 | Axi2wb总线桥实现方法、装置、设备及存储介质 |
CN110321260B (zh) * | 2019-06-28 | 2023-03-24 | 西安紫光国芯半导体有限公司 | 一种基于uvm的axi总线接口读写数据比较方法和uvm验证平台 |
CN110321260A (zh) * | 2019-06-28 | 2019-10-11 | 西安紫光国芯半导体有限公司 | 一种基于uvm的axi总线接口读写数据比较方法和uvm验证平台 |
CN110389919A (zh) * | 2019-07-04 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 基于risc-v处理器的异步收发传输器外设及系统 |
CN110401586B (zh) * | 2019-07-26 | 2022-03-08 | 广东浪潮大数据研究有限公司 | 一种总线通信方法、装置、设备及可读存储介质 |
CN110401586A (zh) * | 2019-07-26 | 2019-11-01 | 广东浪潮大数据研究有限公司 | 一种总线通信方法、装置、设备及可读存储介质 |
CN110704345A (zh) * | 2019-09-06 | 2020-01-17 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于pcie的高速多串口卡系统及其发送、接收方法 |
CN114595181A (zh) * | 2020-12-03 | 2022-06-07 | 沈阳中科数控技术股份有限公司 | 一种面向嵌入式系统的总线匹配实现方法 |
CN114595181B (zh) * | 2020-12-03 | 2024-01-12 | 沈阳中科数控技术股份有限公司 | 一种面向嵌入式系统的总线匹配实现方法 |
CN112988647A (zh) * | 2021-02-06 | 2021-06-18 | 江南大学 | 一种TileLink总线到AXI4总线转换系统及方法 |
WO2023284169A1 (zh) * | 2021-07-15 | 2023-01-19 | 苏州浪潮智能科技有限公司 | 从axi总线到opb总线的数据写入方法及读取方法 |
CN117640783A (zh) * | 2024-01-25 | 2024-03-01 | 富瀚微电子(成都)有限公司 | 一种数据传输方法、系统、电子设备以及可读介质 |
CN117640783B (zh) * | 2024-01-25 | 2024-04-09 | 富瀚微电子(成都)有限公司 | 一种数据传输方法、系统、电子设备以及可读介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020177283A1 (zh) | 2020-09-10 |
CN109828941B (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109828941A (zh) | Axi2wb总线桥实现方法、装置、设备及存储介质 | |
Shrivastav et al. | Performance comparison of AMBA bus-based system-on-chip communication protocol | |
TW201702883A (zh) | 池式記憶體位址轉譯之技術 | |
JP2005228311A (ja) | 開放形コアプロトコルを基盤とするバスシステム | |
US9952643B2 (en) | Device power management state transition latency advertisement for faster boot time | |
CN110837486A (zh) | 一种基于FPGA的FlexRay-CPCIe通信模块 | |
WO2016192217A1 (zh) | 一种apb总线桥 | |
WO2023160192A1 (zh) | 一种用于总线的互联装置 | |
CN106951381A (zh) | 一种uart扩展芯片及实现方法 | |
CN101162448A (zh) | 一种usb高速数据隧道的硬件传输方法 | |
CN110635985A (zh) | 一种FlexRay-CPCIe通信模块 | |
CN103399830A (zh) | 通过PCI Express总线读取计算机物理内存的设备及方法 | |
CN107908587A (zh) | 基于usb3.0的实时数据采集传输装置 | |
CN112988647A (zh) | 一种TileLink总线到AXI4总线转换系统及方法 | |
CN106372029A (zh) | 一种基于中断的点对点片内通信模块 | |
CN106844263B (zh) | 一种基于可配置的多处理器计算机系统及实现方法 | |
CN104714907B (zh) | 一种pci总线转换为isa和apb总线设计方法 | |
CN114443170A (zh) | Fpga动态并行加卸载系统 | |
CN103226531B (zh) | 一种双端口外设配置接口电路 | |
CN107704407A (zh) | 一种用于spi和uart之间数据处理的系统和方法 | |
CN103412849A (zh) | ARM处理器的NoC资源网络接口及其驱动方法 | |
CN105893036A (zh) | 一种嵌入式系统的兼容式加速器扩展方法 | |
Paunikar et al. | Design and implementation of area efficient, low power AMBA-APB Bridge for SoC | |
CN210402342U (zh) | 一种基于zynq的数据加解密结构 | |
CN107562673B (zh) | 一种应用于嵌入处理器总线协议转换桥接装置 |
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 |