SPI: Make it easier to build arbitrary bundles
This commit is contained in:
parent
f8dcfbacfa
commit
6a13639cf3
@ -5,7 +5,7 @@ import Chisel._
|
|||||||
import chisel3.experimental.{withClockAndReset}
|
import chisel3.experimental.{withClockAndReset}
|
||||||
import sifive.blocks.devices.pinctrl.{PinCtrl, Pin}
|
import sifive.blocks.devices.pinctrl.{PinCtrl, Pin}
|
||||||
|
|
||||||
class SPIPins[T <: Pin] (pingen: ()=> T, c: SPIParamsBase) extends SPIBundle(c) {
|
class SPISignals[T <: Data] (pingen: ()=> T, c: SPIParamsBase) extends SPIBundle(c) {
|
||||||
|
|
||||||
val sck = pingen()
|
val sck = pingen()
|
||||||
val dq = Vec(4, pingen())
|
val dq = Vec(4, pingen())
|
||||||
@ -14,6 +14,13 @@ class SPIPins[T <: Pin] (pingen: ()=> T, c: SPIParamsBase) extends SPIBundle(c)
|
|||||||
override def cloneType: this.type =
|
override def cloneType: this.type =
|
||||||
this.getClass.getConstructors.head.newInstance(pingen, c).asInstanceOf[this.type]
|
this.getClass.getConstructors.head.newInstance(pingen, c).asInstanceOf[this.type]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class SPIPins[T <: Pin] (pingen: ()=> T, c: SPIParamsBase) extends SPISignals(pingen, c) {
|
||||||
|
|
||||||
|
override def cloneType: this.type =
|
||||||
|
this.getClass.getConstructors.head.newInstance(pingen, c).asInstanceOf[this.type]
|
||||||
|
|
||||||
def fromPort(spi: SPIPortIO, clock: Clock, reset: Bool,
|
def fromPort(spi: SPIPortIO, clock: Clock, reset: Bool,
|
||||||
syncStages: Int = 0, driveStrength: Bool = Bool(false)) {
|
syncStages: Int = 0, driveStrength: Bool = Bool(false)) {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user