Add DebugPlugin avalon
This commit is contained in:
parent
d3dcfcec06
commit
12d21a08e8
|
@ -6,6 +6,7 @@ import VexRiscv.ip._
|
||||||
import spinal.core._
|
import spinal.core._
|
||||||
import spinal.lib._
|
import spinal.lib._
|
||||||
import spinal.lib.bus.amba3.apb.{Apb3Config, Apb3}
|
import spinal.lib.bus.amba3.apb.{Apb3Config, Apb3}
|
||||||
|
import spinal.lib.bus.avalon.{AvalonMMConfig, AvalonMM}
|
||||||
|
|
||||||
|
|
||||||
case class DebugExtensionCmd() extends Bundle{
|
case class DebugExtensionCmd() extends Bundle{
|
||||||
|
@ -19,14 +20,14 @@ case class DebugExtensionRsp() extends Bundle{
|
||||||
|
|
||||||
case class DebugExtensionBus() extends Bundle with IMasterSlave{
|
case class DebugExtensionBus() extends Bundle with IMasterSlave{
|
||||||
val cmd = Stream(DebugExtensionCmd())
|
val cmd = Stream(DebugExtensionCmd())
|
||||||
val rsp = DebugExtensionRsp() //One cycle latency
|
val rsp = DebugExtensionRsp() //zero cycle latency
|
||||||
|
|
||||||
override def asMaster(): Unit = {
|
override def asMaster(): Unit = {
|
||||||
master(cmd)
|
master(cmd)
|
||||||
in(rsp)
|
in(rsp)
|
||||||
}
|
}
|
||||||
|
|
||||||
def toApb3(): Apb3 ={
|
def fromApb3(): Apb3 ={
|
||||||
val apb = Apb3(Apb3Config(
|
val apb = Apb3(Apb3Config(
|
||||||
addressWidth = 8,
|
addressWidth = 8,
|
||||||
dataWidth = 32,
|
dataWidth = 32,
|
||||||
|
@ -43,6 +44,20 @@ case class DebugExtensionBus() extends Bundle with IMasterSlave{
|
||||||
|
|
||||||
apb
|
apb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def fromAvalon(): AvalonMM ={
|
||||||
|
val bus = AvalonMM(AvalonMMConfig.fixed(addressWidth = 8,dataWidth = 32, readLatency = 0))
|
||||||
|
|
||||||
|
cmd.valid := bus.read || bus.write
|
||||||
|
cmd.wr := bus.write
|
||||||
|
cmd.address := bus.address
|
||||||
|
cmd.data := bus.writeData
|
||||||
|
|
||||||
|
bus.waitRequestn := cmd.ready
|
||||||
|
bus.readData := rsp.data
|
||||||
|
|
||||||
|
bus
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case class DebugExtensionIo() extends Bundle with IMasterSlave{
|
case class DebugExtensionIo() extends Bundle with IMasterSlave{
|
||||||
|
|
|
@ -304,7 +304,7 @@ class Briey(config: BrieyConfig) extends Component{
|
||||||
}
|
}
|
||||||
case plugin : DebugPlugin => {
|
case plugin : DebugPlugin => {
|
||||||
resetCtrl.coreResetUnbuffered setWhen(plugin.io.resetOut)
|
resetCtrl.coreResetUnbuffered setWhen(plugin.io.resetOut)
|
||||||
debugBus = plugin.io.bus.toApb3()
|
debugBus = plugin.io.bus.fromApb3()
|
||||||
}
|
}
|
||||||
case _ =>
|
case _ =>
|
||||||
}
|
}
|
||||||
|
|
|
@ -132,6 +132,10 @@ object VexRiscvAvalon{
|
||||||
plugin.dBus.asDirectionLess()
|
plugin.dBus.asDirectionLess()
|
||||||
master(plugin.dBus.toAvalon()).setName("dBusAvalon")
|
master(plugin.dBus.toAvalon()).setName("dBusAvalon")
|
||||||
}
|
}
|
||||||
|
case plugin: DebugPlugin => {
|
||||||
|
plugin.io.bus.asDirectionLess()
|
||||||
|
slave(plugin.io.bus.fromAvalon()).setName("debugBusAvalon")
|
||||||
|
}
|
||||||
case _ =>
|
case _ =>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue