2

我想用 Chisel 开发一个通用的 AXI4 外设。我可以为此目的使用 Rocket-Chip 的 AMBA 库吗?我只能在下面的链接中找到有关此主题的文档;

MMIO-外设

但是,本文档中的示例旨在与 Rocket-Chip 一起使用。我想开发一个独立的 AXI4 外设。

4

1 回答 1

2

您的问题提到以下内容:

  • 我想开发一个独立的 Axi4 外设

当我开始在 Chisel 中开发 AXI4 接口时,我的出发点是Chisel 官方文档,他们从使用 AXI4 写入通道的典型 Verilog 外设开始,如下所示:

 module my_module(
  
// Write Channel
  input        AXI_AWVALID,
  output       AXI_AWREADY,
  input [3:0]  AXI_AWID,
  input [19:0] AXI_AWADDR,
  input [1:0]  AXI_AWLEN,
  input [1:0]  AXI_AWSIZE,
  // ...
);

为此,Chisel Bundle 将如下所示:

class VerilogAXIBundle(val addrWidth: Int) extends Bundle {
  val AWVALID = Output(Bool())
  val AWREADY = Input(Bool())
  val AWID = Output(UInt(4.W))
  val AWADDR = Output(UInt(addrWidth.W))
  val AWLEN = Output(UInt(2.W))
  val AWSIZE = Output(UInt(2.W))
  // The rest of AW and other AXI channels here
}

// Instantiated as
class my_module extends RawModule {
  val AXI = IO(new VerilogAXIBundle(20))
}

虽然前面提到的例子很简单,但这对我开始在 Chisel 中编写通用 AXI4 接口很有帮助。

话虽如此,我还使用了以下一些资源在 Chisel 中开发 AXI 接口:

于 2022-02-09T16:44:13.360 回答