Sidebar Menu

Lecture "Advanced Digital Signal Processing"

 

Basic Information
Lecturers: Gerhard Schmidt (lecture) and Owe Wisch (exercise)
Room: Building F, room F-SR-I and online (via zoom) for students that are not able to attend in presence
Language: English
Target group: Students in electrical engineering and computer engineering
Prerequisites: Basic Knowlegde about signals and systems
Contents:

Students attending this lecture should be able to implement efficient and robust signal processing structures. Knowledge about moving from the analog to the digital domain and vice versa including the involved effects (and trap doors) should be acquired. Also differences (advantages and disadvantages) between time and frequency domain approaches should be learnt.

Topic overview:

  • Digital processing of continuous-time signals
  • Efficient FIR structures
  • DFT and FFT
  • Digital filters (FIR filters/IIR filters)
  • Multirate digital signal processing
References: J. G. Proakis, D. G. Manolakis: Digital Signal Processing: Principles, Algorithms, and Applications, Prentice Hall,
S. K. Mitra: Digital Signal Processing: A Computer-Based Approach, McGraw Hill Higher Education, 2000
A. V. Oppenheim, R. W. Schafer: Discrete-time signal processing, Prentice Hall, 1999, 2nd edition
M. H. Hayes: Statistical Signal Processing and Modeling, John Wiley and Sons, 1996

 

News

Due to the current rising Covid-19 numbers, lecture and exercise will be held online starting Nov. 22. 

The lecture will be conducted as a "conventional" lecture (in presence) every Monday, 08:15 h. The first lecture starts on October, 25th. In addition, the lecture will be streamed as a live event via zoom. For the latter mode, olease register for the lecture via the OLAT platform. After registration you will get the zoom link for accessing the lecture via zoom.

 

Lecture Slides

Link Content
Slides of the lecture "Introduction"
(Contents, literature, analog versus digital signal processing)
Slides of the lecture "Digital processing of continuous-time signals"
(Sampling, Quantization, AD and DA conversion)
Slides of the lecture "Efficient FIR structures"
(DFT and signal processing, FFT, DFT of real sequences)
Slides of the lecture "DFT/FFT"
(DFT and signal processing, FFT, DFT of real sequences)
Slides of the lecture "Digital filters"
(FIR filters, IIR filters, analysis and design)
Slides of the lecture "Multi-rate digital signal processing"
(Upsampling, downsampling, filter banks)

 

Exercises

Please note that the questionnaires will be uploaded every week before the excercises, if you download them earlier, you won't get the most recent version.

Link Content
Exercise 1: Sampling
Exercise 2: Quantization
Exercise 3: Discrete Fourier Transform (DFT) / Convolution
Exercise 4: FFT / Radix-2-FFT
Exercise 5: FFT / FFTs of Real and Complex Signals
Exercise 6: Signal Flow Graph
Exercise 7: Round-off Effects in Digital Filters
Exercise 8: FIR Filter Design

 

 

Current evaluation Completed evaluations

 

Matlab demos

Matlab file for the comparison of window sequences (click to expand)

%**************************************************************************
% Comparison of "standard" and a bit more "advanced" window functions
%**************************************************************************

%**************************************************************************
% Basis parameters
%**************************************************************************
N_win =   64;
N_dft = 1024*16;

%**************************************************************************
% Basic windows - rectangle window
%**************************************************************************
h_rec     = ones(N_win,1);
h_rec     = h_rec / sum(h_rec);

H_rec     = fft(h_rec,N_dft);
H_rec     = H_rec(1:N_dft/2+1);
H_rec_log = 20*log10(abs(H_rec)+eps);

%**************************************************************************
% Basic windows - Hann window
%**************************************************************************
h_han     = hann(N_win);
h_han     = h_han / sum(h_han);

H_han     = fft(h_han,N_dft);
H_han     = H_han(1:N_dft/2+1);
H_han_log = 20*log10(abs(H_han)+eps);

%**************************************************************************
% Basic windows - Hamming window
%**************************************************************************
h_ham     = hamming(N_win);
h_ham     = h_ham / sum(h_ham);

H_ham     = fft(h_ham,N_dft);
H_ham     = H_ham(1:N_dft/2+1);
H_ham_log = 20*log10(abs(H_ham)+eps);

