Scala 如何在I/O端口中使用凿子3.experimental.凿子枚举?

Scala 如何在I/O端口中使用凿子3.experimental.凿子枚举?,scala,enums,chisel,Scala,Enums,Chisel,考虑以下代码: 导入凿子3.experimental.凿子枚举 对象MyEnum扩展了枚举{ val A,B=值 } 类UseEnumIO扩展模块{ val io=io(新捆绑){ val in=输入(UInt(1.W)) val out=输出(Bool()) }) io.out:=MuxLookup(io.in,false.B,数组( MyEnum.A->true.B, MyEnum.B->true.B )) } 我需要使用一个IO端口,它应该是MuxLookup中的scaveenum对象

考虑以下代码:

导入凿子3.experimental.凿子枚举
对象MyEnum扩展了枚举{
val A,B=值
}
类UseEnumIO扩展模块{
val io=io(新捆绑){
val in=输入(UInt(1.W))
val out=输出(Bool())
})
io.out:=MuxLookup(io.in,false.B,数组(
MyEnum.A->true.B,
MyEnum.B->true.B
))
}
我需要使用一个IO端口,它应该是
MuxLookup
中的
scaveenum
对象

这是我从SBT收到的错误消息:

[error]  found   : scala.collection.mutable.WrappedArray[(MyEnum.Type, chisel3.core.Bool)]

虽然Scala推断出
[S,但我不太清楚为什么这不起作用,但下面的解决方法可能会有所帮助。
试一试

这似乎对我有用。
我将继续寻找更明显的简单语法不起作用的原因。

MuxLookup
要求选择器使用uint(或Bools)。从:

def应用[S]
  io.out := MuxLookup(io.in, false.B, Seq(
    MyEnum.A.asUInt -> true.B,
    MyEnum.B.asUInt -> true.B
  ))
def apply[S <: UInt, T <: Data](key: S, default: T, mapping: Seq[(S, T)]): T