【问题标题】:Implement high impedance 'Z' input output property with chisel用凿子实现高阻抗“Z”输入输出属性
【发布时间】:2018-05-15 12:06:06
【问题描述】:

我的开发板 (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”的东西,它是要使用的东西吗?

【问题讨论】:

    标签: fpga chisel spartan


    【解决方案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 中进行。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    相关资源
    最近更新 更多