1
0

i2c, uart: Use Synchronizer primitives for the inputs

This commit is contained in:
Megan Wachs 2017-09-05 18:32:37 -07:00
parent c68d556768
commit 1feaefe4c5
2 changed files with 5 additions and 5 deletions

View File

@ -3,7 +3,7 @@ package sifive.blocks.devices.i2c
import Chisel._ import Chisel._
import chisel3.experimental.{withClockAndReset} import chisel3.experimental.{withClockAndReset}
import freechips.rocketchip.util.ShiftRegInit import freechips.rocketchip.util.SynchronizerShiftRegInit
import sifive.blocks.devices.pinctrl.{Pin, PinCtrl} import sifive.blocks.devices.pinctrl.{Pin, PinCtrl}
class I2CPins[T <: Pin](pingen: () => T) extends Bundle { class I2CPins[T <: Pin](pingen: () => T) extends Bundle {
@ -18,11 +18,11 @@ class I2CPins[T <: Pin](pingen: () => T) extends Bundle {
withClockAndReset(clock, reset) { withClockAndReset(clock, reset) {
scl.outputPin(i2c.scl.out, pue=true.B, ie = true.B) scl.outputPin(i2c.scl.out, pue=true.B, ie = true.B)
scl.o.oe := i2c.scl.oe scl.o.oe := i2c.scl.oe
i2c.scl.in := ShiftRegInit(scl.i.ival, syncStages, init = Bool(true)) i2c.scl.in := SynchronizerShiftRegInit(scl.i.ival, syncStages, init = Bool(true))
sda.outputPin(i2c.sda.out, pue=true.B, ie = true.B) sda.outputPin(i2c.sda.out, pue=true.B, ie = true.B)
sda.o.oe := i2c.sda.oe sda.o.oe := i2c.sda.oe
i2c.sda.in := ShiftRegInit(sda.i.ival, syncStages, init = Bool(true)) i2c.sda.in := SynchronizerShiftRegInit(sda.i.ival, syncStages, init = Bool(true))
} }
} }
} }

View File

@ -4,7 +4,7 @@ package sifive.blocks.devices.uart
import Chisel._ import Chisel._
import chisel3.experimental.{withClockAndReset} import chisel3.experimental.{withClockAndReset}
import freechips.rocketchip.config.Field import freechips.rocketchip.config.Field
import freechips.rocketchip.util.ShiftRegInit import freechips.rocketchip.util.SynchronizerShiftRegInit
import freechips.rocketchip.coreplex.{HasPeripheryBus, PeripheryBusParams, HasInterruptBus} import freechips.rocketchip.coreplex.{HasPeripheryBus, PeripheryBusParams, HasInterruptBus}
import freechips.rocketchip.diplomacy.{LazyModule, LazyMultiIOModuleImp} import freechips.rocketchip.diplomacy.{LazyModule, LazyMultiIOModuleImp}
import sifive.blocks.devices.pinctrl.{Pin} import sifive.blocks.devices.pinctrl.{Pin}
@ -51,7 +51,7 @@ class UARTPins[T <: Pin] (pingen: () => T) extends Bundle {
withClockAndReset(clock, reset) { withClockAndReset(clock, reset) {
txd.outputPin(uart.txd) txd.outputPin(uart.txd)
val rxd_t = rxd.inputPin() val rxd_t = rxd.inputPin()
uart.rxd := ShiftRegInit(rxd_t, n = syncStages, init = Bool(true)) uart.rxd := SynchronizerShiftRegInit(rxd_t, n = syncStages, init = Bool(true))
} }
} }
} }