scala 如何处理ActiveLow复位/更改隐式时钟频率?

dkqlctbz  于 2023-06-23  发布在  Scala
关注(0)|答案(1)|浏览(128)

1.如何配置隐式时钟从100 MHz到50 MHz(所以它显示在我的WaveGTK模拟)?
1.如何处理Active Low / Active High?例如

val io = IO(new Bundle() {
val activeLowReset = Input(Bool()).toActiveLow() 
//??? Did chisel have something like this.
})

原来我的董事会是Active Low Reset,它总是重置。
1.有没有一个Scala/trait和chisel一起使用的例子?还是猫
尝试在真实的FPGA上部署凿2周后?这里所有我的问题。

beq87vna

beq87vna1#

如何配置隐式时钟从100 MHz到50 MHz(所以它显示在我的WaveGTK模拟)?
如果你使用的是chiseltest,那就不可能了。您可以从Chisel生成Verilog,然后用Verilog或C++(用于Verilator)编写自己的测试平台,这将给予您定义自己的timescale的自由。
如何处理Active Low / Active High?例如
你应该可以反转复位。像这样:

class ToplevelWrapper extends Module {
  // same I/O as our "Example" toplevel
  val io = IO(new ToplevelIO)
  // create an inverted reset signal
  val invertedReset = ~reset.asBool
  // you can write the following if you want a async reset
  // val invertedReset = (~reset.asBool).asAsyncReset
  // instantiate our "Example" toplevel with the inverted reset
  val top = withReset(invertedReset) {
    Module(new Example)
  }
  // hook up I/Os
  io <> top.io
}

Full example on Scastie
有没有一个Scala/trait和chisel一起使用的例子?还是猫
一般来说,我建议不要过分依赖traits或高级函数式编程,因为大多数其他硬件开发人员将难以使用和理解您的代码。过去dsptools library中有一个有趣的类型类用法。

相关问题