【问题标题】:Using existing Scala Class in new Class [Scala Chisel]在新类中使用现有的 Scala 类 [Scala Chisel]
【发布时间】:2021-05-13 13:22:01
【问题描述】:

这可能是一个非常基本的问题,但我一生都找不到答案。

我有这个现有的逻辑 AND 类:

    class DelayedAND(val n:Int = 2) extends Module{
    val io = IO(new Bundle{
        val a = Input(UInt(1.W))
        val b = Input(UInt(1.W))
        val out = Output(UInt(1.W))
    })
     val delay = 2 
     val dand =io.a&io.b
     io.out := ShiftRegister(dand, delay)
    }

我需要在 Class 中包含它而不是常规的“和”

    class HalfAdder extends Module {
     val io = IO(new Bundle{
     val a    = Input(UInt(1.W))
     val b    = Input(UInt(1.W))
     val sum  = Output(UInt(1.W))
     val cout = Output(UInt(1.W))
     })
  
     val a_xor_b = io.a ^ io.b
     io.sum := a_xor_b

     val a_and_b = io.a & io.b  //previous Class needs to be used here
     io.cout := a_and_b
     }

我对 Scala 和 Chisel 完全陌生,我已经尝试解决了几个小时!请帮帮我,谢谢!

【问题讨论】:

    标签: scala class module chisel


    【解决方案1】:
    val a_and_b = Module(new DelayedAND(2))
    a_and_b.io.a  := io.a
    a_and_b.io.b  := io.b
    io.cout       := a_and_b.io.out
    

    这里有一个很好的解释

    https://www.chisel-lang.org/chisel3/docs/explanations/modules.html

    编辑:

    为了提供更多细节,Module 的行为与典型的 Verilog module 非常相似,除了隐式推断出 clockreset(链接中列出了一些例外情况,还有一些其他人,但这更深入,超出了这个问题的范围)。然而,在 Chisel 中,Module 代表在将 Chisel 编译/细化为 FIRRTL 后将成为 Verilog module

    在 Verilog module 中,我们将列出端口并通过模块实例化中的端口列表连接端口。在这种情况下,“端口”通过连接。 := 运营商。这是为我们的Module“端口”分配一些逻辑。如果来自 Verilog 背景,这似乎很奇怪。首先,您可以在代码中的任何位置连接端口!有效地将您的“模块实例化”遍布各处。如果您习惯于在 verilog 中跟踪信号连接以进行调试,这似乎有点令人生畏,但它有一些好处。您可以根据某些参数/变量修改连接到特定端口的内容。漂亮,吸它generate

    如果您没有连接一个或多个Input,FIRRTL 会抱怨。 Output 可以浮动/未连接,但您可能会看到某些逻辑已根据创建的内容进行了优化。

    因此,当第一次启动 Chisel 时,请采用这种编码 Module 的方法,就像使用 Verilog module 一样。当您尝试弄清楚如何执行特定的硬件生成时,Chisel 更有趣的功能将开始浮出水面。

    Chisel 的好处更多来自于它在复杂系统中的灵活性,而不是小例子,但是理解这些小例子是掌握这门语言的关键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 2022-01-24
      • 1970-01-01
      • 2015-06-04
      • 2011-03-17
      • 1970-01-01
      相关资源
      最近更新 更多