如何解决是否可以在io bundle中声明条件信号?
只有在凿子模块中设置了参数,才可以声明信号吗?
喜欢:
class GbWrite (val debug_simu: Boolean = true) extends Module {
val io = IO(new Bundle {
//...
/* debug */
if(debug_simu){
val countcol = Output(UInt(32.W))
}
})
//...
if(debug_simu) {
io.countcol := pixelCount
}
//...
}
这段代码给我一个错误:
[info] compiling 1 Scala source to /media/stockage/projets/GbVga/chisel/target/scala-2.12/classes ...
[error] /media/stockage/projets/GbVga/chisel/src/main/scala/gbvga/gbwrite.scala:40:8: value countcol is not a member of chisel3.Bundle{val GBHsync: chisel3.Bool; val GBVsync: chisel3.Bool; val GBClk: chisel3.Bool; val GBData: chisel3.UInt; val Maddr: chisel3.UInt; val Mdata: chisel3.UInt; val Mwrite: chisel3.Bool}
[error] io.countcol := pixelCount
[error] ^
[error] one error found
[error] Compilation failed
解决方法
可能的,但是您需要使用稍微不同的语法。
请参阅:How do I create an optional I/O?。问题在于您创建的条件val
在if
的范围内,因此在代码的更深处不可见。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。