我的电路板(apf27)有一个处理器(i.MX27)和一个FPGA(Spartan3A)communicate through a "memory bus"在proc数据表中称为WEIM。
我想将数据从FPGA传输到处理器。我设法用一个简单的Output()IO:
来做到这一点 val io = IO(new Bundle {
...
val data = Output(UInt(16.W))
val oen = Input(Bool())
...
我可以从处理器读取数据,但是“锁定”总线。我必须为它上面的nand组件释放它。
要释放它,我可以使用信号 oen (输出使能),但是我无法在Verilog / VHDL中指定像Z一样的高阻抗值来“释放”它。
在Chisel3中使用它的正确方法是什么?我在chisel3 github中看到了一个名为'AnalogRawModule'的东西,它是用的东西吗?
答案 0 :(得分:1)
模拟是您正在寻找的。它基本上是一种逃避,允许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)
}
你不能在Chisel中驱动模拟类型的线路,不幸的是你不能进行连接或位选择(尽管我们应该支持),但你至少可以连接信号。如果您需要进行任何类型的位选择或连接,您需要在BlackBox中执行此操作。