Cómo decodificar DDS mediante software VB
clear;
f = ; % tabla de frecuencia de señal DTMF
t_cpu = 1/8e6; % período de copa
pwm_n = 512 ; % puntos PWM
t_dds = t_cpu*pwm_n; % período de reloj DDS
tab_n = 32; % puntos de tabla sinusoidal
paso = tab_n * f * t_dds ;Tamaño de paso teórico del acumulador de direcciones DDS
step_float_bits = 8; % La longitud de los decimales del tamaño de paso del acumulador de direcciones DDS
step_p = fix(step * 2^step_float_bits) / 2 ^step_float_bits; % Tamaño de paso real del acumulador de direcciones DDS
f0 = 1./(tab_n./step_p . * t_dds % Frecuencia real de la señal generada
err_f = abs( f0-f).
max_err_f = max(err_f)
t = linspace(0,2*pi,tab_n+1); = t (1:tab_n);
sin_tab = fix(sin(t) * pwm_n)/pwm_n
n = 1:60e-3/t_dds; /p> p>
for a = 1:8;
addr(a,:) = mod(fix(step_p(a).* n),tab_n)+1; dirección p>
s(a,:) = sin_tab(addr(a,:)); % señal de dominio de tiempo de 60 milisegundos
end
my_fft(1/ t_dds, s(1,:)+s(5,:),1) % Análisis de espectro para ver el efecto
1
(La unidad de la abscisa en la figura anterior debe ser "Hz")
Como se puede ver en la figura, los dos espectros sintetizados tienen una diferencia de 30 dBm con respecto al estímulo más cercano (-108 dBm), que cumple con los requisitos DTMF