scala - 是否可以在 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
解决方案
这是可能的,但您需要使用稍微不同的语法。请参阅:如何创建可选 I/O?. 问题是val
您正在创建的条件在代码的范围内if
,因此在代码的更下方不可见。
推荐阅读
- css - 按顺序做动画| CSS动画
- powershell - "|| exit /b" 和 "|| exit /b !errorlevel!" 之间的区别
- java - A obj = new A(new B); 是什么意思?
- amazon-web-services - 创建内联策略以通过 terraform 附加到 IAM 用户
- spring - 带有 JdbcTemplate 自动装配的 SimpleJdbcCall 的 Junit
- c++ - 如何在 C++ 中将二叉树序列化为文件
- python - ValueError:传递的项目数错误
- sqlite - 具有范围存储的 Android 11 SQLite
- flutter - Flutter:如何在底部,左侧和右侧同时具有边框半径和边框颜色
- video - ffmpeg 将 mov 转换为 mp4 而不会降低比特率