

{"id":84,"date":"2018-04-30T13:17:42","date_gmt":"2018-04-30T11:17:42","guid":{"rendered":"https:\/\/project.inria.fr\/pisa\/?page_id=84"},"modified":"2018-07-24T09:04:57","modified_gmt":"2018-07-24T07:04:57","slug":"amplifier","status":"publish","type":"page","link":"https:\/\/project.inria.fr\/pisa\/examples\/amplifier\/","title":{"rendered":"Balanced Amplifier"},"content":{"rendered":"<p>In this example, we analyse the stability of a balanced amplifier built for operation at 3.6GHz. BFP520 transistors were used to construct the ampli\ufb01er. During measurement, the design oscillated around 1.43 GHz when terminated with 50\u03a9. So we should find the same instability using the Pisa analyisis tools.<br \/>\nThe amplifier was designed as part of a student project by Kurt Homans and Johan Nguyen.<\/p>\n<h2>Simulation set-up<\/h2>\n<p>We use the ADS schematic shown below:<\/p>\n<p><a href=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/Amplifier_schematic-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/Amplifier_schematic-1.png\" alt=\"\" width=\"1400\" height=\"516\" class=\"aligncenter size-full wp-image-320\" srcset=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/Amplifier_schematic-1.png 1400w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/Amplifier_schematic-1-300x111.png 300w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/Amplifier_schematic-1-768x283.png 768w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/Amplifier_schematic-1-1024x377.png 1024w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/Amplifier_schematic-1-150x55.png 150w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/a><\/p>\n<p>All transmission lines in the circuit are 50\u03a9 lines unless stated otherwise. The TLINP model was used for the transmission lines with \\(\\varepsilon_r = 6.15\\), \\(\\tan(\\delta) = 0.003\\) and conductor losses \\(A = 2.5 \\frac{\\mathrm{dB}}{\\mathrm{m}}\\).<\/p>\n<p>We wish to study the stability of the DC solution of this circuit, so we connect a small-signal current source to the collector of the top transistor and run an AC simulation to determine the circuit&#8217;s voltage response to the perturbation. We measure 4 voltages in the circuit: at the base and collector of the two transistors. <\/p>\n<p>The BFP520 has an \\(f_t\\) of 45GHz, so we run the AC simulation from 0-50GHz, to cover the complete frequency interval in which an instability can occur. To obtain a sufficiently fine frequency grid, we choose a frequency step of 2MHz.<\/p>\n<p>With a MatlabOutput block, we save the simulation results to a mat file to be imported into Matlab for analysis. When no fixed path is specified, ADS will save this mat file in the data folder of the workspace.<\/p>\n<h2>Import into Matlab<\/h2>\n<p>To import the simulation data into matlab, we use the ADSimportSimData fuction on the mat file generated by ADS:<\/p>\n<pre lang=\"MATLAB\" line=\"1\">\r\nsimdata = ADSimportSimData('Amplifier.mat');\r\n<\/pre>\n<p>simdata is now a matlab struct with one field: &#8220;sim1_AC&#8221;, which contains the simulation results of the AC simulation. &#8220;simdata.sim1_AC&#8221; is a struct with the measured AC voltage responses to the small-signal current source and a frequency axis. following fields:<br \/>\n<code>base2: [1\u00d725001 double]<br \/>\ncoll2: [1\u00d725001 double]<br \/>\nbase1: [1\u00d725001 double]<br \/>\ncoll1: [1\u00d725001 double]<br \/>\nfreq:  [1\u00d725001 double]<br \/>\n<\/code><\/p>\n<p>We want to analyse the circuit impedance<\/p>\n\\(\\displaystyle Z_i = \\frac{V_i}{I_{ex}} \\)\n<p>\\(I_{ex}=1\\) because we excited the circuit with a small-signal current source of 1A. We have \\(Z_i = V_i\\) and we can just analyse the voltage response with the Pisa tools. First, we analyse only the impedance at the excited node. To this end, we gather the data measured at the collector of the top transistor and the corresponding frequency axis. Both are then used to construct an FRM object:<\/p>\n<pre lang=\"MATLAB\" line=\"2\">\r\ndata = reshape(simdata.sim1_AC.coll1,1,1,[]);\r\nfreq = simdata.sim1_AC.freq;\r\n% construct the FRM\r\nZ = FRM(data,'Freq',freq,'Normalisation',LowpassNormalisation(freq));\r\n<\/pre>\n<p>Note that we use a lowpass normalisation in the FRM object. We can do this because we have the impedance information at DC. <\/p>\n<h2>Projection<\/h2>\n<p>We are now ready to compute the projection on stable and unstable basis functions. To obtain good interpolation results in the sharp resonances in our impedance data,  we use a rational interpolation method.<\/p>\n<pre lang=\"MATLAB\" line=\"6\">\r\nPROJ = PisaProject(Z,'Interpolation',RationalInterpolation);\r\n<\/pre>\n<p>We plot the results of the projection. <\/p>\n<pre lang=\"MATLAB\" line=\"7\">\r\nfigure(1)\r\nplot(    Z        ,'Color',[0 0.4 0],'linewidth',2);\r\nplot(PROJ.stable  ,'Color','b','linewidth',2);\r\nplot(PROJ.unstable,'Color','r','linewidth',2);\r\nxlim([0 max(Z.Freq)])\r\nylim([-20 60])\r\nlegend('original data','stable part','unstable part')\r\n<\/pre>\n<p>The result is the following:<\/p>\n<p><a href=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_single.png\"><img decoding=\"async\" src=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_single.png\" alt=\"\" width=\"500\"  class=\"aligncenter size-full wp-image-259\" srcset=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_single.png 875w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_single-300x225.png 300w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_single-768x576.png 768w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_single-150x112.png 150w\" sizes=\"(max-width: 875px) 100vw, 875px\" \/><\/a><\/p>\n<p>The system is clearly unstable, with an unstable pole around 1.4GHz. We will use PisaEstimate later to determine the exact pole location. Note that the unstable part of the impedance is very simple compared to the complex dynamics present in the stable part. This is a big advantage of working with a projection. Because all passives used in the simulation set-up are lossy and because the transistor has a finite bandwidth, we know that the stable part is rational. All distributed effects due to the transmission lines in the circuit appear in the stable part of the projection.<\/p>\n<p>It is just as easy to run the projection on all impedance traces at the same time. Now, instead of adding only the voltage at the first collector to the data in the FRM, we add all 4 of the measured impedances in the FRM, such that the system we analyse becomes a 1-input 4-output system. The rest of the code remains unchanged:<\/p>\n<pre lang=\"MATLAB\" line=\"7\">\r\ndata = [simdata.sim1_AC.coll1;\r\n        simdata.sim1_AC.coll2;\r\n        simdata.sim1_AC.base1;\r\n        simdata.sim1_AC.base2];\r\nfreq = simdata.sim1_AC.freq;\r\n% gather the data and frequency in an FRM\r\nZ = FRM(reshape(data,4,1,[]),'Freq',freq,'Normalisation',LowpassNormalisation(freq));\r\n% call the projection method\r\nPROJ = PisaProject(Z,'Interpolation',RationalInterpolation);\r\n% plot the result\r\nfigure(2)\r\nplot(    Z        ,'Color',[0 0.4 0],'linewidth',2);\r\nplot(PROJ.stable  ,'Color','b','linewidth',2);\r\nplot(PROJ.unstable,'Color','r','linewidth',2);\r\nxlim([0 max(Z.Freq)])\r\nylim([-20 60])\r\n<\/pre>\n<p>The result is a little bit more confusing to analyse, but the instability is clearly visible in all impedance functions:<\/p>\n<p><a href=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_multiple.png\"><img decoding=\"async\" src=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_multiple.png\" alt=\"\" width=\"500\"  class=\"aligncenter size-full wp-image-258\" srcset=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_multiple.png 875w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_multiple-300x225.png 300w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_multiple-768x576.png 768w, https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_multiple-150x112.png 150w\" sizes=\"(max-width: 875px) 100vw, 875px\" \/><\/a><\/p>\n<h2>Estimation<\/h2>\n<p>We now use the results of the projection of the 1-input 4-output frequency response to determine its common poles. We estimate the pole location with the help of the PisaEstimate function<\/p>\n<pre lang=\"MATLAB\">\r\npoles = PisaEstimate(Z,'Projection',PROJ);\r\n<\/pre>\n<p>Because we don&#8217;t provide the order of the unstable part of the system, the function will show the singular values of the Hankel matrix to allow the user to specify the order. For this example, we obtain the following singular values:<\/p>\n<p><a href=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_singularvals-1.png\"><img decoding=\"async\" src=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/04\/BalancedAmplifier_singularvals-1.png\" alt=\"\" width=\"500\"  class=\"aligncenter size-full wp-image-257\" \/><\/a><\/p>\n<p>There are two significant singular values, so the amplifier has two unstable poles (A complex-conjugate resonant pole pair). We give 2 as order of the system and obtain the following result:<\/p>\n<pre lang=\"MATLAB\">\r\nfprintf('poles estimated at: %g GHz\\n',abs(imag(poles(1)))\/2\/pi\/1e9);\r\nfprintf(' with a damping of %2.2g \\n',cos(pi-angle(poles(1))));\r\n<\/pre>\n<p><code>poles estimated at: 1.45979 GHz<br \/>\n with a damping of -0.014<br \/>\n<\/code><\/p>\n<h2>Download code and workspace<\/h2>\n<p><a href=\"https:\/\/project.inria.fr\/pisa\/files\/2018\/07\/PisaExamples.zip\">Click here<\/a> to download the ADS workspace with all the examples and the matlab code to run pisa.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this example, we analyse the stability of a balanced amplifier built for operation at 3.6GHz. BFP520 transistors were used to construct the ampli\ufb01er. During measurement, the design oscillated around 1.43 GHz when terminated with 50\u03a9. So we should find the same instability using the Pisa analyisis tools. The amplifier\u2026<\/p>\n<p> <a class=\"continue-reading-link\" href=\"https:\/\/project.inria.fr\/pisa\/examples\/amplifier\/\"><span>Continue reading<\/span><i class=\"crycon-right-dir\"><\/i><\/a> <\/p>\n","protected":false},"author":1391,"featured_media":0,"parent":69,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-84","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/pages\/84","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/users\/1391"}],"replies":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/comments?post=84"}],"version-history":[{"count":38,"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/pages\/84\/revisions"}],"predecessor-version":[{"id":692,"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/pages\/84\/revisions\/692"}],"up":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/pages\/69"}],"wp:attachment":[{"href":"https:\/\/project.inria.fr\/pisa\/wp-json\/wp\/v2\/media?parent=84"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}