2025-04-17 10:55:00 +08:00
|
|
|
package BACK
|
|
|
|
|
|
|
|
|
|
import chisel3._
|
|
|
|
|
import chisel3.util._
|
|
|
|
|
|
2025-04-23 17:57:38 +08:00
|
|
|
class SRAM2kWRIO extends Bundle {
|
2025-04-24 16:18:33 +08:00
|
|
|
val addrw = Input(UInt(11.W))
|
|
|
|
|
val dataw = Input( UInt(8.W) )
|
|
|
|
|
val enw = Input(Bool())
|
2025-04-23 17:57:38 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class SRAM2kRDIO extends Bundle {
|
2025-04-24 16:18:33 +08:00
|
|
|
val addrr = Input(UInt(11.W))
|
|
|
|
|
val datar = Output( UInt(8.W) )
|
|
|
|
|
val enr = Input(Bool())
|
2025-04-23 17:57:38 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-04-17 10:55:00 +08:00
|
|
|
class SRAM2kIO extends Bundle {
|
2025-04-24 16:18:33 +08:00
|
|
|
val rd = new SRAM2kRDIO
|
|
|
|
|
val wr = new SRAM2kWRIO
|
2025-04-17 10:55:00 +08:00
|
|
|
}
|
|
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// class SRAM2kFifoIO extends Bundle {
|
|
|
|
|
// val sram = new SRAM2kIO
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// val enq = Flipped(Decoupled(UInt(8.W)))
|
|
|
|
|
// val deq = Decoupled(UInt(8.W))
|
|
|
|
|
// }
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// class SRAM2kFifo extends Module {
|
|
|
|
|
// val io: SRAM2kFifoIO = IO(new SRAM2kFifoIO)
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// val wptr = RegInit(0.U((11+1).W))
|
|
|
|
|
// val rptr = RegInit(0.U((11+1).W))
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// val isFull = (wptr.extract(11) =/= rptr.extract(11)) & (wptr(10,0) === rptr(10,0))
|
|
|
|
|
// val isEmpty = (wptr === rptr)
|
2025-04-17 10:55:00 +08:00
|
|
|
|
|
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// io.sram.addrr := rptr(10,0)
|
|
|
|
|
// io.sram.addrw := wptr(10,0)
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// io.sram.dataw := io.enq.bits
|
|
|
|
|
// io.deq.bits := io.sram.datar
|
|
|
|
|
// io.sram.enw := io.enq.fire
|
|
|
|
|
// io.sram.enr := true.B
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// io.enq.ready := ~isFull
|
|
|
|
|
// io.deq.valid := ~isEmpty
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// when( io.enq.fire ){
|
|
|
|
|
// wptr := wptr + 1.U
|
|
|
|
|
// }
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// when( io.deq.fire ){
|
|
|
|
|
// rptr := rptr + 1.U
|
|
|
|
|
// }
|
2025-04-17 10:55:00 +08:00
|
|
|
|
2025-04-24 16:18:33 +08:00
|
|
|
// }
|