Estoy tratando de entender el ADC Delta-Sigma . Se sabe que empuja el ruido de cuantización para estar en las frecuencias más altas ( modelado de ruido ). Como no entiendo bien cómo funciona esto, implementé una simulación de Matlab de un ADC Delta-Sigma. Desde la salida de la simulación, me parece que la frecuencia del ruido de qunatization es exactamente la frecuencia de la señal en sí misma , y no más alta. Puedo explicar esto de la siguiente manera: Dado que la salida ADC depende de la integral de la señal analógica en tiempos anteriores, la salida es en realidad un promedio de los tiempos anteriores. Ahora, cuando la señal está aumentando, el promedio de cada intervalo de la señal será menor que el valor de la señal al final del intervalo. Y cuando la señal está disminuyendo, el promedio de un intervalo de la señal será mayor que el valor de la señal al final del intervalo. Entonces, lo que obtenemos es el siguiente comportamiento: el error de qunatization será negativo cuando la señal está aumentando, y positivo cuando la señal está disminuyendo, por lo que el error de cuantificación tiene la misma frecuencia que la señal. Entonces ¿esto es lo que se entiende por "conformación de ruido"?
Aquí está el código de Matlab y el gráfico de salida:
%% parameters
% sampling rate, [Hz]
fs = 8e3;
% total time of simulation, [sec]
totalTime = 0.01;
% max allowed voltage of signal (min voltage is 0) [Volt]
maxVoltage = 5;
% number of bits for quantization
Nbits = 8;
% this determines the time step of the simulation, which will be
% ((1/fs)/(2^Nbits))/dtFactor
dtFactor = 10;
% functional representation of signal values [Volt] as function of time[sec]
sig = @(t) 2.5+2.5*cos(2*pi*350*t);
%% values derived from parameters
% time step of simulation [sec]
dt = ((1/fs)/(2^Nbits))/dtFactor;
% time axis [sec]
t = 0:dt:totalTime;
% qunatization resolution (width of qunatization zones) [Volt]
LSB = maxVoltage/(2^(Nbits));
% Delta-Sigma modulator will produce a pulse each time the integral of the
% signal passes this value [Volt*sec]
accumV = maxVoltage/(fs*(2^Nbits));
% input signal [Volt]
x = sig(t);
% time axis of ADC output [sec]
ts = t(1):(1/fs):t(end);
%% Delta-Sigma ADC
% this is a simulation of a Delta-Sigma ADC
% perform integration, and substract accumV off the integral every time its
% value passes accumV (negative feedback) [Volt*sec]
xInt = mod(cumsum(x)*dt,accumV);
% produce a pulse every time integrator reaches value accumV
pulses = [0 , xInt(2:end) < xInt(1:(end-1))];
% perform low-pass filtering on the pulse, which actually counts the number
% of pulses in each interval of length (1/fs)
LPF = filter(ones(1,round(dtFactor*(2^Nbits))),1,pulses);
% decimate LPF output, and convert to Volt, to get the ADC output [Volt]
y = LPF(1:(dtFactor*(2^Nbits)):numel(t))*LSB + LSB/2;
y(y>maxVoltage) = maxVoltage-LSB/2;
%% plot results
figure;
% plot signals
subplot(2,1,1);
plot(1000*t,x,'r'); hold on;
stairs(1000*ts(2:(end-1)),y(2:(end-1)),'b');
ylim([0,maxVoltage]);
xlabel('time [ms]');
ylabel('value [Volt]');
title('Signals');
% plot errors
subplot(2,1,2);
plot(1000*ts(2:(end-1)),y(2:(end-1))-sig(ts(2:(end-1))));
xlabel('time [ms]');
ylabel('error [Volt]');
title('Quantization Error');