%**************************************************************************
% Advanced windows - "Chebyshev" window
%**************************************************************************
h_che     = chebwin(N_win,10);
h_che     = h_che / sum(h_che);

H_che     = fft(h_che,N_dft);
H_che     = H_che(1:N_dft/2+1);
H_che_log = 20*log10(abs(H_che)+eps);

%**************************************************************************
% Advanced windows - "Prolate" window
%**************************************************************************
h_pro     = dpss(N_win,1.18);
h_pro     = h_pro / sum(h_pro);

H_pro     = fft(h_pro,N_dft);
H_pro     = H_pro(1:N_dft/2+1);
H_pro_log = 20*log10(abs(H_pro)+eps);

%**************************************************************************
% Show results
%**************************************************************************
fig = figure(1);
f = (0:N_dft/2)/N_dft*2;

plot(f,H_rec_log,'b', ...
     f,H_han_log,'r', ...
     f,H_ham_log,'k', ...
     f,H_che_log,'m', ...
     f,H_pro_log,'c', ...
     'LineWidth',2);
legend('Rectangle window', ...
       'Hann window', ...
       'Hamming window', ...
       'Chebyshev window', ...
       'Prolate spheroidal window')
grid on;
xlabel('Normalized frequency \(\Omega/\pi\)','interpreter','latex');
ylabel('dB')
ylim([-90 10])

Matlab file for the effects of quantization on filter design (click to expand)

%**************************************************************************
% Design parameters
%**************************************************************************
N   =  8;     % Filter order
f_c =  0.1;   % Normalized cut-off frequency (0 ... 1)
R_p =  0.5;   % Ripple in dB in passband
R_s = 80;     % Stopband attenuation in dB

%**************************************************************************
% Design of an elliptic lowpass filter
%**************************************************************************
[b,a] = ellip(N, R_p, R_s, f_c);

%**************************************************************************
% Show frequency response
%**************************************************************************
fig = figure(1);
set(fig,'Units','Normalized');
set(fig,'Position',[0.1 0.1 0.8 0.8]);
[H,Omega] = freqz(b,a,2048*4,'whole',2);
plot(Omega,20*log10(abs(H)+eps),'b','LineWidth',2);
grid on
axis([0 2 (-R_s -20) 20])
xlabel('Normalized frequency \Omega/\pi')
ylabel('dB')


%**************************************************************************
% Quantization
%**************************************************************************
B = 32; % Number of bits

a_max = max(abs(a));
b_max = max(abs(b));

a_q = round(a / a_max * 2^B) / 2^B * a_max;
b_q = round(b / b_max * 2^B) / 2^B * b_max;

%**************************************************************************
% Show frequency response of quantized filter
%**************************************************************************
[H_q,Omega] = freqz(b_q,a_q,2048*4,'whole',2);
hold on;
plot(Omega,20*log10(abs(H_q)+eps),'r','LineWidth',2);
hold off;
legend('Non-quantized',['Quantized with ',num2str(B),' bits'])

%**************************************************************************
% Show coefficients
%**************************************************************************
format long;
a
a_q
b
b_q

%**************************************************************************
% Transform to cascade of biquad filters
%**************************************************************************
[sos,g] = tf2sos(b,a);

[L,L_tmp] = size(sos);

sos_q = round(sos / max(max(abs(sos))) * 2^B) / 2^B * max(max(abs(sos)));
g_q   = round(g^(1/L) * 2^B) / 2^B;

H_bq_q = freqz(g_q*sos_q(1,1:3),sos_q(1,4:6),2048*4,'whole',2);
for k = 2:L
    H_bq_q = H_bq_q .* freqz(g_q*sos_q(k,1:3),sos_q(k,4:6),2048*4,'whole',2);
end;

%**************************************************************************
% Show frequency response of quantized biquad filters
%**************************************************************************
[H_q,Omega] = freqz(b_q,a_q,2048*4,'whole',2);
hold on;
plot(Omega,20*log10(abs(H_bq_q)+eps),'k','LineWidth',2);
hold off;
legend('Non-quantized',['Quantized with ',num2str(B),' bits'],...
       'Biquad structure (also qunatized)');

 

Exams

It's an oral exam. Please register for the exam via our exam booking system.