Contents

% scaled and quantized 2nd order sections in direct form II
% lab3_5.m * mw * 02/11/2007

Scaling with respect to the frequency response

N = 1024;
[H1,w] = freqz(SOS(1,1:3),SOS(1,4:6),N); % frequency response
[H2,w] = freqz(SOS(2,1:3),SOS(2,4:6),N);
[H3,w] = freqz(SOS(3,1:3),SOS(3,4:6),N);
MAX1 = max(abs(H1));                     % scaling factors
MAX2 = max(abs(H2.*H1/MAX1));
MAX3 = max(abs(H3.*(H2/MAX2).*(H1/MAX1)));
SOSs =SOS;
SOSs(1,1:3) = SOSs(1,1:3)/MAX1;
SOSs(2,1:3) = SOSs(2,1:3)/MAX2;
SOSs(3,1:3) = SOSs(3,1:3)/MAX3;
fprintf('Scaling factors for section 1, 2 and 3 : %g  , %g  , %g\n\n',1/MAX1,1/MAX2,1/MAX3)
disp('2nd order blocks - MATLAB design')
disp(SOSs)
w = 8; LSB = 2^-(w-1); % word length and least signifcant bit
SOSq = SOSs;           % (transponsed) direct form II
SOSq(:,1:3) = LSB*round(SOSq(:,1:3)/LSB);
SOSq(:,5)   = 2*LSB*round(.5*SOSq(:,5)/LSB);
SOSq(:,6)   = LSB*round(SOSq(:,6)/LSB);
disp('2nd order blocks - quantized')
disp(SOSq)
Scaling factors for section 1, 2 and 3 : 0.0271663  , 0.229457  , 0.508501

2nd order blocks - MATLAB design
    0.0272    0.0210    0.0272    1.0000   -1.5743    0.6496
    0.2295   -0.2197    0.2295    1.0000   -1.5520    0.7965
    0.5085   -0.6535    0.5085    1.0000   -1.5629    0.9396

2nd order blocks - quantized
    0.0234    0.0234    0.0234    1.0000   -1.5781    0.6484
    0.2266   -0.2188    0.2266    1.0000   -1.5469    0.7969
    0.5078   -0.6563    0.5078    1.0000   -1.5625    0.9375

Graphics - Freqeuncy responses

[H1q,w] = freqz(SOSq(1,1:3),SOSq(1,4:6),N);
[H2q,w] = freqz(SOSq(2,1:3),SOSq(2,4:6),N);
[H3q,w] = freqz(SOSq(3,1:3),SOSq(3,4:6),N);
[b,a] = sos2tf(SOS,G);
H = freqz(b,a,N);
FIG1 = figure('Name','lab3_5 : Frequency responses of cauer lowpass and quantized filter in direct form II',...
    'NumberTitle','off');
subplot(1,2,1),plot(w/pi,abs(H),w/pi,abs(H1q.*H2q.*H3q)), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H(e^{j\Omega)}| \rightarrow')
axis([0 1 0 1]);
subplot(1,2,2),plot(w/pi,20*log10(abs(H)),w/pi,20*log10(abs(H1q.*H2q.*H3q))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H(e^{j\Omega})| in dB \rightarrow')
axis([0 1 -80 0]);
FIG2 = figure('Name','lab3_5 : Frequency responses of 2nd order sections in direct form II',...
    'NumberTitle','off');
subplot(3,2,1),plot(w/pi,abs(H1/MAX1),w/pi,abs(H1q)), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_1(e^{j\Omega)}| \rightarrow')
subplot(3,2,2),plot(w/pi,20*log10(abs(H1/MAX1)),w/pi,20*log10(abs(H1q))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_1(e^{j\Omega})| in dB \rightarrow')
subplot(3,2,3),plot(w/pi,abs(H2/MAX2),w/pi,abs(H2q)), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_2(e^{j\Omega)}| \rightarrow')
subplot(3,2,4),plot(w/pi,20*log10(abs(H2/MAX2)),w/pi,20*log10(abs(H2q))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_2(e^{j\Omega})| in dB \rightarrow')
subplot(3,2,5),plot(w/pi,abs(H3/MAX3),w/pi,abs(H3q)), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_3(e^{j\Omega)}| \rightarrow')
subplot(3,2,6),plot(w/pi,20*log10(abs(H3/MAX3)),w/pi,20*log10(abs(H3q))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_3(e^{j\Omega})| in dB \rightarrow')