I have the following data:
A = [a0 a1 a2 a3 a4 a5 .... a24]
B = [b0 b1 b2 b3 b4 b5 .... b24]
which then I want to multiply as follows:
C = A * B' = [a0b0 a1b1 a2b2 ... a24b24]
This clearly implies 25 multiplications.
However, in my scenario, only 5 new values are shifted in by "loop iteration" (and 5 old values are shifted from A). Is there any quick way to take advantage of the fact that data moves through A rather than being completely new? Ideally, I want to minimize the number of multiplication operations (due to possibly more additions / subtractions / accumulations). Initially, I thought a systolic array might help, but it is not (I think !?)
Update 1: Note B is fixed for a long time, but can be reprogrammed.
Update 2: the offset A is as follows: a [24] <= a [19], a [23] <= a [18] ... a [1] <= new01, a [0] <= new00. And so on, every beat
Many thanks!
source
share