Аналог - это то, что вы ищете. По сути, это выход, позволяющий двунаправленным проводам и другим сигналам, которые на самом деле не поддерживаются Chisel, по-прежнему подключаться через ваш дизайн Chisel.
Вот пример:
import chisel3._
import chisel3.experimental.Analog
class AnalogBlackBox extends BlackBox {
val io = IO(new Bundle {
val bus = Analog(32.W)
})
}
class AnalogModule extends Module {
val io = IO(new Bundle {
val bus = Analog(32.W)
})
val inst = Module(new AnalogBlackBox)
inst.io.bus <> io.bus
}
object AnalogDriver extends App {
chisel3.Driver.execute(args, () => new AnalogModule)
}
Вы не можете управлять аналоговыми проводами в долоте, и, к сожалению, вы не можете выполнять конкатенацию или выбор битов (хотя мы должны это поддерживать), но вы можете по крайней мере подключить сигналы через. Если вам нужно выполнить какой-либо выбор или объединение битов, это необходимо сделать в BlackBox.