在用chisel 做加法器的时候
发现chisel溢出了?
于是查了一下资料
发现答案:
在做加法时,加号后面要加&
def adder(add_a:UInt , add_b:UInt):UInt = {
add_a +& add_b
}
错误代码:
class FuncModule extends Module{
def adder(add_a:UInt , add_b:UInt):UInt = {
add_a + add_b
}
val io = IO(new Bundle{
val a = Input(UInt(4.W))
val b = Input(UInt(4.W))
val out = Output(UInt(8.W))
})
val add_out = adder(io.a,io.b)
io.out := add_out
}
错误输出
15+15 = 14
(in_a_tb = ,UInt<4>(15),in_b_tb = ,UInt<4>(15))
(adder result = ,UInt<8>(14))[info]
正确操作:
class FuncModule extends Module{
def adder(add_a:UInt , add_b:UInt):UInt = {
add_a +& add_b
}
val io = IO(new Bundle{
val a = Input(UInt(4.W))
val b = Input(UInt(4.W))
val out = Output(UInt(8.W))
})
val add_out = adder(io.a,io.b)
io.out := add_out
}
正确结果:
15+15 = 30
(in_a_tb = ,UInt<4>(15),in_b_tb = ,UInt<4>(15))
(adder result = ,UInt<8>(30))[info] FuncModuleTest: