当我尝试使用 Chisel 构建 FSM 时,我使用了 Enum(),正如 Chisel 教程中所说。然而,我遇到了这样的错误。
我的代码:
val sIdle::s1::s2::s3::s4::Nil = Enum(UInt(), 5)
但是,当我执行sbt run时,它打印出
[error] /Users/xxx.scala:28:3: object java.lang.Enum is not a value
[error] Enum(UInt(),5)
[error] ^
我的构建 sbt 文件是
scalaVersion := "2.11.12"
resolvers ++= Seq(
Resolver.sonatypeRepo("snapshots"),
Resolver.sonatypeRepo("releases")
)
libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.1.+"
请帮忙!
最佳答案
将我的评论变成完整的答案,以便对 future 的人来说更加明显。
在chisel3
中,Chisel2中的Chisel包
中的很多内容都被移至package chisel3.util
中。您可以使用 ScalaDoc API搜索 Enum
或 switch
等内容以查看它们所在的位置(以及其他相关文档)。
同样在 chisel3 中,Enum(type, size)
已被弃用,取而代之的是 if Enum(size)
,即。你应该使用:
import chisel3._
import chisel3.util.Enum
val sIdle :: s1 :: s2 :: s3 :: s4 :: Nil = Enum(5)
我还想提一下,我们即将推出新的“ChiselEnum”,它提供比现有 API 更多的功能,并且我们打算进一步扩展它的功能。如果您从源代码构建 chisel3,您已经可以使用它,或者您可以等待 3.2 的发布。新枚举的示例:
import chisel3._
import chisel3.experimental.ChiselEnum
object EnumExample extends ChiselEnum {
val e0, e1, e2 = Value // Assigns default values starting at 0
val e100 = Value(100.U) // Can provide specific values if desired
}
import EnumExample._
val myState = Reg(EnumExample()) // Can give a register the actual type instead of just UInt
myState := e100
关于scala - 凿子 "Enum(UInt(), 5)"失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52916067/