Addressing comments: bool style, comments, removed suggestName
This commit is contained in:
		| @@ -90,7 +90,7 @@ trait I2CModule extends Module with HasI2CParameters with HasRegMap { | ||||
|   val filterCnt = Reg(init = UInt(0, 14.W)) | ||||
|   when ( !control.coreEn ) { | ||||
|     filterCnt := 0.U | ||||
|   } .elsewhen (~(filterCnt.orR)) { | ||||
|   } .elsewhen (!(filterCnt.orR)) { | ||||
|     filterCnt := Cat(prescaler.hi, prescaler.lo) >> 2  //16x I2C bus frequency | ||||
|   } .otherwise { | ||||
|     filterCnt := filterCnt - 1.U | ||||
| @@ -98,23 +98,23 @@ trait I2CModule extends Module with HasI2CParameters with HasRegMap { | ||||
|  | ||||
|   val fSCL      = Reg(init = UInt(0x7, 3.W)) | ||||
|   val fSDA      = Reg(init = UInt(0x7, 3.W)) | ||||
|   when (~(filterCnt.orR)) { | ||||
|   when (!(filterCnt.orR)) { | ||||
|     fSCL := Cat(fSCL, io.port.scl.in) | ||||
|     fSDA := Cat(fSDA, io.port.sda.in) | ||||
|   } | ||||
|  | ||||
|   val sSCL      = Reg(init = Bool(true), next = (new Majority(fSCL.toBools.toSet)).out) | ||||
|   val sSDA      = Reg(init = Bool(true), next = (new Majority(fSDA.toBools.toSet)).out) | ||||
|   val sSCL      = Reg(init = true.B, next = (new Majority(fSCL.toBools.toSet)).out) | ||||
|   val sSDA      = Reg(init = true.B, next = (new Majority(fSDA.toBools.toSet)).out) | ||||
|  | ||||
|   val dSCL      = Reg(init = Bool(true), next = sSCL) | ||||
|   val dSDA      = Reg(init = Bool(true), next = sSDA) | ||||
|   val dSCL      = Reg(init = true.B, next = sSCL) | ||||
|   val dSDA      = Reg(init = true.B, next = sSDA) | ||||
|  | ||||
|   val dSCLOen   = Reg(next = io.port.scl.oe) // delayed scl_oen | ||||
|  | ||||
|   // detect start condition => detect falling edge on SDA while SCL is high | ||||
|   // detect stop  condition => detect rising  edge on SDA while SCL is high | ||||
|   val startCond = Reg(init = Bool(false), next = !sSDA &&  dSDA && sSCL) | ||||
|   val stopCond  = Reg(init = Bool(false), next =  sSDA && !dSDA && sSCL) | ||||
|   val startCond = Reg(init = false.B, next = !sSDA &&  dSDA && sSCL) | ||||
|   val stopCond  = Reg(init = false.B, next =  sSDA && !dSDA && sSCL) | ||||
|  | ||||
|   // master drives SCL high, but another master pulls it low | ||||
|   // master start counting down its low cycle now (clock synchronization) | ||||
| @@ -122,14 +122,14 @@ trait I2CModule extends Module with HasI2CParameters with HasRegMap { | ||||
|  | ||||
|   // slave_wait is asserted when master wants to drive SCL high, but the slave pulls it low | ||||
|   // slave_wait remains asserted until the slave releases SCL | ||||
|   val slaveWait = Reg(init = Bool(false)) | ||||
|   val slaveWait = Reg(init = false.B) | ||||
|   slaveWait := (io.port.scl.oe && !dSCLOen && !sSCL) || (slaveWait && !sSCL) | ||||
|  | ||||
|   val clkEn     = Reg(init = Bool(true))     // clock generation signals | ||||
|   val clkEn     = Reg(init = true.B)     // clock generation signals | ||||
|   val cnt       = Reg(init = UInt(0, 16.W))  // clock divider counter (synthesis) | ||||
|  | ||||
|   // generate clk enable signal | ||||
|   when (~(cnt.orR) || !control.coreEn || sclSync ) { | ||||
|   when (!(cnt.orR) || !control.coreEn || sclSync ) { | ||||
|     cnt   := Cat(prescaler.hi, prescaler.lo) | ||||
|     clkEn := true.B | ||||
|   } | ||||
| @@ -141,26 +141,26 @@ trait I2CModule extends Module with HasI2CParameters with HasRegMap { | ||||
|     clkEn := false.B | ||||
|   } | ||||
|  | ||||
|   val sclOen     = Reg(init = Bool(true)) | ||||
|   val sclOen     = Reg(init = true.B) | ||||
|   io.port.scl.oe := sclOen | ||||
|  | ||||
|   val sdaOen     = Reg(init = Bool(true)) | ||||
|   val sdaOen     = Reg(init = true.B) | ||||
|   io.port.sda.oe := sdaOen | ||||
|  | ||||
|   val sdaChk     = Reg(init = Bool(false))    // check SDA output (Multi-master arbitration) | ||||
|   val sdaChk     = Reg(init = false.B)       // check SDA output (Multi-master arbitration) | ||||
|  | ||||
|   val transmitBit = Reg(init = Bool(false)) | ||||
|   val transmitBit = Reg(init = false.B) | ||||
|   val receivedBit = Reg(Bool()) | ||||
|   when (sSCL && !dSCL) { | ||||
|     receivedBit := sSDA | ||||
|   } | ||||
|  | ||||
|   val bitCmd      = Reg(init = UInt(0, 4.W)) // command (from byte controller) | ||||
|   val bitCmdStop  = Reg(init = Bool(false)) | ||||
|   val bitCmdStop  = Reg(init = false.B) | ||||
|   when (clkEn) { | ||||
|     bitCmdStop := bitCmd === I2C_CMD_STOP | ||||
|   } | ||||
|   val bitCmdAck   = Reg(init = Bool(false)) | ||||
|   val bitCmdAck   = Reg(init = false.B) | ||||
|  | ||||
|   val (s_bit_idle :: | ||||
|        s_bit_start_a :: s_bit_start_b :: s_bit_start_c :: s_bit_start_d :: s_bit_start_e :: | ||||
| @@ -169,7 +169,7 @@ trait I2CModule extends Module with HasI2CParameters with HasRegMap { | ||||
|        s_bit_wr_a    :: s_bit_wr_b    :: s_bit_wr_c    :: s_bit_wr_d    :: Nil) = Enum(UInt(), 18) | ||||
|   val bitState    = Reg(init = s_bit_idle) | ||||
|  | ||||
|   val arbLost     = Reg(init = Bool(false), next = (sdaChk && !sSDA && sdaOen) | ((bitState === s_bit_idle) && stopCond && !bitCmdStop)) | ||||
|   val arbLost     = Reg(init = false.B, next = (sdaChk && !sSDA && sdaOen) | ((bitState === s_bit_idle) && stopCond && !bitCmdStop)) | ||||
|  | ||||
|   // bit FSM | ||||
|   when (arbLost) { | ||||
| @@ -309,11 +309,11 @@ trait I2CModule extends Module with HasI2CParameters with HasRegMap { | ||||
|  | ||||
|  | ||||
|   //////// Byte level /////// | ||||
|   val load        = Reg(init = Bool(false))                      // load shift register | ||||
|   val shift       = Reg(init = Bool(false))                      // shift shift register | ||||
|   val cmdAck      = Reg(init = Bool(false))                      // also done | ||||
|   val receivedAck = Reg(init = Bool(false))                      // from I2C slave | ||||
|   val go          = (cmd.read | cmd.write | cmd.stop) & ~cmdAck  // CHECK: why stop instead of start? | ||||
|   val load        = Reg(init = false.B)                         // load shift register | ||||
|   val shift       = Reg(init = false.B)                         // shift shift register | ||||
|   val cmdAck      = Reg(init = false.B)                         // also done | ||||
|   val receivedAck = Reg(init = false.B)                         // from I2C slave | ||||
|   val go          = (cmd.read | cmd.write | cmd.stop) & !cmdAck | ||||
|  | ||||
|   val bitCnt      = Reg(init = UInt(0, 3.W)) | ||||
|   when (load) { | ||||
| @@ -453,7 +453,7 @@ trait I2CModule extends Module with HasI2CParameters with HasRegMap { | ||||
|  | ||||
|   //////// Top level //////// | ||||
|  | ||||
|   // hack | ||||
|   // hack: b/c the same register offset is used to write cmd and read status | ||||
|   val nextCmd = Wire(UInt(8.W)) | ||||
|   nextCmd := cmd.asUInt | ||||
|   cmd := (new CommandBundle).fromBits(nextCmd) | ||||
| @@ -483,7 +483,7 @@ trait I2CModule extends Module with HasI2CParameters with HasRegMap { | ||||
|   status.transferInProgress := cmd.read || cmd.write | ||||
|   status.irqFlag            := (cmdAck || arbLost || status.irqFlag) && !cmd.irqAck | ||||
|  | ||||
|   // Note that these are out of order. | ||||
|  | ||||
|   regmap( | ||||
|     I2CCtrlRegs.prescaler_lo -> Seq(RegField(8, prescaler.lo)), | ||||
|     I2CCtrlRegs.prescaler_hi -> Seq(RegField(8, prescaler.hi)), | ||||
|   | ||||
| @@ -10,7 +10,6 @@ trait PeripheryI2C { | ||||
|   this: TopNetwork { val i2cConfigs: Seq[I2CConfig] } => | ||||
|   val i2cDevices = i2cConfigs.zipWithIndex.map { case (c, i) => | ||||
|     val i2c = LazyModule(new TLI2C(c)) | ||||
|     i2c.suggestName(s"i2c$i") | ||||
|     i2c.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node) | ||||
|     intBus.intnode := i2c.intnode | ||||
|     i2c | ||||
|   | ||||
		Reference in New Issue
	
	Block a user