ARCHITECTURE studentVersion OF interpolatorCalculatePolynom IS subtype st is signed(coeffBitNb-1+oversamplingBitNb+8 DOWNTO 0); signal x: st; signal u: st; signal v: st; signal w: st; BEGIN process(clock, reset) begin if reset = '1' then x <= (others => '0'); u <= (others => '0'); v <= (others => '0'); w <= (others => '0'); elsif rising_edge(clock) then if restartPolynom = '1' then x <= resize(d, st'high+1) sla (oversamplingBitNb * 3 + 1); u <= resize(a, st'high+1) + (resize(b, st'high+1) sla oversamplingBitNb) + (resize(c, st'high+1) sla (oversamplingBitNb*2)); v <= resize(6*a, v'length) + (resize(b, st'high+1) sla (oversamplingBitNb + 1)); w <= resize(6*a, w'length); else x <= x + u; u <= u + v; v <= v + w; end if; end if; end process; sampleOut <= resize(x sra (oversamplingBitNb * 3 + 1),signalBitNb); END ARCHITECTURE studentVersion;