The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Simulators >> RF Simulators >> How to plot "input reflection coefficient" in ADS https://designers-guide.org/forum/YaBB.pl?num=1266403928 Message started by DoYouLinux on Feb 17th, 2010, 2:52am |
Title: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Feb 17th, 2010, 2:52am Hi all, I am just wondering .... I am trying to simulate a single transistor with two 50-ohm ports connected at the base and collector in ADS. From theory, if the output is terminated with a 50-ohm load, the input reflection coefficient looking into the base is equal to S11. How ever, if the output is terminated with some impedance other than 50 ohm (Gamma_L is not zero), we need to calculate the input reflection coefficient (Gamma_in) as a function of "Gamma_L" My question is, how could we plot "Gamma_in" in ADS ??? Do we need to edit the equation of Gamma_in by ourselves ? Or, there exists some predefined function ? Thanks a lot in advance (I will put my schematic soon) DYL ;D |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 17th, 2010, 3:17am Assume following. ZL ; Load Impedance. Z01 ; Port1 Impedance=Reference Impedance for Port1 Z02 ; Port2 Impedance=Reference Impedance for Port2 You can calculate Gamma_in by various methods. If {S(1,1),S(1,2),S(2,1),S(2,2)} are evaluated under condition of Z02==conj(ZL), S(1,1) is Gamma_in you want. If {S(1,1),S(1,2),S(2,1),S(2,2)} are evaluated under condition of Z02!=conj(ZL), use "stos()" function. http://edocs.soco.agilent.com/display/ads2009/stos%28%29 Scorrected = stos(S, PortZ, {PortZ(1),conj(ZL)}) You can get Gamma_in as Scorrected(1,1). Here PortZ(1)=Z01, PortZ(2)=Z02. Of course, you can also calculate Gamma_in by the following. Gamma_L=(ZL-conj(Z02))/(ZL+Z02) Gamma_in=S(1,1)+S(1,2)*S(2,1)*Gamma_L/(1-S(2,2)*Gamma_L) You can define your custom functions in Agilent ADS post processing environment which are commonly usable in ADS native, RFDE and GoldenGate. See http://www.edaboard.com/viewtopic.php?t=371902 Source codes of original prepared functions exist in "$HPEESOF_DIR/expressions/ael". You can create your custom function easily by modifying them. Code:
|
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Feb 17th, 2010, 7:18am Hi pancho_hideboo, Thank you so much again for your great reply. However, I am still confused at some points. 1) For the load reflection coefficient (Gamma_L), is it not calculated by "(ZL-Z02)/(ZL+Z02) ? Why is the numerator in your reply equal to "ZL-conj(Z02)" ? From what I understand, your reflection coefficient is a general form. For example, as seen from the attached figure, if Z0 is complex and if ZL is a complex conjugate of Z0, the two impedances are conjugately matched and there will be no reflection at the reference plane. Do I understand correctly ?? However, in ADS, the reference impedance becomes Z0 of the "term" element, not that of the transmission like shown in the figure anymore. Hmmmm .... so where is the reference plan that we can define the "reflection" ??? 2) As you can see from another attached figure, if I changed Z0 of "Term 2" to be, for instance, 10 + j20 instead of 50. Now does my load become 10 + j20 ohm and the reference impedance of Term 2 is 10 Ohm. I am quite confused about reference impedance in ADS and reference impedance used in several text books now >:( However, thank you very much again for your nice post DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Feb 17th, 2010, 7:19am Oh, forgot another figure. Here it is. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 17th, 2010, 7:30am See http://en.wikipedia.org/wiki/S-parameters a1=0.5*k*(V1+Z01*I1), b1=0.5*k*(V1-conj(Z01)*I1), k=1/sqrt(real(Z01)) Gamma=b1/a1=(V1-conj(Z01)*I1)/(V1+Z01*I1)=(Zin-conj(Z01))(Zin+Z01), Zin=V1/I1 DoYouLinux wrote on Feb 17th, 2010, 7:18am:
Confirm S11 which ADS gives is (Zload-conj(Z))/(Zload+Z) not (Zload-Z)/(Zload+Z). DoYouLinux wrote on Feb 17th, 2010, 7:18am:
This reflection coefficient is for maximum power transmission. That is no reflection for sqrt(Power Wave). Not for non-distortion(non reflection regarding Voltage Wave) transmission condition. Definition of reflection coefficient for non reflection regarding Voltage Wave is (Zload-Z)/(Zload+Z) not (Zload-conj(Z))/(Zload+Z). DoYouLinux wrote on Feb 17th, 2010, 7:18am:
Consider Tevenin equivalent circuit seeing left from Ref. plane in your attached figure. If you consider Tevenin equivalent circuit, it is very clear that reference plane is point you showed. DoYouLinux wrote on Feb 17th, 2010, 7:18am:
The reference impedance of "Term2" is (10+j*20)ohm not 10ohm. If you use AC analysis for evaluation of Zin, Z of "Term2" must be ZL. But if you use SP analysis for evaluation of Zin and Z of "Term2" is conj(ZL), Gamma_in which you want is given as S11. DoYouLinux wrote on Feb 17th, 2010, 7:18am:
There are very few books which describe definition of S-parameters when reference impedances are complex number, although I don't know what text books you read. In Agilent ADS, "SP_Probe" is available for evaluation of Zs,Zin,Zout and ZL. http://edocs.soco.agilent.com/display/ads2009/SP+Probe+%28S-Parameter+Probe%29 |
Title: Re: How to plot "input reflection coefficient" in ADS Post by Frank Wiedmann on Feb 18th, 2010, 2:07am pancho_hideboo wrote on Feb 17th, 2010, 7:30am:
The article http://www.mtt.org/measurements/GENERWGCT.PDF is the best reference for this subject I know of. The discussion at http://www.designers-guide.org/Forum/YaBB.pl?num=1251245633 might also be interesting regarding the definition of S-parameters. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 18th, 2010, 2:29am When reference impedance is real number, definition of s-parameter is very easy. See http://www.designers-guide.org/Forum/YaBB.pl?num=1266168115/1#1 Frank Wiedmann wrote on Feb 18th, 2010, 2:07am:
So I think it is very difficult to understand for people who are not microwave theory experts. Most important issue is understanding "Power Wave formulation" based on "Kaneyuki Kurokawa's formulation". When reference impedance is real number, sqrt(power wave) is same as voltage wave except for scalar multiplication existing between them. But when reference impedance is complex number, sqrt(power wave) is different from voltage wave completely. This board is "Simulators". So I move back to issue of "Simulators". I have confirmed that treatment of complex impedance of "Term" in Agilent ADS's SP analysis is very correct. However I have not confirmed whether treatment of complex impedance of "port" is correct or not in SP analysis of both Cadence Spectre and Agilent GoldenGate. Cadence Spectre claims supporting "port" with complex impedance at least for small signal analysis. http://www.designers-guide.org/Forum/YaBB.pl?num=1231076499/5#5 Is there anyone who confirmed treatment of complex impedance of "port" in SP analysis of both Cadence Spectre and Agilent GoldenGate ? Can they give correct S11 and S21 when both Z01 and Z02 are complex numbers ? |
Title: Re: How to plot "input reflection coefficient" in ADS Post by Frank Wiedmann on Feb 18th, 2010, 5:06am pancho_hideboo wrote on Feb 18th, 2010, 2:29am:
The summary at http://wikis.ua.pt/MTT-11/index.php/S-Parameters_and_VNA_Calibrations might be more accessible. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Feb 18th, 2010, 6:54am Hi Pancho_Hideboo, I have just finished my homework, proving your reply. Wow, you are correct about the definition of reflection coefficient that is used by ADS. I attached what I did in ADS and the results here. Now I am trying to understand the definitions of reflection coefficients you mentioned (I still don't know exactly how to use Quote, sorry about this): --------------------------------------------------------------------------------------------------- Reflection regarding "Voltage Wave" exists even if this reflection coefficient is zero. This reflection coefficient is for maximum power transmission. That is no reflection for sqrt(Power Wave). Not for non-distortion(non reflection regarding Voltage Wave) transmission condition. Definition of reflection coefficient for non reflection regarding Voltage Wave is (Zload-Z)/(Zload+Z) not (Zload-conj(Z))/(Zload+Z) --------------------------------------------------------------------------------------------------- Why do we have two definitions: (Zload-Z)/(Zload+Z) and (Zload-conj(Z))/(Zload+Z). As I have proved in ADS, the latter definition is correct, while the first one is not correct :-/ Thank you very much for your explanation again, DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Feb 18th, 2010, 6:55am Oh, forgot the results. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 18th, 2010, 7:18am DoYouLinux wrote on Feb 18th, 2010, 6:54am:
They depend on wave which we have interest in. First one is based on Voltage Wave. Second one is based on sqrt(Power Wave). For complex reference impedance, you have to distinguish S11 from ΓV(=Voltage Wave Refelection Coefficient). At power matching(=conjugate matching) condition, output waveform is distorted unless input signal is single frequency sinusoidal. Assume source impedance is Zs=Rs//Cs=1/(1/Rs+j*ω*Cs) and Load impedance is ZL. If ZL=conj(Zs)=1/(1/Rs-j*ω*Cs)=1/(1/Rs+1/(j*ω*Leq)), (Leq=1/(ω2*Cs)), output waveform is distorted because we can never realize broadband conjugate matching. If ZL=k*Zs, (k is real number), output waveform is never distorted. Here we can realize ZL=k*Zs=(k*Rs)//(Cs/k) over relative wide frequency band. k=1 is no more than no reflection condition for Voltage Wave. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 19th, 2010, 1:47am pancho_hideboo wrote on Feb 18th, 2010, 2:29am:
Both Cadence Spectre and Agilent GoldenGate can give same S11 and S21 as Agilent ADSsim when both Z01 and Z02 are complex numbers. But Cadence OCEAN functions, "zm()" and "zref()" can't give correct values. "zref()" ignores imaginary part. I've not confirmed other Cadence OCEAN functions related to SP analysis. If you will use Cadence Spectre, you should confirm their validity for complex reference impedance case. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Feb 23rd, 2010, 6:17am Hmmm Pancho_Hideboo, I actually am reading it, from the beginning .... I will come back with some results of my homework soon :) DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 23rd, 2010, 9:13pm pancho_hideboo wrote on Feb 17th, 2010, 3:17am:
Correctly these have to be : Quote:
pancho_hideboo wrote on Feb 17th, 2010, 7:30am:
Correctly this has to be : Quote:
|
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Feb 24th, 2010, 7:06am Hi Pancho_Hideboo, Thank you for the correction. However, is Gamma_L still the same: Gamma_L=(ZL-conj(Z02))/(ZL+Z02) ?? DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 24th, 2010, 7:10am DoYouLinux wrote on Feb 24th, 2010, 7:06am:
pancho_hideboo wrote on Feb 17th, 2010, 3:17am:
But I use AC analysis for evaluation of Γin. I don't use SP analysis. So I have not confirmed this for complex reference impedance case. I use custom interstage impedance probe with conventional AC analysis and master large signal steady state analysis followed by small signal AC analysis. See the followings. http://www.designers-guide.org/Forum/YaBB.pl?num=1221012939 http://www.designers-guide.org/Forum/YaBB.pl?num=1240334878/18#18 http://www.designers-guide.org/Forum/YaBB.pl?num=1218635777/5#5 Also see http://www.edaboard.com/viewtopic.php?t=380636 Again see the following. This is also interstage impedance probe, although this gives reflection coefficients not impedances. pancho_hideboo wrote on Feb 17th, 2010, 7:30am:
Back to original topics of this thread. ΓP=(Zin-conj(Z01))/(Zin+Z01) ΓV=(Zin-Z01)/(Zin+Z01) If Z01 is real number, ΓP=ΓV. Is Z01 real number in your evaluation of Γin ? If Z01 is complex number, which type of reflection coefficient is required as Γin, ΓP or ΓV. When Z01 is complex number, results of SP analysis are all ΓP type not ΓV type. I think the followings are proper in sqrt(Power) wave formulation, although I have not confirmed. ΓS=(ZS-Z01)/(ZS+conj(Z01)) Γin=(Zin-conj(Z01))/(Zin+Z01) Γout=(Zout-conj(Z02))/(Zout+Z02) ΓL=(ZL-Z02)/(ZL+conj(Z02)) |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 25th, 2010, 3:54am pancho_hideboo wrote on Feb 24th, 2010, 7:10am:
Gamma_L has to be (ZL-Z02)/(ZL+conj(Z02)). Attached figure is a testbench schematic for AC analysis. The followings are netlists of DUT. Here I used netlist of Cadence Spectre syntax directly in Agilent ADSsim. "FBP_1.scs": Code:
"FBP_1.sub": Code:
|
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 25th, 2010, 4:15am Attached figure is a testbench schematic for SP analysis. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 25th, 2010, 4:19am Attached figure is a result. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Feb 25th, 2010, 4:20am Attached figure is a result as "pdf" format for detail view. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Apr 21st, 2010, 8:35pm Hi pancho_hideboo, Thank you very much again for your great post. I am trying to understand the given example. One thing that is still not clear to me is Gamma_L, why is it defined as "Gamma_L=(ZL-Z02)/(ZL+conj(Z02))" ?? Should it be defined as "Gamma_L=(ZL-conj(Z02))/(ZL+Z02)" ?? Thank you very much, DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on Apr 22nd, 2010, 10:08am DoYouLinux wrote on Apr 21st, 2010, 8:35pm:
It has to be Gamma_L=(ZL-Z02)/(ZL+conj(Z02)). See equations in http://www.designers-guide.org/Forum/Attachments/test_FBP_1.pdf Derive Gamma_out and Gamma_L from definition in http://en.wikipedia.org/wiki/S-parameters. As direct thought, simply consider "complex conjugate matching condition" as reflection coefficient expressions, Gamma_out and Gamma_L. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on May 6th, 2010, 8:01am Hi pancho_hideboo, Thank you very much for the explanation, again. Let me take some time to prove and understand them. However, as I tried to follow the given example to plot Gamma_in (the BPF example), but here I used a transistor as a test vehicle. I found from the result that, in the plot of Gamma_in using "stos" function, if I defined the function as: S_new=stos(S, PortZ, {Zo1, Zload}), then S_new(1,1) will be identical to Gamma_in I defined using an equation. However, if I replaced Zo1 in the S_new function by Zsource as: S_new=stos(S, PortZ, {Zsource, Zload}), then S_new(1,1) will not be identical to Gamma_in function. How come ? To my understanding "S_new=stos(S, PortZ, {Zsource, Zload})" should be correct because we changed the reference impedance to be Zsource and Zload (here in my case, my Zo1 is not equal to Zsource, as in your example). Could you clarify more on this point, please ? Thank you very much in advance, DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on May 6th, 2010, 8:02am Here is the result: |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on May 6th, 2010, 8:16am Gamma_in is not correct for your case since you change Z01. On the other hand, S_new(1,1) is correct. Equation for Gamma_in has to be modified if Z01 is changed. You can derive modified equation for Gamma_in_corrected valid for changing Z01. Calculate Zin from Gamma_in=(Zin-conj(Z01))/(Zin+Z01). Next calculate Gamma_in_corrected as (Zin-conj(Zs))/(Zin+Zs). |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on May 8th, 2010, 10:39am Hi pancho_hideboo, Thank you for your further explanation. However, I think that I am still confused about the expression "S_new" using "stos" function of ADS. As explained also in the attached figure, to my understanding, the "PortZ" argument represents the default set of reference impedances, which are Zo1 and Zo2 as shown in the schematic. In my example, Zo1 and Zo2 imply the reference impedances used for characterizing the default S parameters of the transistor. Then, the transistor was assume to be terminated with another set of impedances at the source side and the load side, which are "Zsource" and "Zload" in this example. This new termination is defined in the "S_new" expression as "{Zsource, Zload}". So, "Zsource" will be a new termination for port 1 (source side) and "Zload" will be a new termination for port 2 (load side). Then, I compared "S_new(1,1)" with the "Gamma_in" expression given in the previous reply. The "Gamma_in" expression uses "my_Sxx" to represent the default set of S parameter based on Zo1 and Zo2 reference impedances. "Gamma_L" in "Gamma_in" expression represents the load reflection coefficient due to termination using "Zload". From my understanding described above, I expected that "S_new(1,1)" and "Gamma_in" would be identical. But this was not the case. However, when I changed the new reference impedance in the "stos" function of the "S_new" expression to be "{Zo1, Zload}", the expressions "S_new" and "Gamma_in" were identical. Why when I replaced "Zsource" with "Zo1", the results were identical ? "Zo1" is not a new reference impedance at the source side (it is the default reference impedance at the source side instead), in my understanding, "Zsource" should be the correct variable. Would you mind to explain me further about this please ? I really want to understand as clear as I can. Thank you very much again, DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on May 8th, 2010, 10:46am I can't understand what you want to mean at all. "stos()" is very clear and straightforward. If you have any doubt about it, see its definition in "$HPEESOF_DIR/expressions/ael/network_fun.ael". ======================================================================= PortZ={Z01, Z02} Zs!=Z01, ZL!=Z02 S_Z01_ZL=stos(S, PortZ, {Z01, ZL}) S_Z01_ZL(1,1)==Gamma_in S_Zs_ZL=stos(S, PortZ, {Zs, ZL}) S_Zs_ZL(1,1)!=Gamma_in S_Zs_ZL(1,1)==Gamma_in_corrected Zin is unique regardless of {Z01,Z02} values. Zin is determined by only ZL. Gamma_in is a reflection coefficient defined for Zin and Z01. Gamma_in_corrected is a reflection coefficient defined for Zin and Zs. ======================================================================= Again see http://www.designers-guide.org/Forum/YaBB.pl?num=1266403928/24#24 Try to calculate Gamma_in_corrected. Show me plot result of this Gamma_in_corrected and S_new(1,1). I think you can't understand S-parameters and Reference impedances at all. I think you should not use S-parameter formulation. You had better use AC analysis, although there are no difference between AC and SP analyses for me, since they are both linear analysis. |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on May 10th, 2010, 9:21am Hi pancho_hideboo, Thank you very much again for your explanation. I really appreciated it. I think perhaps I am confused about the definition of the "input reflection coefficient" and also confused about the expression of "stos" function. Therefore, I tried to summarize again in the attached figure. In the figure, what I understood is, please correct me if I were wrong,: 1) A 2-port was first characterized with reference impedances Zo1 and Zo2. From these reference impedance, the default S parameter set was obtained and the input reflection is S11. The reference impedance is defined as "portZ" in the "stos" function. 2) Then, assuming that the reference impedance on the load side was changed to "Zload", now the input reflection coefficient was not equal to S11 anymore (since Gamma_L is not zero). In this configuration, the new reference impedance was defined as "{Zo1, Zload}" in the "stos" function (Zo1 remains but Zo2 replaced by Zload). Then, "Gamma_in" can be found from S_new(1,1). Did I understand correctly ? Thank you in advance again, DYL :) |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on May 10th, 2010, 9:24am DoYouLinux wrote on May 10th, 2010, 9:21am:
|
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on May 27th, 2010, 6:43am Hi Pancho_Hideboo, After I repeat the simulation in ADS again, I got correct results. Thank you very much again for your explanation about Gamma_in topic. DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by pancho_hideboo on May 29th, 2010, 1:00am DoYouLinux wrote on May 27th, 2010, 6:43am:
[Case-1] S_Z01_ZL=stos(S_Z01_Z02, {Z01,Z02}, {Z01,ZL}) S_Z01_ZL(1,1) == Γin=(Zin-conj(Z01))/(Zin+Z01) [Case-2] S_Zs_ZL=stos(S_Z01_Z02, {Z01,Z02}, {Zs,ZL}) S_Zs_ZL(1,1) != Γin=(Zin-conj(Z01))/(Zin+Z01) S_Zs_ZL(1,1) == Γin_corrected=(Zin-conj(Zs))/(Zin+Zs) |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Jul 24th, 2010, 9:19am Hi pancho_hideboo, I tried to evaluate input and output reflection coefficients in several ways, including Case 2 you mentioned. The results I obtained are all the same, as shown in the attached figures. If you have more comments, please post again. Thank you very much for your clear explanations, you are a great sensei. DYL |
Title: Re: How to plot "input reflection coefficient" in ADS Post by DoYouLinux on Jul 24th, 2010, 9:25am and the results ... |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |