Merge pull request #11 from sifive/spi
authorYunsup Lee <yunsup@sifive.com>
Tue, 2 May 2017 21:36:39 +0000 (14:36 -0700)
committerGitHub <noreply@github.com>
Tue, 2 May 2017 21:36:39 +0000 (14:36 -0700)
SPI errata fixes

src/main/scala/devices/spi/SPIFIFO.scala
src/main/scala/devices/spi/SPIPhysical.scala

index a322a1b933004cfe35064d142ad595a037fbef7a..5bc6e823f90ca802e119b53104a5a52de4921aec 100644 (file)
@@ -41,7 +41,7 @@ class SPIFIFO(c: SPIParamsBase) extends Module {
 
   val proto = SPIProtocol.decode(io.link.fmt.proto).zipWithIndex
   val cnt_quot = Mux1H(proto.map { case (s, i) => s -> (io.ctrl.fmt.len >> i) })
-  val cnt_rmdr = Mux1H(proto.map { case (s, i) => s -> (io.ctrl.fmt.len(i, 0).orR) })
+  val cnt_rmdr = Mux1H(proto.map { case (s, i) => s -> (if (i > 0) io.ctrl.fmt.len(i-1, 0).orR else UInt(0)) })
   io.link.fmt <> io.ctrl.fmt
   io.link.cnt := cnt_quot + cnt_rmdr
 
index 802233da97db14f3509888de204da26a7446bd95..a9ce0760ce30a793c29522d47d99d4a3db4811b6 100644 (file)
@@ -82,7 +82,7 @@ class SPIPhysical(c: SPIParamsBase) extends Module {
   }
 
   val tx = (ctrl.fmt.iodir === SPIDirection.Tx)
-  val txen_in = (proto.head +: proto.tail.map(_ && tx)).scanRight(Bool(false))(_ || _)
+  val txen_in = (proto.head +: proto.tail.map(_ && tx)).scanRight(Bool(false))(_ || _).init
   val txen = txen_in :+ txen_in.last
 
   io.port.sck := sck