【发布时间】:2018-07-20 08:09:03
【问题描述】:
class CC extends Module {
val io = IO(new Bundle {
val in1 = Input(Vec(5, UInt(3.W)))
val in2 = Input(Vec(5, UInt(3.W)))
val out = Output(Vec(9, UInt(3.W)))
})
val L = 5
val ml = 4
var y = 0
for (i <- 0 until ml) {
when (io.in2(i) === io.in1(L - ml + i))
y = y + 1
}
when (y === ml) {
io.out := Cat(io.in1(0) ,io.in2)
}
io.out := io.in1
}
这是在检查它们是否匹配后连接两个字符串的代码。例如,如果 in1 是 1001,in2 是 0010,它必须连接并返回 10010
另外,我有几个问题
1) 我们可以连接向量吗?
2) '===' 运算符对向量有效吗?
3) 我们可以比较两个向量吗?
我得到的错误
1)
inferred type arguments [chisel3.core.Data] do not conform to method apply's type parameter bounds [T <: chisel3.Bits] [error] io.out := Cat(io.in1(0) ,io.in2)
2)
value === is not a member of Int [error] when (y === ml)
3)
type mismatch; [error] found : chisel3.core.UInt [error] required: T [error] io.out := Cat(io.in1(0) ,io.in2)
有人可以指导我吗?谢谢!
【问题讨论】:
-
你的问题标题是“连接错误”你能给出你得到的错误吗?
-
您的代码无法编译,因为 bundle 输入是 'i1' 并且您在代码中使用了 'in1'...
-
该死,但是当我将它更改为捆绑包中的 in1 时,它显示相同的错误
标签: scala vector equality chisel