【发布时间】:2021-05-14 13:12:26
【问题描述】:
我正在尝试设计以下由 Fulladers 制成的 Ripple Carry Adder。到目前为止我尝试了很多,但我正在努力使用凿子语法。有人可以帮助我并指出我做错了什么吗?这是我的代码:
class RcaAdder(val n:Int) extends Module {
val io = IO(new Bundle {
val a = Input(UInt(n.W))
val b = Input(UInt(n.W))
val cin = Input(UInt(1.W))
val sum = Output(UInt(n.W))
val cout = Output(UInt(1.W))
})
//For loop
for(i <- 0 to n){
val fulladder = Module(new FullAdder())
fulladder.io.a := io.a(i)
fulladder.io.b := io.b(i)
if(i == 0){
fulladder.io.cin := io.cin
}else{
fulladder.io.cin := io.cout
}
io.cout := fulladder.io.cout
io.sum(i) := fulladder.io.sum
}
}
这让我得到以下错误:
Exception in thread "main" chisel3.internal.ChiselException: Cannot reassign to read-only Bool(OpResult in RcaAdder)
我认为它与“ io.sum(i) := .. ”有关
请帮帮我!非常感谢!
【问题讨论】: