【发布时间】:2020-03-08 00:54:19
【问题描述】:
我正在尝试使用 Chisel 创建一个可合成的 FIR 滤波器。我正在从 csv 文件中读取有符号整数,然后将其作为系数传递给 FIR 滤波器类。只是为了给大家一个味道 - 这就是系数的样子:
-152651856 1233223 ...
然后使用 for 循环对滤波器的系数进行 MAC 操作。我找不到 for 循环未正确展开的原因。它只是将最后一个系数合成为常数。
class FIR (val coefficients:Array[Int], val count:Int ) extends Module {
val io = IO(new Bundle {
val X = Input(Vec(count,SInt(16.W)))
val Y_out = Output(SInt(64.W))
})
val sum = Reg(SInt(64.W))
sum := 0.S(64.W)
val temp = Reg(Vec(count,SInt(64.W)))
for(ct <- 0 until count ) {
temp(ct) := new fromIntToLiteral(coefficients(ct): Int).S
sum := sum + temp(ct) * io.X(ct)
}
io.Y_out := sum
}
这里的数组coefficients是传递给类的滤波器系数,count是系数的数量。
【问题讨论】: