add convenient constructors for NASTI channels
This commit is contained in:
parent
ede1ada053
commit
8a8d52da4f
@ -113,6 +113,75 @@ class NASTIReadDataChannel extends NASTIResponseChannel with HasNASTIData {
|
|||||||
val user = UInt(width = nastiRUserBits)
|
val user = UInt(width = nastiRUserBits)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object NASTIWriteAddressChannel {
|
||||||
|
def apply(id: UInt, addr: UInt, size: UInt, len: UInt) = {
|
||||||
|
val aw = Wire(new NASTIWriteAddressChannel)
|
||||||
|
aw.id := id
|
||||||
|
aw.addr := addr
|
||||||
|
aw.len := len
|
||||||
|
aw.size := size
|
||||||
|
aw.burst := UInt("b01")
|
||||||
|
aw.lock := Bool(false)
|
||||||
|
aw.cache := UInt("b0000")
|
||||||
|
aw.prot := UInt("b000")
|
||||||
|
aw.qos := UInt("b0000")
|
||||||
|
aw.region := UInt("b0000")
|
||||||
|
aw.user := UInt(0)
|
||||||
|
aw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object NASTIReadAddressChannel {
|
||||||
|
def apply(id: UInt, addr: UInt, size: UInt, len: UInt) = {
|
||||||
|
val ar = Wire(new NASTIReadAddressChannel)
|
||||||
|
ar.id := id
|
||||||
|
ar.addr := addr
|
||||||
|
ar.len := len
|
||||||
|
ar.size := size
|
||||||
|
ar.burst := UInt("b01")
|
||||||
|
ar.lock := Bool(false)
|
||||||
|
ar.cache := UInt(0)
|
||||||
|
ar.prot := UInt(0)
|
||||||
|
ar.qos := UInt(0)
|
||||||
|
ar.region := UInt(0)
|
||||||
|
ar.user := UInt(0)
|
||||||
|
ar
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object NASTIWriteDataChannel {
|
||||||
|
def apply(strb: UInt, data: UInt, last: Bool) = {
|
||||||
|
val w = Wire(new NASTIWriteDataChannel)
|
||||||
|
w.strb := strb
|
||||||
|
w.data := data
|
||||||
|
w.last := last
|
||||||
|
w.user := UInt(0)
|
||||||
|
w
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object NASTIReadDataChannel {
|
||||||
|
def apply(id: UInt, data: UInt, last: Bool, resp: UInt = UInt(0)) = {
|
||||||
|
val r = Wire(new NASTIReadDataChannel)
|
||||||
|
r.id := id
|
||||||
|
r.data := data
|
||||||
|
r.last := last
|
||||||
|
r.resp := resp
|
||||||
|
r.user := UInt(0)
|
||||||
|
r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object NASTIWriteResponseChannel {
|
||||||
|
def apply(id: UInt, resp: UInt = UInt(0)) = {
|
||||||
|
val b = Wire(new NASTIWriteResponseChannel)
|
||||||
|
b.id := id
|
||||||
|
b.resp := resp
|
||||||
|
b.user := UInt(0)
|
||||||
|
b
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class MemIONASTISlaveIOConverter(cacheBlockOffsetBits: Int) extends MIFModule with NASTIParameters {
|
class MemIONASTISlaveIOConverter(cacheBlockOffsetBits: Int) extends MIFModule with NASTIParameters {
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val nasti = new NASTISlaveIO
|
val nasti = new NASTISlaveIO
|
||||||
|
@ -121,10 +121,10 @@ class SMIIONASTIReadIOConverter(val dataWidth: Int, val addrWidth: Int)
|
|||||||
io.smi.resp.ready := (state === s_read)
|
io.smi.resp.ready := (state === s_read)
|
||||||
|
|
||||||
io.r.valid := (state === s_resp)
|
io.r.valid := (state === s_resp)
|
||||||
io.r.bits.resp := Bits(0)
|
io.r.bits := NASTIReadDataChannel(
|
||||||
io.r.bits.data := buffer.toBits
|
id = id,
|
||||||
io.r.bits.id := id
|
data = buffer.toBits,
|
||||||
io.r.bits.last := (nBeats === UInt(0))
|
last = (nBeats === UInt(0)))
|
||||||
|
|
||||||
when (io.ar.fire()) {
|
when (io.ar.fire()) {
|
||||||
when (io.ar.bits.size < UInt(byteOffBits)) {
|
when (io.ar.bits.size < UInt(byteOffBits)) {
|
||||||
@ -207,8 +207,7 @@ class SMIIONASTIWriteIOConverter(val dataWidth: Int, val addrWidth: Int)
|
|||||||
io.smi.req.bits.data := data(dataWidth - 1, 0)
|
io.smi.req.bits.data := data(dataWidth - 1, 0)
|
||||||
io.smi.resp.ready := (state === s_ack)
|
io.smi.resp.ready := (state === s_ack)
|
||||||
io.b.valid := (state === s_resp)
|
io.b.valid := (state === s_resp)
|
||||||
io.b.bits.resp := Bits(0)
|
io.b.bits := NASTIWriteResponseChannel(id)
|
||||||
io.b.bits.id := id
|
|
||||||
|
|
||||||
val jump = PriorityMux(strb(maxWordsPerBeat - 1, 1),
|
val jump = PriorityMux(strb(maxWordsPerBeat - 1, 1),
|
||||||
(1 until maxWordsPerBeat).map(UInt(_)))
|
(1 until maxWordsPerBeat).map(UInt(_)))
|
||||||
|
Loading…
Reference in New Issue
Block a user