From c2e96227e5a42fe60bb1df26a5f9dc1d3f3aef1e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 15 Apr 2015 14:26:47 +0000 Subject: pst-circ (14apr15) git-svn-id: svn://tug.org/texlive/trunk@36865 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/pst-circ/Changes | 1 + .../doc/generic/pst-circ/pst-circ-doc.pdf | Bin 838334 -> 739227 bytes .../doc/generic/pst-circ/pst-circ-doc.tex | 212 ++++++++++-- .../texmf-dist/tex/generic/pst-circ/pst-circ.tex | 361 ++++++++++++++++++--- 4 files changed, 492 insertions(+), 82 deletions(-) diff --git a/Master/texmf-dist/doc/generic/pst-circ/Changes b/Master/texmf-dist/doc/generic/pst-circ/Changes index 2988e207067..0ace152b455 100644 --- a/Master/texmf-dist/doc/generic/pst-circ/Changes +++ b/Master/texmf-dist/doc/generic/pst-circ/Changes @@ -1,3 +1,4 @@ +2.13 2015-04-15 . added some new components (Piere Vivegnis) 2.12a 2014-10-09 . Updated documentation 2.12 2014-07-30 . Added new tripole powermeter. 2.11 2014-06-24 . Added new key circ={} for specific key setting. diff --git a/Master/texmf-dist/doc/generic/pst-circ/pst-circ-doc.pdf b/Master/texmf-dist/doc/generic/pst-circ/pst-circ-doc.pdf index ec609f42c68..2393cb21d88 100644 Binary files a/Master/texmf-dist/doc/generic/pst-circ/pst-circ-doc.pdf and b/Master/texmf-dist/doc/generic/pst-circ/pst-circ-doc.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-circ/pst-circ-doc.tex b/Master/texmf-dist/doc/generic/pst-circ/pst-circ-doc.tex index c4eb7f6df7e..f93f8769c88 100644 --- a/Master/texmf-dist/doc/generic/pst-circ/pst-circ-doc.tex +++ b/Master/texmf-dist/doc/generic/pst-circ/pst-circ-doc.tex @@ -41,18 +41,18 @@ \circulator[tripolestyle=isolator,tripoleconfig=right]{180}(R1)(R2)(X1){Isolator}{} \ncline{B}{R1} \pnode(10,8){R3} \pnode(9,7){X2} - \mixer[inputarrow,fillcolor=blue,fillstyle=solid](R2)(R3)(X2){Mixer}{} + \mixer[inputarrow,fillcolor=blue,fillstyle=solid, labeloffset=0.8](R2)(R3)(X2){Mixer}{} \pnode(9,6){X3} \oscillator[output=top](X3){LO}{} \pnode(12,8){R4} \ncline{R3}{R4} \naput{0.5~GHZ} \pnode(14,8){R5} - \filter(R4)(R5){BPF}% + \filter[labeloffset=0.8](R4)(R5){BPF}% \pnode(16,8){R6} - \amplifier[inputarrow=true,fillcolor=red,fillstyle=solid](R5)(R6){IF~Amp} + \amplifier[inputarrow=true,fillcolor=red,fillstyle=solid, labeloffset=0.8](R5)(R6){IF~Amp} \pnode(18,8){R7} - \detector[inputarrow=true](R6)(R7){Detector} + \detector[inputarrow=true, labeloffset=0.8](R6)(R7){Detector} \pnode(18,4){R8} \amplifier[inputarrow=true,labeloffset=-1](R7)(R8){Amp} \pscircle[fillstyle=solid,fillcolor=white](18,4){0.1} @@ -413,6 +413,19 @@ objects you are drawing. You'll find a list in Section~\ref{sec:para} on p.~\pag \end{pspicture} \end{LTXexample} +\begin{LTXexample}[width=3.5cm,rframe={}] +\begin{pspicture}(3,2) + \pnode(0,1){A} \pnode(3,1){B} + \cell[labeloffset=1cm](A)(B){Cell} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=3.5cm,rframe={}] +\begin{pspicture}(3,2) + \pnode(0,1){A} \pnode(3,1){B} + \igbt[labeloffset=0.7cm, IGBTinvert=false](A)(B){IGBT} +\end{pspicture} +\end{LTXexample} \bigskip @@ -426,20 +439,38 @@ well chosen, so don't try to use tripole macros in strange situations! \xLcs{OA} \begin{LTXexample}[width=5.5cm] -\begin{pspicture}(5,3) - \pnodes(0,0){A}(0,3){B}(5,1.5){C} +\begin{pspicture}(5,2) + \pnodes(0,0){A}(0,2){B}(5,1){C} \OA(B)(A)(C) \end{pspicture} \end{LTXexample} \xLkeyword{OApower} \begin{LTXexample}[width=5.5cm] -\begin{pspicture}(5,3) - \pnodes(0,0){A}(0,3){B}(5,1.5){C} +\begin{pspicture}(5,2) + \pnodes(0,0){A}(0,2){B}(5,1){C} \OA[OApower=true](B)(A)(C) \end{pspicture} \end{LTXexample} +\xLcs{GM} +\begin{LTXexample}[width=5.5cm] +\begin{pspicture}(5,2) + \pnodes(0,0){A}(0,2){B}(5,1){C} + \GM[GMperfect=true](B)(A)(C) +\end{pspicture} +\end{LTXexample} + +\xLkeyword{GMpower} +\begin{LTXexample}[width=5.5cm] +\begin{pspicture}(5,2) + \pnodes(0,0){A}(0,2){B}(5,1){C} + \GM[GMpower=true](B)(A)(C) +\end{pspicture} +\end{LTXexample} + +There are 5 types of transistors included : NPN, PNP, FET, NMOS and PMOS. It's the macro \Lcs{transistortype} that determines which transistor will be drawn. + \xLcs{transistor} \begin{LTXexample}[width=5.5cm] \begin{pspicture}(3,4) @@ -448,6 +479,22 @@ well chosen, so don't try to use tripole macros in strange situations! \end{pspicture} \end{LTXexample} +\xLcs{transistorFET} +\begin{LTXexample}[width=5.5cm] +\begin{pspicture}(3,4) +\pnodes(0,2){A}(3,1){B}(3,3){C} +\transistor[basesep=1cm, transistortype=FET](A)(B)(C) +\end{pspicture} +\end{LTXexample} + +\xLcs{transistorNMOS} +\begin{LTXexample}[width=5.5cm] +\begin{pspicture}(3,4) +\pnodes(0,2){A}(3,1){B}(3,3){C} +\transistor[basesep=1cm, transistortype=NMOS, transistorcircle=false](A)(B)(C) +\end{pspicture} +\end{LTXexample} + \xLcs{transistor}\xLkeyword{TRot} \begin{LTXexample}[width=5.5cm] \begin{pspicture}(3,4) @@ -456,6 +503,9 @@ well chosen, so don't try to use tripole macros in strange situations! \end{pspicture} \end{LTXexample} + + + \xLkeyword{TRot} \begin{LTXexample}[width=5.5cm] \begin{pspicture}[showgrid=true](5,5) @@ -526,13 +576,21 @@ well chosen, so don't try to use tripole macros in strange situations! \end{LTXexample} \xLcs{potentiometer} -\begin{LTXexample}[width=3.5cm] +\begin{LTXexample}[width=5.5cm] \begin{pspicture}(3,3) \pnodes(0,1){A}(3,1){B}(3,2.25){C} \potentiometer[labeloffset=0pt](A)(B)(C){$P$} \end{pspicture} \end{LTXexample} +\xLcs{transistorFET} +\begin{LTXexample}[width=5.5cm] +\begin{pspicture}(3,4) +\pnodes(0,2){A}(3,1){B}(3,3){C} +\transistor[basesep=1cm, transistortype=FET, FETchanneltype=P](A)(B)(C) +\end{pspicture} +\end{LTXexample} + \begin{LTXexample}[pos=b] \psset{mathlabel,labelstyle=\tt} @@ -564,9 +622,6 @@ well chosen, so don't try to use tripole macros in strange situations! - - - \clearpage \subsubsection{Quadrupole macros} @@ -2115,19 +2170,12 @@ argument. \begin{LTXexample}[width=3.5cm,rframe={}] \begin{pspicture}(3,2) - \pnodes(0,0){A}(2,0){B} - \attenuator[inputarrow,labeloffset=1cm, + \pnode(0,1){A} \pnode(3,1){B} + \attenuator[inputarrow,labeloffset=0.7cm, dipoleinput=left](A)(B){Attentuator} \end{pspicture} \end{LTXexample} -\begin{LTXexample}[width=3.5cm,rframe={}] -\begin{pspicture}(3,2) - \pnodes(0,0){AA}(2,0){B} - \cell[labeloffset=1cm](A)(B){Cell} -\end{pspicture} -\end{LTXexample} - \subsection{New tripole macro-components} \subsubsection{Mixer} @@ -2153,6 +2201,31 @@ argument. \end{pspicture} \end{LTXexample} +\subsubsection{Splitter} +\begin{description} + \item[\Lkeyword{tripolestyle}:] \Lkeyval{bottom} | \Lkeyval{top} + \item[\Lkeyword{tripoleconfig}:] \Lkeyval{left} | \Lkeyval{right} + \item[\Lkeyword{inputarrow}:] \false | \true +\end{description} + + +\begin{LTXexample}[width=3.5cm,rframe={}] +\begin{pspicture}(3,2) +\pnode(0.5,1){A}\pnode(2.5,1){B}\pnode(1.5,2){C} + \splitter[inputarrow, + tripolestyle=top](A)(B)(C){Splitter}{} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=3.5cm,rframe={}] +\begin{pspicture}(3,2) +\pnode(0.5,1){A}\pnode(2.5,1){B}\pnode(1.5,0){C} + \splitter[inputarrow, + tripolestyle=bottom,tripoleinput=right, fillstyle=solid, fillcolor=ForestGreen](A)(B)(C){Splitter}{} +\end{pspicture} +\end{LTXexample} + + \subsubsection{Circulator} \begin{description} \item[\Lkeyword{tripolestyle}:] \Lkeyval{circulator} | \Lkeyval{isolator} @@ -2215,14 +2288,6 @@ argument. \end{LTXexample} -\begin{LTXexample}[width=3.5cm,rframe={}] -\begin{pspicture}(3,2) - \pnodes(0,1){A}(2,1){B}(1,0){C} - \splitter[inputarrow,labeloffset=1cm, - tripolestyle=bottom](A)(B)(C){Splitter}{} -\end{pspicture} -\end{LTXexample} - \subsection{New quadripole macro-components} @@ -2273,6 +2338,7 @@ argument. \subsection{Examples} +\subsubsection{Radar emission diagram} \begin{pspicture}[labelangle=:U](8,5) \pnodes(1, 3){A}(1.8, 3){B}(3.5, 3){C}(5, 3){D}(7, 3){E}(7.1, 3){EE}(6, 2){F}(5, 1){G}% (7, 1){H}(7.1, 1){HH}(4, 1){I}(3.5, 1){J} @@ -2285,7 +2351,7 @@ argument. \psline[arrowinset=0]{->}(E)(EE) \mixer[tripolestyle=top,inputarrow=true, tripoleinput=right, labeloffset=0.9,fillstyle=solid,fillcolor=red](G)(H)(F){}{} \wire(H)(HH) - \rput(7.8, 1.25){13 dBm} + \rput(7.8, 1.25){\SI{13}{\dbm}} \rput(7.8, 0.75){\SI{900}{\mega\hertz}} \attenuator[dipoleinput=left,labeloffset=-0.9,linecolor=blue](I)(G){\textcolor{blue}{\SI{-10}{\decibel}}} \psline[arrowinset=0]{->}(I)(J) @@ -2533,7 +2599,8 @@ From Chang, K., RF and Microwave Wireless Systems, Wiley InterScience, page 319, \end{tabular}} \end{pspicture}} -\psscalebox{0.7}{% +\subsubsection{Circuit to harvest Solar Energy} +\resizebox{\linewidth}{!}{% \begin{pspicture}[labelangle=:U, showgrid=false](40,10) \pnodes(1.75, 1){A}(3, 1){B}(3, 3.5){C}(4, 3.5){D}(6, 3.5){E}(6, 4.5){F}(3, 5.5){G}(6, 6){H}% (2.5, 6.5){I}(2.5, 8.5){J}(0.5, 6.5){K}(0, 6.5){K1}(8.5, 6){L}(8.5, 5.5){L1}(8.5, 7){M}% @@ -2625,7 +2692,90 @@ From Chang, K., RF and Microwave Wireless Systems, Wiley InterScience, page 319, \rput(27.7, 5.2){\texttt{7}} \end{pspicture}} +\subsubsection{Amplificator for hearing aid} +\scalebox{0.7}{% +\begin{pspicture}[showgrid=false](-0.5, -0.5)(25,10) + \pnodes(0, 1){A}(-0.1, 2){BC}(0, 2){B}(2, 1.5){C}(6, 1.5){D}(4, 4.5){E}(0, 7.5){F}% + (6, 7.5){G}(0, 5){AA}(0, 6){BB}(2, 5.5){CC}(2.5, 5.5){DD}(2.5, 3.5){EE}(6, 5){H}% + (7.5, 5){HH}(7.5, 3){HK}(9, 4){I}(9, 5){II}(11.5, 4.5){J}(9, 6.5){K}(11.5, 6.5){KL}% + (13, 3.5){L}(15, 4){M}(19, 4){N}(19, 7){O}(13, 7){LL}(13, 8){JJ}(13, 9.5){PP}% + (15, 7.5){MM}(15.5, 7.5){NN}(15.5, 6){OO}(19, 9.5){PQ}(17, 6.5){QQ}(19, 7){RR}% + (20.5, 7){P}(20.5, 5.5){Q}(22, 7){R}(22, 6){S}(24.5, 6.5){T}(22, 8.5){U}(24.5, 8.5){V}% + (25, 6.5){TT} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Première cellule + + \wire[arrows=o-](BC)(B) + \GM[GMinvert=false](B)(A)(C) + \newground[connectingdot=false, groundstyle=triangle](A) + \wire(C)(D) + \wire(BB)(F) + \wire(F)(G) + \wire[arrows=-*](G)(H) + \GM[GMinvert=false](BB)(AA)(CC) + \newground[connectingdot=false, groundstyle=triangle](AA) + \capacitor[arrows=*-, labeloffset=0.9](DD)(EE){$C_{A1}$} + \newground[connectingdot=false, groundstyle=triangle](EE) + + \GM[GMinvert=true](CC)(E)(H) + \newground[connectingdot=false, groundstyle=triangle](E) + + \wire(D)(H) + + \capacitor[arrows=*-, labeloffset=0.9](HH)(HK){$C_{B1}$} + \newground[connectingdot=false, groundstyle=triangle](HK) + + \GM[GMinvert=true](H)(I)(J) + \newground[connectingdot=false, groundstyle=triangle](I) + \wire[arrows=*-](II)(K) + \wire(K)(KL) + \wire[arrows=-*](KL)(J) + % Seconde cellule + + \GM[GMinvert=false](J)(L)(M) + \newground[connectingdot=false, groundstyle=triangle](L) + \GM[GMinvert=false](J)(L)(M) + \newground[connectingdot=false, groundstyle=triangle](L) + \wire(M)(N) + \wire(N)(O) + + \GM[GMinvert=false](JJ)(LL)(MM) + \newground[connectingdot=false, groundstyle=triangle](LL) + \capacitor[arrows=*-, labeloffset=0.9](NN)(OO){$C_{A2}$} + \newground[connectingdot=false, groundstyle=triangle](OO) + \wire(JJ)(PP) + \wire(PP)(PQ) + \wire[arrows=-*](PQ)(RR) + \GM[GMinvert=false](MM)(QQ)(RR) + \newground[connectingdot=false, groundstyle=triangle](QQ) + + \capacitor[arrows=*-, labeloffset=0.9](P)(Q){$C_{B2}$} + \newground[connectingdot=false, groundstyle=triangle](Q) + + \GM[GMinvert=false](RR)(S)(T) + \newground[connectingdot=false, groundstyle=triangle](S) + \wire[arrows=*-](R)(U) + \wire(U)(V) + \wire[arrows=-*](V)(T) + \wire[arrows=-o](T)(TT) + + + + %%%%%%%%%%% + \rput[B](1, 0.1){$Gm_{5,1}$} + \rput[B](1, 4.1){$Gm_{1,1}$} + \rput[B](5, 3.6){$Gm_{2,1}$} + \rput[B](10.25, 3.1){$Gm_{3,1}$} + \rput[B](14, 2.6){$Gm_{5,2}$} + \rput[B](14, 6.1){$Gm_{1,2}$} + \rput[B](18, 5.6){$Gm_{2,2}$} + \rput[B](23.25, 5.1){$Gm_{3,2}$} + + \uput{0.2}[180](BC){\textbf{$V_{IN}$}} + \uput{0.2}[0](TT){\textbf{$V_{OUT}$}} +\end{pspicture} +} \end{landscape} diff --git a/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex b/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex index 8e806774869..faa50eeea99 100644 --- a/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex +++ b/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex @@ -26,8 +26,8 @@ \ifx\PSTXKeyLoaded\endinput \else\input pst-xkey \fi \ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi % -\def\fileversion{2.12a} -\def\filedate{2014/10/09} +\def\fileversion{2.13} +\def\filedate{2015/04/15} \message{`pst-circ' v\fileversion (hv)} % \edef\PstAtCode{\the\catcode`\@} @@ -57,6 +57,9 @@ \def\pst@Ttype@PNP{PNP} \def\pst@Ttype@NPN{NPN} \def\pst@Ttype@FET{FET} +\def\pst@Ttype@NMOS{NMOS} +\def\pst@Ttype@PMOS{PMOS} +% \def\pst@FETchanneltype@P{P}% Ted \def\pst@FETchanneltype@N{N}% Ted \def\pst@Dstyle@twoCircles{twoCircles} @@ -126,6 +129,17 @@ \define@key[psset]{pst-circ}{OAipluslabel}[]{\def\psk@label@OAiplus{#1}} \define@key[psset]{pst-circ}{OAiminuslabel}[]{\def\psk@label@OAiminus{#1}} \define@key[psset]{pst-circ}{OAioutlabel}[]{\def\psk@label@OAiout{#1}} +\define@boolkey[psset]{pst-circ}[Pst@]{GMperfect}[true]{} +\define@boolkey[psset]{pst-circ}[Pst@]{GMpower}[true]{} +\define@boolkey[psset]{pst-circ}[Pst@]{GMinvert}[true]{} +\define@boolkey[psset]{pst-circ}[Pst@]{GMiplus}[true]{} +\define@boolkey[psset]{pst-circ}[Pst@]{GMiminus}[true]{} +\define@boolkey[psset]{pst-circ}[Pst@]{GMiout}[true]{} +\define@key[psset]{pst-circ}{GMipluslabel}[]{\def\psk@label@GMiplus{#1}} +\define@key[psset]{pst-circ}{GMiminuslabel}[]{\def\psk@label@GMiminus{#1}} +\define@key[psset]{pst-circ}{GMioutlabel}[]{\def\psk@label@GMiout{#1}} + +\define@boolkey[psset]{pst-circ}[Pst@]{IGBTinvert}[true]{} \define@boolkey[psset]{pst-circ}[Pst@]{transistorcircle}[true]{} \define@boolkey[psset]{pst-circ}[Pst@]{transistorinvert}[true]{} \define@boolkey[psset]{pst-circ}[Pst@]{transistoribase}[true]{} @@ -836,7 +850,10 @@ parallel=false,parallelarm=1.5,parallelsep=0,parallelnode=false, intersect=false,OAperfect=true,OAinvert=true, OAiplus=false,OAiminus=false,OAiout=false,OAipluslabel={}, - OAiminuslabel={},OAioutlabel={},OApower=false,% + OAiminuslabel={},OAioutlabel={},OApower=false, + GMperfect=false,GMinvert=true, % pv 2014-12-14 + GMiplus=false,GMiminus=false,GMiout=false,GMipluslabel={}, % + GMiminuslabel={},GMioutlabel={},GMpower=false,% % END of ADD transistorcircle=true, transistorinvert=false, % hv 2003-07-23 transistoribase=false,transistoricollector=false,transistoriemitter=false,% transistoribaselabel={},basesep=0pt, @@ -913,7 +930,7 @@ pinte=false,invertpinte=false,pinba=false,invertpinba=false,pinbb=false,invertpinbb=false, pinbc=false,invertpinbc=false,pinbd=false,invertpinbd=false,pinbe=false,invertpinbe=false, dpleft=false,dpright=true,latch=false,unlatch=false,contactclosed=false,polarized=false, - ison=true + ison=true, IGBTinvert=false % pv 2014-12-14 }% hv %\psset[pstricks]{radius=0.5} @@ -1045,6 +1062,83 @@ \end@ClosedObj \ignorespaces% } +% + +% +\def\GM{\pst@object{GM}} +\def\GM@i(#1)(#2)(#3){% + \addbefore@par{dimen=middle}% + \begin@ClosedObj% + \if\psk@label@GMiplus\@empty\else\psset{GMiplus=true}\fi% + \if\psk@label@GMiminus\@empty\else\psset{GMiminus=true}\fi% + \if\psk@label@GMiout\@empty\else\psset{GMiout=true}\fi% + \ifPst@intensity\psset{GMiplus=true,GMiminus=true,GMiout=true}\fi% + \pst@getcoor{#1}\pst@tempa + \pst@getcoor{#2}\pst@tempb + \pst@getcoor{#3}\pst@tempc + \pnode(!% + \pst@tempa /Y1 exch \pst@number\psyunit div def + /X1 exch \pst@number\psxunit div def + \pst@tempb /Y2 exch \pst@number\psyunit div def + /X2 exch \pst@number\psxunit div def + \pst@tempc /Y3 exch \pst@number\psyunit div def + /X3 exch \pst@number\psxunit div def + /XC X1 X2 lt {X3 X2} {X3 X1} ifelse add 2 div def + /YC Y1 Y2 add 2 div def + XC YC){C@} + \rput(C@){\pst@draw@GM} + \ncangle[arrows=-,arm=.5,angleA=0,angleB=180]{#1}{\ifPst@GMinvert Minus@\else Plus@\fi} + \ncput[npos=2]{\pnode{\ifPst@GMinvert Minus@@\else Plus@@\fi}} + \ifPst@GMiplus + \ifPst@GMinvert\else + \ncput[npos=2.5]{% + \psline[linecolor=\psk@I@color, + linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)} + \naput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiplus} + \fi + \fi + \ifPst@GMiminus + \ifPst@GMinvert + \ncput[npos=2.5]{% + \psline[linecolor=\psk@I@color, + linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)} + \naput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiminus} + \fi + \fi + \ncangle[arrows=-,arm=.5,angleA=0,angleB=180]{#2}{\ifPst@GMinvert Plus@\else Minus@\fi} + \ncput[npos=2]{\pnode{\ifPst@GMinvert Plus@@\else Minus@@\fi}} + \ifPst@GMiplus + \ifPst@GMinvert + \ncput[npos=2.5]{% + \psline[linecolor=\psk@I@color, + linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)} + \nbput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiplus} + \fi + \fi + \ifPst@GMiminus + \ifPst@GMinvert\else + \ncput[npos=2.5]{% + \psline[linecolor=\psk@I@color, + linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)} + \nbput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiminus} + \fi + \fi + \ncangle[arrows=-,arm=.5,angleA=180,angleB=0]{#3}{S@} + \ncput[npos=2]{\pnode{S@@}} + \ifPst@GMiout + \ncput[npos=2.5]{% + \psline[linecolor=\psk@I@color, + linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)} + \naput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiout} + \fi + \psline[linestyle=none](#1)(#2)% for the end arrows + \psline[linestyle=none](#1)(#3)% for the end arrows + \end@ClosedObj + \ignorespaces% +} +% % pv 2014-12-14 + + % \def\pst@draw@battery{% \psline[arrows=-,linewidth=1.5\pslinewidth](-0.10,-0.5)(-0.10,0.5) @@ -1068,67 +1162,185 @@ {\transistor@iii(#1)}{\Pst@tempfalse\transistor@ii(#1)}% } % -\def\transistor@ii(#1)#2#3{% with one node, the base and two names for E and C +\def\transistor@ii(#1)#2#3{% with one node, the base \pst@killglue% \ifPst@temp\pnode(#1){TBaseNode}% - \else - \pst@getcoor{#1}\pst@tempA + \else% + \pst@getcoor{#1}\pst@tempA% \pnode(! \pst@tempA /YB exch \pst@number\psyunit div def /XB exch \pst@number\psxunit div def /basesep \Pst@basesep\space \pst@number\psxunit div def XB basesep \Pst@TRot\space cos mul add YB basesep \Pst@TRot\space sin mul add){TBaseNode}% base node - \fi + \fi% +% \psdot(#1)% \rput[c]{\Pst@TRot}(! \pst@tempA /YB exch \pst@number\psyunit div def /XB exch \pst@number\psxunit div def /basesep \Pst@basesep\space \pst@number\psxunit div def XB basesep \Pst@TRot\space cos mul add - YB basesep \Pst@TRot\space sin mul add){% - \ifPst@transistorcircle\pscircle(0.3,0){0.7}\fi - \ifx\psk@Ttype\pst@Ttype@FET - \ifPst@FETmemory% atosch - \psline[arrows=-,linewidth=\psk@I@width](-0.15,0.5)(-0.15,-0.5)% - \fi% - \psline[arrows=-,linewidth=\psk@I@width](TBaseNode|0,0.5)(TBaseNode|0,-0.5)% + YB basesep \Pst@TRot\space sin mul add){%(#1){% + + %%%%%%%%%% + \ifnum180=\Pst@TRot\relax% + \ifPst@transistorcircle\pscircle(0.3,0){0.7}\fi + + \ifx\psk@Ttype\pst@Ttype@NPN\relax% + + \ifPst@transistorinvert\pnode(0.5,-0.5){#2}\else\pnode(0.5,-0.5){#3}\fi% + \ifPst@transistorinvert\pnode(0.5,0.5){#3}\else\pnode(0.5,0.5){#2}\fi% + + \psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)% + + \psline[arrows=-,linewidth=4\pslinewidth](TBaseNode|0,0.4)(TBaseNode|0,-0.4)% + \else% + \ifx\psk@Ttype\pst@Ttype@PNP\relax% + \ifPst@transistorinvert\pnode(0.5,-0.5){#2}\else\pnode(0.5,-0.5){#3}\fi% + \ifPst@transistorinvert\pnode(0.5,0.5){#3}\else\pnode(0.5,0.5){#2}\fi% + + \psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)% + + \else% FET + \ifx\psk@Ttype\pst@Ttype@FET\relax% + + \ifPst@transistorinvert\pnode(0.75,-0.5){#2}\else\pnode(0.75,-0.5){#3}\fi% + \ifPst@transistorinvert\pnode(0.75,0.5){#3}\else\pnode(0.75,0.5){#2}\fi% + % Main drawings + \psline[arrows=-](0.75,0.5)(0.2,0.5) + \psline[linestyle=dashed,dash=8pt 3pt,arrows=-](0.2,0.6)(0.2,-0.6) + \psline[arrows=-](0.2,-0.5)(0.75,-0.5)% + + \ifPst@FETmemory% atosch + \psline[arrows=-,linewidth=\psk@I@width](-0.15,0.5)(-0.15,-0.5)% + \fi% + \psline[arrows=-,linewidth=\psk@I@width](TBaseNode|0,0.5)(TBaseNode|0,-0.5)% + + \ifx\psk@FETchanneltype\pst@FETchanneltype@P\relax% Ted 2007-10-15 + + \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.2,0)(0.75,0)% + \ifPst@transistorinvert + \qdisk(#3){1.5pt}\psline[origin={#3}]{-}(0,-0.5)% + \else + \qdisk(#3){1.5pt}\psline[origin={#3}]{-}(0,0.5)% + \fi + \else% + \psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.2,0)(0.75,0)% + \ifPst@transistorinvert + \qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,0.5)% + \else + \qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,-0.5)% + \fi + \fi% + + + \else % NMOS or PMOS + \ifPst@transistorinvert\pnode(0.75,-0.4){#2}\else\pnode(0.75,-0.4){#3}\fi% + \ifPst@transistorinvert\pnode(0.75,0.4){#3}\else\pnode(0.75,0.4){#2}\fi% + % Main drawings + \psline[arrows=-](0.75,0.4)(0.15,0.4) + \psline[linewidth=3\psk@I@width,arrows=-](0.15,0.6)(0.15,-0.6) + \psline[arrows=-](0.75,-0.4)(0.15,-0.4)% + + + \ifx\psk@Ttype\pst@Ttype@NMOS\relax% + \ifPst@transistorinvert + \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,0.4)(0.75,0.4)% + \else + \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,-0.4)(0.75,-0.4)% + \fi + \psline[arrows=-,linewidth=1.5\psk@I@width](TBaseNode|0,0.4)(TBaseNode|0,-0.4)% + + \else + \ifPst@transistorinvert + \psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,0.4)(0.75,0.4)% + \else + \psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,-0.4)(0.75,-0.4)% + \fi + \psline[arrows=-,linewidth=1.5\psk@I@width](TBaseNode|0,0.4)(TBaseNode|0,-0.4)% + \fi + \fi + \fi % + \fi% \else% - \psline[arrows=-,linewidth=4\pslinewidth](TBaseNode|0,0.4)(TBaseNode|0,-0.4)% - \fi% -% \pst@abs{\Pst@TRot}\pst@cntn - \ifx\psk@Ttype\pst@Ttype@FET\relax% - \ifx\psk@FETchanneltype\pst@FETchanneltype@P - \pnode(0.65,0.5){#2}\pnode(0.65,-0.5){#3}% - \else - \pnode(0.65,0.5){#3}\pnode(0.65,-0.5){#2}% - \fi - \else% - \ifPst@transistorinvert\pnode(0.5,0.5){#2}\pnode(0.5,-0.5){#3}% - \else \pnode(0.5,0.5){#3}\pnode(0.5,-0.5){#2}% - \fi - \fi - \ifx\psk@Ttype\pst@Ttype@FET - \psline[arrows=-](0.65,0.5)(0.15,0.5) - \psline[linestyle=dashed,dash=8pt 3pt,arrows=-](0.15,0.6)(0.15,-0.6) - \psline[arrows=-](0.15,-0.5)(0.65,-0.5)% - \ifx\psk@FETchanneltype\pst@FETchanneltype@P % Ted 2007-10-15 - \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,0)(0.65,0)% - \qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,-0.5)% - \else - \psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,0)(0.65,0)% - \qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,0.5)% - \fi - \else - \psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)% - \ifx\psk@Ttype\pst@Ttype@PNP - \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(#3)(TBaseNode)% - \else% - \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(TBaseNode)(#2)% - \fi - \fi + \ifPst@transistorcircle\pscircle(0.3,0){0.7}\fi + \ifx\psk@Ttype\pst@Ttype@FET\relax% + \ifPst@transistorinvert\pnode(0.65,0.5){#2}\else\pnode(0.65,0.5){#3}\fi% + \ifPst@transistorinvert\pnode(0.65,-0.5){#3}\else\pnode(0.65,-0.5){#2}\fi% + + % FET Main drawings + + \psline[arrows=-](0.65,0.5)(0.15,0.5) % upper line + \psline[linestyle=dashed,dash=8pt 3pt,arrows=-](0.15,0.6)(0.15,-0.6) % gate + \psline[arrows=-](0.15,-0.5)(0.65,-0.5)% lower line + + \ifPst@FETmemory% atosch + \psline[arrows=-,linewidth=\psk@I@width](-0.15,0.5)(-0.15,-0.5)% + \fi% + \psline[arrows=-,linewidth=\psk@I@width](TBaseNode|0,0.5)(TBaseNode|0,-0.5)% + + + \ifx\psk@FETchanneltype\pst@FETchanneltype@P\relax% Ted 2007-10-15 + \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,0)(0.65,0)% + \qdisk(#3){1.5pt}\psline[origin={#3}]{-}(0,-0.5)% + \else% + \psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,0)(0.65,0)% + \qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,0.5)% + \fi% + + + \else + \ifx\psk@Ttype\pst@Ttype@NMOS\relax% + % NMOS Main drawings + \psline[arrows=-](0.65,0.4)(0.15,0.4) % upper line + \psline[linewidth=3\psk@I@width,arrows=-](0.15,0.6)(0.15,-0.6) % gate + \psline[arrows=-](0.65,-0.4)(0.15,-0.4)% lower line + + \psline[arrows=-,linewidth=1.5\psk@I@width](TBaseNode|0,0.4)(TBaseNode|0,-0.4)% + + \ifPst@transistorinvert\pnode(0.65,0.4){#2}\else\pnode(0.65,0.4){#3}\fi% + \ifPst@transistorinvert\pnode(0.65,-0.4){#3}\else\pnode(0.65,-0.4){#2}\fi% + \ifPst@transistorinvert + \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,0.4)(0.65,0.4)% + \else + \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,-0.4)(0.65,-0.4)% + \fi + \else + \ifx\psk@Ttype\pst@Ttype@PMOS\relax% + % PMOS Main drawings + \psline[arrows=-](0.65,0.4)(0.15,0.4) % upper line + \psline[linewidth=3\psk@I@width,arrows=-](0.15,0.6)(0.15,-0.6) % gate + \psline[arrows=-](0.65,-0.4)(0.15,-0.4)% lower line + + \psline[arrows=-,linewidth=1.5\psk@I@width](TBaseNode|0,0.4)(TBaseNode|0,-0.4)% + + \ifPst@transistorinvert\pnode(0.65,0.4){#2}\else\pnode(0.65,0.4){#3}\fi% + \ifPst@transistorinvert\pnode(0.65,-0.4){#3}\else\pnode(0.65,-0.4){#2}\fi% + \ifPst@transistorinvert + \psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,0.4)(0.65,0.4)% + \else + \psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,-0.4)(0.65,-0.4)% + \fi + \else % PNP or NPN + \ifPst@transistorinvert\pnode(0.5,0.5){#2}\pnode(0.5,-0.5){#3}% + \else \pnode(0.5,0.5){#3}\pnode(0.5,-0.5){#2}% + \fi + \ifx\psk@Ttype\pst@Ttype@NPN\relax% % NPN + \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(TBaseNode)(#2)% + \psline[arrows=-,linewidth=4\pslinewidth](TBaseNode|0,0.4)(TBaseNode|0,-0.4)% + \psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)% + \else% % PNP + \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(#3)(TBaseNode)% + \psline[arrows=-,linewidth=4\pslinewidth](TBaseNode|0,0.4)(TBaseNode|0,-0.4)% + \psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)% + \fi + \fi% + \fi% + \fi% + \fi% }% - \ifPst@temp\else\endgroup\fi - \ignorespaces + \ifPst@temp\else\endgroup\fi% + \ignorespaces% } % \def\transistor@iii(#1)(#2)(#3){% with three nodes @@ -5173,7 +5385,7 @@ \pst@number{\psxunit} div /XB ED XA XB add 2 div YA YB add 2 div - ){\pscurve(-0.25,0)(-0.125,0.25)(0,0)(0.125,-0.25)(0.25,0)}}\ignorespaces} + ){\pscurve(-0.25,0)(-0.125,0.25)(0.125,-0.25)(0.25,0)}}\ignorespaces} % \def\pst@draw@vac{{% \pnode(-0.5,0){dipole@1} @@ -5499,7 +5711,54 @@ \end@ClosedObj% \ignorespaces% } +% +%%% POWER IGBT %%% +% +\newCircDipole{igbt} +\def\pst@draw@igbt{% + \pnode(-0.433,0){dipole@1} + \pnode(0.433,0){dipole@2} + %\psline[fillstyle=none, arrowinset=0](-0.433,-0.5)(0.5,0) + \psdot(dipole@1) + \psdot(dipole@2) + \ifPst@IGBTinvert + \psline[arrows=->,linewidth=1.5\pslinewidth, arrowsize =0.2, arrowinset=0](0.433,0)(-0.457,-0.457) + \else + \psline[arrows=->,linewidth=1.5\pslinewidth, arrowsize =0.2, arrowinset=0](0.433,0)(-0.457,0.457) + \fi +} +% +% +%%% TRANSCONDUCTOR %%% +% +\def\pst@draw@GM{% + \ifx\psk@tripole@style\pst@tripole@style@french + \psframe[linewidth=1.5\pslinewidth](-1,-0.75)(1,0.75) + \pspolygon(-0.4,-0.2)(-0.4,0.2)(-0.05,0) + \else +% USUAL Transconductor + \pspolygon[arrows=-, linewidth=1.5\pslinewidth](-0.5, -1)(-0.5, 1)(0.5, 0.6)(0.5, -0.6)(-0.5, -1) +% Supply pins Position + \ifPst@GMpower + \psline{-}(0,0.8)(0,1)%\uput[90](0,1){$+$} + %\psline{-o}(0,0.375)(0,0.75)\uput[90](0,0.75){$+$} + \psline{-}(0,-0.8)(0,-1)%\uput[-90](0,-1){$-$} + %\psline{-o}(0,-0.375)(0,-0.75)\uput[-90](0,-0.75){$-$} + \fi + \fi +% Input Pins Position + \pnode(-0.5,0.5){\ifPst@GMinvert Minus@\else Plus@\fi} + \pnode(-0.5,-0.5){\ifPst@GMinvert Plus@\else Minus@\fi} + \pnode(0.5,0){S@} +% + and - Position + \uput{0.1}[0](-0.5,0.5){\ifPst@GMinvert$-$\else$+$\fi} + %\uput{0.1}[0](-1,0.25){\ifPst@OAinvert$-$\else$+$\fi} + \uput{0.1}[0](-0.5,-0.5){\ifPst@GMinvert$+$\else$-$\fi} + %\uput{0.1}[0](-1,-0.25){\ifPst@OAinvert$+$\else$-$\fi} + \ifPst@GMperfect\rput(0.25,0){$\infty$}\fi% +} +% \catcode`\@=\PstAtCode\relax % -- cgit v1.2.3