Hello ,i have built a circuit and ran a POLE ZERO simulation on it, after that i took those poles and zeros shown in the simulation results poles: 1.9128e-12+5.03292e9i , 1.9128e-12-5.03292e9i
zeros: 0+0i , -1.58e-21+0iand made a transfer function in MATLAB as shown bellow.
After that i compared the MATLAB bode plot with AC sweep of the circuit . i get almost the same response however the peak at the AC sweep is much lower then the POLE ZERO transfer function bode plot.
where did i go wrong comparing them?Thanks
You did not specify the frequency resolution you chose on your spectre AC analysis. I suspect you are using a different frequency step in your Matlab computation than in your spectre AC simulation. Hence the frequency corresponding to the two peaks will be slightly different. I would use the same frequency step in both analyses and increase the frequency resolution to see if the two peak frequencies become closer in value.
Hello Shawn , your advice helped to make the peaks frequency match exactly(by increasing to 1000 samples) however there is no 150dB amplitude
in fact when i put 100000 samples this peak rose to 50db ,so maybe if we put 1M sample then it will match :-)Is there a way to get the poles as a function of a circuit component,or the transfer function which component parameters in them??Thanks
yefJ said:is there a way to get the poles as a function of a circuit component?
What does that mean?
Hello Andrew, if i will replace the values of the components with parameters(with values in them)
is there a way to get a transfer function with those parameters in them so i will get something like
H=cap*s^2 +cap*res*s+2 some thing like that or the poles instead being shown as numbers they will be shown as parametric expression of my components .
yefJ said:is there a way to get a transfer function with those parameters in them so i will get something like H=cap*s^2 +cap*res*s+2 some thing like that or the poles instead being shown as numbers they will be shown as parametric expression of my components
The peak may not be as relevant as the integrated area in a high Q network such as you are simulating since the peak will be determined by the exact frequency found in the Matlab and spectre simulations. A small difference in frequency in a high Q network can lead to very significant difference in the "peak". You are using pole and zero values with only a few digits (I only see 5 digits) from spectre in Matlab - hence the degree to which the peak frequency and magnitude shown in Matlab matches spectre is determined how accurate only 5 digits are in yout poles and zeroes. Spectre is likely using much greater accuracy in its simulation result.
A different way to gauge to which the two agree might be to integrate the area over the entire frequency of interest - say 4 GHz to 6 GHz- of both solutions.
ShawnLogan said: Spectre is likely using much greater accuracy in its simulation result.
Hello Shawn , is there a way to get the poles and zeros in more accurate for ,in order to avoid potential mismatch?Thank
It doesn't seem to be possible to increase the number of digits in the pz output in the spectre log file (the digits option doesn't seem to affect this - I'll request that this is fixed). However, in the CIW after running the simulation you can do:
This will retrieve the pole-zero information from the result database (which is stored in double precision floating point numbers) and print a summary. The first function increases the number of digits that numbers are displayed using for this kind of report.
By the way, rather than doing your ac sweep with lots of points, you could simply add an additional point via the "Add Specific Points" on the ac analysis form, and enter:
(note, the parentheses around the whole expression are required because otherwise spectre will have a problem with an expression within the vector for the additional points). The M_PI is a built-in constant in spectre, and the expression is for the resonant frequency of the LC tank).
I still suspect you'll struggle to get the peak correctly matching as it is very big, but as Shawn said I wouldn't worry about that too much. Even resimulating in spectre using an svcvs (with the coefficients with the extra precision above scaled by 2*pi because they need to be in radians/s) does not give an absolutely precise match of the peak magnitude:
However, as you can see, they overlay pretty well. I couldn't check your Matlab work because I don't have the Control Toolbox, so that's why I used spectre's Laplace voltage controlled voltage source (svcvs).