Реализовать свойство ввода-вывода Z с высоким импедансом с помощью долота.

Моя плата (apf27) имеет процессор (i.MX27) и FPGA (Spartan3A), который общается через "шину памяти" называется WEIM в таблице данных proc.

Я хочу передать данные из ПЛИС в процессор. Мне удалось сделать это с помощью простого ввода-вывода Output() :

  val io = IO(new Bundle {
  ...
    val data = Output(UInt(16.W))
    val oen = Input(Bool())
  ...  

Я могу читать данные с процессора, но это "блокирует" шину. Я должен выпустить его для компонента nand, который также присутствует на нем.

Чтобы освободить его, я могу использовать сигнал oen (включение вывода), но я не могу назначить высокое значение импеданса, такое как «Z» в Verilog/VHDL, чтобы «освободить» его.

Как правильно это сделать в Chisel3? Я видел что-то под названием «AnalogRawModule» в chisel3 github, это то, что нужно использовать?


person FabienM    schedule 15.05.2018    source источник


Ответы (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.

person Jack Koenig    schedule 15.05.2018
comment
Жаль, что мы не можем сделать выбор бит на аналоговом типе :( - person FabienM; 05.06.2018
comment
Я знаю :( Это раздражающее ограничение - person Jack Koenig; 06.06.2018
comment
Я написал небольшую статью о том, как мне это удалось fabienm .eu/flf/manage-high-impedance-z-state-with-chisel - person FabienM; 22.06.2018