Digital Signal Processing Reference
In-Depth Information
M18.4
Inneres Rauschen eines Cauer-Tiefpasses 6. Ordnung
Die Filterkoeffizienten eines Cauer-Tiefpass 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
SOS =[.1961 .2747 .1961 1 -1.3316 .5005;
.1961 -.0243 .1961 1 -1.1877 .7129;
.1961 .1159 .1961 1 -1.1105 .9147];
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
78.0
1 Die Reihenfolge 123 entspricht der Reihenfolge in Tabelle 18-7 mit den Blöcken 2. Ord-
nung entsprechend den Zeilen von SOS.
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 * 06/22/2008
w = 16; LSB = 2^(-w+1); % word length and least significant bit
N = 1e5; % number of simulation cycles
c = 2^(-w+14); % noise scaling factor
% Quantized filter coefficients of block 1, 2 a. 3 of elliptic lowpass
SOS = [.1961 .2747 .1961 1 -1.3316 .5005;
.1961 -.0243 .1961 1 -1.1877 .7129;
.1961 .1159 .1961 1 -1.1105 .9147];
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('(1) Overflow counter = %g\n',OC)
Search WWH ::




Custom Search