Digital Signal Processing Reference
In-Depth Information
M18.4
Inneres Rauschen eines Cauer-Tiefpasses 6. Ordnung
Die Filterkoeffizienten eines Cauer-Tiefpasses 6. Ordnung in Kaskadenform sind in
Tabelle 18-7 zusammengestellt. Messen Sie die Leistung des inneren Geräusches
des Cauer-Tiefpasses, siehe auch Tabelle 17-5.
Tabelle 18-7
Koeffizienten des Cauer-Tiefpasses 6. Ordnung
SOSq = 0.3203 -0.0391 0.3203 1.0000 -1.1875
0.7109
0.4844 0.6797 0.4844 1.0000 -1.3281
0.5000
0.9141
0.0469 -0.0313 0.0469 1.0000 -1.1094
Wiederholen Sie Messung für alle möglichen Reihenfolgen der Blöcke und tragen
Sie die Ergebnisse in Tabelle 18-8 ein.
Tabelle 18-8
Leistung des inneren Rauschens
N
i
eines Cauer-Tiefpasses 6. Ordnung in
Kaskadenform mit quantisierter Arithmetik bei der Wortlänge von 16 Bits
Reihenfolge
1
1
2
3
1
3
2
2
1
3
2
3
1
3
1
2
3
2
1
N
i
in dB
82.1
1
Die Reihenfolge 1
3 entspricht der Reihenfolge in Tabelle 18-7 mit den Blöcken 2. Ord-
nung entsprechend den Zeilen von SOS.
2
Programmbeispiel 18-4
Untersuchung des inneren Rauschens eines Cauer-Tiefpasses
% Roundoff noise in elliptic IIR filters of 6th order in
% cascade form of 2nd order blocks with quantized coefficients
% and fixed-point arithmetic, see filt2_rc
% dsplab18_3.m * mw * 16Apr2011
w = 16; LSB = 2^(-w+1);
%
word length and least significant bit
N = 1e5;
%
number of simulation cycles
c = 2^(-w+12);
%
noise scaling factor
%
Quantized filter coefficients of block 1,2 and 3 of elliptic lowpass
SOS = [0.3203 -0.0391 0.3203 1.0000 -1.1875 0.7109
0.4844 0.6797 0.4844 1.0000 -1.3281 0.5000
0.0469 -0.0313 0.0469 1.0000 -1.1094 0.9141];
bq = LSB*round(SOS(:,1:3)/LSB);
aq = [ones(3,1) 2*LSB*round((SOS(:,5)/2)/LSB)
LSB*round(SOS(:,6)/LSB)];
si = [0 0];
%
initial values for state space variables
%
input signal - noise
x = 2*rand(1,N)-ones(1,N);
%
uniformly distributed in ]-1,1[
xq = LSB*round(c*x/LSB);
%
scaled and quantized input signal
%
Reference system
[yref1,sref1] = filter(bq(1,:),aq(1,:),xq);
[yref2,sref2] = filter(bq(2,:),aq(2,:),yref1);
[yref3,sref3] = filter(bq(3,:),aq(3,:),yref2);
%
System with rounding and two's-complement overflow
k1 = 1; k2 = 2; k3 = 3;
%
block order
[y1,si1,OC] = filt2_rc(bq(k1,:),aq(k1,:),xq,si,w);
fprintf(
'\ndsplab18_3\n'
)