首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在火箭芯片中生成AHB存储器端口

如何在火箭芯片中生成AHB存储器端口
EN

Stack Overflow用户
提问于 2022-01-30 14:56:27
回答 1查看 41关注 0票数 0

我正在尝试实现火箭芯片SoC设计;默认情况下,SoC设计将生成一个AXI内存端口。但是我想使用AHB内存端口,而火箭芯片对此没有任何信任。有人已经这么做了吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-03-23 04:45:48

subsystem/Ports.scala中的subsystem/Ports.scala类似,一般的思想是实例化AHBSinkNode并通过TLToAHB小部件连接到它。

代码语言:javascript
复制
trait CanHaveAhbMemPort { this: BaseSubsystem =>
  private val memPortParamsOpt = p(AhbExtMem) // could also add a parameter to switch between axi/ahb
  private val portName = "ahb"
  private val device = new MemoryDevice
  private val idBits = memPortParamsOpt.map(_.master.idBits).getOrElse(1)
  val memAhbNode = AHBSlaveSinkNode( memPortParamsOpt.map({ case MemoryPortParams(memPortParams, nMemoryChannels) =>
    Seq.tabulate(nMemoryChannels) { channel =>
      val base = AddressSet.misaligned(memPortParams.base, memPortParams.size)
      val filter = AddressSet(channel * mbus.blockBytes, ~((nMemoryChannels-1) * mbus.blockBytes))

    AHBSlavePortParameters(
      Seq(AHBSlaveParameters(
        address       = base.flatMap(_.intersect(filter)),
        resources     = device.reg,
        regionType    = RegionType.UNCACHED
        executable    = executable,
        supportsRead  = TransferSizes(1, memPortParams.beatBytes * AHBParameters.maxTransfer),
        supportsWrite = TransferSizes(1, memPortParams.beatBytes * AHBParameters.maxTransfer))),
        beatBytes  = memPortParams.beatBytes,
       lite = false)
    }
  }).toList.flatten)

  mbus.coupleTo(s"memory_controller_port_named_$portName") { 
    (memAhbNode 
      :*= TLToAHB()
      :*= TLWidthWidget(mbus.beatBytes)
      :*= _)
} 

Note:我还没有测试过这个。这有望说明如何用AHB交换mem端口的一般想法。就参数和小部件的使用而言,可能需要进行一些实验。希望未来的答案或编辑这个答案能够反映任何测试的结果或经验与此转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70915823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档