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;
