1
0

Merge pull request #35 from sifive/spi-buffers

spi: put a request buffer infront of SPI
This commit is contained in:
Megan Wachs 2017-08-20 16:47:01 -07:00 committed by GitHub
commit 402017d34e
2 changed files with 8 additions and 3 deletions

View File

@ -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
} }

View File

@ -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,