可读开漏IO(ReadableOpenDrain)

ReadableOpenDrain线束定义如下:

case class ReadableOpenDrain[T<: Data](dataType : HardType[T]) extends Bundle with IMasterSlave {
  val write,read : T = dataType()

  override def asMaster(): Unit = {
    out(write)
    in(read)
  }
}

然后,作为主端,您可以使用 read 信号读取外部值,并使用 write 设置您想要在输出上驱动的值。

这是一个用法示例:

val io = new Bundle {
  val dataBus = master(ReadableOpenDrain(Bits(32 bits)))
}

io.dataBus.write := 0x12345678
when(io.dataBus.read === 42) {

}