c2d function with "impulse" method to transform the loop gain from s-domain to z-domain.

6 Ansichten (letzte 30 Tage)
Hi guys! I would be very grateful if you could help me!
I trying reproduce an exemple in article "A Generalized Approach to Design CT ƩΔMs based on FIR DAC" that use the c2d function with "impulse" to implemente this follows loop gain functions:
when
e
In this article, substituing (24) and (25) into (10) and (11), its finded this two follow DT transfer function aplying "c2d" with "impulse sampling":
I'm following all the steps but I can't find the transfer functions (26) and (27). My results are very different.
Below is the code I wrote:
%Paramters
L=10*10^-9;
W=915*10^6;
gm=1*10^-3;
ts= 1/(3.6e9);
ts_=-1*ts;
% H(s) - (24)
H=tf([gm*(W)^2*(L)^2 0 0],[1 0 2*(W)^2 0 (W)^4]);
s=tf('s');
%Here I split Hdac into two parts and apply the distributive property
G_ct_ev=c2d(H*1/s,ts,'imp')-c2d(H*(exp(ts_*s))/s, ts, 'imp');
Warning: Use the state-space representation for more efficient modeling of discrete-time delays.
set(G_ct_ev,'variable','z^-1');
G_ct_ev
G_ct_ev = 8.876e-31 z^-1 - 4.324e-30 z^-2 + 7.65e-30 z^-3 - 4.214e-30 z^-4 - 4.214e-30 z^-5 + 7.65e-30 z^-6 - 4.324e-30 z^-7 + 8.876e-31 z^-8 - 1.264e-45 z^-9 ---------------------------------------------------------------------------------------------------------------------------------------------------- 1 - 7.743 z^-1 + 26.48 z^-2 - 52.24 z^-3 + 65.01 z^-4 - 52.24 z^-5 + 26.48 z^-6 - 7.743 z^-7 + z^-8 Sample time: 2.7778e-10 seconds Discrete-time transfer function.

Antworten (1)

Paul
Paul am 25 Feb. 2022
Bearbeitet: Paul am 1 Mär. 2022
I scanned the paper and also cannot recreate their results. Because HDAC has the form of a zero order hold, I would have tried:
L = 10*10^-9; % H
W0 = 915*10^6*2*pi; % need to convert to rad/sec
gm = 1*10^-3; % A/V
ts = 1/(3.66e9); % did not see this in the paper, slightly modified from the question
H0 = zpk(tf(W0*L*[1 0],[1 0 W0^2]));
H = gm*H0*H0
H = 3.3052 s^2 ------------------ (s^2 + 3.305e19)^2 Continuous-time zero/pole/gain model.
Gct_ev = c2d(H,ts,'zoh');
Gct_ev
Gct_ev = 7.854e-20 (z-1)^2 (z+1) ----------------------- (z^2 + 1)^2 Sample time: 2.7322e-10 seconds Discrete-time zero/pole/gain model.
tf(Gct_ev)
ans = 7.854e-20 z^3 - 7.854e-20 z^2 - 7.854e-20 z + 7.854e-20 ------------------------------------------------------- z^4 + 6.432e-16 z^3 + 2 z^2 + 6.432e-16 z + 1 Sample time: 2.7322e-10 seconds Discrete-time transfer function.
This result is just a scaled version of eq (26). The numerator gain is different by quite a lot. Maybe there's some additional scaling or units conversion?
Or more likely they did something else entirely. But I really don't understand how the gain (2.8 vs 7.982e-20) could be so different regardless.
For Gct_od I might try something like this:
Gct_od = d2d(c2d(H,ts/2,'zoh')/tf('z'),ts)
Gct_od = 2.7768e-20 (z+3.732) (z-1)^2 (z+0.2679) --------------------------------------- z (z^2 + 1)^2 Sample time: 2.7322e-10 seconds Discrete-time zero/pole/gain model.
Again, the gain is too low. If we normalize
temp = Gct_od/Gct_od.k
temp = (z+3.732) (z-1)^2 (z+0.2679) ---------------------------- z (z^2 + 1)^2 Sample time: 2.7322e-10 seconds Discrete-time zero/pole/gain model.
and covert to tf
temp = tf(temp);
temp.Variable = 'z^-1'
temp = z^-1 + 2 z^-2 - 6 z^-3 + 2 z^-4 + z^-5 --------------------------------------------------- 1 + 1.288e-15 z^-1 + 2 z^-2 + 1.288e-15 z^-3 + z^-4 Sample time: 2.7322e-10 seconds Discrete-time transfer function.
we recover equation (27).
Summary: I'm not sure why the gains of Gct_ev and Gct_od are as shown in the paper.
Edit: Normaizing Gct_ev by the gain of Gct_od is very close to the result in the paper eq (26)
temp = tf(Gct_ev/Gct_od.k);
temp.Variable = 'z^-1'
temp = 2.828 z^-1 - 2.828 z^-2 - 2.828 z^-3 + 2.828 z^-4 --------------------------------------------------- 1 + 6.432e-16 z^-1 + 2 z^-2 + 6.432e-16 z^-3 + z^-4 Sample time: 2.7322e-10 seconds Discrete-time transfer function.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by