I am working on an audio upsampling/oversampling project where I am testing different interpolating schemes in hardware and comparing measurements to my expected results. In one of my interpolating strategies, linear (first-order-hold), I am measuring unexpected FFT peaks centered around the Nyquist frequency.
My setup is: between every two digital samples of recorded audio (44.1kHz), 15 intermediate samples are computed along a line (fixed point, in an FPGA). The 16x oversampled data is sent to a D/A (which zero-order-holds, obviously) and measured on a scope.
The results: if for example I am playing a tone signal of 2kHz, in FFT on oscilloscope I see main fundamental, small peak at (22.1-2)kHz, and a small peak at (22.1+2)kHz - unexpectedly! I also see as expected images centered around 44.1kHZ, 88.2kHZ, etc (these are also small, on account of linear interp./ZOH of DAC). I don't have any explicit analog processing.
Theories: I honeslty don't know...but possibilities are:
scaling I do in FPGA to convert from 16 bit input to 20 bits for DAC
using fixed point arithmetic in FPGA (I don't ever overflow or anything, but it rounds everything so it's not exact to be sure)
technically non-uniform sampling (I space the samples I created pretty evenly in time, but not perfectly...the last interpolated sample (i.e., #15 is held a little longer than the rest)
Any ideas on what gives?