【问题标题】:Comparing two Bits type values in Chisel 3比较 Chisel 3 中的两个 Bits 类型值
【发布时间】:2017-01-15 05:59:30
【问题描述】:

我想在 chisel 中比较两个 Bits 类型的值。首先,我使用 === 运算符进行了尝试。

val byte = (typ === MT_B)

这给出了错误“值 === 不是 chisel3.Bits 的成员”。所以我尝试了equals方法如下。

val byte    =   (typ.equals(MT_B))

这在代码的后面部分给出了以下错误,其中该字节值用于 Mux 中的条件。

found   : Boolean
[error]  required: chisel3.core.Bool
[error]         val dout    =   Mux(byte, Fill(4, din( 7,0)),

我找不到将等值方法的布尔返回转换为 Mux 的布尔类型器的方法。而且我找不到 chisel 3 API ethier 中 === 运算符的替代品。

【问题讨论】:

    标签: chisel


    【解决方案1】:

    Boolean 是 Scala 文字。 Chisel 等效项是 Bool

    像这样铸造成凿子布尔

    val myBoolean = true // Scala literal
    val myBool = Bool(myBoolean)
    

    或者,您也可以使用 myBoolean.B 将 Scala Boolean 转换为 Chisel Bool。

    【讨论】:

    • 谢谢。这解决了问题。但是,为什么他们从凿子 3 中的 Bits 类型中删除 === 运算符?据我所知,它在凿子 2 中。而且,现在有没有办法直接从 Bits 比较中获取 Bool 类型?这样的事情会减少代码混乱。
    • 我刚刚在一个简单的设计中对 Bits 类型的两个值测试了 === 运算符。这个对我有用。是的,您可以通过附加“.toBool()”从比较操作中获取 Bool 值。如果您想要更详细的解释,可以发布一个新问题。
    • Bits 在 Chisel 3 中仍然有 ===。此外,Chisel 中的所有比较运算符都返回 Bool。我很想知道您是如何收到“value === is not a member of chisel3.Bits”这个错误的,因为我无法重现它。
    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多