Merge pull request #35 from sifive/spi-buffers
spi: put a request buffer infront of SPI
This commit is contained in:
commit
402017d34e
@ -4,8 +4,8 @@ package sifive.blocks.devices.spi
|
|||||||
import Chisel._
|
import Chisel._
|
||||||
import freechips.rocketchip.config.Field
|
import freechips.rocketchip.config.Field
|
||||||
import freechips.rocketchip.coreplex.{HasPeripheryBus, HasInterruptBus}
|
import freechips.rocketchip.coreplex.{HasPeripheryBus, HasInterruptBus}
|
||||||
import freechips.rocketchip.diplomacy.{LazyModule,LazyMultiIOModuleImp}
|
import freechips.rocketchip.diplomacy.{LazyModule,LazyMultiIOModuleImp,BufferParams}
|
||||||
import freechips.rocketchip.tilelink.{TLFragmenter}
|
import freechips.rocketchip.tilelink.{TLFragmenter,TLBuffer}
|
||||||
import freechips.rocketchip.util.HeterogeneousBag
|
import freechips.rocketchip.util.HeterogeneousBag
|
||||||
|
|
||||||
case object PeripherySPIKey extends Field[Seq[SPIParams]]
|
case object PeripherySPIKey extends Field[Seq[SPIParams]]
|
||||||
@ -41,7 +41,10 @@ trait HasPeripherySPIFlash extends HasPeripheryBus with HasInterruptBus {
|
|||||||
val qspis = spiFlashParams map { params =>
|
val qspis = spiFlashParams map { params =>
|
||||||
val qspi = LazyModule(new TLSPIFlash(pbus.beatBytes, params))
|
val qspi = LazyModule(new TLSPIFlash(pbus.beatBytes, params))
|
||||||
qspi.rnode := pbus.toVariableWidthSlaves
|
qspi.rnode := pbus.toVariableWidthSlaves
|
||||||
qspi.fnode := TLFragmenter(1, pbus.blockBytes)(pbus.toFixedWidthSlaves)
|
qspi.fnode :=
|
||||||
|
TLFragmenter(1, pbus.blockBytes)(
|
||||||
|
TLBuffer(BufferParams(params.fBufferDepth), BufferParams.none)(
|
||||||
|
pbus.toFixedWidthSlaves))
|
||||||
ibus.fromSync := qspi.intnode
|
ibus.fromSync := qspi.intnode
|
||||||
qspi
|
qspi
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import freechips.rocketchip.util.HeterogeneousBag
|
|||||||
trait SPIFlashParamsBase extends SPIParamsBase {
|
trait SPIFlashParamsBase extends SPIParamsBase {
|
||||||
val fAddress: BigInt
|
val fAddress: BigInt
|
||||||
val fSize: BigInt
|
val fSize: BigInt
|
||||||
|
val fBufferDepth: Int
|
||||||
|
|
||||||
val insnAddrBytes: Int
|
val insnAddrBytes: Int
|
||||||
val insnPadLenBits: Int
|
val insnPadLenBits: Int
|
||||||
@ -22,6 +23,7 @@ trait SPIFlashParamsBase extends SPIParamsBase {
|
|||||||
case class SPIFlashParams(
|
case class SPIFlashParams(
|
||||||
rAddress: BigInt,
|
rAddress: BigInt,
|
||||||
fAddress: BigInt,
|
fAddress: BigInt,
|
||||||
|
fBufferDepth: Int = 0,
|
||||||
rSize: BigInt = 0x1000,
|
rSize: BigInt = 0x1000,
|
||||||
fSize: BigInt = 0x20000000,
|
fSize: BigInt = 0x20000000,
|
||||||
rxDepth: Int = 8,
|
rxDepth: Int = 8,
|
||||||
|
Loading…
Reference in New Issue
Block a user