当我尝试使用 Chisel 构建 FSM 时,我使用了 Enum(),如 Chisel 教程所述。然而,我遇到了这样的错误。
my code:
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.+"
请帮忙!
将我的评论变成完整的答案,以便对未来的人来说更加明显。
In chisel3
,很多东西都在package Chisel
在 Chisel2 中被移入package chisel3.util
。您可以使用Scala文档API https://chisel.eecs.berkeley.edu/api/latest/index.html搜索类似的东西Enum
or switch
查看它们的位置(以及其他相关文档)。
同样在凿子3中,Enum(type, size)
已被弃用,如果Enum(size)
, IE。你应该使用:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)