All Downloads are FREE. Search and download functionalities are using the official Maven repository.

spinal.lib.memory.sdram.dfi.Control.scala Maven / Gradle / Ivy

package spinal.lib.memory.sdram.dfi

import spinal.core._
import spinal.lib._
import spinal.lib.memory.sdram.dfi.function._
import spinal.lib.memory.sdram.dfi.interface.{DfiConfig, IDFI, TaskConfig, TaskPort}

case class Control(taskConfig: TaskConfig, dfiConfig: DfiConfig) extends Component {
  val io = new Bundle {
    val inport = slave(TaskPort(taskConfig, dfiConfig))
    val outport = master(IDFI(dfiConfig))
  }

  val cmd = new Area {
    val cmdtxd = CmdTxd(taskConfig, dfiConfig)
    cmdtxd.io.task <> io.inport.tasks.init()
  }

  val wrdata = new Area {
    val wrdatatxd = WrDataTxd(taskConfig, dfiConfig)
    wrdatatxd.io.write <> RegNext(io.inport.tasks.write).init(False)
    wrdatatxd.io.taskWrData << io.inport.writeData
  }

  val radata = new Area {
    val rddatarxd = RdDataRxd(taskConfig, dfiConfig)
    rddatarxd.io.task <> io.inport.tasks.init()
    rddatarxd.io.taskRdData.toStream >> io.inport.rsp
  }

  val idfiout = new Area {
    io.outport.cmd <> cmd.cmdtxd.io.cmd
    io.outport.address <> cmd.cmdtxd.io.address
    io.outport.wrData <> wrdata.wrdatatxd.io.idfiWrData
    io.outport.rdData <> radata.rddatarxd.io.idfiRdData
    io.outport.rdEn <> radata.rddatarxd.io.rden
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy