Digital Signal Processing Reference
In-Depth Information
Point Toolbox
. Weil für den Versuch dieses Werkzeug nicht vorausgesetzt wer-
den soll und es didaktisch sinnvoller erscheint, wird in den Beispielprogrammen die
Zweierkomplementarithmetik mit elementaren MATLAB-Befehlen nachgebildet.
Tabelle 18-3
Beispiel für kleine Grenzzyklen in einem System 2. Ordnung mit Runden
der Multiplikationsergebnisse auf eine Wortlänge von 16 Bits bei Impulser-
regung mit kleiner Amplitude
16*LSB
. Angegeben sind die kleinsten und
größten Werte
y
min
bzw.
y
max
und die Periode der Grenzzyklen
y
min
/
LSB
y
max
/
LSB
Periode
Polphase
:
0°
30°
12
12
12
60°
90°
Wiederholen Sie die Untersuchungen des Systems 2. Ordnung für die Arithmetik
mit Betragsabschneiden und Sättigung, siehe Programm
filt2_ts
. Können kleine
Grenzzyklen beobachtet werden?
Programmbeispiel 18-1
Untersuchung von Grenzzyklen in einem System 2. Ordnung
% Limit cycles due to round-off in 2nd order block with quantized
% coefficients and fixed-point arithmetic
% used functions: filt2_rc.m, filt2_ts.m
%% dsplab18_1.m * mw * 16Apr2011
N = 100;
%
number of simulation cycles
w = 16; LSB = 2^(-w+1);
%
word length and LSB
MODE =
'rc'
;
%
rounding, two's-complement overflow
rho = 0.95; phi = 30*pi/180;
%
pole magnitude and phase
%
Filter parameters
b = [.9375 0 0];
%
numerator coefficients
a = [1 -2*rho*cos(phi) rho^2];
%
denominator coefficients
bq = LSB*round(b/LSB);
%
quantized coefficients
aq = [1 2*LSB*round((a(2)/2)/LSB) LSB*round(a(3)/LSB)];
%
Input signal - impulse sequence - quantized
xq = [16*LSB zeros(1,N-1)];
%
Referenz system : 2nd order block with MATLAB default arithmetic
si = [0; 0];
%
initial values for state space variables
[yref,zref] = filter(bq,aq,xq,si);
%
2nd order block with fixed-point arithmetic
switch MODE
case
'rc'
%
rounding, two's-complement overflow
[y,s,OC] = filt2_rc(bq,aq,xq,si,w);
case
'ts'
%
truncation, two's-complement overflow
[y,s,OC] = filt2_ts(bq,aq,xq,si,w);
otherwise
disp(
'Unknow method: MODE'
)
end