diff options
author | Roland Stigge <stigge@antcom.de> | 2016-01-14 22:14:05 +0100 |
---|---|---|
committer | Roland Stigge <stigge@antcom.de> | 2016-01-14 22:14:05 +0100 |
commit | 26219f91052900ef231e07eed20744fbc2b2efda (patch) | |
tree | cb46e8cd0ecbdbc6f70ff523dae980af3a10856f |
Import xcircuit_3.8.78.dfsg.orig-tutorial.tar.gz
[dgit import orig xcircuit_3.8.78.dfsg.orig-tutorial.tar.gz]
-rw-r--r-- | footnote.html | 27 | ||||
-rw-r--r-- | giffiles/aggregate.gif | bin | 0 -> 5614 bytes | |||
-rw-r--r-- | giffiles/alib.gif | bin | 0 -> 3730 bytes | |||
-rw-r--r-- | giffiles/amp1.gif | bin | 0 -> 7855 bytes | |||
-rw-r--r-- | giffiles/amp2.gif | bin | 0 -> 7628 bytes | |||
-rw-r--r-- | giffiles/amp3.gif | bin | 0 -> 8405 bytes | |||
-rw-r--r-- | giffiles/arcs1.gif | bin | 0 -> 4993 bytes | |||
-rw-r--r-- | giffiles/bridge.gif | bin | 0 -> 14903 bytes | |||
-rw-r--r-- | giffiles/bridge1.gif | bin | 0 -> 4576 bytes | |||
-rw-r--r-- | giffiles/bridge2.gif | bin | 0 -> 3455 bytes | |||
-rw-r--r-- | giffiles/bridge3.gif | bin | 0 -> 3988 bytes | |||
-rw-r--r-- | giffiles/bridge4.gif | bin | 0 -> 8685 bytes | |||
-rw-r--r-- | giffiles/bridge5.gif | bin | 0 -> 14752 bytes | |||
-rw-r--r-- | giffiles/bridge6.gif | bin | 0 -> 13742 bytes | |||
-rw-r--r-- | giffiles/dff.gif | bin | 0 -> 14834 bytes | |||
-rw-r--r-- | giffiles/filter1.gif | bin | 0 -> 4844 bytes | |||
-rw-r--r-- | giffiles/filter2.gif | bin | 0 -> 4901 bytes | |||
-rw-r--r-- | giffiles/fullamp.gif | bin | 0 -> 15951 bytes | |||
-rw-r--r-- | giffiles/fullamp_anno.gif | bin | 0 -> 24174 bytes | |||
-rw-r--r-- | giffiles/halfamp.gif | bin | 0 -> 10330 bytes | |||
-rw-r--r-- | giffiles/integrate1.gif | bin | 0 -> 4826 bytes | |||
-rw-r--r-- | giffiles/lib1.gif | bin | 0 -> 1936 bytes | |||
-rw-r--r-- | giffiles/load1.gif | bin | 0 -> 4431 bytes | |||
-rw-r--r-- | giffiles/nand4.gif | bin | 0 -> 3934 bytes | |||
-rw-r--r-- | giffiles/object.gif | bin | 0 -> 2378 bytes | |||
-rw-r--r-- | giffiles/objedit.gif | bin | 0 -> 5098 bytes | |||
-rw-r--r-- | giffiles/overunder.gif | bin | 0 -> 1932 bytes | |||
-rw-r--r-- | giffiles/path1.gif | bin | 0 -> 3039 bytes | |||
-rw-r--r-- | giffiles/path2.gif | bin | 0 -> 4081 bytes | |||
-rw-r--r-- | giffiles/path3.gif | bin | 0 -> 5723 bytes | |||
-rw-r--r-- | giffiles/path4.gif | bin | 0 -> 5181 bytes | |||
-rw-r--r-- | giffiles/path5.gif | bin | 0 -> 3989 bytes | |||
-rw-r--r-- | giffiles/pcbcap.gif | bin | 0 -> 14607 bytes | |||
-rw-r--r-- | giffiles/pcbdiode.gif | bin | 0 -> 3802 bytes | |||
-rw-r--r-- | giffiles/poly1.gif | bin | 0 -> 2023 bytes | |||
-rw-r--r-- | giffiles/poly2.gif | bin | 0 -> 7834 bytes | |||
-rw-r--r-- | giffiles/powersup.gif | bin | 0 -> 5191 bytes | |||
-rw-r--r-- | giffiles/powersup2.gif | bin | 0 -> 6193 bytes | |||
-rw-r--r-- | giffiles/quadparts.gif | bin | 0 -> 3461 bytes | |||
-rw-r--r-- | giffiles/save1.gif | bin | 0 -> 5436 bytes | |||
-rw-r--r-- | giffiles/save2.gif | bin | 0 -> 4492 bytes | |||
-rw-r--r-- | giffiles/select1.gif | bin | 0 -> 1280 bytes | |||
-rw-r--r-- | giffiles/select2.gif | bin | 0 -> 697 bytes | |||
-rw-r--r-- | giffiles/spline1.gif | bin | 0 -> 915 bytes | |||
-rw-r--r-- | giffiles/spline2.gif | bin | 0 -> 1747 bytes | |||
-rw-r--r-- | giffiles/spline3.gif | bin | 0 -> 3888 bytes | |||
-rw-r--r-- | giffiles/symbol_enc.gif | bin | 0 -> 17439 bytes | |||
-rw-r--r-- | giffiles/text.gif | bin | 0 -> 1725 bytes | |||
-rw-r--r-- | giffiles/text2.gif | bin | 0 -> 3437 bytes | |||
-rw-r--r-- | giffiles/tut1.gif | bin | 0 -> 14286 bytes | |||
-rw-r--r-- | giffiles/wramp1.gif | bin | 0 -> 7342 bytes | |||
l--------- | index.html | 1 | ||||
-rw-r--r-- | netfiles/filter.spc | 6 | ||||
-rw-r--r-- | netfiles/integrator.spc | 17 | ||||
-rw-r--r-- | pcb/FlareLED.ps | 720 | ||||
-rwxr-xr-x | pcb/LED | 1794 | ||||
-rwxr-xr-x | pcb/LED.NET | 47 | ||||
-rw-r--r-- | pcb/bridge.pcb | 6 | ||||
-rw-r--r-- | pcb/flare_objects.gif | bin | 0 -> 15281 bytes | |||
-rw-r--r-- | pcb/pic_instance.gif | bin | 0 -> 18944 bytes | |||
-rw-r--r-- | pcb/pic_object.gif | bin | 0 -> 19324 bytes | |||
-rw-r--r-- | pcb/powersup.pcb | 10 | ||||
-rw-r--r-- | psfiles/analoglib1.lps | 238 | ||||
-rw-r--r-- | psfiles/analoglib2.lps | 235 | ||||
-rw-r--r-- | psfiles/bridge.ps | 370 | ||||
-rw-r--r-- | psfiles/buses.ps | 245 | ||||
-rw-r--r-- | psfiles/dff.ps | 228 | ||||
-rw-r--r-- | psfiles/filter.ps | 260 | ||||
-rw-r--r-- | psfiles/integrator.ps | 327 | ||||
-rw-r--r-- | psfiles/powersup.ps | 429 | ||||
-rw-r--r-- | psfiles/test1.ps | 154 | ||||
-rw-r--r-- | tutorial.html | 803 | ||||
-rw-r--r-- | tutorial2.html | 1455 |
73 files changed, 7372 insertions, 0 deletions
diff --git a/footnote.html b/footnote.html new file mode 100644 index 0000000..0e20367 --- /dev/null +++ b/footnote.html @@ -0,0 +1,27 @@ +<HTML> +<TITLE>A footnote about the "mu" character in LaTeX</TITLE> +<BODY BACKGROUND=../giffiles/blpaper.gif> + +It just so happens that although the "mu" +character is encoded into the Adobe fonts, but is not part of any of the +TeX fonts or TeX font encodings of standard Adobe (or TrueType) fonts. +However, it is not strictly true that printing the character is impossible. +I, being the enterprising character that I am, have found a (somewhat +kludgy) workaround: + +<OL> + <LI> First, you must be using one of the PSNFSS packages available under + LaTeX2e, such as "times" (<TT>\usepackage{times}</TT>) + <LI> Next, create the following definition:<BR> + <TT>\def\micro{\special{ps:(µ)show}\nobreak\hspace*{0.55em}}</TT><BR> + (The "mu" character here is the embedded 8-bit character encoding + hex 0xb5, or decimal 181, or octal 0625). + <LI> The <TT>\micro</TT> definition can be used as follows, for example:<BR> + <TT>The correlator measures 700\,{\micro}m $\times$ 1170\,{\micro}m</TT> + <LI> This definition of <TT>\micro</TT> uses a \special{} function defined only + by (as far as I know) <TT>dvips</TT>, so the proper symbol will only show + up after postprocessing the <TT>.dvi</TT> file through <TT>dvips</TT>. +</OL> + +</BODY> +</HTML> diff --git a/giffiles/aggregate.gif b/giffiles/aggregate.gif Binary files differnew file mode 100644 index 0000000..371b19f --- /dev/null +++ b/giffiles/aggregate.gif diff --git a/giffiles/alib.gif b/giffiles/alib.gif Binary files differnew file mode 100644 index 0000000..865dc2d --- /dev/null +++ b/giffiles/alib.gif diff --git a/giffiles/amp1.gif b/giffiles/amp1.gif Binary files differnew file mode 100644 index 0000000..d022255 --- /dev/null +++ b/giffiles/amp1.gif diff --git a/giffiles/amp2.gif b/giffiles/amp2.gif Binary files differnew file mode 100644 index 0000000..5606af0 --- /dev/null +++ b/giffiles/amp2.gif diff --git a/giffiles/amp3.gif b/giffiles/amp3.gif Binary files differnew file mode 100644 index 0000000..c9fcd8f --- /dev/null +++ b/giffiles/amp3.gif diff --git a/giffiles/arcs1.gif b/giffiles/arcs1.gif Binary files differnew file mode 100644 index 0000000..09db235 --- /dev/null +++ b/giffiles/arcs1.gif diff --git a/giffiles/bridge.gif b/giffiles/bridge.gif Binary files differnew file mode 100644 index 0000000..ac18bbc --- /dev/null +++ b/giffiles/bridge.gif diff --git a/giffiles/bridge1.gif b/giffiles/bridge1.gif Binary files differnew file mode 100644 index 0000000..da964e2 --- /dev/null +++ b/giffiles/bridge1.gif diff --git a/giffiles/bridge2.gif b/giffiles/bridge2.gif Binary files differnew file mode 100644 index 0000000..53ea047 --- /dev/null +++ b/giffiles/bridge2.gif diff --git a/giffiles/bridge3.gif b/giffiles/bridge3.gif Binary files differnew file mode 100644 index 0000000..d0bcd2c --- /dev/null +++ b/giffiles/bridge3.gif diff --git a/giffiles/bridge4.gif b/giffiles/bridge4.gif Binary files differnew file mode 100644 index 0000000..3439f07 --- /dev/null +++ b/giffiles/bridge4.gif diff --git a/giffiles/bridge5.gif b/giffiles/bridge5.gif Binary files differnew file mode 100644 index 0000000..668ae54 --- /dev/null +++ b/giffiles/bridge5.gif diff --git a/giffiles/bridge6.gif b/giffiles/bridge6.gif Binary files differnew file mode 100644 index 0000000..3aafac5 --- /dev/null +++ b/giffiles/bridge6.gif diff --git a/giffiles/dff.gif b/giffiles/dff.gif Binary files differnew file mode 100644 index 0000000..6260fba --- /dev/null +++ b/giffiles/dff.gif diff --git a/giffiles/filter1.gif b/giffiles/filter1.gif Binary files differnew file mode 100644 index 0000000..3529749 --- /dev/null +++ b/giffiles/filter1.gif diff --git a/giffiles/filter2.gif b/giffiles/filter2.gif Binary files differnew file mode 100644 index 0000000..57d2733 --- /dev/null +++ b/giffiles/filter2.gif diff --git a/giffiles/fullamp.gif b/giffiles/fullamp.gif Binary files differnew file mode 100644 index 0000000..a2efe6b --- /dev/null +++ b/giffiles/fullamp.gif diff --git a/giffiles/fullamp_anno.gif b/giffiles/fullamp_anno.gif Binary files differnew file mode 100644 index 0000000..db0f63a --- /dev/null +++ b/giffiles/fullamp_anno.gif diff --git a/giffiles/halfamp.gif b/giffiles/halfamp.gif Binary files differnew file mode 100644 index 0000000..63ca65e --- /dev/null +++ b/giffiles/halfamp.gif diff --git a/giffiles/integrate1.gif b/giffiles/integrate1.gif Binary files differnew file mode 100644 index 0000000..f77b941 --- /dev/null +++ b/giffiles/integrate1.gif diff --git a/giffiles/lib1.gif b/giffiles/lib1.gif Binary files differnew file mode 100644 index 0000000..06f4483 --- /dev/null +++ b/giffiles/lib1.gif diff --git a/giffiles/load1.gif b/giffiles/load1.gif Binary files differnew file mode 100644 index 0000000..76fc7eb --- /dev/null +++ b/giffiles/load1.gif diff --git a/giffiles/nand4.gif b/giffiles/nand4.gif Binary files differnew file mode 100644 index 0000000..56292a5 --- /dev/null +++ b/giffiles/nand4.gif diff --git a/giffiles/object.gif b/giffiles/object.gif Binary files differnew file mode 100644 index 0000000..f783581 --- /dev/null +++ b/giffiles/object.gif diff --git a/giffiles/objedit.gif b/giffiles/objedit.gif Binary files differnew file mode 100644 index 0000000..3318d19 --- /dev/null +++ b/giffiles/objedit.gif diff --git a/giffiles/overunder.gif b/giffiles/overunder.gif Binary files differnew file mode 100644 index 0000000..f1fce9b --- /dev/null +++ b/giffiles/overunder.gif diff --git a/giffiles/path1.gif b/giffiles/path1.gif Binary files differnew file mode 100644 index 0000000..11c6a1e --- /dev/null +++ b/giffiles/path1.gif diff --git a/giffiles/path2.gif b/giffiles/path2.gif Binary files differnew file mode 100644 index 0000000..384c37f --- /dev/null +++ b/giffiles/path2.gif diff --git a/giffiles/path3.gif b/giffiles/path3.gif Binary files differnew file mode 100644 index 0000000..3dc0213 --- /dev/null +++ b/giffiles/path3.gif diff --git a/giffiles/path4.gif b/giffiles/path4.gif Binary files differnew file mode 100644 index 0000000..34671ba --- /dev/null +++ b/giffiles/path4.gif diff --git a/giffiles/path5.gif b/giffiles/path5.gif Binary files differnew file mode 100644 index 0000000..326a015 --- /dev/null +++ b/giffiles/path5.gif diff --git a/giffiles/pcbcap.gif b/giffiles/pcbcap.gif Binary files differnew file mode 100644 index 0000000..69bbd8c --- /dev/null +++ b/giffiles/pcbcap.gif diff --git a/giffiles/pcbdiode.gif b/giffiles/pcbdiode.gif Binary files differnew file mode 100644 index 0000000..0906f88 --- /dev/null +++ b/giffiles/pcbdiode.gif diff --git a/giffiles/poly1.gif b/giffiles/poly1.gif Binary files differnew file mode 100644 index 0000000..360f400 --- /dev/null +++ b/giffiles/poly1.gif diff --git a/giffiles/poly2.gif b/giffiles/poly2.gif Binary files differnew file mode 100644 index 0000000..b58ea3c --- /dev/null +++ b/giffiles/poly2.gif diff --git a/giffiles/powersup.gif b/giffiles/powersup.gif Binary files differnew file mode 100644 index 0000000..68a9576 --- /dev/null +++ b/giffiles/powersup.gif diff --git a/giffiles/powersup2.gif b/giffiles/powersup2.gif Binary files differnew file mode 100644 index 0000000..d00e6eb --- /dev/null +++ b/giffiles/powersup2.gif diff --git a/giffiles/quadparts.gif b/giffiles/quadparts.gif Binary files differnew file mode 100644 index 0000000..0be0e22 --- /dev/null +++ b/giffiles/quadparts.gif diff --git a/giffiles/save1.gif b/giffiles/save1.gif Binary files differnew file mode 100644 index 0000000..c98500e --- /dev/null +++ b/giffiles/save1.gif diff --git a/giffiles/save2.gif b/giffiles/save2.gif Binary files differnew file mode 100644 index 0000000..d947ad6 --- /dev/null +++ b/giffiles/save2.gif diff --git a/giffiles/select1.gif b/giffiles/select1.gif Binary files differnew file mode 100644 index 0000000..dfc319e --- /dev/null +++ b/giffiles/select1.gif diff --git a/giffiles/select2.gif b/giffiles/select2.gif Binary files differnew file mode 100644 index 0000000..26d255d --- /dev/null +++ b/giffiles/select2.gif diff --git a/giffiles/spline1.gif b/giffiles/spline1.gif Binary files differnew file mode 100644 index 0000000..0f6368a --- /dev/null +++ b/giffiles/spline1.gif diff --git a/giffiles/spline2.gif b/giffiles/spline2.gif Binary files differnew file mode 100644 index 0000000..25c1264 --- /dev/null +++ b/giffiles/spline2.gif diff --git a/giffiles/spline3.gif b/giffiles/spline3.gif Binary files differnew file mode 100644 index 0000000..01df61f --- /dev/null +++ b/giffiles/spline3.gif diff --git a/giffiles/symbol_enc.gif b/giffiles/symbol_enc.gif Binary files differnew file mode 100644 index 0000000..934bfdb --- /dev/null +++ b/giffiles/symbol_enc.gif diff --git a/giffiles/text.gif b/giffiles/text.gif Binary files differnew file mode 100644 index 0000000..0939c71 --- /dev/null +++ b/giffiles/text.gif diff --git a/giffiles/text2.gif b/giffiles/text2.gif Binary files differnew file mode 100644 index 0000000..e988e64 --- /dev/null +++ b/giffiles/text2.gif diff --git a/giffiles/tut1.gif b/giffiles/tut1.gif Binary files differnew file mode 100644 index 0000000..d664463 --- /dev/null +++ b/giffiles/tut1.gif diff --git a/giffiles/wramp1.gif b/giffiles/wramp1.gif Binary files differnew file mode 100644 index 0000000..7e57adb --- /dev/null +++ b/giffiles/wramp1.gif diff --git a/index.html b/index.html new file mode 120000 index 0000000..1808037 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +tutorial.html
\ No newline at end of file diff --git a/netfiles/filter.spc b/netfiles/filter.spc new file mode 100644 index 0000000..394b0b0 --- /dev/null +++ b/netfiles/filter.spc @@ -0,0 +1,6 @@ +Spice circuit filter + +V1 GND Vin SIN(0 5 5k) +C2 Vout GND 1.0u +R3 Vin Vout 100k +.end diff --git a/netfiles/integrator.spc b/netfiles/integrator.spc new file mode 100644 index 0000000..2448672 --- /dev/null +++ b/netfiles/integrator.spc @@ -0,0 +1,17 @@ +Spice circuit integrator + +.subckt wramp bias out in.p in.m +M1 net.1 net.1 GND GND nmos +M2 out net.1 GND GND nmos +M3 net.1 net.2 Vdd Vdd pmos +M4 out net.3 Vdd Vdd pmos +M5 net.3 net.3 Vdd Vdd pmos +M6 net.2 net.2 Vdd Vdd pmos +M7 net.4 bias GND GND nmos +M8 net.3 in.p net.4 GND nmos +M9 net.2 in.m net.4 GND nmos +.ends + +C10 Output GND 1.0P +X1 Bias Output Input Output wramp +.end diff --git a/pcb/FlareLED.ps b/pcb/FlareLED.ps new file mode 100644 index 0000000..d807858 --- /dev/null +++ b/pcb/FlareLED.ps @@ -0,0 +1,720 @@ +%!PS-Adobe-3.0 +%%Title: examples/FlareLED +%%Creator: Xcircuit v2.3 +%%CreationDate: Mon Jul 2 14:17:57 2001 +%%Pages: 1 +%%BoundingBox: -319 -124 931 916 +%%DocumentNeededResources: font Helvetica font Helvetica-Bold font Times-Roman +%%+ font Times-RomanISO font Symbol +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 2.3 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu) +% The Johns Hopkins University +% +%%BeginResource: procset XCIRCproc 2.3 1 +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } def +/ol { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale /rotval exch def /just exch def + just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform + exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform + exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse + {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt + {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } + if /showflag 0 def /fspc pspc def /Bline 0 def /Tabs 0 array def + /fscale 1.0 def /kY 0 def + gsave dup 1 add copy 0 exch {exch dup type /stringtype eq {true + charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and 0 gt {exch pop + neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt {exch pop + neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} ifelse + /showflag 1 def rotval rotate Kn currentpoint translate + /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def + {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def +/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def } + { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array + astore def gsave sce translate 0 0 moveto dup 0 lt + {neg 1 sub -1 1 scale} if rotate dup scale } bind def +/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch + 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def +/beginparm { -1 1 {makeparm exch def} for + dup type /arraytype eq { aload length -1 1 {makeparm exch def} + for } if begingate } bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb} bind def + +/hlevel 0 def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def + style 1 and 0 gt not {closepath} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if + style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt + {gar exch get ppaint} { pop eofill } ifelse grestore } if + style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } def + +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def +/insertion {/PSobj save def /showpage {} def bop translate} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog + +/Times-Roman findfont dup length dict begin +{1 index /FID ne {def} {pop pop} ifelse} forall +/Encoding ISOLatin1Encoding def currentdict end +/Times-RomanISO exch definefont pop + +% XCircuit output starts here. + +/PIC16C54 { +% 0 0 480 736 bbox +(?) 1 beginparm +0 1.00 0 0 0 736 480 736 480 0 4 polygon +(PIC16C54A) {/Helvetica-Bold cf} 2 21 0 1.00 240 320 label +(Vdd) {/Helvetica cf} 2 23 0 1.00 464 368 label +(RA2) {/Helvetica cf} 2 20 0 1.00 16 688 label +(RA3) {/Helvetica cf} 2 20 0 1.00 16 624 label +(RTCC) {/Helvetica cf} 2 20 0 1.00 16 560 label +(MCLR) {ol} {/Helvetica cf} 3 20 0 1.00 16 496 label +(Vss) {/Helvetica cf} 2 20 0 1.00 16 368 label +(RB0) {/Helvetica cf} 2 20 0 1.00 16 240 label +(RB1) {/Helvetica cf} 2 20 0 1.00 16 176 label +(RB2) {/Helvetica cf} 2 20 0 1.00 16 112 label +(RB3) {/Helvetica cf} 2 20 0 1.00 16 48 label +(RB4) {/Helvetica cf} 2 23 0 1.00 464 48 label +(RB5) {/Helvetica cf} 2 23 0 1.00 464 112 label +(RB6) {/Helvetica cf} 2 23 0 1.00 464 176 label +(RB7) {/Helvetica cf} 2 23 0 1.00 464 240 label +(OSC2/CLKOUT) {/Helvetica cf} 2 23 0 1.00 464 496 label +(OSC1/CLKIN) {/Helvetica cf} 2 23 0 1.00 464 560 label +(RA0) {/Helvetica cf} 2 23 0 1.00 464 624 label +(RA1) {/Helvetica cf} 2 23 0 1.00 464 688 label +sce +mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 224 256 infolabel +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 23 0 1.00 0 688 pinlabel +(2) {/Helvetica cf} 2 23 0 1.00 0 624 pinlabel +(3) {/Helvetica cf} 2 23 0 1.00 0 560 pinlabel +(4) {/Helvetica cf} 2 23 0 1.00 0 496 pinlabel +(5) {/Helvetica cf} 2 23 0 1.00 0 368 pinlabel +(6) {/Helvetica cf} 2 23 0 1.00 0 240 pinlabel +(7) {/Helvetica cf} 2 23 0 1.00 0 176 pinlabel +(8) {/Helvetica cf} 2 23 0 1.00 0 112 pinlabel +(9) {/Helvetica cf} 2 23 0 1.00 0 48 pinlabel +(10) {/Helvetica cf} 2 20 0 1.00 480 48 pinlabel +(11) {/Helvetica cf} 2 20 0 1.00 480 112 pinlabel +(12) {/Helvetica cf} 2 20 0 1.00 480 176 pinlabel +(13) {/Helvetica cf} 2 20 0 1.00 480 240 pinlabel +(14) {/Helvetica cf} 2 20 0 1.00 480 368 pinlabel +(15) {/Helvetica cf} 2 20 0 1.00 480 496 pinlabel +(16) {/Helvetica cf} 2 20 0 1.00 480 560 pinlabel +(17) {/Helvetica cf} 2 20 0 1.00 480 624 pinlabel +(18) {/Helvetica cf} 2 20 0 1.00 480 688 pinlabel +endgate +} def + +/LTC490 { +% 0 0 416 384 bbox +(?) 1 beginparm +0 1.00 0 0 0 384 416 384 416 0 4 polygon +(RS422) {/Helvetica cf} 2 21 0 1.00 192 176 label +(Transciever) {/Helvetica cf} 2 21 0 1.00 208 128 label +(LTC490) {/Helvetica-Bold cf} 2 21 0 1.00 192 256 label +(Vcc) {/Helvetica cf} 2 20 0 1.00 16 336 label +(R) {/Helvetica cf} 2 20 0 1.00 16 240 label +(D) {/Helvetica cf} 2 20 0 1.00 16 144 label +(GND) {/Helvetica cf} 2 20 0 1.00 16 48 label +(Y) {/Helvetica cf} 2 23 0 1.00 400 48 label +(Z) {/Helvetica cf} 2 23 0 1.00 400 144 label +(B) {/Helvetica cf} 2 23 0 1.00 400 240 label +(A) {/Helvetica cf} 2 23 0 1.00 400 336 label +sce +mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 208 80 infolabel +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 23 0 1.00 0 336 pinlabel +(2) {/Helvetica cf} 2 23 0 1.00 0 240 pinlabel +(3) {/Helvetica cf} 2 23 0 1.00 0 144 pinlabel +(4) {/Helvetica cf} 2 23 0 1.00 0 48 pinlabel +(5) {/Helvetica cf} 2 20 0 1.00 416 48 pinlabel +(6) {/Helvetica cf} 2 20 0 1.00 416 144 pinlabel +(7) {/Helvetica cf} 2 20 0 1.00 416 240 pinlabel +(8) {/Helvetica cf} 2 20 0 1.00 416 336 pinlabel +endgate +} def + +/terminal_block { +% -160 -80 320 173 bbox +(?) 1 beginparm +0 1.00 -160 -80 -160 48 160 48 160 -80 4 polygon +(ED100/3DS) {/Helvetica cf} 2 21 0 1.00 0 80 label +1 1.00 0 -16 32 0.00 360.00 xcarc +1 1.00 96 -16 32 0.00 360.00 xcarc +1 1.00 -96 -16 32 0.00 360.00 xcarc +sce +mark v1 (pcb:J) {/Helvetica cf} ctmk 21 0 1.00 0 -112 infolabel +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 25 0 1.00 -96 -16 pinlabel +(2) {/Helvetica cf} 2 25 0 1.00 0 -16 pinlabel +(3) {/Helvetica cf} 2 25 0 1.00 96 -16 pinlabel +endgate +} def + +/LTC1152 { +% -192 -192 384 384 bbox +(?) 1 beginparm +0 1.00 -192 -192 -192 192 192 192 192 -192 4 polygon +(LTC1152) {/Helvetica-Bold cf} 2 25 0 1.00 0 48 label +(Op-amp) {/Helvetica cf} 2 29 0 1.00 0 0 label +(SHDN) {/Helvetica cf} 2 20 0 1.00 -176 144 label +(IN) {/Helvetica cf} (-) {/Symbol cf} 4 20 0 1.00 -176 48 label +(IN) {/Helvetica cf} (+) {/Symbol cf} 4 20 0 1.00 -176 -48 label +(-) {/Symbol cf} (V) {/Helvetica cf} 4 20 0 1.00 -176 -144 label +(COMP) {/Helvetica cf} 2 23 0 1.00 176 -144 label +(OUT) {/Helvetica cf} 2 23 0 1.00 176 -48 label +(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 176 48 label +(CP) {/Helvetica cf} 2 23 0 1.00 176 144 label +sce +mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 0 -80 infolabel +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 23 0 1.00 -192 144 pinlabel +(2) {/Helvetica cf} 2 23 0 1.00 -192 48 pinlabel +(3) {/Helvetica cf} 2 23 0 1.00 -192 -48 pinlabel +(5) {/Helvetica cf} 2 20 0 1.00 192 -144 pinlabel +(4) {/Helvetica cf} 2 23 0 1.00 -192 -144 pinlabel +(6) {/Helvetica cf} 2 20 0 1.00 192 -48 pinlabel +(7) {/Helvetica cf} 2 20 0 1.00 192 48 pinlabel +(8) {/Helvetica cf} 2 20 0 1.00 192 144 pinlabel +endgate +} def + +/DSUB9 { +% -160 0 320 186 bbox +(?) 1 beginparm +1 1.00 -128 96 16 0.00 360.00 xcarc +1 1.00 -32 32 16 0.00 360.00 xcarc +1 1.00 0 96 16 0.00 360.00 xcarc +1 1.00 64 96 16 0.00 360.00 xcarc +1 1.00 128 96 16 15.00 375.00 xcarc +1 1.00 96 32 16 0.00 360.00 xcarc +1 1.00 32 32 16 0.00 360.00 xcarc +1 1.00 -64 96 16 0.00 360.00 xcarc +1 1.00 -96 32 16 0.00 360.00 xcarc +sce +mark v1 (pcb:J) {/Helvetica cf} ctmk 21 0 1.00 16 -48 infolabel +128 128 beginpath +128 96 32 450.00 333.43 arcn +124 17 1 polyc +96 32 32 333.43 270.00 arcn +-96 0 1 polyc +-96 32 32 270.00 206.57 arcn +-156 81 1 polyc +-128 +96 32 206.57 90.00 arcn +128 128 1 polyc +1 1.00 endpath +(AMP 745781-4) {/Helvetica cf} 2 25 0 1.00 0 160 label +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 25 0 1.00 -128 96 pinlabel +(3) {/Helvetica cf} 2 25 0 1.00 0 96 pinlabel +(2) {/Helvetica cf} 2 25 0 1.00 -64 96 pinlabel +(4) {/Helvetica cf} 2 25 0 1.00 64 96 pinlabel +(5) {/Helvetica cf} 2 25 0 1.00 128 96 pinlabel +(6) {/Helvetica cf} 2 29 0 1.00 -96 32 pinlabel +(7) {/Helvetica cf} 2 29 0 1.00 -32 32 pinlabel +(8) {/Helvetica cf} 2 29 0 1.00 32 32 pinlabel +(9) {/Helvetica cf} 2 29 0 1.00 96 32 pinlabel +endgate +} def + +/Crystal { +% -144 -144 288 288 bbox +(?) 1 beginparm +0 1.00 -144 -144 -144 144 144 144 144 -144 4 polygon +(CTX169) {/Helvetica-Bold cf} 2 25 0 1.00 0 16 label +(MHz) {hS} (20) {/Helvetica cf} 4 21 0 1.00 0 -32 label +(N/C) {/Helvetica cf} 2 20 0 1.00 -128 96 label +(GND) {/Helvetica cf} 2 20 0 1.00 -128 -96 label +(OUT) {/Helvetica cf} 2 23 0 1.00 128 -96 label +(Vdd) {/Helvetica cf} 2 23 0 1.00 128 96 label +sce +mark v1 (pcb:X) {/Helvetica cf} ctmk 21 0 1.00 0 -176 infolabel +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 23 0 1.00 -144 96 pinlabel +(2) {/Helvetica cf} 2 23 0 1.00 -144 -96 pinlabel +(3) {/Helvetica cf} 2 20 0 1.00 144 -96 pinlabel +(4) {/Helvetica cf} 2 20 0 1.00 144 96 pinlabel +endgate +} def + +/ADC12138 { +% -240 -464 480 928 bbox +(?) 1 beginparm +0 1.00 -240 -464 -240 464 240 464 240 -464 4 polygon +(CH0) {/Helvetica cf} 2 20 0 1.00 -224 416 label +(CH1) {/Helvetica cf} 2 20 0 1.00 -224 352 label +(CH2) {/Helvetica cf} 2 20 0 1.00 -224 288 label +(CH3) {/Helvetica cf} 2 20 0 1.00 -224 224 label +(CH4) {/Helvetica cf} 2 20 0 1.00 -224 160 label +(CH5) {/Helvetica cf} 2 20 0 1.00 -224 96 label +(CH6) {/Helvetica cf} 2 20 0 1.00 -224 32 label +(CH7) {/Helvetica cf} 2 20 0 1.00 -224 -32 label +(COM) {/Helvetica cf} 2 20 0 1.00 -224 -96 label +(MuxOut1) {/Helvetica cf} 2 20 0 1.00 -224 -160 label +(A/Din2) {/Helvetica cf} 2 20 0 1.00 -224 -352 label +(DGND) {/Helvetica cf} 2 20 0 1.00 -224 -416 label +(+) {/Symbol cf} (VA) {/Helvetica cf} 4 23 0 1.00 224 -416 label +(-) {/Symbol cf} (Vref) {/Helvetica cf} 4 23 0 1.00 224 -352 label +(+) {/Symbol cf} (Vref) {/Helvetica cf} 4 23 0 1.00 224 -288 label +(AGND) {/Helvetica cf} 2 23 0 1.00 224 -224 label +(PD) {/Helvetica cf} 2 23 0 1.00 224 -160 label +(EOC) {/Helvetica cf} 2 23 0 1.00 224 -96 label +(CONV) {ol} {/Helvetica cf} 3 23 0 1.00 224 -32 label +(CS) {ol} {/Helvetica cf} 3 23 0 1.00 224 32 label +(DO) {/Helvetica cf} 2 23 0 1.00 224 96 label +(DI) {/Helvetica cf} 2 23 0 1.00 224 160 label +(SCLK) {/Helvetica cf} 2 23 0 1.00 224 224 label +(A/Din1) {/Helvetica cf} 2 20 0 1.00 -224 -224 label +(MuxOut2) {/Helvetica cf} 2 20 0 1.00 -224 -288 label +(CCLK) {/Helvetica cf} 2 23 0 1.00 224 288 label +(DOR) {ol} {/Helvetica cf} 3 23 0 1.00 224 352 label +(+) {/Symbol cf} (VD) {/Helvetica cf} 4 23 0 1.00 224 416 label +(ADC12138) {/Helvetica-Bold cf} 2 21 0 1.00 0 64 label +sce +mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 0 0 infolabel +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 23 0 1.00 -240 416 pinlabel +(2) {/Helvetica cf} 2 23 0 1.00 -240 352 pinlabel +(3) {/Helvetica cf} 2 23 0 1.00 -240 288 pinlabel +(4) {/Helvetica cf} 2 23 0 1.00 -240 224 pinlabel +(5) {/Helvetica cf} 2 23 0 1.00 -240 160 pinlabel +(6) {/Helvetica cf} 2 23 0 1.00 -240 96 pinlabel +(7) {/Helvetica cf} 2 23 0 1.00 -240 32 pinlabel +(8) {/Helvetica cf} 2 23 0 1.00 -240 -32 pinlabel +(9) {/Helvetica cf} 2 23 0 1.00 -240 -96 pinlabel +(10) {/Helvetica cf} 2 23 0 1.00 -240 -160 pinlabel +(11) {/Helvetica cf} 2 23 0 1.00 -240 -224 pinlabel +(12) {/Helvetica cf} 2 23 0 1.00 -240 -288 pinlabel +(13) {/Helvetica cf} 2 23 0 1.00 -240 -352 pinlabel +(14) {/Helvetica cf} 2 23 0 1.00 -240 -416 pinlabel +(15) {/Helvetica cf} 2 20 0 1.00 240 -416 pinlabel +(16) {/Helvetica cf} 2 20 0 1.00 240 -352 pinlabel +(17) {/Helvetica cf} 2 20 0 1.00 240 -288 pinlabel +(18) {/Helvetica cf} 2 20 0 1.00 240 -224 pinlabel +(19) {/Helvetica cf} 2 20 0 1.00 240 -160 pinlabel +(20) {/Helvetica cf} 2 20 0 1.00 240 -96 pinlabel +(21) {/Helvetica cf} 2 20 0 1.00 240 -32 pinlabel +(22) {/Helvetica cf} 2 20 0 1.00 240 32 pinlabel +(23) {/Helvetica cf} 2 20 0 1.00 240 96 pinlabel +(24) {/Helvetica cf} 2 20 0 1.00 240 160 pinlabel +(25) {/Helvetica cf} 2 20 0 1.00 240 224 pinlabel +(26) {/Helvetica cf} 2 20 0 1.00 240 288 pinlabel +(27) {/Helvetica cf} 2 20 0 1.00 240 352 pinlabel +(28) {/Helvetica cf} 2 20 0 1.00 240 416 pinlabel +endgate +} def + +/TK11950 { +% -336 -112 672 224 bbox +(?) 1 beginparm +0 1.00 -336 -112 -336 112 336 112 336 -112 4 polygon +(NOISE BYPASS) {/Helvetica cf} 2 20 0 1.00 -320 64 label +(CONTROL) {/Helvetica cf} 2 20 0 1.00 -320 0 label +(RESET OUT) {/Helvetica cf} 2 20 0 1.00 -320 -64 label +(VO) {/Helvetica cf} 2 23 0 1.00 320 -64 label +(GND) {/Helvetica cf} 2 23 0 1.00 320 0 label +(VIN) {/Helvetica cf} 2 23 0 1.00 320 64 label +(TK11950) {/Helvetica-Bold cf} 2 21 0 1.00 64 16 label +(V) {hS} (5.0) {/Helvetica cf} 4 29 0 1.00 64 -32 label +sce +mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 0 -144 infolabel +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 23 0 1.00 -336 64 pinlabel +(2) {/Helvetica cf} 2 23 0 1.00 -336 0 pinlabel +(3) {/Helvetica cf} 2 23 0 1.00 -336 -64 pinlabel +(4) {/Helvetica cf} 2 20 0 1.00 336 -64 pinlabel +(5) {/Helvetica cf} 2 20 0 1.00 336 0 pinlabel +(6) {/Helvetica cf} 2 20 0 1.00 336 64 pinlabel +endgate +} def + +/Capacitor { +% -32 -64 186 128 bbox +(1.0) (\265) (?) 3 beginparm +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 -32 -6 32 -6 2 polygon +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208 +-160 infolabel +sce +(sim:c %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel +mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label +sce +mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel +endgate +} def + +/LM13700 { +% -256 -256 480 544 bbox +(?) 1 beginparm +0 1.00 -256 -256 -256 288 224 288 224 -256 4 polygon +(BufIn1) {/Helvetica cf} 2 20 0 1.00 -240 -144 label +(BufOut1) {/Helvetica cf} 2 20 0 1.00 -240 -208 label +(BufIn2) {/Helvetica cf} 2 23 0 1.00 208 -144 label +(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 208 -80 label +(Out2) {/Helvetica cf} 2 23 0 1.00 208 -16 label +1.000 0.000 0.000 scb +(7) {/Helvetica cf} 2 23 0 1.00 -256 -144 pinlabel +(8) {/Helvetica cf} 2 23 0 1.00 -256 -208 pinlabel +(10) {/Helvetica cf} 2 20 0 1.00 224 -144 pinlabel +(11) {/Helvetica cf} 2 20 0 1.00 224 -80 pinlabel +(12) {/Helvetica cf} 2 20 0 1.00 224 -16 pinlabel +sce +(LM13700) {/Helvetica-Bold cf} 2 21 0 1.00 -16 16 label +(Iabc1) {/Helvetica cf} 2 20 0 1.00 -240 240 label +(Dbias1) {/Helvetica cf} 2 20 0 1.00 -240 176 label +(1) {/Helvetica cf} (+) {/Symbol cf} (In) {/Helvetica cf} 6 20 0 1.00 -240 112 +label +(Out1) {/Helvetica cf} 2 20 0 1.00 -240 -16 label +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 23 0 1.00 -256 240 pinlabel +(2) {/Helvetica cf} 2 23 0 1.00 -256 176 pinlabel +(3) {/Helvetica cf} 2 23 0 1.00 -256 112 pinlabel +(4) {/Helvetica cf} 2 23 0 1.00 -256 48 pinlabel +(5) {/Helvetica cf} 2 23 0 1.00 -256 -16 pinlabel +(14) {/Helvetica cf} 2 20 0 1.00 224 112 pinlabel +(15) {/Helvetica cf} 2 20 0 1.00 224 176 pinlabel +(16) {/Helvetica cf} 2 20 0 1.00 224 240 pinlabel +sce +(-) {/Symbol cf} (V) {/Helvetica cf} 4 20 0 1.00 -240 -80 label +1.000 0.000 0.000 scb +(6) {/Helvetica cf} 2 23 0 1.00 -256 -80 pinlabel +(13) {/Helvetica cf} 2 20 0 1.00 224 48 pinlabel +sce +(BufOut2) {/Helvetica cf} 2 23 0 1.00 208 -208 label +1.000 0.000 0.000 scb +(9) {/Helvetica cf} 2 20 0 1.00 224 -208 pinlabel +sce +(1) {/Helvetica cf} (-) {/Symbol cf} (In) {/Helvetica cf} 6 20 0 1.00 -240 48 +label +(Iabc2) {/Helvetica cf} 2 23 0 1.00 208 240 label +(Dbias2) {/Helvetica cf} 2 23 0 1.00 208 176 label +(2) {/Helvetica cf} (+) {/Symbol cf} (In) {/Helvetica cf} 6 23 0 1.00 208 112 +label +(2) {/Helvetica cf} (-) {/Symbol cf} (In) {/Helvetica cf} 6 23 0 1.00 208 48 +label +sce +mark v1 (pcb:U) {/Helvetica cf} ctmk 21 0 1.00 -16 -304 infolabel +endgate +} def + +/Resistor { +% -14 -64 157 128 bbox +(1.0) (k) (?) 3 beginparm +1 1.00 0 64 0 36 2 polygon +1 1.00 0 -64 0 -36 2 polygon +1 1.00 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +mark v2 v1 ( %p1 %p2 ) v3 (spice:R) {/Times-Roman cf} ctmk 4 0 1.00 -208 -160 +infolabel +sce +(sim:R %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel +mark (W) {/Symbol cf} v2 {hS} v1 {/Times-Roman cf} ctmk 20 0 1.00 32 0 label +sce +mark v3 (pcb:R) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel +endgate +} def + +/gnd { +% -32 -60 64 68 bbox +% trivial +begingate +1 1.00 0 0 0 -32 2 polygon +1 1.00 -32 -32 32 -32 2 polygon +1 1.00 -18 -46 18 -46 2 polygon +1 1.00 -4 -60 4 -60 2 polygon +1.000 0.000 0.000 scb +(GND) {/Times-Roman cf} 2 1 0 1.00 0 0 pinglobal +endgate +} def + +/dot { +% -10 -10 20 20 bbox +% trivial +begingate +248 1.00 0 0 6 0.00 360.00 xcarc +1.000 0.000 0.000 scb +(x) {/Times-Roman cf} 2 29 0 1.00 0 0 pinlabel +endgate +} def + +/vdd { +% -32 0 64 66 bbox +% trivial +begingate +1 1.00 0 0 0 32 2 polygon +1 1.00 -32 32 32 32 2 polygon +(Vdd) {/Times-Roman cf} 2 17 0 0.90 0 38 label +1.000 0.000 0.000 scb +(Vdd) {/Times-Roman cf} 2 13 0 1.00 0 0 pinglobal +endgate +} def + +%%Page: 1 1 +%%PageOrientation: Portrait +/pgsave save def bop +% 1688 848 offsets +1.0000 inchscale +2.6000 setlinewidth + +1.00 0 664 1648 [(5) ] PIC16C54 +1.00 180 -24 2384 [(6) ] LTC490 +1.00 0 712 -160 [(2) ] terminal_block +1.00 0 1800 944 [(7) ] LTC1152 +1.00 0 -568 1296 [(3) ] DSUB9 +1.00 180 1576 2192 [(1) ] Crystal +1.00 0 904 1088 [(2) ] ADC12138 +1.00 -181 -56 1664 [(4) ] TK11950 +1 1.00 1432 2288 1304 2288 1304 2208 1144 2208 4 polygon +1.00 -1 2072 1168 Capacitor +1.00 0 920 304 [(1) ] LM13700 +1.00 0 1096 -160 [(1) ] terminal_block +1.00 0 1320 1424 Resistor +1.00 0 120 1984 Resistor +1.00 0 328 1456 Resistor +1.00 -1 -696 2064 Resistor +1.00 0 408 1600 Resistor +1.00 0 1384 992 Resistor +1.00 0 1784 2224 Capacitor +1.00 -1 1512 720 Capacitor +1.00 0 2088 832 Capacitor +1.00 0 -280 1456 Capacitor +1.00 0 504 416 Capacitor +1 1.00 664 544 504 544 504 480 3 polygon +1 1.00 504 352 504 224 664 224 3 polygon +1 1.00 -664 1328 -664 224 504 224 3 polygon +1.00 0 -664 224 gnd +1 1.00 664 160 -472 160 -472 1328 3 polygon +1 1.00 -696 2000 -696 1392 2 polygon +1 1.00 -440 2240 -504 2240 -504 1392 3 polygon +1 1.00 -440 2336 -568 2336 -568 1392 3 polygon +1 1.00 280 1664 408 1664 408 2336 -24 2336 4 polygon +1 1.00 -24 2048 344 2048 2 polygon +1 1.00 344 2048 344 1728 280 1728 3 polygon +1 1.00 328 1520 328 1600 280 1600 3 polygon +1 1.00 408 1664 408 1664 2 polygon +1 1.00 328 1520 408 1520 408 1536 3 polygon +1.00 -181 1704 1760 [(3) ] TK11950 +1 1.00 1144 736 1352 736 2 polygon +1.00 0 1352 736 dot +1 1.00 1608 896 1384 896 1384 928 3 polygon +1 1.00 1608 1088 1384 1088 1384 1056 3 polygon +1 1.00 1992 992 2136 992 2136 1232 1384 1232 1384 1088 5 polygon +1.00 0 1384 1088 dot +1 1.00 -440 2144 -696 2144 -696 2128 3 polygon +1 1.00 -440 2048 -536 2048 -536 2000 -696 2000 4 polygon +1 1.00 -632 1392 -632 2144 2 polygon +1.00 0 -632 2144 dot +1.00 0 -696 2000 dot +1 1.00 -440 1392 -440 1888 408 1888 3 polygon +1.00 0 408 1888 dot +1.00 0 408 1664 dot +1.00 0 328 1520 dot +1 1.00 1144 2016 1368 2016 1368 2112 1432 2112 4 polygon +1 1.00 664 2016 568 2016 568 2432 1784 2432 1784 2288 1720 2288 6 polygon +1 1.00 1352 2016 1784 2016 1784 2160 3 polygon +1.00 0 1368 2016 dot +1 1.00 1144 1376 1240 1376 1240 2144 1144 2144 4 polygon +1 1.00 1144 1312 1224 1312 1224 1632 616 1632 616 1888 664 1888 6 polygon +1 1.00 1144 1248 1208 1248 1208 1616 600 1616 600 1824 664 1824 6 polygon +1 1.00 1144 1184 1192 1184 1192 1600 584 1600 584 1760 664 1760 6 polygon +1 1.00 1144 1120 1176 1120 1176 1584 568 1584 568 1696 664 1696 6 polygon +1 1.00 1144 1056 1256 1056 1256 1760 1144 1760 4 polygon +1 1.00 1144 992 1272 992 1272 1696 1144 1696 4 polygon +1 1.00 1144 2272 1208 2272 1208 2416 24 2416 24 2240 -24 2240 6 polygon +1 1.00 -24 2144 40 2144 40 2400 1176 2400 1176 2336 1144 2336 6 polygon +1 1.00 664 736 632 736 632 800 664 800 4 polygon +1 1.00 664 864 632 864 632 928 664 928 4 polygon +1 1.00 664 672 600 672 2 polygon +1.00 0 456 608 gnd +1.00 0 -280 1360 gnd +1 1.00 -280 1392 -440 1392 2 polygon +1.00 0 1368 2112 vdd +1 1.00 1992 800 2040 800 2040 768 2088 768 4 polygon +1.00 0 1512 640 dot +1 1.00 1608 800 1512 800 1512 784 3 polygon +1.00 0 2088 896 dot +1 1.00 1992 1088 2072 1088 2072 1104 3 polygon +1.00 0 2072 1232 dot +1 1.00 664 96 408 96 408 480 664 480 4 polygon +1 1.00 408 96 408 0 1208 0 1208 480 1128 480 5 polygon +1.00 0 408 96 dot +1 1.00 408 480 408 1040 536 1040 536 1440 664 1440 5 polygon +1.00 0 408 480 dot +(Flare Genesis) {/Helvetica cf} 2 16 0 1.50 1896 432 label +(LED Interface) {/Helvetica cf} 2 16 0 1.50 1896 336 label +1 1.00 664 416 632 416 632 16 712 16 712 -176 5 polygon +1 1.00 664 352 616 352 616 -176 3 polygon +1 1.00 1000 -176 1000 -16 1240 -16 1240 352 1144 352 5 polygon +1 1.00 1096 -176 1096 -32 1256 -32 1256 416 1144 416 5 polygon +1 1.00 1192 -176 1192 -288 344 -288 344 1072 504 1072 504 1248 664 1248 +7 polygon +1 1.00 1144 288 1304 288 1304 -320 296 -320 296 1104 472 1104 472 1504 664 +1504 8 polygon +1 1.00 1144 672 1288 672 1288 800 1144 800 4 polygon +1 1.00 1384 1072 1288 1072 1288 800 1192 800 4 polygon +1.00 0 1288 800 dot +1.00 0 1384 1072 dot +1 1.00 1144 864 1240 864 1240 928 1144 928 4 polygon +1 1.00 1560 848 1560 992 1608 992 3 polygon +1 1.00 1560 848 1352 848 1352 640 2136 640 2136 896 1992 896 6 polygon +1 1.00 1512 656 1512 640 2 polygon +1 1.00 1576 800 1576 720 2 polygon +1.00 0 1576 800 dot +1.00 0 1576 720 gnd +1 1.00 -392 1664 -440 1664 2 polygon +1.00 0 -440 1664 dot +1 1.00 -392 1728 -424 1728 -424 1856 472 1856 472 2144 664 2144 6 polygon +1 1.00 120 1920 120 1856 2 polygon +1.00 0 120 2048 dot +1.00 0 120 1856 dot +1 1.00 -392 1600 -408 1600 -408 1520 -280 1520 4 polygon +1 1.00 -280 1360 -280 1392 2 polygon +1.00 0 -280 1392 dot +1 1.00 328 1392 328 1248 -472 1248 3 polygon +1.00 0 -472 1248 dot +1 1.00 1144 224 1320 224 2 polygon +1 1.00 1176 224 1176 32 504 32 504 160 4 polygon +1.00 0 504 160 dot +1.00 0 1176 224 dot +1 1.00 1320 1360 1320 224 2 polygon +1 1.00 2136 1232 2136 1696 2040 1696 3 polygon +1.00 0 2136 1232 dot +1 1.00 2040 1760 2136 1760 2136 1936 1320 1936 1320 1760 1368 1760 6 polygon +1 1.00 1320 1488 1320 1584 2088 1584 2088 1824 2040 1824 5 polygon +1 1.00 664 992 600 992 600 1184 664 1184 4 polygon +1 1.00 664 1120 600 1120 2 polygon +1 1.00 664 1056 600 1056 2 polygon +1.00 0 600 1056 dot +1.00 0 600 1120 dot +1 1.00 600 992 600 608 2 polygon +1.00 0 600 672 dot +1.00 0 600 992 dot +1 1.00 1240 864 1240 608 456 608 3 polygon +1.00 0 600 608 dot +1.00 0 1240 864 dot +(is not complete!) {CR} (this schematic) {/Helvetica cf} 4 16 0 1.00 1864 -80 +label +0 1.00 1592 -176 1592 496 2456 496 2456 -176 4 polygon +1 1.00 1592 400 2456 400 2 polygon +1 1.00 1592 304 2456 304 2 polygon +(1.0) {/Helvetica cf} 2 16 0 1.50 1896 240 label +1 1.00 1592 208 2456 208 2 polygon +(Project:) {/Helvetica cf} 2 16 0 1.50 1624 432 label +(Name:) {/Helvetica cf} 2 16 0 1.50 1624 336 label +(Revision:) {/Helvetica cf} 2 16 0 1.50 1624 240 label +(Design:) {/Helvetica cf} 2 16 0 1.50 1624 144 label +(Date:) {/Helvetica cf} 2 16 0 1.50 1624 48 label +(Notes:) {/Helvetica cf} 2 16 0 1.50 1624 -48 label +1 1.00 1592 112 2456 112 2 polygon +1 1.00 1592 16 2456 16 2 polygon +(Harry Eaton) {/Helvetica cf} 2 16 0 1.50 1912 144 label +0 1.00 1576 -192 1576 512 2472 512 2472 -192 4 polygon +1.00 0 -664 224 dot +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF @@ -0,0 +1,1794 @@ +# release: pcb 1.7.0.ALPHA +# date: Sat Jan 16 20:06:58 1999 +# user: root (root) +# host: localhost + +PCB("" 3500 3300) + +Grid(5 0 0 0) +Cursor(65 880 4) +Flags(0x000001d0) +Groups("4,5,6,c:1,2,3,s:8:7:") +Styles("Signal,10,40,20:Power,25,60,35:Fat,40,60,35:Skinny,8,36,20") + +Symbol(' ' 18) +( +) +Symbol('!' 12) +( + SymbolLine(0 35 0 40 8) + SymbolLine(0 0 0 25 8) +) +Symbol('"' 12) +( + SymbolLine(0 0 0 10 8) + SymbolLine(10 0 10 10 8) +) +Symbol('#' 12) +( + SymbolLine(0 25 20 25 8) + SymbolLine(0 15 20 15 8) + SymbolLine(15 10 15 30 8) + SymbolLine(5 10 5 30 8) +) +Symbol('$' 12) +( + SymbolLine(15 5 20 10 8) + SymbolLine(5 5 15 5 8) + SymbolLine(0 10 5 5 8) + SymbolLine(0 10 0 15 8) + SymbolLine(0 15 5 20 8) + SymbolLine(5 20 15 20 8) + SymbolLine(15 20 20 25 8) + SymbolLine(20 25 20 30 8) + SymbolLine(15 35 20 30 8) + SymbolLine(5 35 15 35 8) + SymbolLine(0 30 5 35 8) + SymbolLine(10 0 10 40 8) +) +Symbol('%' 12) +( + SymbolLine(0 5 0 10 8) + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 10 0 8) + SymbolLine(10 0 15 5 8) + SymbolLine(15 5 15 10 8) + SymbolLine(10 15 15 10 8) + SymbolLine(5 15 10 15 8) + SymbolLine(0 10 5 15 8) + SymbolLine(0 40 40 0 8) + SymbolLine(35 40 40 35 8) + SymbolLine(40 30 40 35 8) + SymbolLine(35 25 40 30 8) + SymbolLine(30 25 35 25 8) + SymbolLine(25 30 30 25 8) + SymbolLine(25 30 25 35 8) + SymbolLine(25 35 30 40 8) + SymbolLine(30 40 35 40 8) +) +Symbol('&' 12) +( + SymbolLine(0 35 5 40 8) + SymbolLine(0 5 0 15 8) + SymbolLine(0 5 5 0 8) + SymbolLine(0 25 15 10 8) + SymbolLine(5 40 10 40 8) + SymbolLine(10 40 20 30 8) + SymbolLine(0 15 25 40 8) + SymbolLine(5 0 10 0 8) + SymbolLine(10 0 15 5 8) + SymbolLine(15 5 15 10 8) + SymbolLine(0 25 0 35 8) +) +Symbol(''' 12) +( + SymbolLine(0 10 10 0 8) +) +Symbol('(' 12) +( + SymbolLine(0 35 5 40 8) + SymbolLine(0 5 5 0 8) + SymbolLine(0 5 0 35 8) +) +Symbol(')' 12) +( + SymbolLine(0 0 5 5 8) + SymbolLine(5 5 5 35 8) + SymbolLine(0 40 5 35 8) +) +Symbol('*' 12) +( + SymbolLine(0 10 20 30 8) + SymbolLine(0 30 20 10 8) + SymbolLine(0 20 20 20 8) + SymbolLine(10 10 10 30 8) +) +Symbol('+' 12) +( + SymbolLine(0 20 20 20 8) + SymbolLine(10 10 10 30 8) +) +Symbol(',' 12) +( + SymbolLine(0 50 10 40 8) +) +Symbol('-' 12) +( + SymbolLine(0 20 20 20 8) +) +Symbol('.' 12) +( + SymbolLine(0 40 5 40 8) +) +Symbol('/' 12) +( + SymbolLine(0 35 30 5 8) +) +Symbol('0' 12) +( + SymbolLine(0 35 5 40 8) + SymbolLine(0 5 0 35 8) + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 15 0 8) + SymbolLine(15 0 20 5 8) + SymbolLine(20 5 20 35 8) + SymbolLine(15 40 20 35 8) + SymbolLine(5 40 15 40 8) + SymbolLine(0 30 20 10 8) +) +Symbol('1' 12) +( + SymbolLine(5 40 15 40 8) + SymbolLine(10 0 10 40 8) + SymbolLine(0 10 10 0 8) +) +Symbol('2' 12) +( + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 20 0 8) + SymbolLine(20 0 25 5 8) + SymbolLine(25 5 25 15 8) + SymbolLine(0 40 25 15 8) + SymbolLine(0 40 25 40 8) +) +Symbol('3' 12) +( + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 15 0 8) + SymbolLine(15 0 20 5 8) + SymbolLine(20 5 20 35 8) + SymbolLine(15 40 20 35 8) + SymbolLine(5 40 15 40 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 20 20 20 8) +) +Symbol('4' 12) +( + SymbolLine(0 20 20 0 8) + SymbolLine(0 20 25 20 8) + SymbolLine(20 0 20 40 8) +) +Symbol('5' 12) +( + SymbolLine(0 0 20 0 8) + SymbolLine(0 0 0 20 8) + SymbolLine(0 20 5 15 8) + SymbolLine(5 15 15 15 8) + SymbolLine(15 15 20 20 8) + SymbolLine(20 20 20 35 8) + SymbolLine(15 40 20 35 8) + SymbolLine(5 40 15 40 8) + SymbolLine(0 35 5 40 8) +) +Symbol('6' 12) +( + SymbolLine(15 0 20 5 8) + SymbolLine(5 0 15 0 8) + SymbolLine(0 5 5 0 8) + SymbolLine(0 5 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(15 20 20 25 8) + SymbolLine(0 20 15 20 8) + SymbolLine(5 40 15 40 8) + SymbolLine(15 40 20 35 8) + SymbolLine(20 25 20 35 8) +) +Symbol('7' 12) +( + SymbolLine(0 40 25 15 8) + SymbolLine(25 0 25 15 8) + SymbolLine(0 0 25 0 8) +) +Symbol('8' 12) +( + SymbolLine(0 35 5 40 8) + SymbolLine(0 25 0 35 8) + SymbolLine(0 25 5 20 8) + SymbolLine(5 20 15 20 8) + SymbolLine(15 20 20 25 8) + SymbolLine(20 25 20 35 8) + SymbolLine(15 40 20 35 8) + SymbolLine(5 40 15 40 8) + SymbolLine(0 15 5 20 8) + SymbolLine(0 5 0 15 8) + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 15 0 8) + SymbolLine(15 0 20 5 8) + SymbolLine(20 5 20 15 8) + SymbolLine(15 20 20 15 8) +) +Symbol('9' 12) +( + SymbolLine(0 40 20 20 8) + SymbolLine(20 5 20 20 8) + SymbolLine(15 0 20 5 8) + SymbolLine(5 0 15 0 8) + SymbolLine(0 5 5 0 8) + SymbolLine(0 5 0 15 8) + SymbolLine(0 15 5 20 8) + SymbolLine(5 20 20 20 8) +) +Symbol(':' 12) +( + SymbolLine(0 15 5 15 8) + SymbolLine(0 25 5 25 8) +) +Symbol(';' 12) +( + SymbolLine(0 40 10 30 8) + SymbolLine(10 15 10 20 8) +) +Symbol('<' 12) +( + SymbolLine(0 20 10 10 8) + SymbolLine(0 20 10 30 8) +) +Symbol('=' 12) +( + SymbolLine(0 15 20 15 8) + SymbolLine(0 25 20 25 8) +) +Symbol('>' 12) +( + SymbolLine(0 10 10 20 8) + SymbolLine(0 30 10 20 8) +) +Symbol('?' 12) +( + SymbolLine(10 20 10 25 8) + SymbolLine(10 35 10 40 8) + SymbolLine(0 5 0 10 8) + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 15 0 8) + SymbolLine(15 0 20 5 8) + SymbolLine(20 5 20 10 8) + SymbolLine(10 20 20 10 8) +) +Symbol('A' 12) +( + SymbolLine(0 5 0 40 8) + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 20 0 8) + SymbolLine(20 0 25 5 8) + SymbolLine(25 5 25 40 8) + SymbolLine(0 20 25 20 8) +) +Symbol('B' 12) +( + SymbolLine(0 40 20 40 8) + SymbolLine(20 40 25 35 8) + SymbolLine(25 25 25 35 8) + SymbolLine(20 20 25 25 8) + SymbolLine(5 20 20 20 8) + SymbolLine(5 0 5 40 8) + SymbolLine(0 0 20 0 8) + SymbolLine(20 0 25 5 8) + SymbolLine(25 5 25 15 8) + SymbolLine(20 20 25 15 8) +) +Symbol('C' 12) +( + SymbolLine(5 40 20 40 8) + SymbolLine(0 35 5 40 8) + SymbolLine(0 5 0 35 8) + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 20 0 8) +) +Symbol('D' 12) +( + SymbolLine(5 0 5 40 8) + SymbolLine(20 0 25 5 8) + SymbolLine(25 5 25 35 8) + SymbolLine(20 40 25 35 8) + SymbolLine(0 40 20 40 8) + SymbolLine(0 0 20 0 8) +) +Symbol('E' 12) +( + SymbolLine(0 20 15 20 8) + SymbolLine(0 40 20 40 8) + SymbolLine(0 0 0 40 8) + SymbolLine(0 0 20 0 8) +) +Symbol('F' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 0 20 0 8) + SymbolLine(0 20 15 20 8) +) +Symbol('G' 12) +( + SymbolLine(20 0 25 5 8) + SymbolLine(5 0 20 0 8) + SymbolLine(0 5 5 0 8) + SymbolLine(0 5 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 40 20 40 8) + SymbolLine(20 40 25 35 8) + SymbolLine(25 25 25 35 8) + SymbolLine(20 20 25 25 8) + SymbolLine(10 20 20 20 8) +) +Symbol('H' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(25 0 25 40 8) + SymbolLine(0 20 25 20 8) +) +Symbol('I' 12) +( + SymbolLine(0 0 10 0 8) + SymbolLine(5 0 5 40 8) + SymbolLine(0 40 10 40 8) +) +Symbol('J' 12) +( + SymbolLine(0 0 15 0 8) + SymbolLine(15 0 15 35 8) + SymbolLine(10 40 15 35 8) + SymbolLine(5 40 10 40 8) + SymbolLine(0 35 5 40 8) +) +Symbol('K' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 20 20 0 8) + SymbolLine(0 20 20 40 8) +) +Symbol('L' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 40 20 40 8) +) +Symbol('M' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 0 15 15 8) + SymbolLine(15 15 30 0 8) + SymbolLine(30 0 30 40 8) +) +Symbol('N' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 0 0 5 8) + SymbolLine(0 5 25 30 8) + SymbolLine(25 0 25 40 8) +) +Symbol('O' 12) +( + SymbolLine(0 5 0 35 8) + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 15 0 8) + SymbolLine(15 0 20 5 8) + SymbolLine(20 5 20 35 8) + SymbolLine(15 40 20 35 8) + SymbolLine(5 40 15 40 8) + SymbolLine(0 35 5 40 8) +) +Symbol('P' 12) +( + SymbolLine(5 0 5 40 8) + SymbolLine(0 0 20 0 8) + SymbolLine(20 0 25 5 8) + SymbolLine(25 5 25 15 8) + SymbolLine(20 20 25 15 8) + SymbolLine(5 20 20 20 8) +) +Symbol('Q' 12) +( + SymbolLine(0 5 0 35 8) + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 15 0 8) + SymbolLine(15 0 20 5 8) + SymbolLine(20 5 20 35 8) + SymbolLine(15 40 20 35 8) + SymbolLine(5 40 15 40 8) + SymbolLine(0 35 5 40 8) + SymbolLine(10 30 20 40 8) +) +Symbol('R' 12) +( + SymbolLine(0 0 20 0 8) + SymbolLine(20 0 25 5 8) + SymbolLine(25 5 25 15 8) + SymbolLine(20 20 25 15 8) + SymbolLine(5 20 20 20 8) + SymbolLine(5 0 5 40 8) + SymbolLine(5 20 25 40 8) +) +Symbol('S' 12) +( + SymbolLine(20 0 25 5 8) + SymbolLine(5 0 20 0 8) + SymbolLine(0 5 5 0 8) + SymbolLine(0 5 0 15 8) + SymbolLine(0 15 5 20 8) + SymbolLine(5 20 20 20 8) + SymbolLine(20 20 25 25 8) + SymbolLine(25 25 25 35 8) + SymbolLine(20 40 25 35 8) + SymbolLine(5 40 20 40 8) + SymbolLine(0 35 5 40 8) +) +Symbol('T' 12) +( + SymbolLine(0 0 20 0 8) + SymbolLine(10 0 10 40 8) +) +Symbol('U' 12) +( + SymbolLine(0 0 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 40 15 40 8) + SymbolLine(15 40 20 35 8) + SymbolLine(20 0 20 35 8) +) +Symbol('V' 12) +( + SymbolLine(0 0 0 30 8) + SymbolLine(0 30 10 40 8) + SymbolLine(10 40 20 30 8) + SymbolLine(20 0 20 30 8) +) +Symbol('W' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 40 15 25 8) + SymbolLine(15 25 30 40 8) + SymbolLine(30 0 30 40 8) +) +Symbol('X' 12) +( + SymbolLine(0 0 0 5 8) + SymbolLine(0 5 25 30 8) + SymbolLine(25 30 25 40 8) + SymbolLine(0 30 0 40 8) + SymbolLine(0 30 25 5 8) + SymbolLine(25 0 25 5 8) +) +Symbol('Y' 12) +( + SymbolLine(0 0 0 5 8) + SymbolLine(0 5 10 15 8) + SymbolLine(10 15 20 5 8) + SymbolLine(20 0 20 5 8) + SymbolLine(10 15 10 40 8) +) +Symbol('Z' 12) +( + SymbolLine(0 0 25 0 8) + SymbolLine(25 0 25 5 8) + SymbolLine(0 30 25 5 8) + SymbolLine(0 30 0 40 8) + SymbolLine(0 40 25 40 8) +) +Symbol('[' 12) +( + SymbolLine(0 0 5 0 8) + SymbolLine(0 0 0 40 8) + SymbolLine(0 40 5 40 8) +) +Symbol('\' 12) +( + SymbolLine(0 5 30 35 8) +) +Symbol(']' 12) +( + SymbolLine(0 0 5 0 8) + SymbolLine(5 0 5 40 8) + SymbolLine(0 40 5 40 8) +) +Symbol('^' 12) +( + SymbolLine(0 5 5 0 8) + SymbolLine(5 0 10 5 8) +) +Symbol('_' 12) +( + SymbolLine(0 40 20 40 8) +) +Symbol('a' 12) +( + SymbolLine(15 20 20 25 8) + SymbolLine(5 20 15 20 8) + SymbolLine(0 25 5 20 8) + SymbolLine(0 25 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(20 20 20 35 8) + SymbolLine(20 35 25 40 8) + SymbolLine(5 40 15 40 8) + SymbolLine(15 40 20 35 8) +) +Symbol('b' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 40 15 40 8) + SymbolLine(15 40 20 35 8) + SymbolLine(20 25 20 35 8) + SymbolLine(15 20 20 25 8) + SymbolLine(5 20 15 20 8) + SymbolLine(0 25 5 20 8) +) +Symbol('c' 12) +( + SymbolLine(5 20 20 20 8) + SymbolLine(0 25 5 20 8) + SymbolLine(0 25 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 40 20 40 8) +) +Symbol('d' 12) +( + SymbolLine(20 0 20 40 8) + SymbolLine(15 40 20 35 8) + SymbolLine(5 40 15 40 8) + SymbolLine(0 35 5 40 8) + SymbolLine(0 25 0 35 8) + SymbolLine(0 25 5 20 8) + SymbolLine(5 20 15 20 8) + SymbolLine(15 20 20 25 8) +) +Symbol('e' 12) +( + SymbolLine(5 40 20 40 8) + SymbolLine(0 35 5 40 8) + SymbolLine(0 25 0 35 8) + SymbolLine(0 25 5 20 8) + SymbolLine(5 20 15 20 8) + SymbolLine(15 20 20 25 8) + SymbolLine(0 30 20 30 8) + SymbolLine(20 30 20 25 8) +) +Symbol('f' 10) +( + SymbolLine(5 5 5 40 8) + SymbolLine(5 5 10 0 8) + SymbolLine(10 0 15 0 8) + SymbolLine(0 20 10 20 8) +) +Symbol('g' 12) +( + SymbolLine(15 20 20 25 8) + SymbolLine(5 20 15 20 8) + SymbolLine(0 25 5 20 8) + SymbolLine(0 25 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 40 15 40 8) + SymbolLine(15 40 20 35 8) + SymbolLine(0 50 5 55 8) + SymbolLine(5 55 15 55 8) + SymbolLine(15 55 20 50 8) + SymbolLine(20 20 20 50 8) +) +Symbol('h' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 25 5 20 8) + SymbolLine(5 20 15 20 8) + SymbolLine(15 20 20 25 8) + SymbolLine(20 25 20 40 8) +) +Symbol('i' 10) +( + SymbolLine(0 10 0 15 8) + SymbolLine(0 25 0 40 8) +) +Symbol('j' 10) +( + SymbolLine(5 10 5 15 8) + SymbolLine(5 25 5 50 8) + SymbolLine(0 55 5 50 8) +) +Symbol('k' 12) +( + SymbolLine(0 0 0 40 8) + SymbolLine(0 25 15 40 8) + SymbolLine(0 25 10 15 8) +) +Symbol('l' 10) +( + SymbolLine(0 0 0 35 8) + SymbolLine(0 35 5 40 8) +) +Symbol('m' 12) +( + SymbolLine(5 25 5 40 8) + SymbolLine(5 25 10 20 8) + SymbolLine(10 20 15 20 8) + SymbolLine(15 20 20 25 8) + SymbolLine(20 25 20 40 8) + SymbolLine(20 25 25 20 8) + SymbolLine(25 20 30 20 8) + SymbolLine(30 20 35 25 8) + SymbolLine(35 25 35 40 8) + SymbolLine(0 20 5 25 8) +) +Symbol('n' 12) +( + SymbolLine(5 25 5 40 8) + SymbolLine(5 25 10 20 8) + SymbolLine(10 20 15 20 8) + SymbolLine(15 20 20 25 8) + SymbolLine(20 25 20 40 8) + SymbolLine(0 20 5 25 8) +) +Symbol('o' 12) +( + SymbolLine(0 25 0 35 8) + SymbolLine(0 25 5 20 8) + SymbolLine(5 20 15 20 8) + SymbolLine(15 20 20 25 8) + SymbolLine(20 25 20 35 8) + SymbolLine(15 40 20 35 8) + SymbolLine(5 40 15 40 8) + SymbolLine(0 35 5 40 8) +) +Symbol('p' 12) +( + SymbolLine(5 25 5 55 8) + SymbolLine(0 20 5 25 8) + SymbolLine(5 25 10 20 8) + SymbolLine(10 20 20 20 8) + SymbolLine(20 20 25 25 8) + SymbolLine(25 25 25 35 8) + SymbolLine(20 40 25 35 8) + SymbolLine(10 40 20 40 8) + SymbolLine(5 35 10 40 8) +) +Symbol('q' 12) +( + SymbolLine(20 25 20 55 8) + SymbolLine(15 20 20 25 8) + SymbolLine(5 20 15 20 8) + SymbolLine(0 25 5 20 8) + SymbolLine(0 25 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 40 15 40 8) + SymbolLine(15 40 20 35 8) +) +Symbol('r' 12) +( + SymbolLine(5 25 5 40 8) + SymbolLine(5 25 10 20 8) + SymbolLine(10 20 20 20 8) + SymbolLine(0 20 5 25 8) +) +Symbol('s' 12) +( + SymbolLine(5 40 20 40 8) + SymbolLine(20 40 25 35 8) + SymbolLine(20 30 25 35 8) + SymbolLine(5 30 20 30 8) + SymbolLine(0 25 5 30 8) + SymbolLine(0 25 5 20 8) + SymbolLine(5 20 20 20 8) + SymbolLine(20 20 25 25 8) + SymbolLine(0 35 5 40 8) +) +Symbol('t' 10) +( + SymbolLine(5 0 5 35 8) + SymbolLine(5 35 10 40 8) + SymbolLine(0 15 10 15 8) +) +Symbol('u' 12) +( + SymbolLine(0 20 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 40 15 40 8) + SymbolLine(15 40 20 35 8) + SymbolLine(20 20 20 35 8) +) +Symbol('v' 12) +( + SymbolLine(0 20 0 30 8) + SymbolLine(0 30 10 40 8) + SymbolLine(10 40 20 30 8) + SymbolLine(20 20 20 30 8) +) +Symbol('w' 12) +( + SymbolLine(0 20 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(5 40 10 40 8) + SymbolLine(10 40 15 35 8) + SymbolLine(15 20 15 35 8) + SymbolLine(15 35 20 40 8) + SymbolLine(20 40 25 40 8) + SymbolLine(25 40 30 35 8) + SymbolLine(30 20 30 35 8) +) +Symbol('x' 12) +( + SymbolLine(0 20 20 40 8) + SymbolLine(0 40 20 20 8) +) +Symbol('y' 12) +( + SymbolLine(0 20 0 35 8) + SymbolLine(0 35 5 40 8) + SymbolLine(20 20 20 50 8) + SymbolLine(15 55 20 50 8) + SymbolLine(5 55 15 55 8) + SymbolLine(0 50 5 55 8) + SymbolLine(5 40 15 40 8) + SymbolLine(15 40 20 35 8) +) +Symbol('z' 12) +( + SymbolLine(0 20 20 20 8) + SymbolLine(0 40 20 20 8) + SymbolLine(0 40 20 40 8) +) +Symbol('{' 12) +( + SymbolLine(5 5 10 0 8) + SymbolLine(5 5 5 15 8) + SymbolLine(0 20 5 15 8) + SymbolLine(0 20 5 25 8) + SymbolLine(5 25 5 35 8) + SymbolLine(5 35 10 40 8) +) +Symbol('|' 12) +( + SymbolLine(0 0 0 40 8) +) +Symbol('}' 12) +( + SymbolLine(0 0 5 5 8) + SymbolLine(5 5 5 15 8) + SymbolLine(5 15 10 20 8) + SymbolLine(5 25 10 20 8) + SymbolLine(5 25 5 35 8) + SymbolLine(0 40 5 35 8) +) +Symbol('~' 12) +( + SymbolLine(0 25 5 20 8) + SymbolLine(5 20 10 20 8) + SymbolLine(10 20 15 25 8) + SymbolLine(15 25 20 25 8) + SymbolLine(20 25 25 20 8) +) +Via(2075 1455 50 30 28 "" 0x12120002) +Via(1790 1570 50 30 28 "" 0x12120002) +Via(1450 1575 50 30 28 "" 0x12120002) +Via(1070 1265 50 30 28 "" 0x00000002) +Via(1520 2495 50 30 28 "" 0x00000002) +Via(465 3015 110 30 110 "" 0x0000000a) +Via(1605 2660 50 30 28 "" 0x00000002) +Via(1985 1300 50 30 28 "" 0x00000002) +Via(465 605 110 30 110 "" 0x0000000a) +Via(2965 595 110 30 110 "" 0x0000000a) +Via(2965 3005 110 30 110 "" 0x0000000a) +Via(1185 2660 50 30 28 "" 0x00000002) + +Element(0x00000000 "3 TERM BLOCK" "J2" "DK ED1602-ND" 1695 2925 -590 76 0 150 0x00000000) +( + Pin(0 0 110 30 140 48 "1" "1" 0x00000001) + Pin(-194 0 110 30 140 48 "2" "2" 0x00000001) + Pin(-388 0 110 30 140 48 "3" "3" 0x00000001) + ElementLine (-388 160 -388 140 10) + ElementLine (-194 160 -194 140 10) + ElementLine (0 160 0 140 10) + ElementLine (81 -170 101 -170 10) + ElementLine (81 -190 81 -170 10) + ElementLine (101 -190 81 -190 10) + ElementLine (-509 -170 -489 -170 10) + ElementLine (-509 -190 -509 -170 10) + ElementLine (-489 -190 -509 -190 10) + ElementLine (101 -200 101 160 10) + ElementLine (-489 -200 101 -200 10) + ElementLine (-489 160 -489 -200 10) + ElementLine (101 160 -489 160 10) + ) + +Element(0x00000000 "RS422 Transciever" "U6" "LTC490" 1005 895 -505 -55 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "Vcc" "1" 0x00000101) + Pin(0 -100 60 30 90 28 "R" "2" 0x00000001) + Pin(0 -200 60 30 90 28 "D" "3" 0x00000001) + Pin(0 -300 60 30 90 28 "GND" "4" 0x00000001) + Pin(-300 -300 60 30 90 28 "Y" "5" 0x00000001) + Pin(-300 -200 60 30 90 28 "Z" "6" 0x00000001) + Pin(-300 -100 60 30 90 28 "B" "7" 0x00000001) + Pin(-300 0 60 30 90 28 "A" "8" 0x00000001) + ElementLine (50 50 50 -350 10) + ElementLine (50 -350 -350 -350 10) + ElementLine (-350 -350 -350 50 10) + ElementLine (50 50 -100 50 10) + ElementLine (-200 50 -350 50 10) + ElementArc (-150 50 50 50 180 180 10) + ) + +Element(0x00000000 "PIC16C54A" "U5" "PIC16C54" 1195 860 465 80 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "RA2" "1" 0x00000101) + Pin(100 0 60 30 90 28 "RA3" "2" 0x00000001) + Pin(200 0 60 30 90 28 "RTCC" "3" 0x00000001) + Pin(300 0 60 30 90 28 "/MCLR" "4" 0x00000001) + Pin(400 0 60 30 90 28 "Vss" "5" 0x00000001) + Pin(500 0 60 30 90 28 "RB0" "6" 0x00000001) + Pin(600 0 60 30 90 28 "RB1" "7" 0x00000001) + Pin(700 0 60 30 90 28 "RB2" "8" 0x00000001) + Pin(800 0 60 30 90 28 "RB3" "9" 0x00000001) + Pin(800 -300 60 30 90 28 "RB4" "10" 0x00000001) + Pin(700 -300 60 30 90 28 "RB5" "11" 0x00000001) + Pin(600 -300 60 30 90 28 "RB6" "12" 0x00000001) + Pin(500 -300 60 30 90 28 "RB7" "13" 0x00000001) + Pin(400 -300 60 30 90 28 "Vdd" "14" 0x00000001) + Pin(300 -300 60 30 90 28 "OSC2/CLKOUT" "15" 0x00000001) + Pin(200 -300 60 30 90 28 "OSC1/CLKIN" "16" 0x00000001) + Pin(100 -300 60 30 90 28 "RA0" "17" 0x00000001) + Pin(0 -300 60 30 90 28 "RA1" "18" 0x00000001) + ElementLine (-50 50 850 50 10) + ElementLine (850 50 850 -350 10) + ElementLine (850 -350 -50 -350 10) + ElementLine (-50 50 -50 -100 10) + ElementLine (-50 -200 -50 -350 10) + ElementArc (-50 -150 50 50 90 180 10) + ) + +Element(0x00000000 "SMD Cap" "C17" "" 2155 815 -90 -329 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x00000001) + Pin(0 -200 80 30 110 35 "2" "2" 0x00000001) + ElementLine (-50 50 50 50 10) + ElementLine (50 50 50 -250 10) + ElementLine (50 -250 -50 -250 10) + ElementLine (-50 -250 -50 50 10) + ) + +Element(0x00000000 "SMD 0805" "C13" "" 2525 1510 -30 45 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(0 -90 0 -90 60 30 90 "2" "2" 0x00000100) + ElementLine (-35 -125 -35 35 10) + ElementLine (35 -125 -35 -125 10) + ElementLine (35 35 35 -125 10) + ElementLine (-35 35 35 35 10) + ) + +Element(0x00000010 "SMD 0805" "C16" "" 1080 1355 -15 -115 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(90 0 90 0 60 30 90 "2" "2" 0x00000100) + ElementLine (125 -35 -35 -35 10) + ElementLine (125 35 125 -35 10) + ElementLine (-35 35 125 35 10) + ElementLine (-35 -35 -35 35 10) + ) + +Element(0x00000000 "SMD 0805" "C14" "" 1175 1690 -195 20 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(0 90 0 90 60 30 90 "2" "2" 0x00000100) + ElementLine (35 125 35 -35 10) + ElementLine (-35 125 35 125 10) + ElementLine (-35 -35 -35 125 10) + ElementLine (35 -35 -35 -35 10) + ) + +Element(0x00000000 "SMD Cap" "C15" "" 1280 1785 65 -174 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x02000001) + Pin(0 -200 80 30 110 35 "2" "2" 0x00000001) + ElementLine (-50 50 50 50 10) + ElementLine (50 50 50 -250 10) + ElementLine (50 -250 -50 -250 10) + ElementLine (-50 -250 -50 50 10) + ) + +Element(0x00000010 "SMD 0805" "C10" "" 2095 1310 -190 -60 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(90 0 90 0 60 30 90 "2" "2" 0x00000100) + ElementLine (125 -35 -35 -35 10) + ElementLine (125 35 125 -35 10) + ElementLine (-35 35 125 35 10) + ElementLine (-35 -35 -35 35 10) + ) + +Element(0x00000000 "SMD Cap" "C12" "" 2345 1320 -35 -129 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x00000001) + Pin(200 0 80 30 110 35 "2" "2" 0x02020001) + ElementLine (-50 -50 -50 50 10) + ElementLine (-50 50 250 50 10) + ElementLine (250 50 250 -50 10) + ElementLine (250 -50 -50 -50 10) + ) + +Element(0x00000000 "R 0.25W" "R13" "100" 1130 1435 230 65 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x00000101) + Pin(400 0 60 30 90 28 "2" "2" 0x10000001) + ElementLine (100 -50 300 -50 10) + ElementLine (300 -50 300 50 10) + ElementLine (300 50 100 50 10) + ElementLine (100 50 100 -50 10) + ElementLine (40 0 100 0 10) + ElementLine (300 0 360 0 10) + ) + +Element(0x00000000 "R 0.25W" "R14" "100" 1105 1075 -265 60 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x00000001) + Pin(-400 0 60 30 90 28 "2" "2" 0x00000001) + ElementLine (-100 50 -300 50 10) + ElementLine (-300 50 -300 -50 10) + ElementLine (-300 -50 -100 -50 10) + ElementLine (-100 -50 -100 50 10) + ElementLine (-40 0 -100 0 10) + ElementLine (-300 0 -360 0 10) + ) + +Element(0x00000000 "R 0.5W" "R11" "" 2815 1700 60 -90 0 150 0x00000000) +( + Pin(0 0 85 30 115 48 "1" "1" 0x00000101) + Pin(0 -800 85 30 115 48 "2" "2" 0x00000001) + ElementLine (0 -60 0 -115 10) + ElementLine (-115 -115 115 -115 10) + ElementLine (115 -115 115 -685 10) + ElementLine (115 -685 -115 -685 10) + ElementLine (-115 -685 -115 -115 10) + ElementLine (0 -685 0 -750 10) + ) + +Element(0x00000000 "TK11950" "U3" "5.0V" 2235 1510 -139 -2 0 150 0x00000000) +( + Pad(-7 0 8 0 24 30 54 "NOISE BYPASS" "1" 0x00000100) + Pad(-7 37 8 37 24 30 54 "CONTROL" "2" 0x00000100) + Pad(-7 75 8 75 24 30 54 "RESET OUT" "3" 0x00000100) + Pad(119 75 134 75 24 30 54 "VO" "4" 0x00000100) + Pad(119 37 134 37 24 30 54 "GND" "5" 0x00000100) + Pad(119 0 134 0 24 30 54 "VIN" "6" 0x00000100) + ElementLine (0 -22 0 -34 10) + ElementLine (0 -34 132 -34 10) + ElementLine (132 -34 132 -22 10) + ElementLine (0 96 0 108 10) + ElementLine (0 108 132 108 10) + ElementLine (132 108 132 96 10) + ElementLine (13 -24 119 -24 10) + ) + +Element(0x00000000 "TK11950" "U4" "5.0V" 1180 1590 -254 -132 0 150 0x00000000) +( + Pad(7 0 -8 0 24 30 54 "NOISE BYPASS" "1" 0x00000100) + Pad(7 -37 -8 -37 24 30 54 "CONTROL" "2" 0x00000100) + Pad(7 -75 -8 -75 24 30 54 "RESET OUT" "3" 0x00000100) + Pad(-119 -75 -134 -75 24 30 54 "VO" "4" 0x00000100) + Pad(-119 -37 -134 -37 24 30 54 "GND" "5" 0x00000100) + Pad(-119 0 -134 0 24 30 54 "VIN" "6" 0x00000100) + ElementLine (0 22 0 34 10) + ElementLine (0 34 -132 34 10) + ElementLine (-132 34 -132 22 10) + ElementLine (0 -96 0 -108 10) + ElementLine (0 -108 -132 -108 10) + ElementLine (-132 -108 -132 -96 10) + ElementLine (-13 24 -119 24 10) + ) + +Element(0x00000000 "SMD 0805" "C5" "" 1495 1315 -225 -30 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(-90 0 -90 0 60 30 90 "2" "2" 0x00000100) + ElementLine (-125 35 35 35 10) + ElementLine (-125 -35 -125 35 10) + ElementLine (35 -35 -125 -35 10) + ElementLine (35 35 35 -35 10) + ) + +Element(0x00000010 "SMD 0805" "C11" "" 2270 1420 -260 -30 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(-90 0 -90 0 60 30 90 "2" "2" 0x00000100) + ElementLine (-125 35 35 35 10) + ElementLine (-125 -35 -125 35 10) + ElementLine (35 -35 -125 -35 10) + ElementLine (35 35 35 -35 10) + ) + +Element(0x00000000 "SMD Cap" "C9" "" 2030 1185 -145 -40 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x20200001) + Pin(200 0 80 30 110 35 "2" "2" 0x02020001) + ElementLine (0 45 0 50 10) + ElementLine (0 50 200 50 10) + ElementLine (200 50 200 45 10) + ElementLine (200 -45 200 -50 10) + ElementLine (200 -50 0 -50 10) + ElementLine (0 -50 0 -45 10) + ) + +Element(0x00000000 "R 0.25W" "R7" "100" 1655 2065 150 -30 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x02000001) + Pin(400 0 60 30 90 28 "2" "2" 0x02020001) + ElementLine (100 -50 300 -50 10) + ElementLine (300 -50 300 50 10) + ElementLine (300 50 100 50 10) + ElementLine (100 50 100 -50 10) + ElementLine (40 0 100 0 10) + ElementLine (300 0 360 0 10) + ) + +Element(0x00000000 "SMD Cap" "C8" "" 2030 1075 65 -124 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x20200001) + Pin(200 0 80 30 110 35 "2" "2" 0x02020001) + ElementLine (-50 -50 -50 50 10) + ElementLine (-50 50 250 50 10) + ElementLine (250 50 250 -50 10) + ElementLine (250 -50 -50 -50 10) + ) + +Element(0x00000000 "SMD Cap" "C7" "" 1530 1075 -370 -144 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x20200001) + Pin(-200 0 80 30 110 35 "2" "2" 0x10100001) + ElementLine (50 50 50 -50 10) + ElementLine (50 -50 -250 -50 10) + ElementLine (-250 -50 -250 50 10) + ElementLine (-250 50 50 50 10) + ) + +Element(0x00000000 "SMD Cap" "C2" "" 1945 1845 65 -19 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x02000101) + Pin(-200 0 80 30 110 35 "2" "2" 0x02000001) + ElementLine (50 50 50 -50 10) + ElementLine (50 -50 -250 -50 10) + ElementLine (-250 -50 -250 50 10) + ElementLine (-250 50 50 50 10) + ) + +Element(0x00000000 "SMD Cap" "C6" "" 1530 1185 -335 -30 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x20200001) + Pin(-200 0 80 30 110 35 "2" "2" 0x10100001) + ElementLine (0 -45 0 -50 10) + ElementLine (0 -50 -200 -50 10) + ElementLine (-200 -50 -200 -45 10) + ElementLine (-200 45 -200 50 10) + ElementLine (-200 50 0 50 10) + ElementLine (0 50 0 45 10) + ) + +Element(0x00000000 "SMD Cap" "C1" "" 1490 1950 -40 71 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x00000101) + Pin(0 -200 80 30 110 35 "2" "2" 0x02000001) + ElementLine (-50 50 50 50 10) + ElementLine (50 50 50 -250 10) + ElementLine (50 -250 -50 -250 10) + ElementLine (-50 -250 -50 50 10) + ) + +Element(0x00000000 "R 0.25W" "R6" "100" 2375 1680 65 115 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x02000101) + Pin(0 400 60 30 90 28 "2" "2" 0x02000001) + ElementLine (50 100 50 300 10) + ElementLine (50 300 -50 300 10) + ElementLine (-50 300 -50 100 10) + ElementLine (-50 100 50 100 10) + ElementLine (0 40 0 100 10) + ElementLine (0 300 0 360 10) + ) + +Element(0x00000000 "R 0.25W" "R8" "100" 2270 1680 -30 245 1 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x02000101) + Pin(0 400 60 30 90 28 "2" "2" 0x02000001) + ElementLine (50 100 50 300 10) + ElementLine (50 300 -50 300 10) + ElementLine (-50 300 -50 100 10) + ElementLine (-50 100 50 100 10) + ElementLine (0 40 0 100 10) + ElementLine (0 300 0 360 10) + ) + +Element(0x00000000 "R 0.25W" "R5" "100" 1375 1750 -170 175 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x00000101) + Pin(0 400 60 30 90 28 "2" "2" 0x00000001) + ElementLine (50 100 50 300 10) + ElementLine (50 300 -50 300 10) + ElementLine (-50 300 -50 100 10) + ElementLine (-50 100 50 100 10) + ElementLine (0 40 0 100 10) + ElementLine (0 300 0 360 10) + ) + +Element(0x00000000 "R 0.25W" "R9" "100" 1655 2170 125 -25 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x02000001) + Pin(400 0 60 30 90 28 "2" "2" 0x02020001) + ElementLine (100 -50 300 -50 10) + ElementLine (300 -50 300 50 10) + ElementLine (300 50 100 50 10) + ElementLine (100 50 100 -50 10) + ElementLine (40 0 100 0 10) + ElementLine (300 0 360 0 10) + ) + +Element(0x00000000 "R 0.25W" "R10" "100" 2160 1675 -30 275 1 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x02000101) + Pin(0 400 60 30 90 28 "2" "2" 0x02020001) + ElementLine (50 100 50 300 10) + ElementLine (50 300 -50 300 10) + ElementLine (-50 300 -50 100 10) + ElementLine (-50 100 50 100 10) + ElementLine (0 40 0 100 10) + ElementLine (0 300 0 360 10) + ) + +Element(0x00000000 "ADC12138CIMSA" "U2" "ADC12138" 1630 1690 105 -449 0 150 0x00000000) +( + Pad(0 30 0 -30 12 30 42 "CH0" "1" 0x00000100) + Pad(26 30 26 -30 12 30 42 "CH1" "2" 0x00000100) + Pad(51 30 51 -30 12 30 42 "CH2" "3" 0x00000100) + Pad(77 30 77 -30 12 30 42 "CH3" "4" 0x00000100) + Pad(102 30 102 -30 12 30 42 "CH4" "5" 0x00000100) + Pad(128 30 128 -30 12 30 42 "CH5" "6" 0x00000100) + Pad(154 30 154 -30 12 30 42 "CH6" "7" 0x00000100) + Pad(179 30 179 -30 12 30 42 "CH7" "8" 0x00000100) + Pad(205 30 205 -30 12 30 42 "COM" "9" 0x00000100) + Pad(230 30 230 -30 12 30 42 "MuOut1" "10" 0x00000100) + Pad(256 30 256 -30 12 30 42 "A/Din1" "11" 0x00000100) + Pad(281 30 281 -30 12 30 42 "MuxOut2" "12" 0x00000100) + Pad(307 30 307 -30 12 30 42 "A/Din2" "13" 0x00000100) + Pad(333 30 333 -30 12 30 42 "DGND" "14" 0x00000100) + Pad(333 -350 333 -290 12 30 42 "VA+" "15" 0x00000100) + Pad(307 -350 307 -290 12 30 42 "Vref-" "16" 0x00000100) + Pad(281 -350 281 -290 12 30 42 "Vref+" "17" 0x00000100) + Pad(256 -350 256 -290 12 30 42 "AGND" "18" 0x00000100) + Pad(230 -350 230 -290 12 30 42 "PD" "19" 0x00000100) + Pad(205 -350 205 -290 12 30 42 "EOC" "20" 0x00000100) + Pad(179 -350 179 -290 12 30 42 "~CONV" "21" 0x00000100) + Pad(154 -350 154 -290 12 30 42 "~CS" "22" 0x00000100) + Pad(128 -350 128 -290 12 30 42 "DO" "23" 0x00000100) + Pad(102 -350 102 -290 12 30 42 "DI" "24" 0x00000100) + Pad(77 -350 77 -290 12 30 42 "SCLK" "25" 0x00000100) + Pad(51 -350 51 -290 12 30 42 "CCLK" "26" 0x00000100) + Pad(26 -350 26 -290 12 30 42 "~DOR" "27" 0x00000100) + Pad(0 -350 0 -290 12 30 42 "VD+" "28" 0x00000100) + ElementLine (0 -70 0 -70 30) + ElementLine (-12 -54 -37 -54 10) + ElementLine (-37 -54 -37 -266 10) + ElementLine (-37 -266 -12 -266 10) + ElementLine (343 -54 370 -54 10) + ElementLine (370 -54 370 -266 10) + ElementLine (370 -266 343 -266 10) + ) + +Element(0x00000000 "R 0.25W" "R4" "100" 1615 1955 130 -35 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x00000101) + Pin(400 0 60 30 90 28 "2" "2" 0x02000001) + ElementLine (100 -50 300 -50 10) + ElementLine (300 -50 300 50 10) + ElementLine (300 50 100 50 10) + ElementLine (100 50 100 -50 10) + ElementLine (40 0 100 0 10) + ElementLine (300 0 360 0 10) + ) + +Element(0x00000010 "SMD 0805" "C4" "" 2070 2390 -25 -180 0 115 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(0 -90 0 -90 60 30 90 "2" "2" 0x00000100) + ElementLine (-35 -125 -35 35 10) + ElementLine (35 -125 -35 -125 10) + ElementLine (35 35 35 -125 10) + ElementLine (-35 35 35 35 10) + ) + +Element(0x00000000 "R 0.25W" "R1" "100" 2180 2625 -35 -145 1 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x00000101) + Pin(0 -400 60 30 90 28 "2" "2" 0x02000001) + ElementLine (-50 -100 -50 -300 10) + ElementLine (-50 -300 50 -300 10) + ElementLine (50 -300 50 -100 10) + ElementLine (50 -100 -50 -100 10) + ElementLine (0 -40 0 -100 10) + ElementLine (0 -300 0 -360 10) + ) + +Element(0x00000000 "R 0.25W" "R2" "100" 2400 2625 60 -100 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x00000101) + Pin(0 -400 60 30 90 28 "2" "2" 0x02000001) + ElementLine (-50 -100 -50 -300 10) + ElementLine (-50 -300 50 -300 10) + ElementLine (50 -300 50 -100 10) + ElementLine (50 -100 -50 -100 10) + ElementLine (0 -40 0 -100 10) + ElementLine (0 -300 0 -360 10) + ) + +Element(0x00000000 "LM13700" "U1" "LM13700" 1955 2285 -475 -130 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "Iabc1" "1" 0x02000101) + Pin(-100 0 60 30 90 28 "Dbias1" "2" 0x00000001) + Pin(-200 0 60 30 90 28 "In+1" "3" 0x00000001) + Pin(-300 0 60 30 90 28 "In-1" "4" 0x00000001) + Pin(-400 0 60 30 90 28 "Out1" "5" 0x00000001) + Pin(-500 0 60 30 90 28 "V-" "6" 0x00000001) + Pin(-600 0 60 30 90 28 "BufIn1" "7" 0x00000001) + Pin(-700 0 60 30 90 28 "BufOut1" "8" 0x00000001) + Pin(-700 300 60 30 90 28 "BufOut2" "9" 0x00000001) + Pin(-600 300 60 30 90 28 "BufIn2" "10" 0x00000001) + Pin(-500 300 60 30 90 28 "V+" "11" 0x00000001) + Pin(-400 300 60 30 90 28 "Out2" "12" 0x00000001) + Pin(-300 300 60 30 90 28 "In-2" "13" 0x00000001) + Pin(-200 300 60 30 90 28 "In+2" "14" 0x00000001) + Pin(-100 300 60 30 90 28 "Dbias2" "15" 0x00000001) + Pin(0 300 60 30 90 28 "Iabc2" "16" 0x00000001) + ElementLine (50 -50 -750 -50 10) + ElementLine (-750 -50 -750 350 10) + ElementLine (-750 350 50 350 10) + ElementLine (50 -50 50 100 10) + ElementLine (50 200 50 350 10) + ElementArc (50 150 50 50 270 180 10) + ) + +Element(0x00000000 "R 0.25W" "R3" "100" 2290 2625 -30 -135 1 150 0x00000000) +( + Pin(0 0 60 30 90 28 "1" "1" 0x00000101) + Pin(0 -400 60 30 90 28 "2" "2" 0x02000001) + ElementLine (-50 -100 -50 -300 10) + ElementLine (-50 -300 50 -300 10) + ElementLine (50 -300 50 -100 10) + ElementLine (50 -100 -50 -100 10) + ElementLine (0 -40 0 -100 10) + ElementLine (0 -300 0 -360 10) + ) + +Element(0x00000000 "SMD 0805" "C3" "" 2075 2510 -40 140 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(0 90 0 90 60 30 90 "2" "2" 0x00000100) + ElementLine (35 125 35 -35 10) + ElementLine (-35 125 35 125 10) + ElementLine (-35 -35 -35 125 10) + ElementLine (35 -35 -35 -35 10) + ) + +Element(0x00000000 "CTX169" "X1" "20 MHz" 2330 910 425 -215 0 150 0x00000000) +( + Pin(0 -60 60 30 90 28 "NC" "1" 0x00000101) + Pin(300 -60 60 30 90 28 "GND" "2" 0x00000001) + Pin(300 -360 60 30 90 28 "OUT" "3" 0x00000001) + Pin(0 -360 60 30 90 28 "Vdd" "4" 0x00000001) + ElementLine (-110 50 -110 -410 10) + ElementLine (-60 -460 350 -460 10) + ElementLine (400 -410 400 0 10) + ElementLine (350 50 -110 50 10) + ElementArc (-60 -410 50 50 270 90 10) + ElementArc (350 -410 50 50 180 90 10) + ElementArc (350 0 50 50 90 90 10) + ) + +Element(0x00000000 "SMD Cap" "C21" "" 2565 1070 -50 61 0 150 0x00000000) +( + Pin(0 0 80 30 110 35 "1" "1" 0x00000001) + Pin(-200 0 80 30 110 35 "2" "2" 0x02020001) + ElementLine (50 50 50 -50 10) + ElementLine (50 -50 -250 -50 10) + ElementLine (-250 -50 -250 50 10) + ElementLine (-250 50 50 50 10) + ) + +Element(0x00000000 "SMD 0805" "C20" "" 2665 2375 -115 55 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(-90 0 -90 0 60 30 90 "2" "2" 0x00000100) + ElementLine (-125 35 35 35 10) + ElementLine (-125 -35 -125 35 10) + ElementLine (35 -35 -125 -35 10) + ElementLine (35 35 35 -35 10) + ) + +Element(0x00000000 "SMD 0805" "C19" "" 2785 2375 -20 55 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(90 0 90 0 60 30 90 "2" "2" 0x00000100) + ElementLine (125 -35 -35 -35 10) + ElementLine (125 35 125 -35 10) + ElementLine (-35 35 125 35 10) + ElementLine (-35 -35 -35 35 10) + ) + +Element(0x00000000 "SMD 0805" "C18" "" 2665 1800 155 -20 0 150 0x00000000) +( + Pad(0 0 0 0 60 30 90 "1" "1" 0x00000100) + Pad(90 0 90 0 60 30 90 "2" "2" 0x00000100) + ElementLine (125 -35 -35 -35 10) + ElementLine (125 35 125 -35 10) + ElementLine (-35 35 125 35 10) + ElementLine (-35 -35 -35 35 10) + ) + +Element(0x00000000 "AMP 745781-4" "J3" "A2100-ND" 820 1610 -125 837 0 150 0x00000000) +( + Pin(0 432 80 30 110 42 "1" "1" 0x00000101) + Pin(0 324 80 30 110 42 "2" "2" 0x00000001) + Pin(0 216 80 30 110 42 "3" "3" 0x00000001) + Pin(0 108 80 30 110 42 "4" "4" 0x00000001) + Pin(0 0 80 30 110 42 "5" "5" 0x00000001) + Pin(-112 378 80 30 110 42 "6" "6" 0x00000001) + Pin(-112 270 80 30 110 42 "7" "7" 0x00000001) + Pin(-112 162 80 30 110 42 "8" "8" 0x00000001) + Pin(-112 54 80 30 110 42 "9" "9" 0x00000001) + Pin(-56 -276 120 30 150 120 "MOUNT HOLE" "10" 0x00000009) + Pin(-56 708 120 30 150 120 "MOUNT HOLE" "11" 0x00000009) + ElementLine (-317 -390 58 -390 10) + ElementLine (-317 -138 -317 -390 10) + ElementLine (-433 455 -434 -22 10) + ElementLine (-317 823 -317 571 10) + ElementLine (58 823 -317 823 10) + ElementLine (58 -390 58 823 10) + ElementArc (-375 -138 58 58 90 90 10) + ElementArc (-375 -22 58 58 270 90 10) + ElementArc (-375 455 58 58 0 90 10) + ElementArc (-375 571 58 58 180 90 10) + ) + +Element(0x00000000 "3 TERM BLOCK" "J1" "DK ED1602-ND" 2285 2925 140 51 0 150 0x00000000) +( + Pin(0 0 110 30 140 48 "1" "1" 0x00000001) + Pin(-194 0 110 30 140 48 "2" "2" 0x00000001) + Pin(-388 0 110 30 140 48 "3" "3" 0x00000001) + ElementLine (-388 160 -388 140 10) + ElementLine (-194 160 -194 140 10) + ElementLine (0 160 0 140 10) + ElementLine (81 -170 101 -170 10) + ElementLine (81 -190 81 -170 10) + ElementLine (101 -190 81 -190 10) + ElementLine (-509 -170 -489 -170 10) + ElementLine (-509 -190 -509 -170 10) + ElementLine (-489 -190 -509 -190 10) + ElementLine (101 -200 101 160 10) + ElementLine (-489 -200 101 -200 10) + ElementLine (-489 160 -489 -200 10) + ElementLine (101 160 -489 160 10) + ) + +Element(0x00000000 "OP-AMP" "U7" "LTC1152" 2575 1925 380 200 0 150 0x00000000) +( + Pin(0 0 60 30 90 28 "SHDN" "1" 0x02000101) + Pin(0 100 60 30 90 28 "-IN" "2" 0x02000001) + Pin(0 200 60 30 90 28 "+IN" "3" 0x02000001) + Pin(0 300 60 30 90 28 "V-" "4" 0x02020001) + Pin(300 300 60 30 90 28 "COMP" "5" 0x02000001) + Pin(300 200 60 30 90 28 "OUT" "6" 0x02000001) + Pin(300 100 60 30 90 28 "V+" "7" 0x02000001) + Pin(300 0 60 30 90 28 "CP" "8" 0x02000001) + ElementLine (-50 -50 -50 350 10) + ElementLine (-50 350 350 350 10) + ElementLine (350 350 350 -50 10) + ElementLine (-50 -50 100 -50 10) + ElementLine (200 -50 350 -50 10) + ElementArc (150 -50 50 50 0 180 10) + ) + +Element(0x00000000 "R 0.5W" "R12" "" 1035 1935 -205 700 0 150 0x00000000) +( + Pin(0 0 85 30 115 48 "1" "1" 0x00000101) + Pin(0 800 90 30 120 48 "2" "2" 0x00000001) + ElementLine (0 60 0 115 10) + ElementLine (115 115 -115 115 10) + ElementLine (-115 115 -115 685 10) + ElementLine (-115 685 115 685 10) + ElementLine (115 685 115 115 10) + ElementLine (0 685 0 750 10) + ) +Rat(1187 1553 0 1061 1553 0 0x00000010) +Rat(1045 1820 1 1175 1780 0 0x00000010) +Rat(1330 1185 1 1405 1315 0 0x00000010) +Rat(2075 1455 1 2180 1420 0 0x00000010) +Rat(2180 1420 0 2185 1310 0 0x00000010) +Rat(2228 1547 0 2354 1547 0 0x00000010) +Layer(1 "solder") +( + Line(1945 1015 1945 1260 15 30 0x00000000) + Line(1615 1960 1555 1960 10 30 0x00000000) + Line(1185 2230 1185 2655 15 30 0x00000000) + Line(705 795 890 980 15 30 0x00000000) + Line(1405 955 1485 875 15 30 0x00000000) + Line(1005 695 1140 560 15 30 0x00000000) + Line(1005 795 1135 665 15 30 0x00000000) + Line(705 895 705 1075 15 30 0x00000000) + Line(1125 1435 1005 1315 15 30 0x00000000) + Line(1005 1235 1065 1175 15 30 0x00000000) + Line(1010 980 1105 1075 15 30 0x00000000) + Line(1345 955 1405 955 15 30 0x00000000) + Line(1065 1175 1125 1175 15 30 0x00000000) + Line(1190 665 1295 560 15 30 0x00000000) + Line(1375 1750 1375 2040 15 30 0x00000000) + Line(1605 2435 1605 2660 10 30 0x00000000) + Line(1655 2285 1520 2420 15 30 0x00000000) + Line(1375 2040 1185 2230 15 30 0x00000000) + Line(1135 665 1190 665 15 30 0x00000000) + Line(1105 1075 970 1210 15 30 0x00000000) + Line(890 980 1010 980 15 30 0x00000000) + Line(2460 965 1995 965 15 30 0x00000000) + Line(1855 2285 1855 2585 15 30 0x00000000) + Line(970 1210 970 1568 15 30 0x00000000) + Line(1520 2420 1520 2495 15 30 0x00000000) + Line(1755 2285 1605 2435 10 30 0x00000000) + Line(1995 965 1945 1015 15 30 0x00000000) + Line(1005 1315 1005 1235 15 30 0x00000000) + Line(2565 1070 2460 965 15 30 0x00000000) + Line(1945 1260 1985 1300 15 30 0x00000000) + Line(1125 1175 1345 955 15 30 0x00000000) + Line(2400 2625 2290 2625 10 30 0x00000000) + Line(970 1568 820 1718 15 30 0x00000000) + Line(1140 560 1195 560 15 30 0x00000000) + Line(1555 1960 1555 2285 10 30 0x00000000) + Text(525 2805 0 120 "LED (BACK)" 0x00000080) +) +Layer(2 "GND-solder") +( + Line(820 2045 920 2145 35 30 0x00000040) + Line(930 1820 930 1932 30 30 0x00000000) + Line(1280 1585 1045 1820 30 30 0x00000000) + Line(1045 1820 930 1820 30 30 0x00000000) + Line(930 1932 820 2042 30 30 0x00000000) + Line(2155 815 2120 780 40 30 0x00000000) + Line(1675 780 1595 860 40 30 0x00000000) + Line(2630 850 2535 755 40 30 0x00000000) + Line(2120 780 1675 780 40 30 0x00000000) + Line(2215 755 2155 815 40 30 0x00000000) + Line(2535 755 2215 755 40 30 0x00000000) + Polygon(0x00000010) + ( + (1125 2635) (1125 2235) (1330 2030) (1330 1705) (1430 1705) + (1430 1635) (1400 1635) (1400 1560) (1240 1720) (1115 1845) + (1115 2010) (1030 2010) (895 2145) (895 2635) + ) + Polygon(0x00000010) + ( + (1430 1885) (1570 1885) (1670 1885) (1670 2000) (1590 2000) + (1590 2235) (1925 2235) (1925 2525) (2645 2525) (2645 1250) + (2405 1250) (2405 1340) (2370 1375) (2320 1375) (2285 1340) + (2285 1305) (2300 1290) (2300 1290) (2300 1135) (2430 1135) + (2430 1005) (2090 1005) (2090 1280) (2000 1370) (2000 1515) + (1370 1515) (1370 1640) (1430 1640) + ) + Polygon(0x00000010) + ( + (2635 1250) (2635 1615) (2895 1615) (2895 1785) (2750 1785) + (2750 2520) (2975 2520) (2975 1250) + ) +) +Layer(3 "Vcc-solder") +( + Line(1455 2780 2695 2780 35 30 0x00000000) + Line(1035 2735 1445 2735 45 30 0x00000000) + Line(2340 1195 2815 1195 30 30 0x00000000) + Line(2815 1195 2815 900 30 30 0x00000000) + Line(1530 1180 1530 1435 30 30 0x00000000) + Line(1070 1265 1525 1265 35 30 0x00000000) + Line(1145 765 1395 765 35 30 0x00000000) + Line(1010 900 1145 765 35 30 0x00000000) + Line(1395 765 1595 565 35 30 0x00000000) + Line(2155 615 2110 660 40 30 0x00000000) + Line(1695 660 1595 560 40 30 0x00000000) + Line(2330 550 2155 615 45 30 0x00000000) + Line(2110 660 1695 660 40 30 0x00000000) + Line(2340 1315 2340 1195 30 30 0x00000000) + Line(2695 1700 2810 1700 30 30 0x00000000) + Line(1455 2585 1355 2285 45 30 0x00000000) + Line(1455 2590 1455 2780 35 30 0x00000000) + Line(2695 2780 2695 1700 30 30 0x00000000) +) +Layer(4 "component") +( + Line(685 2450 585 2350 35 30 0x00000000) + Line(2975 1480 2565 1070 15 30 0x00000000) + Line(2975 2025 2975 1480 15 30 0x00000000) + Line(2875 2125 2975 2025 15 30 0x00000000) + Line(980 1270 980 1774 15 30 0x00000000) + Line(585 1787 708 1664 35 30 0x00000000) + Line(2675 2125 2575 2025 15 30 0x00000000) + Line(2120 2285 2180 2225 15 30 0x00000000) + Line(2055 720 2055 895 10 30 0x00000000) + Line(1835 1285 1835 1340 10 30 0x00000000) + Line(1860 1261 1835 1285 10 30 0x00000000) + Line(1860 1035 1860 1261 10 30 0x00000000) + Line(2090 655 2090 910 10 30 0x00000000) + Line(1995 560 2090 655 10 30 0x00000000) + Line(1809 1263 1809 1340 10 30 0x00000000) + Line(1829 1244 1809 1263 10 30 0x00000000) + Line(1829 1024 1829 1244 10 30 0x00000000) + Line(1991 959 1893 959 10 30 0x00000000) + Line(2235 1500 2235 1475 15 30 0x00000000) + Line(2055 895 1991 959 10 30 0x00000000) + Line(2075 2515 2075 2415 30 30 0x00000000) + Line(1490 1950 1505 1950 10 30 0x00000000) + Line(2075 2415 1520 2415 30 30 0x00000000) + Line(2175 2145 2205 2145 15 30 0x00000000) + Line(1655 1800 1656 1720 10 30 0x00000000) + Line(1490 1950 1490 2150 15 30 0x00000000) + Line(1745 1845 1635 1955 15 30 0x00000000) + Line(1775 1780 1707 1780 10 30 0x00000000) + Line(1655 2170 1945 2170 15 30 0x00000000) + Line(1950 2285 2070 2285 15 30 0x00000000) + Line(1655 2170 1635 2150 15 30 0x00000000) + Line(1655 2065 1835 1885 15 30 0x00000000) + Line(2015 1955 2255 1955 15 30 0x00000000) + Line(2180 2625 2290 2625 15 30 0x00000000) + Line(2075 2615 1985 2615 15 30 0x00000000) + Line(2125 2585 2290 2420 10 30 0x00000000) + Line(2205 2145 2270 2080 15 30 0x00000000) + Line(1315 2225 1255 2285 15 30 0x00000000) + Line(1855 2285 1795 2225 15 30 0x00000000) + Line(2125 2615 2125 2585 10 30 0x00000000) + Line(2495 2530 2400 2625 15 30 0x00000000) + Line(1795 2225 1315 2225 15 30 0x00000000) + Line(1520 2415 1455 2285 30 30 0x00000000) + Line(2440 2110 2345 2205 15 30 0x00000000) + Line(1490 1750 1600 1750 10 30 0x00000000) + Line(2075 2615 2125 2615 10 30 0x00000000) + Line(2875 1800 2755 1800 15 30 0x00000000) + Line(1635 2150 1375 2150 15 30 0x00000000) + Line(1835 1840 1775 1780 10 30 0x00000000) + Line(2000 2225 2095 2225 15 30 0x00000000) + Line(1732 1750 1732 1720 10 30 0x00000000) + Line(1911 1720 1937 1720 10 30 0x00000000) + Line(1985 1300 1937 1300 10 30 0x00000000) + Line(2015 985 1909 985 10 30 0x00000000) + Line(1860 1720 1886 1720 10 30 0x00000000) + Line(1745 1845 1681 1845 10 30 0x00000000) + Line(1950 1840 1835 1840 15 30 0x00000000) + Line(1707 1780 1707 1720 10 30 0x00000000) + Line(1681 1845 1681 1720 10 30 0x00000000) + Line(1122 2585 1122 2740 15 30 0x00000000) + Line(2070 2285 2120 2285 15 30 0x00000000) + Line(1490 1750 1375 1750 15 30 0x00000000) + Line(1950 1840 2015 1955 15 30 0x00000000) + Line(1635 1955 1615 1955 10 30 0x00000000) + Line(2160 1750 1732 1750 10 30 0x00000000) + Line(2160 1675 2440 1955 15 30 0x00000000) + Line(2160 1680 2160 1750 10 30 0x00000000) + Line(1945 2170 2000 2225 15 30 0x00000000) + Line(1505 1950 1655 1800 10 30 0x00000000) + Line(1190 1595 1190 1675 15 30 0x00000000) + Line(1190 1510 1190 1435 15 30 0x00000000) + Line(1190 1435 1130 1435 15 30 0x00000000) + Line(1695 860 1695 1276 10 30 0x00000000) + Line(1795 860 1732 923 10 30 0x00000000) + Line(1797 1015 1797 1225 10 30 0x00000000) + Line(1995 860 1927 927 10 30 0x00000000) + Line(1495 560 1646 711 10 30 0x00000000) + Line(1657 973 1657 1279 10 30 0x00000000) + Line(1657 1279 1681 1303 10 30 0x00000000) + Line(1681 1303 1681 1340 10 30 0x00000000) + Line(1927 927 1885 927 10 30 0x00000000) + Line(1895 860 1758 997 10 30 0x00000000) + Line(1732 923 1732 1340 10 30 0x00000000) + Line(1893 959 1829 1024 10 30 0x00000000) + Line(1646 962 1657 973 10 30 0x00000000) + Line(1797 1225 1784 1239 10 30 0x00000000) + Line(1646 711 1646 962 10 30 0x00000000) + Line(1895 560 2055 720 10 30 0x00000000) + Line(1885 927 1797 1015 10 30 0x00000000) + Line(2090 910 2015 985 10 30 0x00000000) + Line(1985 2615 1955 2585 15 30 0x00000000) + Line(1758 997 1758 1340 10 30 0x00000000) + Line(1707 1288 1707 1340 10 30 0x00000000) + Line(2235 1475 2275 1435 15 30 0x00000000) + Line(1909 985 1860 1035 10 30 0x00000000) + Line(1005 1195 1005 895 35 30 0x00000000) + Line(1060 1255 1005 1195 35 30 0x00000000) + Line(585 2350 585 1787 35 30 0x00000000) + Line(705 595 875 765 15 30 0x00000000) + Line(795 785 795 1155 15 30 0x00000000) + Line(2555 475 1480 475 15 30 0x00000000) + Line(2630 550 2555 475 15 30 0x00000000) + Line(1455 2285 1290 2450 35 30 0x00000000) + Line(875 765 875 1165 15 30 0x00000000) + Line(705 695 795 785 15 30 0x00000000) + Line(980 1774 820 1934 15 30 0x00000000) + Line(705 1075 635 1145 15 30 0x00000000) + Line(2290 2420 2290 2225 10 30 0x00000000) + Line(1480 475 1395 560 15 30 0x00000000) + Line(635 1425 820 1610 15 30 0x00000000) + Line(875 1165 980 1270 15 30 0x00000000) + Line(2095 2225 2175 2145 15 30 0x00000000) + Line(1290 2450 685 2450 35 30 0x00000000) + Line(1600 1750 1630 1720 10 30 0x00000000) + Line(1897 2827 1897 2925 15 30 0x00000000) + Line(915 1731 820 1826 15 30 0x00000000) + Line(915 1275 915 1731 15 30 0x00000000) + Line(1755 2585 2091 2925 15 30 0x00000000) + Line(1501 2764 1501 2925 15 30 0x00000000) + Line(1655 2585 1897 2827 15 30 0x00000000) + Line(1182 2525 1122 2585 15 30 0x00000000) + Line(1520 2495 1490 2525 15 30 0x00000000) + Line(1490 2525 1182 2525 15 30 0x00000000) + Line(1605 2660 1501 2764 15 30 0x00000000) + Line(1185 2655 1485 2655 15 30 0x00000000) + Line(1485 2655 1555 2585 15 30 0x00000000) + Line(1122 2740 1307 2925 15 30 0x00000000) + Line(2255 1955 2375 2075 15 30 0x00000000) + Line(2440 1955 2440 2110 15 30 0x00000000) + Line(2345 2865 2285 2925 15 30 0x00000000) + Line(2345 2205 2345 2865 15 30 0x00000000) + Line(2785 2215 2785 2375 15 30 0x00000000) + Line(795 1155 915 1275 15 30 0x00000000) + Line(2875 2225 2875 2375 15 30 0x00000000) + Line(1784 1239 1784 1340 10 30 0x00000000) + Line(2575 2125 2495 2215 15 30 0x00000000) + Line(2665 2375 2785 2375 15 30 0x00000000) + Line(2575 2225 2575 2375 15 30 0x00000000) + Line(2495 2215 2495 2530 15 30 0x00000000) + Line(2875 1925 2875 1800 15 30 0x00000000) + Line(2875 2125 2785 2215 15 30 0x00000000) + Line(1937 1300 1937 1340 10 30 0x00000000) + Line(2875 2125 2675 2125 15 30 0x00000000) + Line(635 1145 635 1425 15 30 0x00000000) + Line(1835 1885 1835 1840 15 30 0x00000000) + Line(1695 1276 1707 1288 10 30 0x00000000) + Text(2515 2705 0 140 "LED rev 1" 0x00000000) +) +Layer(5 "GND-component") +( + Line(1505 950 1595 860 30 30 0x00000000) + Line(1440 950 1505 950 30 30 0x00000000) + Line(2220 1545 2155 1545 20 30 0x00000000) + Line(2515 1350 2515 1415 30 30 0x00000000) + Line(1200 1350 1230 1350 35 30 0x00000000) + Line(1860 1395 1860 1430 10 30 0x00000000) + Line(1965 1495 1965 1635 25 30 0x00000000) + Line(1855 1495 1965 1495 25 30 0x00000000) + Line(1835 1665 1835 1625 10 30 0x00000000) + Line(1885 1395 1885 1460 10 30 0x00000000) + Line(1965 1660 1965 1635 10 30 0x00000000) + Line(1810 1665 1810 1630 10 30 0x00000000) + Line(1785 1660 1785 1625 10 30 0x00000000) + Line(1760 1625 1760 1660 10 30 0x00000000) + Line(1280 1580 1280 1490 25 30 0x00000000) + Line(1195 1555 1280 1555 20 30 0x00000000) + Line(2545 1320 2515 1350 30 30 0x00000000) + Line(1005 595 1085 595 30 30 0x00000000) + Line(1085 595 1085 955 30 30 0x00000000) + Line(1085 955 1145 1015 30 30 0x00000000) + Line(1145 1015 1245 1015 30 30 0x00000000) + Arc(1445 995 45 45 30 30 270 90 0x00000000) + Polygon(0x00000010) + ( + (2250 1535) (2270 1535) (2270 1485) (2325 1485) (2325 1535) + (2345 1535) (2345 1560) (2325 1560) (2325 1630) (2160 1630) + (2160 1610) (2270 1610) (2270 1560) (2250 1560) + ) + Polygon(0x00000010) + ( + (1995 1470) (1880 1470) (1880 1450) (2015 1450) (2015 1365) + (2160 1365) (2160 1330) (2195 1330) (2195 1425) (2160 1460) + (2160 1630) (2070 1630) (2070 1720) (1995 1720) + ) + Polygon(0x00000010) + ( + (1370 1635) (1930 1635) (1930 1525) (1370 1525) + ) + Polygon(0x00000010) + ( + (1865 1510) (1225 1510) (1225 995) (1415 995) (1415 1255) + (1365 1255) (1365 1365) (1605 1365) (1605 1415) (1865 1415) + ) + Polygon(0x00000000) + ( + (1360 1295) (1390 1295) (1390 1335) (1360 1335) + ) + Polygon(0x00000010) + ( + (1070 1565) (1090 1565) (1090 1810) (1150 1810) (1150 1765) + (1125 1740) (1125 1640) (1145 1640) (1145 1565) (1165 1565) + (1165 1540) (1145 1540) (1145 1485) (1090 1485) (1090 1540) + (1070 1540) + ) +) +Layer(6 "Vcc-component") +( + Line(1045 1870 1045 1935 25 30 0x00000000) + Line(708 2155 708 1988 40 30 0x00000000) + Line(2575 1925 2490 2010 25 30 0x00000000) + Line(1630 1340 1630 1250 10 30 0x00000000) + Line(1910 1430 1965 1430 10 30 0x00000000) + Line(1910 1395 1910 1430 10 30 0x00000000) + Line(1200 2355 1000 2155 35 30 0x00000000) + Line(2575 1925 2485 1835 25 30 0x00000000) + Line(1070 1265 1070 1330 25 30 0x00000000) + Line(2360 1500 2360 1315 25 30 0x00000000) + Line(2445 1250 2445 1675 30 30 0x00000000) + Line(2100 1250 2445 1250 30 30 0x00000000) + Line(1910 1340 1910 1250 10 30 0x00000000) + Line(1965 1430 1965 1400 10 30 0x00000000) + Line(2375 1585 2440 1585 25 30 0x00000000) + Line(2665 1835 2575 1925 30 30 0x00000000) + Line(1120 1875 1190 1875 20 30 0x00000000) + Line(1045 1595 1045 1875 20 30 0x00000000) + Line(1045 1875 1120 1875 20 30 0x00000000) + Line(2875 2025 2675 2025 25 30 0x00000000) + Line(1285 2355 1200 2355 35 30 0x00000000) + Line(1355 2285 1285 2355 35 30 0x00000000) + Line(2675 2025 2575 1925 25 30 0x00000000) + Line(1000 2155 708 2155 40 30 0x00000000) + Line(1060 1510 1060 1375 25 30 0x00000000) + Line(1190 1875 1280 1785 20 30 0x00000000) + Line(2490 2010 2490 2135 25 30 0x00000000) + Line(2450 1510 2495 1510 35 30 0x00000000) + Line(2485 1835 2485 1680 25 30 0x00000000) + Line(2485 1680 2375 1680 25 30 0x00000000) + Line(2665 1800 2665 1835 30 30 0x00000000) + Line(2375 1680 2270 1680 30 30 0x00000000) + Line(2490 2135 2400 2225 25 30 0x00000000) + Polygon(0x00000000) + ( + (1500 1255) (1530 1255) (1530 1295) (1500 1295) + ) + Polygon(0x00000010) + ( + (1445 1255) (1635 1255) (1635 995) (1635 995) (1635 995) + (1635 995) (1635 995) (1445 995) + ) + Polygon(0x00000010) + ( + (1885 1260) (2120 1260) (2120 1005) (1921 1003) (1885 1039) + ) + Polygon(0x00000000) + ( + (2080 1250) (2110 1250) (2110 1295) (2080 1295) + ) +) +Layer(7 "unused") +( +) +Layer(8 "unused") +( + Line(3135 3225 345 3225 35 30 0x00000000) + Line(3135 210 3135 3225 35 30 0x00000000) + Line(345 210 3135 210 35 30 0x00000000) + Line(345 3225 345 210 35 30 0x00000000) +) +Layer(9 "silk") +( +) +Layer(10 "silk") +( + Text(2210 3120 0 115 "ANODE" 0x00000400) + Text(1855 3125 0 115 "-Y" 0x00000400) + Text(2045 3130 0 115 "+Y" 0x00000400) + Text(1255 3125 0 115 "-X" 0x00000400) + Text(1455 3125 0 115 "+X" 0x00000400) + Text(525 295 0 280 "FLARE GENESIS" 0x00000400) + Text(435 2815 0 165 "LED Interface" 0x00000400) + Text(1885 285 0 295 "harry eaton" 0x00000400) +) diff --git a/pcb/LED.NET b/pcb/LED.NET new file mode 100755 index 0000000..eb9f8a2 --- /dev/null +++ b/pcb/LED.NET @@ -0,0 +1,47 @@ +AGND C8-2 C9-2 C10-2 C11-2 C12-2 C13-2 C20-2 C21-2 R7-2 R9-2 \ + R10-2 U2-6 U2-7 U2-8 U2-9 U2-18 U3-2 U3-5 U7-4 +DGND C5-2 C6-2 C7-2 C14-2 C15-2 C16-2 C17-1 J3-1 U2-14 U2-19 \ + U4-2 U4-5 U5-5 U6-4 X1-2 +Minus12V C3-1 C4-1 J3-9 U1-6 +Plus12V J3-6 R11-1 R12-2 U1-7 U1-11 +S00001 C8-1 C9-1 C10-1 C13-1 C18-1 R2-2 R6-1 R8-1 U2-15 U2-17 \ + U3-4 U7-1 U7-7 +SIG10 Skinny U1-2 U1-8 U1-15 +SIG41 Power C3-2 R3-2 U1-16 +SIG43 C4-2 R1-2 U1-1 +SIG49 C2-1 R4-2 R6-2 R7-1 U2-4 +SIG50 C2-2 R4-1 U1-5 U2-3 +SIG51 C1-1 R5-2 R8-2 R9-1 U2-2 +SIG52 C1-2 R5-1 U1-12 U2-1 +SIG87 U2-10 U2-11 +SIG88 U2-12 U2-13 +SIG91 C19-1 C20-1 C21-1 U2-16 U7-2 U7-6 +SIG100 U2-21 U5-11 +SIG101 U2-20 U5-10 +SIG124 J2-3 U1-4 +SIG125 J2-2 U1-3 +SIG127 J1-2 U1-14 +SIG139 C11-1 U3-1 +SIG146 C12-1 R11-2 U3-6 +SIG150 C15-1 R12-1 U4-6 +SIG155 C14-1 U4-1 +SIG191 U5-16 X1-3 +SIG241 U2-26 U5-15 +SIG252 R13-1 U4-3 U5-4 +SIG258 U5-18 U6-3 +SIG259 U5-17 U6-2 +SIG285 J3-4 R14-1 U6-7 +SIG286 J3-5 R14-2 U6-8 +SIG291 U2-22 U5-9 +SIG292 U2-23 U5-8 +SIG293 U2-24 U5-7 +SIG294 U2-25 U5-6 +SIG296 J3-2 U6-5 +SIG297 J3-3 U6-6 +SIG310 J1-1 R10-1 U2-5 +SIG311 J1-3 U1-13 +SIG321 C5-1 C6-1 C7-1 C16-1 C17-2 R13-2 U2-28 U4-4 U5-14 U6-1 \ + X1-4 +SIG338 R1-1 R2-1 R3-1 U7-3 +SIG341 C18-2 U7-8 +SIG343 C19-2 U7-5 diff --git a/pcb/bridge.pcb b/pcb/bridge.pcb new file mode 100644 index 0000000..dc79211 --- /dev/null +++ b/pcb/bridge.pcb @@ -0,0 +1,6 @@ +V- T1-2 +V+ T1-1 +int5 T1-3 rectifier1/D4-1 rectifier1/D3-2 +int6 T1-4 rectifier1/D2-1 rectifier1/D1-2 +Vout rectifier1/D3-1 rectifier1/D1-1 C2-1 C1-1 +GND rectifier1/D4-2 rectifier1/D2-2 C2-2 C1-2 diff --git a/pcb/flare_objects.gif b/pcb/flare_objects.gif Binary files differnew file mode 100644 index 0000000..d2938ed --- /dev/null +++ b/pcb/flare_objects.gif diff --git a/pcb/pic_instance.gif b/pcb/pic_instance.gif Binary files differnew file mode 100644 index 0000000..eb6ae04 --- /dev/null +++ b/pcb/pic_instance.gif diff --git a/pcb/pic_object.gif b/pcb/pic_object.gif Binary files differnew file mode 100644 index 0000000..5ba2733 --- /dev/null +++ b/pcb/pic_object.gif diff --git a/pcb/powersup.pcb b/pcb/powersup.pcb new file mode 100644 index 0000000..15da12b --- /dev/null +++ b/pcb/powersup.pcb @@ -0,0 +1,10 @@ +NET1 power_supply1/T1-3 power_supply1/rectifier1/D4-1 \ + power_supply1/rectifier1/D3-2 +NET2 power_supply1/T1-4 power_supply1/rectifier1/D2-1 \ + power_supply1/rectifier1/D1-2 +In+ power_supply1/T1-1 +In- power_supply1/T1-2 +Out power_supply1/rectifier1/D3-1 power_supply1/rectifier1/D1-1 \ + power_supply1/C2-1 power_supply1/C1-1 R1-1 +GND power_supply1/rectifier1/D4-2 power_supply1/rectifier1/D2-2 \ + power_supply1/C2-2 power_supply1/C1-2 R1-2 diff --git a/psfiles/analoglib1.lps b/psfiles/analoglib1.lps new file mode 100644 index 0000000..9ac56dd --- /dev/null +++ b/psfiles/analoglib1.lps @@ -0,0 +1,238 @@ +%! PostScript set of library objects for XCircuit +% Version: 2.0 +% Library name is: analoglib +% Author: Tim Edwards <tim@stravinsky.jhuapl.edu> +% + +% XCircuitLib library objects + +/arrowhead { +% -12 -32 24 36 bbox +begingate +8 -28 beginpath +3 -18 3 -15 0 0 curveto +-3 -15 -3 -18 -8 -28 curveto +-2 -26 2 -26 +8 -28 curveto +249 1.00 endpath +endgate +} def + +/source { +% -32 -64 64 128 bbox +% hidden +begingate +1 1.00 0 0 32 0.00 360.00 xcarc +1 1.00 0 32 0 64 2 polygon +1 1.00 0 -32 0 -64 2 polygon +endgate +} def + +/capacitor { +% -32 -64 177 128 bbox +(1.0) (p) 2 beginparm +% fundamental +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 -32 -6 32 -6 2 polygon +1.000 0.000 0.000 scb +(c.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(c.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:C%i %pc.1 %pc.2 %v"1.0"%v"p") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel +(sim:c %pc.1 %pc.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel +(F) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 48 0 label +endgate +} def + +/polarized { +% -32 -64 177 128 bbox +(1.0) (p) 2 beginparm +% fundamental +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 0 -80 74 66.00 114.00 xcarc +1.000 0.000 0.000 scb +(t) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(b) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:C%i %pt %pb %v"1.0"%v"p") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel +(sim:e %pt %pb %pb) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel +(F) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 48 0 label +endgate +} def + +/resistor { +% -14 -64 151 128 bbox +(1.0) (k) 2 beginparm +% fundamental +1 1.00 0 64 0 36 2 polygon +1 1.00 0 -64 0 -36 2 polygon +1 1.00 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon +1.000 0.000 0.000 scb +(r.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(r.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:R%i %pr.1 %pr.2 %v"1.0"%v"k") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel +(sim:r %pr.1 %pr.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel +(W) {/Symbol 1.000 cf} v2 {hS} v1 {/Helvetica 1.000 cf} 6 20 0 32 0 label +endgate +} def + +/inductor { +% -14 -64 164 112 bbox +(1.0) (m) 2 beginparm +% fundamental +1 1.00 20 -28 20 -44 0 -48 0 -24 spline +1 1.00 -20 -20 -20 -32 0 -28 0 -24 spline +1 1.00 +20 32 20 16 0 12 0 36 spline +1 1.00 20 12 20 -4 0 -8 0 16 spline +1 1.00 20 -8 20 -24 0 -28 0 -4 spline +1 1.00 -20 20 -20 +8 0 12 0 16 spline +1 1.00 -20 0 -20 -12 0 -8 0 -4 spline +1 1.00 0 -48 0 -64 2 polygon +1 1.00 0 36 0 48 2 polygon +1.000 0.000 0.000 scb +(l.1) {/Times-Roman 1.000 cf} 2 9 0 0 48 pinlabel +(l.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:L%i %pl.1 %pl.2 %v"1.0"%v"m") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel +(sim:l %pl.1 %pl.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel +(H) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 32 0 label +endgate +} def + +/vsource { +% -32 -64 139 128 bbox +(5) 1 beginparm +% fundamental +1.00 0 0 0 source +(+) {/Symbol 1.000 cf} 2 5 0 0 18 label +(-) {/Symbol 1.000 cf} 2 5 0 0 -18 label +1.000 0.000 0.000 scb +(v.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(v.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:V%i %pv.m %pv.p %v"5") {/Helvetica 1.000 cf} 2 20 0 -96 -160 infolabel +(V) {hS} v1 {/Helvetica 1.000 cf} 4 20 0 48 0 label +endgate +} def + +/isource { +% -32 -64 163 128 bbox +(1) (m) 2 beginparm +% fundamental +1.00 0 0 0 source +1 0.75 0 20 0 -8 2 polygon +0.80 180 0 -20 arrowhead +1.000 0.000 0.000 scb +(i.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(i.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:I%i %pi.m %pi.p %v"1"%v"m") {/Times-Roman 1.000 cf} 2 20 0 -96 -160 infolabel +(A) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 48 0 label +endgate +} def + +/acsource { +% -32 -64 211 128 bbox +(5) (0) (1) (k) 4 beginparm +% fundamental +1.00 0 0 0 source +1 0.80 0 -48 0 48 -16 0 16 0 spline +1.000 0.000 0.000 scb +(s.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(s.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:V%i %ps.m %ps.p SIN\(%v"0" %v"5" %v"1"%v"k"\)) {/Helvetica 1.000 cf} 2 20 0 -336 -160 infolabel +(offset) {ss} (V) {hS} v2 {/Helvetica 1.000 cf} 6 20 0 48 0 label +(p-p) {ss} (V) {hS} v1 {/Helvetica 1.000 cf} 6 20 0 48 48 label +(Hz) v4 {hS} v3 {/Helvetica 1.000 cf} 5 20 0 48 -48 label +endgate +} def + +/nmos { +% -64 -64 161 128 bbox +(3) (2) 2 beginparm +% fundamental +1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon +1 1.00 -44 -28 -44 28 2 polygon +1 1.00 -44 0 -64 0 2 polygon +1.000 0.000 0.000 scb +(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel +(S) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel +(D) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel +sce +(spice:M%i %pD %pG %pS GND nmos W=%v"3" L=%v"2") {/Times-Roman 1.000 cf} 2 4 0 -244 -139 infolabel +(sim:n %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel +v1 (W=) {/Helvetica 1.000 cf} 3 20 0 16 16 label +v2 (L=) {/Helvetica 1.000 cf} 3 20 0 16 -16 label +endgate +} def + +/pmos { +% -64 -64 161 128 bbox +(3) (2) 2 beginparm +% fundamental +1 1.00 -44 -28 -44 28 2 polygon +1 1.00 -60 0 -64 0 2 polygon +1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon +1 1.00 -52 0 8 0.00 360.00 xcarc +1.000 0.000 0.000 scb +(S) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel +(D) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel +(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel +sce +(spice:M%i %pD %pG %pS Vdd pmos W=%v"3" L=%v"2") {/Times-Roman 1.000 cf} 2 4 0 -196 -139 infolabel +(sim:p %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -196 -187 infolabel +v1 (W=) {/Helvetica 1.000 cf} 3 20 0 16 16 label +v2 (L=) {/Helvetica 1.000 cf} 3 20 0 16 -16 label +endgate +} def + +/npn { +% -64 -64 73 128 bbox +begingate +% fundamental +1 1.00 -48 0 -64 0 2 polygon +1 1.00 -48 48 -48 -48 2 polygon +1 1.00 0 48 -48 22 2 polygon +1 1.00 0 48 0 64 2 polygon +1 1.00 0 -48 -48 -22 2 polygon +1 1.00 0 -48 0 -64 2 polygon +1.00 240 0 -48 arrowhead +1.000 0.000 0.000 scb +(C) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(B) {/Times-Roman 1.000 cf} 2 7 0 -64 0 pinlabel +(E) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:Q%i %pC %pB %pE npn) {/Times-Roman 1.000 cf} 2 4 0 -244 -139 infolabel +(sim:b %pB %pE %pC) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel +endgate +} def + +/pnp { +% -64 -64 64 128 bbox +begingate +% fundamental +1 1.00 -48 0 -64 0 2 polygon +1 1.00 -48 48 -48 -48 2 polygon +1 1.00 0 48 -48 22 2 polygon +1 1.00 0 48 0 64 2 polygon +1 1.00 0 -48 -48 -22 2 polygon +1 1.00 0 -48 0 -64 2 polygon +1.00 120 -48 22 arrowhead +1.000 0.000 0.000 scb +(C) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +(B) {/Times-Roman 1.000 cf} 2 7 0 -64 0 pinlabel +(E) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +sce +(spice:Q%i %pC %pB %pE pnp) {/Times-Roman 1.000 cf} 2 4 0 -244 -139 infolabel +endgate +} def + +% EndLib diff --git a/psfiles/analoglib2.lps b/psfiles/analoglib2.lps new file mode 100644 index 0000000..c8050c2 --- /dev/null +++ b/psfiles/analoglib2.lps @@ -0,0 +1,235 @@ +%! PostScript set of library objects for XCircuit +% Version: 2.0 +% Library name is: analoglib2 +% Author: R. Timothy Edwards <tim@stravinsky.jhuapl.edu> +% + +% XCircuitLib library objects +/capacitor { +% -32 -64 177 128 bbox +(1.0) (p) 2 beginparm +% fundamental +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 -32 -6 32 -6 2 polygon +1.000 0.000 0.000 scb +(c.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(c.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +mark v2 v1 (spice:C%i %pc.1 %pc.2 ) {/Times-Roman 1.000 cf} ctmk 4 0 -208 -160 infolabel +(sim:c %pc.1 %pc.2) {/Times-Roman 1.000 cf} 2 4 0 -208 -208 infolabel +mark (F) v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label +endgate +} def + +/polarized { +% -32 -64 177 128 bbox +(1.0) (p) 2 beginparm +% fundamental +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 0 -80 74 66.00 114.00 xcarc +1.000 0.000 0.000 scb +(t) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(b) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +mark v2 v1 (spice:C%i %pt %pb ) {/Times-Roman 1.000 cf} ctmk 4 0 -208 -160 infolabel +(sim:e %pt %pb %pb) {/Times-Roman 1.000 cf} 2 4 0 -208 -208 infolabel +mark (F) v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label +endgate +} def + +/resistor { +% -14 -64 151 128 bbox +(1.0) (k) 2 beginparm +% fundamental +1 1.00 0 64 0 36 2 polygon +1 1.00 0 -64 0 -36 2 polygon +1 1.00 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon +1.000 0.000 0.000 scb +(r.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(r.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +mark v2 v1 (spice:R%i %pr.1 %pr.2 ) {/Times-Roman 1.000 cf} ctmk 4 0 -208 -160 infolabel +(sim:r %pr.1 %pr.2) {/Times-Roman 1.000 cf} 2 4 0 -208 -208 infolabel +mark (W) {/Symbol 1.000 cf} v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 32 0 label +endgate +} def + +/inductor { +% -14 -64 164 112 bbox +(1.0) (m) 2 beginparm +% fundamental +1 1.00 20 -28 20 -44 0 -48 0 -24 spline +1 1.00 -20 -20 -20 -32 0 -28 0 -24 spline +1 1.00 20 32 20 16 0 12 0 36 spline +1 1.00 20 12 20 -4 0 -8 0 16 spline +1 1.00 20 -8 20 -24 0 -28 0 -4 spline +1 1.00 -20 20 -20 8 0 12 0 16 spline +1 1.00 -20 0 -20 -12 0 -8 0 -4 spline +1 1.00 0 -48 0 -64 2 polygon +1 1.00 0 36 0 48 2 polygon +1.000 0.000 0.000 scb +(l.1) {/Times-Roman 1.000 cf} 2 9 0 0 48 pinlabel +(l.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +mark v2 v1 (spice:L%i %pl.1 %pl.2 ) {/Times-Roman 1.000 cf} ctmk 4 0 -208 -160 infolabel +(sim:l %pl.1 %pl.2) {/Times-Roman 1.000 cf} 2 4 0 -208 -208 infolabel +mark (H) v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 32 0 label +endgate +} def + +/source { +% -32 -64 64 128 bbox +% hidden +begingate +1 1.00 0 0 32 0.00 360.00 xcarc +1 1.00 0 32 0 64 2 polygon +1 1.00 0 -32 0 -64 2 polygon +endgate +} def + +/vsource { +% -32 -64 139 128 bbox +(5) 1 beginparm +% fundamental +1.00 0 0 0 source +(+) {/Symbol 1.000 cf} 2 5 0 0 18 label +(-) {/Symbol 1.000 cf} 2 5 0 0 -18 label +1.000 0.000 0.000 scb +(v.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(v.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +mark v1 (spice:V%i %pv.m %pv.p ) {/Helvetica 1.000 cf} ctmk 20 0 -96 -160 infolabel +mark (V) {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label +endgate +} def + +/arrowhead { +% -12 -32 24 36 bbox +begingate +8 -28 beginpath +3 -18 3 -15 0 0 curveto +-3 -15 -3 -18 -8 -28 curveto +-2 -26 2 -26 8 -28 curveto +249 1.00 endpath +endgate +} def + +/isource { +% -32 -64 163 128 bbox +(1) (m) 2 beginparm +% fundamental +1.00 0 0 0 source +1 0.75 0 20 0 -8 2 polygon +0.80 180 0 -20 arrowhead +1.000 0.000 0.000 scb +(i.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(i.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +mark v2 v1 (spice:I%i %pi.m %pi.p ) {/Times-Roman 1.000 cf} ctmk 20 0 -96 -160 infolabel +mark (A) v2 {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label +endgate +} def + +/acsource { +% -32 -64 211 128 bbox +(5) (0) (1) (k) 4 beginparm +% fundamental +1.00 0 0 0 source +1 0.80 0 -48 0 48 -16 0 16 0 spline +1.000 0.000 0.000 scb +(s.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(s.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +mark (\)) v4 v3 ( ) v1 ( ) v2 (spice:V%i %ps.m %ps.p SIN\() {/Helvetica 1.000 cf} ctmk 20 0 -336 -160 infolabel +mark (offset) {ss} (V) {hS} v2 {/Helvetica 1.000 cf} ctmk 20 0 48 0 label +mark (p-p) {ss} (V) {hS} v1 {/Helvetica 1.000 cf} ctmk 20 0 48 48 label +mark (Hz) v4 {hS} v3 {/Helvetica 1.000 cf} ctmk 20 0 48 -48 label +endgate +} def + +/nmos { +% -64 -64 161 128 bbox +(3) (2) (nmos) 3 beginparm +% fundamental +1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon +1 1.00 -44 -28 -44 28 2 polygon +1 1.00 -44 0 -64 0 2 polygon +1.000 0.000 0.000 scb +(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel +(S) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel +(D) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel +sce +mark v2 ( L=) v1 ( W=) v3 (spice:M%i %pD %pG %pS GND ) {/Times-Roman 1.000 cf} ctmk 4 0 -244 -139 infolabel +(sim:n %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel +mark v1 (W=) {/Helvetica 1.000 cf} ctmk 20 0 16 16 label +mark v2 (L=) {/Helvetica 1.000 cf} ctmk 20 0 16 -16 label +endgate +} def + +/pmos { +% -64 -64 161 128 bbox +(3) (2) (pmos) 3 beginparm +% fundamental +1 1.00 -44 -28 -44 28 2 polygon +1 1.00 -60 0 -64 0 2 polygon +1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon +1 1.00 -52 0 8 0.00 360.00 xcarc +1.000 0.000 0.000 scb +(S) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel +(D) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel +(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel +sce +mark v2 ( L=) v1 ( W=) v3 (spice:M%i %pD %pG %pS Vdd ) {/Times-Roman 1.000 cf} ctmk 4 0 -196 -139 infolabel +(sim:p %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -196 -187 infolabel +mark v1 (W=) {/Helvetica 1.000 cf} ctmk 20 0 16 16 label +mark v2 (L=) {/Helvetica 1.000 cf} ctmk 20 0 16 -16 label +endgate +} def + +/npn { +% -64 -64 72 128 bbox +(npn) 1 beginparm +% fundamental +1 1.00 -48 0 -64 0 2 polygon +1 1.00 -48 48 -48 -48 2 polygon +1 1.00 0 48 -48 22 2 polygon +1 1.00 0 48 0 64 2 polygon +1 1.00 0 -48 -48 -22 2 polygon +1 1.00 0 -48 0 -64 2 polygon +1.00 240 0 -48 arrowhead +1.000 0.000 0.000 scb +(C) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(B) {/Times-Roman 1.000 cf} 2 7 0 -64 0 pinlabel +(E) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +mark v1 (spice:Q%i %pC %pB %pE ) {/Times-Roman 1.000 cf} ctmk 4 0 -244 -139 infolabel +(sim:b %pB %pE %pC) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel +endgate +} def + +/pnp { +% -64 -64 72 128 bbox +(pnp) 1 beginparm +% fundamental +1 1.00 -48 0 -64 0 2 polygon +1 1.00 -48 48 -48 -48 2 polygon +1 1.00 0 48 -48 22 2 polygon +1 1.00 0 48 0 64 2 polygon +1 1.00 0 -48 -48 -22 2 polygon +1 1.00 0 -48 0 -64 2 polygon +1.00 120 -48 22 arrowhead +1.000 0.000 0.000 scb +(C) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +(B) {/Times-Roman 1.000 cf} 2 7 0 -64 0 pinlabel +(E) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +sce +mark v1 (spice:Q%i %pC %pB %pE ) {/Times-Roman 1.000 cf} ctmk 4 0 -244 -139 infolabel +endgate +} def + + +% EndLib diff --git a/psfiles/bridge.ps b/psfiles/bridge.ps new file mode 100644 index 0000000..392f5ed --- /dev/null +++ b/psfiles/bridge.ps @@ -0,0 +1,370 @@ +%!PS-Adobe-3.0 +%%Title: ~/tmp/tutorial/bridge +%%Creator: Xcircuit v2.3 +%%CreationDate: Wed Jul 18 11:20:21 2001 +%%Pages: 1 +%%BoundingBox: 114 302 498 490 +%%DocumentNeededResources: font Helvetica font Times-Roman font Times-RomanISO +%%+ font HelveticaISO font Symbol +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 2.3 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu) +% The Johns Hopkins University +% +%%BeginResource: procset XCIRCproc 2.3 1 +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } def +/ol { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale /rotval exch def /just exch def + just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform + exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform + exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse + {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt + {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } + if /showflag 0 def /fspc pspc def /Bline 0 def /Tabs 0 array def + /fscale 1.0 def /kY 0 def + gsave dup 1 add copy 0 exch {exch dup type /stringtype eq {true + charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and 0 gt {exch pop + neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt {exch pop + neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} ifelse + /showflag 1 def rotval rotate Kn currentpoint translate + /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def + {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def +/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def } + { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array + astore def gsave sce translate 0 0 moveto dup 0 lt + {neg 1 sub -1 1 scale} if rotate dup scale } bind def +/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch + 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def +/beginparm { -1 1 {makeparm exch def} for + dup type /arraytype eq { aload length -1 1 {makeparm exch def} + for } if begingate } bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb} bind def + +/hlevel 0 def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def + style 1 and 0 gt not {closepath} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if + style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt + {gar exch get ppaint} { pop eofill } ifelse grestore } if + style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } def + +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def +/insertion {/PSobj save def /showpage {} def bop translate} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog + +/Times-Roman findfont dup length dict begin +{1 index /FID ne {def} {pop pop} ifelse} forall +/Encoding ISOLatin1Encoding def currentdict end +/Times-RomanISO exch definefont pop + +/Helvetica findfont dup length dict begin +{1 index /FID ne {def} {pop pop} ifelse} forall +/Encoding ISOLatin1Encoding def currentdict end +/HelveticaISO exch definefont pop + +% XCircuit output starts here. + +/inductor { +% -14 -64 29 112 bbox +begingate +1 1.00 20 -28 20 -44 0 -48 0 -24 spline +1 1.00 -20 -20 -20 -32 0 -28 0 -24 spline +1 1.00 20 32 20 16 0 12 0 36 spline +1 1.00 20 12 20 -4 0 -8 0 16 spline +1 1.00 20 -8 20 -24 0 -28 0 -4 spline +1 1.00 -20 20 -20 8 0 12 0 16 spline +1 1.00 -20 0 -20 -12 0 -8 0 -4 spline +1 1.00 0 -48 0 -64 2 polygon +1 1.00 0 36 0 48 2 polygon +1.000 0.000 0.000 scb +(l.1) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel +(l.2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +(spice:L%i %pl.1 %pl.2 1.0U) {/Times-Roman cf} 2 0 0 1.00 -208 -160 infolabel +sce +(sim:l %pl.1 %pl.2) {/Times-Roman cf} 2 0 0 1.00 -208 -208 infolabel +endgate +} def + +/Transformer { +% -62 -64 108 112 bbox +(?) 1 beginparm +1.00 0 -48 0 inductor +1 1.00 -16 48 -16 -64 2 polygon +1 1.00 0 48 0 -64 2 polygon +1.00 180 32 -16 inductor +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 25 0 1.00 -48 48 pinlabel +(2) {/Helvetica cf} 2 29 0 1.00 -48 -64 pinlabel +(3) {/Helvetica cf} 2 25 0 1.00 32 48 pinlabel +(4) {/Helvetica cf} 2 29 0 1.00 32 -64 pinlabel +sce +mark v1 (pcb:T) {/Times-Roman cf} ctmk 20 0 1.00 -96 -160 infolabel +endgate +} def + +/circle { +% -6 -12 28 24 bbox +% trivial +begingate +1 1.00 16 0 6 0.00 360.00 xcarc +1 1.00 0 0 10 0 2 polygon +1.000 0.000 0.000 scb +(out) {/Times-Roman cf} 2 4 0 1.00 16 0 pinlabel +(out) {/Times-Roman cf} 2 7 0 1.00 0 0 pinlabel +endgate +} def + +/Diode { +% -18 -48 36 96 bbox +(?) 1 beginparm +248 1.00 -18 -16 0 16 18 -16 3 polygon +1 1.00 0 -48 0 -16 2 polygon +1 1.00 0 48 0 16 2 polygon +1 1.00 -18 16 18 16 2 polygon +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -48 pinlabel +sce +mark v1 (pcb:D) {/Helvetica cf} ctmk 20 0 1.00 -64 -144 infolabel +mark ( %p1 %p2 diode) v1 (spice:D) {/Times-Roman cf} ctmk 4 0 1.00 -64 -192 +endgate +} def + +/rectifier { +% -112 -48 192 192 bbox +begingate +1.00 315 -64 96 Diode +1.00 225 32 96 Diode +1.00 225 -64 0 Diode +1.00 315 32 0 Diode +1 1.00 -30 130 -16 144 -2 130 3 polygon +1 1.00 66 62 80 48 66 34 3 polygon +1 1.00 -2 -34 -16 -48 -30 -34 3 polygon +1 1.00 -98 34 -112 48 -98 62 3 polygon +endgate +} def + +/dot { +% -10 -10 20 20 bbox +% trivial +begingate +248 1.00 0 0 6 0.00 360.00 xcarc +1.000 0.000 0.000 scb +(x) {/Times-Roman cf} 2 29 0 1.00 0 0 pinlabel +endgate +} def + +/jumper { +% -4 -14 18 28 bbox +% trivial +begingate +1 1.00 0 0 10 -90.00 90.00 xcarc +1 1.00 0 10 0 16 2 polygon +1 1.00 0 -10 0 -16 2 polygon +1.000 0.000 0.000 scb +(a) {/Times-Roman cf} 2 1 0 1.00 0 16 pinlabel +(a) {/Times-Roman cf} 2 13 0 1.00 0 -16 pinlabel +endgate +} def + +/gnd { +% -32 -60 64 68 bbox +% trivial +begingate +1 1.00 0 0 0 -32 2 polygon +1 1.00 -32 -32 32 -32 2 polygon +1 1.00 -18 -46 18 -46 2 polygon +1 1.00 -4 -60 4 -60 2 polygon +1.000 0.000 0.000 scb +(GND) {/Times-Roman cf} 2 1 0 1.00 0 0 pinglobal +endgate +} def + +/Capacitor { +% -32 -64 186 128 bbox +(1.0) (p) (?) 3 beginparm +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 -32 -6 32 -6 2 polygon +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208 +-160 infolabel +sce +(sim:c %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel +mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label +sce +mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel +endgate +} def + +/Polarized { +% -32 -64 176 128 bbox +(1.0) (p) (?) 3 beginparm +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 0 -80 74 66.00 114.00 xcarc +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208 +-160 infolabel +sce +(sim:e %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel +mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label +sce +mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel +endgate +} def + +%%Page: 1 1 +%%PageOrientation: Portrait +/pgsave save def bop +% 529 953 offsets +1.0000 inchscale +2.6000 setlinewidth + +1.00 0 497 1065 Transformer +1 1.00 449 1113 449 1193 401 1193 3 polygon +1 1.00 449 1001 449 937 401 937 3 polygon +1.00 -1 401 1193 circle +1.00 -1 401 937 circle +1.000 0.000 0.000 scb +(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 385 1193 pinlabel +(-) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 385 937 pinlabel +sce +1.00 0 785 1017 rectifier +1 1.00 529 1113 529 1193 769 1193 769 1161 4 polygon +1 1.00 529 1001 529 937 769 937 769 969 4 polygon +1.00 0 769 969 dot +1.00 0 769 1161 dot +1 1.00 673 1065 641 1065 641 953 3 polygon +1 1.00 641 921 641 873 1201 873 3 polygon +1 1.00 865 1065 1201 1065 2 polygon +1 1.00 961 1065 961 1033 2 polygon +1 1.00 1041 1065 1041 1033 2 polygon +1 1.00 961 905 961 873 2 polygon +1 1.00 1041 905 1041 873 2 polygon +1.00 0 1041 873 dot +1.00 0 961 873 dot +1.00 0 961 1065 dot +1.00 0 1041 1065 dot +1.00 0 865 1065 dot +1.00 0 673 1065 dot +1.00 -1 641 937 jumper +1.00 0 641 873 gnd +1.00 0 641 873 dot +1.00 0 1201 873 circle +1.00 0 1201 1065 circle +1.000 0.000 0.000 scb +(Vout) {0 -80 Kn} {/Helvetica cf} 3 28 0 1.00 1217 1065 pinlabel +sce +(+) {/Symbol cf} 2 20 0 1.00 1249 1065 label +(-) {/Symbol cf} 2 20 0 1.00 1249 873 label +(Bridge Rectifier) {/Helvetica cf} 2 24 0 1.00 369 1273 label +1.00 -1 961 969 [(1.0) (\265) ] Capacitor +1.00 0 1041 969 [(10) (\265) ] Polarized +(1N914) {hS} (\327) {hS} (4) {/HelveticaISO cf} 6 24 0 1.00 849 1145 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/psfiles/buses.ps b/psfiles/buses.ps new file mode 100644 index 0000000..76b21a7 --- /dev/null +++ b/psfiles/buses.ps @@ -0,0 +1,245 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: buses +%%Creator: Xcircuit v2.3 +%%CreationDate: Mon Nov 5 11:36:02 2001 +%%Pages: 1 +%%BoundingBox: 68 68 712 496 +%%DocumentNeededResources: font Helvetica font Helvetica-Oblique +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 2.3 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu) +% The Johns Hopkins University +% +%%BeginResource: procset XCIRCproc 2.3 2 +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } def +/ol { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale /rotval exch def /just exch def + just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform + exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform + exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse + {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt + {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } + if /showflag 0 def /fspc pspc def /Bline 0 def /Tabs 0 array def + /fscale 1.0 def /kY 0 def + gsave dup 1 add copy 0 exch {exch dup type /stringtype eq {true + charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and 0 gt {exch pop + neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt {exch pop + neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} ifelse + /showflag 1 def rotval rotate Kn currentpoint translate + /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def + {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 20 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array + astore def gsave sce translate 0 0 moveto dup 0 lt + {neg 1 sub -1 1 scale} if rotate dup scale } bind def +/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch + 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def +/beginparm { -1 1 {makeparm exch def} for + dup type /arraytype eq { aload length -1 1 {makeparm exch def} + for } if begingate } bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb} bind def + +/hlevel 0 def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def + style 1 and 0 gt not {closepath} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if + style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt + {gar exch get ppaint} { pop eofill } ifelse grestore } if + style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } def + +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def +/insertion {/PSobj save def /showpage {} def bop translate} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog + +% XCircuit output starts here. + +/dbus1 { +% -608 0 1216 42 bbox +begingate +1.000 0.000 0.000 scb +(d[3]) {/Helvetica cf} 2 23 0 1.00 -608 -64 pinlabel +(d[2]) {/Helvetica cf} 2 23 0 1.00 -608 -32 pinlabel +(d[1]) {/Helvetica cf} 2 23 0 1.00 -608 0 pinlabel +(d[0]) {/Helvetica cf} 2 23 0 1.00 -608 32 pinlabel +(d[3]) {/Helvetica cf} 2 20 0 1.00 608 -64 pinlabel +(d[2]) {/Helvetica cf} 2 20 0 1.00 608 -32 pinlabel +(d[1]) {/Helvetica cf} 2 20 0 1.00 608 0 pinlabel +(d[0]) {/Helvetica cf} 2 20 0 1.00 608 32 pinlabel +sce +(data bus) {/Helvetica cf} 2 17 0 1.00 -64 16 label +1 1.00 -608 0 608 0 2 polygon +endgate +} def + +/chip1 { +% -96 -96 192 192 bbox +(?) 1 beginparm +0 1.00 -96 -96 -96 96 96 96 96 -96 4 polygon +( data ) {/Helvetica cf} 2 23 0 1.00 96 0 label +1.000 0.000 0.000 scb +(p0) {/Helvetica cf} 2 20 0 1.00 96 48 pinlabel +(p1) {/Helvetica cf} 2 20 0 1.00 96 16 pinlabel +(p2) {/Helvetica cf} 2 20 0 1.00 96 -16 pinlabel +(p3) {/Helvetica cf} 2 20 0 1.00 96 -48 pinlabel +sce +mark v1 (Chip ) {/Helvetica cf} ctmk 21 0 1.00 0 64 label +endgate +} def + +/arrowhead { +% -12 -32 24 36 bbox +% trivial +begingate +8 -28 beginpath +3 -18 3 -15 0 0 curveto +-3 -15 -3 -18 -8 -28 curveto +-2 -26 2 -26 8 -28 curveto +249 1.00 endpath +endgate +} def + +/arrow { +% -12 -40 24 80 bbox +% trivial +begingate +1 0.80 0 -40 0 20 2 polygon +1.00 0 0 40 arrowhead +endgate +} def + +%%Page: 1 1 +%%PageOrientation: Portrait +/pgsave save def bop +% 1152 692 offsets +1.0000 inchscale +2.6000 setlinewidth + +1 1.00 288 756 288 884 672 884 672 756 4 polygon +1 1.00 352 1012 352 884 608 884 608 1012 4 polygon +1 1.00 432 1012 432 884 752 884 752 756 4 polygon +1 1.00 224 1012 224 884 864 884 864 756 4 polygon +1 2.00 224 884 864 884 2 polygon +1 1.00 1312 1108 1312 980 1728 980 1728 596 1888 596 5 polygon +1 1.00 1408 1108 1408 980 1728 980 1728 692 1888 692 5 polygon +1 1.00 1584 964 1600 996 2 polygon +(2) {/Helvetica cf} 2 17 0 1.00 1584 996 label +1.000 0.000 0.000 scb +(b\(1\)) {/Helvetica cf} 2 17 0 1.00 1312 1108 pinlabel +(b\(2\)) {/Helvetica cf} 2 17 0 1.00 1408 1108 pinlabel +(a[0]) {/Helvetica cf} 2 17 0 1.00 224 1012 pinlabel +(a[1]) {/Helvetica cf} 2 17 0 1.00 352 1012 pinlabel +(a[2]) {/Helvetica cf} 2 17 0 1.00 432 1012 pinlabel +(a[3]) {/Helvetica cf} 2 29 0 1.00 288 756 pinlabel +sce +1.00 0 1024 340 dbus1 +1.00 0 320 324 [(1) ] chip1 +1.00 -1 1728 324 [(2) ] chip1 +(Three styles of buses in xcircuit) {ul} {/Helvetica cf} 3 21 0 1.00 992 1300 +label +(1\) \252standard\272 method) {/Helvetica cf} 2 16 0 1.00 192 1172 label +(" to see actual pins.) {/Helvetica cf} (Options->Show Pin Positions) +{/Helvetica-Oblique cf} (2\) \252sneaky\272 method. Use ") {/Helvetica cf} 6 +16 0 1.00 224 500 label +1.00 120 448 388 arrow +(real pin position \(normally not seen\)) {/Helvetica cf} 2 16 0 0.80 496 420 +label +1.00 60 992 308 arrow +(named the same.) {CR} (Pins on either end are) {CR} (The bus is a subcircuit.) +{/Helvetica cf} 6 28 0 0.80 1040 276 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/psfiles/dff.ps b/psfiles/dff.ps new file mode 100644 index 0000000..a15ffed --- /dev/null +++ b/psfiles/dff.ps @@ -0,0 +1,228 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: dff +%%Creator: Xcircuit v2.5 +%%CreationDate: Tue Dec 18 16:50:59 2001 +%%Pages: 1 +%%BoundingBox: 68 68 371 229 +%%DocumentNeededResources: font Helvetica font Times-Roman +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 2.4 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu) +% The Johns Hopkins University +% +%%BeginResource: procset XCIRCproc 2.4 1 +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } def +/ol { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale neg /rotval exch def + /just exch def just 16 and 0 gt {gsave rotval rotate 0 1 dtransform + gsave pagemat setmatrix idtransform exch grestore 1 0 dtransform + gsave pagemat setmatrix idtransform exch grestore dup abs 1e-9 lt + {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse grestore {-1 /rotval + rotval neg def /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse + exch -1e-9 lt {-1 /rotval rotval neg def /just just dup 12 and + 4 ne {12 xor} if def} {1} ifelse scale } if /showflag 0 def + /fspc pspc def /Bline 0 def /Tabs 0 array def /fscale 1.0 def + /kY 0 def gsave dup 1 add copy 0 exch 1 0 dtransform exch atan rotate + {exch dup type /stringtype eq {true charpath flattenpath} {exec} + ifelse } repeat pop pathbbox grestore 3 -1 roll pop 3 1 roll just + 1 and 0 gt {just 2 and 0 gt {exch pop neg fspc sub} {exch sub 0.5 + mul neg} ifelse} {pop neg fspc add} ifelse exch Bline exch just 4 + and 0 gt {just 8 and 0 gt {exch pop neg fspc sub} {add 0.5 mul neg} + ifelse} {pop neg fspc add} ifelse rotval rotate Kn currentpoint + translate /showflag 1 def /Bline 0 def /Tabs 0 array def /fscale + 1.0 def /kY 0 def {dup type /stringtype eq {show}{exec} ifelse} + repeat grestore } def +/pinlabel { 4 index 32 and 0 ne hlevel 0 eq or { /pspc 20 def label + /pspc 0 def } { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array + astore def gsave sce translate 0 0 moveto neg rotate dup abs scale + } bind def +/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch + 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def +/beginparm { -1 1 {makeparm exch def} for + dup type /arraytype eq { aload length -1 1 {makeparm exch def} + for } if begingate } bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb} bind def + +/hlevel 0 def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def + style 1 and 0 gt not {closepath} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if + style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt + {gar exch get ppaint} { pop eofill } ifelse grestore } if + style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } def + +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def +/insertion {/PSobj save def /showpage {} def bop translate} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog + +% XCircuit output starts here. + +/quadnand { +% -64 -48 128 96 bbox +(?) (1) (1) (2) (3) 5 beginparm +1 1.00 0 -48 -64 -48 -64 48 0 48 4 polygon +1 1.00 56 0 8 0.00 360.00 xcarc +1 1.00 0 0 48 -90.00 90.00 xcarc +1.000 0.000 0.000 scb +mark v5 {/Times-Roman cf} ctmk 4 0 1.00 64 0 pinlabel +mark v3 {/Times-Roman cf} ctmk 7 0 1.00 -64 32 pinlabel +mark v4 {/Times-Roman cf} ctmk 7 0 1.00 -64 -32 pinlabel +sce +mark v2 (-) v1 (pcb:U) {/Helvetica cf} ctmk 20 0 1.00 -80 -96 infolabel +mark v2 (7400-) {/Helvetica cf} ctmk 21 0 0.50 -8 0 label +endgate +} def + +/dot { +% -10 -10 20 20 bbox +% trivial +begingate +248 1.00 0 0 6 0.00 360.00 xcarc +1.000 0.000 0.000 scb +(x) {/Times-Roman cf} 2 29 0 1.00 0 0 pinlabel +endgate +} def + +/circle { +% -6 -12 28 24 bbox +% trivial +begingate +1 1.00 16 0 6 0.00 360.00 xcarc +1 1.00 0 0 10 0 2 polygon +1.000 0.000 0.000 scb +(out) {/Times-Roman cf} 2 4 0 1.00 16 0 pinlabel +(out) {/Times-Roman cf} 2 7 0 1.00 0 0 pinlabel +endgate +} def + +%%Page: 1 1 +%%PageOrientation: Portrait +/pgsave save def bop +% 978 336 offsets +1.0000 inchscale +2.6000 setlinewidth + +1.00 0 450 240 [(?) (4) (12) (13) (11) ] quadnand +1.00 0 450 432 [(?) (3) (9) (10) (8) ] quadnand +1.00 0 770 432 [(?) (2) (4) (5) (6) ] quadnand +1.00 0 770 240 [(?) (1) (1) (2) (3) ] quadnand +1 1.00 834 240 882 240 882 288 674 352 674 400 706 400 6 polygon +1 1.00 834 432 882 432 882 384 674 320 674 272 706 272 6 polygon +1 1.00 386 464 306 464 2 polygon +1 1.00 386 208 306 208 2 polygon +1.00 0 882 432 dot +1.00 0 882 240 dot +1.00 0 914 432 circle +1.00 0 914 240 circle +-1.00 0 306 464 circle +-1.00 0 306 208 circle +1 1.00 882 432 914 432 2 polygon +1 1.00 882 240 914 240 2 polygon +1 1.00 706 464 594 464 562 432 514 432 4 polygon +1 1.00 706 208 594 208 562 240 514 240 4 polygon +1 1.00 546 432 546 336 354 336 354 272 386 272 5 polygon +1 1.00 386 400 322 400 322 208 3 polygon +1.00 0 322 208 dot +1.00 0 546 432 dot +1.000 0.000 0.000 scb +(Q) {/Helvetica cf} 2 20 0 1.00 930 432 pinlabel +(Q) {ol} {/Helvetica cf} 3 20 0 1.00 930 240 pinlabel +(D) {/Helvetica cf} 2 23 0 1.00 290 464 pinlabel +(CLK) {/Helvetica cf} 2 23 0 1.00 290 208 pinlabel +sce +(D-FF implementation in 7400 IC) {/Helvetica cf} 2 17 0 1.00 594 576 label +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/psfiles/filter.ps b/psfiles/filter.ps new file mode 100644 index 0000000..deb06e5 --- /dev/null +++ b/psfiles/filter.ps @@ -0,0 +1,260 @@ +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 2.0 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--2/25/99 (tim@bach.ece.jhu.edu) +% The Johns Hopkins University +% +%%BeginResource: procset XCIRCproc 2.0 2 +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/cf { dup type /realtype eq {40 mul /fscale exch def} if dup /xfont exch def + findfont fscale scalefont setfont } def +/Ss { gsave 0.67 dup scale gsave mty neg rmoveto + glevel 1 add /glevel exch def } def +/ss { gsave 0.67 dup scale gsave mty 0.5 mul rmoveto + glevel 1 add /glevel exch def } def +/ns { currentpoint transform % preserve x position! + glevel {grestore} repeat /glevel 0 def + itransform pop currentpoint pop sub 0 rmoveto } def +/ul { showflag 1 eq { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } def +/ol { showflag 1 eq { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } def +/stW { gsave true charpath flattenpath pathbbox pop exch pop sub + grestore } def +/bs { stW 0 rmoveto } def +/pspc 0 def +/qS { (aa) stW (a a) stW sub 4 div 0 rmoveto } def +/hS { qS qS } def +/textx { dup 1 add copy 0 exch { exch dup type /stringtype eq + {stringwidth pop add}{exec} ifelse } repeat neg ns } def +/mty { 0 topmat setmatrix (A) true charpath flattenpath pathbbox exch + pop exch sub exch pop neg grestore } def +/texty { gsave 2 copy pop exec mty } def +/tcenter { textx grestore 0.5 mul 0 rmoveto } def +/tright { textx grestore fspc sub 0 rmoveto } def +/tmiddle { texty 0.5 mul rmoveto } def +/ttop { texty fspc sub rmoveto } def +/tshow {{ dup type /stringtype eq {show}{exec} ifelse} repeat ns } def + +/label { gsave translate 0 0 moveto rotate /just exch def just 16 and 0 gt + {0 1 dtransform gsave pagemat setmatrix idtransform exch grestore + 1 0 dtransform gsave pagemat setmatrix idtransform exch grestore + dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse + {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt + {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } if + /glevel 0 def /showflag 0 def /fspc pspc def + just 1 and 0 gt {gsave just 2 and 0 gt {tright}{tcenter} ifelse} + {fspc 0 rmoveto} ifelse + just 4 and 0 gt {just 8 and 0 gt {ttop}{tmiddle} ifelse} + {0 fspc rmoveto} ifelse + /showflag 1 def tshow grestore } def +/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def } + { pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def + +/begingate { /hlevel hlevel 1 add def gsave translate 0 0 moveto dup 0 lt + {neg 1 sub -1 1 scale} if rotate dup scale } bind def +/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch + 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def +/beginparm { -1 1 {makeparm exch def} for + dup type /arraytype eq { aload length -1 1 {makeparm exch def} + for } if begingate } bind def +/endgate { /hlevel hlevel 1 sub def grestore } bind def + +/hlevel 0 def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def + style 1 and 0 gt not {closepath} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if + style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt + {gar exch get ppaint} { pop eofill } ifelse grestore } if + style 8 and 0 gt { newpath } { stroke } ifelse grestore } def +/scb { gsave setrgbcolor } bind def /sce { grestore } bind def + +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 setgray } def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog + +% XCircuit output starts here. + +/dot { +% -10 -10 20 20 bbox +begingate +248 1.00 0 0 6 0.00 360.00 xcarc +endgate +} def + +/circle { +% -6 -12 28 24 bbox +begingate +1 1.00 16 0 6 0.00 360.00 xcarc +1 1.00 0 0 10 0 2 polygon +1.000 0.000 0.000 scb +(out) {/Times-Roman 1.000 cf} 2 4 0 16 0 pinlabel +(out) {/Times-Roman 1.000 cf} 2 7 0 0 0 pinlabel +sce +endgate +} def + +/gnd { +% -32 -60 64 68 bbox +begingate +1 1.00 0 0 0 -32 2 polygon +1 1.00 -32 -32 32 -32 2 polygon +1 1.00 -18 -46 18 -46 2 polygon +1 1.00 -4 -60 4 -60 2 polygon +1.000 0.000 0.000 scb +(GND) {/Times-Roman 1.000 cf} 2 1 0 0 0 pinglobal +sce +endgate +} def + +/resistor { +% -14 -64 151 128 bbox +(1.0) (k) 2 beginparm +% fundamental +1 1.00 0 64 0 36 2 polygon +1 1.00 0 -64 0 -36 2 polygon +1 1.00 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon +1.000 0.000 0.000 scb +(r.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(r.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:R%i %pr.1 %pr.2 %v"1.0"%v"k") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel +(sim:r %pr.1 %pr.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel +(W) {/Symbol 1.000 cf} v2 {hS} v1 {/Helvetica 1.000 cf} 6 20 0 32 0 label +endgate +} def + +/polarized { +% -32 -64 177 128 bbox +(1.0) (p) 2 beginparm +% fundamental +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 0 -80 74 66.00 114.00 xcarc +1.000 0.000 0.000 scb +(t) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(b) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:C%i %pt %pb %v"1.0"%v"p") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel +(sim:e %pt %pb %pb) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel +(F) v2 {hS} v1 {/Helvetica 1.000 cf} 5 20 0 48 0 label +endgate +} def + +/source { +% -32 -64 64 128 bbox +% hidden +begingate +1 1.00 0 0 32 0.00 360.00 xcarc +1 1.00 0 32 0 64 2 polygon +1 1.00 0 -32 0 -64 2 polygon +endgate +} def + +/acsource { +% -32 -64 211 128 bbox +(5) (0) (1) (k) 4 beginparm +% fundamental +1.00 0 0 0 source +1 0.80 0 -48 0 48 -16 0 16 0 spline +1.000 0.000 0.000 scb +(s.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(s.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +sce +(spice:V%i %ps.m %ps.p SIN\(%v"0" %v"5" %v"1"%v"k"\)) {/Helvetica 1.000 cf} 2 20 0 -336 -160 infolabel +(offset) {ss} (V) {hS} v2 {/Helvetica 1.000 cf} 6 20 0 48 0 label +(p-p) {ss} (V) {hS} v1 {/Helvetica 1.000 cf} 6 20 0 48 48 label +(Hz) v4 {hS} v3 {/Helvetica 1.000 cf} 5 20 0 48 -48 label +endgate +} def + +%%Page: 1 1 +%%PageOrientation: Portrait +/pgsave save def bop +% 912 464 offsets +1.0000 inchscale +2.6000 setlinewidth + +1 1.00 528 528 528 592 784 592 3 polygon +1 1.00 528 400 528 336 784 336 3 polygon +1 1.00 784 464 976 464 2 polygon +1 1.00 784 336 976 336 2 polygon +1.00 0 784 336 dot +1.00 0 784 464 dot +1.00 0 976 464 circle +1.00 0 976 336 circle +1.00 -1 464 336 circle +1 1.00 464 336 528 336 2 polygon +1 1.00 528 592 464 592 2 polygon +1.00 -1 464 592 circle +1.00 0 640 336 gnd +1.00 0 640 336 dot +1.00 0 528 336 dot +1.00 0 528 592 dot +1.000 0.000 0.000 scb +(Vin) {/Helvetica 1.000 cf} 2 23 0 448 592 pinlabel +(Vout) {/Helvetica 1.000 cf} 2 20 0 992 464 pinlabel +sce +1.00 0 784 528 [(10) (k) ] resistor +1.00 0 784 400 [(1.0) (u) ] polarized +1.00 0 528 464 [(5) (0) (5) (k) ] acsource +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/psfiles/integrator.ps b/psfiles/integrator.ps new file mode 100644 index 0000000..c290875 --- /dev/null +++ b/psfiles/integrator.ps @@ -0,0 +1,327 @@ +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 2.0 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--2/25/99 (tim@bach.ece.jhu.edu) +% The Johns Hopkins University +% +%%BeginResource: procset XCIRCproc 2.0 2 +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/cf { dup type /realtype eq {40 mul /fscale exch def} if dup /xfont exch def + findfont fscale scalefont setfont } def +/Ss { gsave 0.67 dup scale gsave mty neg rmoveto + glevel 1 add /glevel exch def } def +/ss { gsave 0.67 dup scale gsave mty 0.5 mul rmoveto + glevel 1 add /glevel exch def } def +/ns { currentpoint transform % preserve x position! + glevel {grestore} repeat /glevel 0 def + itransform pop currentpoint pop sub 0 rmoveto } def +/ul { showflag 1 eq { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } def +/ol { showflag 1 eq { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } def +/stW { gsave true charpath flattenpath pathbbox pop exch pop sub + grestore } def +/bs { stW 0 rmoveto } def +/pspc 0 def +/qS { (aa) stW (a a) stW sub 4 div 0 rmoveto } def +/hS { qS qS } def +/textx { dup 1 add copy 0 exch { exch dup type /stringtype eq + {stringwidth pop add}{exec} ifelse } repeat neg ns } def +/mty { 0 topmat setmatrix (A) true charpath flattenpath pathbbox exch + pop exch sub exch pop neg grestore } def +/texty { gsave 2 copy pop exec mty } def +/tcenter { textx grestore 0.5 mul 0 rmoveto } def +/tright { textx grestore fspc sub 0 rmoveto } def +/tmiddle { texty 0.5 mul rmoveto } def +/ttop { texty fspc sub rmoveto } def +/tshow {{ dup type /stringtype eq {show}{exec} ifelse} repeat ns } def + +/label { gsave translate 0 0 moveto rotate /just exch def just 16 and 0 gt + {0 1 dtransform gsave pagemat setmatrix idtransform exch grestore + 1 0 dtransform gsave pagemat setmatrix idtransform exch grestore + dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse + {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt + {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } if + /glevel 0 def /showflag 0 def /fspc pspc def + just 1 and 0 gt {gsave just 2 and 0 gt {tright}{tcenter} ifelse} + {fspc 0 rmoveto} ifelse + just 4 and 0 gt {just 8 and 0 gt {ttop}{tmiddle} ifelse} + {0 fspc rmoveto} ifelse + /showflag 1 def tshow grestore } def +/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def } + { pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def + +/begingate { /hlevel hlevel 1 add def gsave translate 0 0 moveto dup 0 lt + {neg 1 sub -1 1 scale} if rotate dup scale } bind def +/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch + 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def +/beginparm { -1 1 {makeparm exch def} for + dup type /arraytype eq { aload length -1 1 {makeparm exch def} + for } if begingate } bind def +/endgate { /hlevel hlevel 1 sub def grestore } bind def + +/hlevel 0 def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def + style 1 and 0 gt not {closepath} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if + style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt + {gar exch get ppaint} { pop eofill } ifelse grestore } if + style 8 and 0 gt { newpath } { stroke } ifelse grestore } def +/scb { gsave setrgbcolor } bind def /sce { grestore } bind def + +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 setgray } def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog + +% XCircuit output starts here. + +/nmos { +% -64 -64 64 128 bbox +begingate +% fundamental +1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon +1 1.00 -44 -28 -44 28 2 polygon +1 1.00 -44 0 -64 0 2 polygon +1.000 0.000 0.000 scb +(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel +(S) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel +(D) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel +(spice:M%i %pD %pG %pS GND nmos) {/Times-Roman 1.000 cf} 2 4 0 -244 -139 infolabel +(sim:n %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -244 -187 infolabel +sce +endgate +} def + +/gnd { +% -32 -60 64 68 bbox +begingate +1 1.00 0 0 0 -32 2 polygon +1 1.00 -32 -32 32 -32 2 polygon +1 1.00 -18 -46 18 -46 2 polygon +1 1.00 -4 -60 4 -60 2 polygon +1.000 0.000 0.000 scb +(GND) {/Times-Roman 1.000 cf} 2 1 0 0 0 pinglobal +sce +endgate +} def + +/pmos { +% -64 -64 64 128 bbox +begingate +% fundamental +1 1.00 -44 -28 -44 28 2 polygon +1 1.00 -60 0 -64 0 2 polygon +1 1.00 0 -64 0 -28 -32 -28 -32 28 0 28 0 64 6 polygon +1 1.00 -52 0 8 0.00 360.00 xcarc +1.000 0.000 0.000 scb +(S) {/Helvetica 1.000 cf} 2 9 0 0 64 pinlabel +(D) {/Helvetica 1.000 cf} 2 13 0 0 -64 pinlabel +(G) {/Helvetica 1.000 cf} 2 7 0 -64 0 pinlabel +(spice:M%i %pD %pG %pS Vdd pmos) {/Times-Roman 1.000 cf} 2 4 0 -196 -139 infolabel +(sim:p %pG %pD %pS) {/Times-Roman 1.000 cf} 2 4 0 -196 -187 infolabel +sce +endgate +} def + +/vdd { +% -32 0 64 66 bbox +begingate +1 1.00 0 0 0 32 2 polygon +1 1.00 -32 32 32 32 2 polygon +(Vdd) {/Times-Roman 0.900 cf} 2 17 0 0 38 label +1.000 0.000 0.000 scb +(Vdd) {/Times-Roman 1.000 cf} 2 13 0 0 0 pinglobal +sce +endgate +} def + +/dot { +% -10 -10 20 20 bbox +begingate +248 1.00 0 0 6 0.00 360.00 xcarc +endgate +} def + +/circle { +% -6 -12 28 24 bbox +begingate +1 1.00 16 0 6 0.00 360.00 xcarc +1 1.00 0 0 10 0 2 polygon +1.000 0.000 0.000 scb +(out) {/Times-Roman 1.000 cf} 2 4 0 16 0 pinlabel +(out) {/Times-Roman 1.000 cf} 2 7 0 0 0 pinlabel +sce +endgate +} def + +%%Page: wramp 1 +%%PageOrientation: Portrait +/pgsave save def bop +% 454 416 offsets +1.0000 inchscale +2.6000 setlinewidth + +1.00 0 406 480 nmos +1.00 -1 502 480 nmos +1 1.00 406 416 502 416 2 polygon +1.00 0 454 352 nmos +1.00 0 454 288 gnd +1.00 0 406 608 pmos +1.00 -1 502 608 pmos +1.00 0 406 672 vdd +1.00 0 502 672 vdd +1.00 0 742 608 pmos +1.00 -1 166 608 pmos +1 1.00 230 608 342 608 2 polygon +1 1.00 566 608 678 608 2 polygon +1 1.00 614 608 614 544 502 544 3 polygon +1 1.00 406 544 294 544 294 608 3 polygon +1.00 0 166 672 vdd +1.00 0 742 672 vdd +1.00 0 742 192 nmos +1.00 -1 166 192 nmos +1 1.00 166 256 166 544 2 polygon +1 1.00 742 544 742 256 2 polygon +1 1.00 742 448 806 448 2 polygon +1.00 0 166 128 gnd +1.00 0 742 128 gnd +1 1.00 678 192 230 192 2 polygon +1 1.00 166 256 294 256 294 192 3 polygon +1.00 0 294 192 dot +1.00 0 166 256 dot +1.00 0 454 416 dot +1.00 0 294 608 dot +1.00 0 406 544 dot +1.00 0 502 544 dot +1.00 0 614 608 dot +1.00 0 742 448 dot +1.00 0 566 480 circle +1.00 -1 342 480 circle +1.00 -1 390 352 circle +1.00 0 806 448 circle +1.000 0.000 0.000 scb +(in.p) {/Helvetica 1.000 cf} 2 20 0 582 480 pinlabel +(in.m) {/Helvetica 1.000 cf} 2 23 0 326 480 pinlabel +(bias) {/Helvetica 1.000 cf} 2 23 0 374 352 pinlabel +(out) {/Helvetica 1.000 cf} 2 20 0 822 448 pinlabel +sce +pgsave restore showpage + +/wramp { +% -80 -80 160 160 bbox +begingate +0 1.00 -80 -80 -80 80 48 24 48 -24 4 polygon +1 1.00 0 -80 0 -45 2 polygon +1 1.00 48 0 80 0 2 polygon +(-) {/Symbol 1.000 cf} 2 5 0 -61 50 label +(+) {/Symbol 1.000 cf} 2 5 0 -61 -46 label +1.000 0.000 0.000 scb +(in.m) {/Times-Roman 1.000 cf} 2 7 0 -80 48 pinlabel +(in.p) {/Times-Roman 1.000 cf} 2 7 0 -80 -48 pinlabel +(out) {/Times-Roman 1.000 cf} 2 4 0 80 0 pinlabel +(bias) {/Times-Roman 1.000 cf} 2 13 0 0 -80 pinlabel +sce +endgate +} def + +/capacitor { +% -32 -64 64 128 bbox +begingate +% fundamental +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 -32 -6 32 -6 2 polygon +1.000 0.000 0.000 scb +(c.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel +(c.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel +(spice:C%i %pc.1 %pc.2 1.0P) {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel +(sim:c %pc.1 %pc.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel +sce +endgate +} def + +%%Page: 2 2 +%%PageOrientation: Portrait +/pgsave save def bop +% 294 390 offsets +1.0000 inchscale +2.6000 setlinewidth + +1.00 0 310 390 wramp +1 1.00 230 438 198 438 198 518 422 518 422 390 5 polygon +1 1.00 390 390 454 390 2 polygon +1.00 0 422 390 dot +1.00 0 454 390 circle +1.00 -1 166 342 circle +1.00 -271 310 310 circle +1.000 0.000 0.000 scb +(Bias) {/Helvetica 1.000 cf} 2 29 0 310 294 pinlabel +sce +1 1.00 166 342 230 342 2 polygon +1.000 0.000 0.000 scb +(Input) {/Helvetica 1.000 cf} 2 23 0 150 342 pinlabel +(Output) {/Helvetica 1.000 cf} 2 20 0 470 390 pinlabel +sce +(Integrator) {/Helvetica 1.000 cf} 2 25 0 294 582 label +1.00 0 422 326 capacitor +1.00 0 422 262 gnd +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/psfiles/powersup.ps b/psfiles/powersup.ps new file mode 100644 index 0000000..d568156 --- /dev/null +++ b/psfiles/powersup.ps @@ -0,0 +1,429 @@ +%!PS-Adobe-3.0 +%%Title: powersup +%%Creator: Xcircuit v2.3 +%%CreationDate: Wed Jul 18 14:38:19 2001 +%%Pages: 2 +%%BoundingBox: 118 314 494 478 +%%DocumentNeededResources: font Helvetica font Times-Roman font Times-RomanISO +%%+ font HelveticaISO font Symbol +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 2.3 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--5/16/01 (tim@bach.ece.jhu.edu) +% The Johns Hopkins University +% +%%BeginResource: procset XCIRCproc 2.3 1 +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/ul { dup type /stringtype eq showflag 1 eq and { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } def +/ol { dup type /stringtype eq showflag 1 eq and { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } def +/stW { gsave currentpoint newpath moveto true charpath flattenpath + pathbbox pop exch pop sub grestore } def +/Ts {mark Tabs aload pop counttomark 1 add array astore /Tabs exch def Tabs + 0 currentpoint pop put} def +/Tbn {mark Tabs aload pop counttomark dup 2 add 1 roll cleartomark 1 sub} def +/Tb { 0 1 Tbn {Tabs exch get dup currentpoint pop lt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/Tf { Tbn -1 0 {Tabs exch get dup currentpoint pop gt + {currentpoint exch pop moveto exit} {pop} ifelse } for } def +/qS { (aa) stW (a a) stW sub 4 div 0 Kn } def +/hS { qS qS } def +/pspc 0 def +/cf0 { scalefont setfont } bind def +/Kn { dup kY add /kY exch def rmoveto } bind def +/ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.33 mul neg Kn} def +/Ss { /fscale fscale 0.67 mul def currentfont 0.67 cf0 0 fscale0 fscale mul + 0.67 mul Kn } def +/ns { 0 kY neg Kn /kY 0 def /fscale 1.0 def xfont0 1.0 cf0 } def +/CR { ns 0 /Bline Bline fscale0 neg add def Bline moveto } def +/cf { dup type /realtype ne {1.0} if exch findfont exch kY 0 eq + { 40 mul dup /fscale0 exch def cf0 /xfont0 currentfont def} + {fscale0 mul fscale mul cf0} ifelse } def +/ctmk { counttomark dup 2 add -1 roll pop } bind def +/label { gsave translate 0 0 moveto dup scale /rotval exch def /just exch def + just 16 and 0 gt {0 1 dtransform gsave pagemat setmatrix idtransform + exch grestore 1 0 dtransform gsave pagemat setmatrix idtransform + exch grestore dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse + {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt + {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } + if /showflag 0 def /fspc pspc def /Bline 0 def /Tabs 0 array def + /fscale 1.0 def /kY 0 def + gsave dup 1 add copy 0 exch {exch dup type /stringtype eq {true + charpath flattenpath} {exec} ifelse } repeat pop pathbbox grestore + 3 -1 roll pop 3 1 roll just 1 and 0 gt {just 2 and 0 gt {exch pop + neg fspc sub} {exch sub 0.5 mul neg} ifelse} {pop neg fspc add} + ifelse exch Bline exch just 4 and 0 gt {just 8 and 0 gt {exch pop + neg fspc sub} {add 0.5 mul neg} ifelse} {pop neg fspc add} ifelse + /showflag 1 def rotval rotate Kn currentpoint translate + /Bline 0 def /Tabs 0 array def /fscale 1.0 def /kY 0 def + {dup type /stringtype eq {show}{exec} ifelse} repeat grestore } def +/pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def } + { pop pop pop pop pop {pop} repeat } ifelse } def +/pinglobal { pinlabel } def +/infolabel { pinlabel } def + +/scb { setrgbcolor } bind def /sce { defColor aload pop scb } bind def +/cRedef {/defColor currentcolor 3 array astore def} def +/begingate { /hlevel hlevel 1 add def /defColor currentcolor sce 3 array + astore def gsave sce translate 0 0 moveto dup 0 lt + {neg 1 sub -1 1 scale} if rotate dup scale } bind def +/makeparm {3 string cvs dup length 1 add string /tstr exch def tstr exch + 1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def +/beginparm { -1 1 {makeparm exch def} for + dup type /arraytype eq { aload length -1 1 {makeparm exch def} + for } if begingate } bind def +/endgate { /hlevel hlevel 1 sub def grestore defColor aload pop cRedef + scb} bind def + +/hlevel 0 def +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def + style 1 and 0 gt not {closepath} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if + style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt + {gar exch get ppaint} { pop eofill } ifelse grestore } if + style 8 and 0 gt style 512 eq or { newpath } { stroke } ifelse grestore } def + +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 0 0 scb cRedef } def +/insertion {/PSobj save def /showpage {} def bop translate} def +/end_insert {PSobj restore} def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog + +/Times-Roman findfont dup length dict begin +{1 index /FID ne {def} {pop pop} ifelse} forall +/Encoding ISOLatin1Encoding def currentdict end +/Times-RomanISO exch definefont pop + +/Helvetica findfont dup length dict begin +{1 index /FID ne {def} {pop pop} ifelse} forall +/Encoding ISOLatin1Encoding def currentdict end +/HelveticaISO exch definefont pop + +% XCircuit output starts here. + +/inductor { +% -14 -64 29 112 bbox +begingate +1 1.00 20 -28 20 -44 0 -48 0 -24 spline +1 1.00 -20 -20 -20 -32 0 -28 0 -24 spline +1 1.00 20 32 20 16 0 12 0 36 spline +1 1.00 20 12 20 -4 0 -8 0 16 spline +1 1.00 20 -8 20 -24 0 -28 0 -4 spline +1 1.00 -20 20 -20 8 0 12 0 16 spline +1 1.00 -20 0 -20 -12 0 -8 0 -4 spline +1 1.00 0 -48 0 -64 2 polygon +1 1.00 0 36 0 48 2 polygon +1.000 0.000 0.000 scb +(l.1) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel +(l.2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +(spice:L%i %pl.1 %pl.2 1.0U) {/Times-Roman cf} 2 0 0 1.00 -208 -160 infolabel +sce +(sim:l %pl.1 %pl.2) {/Times-Roman cf} 2 0 0 1.00 -208 -208 infolabel +endgate +} def + +/Transformer { +% -62 -64 108 112 bbox +(?) 1 beginparm +1.00 0 -48 0 inductor +1 1.00 -16 48 -16 -64 2 polygon +1 1.00 0 48 0 -64 2 polygon +1.00 180 32 -16 inductor +1.000 0.000 0.000 scb +(1) {/Helvetica cf} 2 25 0 1.00 -48 48 pinlabel +(2) {/Helvetica cf} 2 29 0 1.00 -48 -64 pinlabel +(3) {/Helvetica cf} 2 25 0 1.00 32 48 pinlabel +(4) {/Helvetica cf} 2 29 0 1.00 32 -64 pinlabel +sce +mark v1 (pcb:T) {/Times-Roman cf} ctmk 20 0 1.00 -96 -160 infolabel +endgate +} def + +/circle { +% -6 -12 28 24 bbox +% trivial +begingate +1 1.00 16 0 6 0.00 360.00 xcarc +1 1.00 0 0 10 0 2 polygon +1.000 0.000 0.000 scb +(out) {/Times-Roman cf} 2 4 0 1.00 16 0 pinlabel +(out) {/Times-Roman cf} 2 7 0 1.00 0 0 pinlabel +endgate +} def + +/diode { +% -18 -48 36 96 bbox +(?) 1 beginparm +248 1.00 -18 -16 0 16 18 -16 3 polygon +1 1.00 0 -48 0 -16 2 polygon +1 1.00 0 48 0 16 2 polygon +1 1.00 -18 16 18 16 2 polygon +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 48 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -48 pinlabel +sce +mark v1 (pcb:D) {/Helvetica cf} ctmk 20 0 1.00 -64 -144 infolabel +endgate +} def + +/rectifier { +% -112 -48 192 192 bbox +begingate +1.00 315 -64 96 diode +1.00 225 32 96 diode +1.00 225 -64 0 diode +1.00 315 32 0 diode +1 1.00 -30 130 -16 144 -2 130 3 polygon +1 1.00 66 62 80 48 66 34 3 polygon +1 1.00 -2 -34 -16 -48 -30 -34 3 polygon +1 1.00 -98 34 -112 48 -98 62 3 polygon +endgate +} def + +/dot { +% -10 -10 20 20 bbox +% trivial +begingate +248 1.00 0 0 6 0.00 360.00 xcarc +1.000 0.000 0.000 scb +(x) {/Times-Roman cf} 2 29 0 1.00 0 0 pinlabel +endgate +} def + +/jumper { +% -4 -14 18 28 bbox +% trivial +begingate +1 1.00 0 0 10 -90.00 90.00 xcarc +1 1.00 0 10 0 16 2 polygon +1 1.00 0 -10 0 -16 2 polygon +1.000 0.000 0.000 scb +(a) {/Times-Roman cf} 2 1 0 1.00 0 16 pinlabel +(a) {/Times-Roman cf} 2 13 0 1.00 0 -16 pinlabel +endgate +} def + +/gnd { +% -32 -60 64 68 bbox +% trivial +begingate +1 1.00 0 0 0 -32 2 polygon +1 1.00 -32 -32 32 -32 2 polygon +1 1.00 -18 -46 18 -46 2 polygon +1 1.00 -4 -60 4 -60 2 polygon +1.000 0.000 0.000 scb +(GND) {/Times-Roman cf} 2 1 0 1.00 0 0 pinglobal +endgate +} def + +/Capacitor { +% -32 -64 186 128 bbox +(1.0) (p) (?) 3 beginparm +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 -32 -6 32 -6 2 polygon +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208 +-160 infolabel +sce +(sim:c %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel +mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label +sce +mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel +endgate +} def + +/Polarized { +% -32 -64 176 128 bbox +(1.0) (p) (?) 3 beginparm +1 1.00 0 -64 0 -6 2 polygon +1 1.00 0 64 0 6 2 polygon +1 1.00 -32 6 32 6 2 polygon +1 1.00 0 -80 74 66.00 114.00 xcarc +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +mark v2 v1 ( %p1 %p2 ) v3 (spice:C) {/Times-RomanISO cf} ctmk 4 0 1.00 -208 +-160 infolabel +sce +(sim:e %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel +mark (F) v2 {hS} v1 {/Times-RomanISO cf} ctmk 20 0 1.00 48 0 label +sce +mark v3 (pcb:C) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel +endgate +} def + +%%Page: power_supply 1 +%%PageOrientation: Portrait +/pgsave save def bop +% power_supply is_symbol +% 529 953 offsets +1.0000 inchscale +2.6000 setlinewidth + +1.00 0 497 1065 Transformer +1 1.00 449 1113 449 1193 401 1193 3 polygon +1 1.00 449 1001 449 937 401 937 3 polygon +1.00 -1 401 1193 circle +1.00 -1 401 937 circle +1.000 0.000 0.000 scb +(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 385 1193 pinlabel +(-) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 385 937 pinlabel +sce +1.00 0 785 1017 rectifier +1 1.00 529 1113 529 1193 769 1193 769 1161 4 polygon +1 1.00 529 1001 529 937 769 937 769 969 4 polygon +1.00 0 769 969 dot +1.00 0 769 1161 dot +1 1.00 673 1065 641 1065 641 953 3 polygon +1 1.00 641 921 641 873 1201 873 3 polygon +1 1.00 865 1065 1201 1065 2 polygon +1 1.00 961 1065 961 1033 2 polygon +1 1.00 1041 1065 1041 1033 2 polygon +1 1.00 961 905 961 873 2 polygon +1 1.00 1041 905 1041 873 2 polygon +1.00 0 1041 873 dot +1.00 0 961 873 dot +1.00 0 961 1065 dot +1.00 0 1041 1065 dot +1.00 0 865 1065 dot +1.00 0 673 1065 dot +1.00 -1 641 937 jumper +1.00 0 641 873 gnd +1.00 0 641 873 dot +1.00 0 1201 873 circle +1.00 0 1201 1065 circle +1.000 0.000 0.000 scb +(Vout) {0 -80 Kn} {/Helvetica cf} 3 28 0 1.00 1217 1065 pinlabel +sce +(+) {/Symbol cf} 2 20 0 1.00 1249 1065 label +(-) {/Symbol cf} 2 20 0 1.00 1249 873 label +(Bridge Rectifier) {/Helvetica cf} 2 24 0 1.00 369 1273 label +1.00 -1 961 969 [(1.0) (\265) ] Capacitor +1.00 0 1041 969 [(10) (\265) ] Polarized +(1N914) {hS} (\327) {hS} (4) {/HelveticaISO cf} 6 24 0 1.00 849 1145 label +pgsave restore showpage + +/power_supply { +% -224 -208 416 416 bbox +% power_supply is_schematic +begingate +0 1.00 -224 -208 -224 208 192 208 192 -208 4 polygon +(+) {/Symbol cf} (V) {/Helvetica cf} 4 20 0 1.00 -192 112 label +(-) {/Symbol cf} (V) {/Helvetica cf} 4 20 0 1.00 -192 -112 label +1.000 0.000 0.000 scb +(+) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 -224 112 pinlabel +(-) {/Symbol cf} (V) {/Helvetica cf} 4 23 0 1.00 -224 -112 pinlabel +sce +(power supply) {CR} (unregulated) {/Helvetica cf} 4 21 0 1.00 -16 16 label +1.000 0.000 0.000 scb +(Vout) {/Helvetica cf} 2 20 0 1.00 192 112 pinlabel +sce +(Vout) {/Helvetica cf} 2 23 0 1.00 160 112 label +endgate +} def + +/Resistor { +% -14 -64 157 128 bbox +(1.0) (k) (?) 3 beginparm +1 1.00 0 64 0 36 2 polygon +1 1.00 0 -64 0 -36 2 polygon +1 1.00 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon +1.000 0.000 0.000 scb +(1) {/Times-Roman cf} 2 9 0 1.00 0 64 pinlabel +(2) {/Times-Roman cf} 2 13 0 1.00 0 -64 pinlabel +sce +mark v2 v1 ( %p1 %p2 ) v3 (spice:R) {/Times-Roman cf} ctmk 4 0 1.00 -208 -160 +infolabel +sce +(sim:R %p1 %p2) {/Times-Roman cf} 2 4 0 1.00 -208 -208 infolabel +mark (W) {/Symbol cf} v2 {hS} v1 {/Times-Roman cf} ctmk 20 0 1.00 32 0 label +sce +mark v3 (pcb:R) {/Times-Roman cf} ctmk 20 0 1.00 -208 -256 infolabel +endgate +} def + +%%Page: 2 2 +%%PageOrientation: Portrait +/pgsave save def bop +% 1166 848 offsets +1.0000 inchscale +2.6000 setlinewidth + +1.00 0 782 1056 power_supply +1 1.00 558 1168 414 1168 2 polygon +1 1.00 558 944 414 944 2 polygon +1.00 0 1166 1040 Resistor +1 1.00 974 1168 1166 1168 1166 1104 3 polygon +1.00 0 1166 976 gnd +(AC input) {/Helvetica cf} 2 21 0 1.00 398 1056 label +(+) {/Symbol cf} 2 21 0 1.00 398 1136 label +(-) {/Symbol cf} 2 21 0 1.00 398 976 label +1.00 -1 414 1168 circle +1.00 -1 414 944 circle +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/psfiles/test1.ps b/psfiles/test1.ps new file mode 100644 index 0000000..5cc16f5 --- /dev/null +++ b/psfiles/test1.ps @@ -0,0 +1,154 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: test1 +%%Creator: Xcircuit v2.0 +%%CreationDate: Mon May 24 11:14:54 1999 +%%Pages: 1 +%%BoundingBox: 68 68 214 118 +%%DocumentNeededResources: font Times-Italic font Times-Roman +%%EndComments +%%BeginProlog +% +% PostScript prolog for output from xcircuit +% Version: 2.0 +% +% Electrical circuit (and otherwise general) drawing program +% +% Written by Tim Edwards 8/5/93--8/8/97 (tim@bach.ece.jhu.edu) +% The Johns Hopkins University +% +%%BeginResource: procset XCIRCproc 2.0 2 +% supporting definitions --- these are the primary xcircuit types. + +/XCIRCsave save def +/topmat matrix currentmatrix def + +/fontslant { /slant exch def [1 0 slant 1 0 0] + exch findfont exch makefont dup length dict /ndict exch def + { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall + ndict definefont pop} def +/cf { dup type /realtype eq {40 mul /fscale exch def} if dup /xfont exch def + findfont fscale scalefont setfont } def +/Ss { gsave 0.67 dup scale gsave mty neg rmoveto + glevel 1 add /glevel exch def } def +/ss { gsave 0.67 dup scale gsave mty 0.5 mul rmoveto + glevel 1 add /glevel exch def } def +/ns { currentpoint transform % preserve x position! + glevel {grestore} repeat /glevel 0 def + itransform pop currentpoint pop sub 0 rmoveto } def +/ul { showflag 1 eq { gsave + currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_) + false charpath flattenpath pathbbox grestore exch pop 1 index + sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0 + rlineto stroke moveto } if } def +/ol { showflag 1 eq { gsave gsave + currentpoint topmat setmatrix 2 index stringwidth pop 3 index + true charpath flattenpath pathbbox grestore exch pop + exch pop topmat setmatrix (_) true charpath pathbbox grestore + exch pop 1 index sub setlinewidth exch pop currentpoint + exch 4 1 roll exch sub add moveto pop 0 rlineto stroke + moveto } if } def +/stW { gsave true charpath flattenpath pathbbox pop exch pop sub + grestore } def +/bs { stW 0 rmoveto } def +/pspc 0 def +/qS { (aa) stW (a a) stW sub 4 div 0 rmoveto } def +/hS { qS qS } def +/textx { dup 2 mul 1 add copy 0 exch + { exch exec exch stringwidth pop add } repeat neg ns } def +/mty { 0 topmat setmatrix (A) true charpath flattenpath pathbbox exch + pop exch sub exch pop neg grestore } def +/texty { gsave 2 copy pop exec mty } def +/tcenter { textx grestore 0.5 mul 0 rmoveto } def +/tright { textx grestore fspc sub 0 rmoveto } def +/tmiddle { texty 0.5 mul rmoveto } def +/ttop { texty fspc sub rmoveto } def +/tshow { { exec show } repeat ns } def + +/label { gsave translate 0 0 moveto rotate /just exch def just 16 and 0 gt + {0 1 dtransform gsave pagemat setmatrix idtransform exch grestore + 1 0 dtransform gsave pagemat setmatrix idtransform exch grestore + dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse + {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt + {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } if + /glevel 0 def /showflag 0 def /fspc pspc def + just 1 and 0 gt {gsave just 2 and 0 gt {tright}{tcenter} ifelse} + {fspc 0 rmoveto} ifelse + just 4 and 0 gt {just 8 and 0 gt {ttop}{tmiddle} ifelse} + {0 fspc rmoveto} ifelse +/showflag 1 def tshow grestore } def +/pinlabel { /pspc 20 def label /pspc 0 def } def +/pinglobal { pinlabel } def + +/begingate { gsave translate 0 0 moveto dup 0 lt {neg 1 sub -1 1 scale} if + rotate dup scale /pinlabel { pop pop pop pop 2 mul {pop} repeat} + def } bind def +/beginparm { -1 1 {1 add -1 roll def} for begingate } bind def +/endgate { grestore /pinlabel { /pspc 20 def + label /pspc 0 def } def } bind def + +/tmpa [1 0 0 1 0 0] def +/gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind +{8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind +{8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind +{8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind +{8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind +{8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind +{8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def +/ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll + neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy + gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll + { 3 index exch 5 exch put dup -8 3 index { 3 index + exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def +/setstyles { + currentlinewidth mul setlinewidth /style exch def + style 1 and 0 gt not {closepath} if + style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if + style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if + style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if + style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt + {gar exch get ppaint} { pop eofill } ifelse grestore } if + style 8 and 0 gt { newpath } { stroke } ifelse grestore } def +/scb { gsave setrgbcolor } bind def /sce { grestore } bind def + +/polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def +/xcarc { gsave newpath arc setstyles } def +/elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll + 3 index div 1 scale } def +/ele { 0 4 1 roll 0 4 1 roll } bind def +/ellipse { gsave elb newpath ele arc setmatrix setstyles } def +/pellip { elb ele arc setmatrix } def +/nellip { elb ele arcn setmatrix } def +/spline { gsave moveto curveto setstyles } def +/polyc { {lineto} repeat } bind def +/beginpath { gsave moveto } bind def +/endpath { setstyles } bind def +/bop { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 setgray } def +/setpagemat {/pagemat matrix currentmatrix def} def +/inchscale {setpagemat 0.375 mul dup scale} def +/cmscale {setpagemat 0.35433071 mul dup scale} def + +%%EndResource +%%EndProlog + +/Symbol-Oblique /Symbol .167 fontslant + +% XCircuit output starts here. + +%%Page: 1 1 +%%PageOrientation: Portrait +/pgsave save def bop +% 448 96 offsets +1.0000 inchscale +2.6000 setlinewidth + +(\)) {qS} () {/Times-Roman 1.000 cf} (t) {/Times-Italic 1.000 cf} () {ns} (c) +{ss} () {/Times-Italic 1.000 cf} (pw) {/Symbol-Oblique 1.000 cf} (\) = sin\(2) +{/Times-Roman 1.000 cf} (x) {/Times-Italic 1.000 cf} (\() +{/Times-Roman 1.000 cf} () {qS} (f) {/Times-Italic 1.000 cf} +12 4 0 224 256 label +0 1.00 192 192 192 304 560 304 560 192 4 polygon +pgsave restore showpage + +%%Trailer +XCIRCsave restore +%%EOF diff --git a/tutorial.html b/tutorial.html new file mode 100644 index 0000000..421047b --- /dev/null +++ b/tutorial.html @@ -0,0 +1,803 @@ +<HTML> +<HEAD> + <STYLE type="text/css"> + H1 {color: maroon} + H2 {color: #007090} + H3 {color: #0050b0} + A.head {color: #0060a0} + </STYLE> +</HEAD> +<TITLE>XCircuit Tutorial Page</TITLE> +<BODY BACKGROUND=../giffiles/blpaper.gif> +<CENTER> +<A HREF=../xctitle.ps><IMG ALIGN=middle SRC=../xctitle.gif +ALT="The XCircuit Tutorial"></A> +<H1>The XCircuit Tutorial</H1> +</CENTER> +<HR> +<H2>Table of Contents</H2> +<UL> + <LI> <A HREF="#Download">Download</A> Download the tutorial + <LI> <A HREF="#Start">Getting Started</A> Introduction + <LI> <A HREF="#Task1">Task 1</A> Running XCircuit + <LI> <A HREF="#Task2">Task 2</A> Change an option from the menu + <LI> <A HREF="#Task3">Task 3</A> Draw a line + <LI> <A HREF="#Task4">Task 4</A> Move an object + <LI> <A HREF="#Task5">Task 5</A> Change the properties of a polygon + <LI> <A HREF="#Task6">Task 6</A> Change the page + <LI> <A HREF="#Task7">Task 7</A> Select an object from the user library + <LI> <A HREF="#Task8">Task 8</A> Use a keyboard macro to create an arc + <LI> <A HREF="#Task9">Task 9</A> Zooming and panning + <LI> <A HREF="#Task10">Task 10</A> Selection of multiple objects + <LI> <A HREF="#Task11">Task 11</A> Saving a file + <LI> <A HREF="#Task12">Task 12</A> Loading a file + <LI> <A HREF="#Task13">Task 13</A> Entering Text + <LI> <A HREF="#Task14">Task 14</A> Making curves and paths + <LI> <A HREF="#Task15">Task 15</A> Dealing with over/under arrangement of elements + <LI> <A HREF="#Task16">Task 16</A> Making user-defined objects + <LI> <A HREF="#Task17">Task 17</A> Editing objects and elements + <LI> <A HREF="#Task18">Task 18</A> Generating complex geometric shapes + <LI> <A HREF="#Task19">Task 19</A> Investigating other <B>xcircuit</B> commands + <LI> <A HREF=tutorial2.html>Schematic Capture Tutorial</A> + <LI> <A HREF=../features.html><B>xcircuit</B> list of features</A> + <LI> <A HREF=../trouble.html>Troubleshooting <B>xcircuit</B></A> +</UL> + +<H2><A NAME="Download">Download</A></H2> + +This download is the tar'd image of everything in the tutorial subdirectory, +including both the standard tutorial and the schematic capture tutorial. +Note that when untar'd, this will expand into a directory tree with top-level +directory named "tutorial". <P> + +<BLOCKQUOTE> + <BLOCKQUOTE> + <TABLE border="1" frame="box" rules="none" width="90%" cellspacing="0" + cellpadding="5" bgcolor="#ffffcc"> + <TBODY> + <TR> + <TD> File </TD> <TD> Revision </TD> <TD> Size </TD> <TD> Date </TD> + </TR> + <TR> + <TD> <A HREF=../tutorial.tar.gz>tutorial.tar.gz</A> </TD> + <TD> 1 </TD> + <TD> (432KB) </TD> + <TD> January 28, 2003 </TD> + </TR> + </TBODY> + </TABLE> + </BLOCKQUOTE> +</BLOCKQUOTE> + +<H2><A NAME="Start">Getting started</A></H2> +Welcome to xcircuit, the circuit drawing program by Tim Edwards. In order to +get the most out of this page, you should have already downloaded, compiled, +and installed the xcircuit program and its libraries. <P> + +<H3><A NAME="Task1">Task 1: Run the program</A></H3> +First, start xcircuit without any parameters: <TT>xcircuit</TT> <P> + +<IMG SRC=giffiles/tut1.gif><P> +The features of the xcircuit window are as follows: +<OL> + <LI> Along the top of the screen are buttons for pull-down menus called "File", + "Edit", "Text", "Options", and "Window". + <LI> At the top, beside the menu buttons, is a welcome message in the message + window telling you the version number of the program (Version 2.0). + <LI> On the bottom left is a message window telling you that you are currently + editing "Page 1". + <LI> On the rest of the bottom is a message window telling you that xcircuit + has just loaded the library "/usr/local/lib/xcircuit/builtins.lps" (this + may be in a different directory if xcircuit has not been installed in the + default directories). This message will disappear after about 10 seconds. + <LI> At the left and along the bottom are two <B>scrollbars</B> which report the + position of the drawing relative to the main window, and can be used + to reposition the drawing by clicking on the bar with any mouse button. + <I>Note:</I> Due to the length of time necessary to refresh the drawing + window, the scrollbars cannot be "dragged". + <LI> In the center is a white <B>drawing area</B> with lightly-colored grid and + axis lines. +</OL> +There are two types of mouse button-pushing used in xcircuit. When a button +is pushed and released quickly, I will call it <B>"tapping"</B>. When a button +is pushed and held down, I will call it a <B>"pressing"</B>. Since pressing +a button is usually performed in order to move objects around on the screen, +I will sometimes refer to it as <B>"dragging"</B> the object. <P> +<I>Note:</I> Xcircuit does <B>not</B> use double-clicking. + +<H3><A NAME="Task2">Task 2: Change an option from the menu</A></H3> +Acquaint yourself with the arrangement of menu buttons and pulldown menus. +<OL> + <LI> Press the button labeled "Options" with <B>mouse button 1</B> and hold down + the button while you drag the cursor around with the mouse. + <LI> Keeping the mouse button pressed down, move down to the "Elements" button. + Each button will highlight as you pass through it. + <LI> Put the cursor on top of the arrow icon at the right side of the "Elements" + button. You should see a secondary menu titled "Elements" pop up. The + title is the topmost entry of the menu. It has no function and does not + highlight when the cursor is overtop it. + <LI> Keep moving down to the "Color" button and again move the cursor over + the arrow icon. The third and final menu of colors will pop up. Note + that one item, "Inherit Color" has a check mark on it. The check mark + denotes that this entry is the <I>current default color</I>. + <LI> Move down to the purple color button and release the mouse button there. + The menus will disappear. You have just changed the default drawing + color to purple. + <LI> Repeat the procedure up to step 4. When you enter the "color" menu you + will see that the purple color button is now checked, showing that + purple is the default drawing color. +</OL> +Throughout the tutorial I will refer to the menu items using the pulldown +hierarchy, with an arrow ("->") wherever you need to go to a submenu. So +the "Inherit Color" menu item would be referred to as +"Options->Elements->Color->Inherit Color". + +<H3><A NAME="Task3">Task 3: Draw a line</A></H3> +Now that you understand the function of the menu buttons, it's time to learn +how to draw something. The simplest and most common thing to draw in xcircuit +is a polygon. +<OL> + <LI> Tap <B>mouse button 1</B> anywhere in the drawing area and release it + immediately. If you wait too long to release the button, xcircuit will + interpret it as trying to "grab" an element on the screen, and nothing + will happen (because there aren't any elements yet to grab). + <LI> Move the cursor around the screen. A purple line (because you chose + purple to be the default color in Task 2) will appear between the + origin point and will track with the cursor. + <LI> Tap <B>mouse button 1</B> again to finish a line segment. A new line + will begin at the point the first one left off. Do this several times + to form a polygon. Finish the polygon by tapping <B>mouse button 2</B>. + <LI> Repeat steps 1 through 3 but finish by tapping <B>mouse button 3</B>. + The line you have just created will disappear. You have just + <B>cancelled</B> the operation. +</OL> + +<IMG SRC=giffiles/poly1.gif ALIGN=CENTER> A purple polygon <P> + +For most operations in xcircuit, tapping <B>mouse button 1</B> will begin or +continue an operation, tapping <B>mouse button 2</B> will finish it, and +tapping <B>mouse button 3</B> will cancel it. The behavior can be slightly +different depending on the circumstance, and the behavior for <B>pressing</B> +buttons 1 and 2 is very different, as demonstrated in Tasks 4 and 5. + +<H3><A NAME="Task4">Task 4: Move an object</A></H3> +<B>mouse button 1</B> does have one very different function than that described +in the last task. It can be used to "grab" hold of an object for moving. +<OL> + <LI> Press <B>mouse button 1</B> close to a line of the polygon you just + drew. Hold down the button. The line should turn gold colored, + indicating that it has been "selected". If instead nothing happens, + then the cursor is too far away from the line. Releasing the button + releases the object. + <LI> Try grabbing and releasing the polygon from different distances to get + a feel for how close you must be to the object in order to grab it. + <LI> Now grab the polygon, and with the mouse button held down, move the + cursor across the screen. The polygon will follow the cursor. This + is how you move an object in xcircuit. +</OL> + +<H3><A NAME="Task5">Task 5: Change the properties of a polygon</A></H3> +<B>mouse button 2</B> also has a selection funtion; in fact, it has two of +them. In the normal drawing mode, it can be used to select objects for editing +or changing properties. In this task you will use <B>mouse button 2</B> to +select the polygon you just created in order to make it a dashed line. +<OL> + <LI> Select the object by tapping <B>mouse button 2</B> with the cursor near + to the object. The object will turn gold, indicating that it has been + selected. + <LI> Tap <B>mouse button 3</B>, and the selection will be canceled. + <LI> Investigate the other form of selection by pressing <B>mouse button 2</B> + starting below and to the left of the polygon, and dragging the cursor + to the top and right of the polygon. A green box will follow the + movement of the cursor. + <LI> When the box completely surrounds <I>at least one</I> of the endpoints + of any line segment of the polygon, release the button. The polygon + should be selected. + <LI> Click <B>mouse button 3</B> to deselect the object. + <LI> Repeat steps 3 through 5, noting that if no endpoint of the polygon + is contained within the <B>select box</B>, then the polygon will not + be selected. + <LI> Select the polygon but do not deselect it. + <LI> Go to the "Options->Elements->Border" submenu and select option + "Dashed". When you release the button, the polygon will be drawn + in dashed lines, and it will no longer be selected. + <LI> Experiment with the different Colors, Fill-styles, and Border-styles + available in the menus. Some of the many varieties are shown below. +</OL> + +<IMG SRC=giffiles/poly2.gif ALIGN=TOP> More purple polygons. <BR> Top left: original. + Top right: dashed. <BR> Center left: closed. Center right: stippled + (50% stipple). <BR> Bottom left: opaque stippled. Bottom right: + filled solid. <P> + +<H3><A NAME="Task6">Task 6: Change the page</A></H3> +Xcircuit has multiple pages. There are two ways to change the current +drawing page, from a keyboard macro convenience function, or from the +menu. +<OL> + <LI> Select the menu item "Window->Goto Page->Page 2". The polygon + you just drew on Page 1 will disappear, and you will be on a + clean page, with the bottom left-hand window saying that you + are editing "Page 2". + <LI> Go back to Page 1 using the keyboard macro: With the cursor + in the drawing area, press the "1" key. You will be back on + page one. + <LI> Keys "1" through "9" and "0" will get you instantly to pages + 1 through 10, respectively. + <LI> End this task on Page 2, which is currently empty. +</OL> + +<H3><A NAME="Task7">Task 7: Select an object from the user library</A></H3> +Another common task in xcircuit is to grab an object from the object +library and place it on the drawing. +<OL> + <LI> Select the "Window->Show Library" button from the menu, or press the + "l" (that's "ell" as in "library") key in the drawing window. Note + that the menu button has + "(l)" written after "Show Library", indicating that the <B>keyboard + macro</B> "l" has the same function as the menu button. Generally, + keyboard macros, once memorized, are more convenient to use than + their menu button counterparts. Almost always, the letter or symbol + used for the macro is meaningful and easy to remember (like "a" for + "arc", "s" for "spline", "p" for "pan", "c" for "copy", etc.). + <LI> A page will appear, showing a number of circuit objects in the + built-in object library. + <LI> Grab one object by moving the cursor over top it and pressing and + holding <B>mouse button 1</B>. As soon as the button is pressed, + the object library will disappear, and you will be dragging the + object around Page 2, from which you called up the library. When + you release the button, the object will be deselected. Place it + away from the polygon you drew in the previous tasks. + <LI> Select the object by tapping on it with <B>mouse button 2</B>. + Try changing the border style to dashed. You will see that + nothing happens. This is because object instances from the + library are <I>made up of</I> basic elements like polygons, + arcs, and splines, but they are <B>composite</B> objects which + do not have properties like "Fill-style" and "Border-style". + However, object instances do have the property of color, and + also the property "size" which simple elements like the polygon + do not have. + <LI> Select the object again (if you have not already done so), and + then select the menu item "Options->Elements->Object Size". + <LI> A window will pop up asking you for an object size. Place the + cursor somewhere inside the popup window and change the default + size of "1.00" to "1.5". + <LI> Press the "Okay" button. The popup window will disappear and + the object will now be 1.5 times its original size (that is + to say, its length and width will each be 1.5 times their + previous value). +</OL> + +<CENTER> +<IMG SRC=giffiles/lib1.gif> <BR>Part of the default circuits built-in library. <P> +</CENTER> + +<H3><A NAME="Task8">Task 8: Use a keyboard macro to create an arc</A></H3> +As mentioned above, keyboard macros are generally easier to use than +their menu-button counterparts. You will create an arc in both fashions +to show the difference. +<OL> + <LI> Select the menu item "Edit->Make Arc". + <LI> The information window at the bottom will say "Click button 1 + and drag to create arc". + <LI> Place the cursor where you want the arc center to be and press it. + While holding it down, drag the cursor around the screen. An arc + will follow the cursor. + <LI> Release the mouse button. You will now be editing the angle of the + first endpoint. If you just want a circle, tap <B>mouse button 2</B> + to end. If you keep pressing <B>mouse button 1</B>, you will be + able to edit, in turn, all the properties of the arc such as + endpoint positions and ellipse axis. + <LI> Now, create an arc by tapping the "a" key while the cursor is in the + drawing area. The main difference is that <B>mouse button 1</B> is + not held down while you form the radius of the arc. Otherwise, + the arc can be edited as before. +</OL> + +<IMG SRC=giffiles/arcs1.gif ALIGN=TOP> Some differenct arcs. + <BR> Top left: linewidth of 1.5, first endpoint at 90 degrees. + Top right: closed arc. + <BR> Bottom left: red circle. + Bottom right: blue ellipse. <P> + +<H3><A NAME="Task9">Task 9: Zooming and panning</A></H3> +<OL> + <LI> Pan the screen to be centered on the arc by placing the cursor close to + the center of the arc and tapping the "p" key. + <LI> Pan the screen by selecting menu item "Window->Center Pan" and then + tapping <B>mouse button 1</B> on the point of the drawing area that + you want to be the new center of the screen. + <LI> Tap the "Z" and "z" keys to zoom in and out, or select the menu items + "Window->Zoom In" and "Window->Zoom Out". Note how the scrollbars + on the side and bottom of the screen change with the scale of the + drawing. + <LI> Pan the screen by tapping any mouse button on either of the scrollbars. + Note how this function is similar to the "Pan" function. + <LI> Zoom to a selected area of the screen by making a green selection box + like you did in Task 5, step 3. However, instead of releasing the + button in order to make the selection, type the "Z" key while the + mouse button is still pressed down. The screen area will zoom to + the area of the green box. + <LI> Alternately, choose "Window->Zoom Box" from the menu. Then press + any mouse button and drag to generate the green selection box. When + the button is released, the screen area will zoom to the area of the + green box. +</OL> + +<H3><A NAME="Task10">Task 10: Selection of multiple objects</A></H3> +<OL> + <LI> Clear the current page by choosing the menu item "File->Clear Page". + There is no keyboard macro for this command, to prevent accidental + erasure of the screen (which cannot be undeleted). + <LI> Grab several objects from the library (see Task 7) and place them + on top of each other in the middle of the page. + <LI> Decide on one object which you will move, leaving the others where + they are. + <LI> Now press <B>mouse button 1</B> as if you were going to select the + object you want to move. Because the command is ambiguous---the + program doesn't know which one or ones of the objects you really + want to select---the program will query you one by one for which + objects you want to select. + <LI> One object will turn blue, the cursor will become a question mark, + and the information bar at the bottom will read, for example, + "Click to accetp/reject: 1 of 3" if the program found three + objects under the cursor. Release the mouse button at this + point. + <LI> If the object that you want to select and move is colored blue, + click <B>mouse button 2</B>. If an object that you <I>don't</I> + want to select and move is colored blue, click <B>mouse button + 3</B>. + <LI> When you have chosen or rejected each of the objects, the cursor + will become a circle. You may now press and hold <B>mouse button + 1</B> and continue with the intended move. + <LI> Try this several times to get used to it. +</OL> + +<CENTER> +<IMG SRC=giffiles/select1.gif> <BR> Three objects simultaneously selected. <BR> </CENTER> + The gold-colored gate has already been selected; the program is now prompting + the user for confirmation to add the blue-colored object to the selection. <P> +<CENTER> +<IMG SRC=giffiles/select2.gif> <BR> Message window when selecting multiple objects. +</CENTER><P> + +<H3><A NAME="Task11">Task 11: Saving a file</A></H3> +Since the main purpose of xcircuit is to create publishable-quality picutures, +it is necessary to understand a little bit about the PostScript output which +it writes. First I will show you how to save and load a file. + +<OL> + <LI> Choose a page which you have been drawing on, or create a drawing to + save. + <LI> Select the menu item "File->Write Xcircuit PS". You will get a popup + window that looks like the figure below. <BR> + <IMG SRC=giffiles/save1.gif ALIGN=CENTER><BR>The file properties popup window. + <LI> If you tap the button labeled "Write". You will get a message in the + bottom message window saying "Warning: Enter a new name". Nothing + has been written at this point. + <LI> Change the filename. Move the cursor over the window containing the + filename. Delete the current file name and type in a new one. + When you are done, either hit the <TT>RETURN</TT> key or tap the + button labeled "Okay" (both actions have the same effect). + <LI> <I>Important note:</I> If the name has <B>no</B> extension, an + extension "<TT>.ps</TT>" will automatically be added when the file + is written. If an extension, for instance "<TT>.eps</TT>", is written + in the filename, then it will be used. + <LI> When you change the filename, the page label will be changed to + match the filename, and the bottom left-hand message window will + now say "Editing: " followed by the page label name, followed by + the page number in parentheses. <BR> + <IMG SRC=giffiles/save2.gif ALIGN=CENTER><BR>Changes to scale and filename. + <LI> If the filename you chose already exists on the disk, the button + which previously was labeled "Write File" will now say "Overwrite + File", the computer will beep, and the bottom message window will + say "Warning: File exists". + <LI> Tap the button labeled "Close". The window disappears; because + you did not tap the "Write File" button, nothing was written, + although the filename change has been registered. + <LI> Select "File->Write Xcircuit PS" again to bring the window back. + This time, tap the "Write File" button. The file will be written + to the disk current directory, and the button which previously + said "Close" will now say "Done". + <LI> The file which has just been saved is already in a PostScript format. + You may view it with any PostScript previewer (ghostview is recommended). +</OL> + +<H3><A NAME="Task12">Task 12: Loading a file</A></H3> + +<OL> + <LI> Go to a new, unused page. + <LI> Select menu item "File->Read Xcircuit PS". You will get a screen that + looks something like the following: <BR> + <IMG SRC=giffiles/load1.gif ALIGN=CENTER> The load-file popup window. + <LI> If the file list is larger than the window, you may scroll up and down + the list by clicking <B>mouse button 1</B> or <B>2</B> on the + <B>scrollbar</B> at the right side of the window and dragging it up + and down. + <LI> A green box will be drawn around each filename as your cursor passes + over it. + <LI> Find the file that you just saved in the last task. When the green + box is over this filename, tap <B>mouse button 1</B>. The filename + will turn green, and at the same time will be copied into the + text edit box. + <LI> Tap the "Okay" button to load the file. + <LI> If you do not wish to use the scrolling menu, you may type the filename, + with or without the "<TT>.ps</TT>" extension, in the text edit box, + followed by the <TT>RETURN</TT> key or tapping the "Okay" button. + <LI> Selecting a directory name in the file list box, including "../" for + the directory one level up, will go to that directory. Entering a + directory name in the text edit box followed by the <TT>RETURN</TT> + key will also go to that directory. + <LI> If you know where the <B>xcircuit</B> source is kept, then select the + "File->Read Xcircuit PS", go to the source directory, go to the + "examples" directory, and load one of the example files, such as + "<TT>vcoblock.ps</TT>". +</OL> + +<H3><A NAME="Task13">Task 13: Entering Text</A></H3> +Xcircuit has a very complicated interface for entering text, which allows +you to change fonts and font styles within a string, make overlines and +underlines, and subscripts and superscripts. <P> + +<OL> + <LI> Go to a new, unused page. + <LI> Let's say you want to type in a fairly complicated expression, like <BR> + "f(x) = sin(2*pi*omega_c*t)" (except with Greek letters, of course). + <LI> If you've read your TeX manual thoroughly, and understand all the finer + points of mathematical equation typesetting (if you haven't, you should), + then you know that all the variables should be in italic type. + <LI> Select menu item "Text->Style->Italic". The default text font is now + italic style. + <LI> Select menu item "Text->Font->Times Roman" if it is not checked already. + The default text font is now Times Italic (Times font + Italic style). + <LI> Select menu item "Text->Make Label" and click on <B>mouse button 1</B> + anywhere in the drawing area. + <LI> Alternately, you can just tap the "<TT>t</TT>" key in the drawing area. + <LI> The green line marks the pointer position, and the "x" marks the + origin (justification) of the text. + <LI> Select menu item "Text->Justification->Middle Justified". You will + see the green "x" move to the center of the line, showing that the + text is vertically centered on its point of origin. + <LI> Alternately, you could type keypad key "6" (on some systems, + Shift-keypad 6) to get center-left justified text. + <LI> Type "<TT>f</TT>". In the bottom message window, the letter "f" and a vertical + bar "|" appear, showing what's in the string relative to the text + cursor. + <LI> Select menu item "Text->Insert->1/4 Space". This is the proper thing to + do for "italic correction", an extra bit of space necessary after an + italic character followed by an upright character, particularly tall + ones such as "f" and "t" which lean leans rather far to the right of + their character bounding boxes. + <LI> Select menu item "Text->Style->Normal". + <LI> Type "<TT>(</TT>" + <LI> Select menu item "Text->Style->Italic". + <LI> Type "<TT>x</TT>" + <LI> Select menu item "Text->Style->Normal". + <LI> Type "<TT>) = sin(2</TT>" + <LI> Select menu item "Text->Style->Italic". + <LI> Select menu item "Text->Font->Symbol". + <LI> Type "\". A page with the 256 character encodings for the + Symbol font will appear, replacing the current page, as + shown in the figure below.<BR> + <CENTER><IMG SRC=giffiles/symbol_enc.gif></CENTER> + <LI> Click on the "pi" symbol. The screen will immediately + return to the original page, with the "pi" added to the + text line. + <LI> Type "\", then click on the "omega" symbol in the encoding + vector. + <LI> Select menu item "Text->Font->Times-Roman" + <LI> Select menu item "Text->Style->Subscript" (or keypad-minus) + <LI> Type "<TT>c</TT>" + <LI> Select menu item "Text->Style->Normalscript" (or keypad-enter) + <LI> Type "<TT>t</TT>" + <LI> Select menu item "Text->Insert->1/4 Space" for another italic + correction. + <LI> Select menu item "Text->Style->Normal". + <LI> Type "<TT>)</TT>" + <LI> Before typing <TT><RETURN></TT> to complete the text, use + the left- and right-arrow keys to move the cursor around inside + the text string. Note how font- and style- changing commands + embedded in the text string can be seen in the message window. + Their position relative to the text cursor is important when + anticipating the effect of deleting (<TT><DELETE></TT> key) + a text command. + <LI> Yes, this is very complicated, but it is also very powerful. +</OL> + +<CENTER><IMG SRC=giffiles/text.gif></CENTER><BR> +Above: The text figure created in the task.<BR> +Below: The <A HREF=psfiles/test1.ps>PostScript output</A> of the same text from xcircuit. +<CENTER><IMG SRC=giffiles/text2.gif></CENTER><BR><BR> + +<I>Typographical Note:</I> ISO-Latin1 encodings define the Greek character "mu" +(µ) to be used for the symbol "micro", which naturally is used often in +circuit schematics. This differs from the Symbol font "mu" in that it matches +the style and properties of the font in which it is defined. Thus, it is +possible to get a Helvetica "mu", a Times-BoldItalic "mu", etc., something +which is virtually impossible to do even in LaTeX<A HREF=footnote.html>(*)</A>. +Due to the font size and style matching, this is always preferable to the +Symbol font "mu". To get the ISO-Latin1 "mu" character, (while entering or +editing text) choose <I>Text->Encoding->ISO-Latin1</I> from the menu, then +either choose <I>Text->Insert->Character</I> or type "\" at the text cursor, +then select the "mu" character from the character array. + +<H3><A NAME="Task14">Task 14: Making curves and paths</A></H3> +Curve drawing is a useful feature of most capable drawing programs. The +concept of <I>paths</I> is a powerful aspect of PostScript which is not +usually found elsewhere. Path definitions are used to create a single +entity out of a string of curves, arc segments, and lines. The resulting +entity has its own color, fill styles, and border styles. + +<OL> + <LI> Go to a new, unused page. + <LI> Type "s" to start a curve (you can think of "s" as standing for + "spline", although these are Bezier curves, not splines, or you + can just think of the curvy "s" shape. The key "c" is reserved + for copying). The first thing you will see is two dotted lines + ending in little "x" marks. These are the curve control points. + <LI> Move the cursor around. Right now you are positioning the + end of the curve but have no control over the control points.<BR> + <IMG SRC=giffiles/spline1.gif> + <LI> Place the curve endpoint. If you are satisfied with the shape + of this curve, you can tap <B>mouse button 2</B> to finish + the curve and quit. However, we'll say that you have more to + do to this curve, so tap <B>mouse button 1</B> instead. + <LI> You get a message saying "Adjust control point", and the cursor + moves overtop the nearest "x" mark. Now when you move the + cursor, you change the shape of the curve. + <LI> Move the control point two grid blocks to the left of where it + started (make the control line horizontal with a length of + 4 grid blocks). <BR> + <IMG SRC=giffiles/spline2.gif> + <LI> Click <B>mouse button 2</B> to finish the curve. + <LI> Now we will make a simple path. But it takes more than one element + to form a path. Put the cursor over the curve and tap the "c" + key. + <LI> When you move the cursor, a copy of the curve will follow you. + <LI> While you are dragging the curve copy, flip it by tapping the + "f" key and then the "F" key (one horizontal plus one vertical + flip). + <LI> Place the curve with its endpoints overtop the original curve. + The result should look like the figure below. + <LI> Select both curves by tapping <B>mouse button 2</B> on top of + each one, or by forming a selection box (see Task 5). + <LI> Tap the "j" key in order to "join" the two curves into a single + path. + <LI> If you now move or select the path, you will find that both + curves act as a single entity. + <LI> Select the path and then select menu item + "Options->Elements->Fill->(black box)". The path will then + become solid black. If you color it blue, it will look something + like the right side of the figure below. +</OL> + +<CENTER><IMG SRC=giffiles/spline3.gif></CENTER><BR> +Curves and paths. Left: The curve has been copied and flipped. +Center: The two curves are placed together and joined into a path. +Right: The path is filled and colored as a single entity. + +<H3><A NAME="Task15">Task 15: Dealing with over/under arrangement of elements</A></H3> + +<OL> + <LI> Clear the current page (menu option "File->Clear Page") or go + to a new, unused page. + <LI> Start a <B>box</B> with the "b" key (this is a convenience for + drawing rectangles and squares). + <LI> Click <B>mouse button 2</B> to finish the box. + <LI> Select the box and choose menu item + "Options->Elements->Fill->(black box)", where the "black box" + is the first menu item in the list. You will now have a black + box. (note that to select the box, the cursor must be near the + <B>edge</B> of the box, not in the middle). + <LI> Select the box again and choose menu item + "Options->Elements->Color->(orange box)". You will now have + a solid, orange box. + <LI> Go to the built-in library ("l" key) and bring back a circuit + object (say, a "nand" gate). + <LI> Place the gate on top of the orange box. + <LI> Make a copy the box ("c" key) and place it beside the first. + <B>mouse button 2</B> ends the copy command. + <LI> You will notice that the library object suddenly disappeared. + This is because the "copy" command moved the orange box + to the end of the drawing list. Because it is drawn <B>after</B> + the library object, the library object is hidden underneath. + <LI> To get the library object on top again, select everything in the + area of the orange box by forming a selection box around the + orange box (<B>mouse button 2</B>). Tap the "X" key (Shift-X) + to <B>exchange</B> the drawing order of the two elements. The + library object will now be visible on top of the orange box. +</OL> + +<CENTER><IMG SRC=giffiles/overunder.gif><BR> +Over- and Under- arrangements of elements. </CENTER> + +<H3><A NAME="Task16">Task 16: Making user-defined objects</A></H3> +One of the most powerful aspects of xcircuit is its ability to deal with +objects on a hierarchical level. Circuits in particular are highly +structured. Often it is desirable to draw a subcircuit and use it +several times. It is much more efficient to draw the subcircuit and +create a <B>user object</B> from it rather than to copy all the +separate elements of the subcircuit every time you want a copy. +This is also true of new circuit components. <P> + +Say we wish to create a new circuit component, a <B>dependent current +source</B>. + +<OL> + <LI> Clear the current page or go to a new page. + <LI> We want the dependent current source to look something like the + independent current source (isource) in the builtin library file. + Go to the library and bring back an "isource" object for reference. + <LI> Draw a polygon, as in Task 3. Make it diamond-shaped and three + grid spaces high, two wide (see the figure below). + <LI> Add a line of height one-half-grid space on the top and bottom + of the diamond. + <LI> Now we will do something unusual. We will grab the arrow from + inside the isource object. Edit the original "isource" object + by placing the cursor over it and typing the ">" key (push + object). The page you were on will disappear, and you will + see only the object "isource". + <LI> Using the multiple-selection mechanism described in Task 10, + select the arrowhead and line in the middle of "isource", but + not the surrounding object. + <LI> Make a copy of these two elements with the "c" key. + <LI> While still dragging around the copy of the arrow, return to + the main page by typing the "<" key (pop object). You will + be returned to the original drawing, still dragging the arrow + with you. + <LI> Place the arrow inside the diamond. + <LI> Using a selection box, select all of the components of the + "dependent current source" object you have just constructed. + <LI> Type the "m" key to make the object out of the selected + components. + <LI> You will get a popup box asking for a name for the object. + Type something obvious like "depsource" or "disource". + Spaces are not allowed (if you use them, they will be + converted to underscores). + <LI> Tap the "Okay" button. Now, if you click on the dependent + source, it will be treated just like one of the builtin + objects. + <LI> Type the "L" key to go to the <B>User Library</B>. You + will see that the new object you created is now located + there. You can click on it to bring back another copy, + just like the builtin objects. +</OL> + +<CENTER><IMG SRC=giffiles/object.gif><BR> +Steps in creating a new user-defined object. </CENTER> + +<H3><A NAME="Task17">Task 17: Editing objects and elements </A></H3> +You briefly edited the built-in "isource" object in the last task, +but did not change anything. In this task, suppose we want to change +the appearance of the "dependent current source" object we made in +the previous task. + +<OL> + <LI> To edit the object, "push" into it using the ">" key, + as you did for the "isource" in the last task. + <LI> Make the polygon shorter. Put the cursor close to the + top of the diamond and type "e" for "edit". + <LI> Use the multiple-selection mechanism to select only the + diamond. + <LI> Now you will be editing the point position. Move the + point down one-half grid space, and tap <B>mouse + button 2</B> to complete the edit. + <LI> Do the same for the bottom point. Where the two ends of + the polygon meet, you will need to adjust both of the + points. + <LI> Extend the lines on the top and bottom to meet the + diamond by editing the endpoints just like you did for + the diamond. + <LI> When you are done, return to the main page by "popping" + out of the object page, using the "<" key. +</OL> + +<CENTER><IMG SRC=giffiles/objedit.gif><BR> +Steps in editing the user-defined object. </CENTER> + +<H3><A NAME="Task18">Task 18: Generating complex geometric shapes</A></H3> +This can be an incredibly useful feature for general drawing. A +wholesale use of it is necessary to create such extravaganzas as +this rendition of the +<A HREF=http://bach.ece.jhu.edu/~tim/pictures/apl_logo3.ps>JHU Applied +Physics Lab's logo</A>. I have made use of something in PostScript +known as a ``path,'' that is, a linked set of lines, arcs, and splines +which together form the boundary of a single object which can be +bordered, filled, colored, etc. In this task, I will show you how +to generate a picture of a solid cylinder, by making a path consisting +of both ellipses and lines. + +<OL> + <LI> Start with a clean page. + <LI> Create an ellipse as follows: + <OL> + <LI> Type macro <B>a</B> to start an arc. + <LI> Drag the arc out to some desired size. + <LI> Click the first mouse button three times (to bypass endpoint + editing and go to ellipse axis editing). The position of + the cursor will move from the side of the circle to the top. + <LI> Drag the ellipse minor axis to the desired size and click + the second mouse button to end. + </OL> </LI> + + <CENTER><IMG SRC=giffiles/path1.gif><BR> + Creating a path object (solid cylinder): top ellipse. </CENTER> + + <LI> The whole ellipse becomes the top of the "cylinder". To make the + bottom of the cylinder: + <OL> + <LI> Copy the first arc and place it well below the first. + <LI> Type macro <B>e</B> to edit (or select edit from the menu + and click on the lower ellipse). + <LI> Immediately type <B>e</B> again or click on the first mouse + button to go to endpoint editing mode. + <LI> Drag the endpoint around to the other side until the + result is the bottom half of an ellipse. Click the + second mouse button to finish. + </OL> </LI> + + <CENTER><IMG SRC=giffiles/path2.gif><BR> + Creating a path object (solid cylinder): bottom (half) ellipse. </CENTER> + + <LI> Draw two lines to create the sides of the cylinder. + <LI> Select the bottom and sides of the cylinder, and type the <B>j</B> key + to "join" these segments into a single "path". + <LI> Select everything. If you (individually) select any component of the + path (either the side lines or the bottom ellipse), the whole path + will be highlighted. + + <LI> Copy (with the <B>c</B> macro) and place the copy to the side. </LI> + + <CENTER><IMG SRC=giffiles/path3.gif><BR> + Creating a path object (solid cylinder): Two cylinder frames. </CENTER> + + <LI> Select the path (lower part) of the rightmost cylinder. + <LI> Choose menu item "Options->Elements->Fill->(black box)". Now + you can see how to create arbitrary filled shapes. </LI> + + <CENTER><IMG SRC=giffiles/path4.gif><BR> + Creating a path object (solid cylinder): Two cylinders, the right one + consisting of a filled path. </CENTER> + + <LI> Finish the cylinder in the following manner: + <OL> + <LI> Color the path shape dark gray. + <LI> Select the ellipse located above the colored cylinder and + perform the same steps to make it filled solid and colored + light gray. + <LI> Use the <B>X</B> keyboard macro to correctly arrange the + elements, with the light gray ellipse on top of the dark + gray path object. + <LI> Place the black wire frame cylinder on the left on top of + the solid cylinder on the right. <I>Hint:</I> Move the + wire frame halfway on top of the solid cylinder, then + arrange the top-to-bottom order of the elements so + that the wire frame ends up on top, then move the + wire frame the rest of the way. + </OL> +</OL> + +<CENTER><IMG SRC=giffiles/path5.gif><BR> +Creating a path object (solid cylinder): Finished cylinder. </CENTER> + + +<H3><A NAME="Task19">Task 19: Investigating other <B>xcircuit</B> commands</A></H3> +By now you should understand the basic user interface of xcircuit and be able +to get around the menus, the drawing area, be able to handle the popup +prompting windows, load and save files, write text, and create polygons, +arcs, curves, paths, and user objects. Of course, we have just touched +the surface of <B>xcircuit</B> capabilities. The list of features below +will help you find out all the things that can be done with the program. <P> + +For help with remembering keyboard macros and their functions, select the +menu item "Options->Help!". You will get a popup window to the right of +the screen which lists all of the available keyboard functions. Tap the +"Done" bottom at the bottom when you no longer need the help menu. <P> + +<HR> +<P><A HREF=../welcome.html><IMG ALIGN=middle SRC=../giffiles/bluebutton.gif + BORDER=0></A> Back to the xcircuit home page. . . +<P><IMG SRC=../giffiles/line1.gif><P> +email: <I>tim@bach.ece.jhu.edu</I> +</BODY> +</HTML> diff --git a/tutorial2.html b/tutorial2.html new file mode 100644 index 0000000..b2322d7 --- /dev/null +++ b/tutorial2.html @@ -0,0 +1,1455 @@ +<HTML> +<HEAD> + <STYLE type="text/css"> + H1 {color: maroon} + H2 {color: #007090} + H3 {color: #0050b0} + A.head {color: #0060a0} + </STYLE> +</HEAD> +<TITLE>XCircuit Schematic Capture Tutorial Page</TITLE> +<BODY BACKGROUND=../giffiles/blpaper.gif> +<H1><IMG ALIGN=top SRC=../xcicon.gif> The XCircuit Schematic Capture Tutorial</H1> + +<!-- +<HR> +<font color=red> +<IMG SRC=../giffiles/constr.gif ALIGN=middle> +NOTICE: Page still under construction (but almost finished)! +</font> +--> + +<HR> + +<H2>Table of Contents</H2> +<UL> + <LI> <A HREF="#Start">Getting Started</A> + <LI> <A HREF="#Task1">Task1</A> Acquaint yourself with XCircuit + <LI> <A HREF="#Task2">Task2</A> Run the program + <LI> <A HREF="#Task3">Task3</A> Drawing a circuit for SPICE simulation + <LI> <A HREF="#Task4">Task4</A> Introduction to parameters + <LI> <A HREF="#Task5">Task5</A> Drawing a circuit with parameters + <LI> <A HREF="#Task6">Task6</A> Making a new "fundamental" object + <LI> <A HREF="#Task7">Task7</A> A schematic with symbol-less schematics + in the hierarchy + <LI> <A HREF="#Task8">Task8</A> Identifying electrical connections + <LI> <A HREF="#Task9">Task9</A> A symbol on its own schematic + <LI> <A HREF="#Task10">Task10</A> "sim" format and flattened + <LI> <A HREF="#Task11">Task11</A> "pcb" type netlists + <LI> <A HREF="#Task12">Task12</A> Multiple-gate chips in PCB netlists + <LI> <A HREF="#Task13">Task13</A> Modifying netlist formats + <LI> <A HREF="#Task14">Task14</A> Example: A bridge rectifier for a PCB +</UL> + + +<H2><A NAME="Start">Getting started</A></H2> +This tutorial is provided to help users get up and running with the +schematic capture capabilities of xcircuit. +In order to get the most out of this page, you should have already +downloaded, compiled, and installed the xcircuit program and its libraries, +and xcircuit should be compiled with schematic capture capability (on by +default; see the Imakefile for details). <P> + +<BLOCKQUOTE> +<font color=red> IMPORTANT NOTICE: </font> +<font color=green> +It is necessary for you to have the new (version 2.3.3) distribution of xcircuit +compiled <I>and installed</I> to get the correct behavior in the tutorial. +In particular, the PostScript prolog has changed and if the old one is +prepended to the new xcircuit files, the files will not be printable or +viewable from a PostScript previewer. <P> + +There are additional differences between versions 2.1(beta) to version 2.3.3, +mainly in the way symbols and schematics are associated with each other. +The new methods are incorporated into this tutorial. Version 2.3.3 also +corrects some errors in netlist generation, and is generally more stable. +Versions before 2.3.3 will <I>not</I> produce <B>pcb</B>-style netlists +as featured in this tutorial.<P> +</font> +</BLOCKQUOTE> + +<H2><A NAME="Task1">Task 1: Acquaint yourself with XCircuit</A></H2> +If you are not yet familiar with the basic features of xcircuit, I recommend +you to peruse the basic <A HREF=tutorial.html>XCircuit tutorial</A> for +essential features of the program which will not be reiterated here. + +<H2><A NAME="Task2">Task 2: Run the program</A></H2> +XCircuit now starts in schematic capture mode unless explicitly compiled +without the feature. So just start xcircuit as you normally would: +<BLOCKQUOTE> + <B>xcircuit</B> +</BLOCKQUOTE> + +Xcircuit in schematic capture mode will start with a window which +has a menu button for ``Netlist'' and two +buttons at the bottom left-hand corner, one of which is blank and the other +which is colored red and labeled ``Schematic.'' +The bottom buttons can be interpreted to mean that the current page is a +schematic drawing, and this schematic has no corresponding symbol (more +about this later). <P> + +There is a menu button, "Options->Disable (Enable) XSchema", which toggles +the visibility of the ``Netlist'' menu button and the two status buttons at the +bottom. In case you're working on a drawing which has nothing to do with +schematic capture, you might prefer to have the option disabled. This +does not affect the program in any way other than to make the buttons +disappear so that xcircuit looks like the original version without the +schematic capture features. <P> + +<H2><A NAME="Task3">Task 3: Drawing a circuit for SPICE simulation</A></H2> +This task outlines some of the features of xcircuit used to make a simple +circuit. In this and the following tasks, you will create an analog +circuit, an operational amplifier, and make it into a symbol to be used +as a subcircuit of a more general circuit (an integrator). First you will +draw a circuit using simple (default) devices, and later I will show how to +pass parameters to devices, such as width and length of individual MOSFETs. + +<OL> + <LI> Drag the elements which you need from the built-in library to + (a clean) Page 1. Namely, the nMOS, pMOS, Vdd, and GND symbols. <P> + <LI> Duplicate elements (copy (<B>c</B>), flip (<B>f</B>)) as necessary + and connect with lines to produce the following transconductance + amplifier schematic: <BR><BR> + + <CENTER><IMG SRC=giffiles/amp1.gif><BR> + A transconductance amplifier, schematic drawing. </CENTER> <BR> + + <LI> Either drag the "dot" object from the library page or use the + period key ("<B>.</B>") to place connections between the wires + at junctions. This is not strictly necessary, as xcircuit will + deduce connectivity from the T-connections of wires, not from + the "dot" symbols; it is merely a matter of preference depending + on the style with which you like to draw circuits. In the case + of wires crossing at a junction, the dot <I>is</I> necessary + since crossing wires generally do not indicate a connection in + schematic diagrams. You may also use a "jumper" object to + indicate that two crossing wires do not connect although this, + like the use of dots at T-junctions, is a matter of style and + personal preference. <P> + + <LI> Add "circle" connections at the inputs and outputs. Once again, + this is a matter of style; the actual inputs and outputs from + the netlist's point of view will be indicated by pin labels + (see next step). The resulting diagram looks like the following: + <BR><BR> + + <CENTER><IMG SRC=giffiles/amp2.gif><BR> + Same transconductance amplifier, a little fancier style. </CENTER> <BR> + + <LI> Because the amplifier will be a SPICE subcircuit, it is necessary + to tell the netlist generator where the input and output ports + are. For this, you need <I>pin labels</I>. Pin labels differ + from ordinary labels in several ways: By default, they are + colored red (though this can be changed), and are placed with a + slight offset from their marked positions, so the position + marker can be used as a tag to indicate what wire the label is + attached to. Additionally, the marked position is visible on + the drawing, since its exact location with respect to wires is + critical to the resultant netlist. Finally, pin labels only + appear on the top level of the hierarchy. <P> + + To generate the pin label, type key macro (capital) <B>T</B>, or + choose menu item "Netlist->Make Pin". Set justification as + desired and place the "x" marking the pin position over the + "o" of the circle objects, or on top of a wire. The pins in + this amplifier will be labeled "in.m", "in.p", "out", and "bias". + <BR><BR> + + + <CENTER><IMG SRC=giffiles/amp3.gif><BR> + Transconductance amplifier with I/O pins marked. </CENTER> <BR> + + <LI> Now it's time to turn this schematic into a symbol, that is, + to make a symbol which will be used on the top-level drawing + to designate the transconductance amplifier. What we really + want to do is to use the symbol "wramp" (stands for "wide + range (transconductance) amplifier", which is what this is), + from library "avlsi.lps" (part of the distribution), as the + symbol for the schematic you just drew. Go to the built-in + library, then edit the "wramp" symbol from there by placing + the cursor over the "wramp" symbol and typing key macro + "<B>></B>". The result looks like this: <BR><BR> + + <CENTER><IMG SRC=giffiles/wramp1.gif><BR> + Transconductance amplifier symbol from the "avlsi.lps" library. + </CENTER><BR> + + Note that in this picture, the bottom left-hand corner of + the screen says "Symbol" in the button that was, on Page 1, blank, + and the button that used to say "Schematic" is now blank. This + means that this object is a symbol, not a schematic, and it currently + does not have a schematic attached to it. <P> + + Also note that the pin labels marking input/output positions for + <font color=red>in.m</font>, + <font color=red>in.p</font>, + <font color=red>out</font>, and + <font color=red>bias</font> + are invisible on the library page, but become visible when + editing the object, that is, when the library object has been placed + on the top-level page. When the library object is used in a circuit, + the pin labels are again invisible. This way, the drawing doesn't + get cluttered up with nested labels. <P> + + <LI> The procedure to attach the schematic to this symbol is quite + simple. Choose menu item <I>Netlist->Associate With Schematic</I>. + Immediately, you will be taken to the page directory, with the + message "Click on schematic page to associate." With the first + mouse button, click on Page 1 (assuming that's the amplifier + schematic). Instead of the usual behavior on the page directory + (go immediately to the page under the cursor), you will be + returned back to the amplifier symbol edit page. + + Now both buttons appear at the same time, one named "Symbol" and + one named "Schematic". The one named "Schematic" is colored white, + indicated that the current page is the symbol, and that a + schematic exists which is the circuit represented by this symbol. + Press either button, and you will go to the schematic drawing + (back to Page 1). Press either button again, and you will return + to the symbol. The library object "wramp" is now a symbol for + the schematic of Page 1. <P> + + A symbol can be <I>disassociated</I> from its schematic, and + vice versa, by choosing menu item + <I>"Netlist->Disassociate Symbol"</I> or + <I>"Netlist->Disassociate Schematic"</I>. + This menu option will appear only for the appropriate case. + Choose this action from the menu now. Note that the white button + in the lower left-hand corner goes back to being blank. The + library object "wramp" is no longer a symbol for the schematic + of Page 1. <P> + + Association can be initiated both ways. The alternate method is + as follows: Go back to Page 1 (the amplifier schematic). + Choose menu item <I>"Netlist->Associate with Symbol"</I> (note + that this is the same button that used to be "Disassociate"). + You are transported to the library directory, with the instructions + in the message window to "click on the library page, then the + object to associate". <P> + + Click on the first library page (the one containing the wide-range + amplifier symbol "wramp"). Now click on the symbol "wramp". + Now, you will be returned to the original schematic page, and + once again, the buttons in the window's lower-left-hand corner + are red and white, indicating that you are on the schematic page + (red) but can move to the symbol page (white). Alternately to + clicking buttons to move between pages, you can choose menu + item <I>"Netlist->Go To Symbol"</I> (or "Go To Schematic", + as appropriate), or use the "<TT>/</TT>" key macro. Note that + the key macro only works if an association exists (i.e., it will + never create a new schematic or symbol, as described in the next + paragraph, although this was formerly the behavior in xcircuit + version 2.1(beta)). <P> + + The schematic and symbol both do not need to exist before association. + You can associate an existing schematic to a non-existing symbol + or associate an existing symbol to a non-existing schematic by using + the <I>"Netlist->Make Matching Symbol"</I> or + <I>"Netlist->Make Matching Schematic"</I> selection, respectively. + If you are editing a symbol, then you will be transported to the first + blank top-level page. If you are editing a schematic (top-level + page), a new User Library symbol will be generated and you will + be transported there. In either case, the new object will take + the name of its associated object, and all pin labels from the + original will be copied to the new, so that's one less step you + have to do yourself. + + <LI> Now it's time to use the symbol as a subcircuit in a top-level + circuit schematic. Go to Page 2, which will be the top-level + circuit. Draw an integrator as shown below: <BR><BR> + + <CENTER><IMG SRC=giffiles/integrate1.gif><BR> + Simple continuous-time integrator using a transconductance + amplifier. </CENTER> <BR> + + Note that there is a "regular" text label titling the page; + this is made in the usual fashion, using key macro (lowercase) + "<B>t</B>", and therefore is not a pin label. <P> + + There is a one-to-one correspondence between the + pin labels on the schematic and the pin labels on the + corresponding symbol. This is important to make sure that + the wires attaching to the symbol on the top-level schematic + go to the correct destinations in the amplifier's schematic. + It is not an error to have unassigned pins: A pin inside + the schematic may be labeling a net for reference purposes + only. A pin on the symbol which is not used in the + schematic is much less likely, but may, for instance, be + representing an unconnected pin on an IC. <P> + + <LI> Save this page. Call it "integrator". At this point, several + points should be noted: + <UL> + <LI> Two pages were saved instead of one. XCircuit followed + the path of the symbol to its schematic, and saved the + schematic for the amplifier. This becomes a separate + page in the PostScript output. Running "ghostview" or + your favorite PostScript previewer shows the two-page + output. + <LI> Page 1, the page containing the schematic of the amplifier, + regardless of what you called it in the first place (if + anything), was renamed "wramp". + By convention, the schematic and symbol have the same + name, although this does not have to be the case. + <LI> All the pages got saved as "Full Page" and not as + "Encapsulated". For multi-page files, "Encapsulated" + PostScript is not meaningful. Options for positioning + the schematic on the page will probably appear in the + future. + </UL> <P> + + <LI> Go to the top-level schematic page (Page 2, or "integrator"). + From the menu, select "Netlist->Write Spice". The message + label will read "spice netlist saved as integrator.spc". + You can view the file <A HREF=netfiles/integrator.spc>integrator.spc</A> + here. Note in particular that xcircuit has generated a + hierarchical netlist, using the amplifier "wramp" as a + subcircuit. The subcircuit contains parameters which are + its pin labels; the <I>call</I> to the subcircuit has parameters + which are the pin labels given on the top level page. <P> +</OL> + +For reference, the resulting PostScript file can be found here: +<A HREF=psfiles/integrator.ps>integrator.ps</A><P> + +SPICE simulation: Xcircuit provides only the netlist. It can also +provide voltage sources and so forth, which will be described in the +next task. However, it has no concept of "models" and provides no +commands for running analyses. In the example above, the spice file +will need to be edited to insert models for devices "nmos" and "pmos", +Declare a voltage source and value for Vdd, and add commands +for DC operating point determination and transient analysis. <P> + +<H2><A NAME="Task4">Task 4: Introduction to parameters</A></H2> + +One thing you may have noticed about the previous circuit is that you +did not, in fact <I>could not</I> specify a value for the capacitor, +which defaulted in the spice netlist to 1.0pF. And there was no way +to specify a width and length of each nMOS and pMOS device. You might +have guessed: There does exist a way to pass values such as capacitance +to the capacitor object, and width and length to the MOS device objects. <P> + +Here's a brief description of how parameters work:<BR> +Each object contains a list of its parameters, NULL if there are no +parameters. Each item in this list declares what is the <I>type</I> of +parameter (so far, "string" or "integer", with only string types fully +supported at present), a default value for the parameter, and another +list which points to all the locations where the parameter gets +substituted. <P> + +It is important to keep in mind the distinction between an <I>object</I> +and its <I>instantiations</I>. If you are on Page 1 looking at an object +you just dragged back from the library, you are looking at a single +<I>instance</I> of that object. If you use the <B>></B> key to +edit the object, then you are editing the object itself. Normally, +there is no particular need to make the distinction. However, when +using parameters, the object itself will declare the default parameter, +but each instance of the object may contain its own unique value for +that parameter. <P> + +Xcircuit adopts a method for editing parameters in which either the +default value or the instance value may be altered, and which one is +altered depends on <I>what top-level page you came from</I>. The +most obvious way to implement this is that if you edit an object from +one of the library pages, you are assumed to be altering the default +(the object on the library page always displays the default value of +all its parameters). If, instead, you edit the object by getting +there from a top-level page or another object, you are editing the +<I>instance</I>, and changes you make to the parameters will only +affect the value of that instance only. This should be made clear +by the tutorial below. + +<OL> + <LI> Run xcircuit, which should automatically load "analoglib2.lps" + onto library page 2 (since xcircuit version 2.2.0. Otherwise, + load it from the subdirectory "examples" of the source + distribution). + <LI> Go to library page 2 (macro <B>L</B>, click on second page). + You will see a set of + replacement objects for the basic circuit structures "capacitor", + "resistor", "nmos", etc. The main difference between these and + the original objects is that they contain labels indicating + values. <BR><BR> + <CENTER><IMG SRC=giffiles/alib.gif><BR> + The parameterized analog component library. </CENTER> <BR> + + <LI> Select, say, the "Resistor" object and drag it back to Page 1. + <LI> Copy the resistor so you have two resistors on Page 1. + <LI> Edit one of the resistors (<B>></B> key). You will note that, + in addition to pin labels, there are some other strings (called + "info labels") which will be described in detail later. + <LI> Edit the string which reads "1.0 k(Ohm)" (<B>e</B> key macro, or + menu selection <I>Edit->Edit</I>). As you move the + cursor around the string, look at the message window. You will + note that in addition to the usual ASCII characters and string + commands such as font changes, half-space, etc., there is now + an additional embedded command label "Parameter(<I>n</I>)< + <I>text</I>>", where <I>n</I> is the parameter number, and + <I>text</I> is a substring (may be empty) which is the parameter + text. For the resistor, "1.0" is a parameter + describing the value, and "k" is a parameter for the metric + scale prefix. Unlike all other parts of the string, you cannot + delete the parameter delimiter marks (parameters must be + removed from a string with the "Unparameterize" function). + <LI> Replace the substring "1.0" with "20" and replace "k" by "M" + or whatever your favorite resistor value is. Be sure that you + are inside the parameter delimiters when you make the change, + or you will get unexpected results. + <LI> Pop back up to the originating page (<B><</B> key). You will + see that only the resistor which you edited has its values + changed; the other one still has the original (default) values + of "1.0" and "k". + <LI> Go to the library again (<B>L</B> key, then click on the second + page), and from there, edit the + resistor (<B>></B> key). From here, change the value to, say, + "2.0 k". Note that now you are changing the <I>default</I> value, + not an instance value. + <LI> Return to the library page (<B><</B> key). Now the library + object shows the new resistance value, indicating that the + default value was altered. From here, go back to the + originating page (third mouse button). Now you see that the + resistor you altered retained its unique value, but the + resistor you didn't alter changed with the default. <BR> + The rule here is that each instance of an object accepts the + default unless is specifically declares its own unique value. +</OL> + +<BLOCKQUOTE> +<font color=red> How does this work?</font><BR> +<font color=green> +There are already traces of parameterization at work in xcircuit. +Each instance of an object has its own unique value for position, +rotation, color, and scale. These can be thought of as parameters. +Whenever xcircuit draws an object instance, it uses the unique +position, rotation, and scale to alter the 2-D transformation +matrix, then recursively calls the object drawing routine on the +object itself. When parameters are present, xcircuit first looks +up any unique values which the object instance might declare, and +substitutes these values into the object itself. If the instance +does not declare a particular parameter, then xcircuit substitutes +the default value. Then xcircuit recursively calls the drawing +routine on the object. +</font> +</BLOCKQUOTE> + +<H2><A NAME="Task5">Task 5: Drawing a circuit with parameters</A></H2> + +<OL> + <LI> Run xcircuit, as in the last example. + + <LI> Using the parameterized devices from the <TT>analoglib2</TT> + library, create the simple lowpass R-C filter shown below:<BR><BR> + + <CENTER><IMG SRC=giffiles/filter1.gif><BR> + Simple R-C filter. </CENTER> <BR> + + <LI> Now, using what you learned from Task 4, alter the individual + parameter values so that they look like the following:<BR><BR> + + <CENTER><IMG SRC=giffiles/filter2.gif><BR> + Simple R-C filter, with new parameter values. </CENTER> <BR> + + <LI> Choose menu item "File->Write XCircuit PS", and rename the top + page something obvious like "filter". Save it if you like. + + <LI> Choose menu item "Netlist->Write Spice". + You can view the resulting SPICE file + <A HREF=netfiles/filter.spc>filter.spc</A> here. +</OL> <P> + +For reference, the finished PostScript file can be found here: +<A HREF=psfiles/filter.ps>filter.ps</A><P> + +Although there are no MOS devices in this file, as in the previous task, +the SPICE deck will need to be completed with commands for performing +transient analysis and so forth, unless the file is to be used for +netlist comparison purposes only. <P> + +Spice output is determined solely by the ``info labels'' (which are green +by default, and only show up when the object they are in is on the top-level +page), in particular, those that begin with the token ``spice:''. There +are several ``escape sequences'' which have special meaning in this info +label. They begin with the ``%'' character and are summarized below. +Also, string parameters can be inserted directly into the info label, a +process which is described directly after. + +<H3>Info label escape sequences:</H3> +<BLOCKQUOTE> +<DL> + <DT> <TT>%%</TT> + <DD> Inserts the character `%' into the netlist output line. + <DT> <TT>?</TT> + <DD> When a single question mark is parameterized as its + own parameter, it is interpreted in the following way: If the + parser encounters a non-default value (i.e., a number), it uses + that number as the index. Otherwise, it generates a unique sequence + number for the object instance. This method is preferred over the + "%i" escape, as it allows each part number to be individually + assigned, if desired. + <DT> <I>(parameter)</I> + <DD> Any parameter may be inserted into the info + label, and therefore takes the value of either the instance string, + if defined, or else takes the value of the default string. The + question mark (<TT>?</TT>) is a special case (see above). + <DT> <TT>%n</TT> + <DD> Insert the name of the object. + <DT> <TT>%p"name"</TT> + <DD> Insert the name of a pin. The pin name must + be quoted exactly as is the label which defines the pin. The quotes + may be omitted if the name contains no white space and is followed + by white space (if in doubt, just use the quotes). + <DT> <TT>%r</TT> + <DD> Insert a carriage-return into the netlist output line. + Carriage-returns can also be inserted directly into the output + by using Alt-Enter or menu option + <I>"Text->Insert->Carriage Return"</I>. + <DT> <TT>%t</TT> + <DD> Insert a tab into the netlist output line. +</DL> +</BLOCKQUOTE> + +Obsoleted sequences (maintained for backward compatibility): +<BLOCKQUOTE> +<DL> + <DT> <TT>%i</TT> + <DD> Insert a number, in sequence, incrementing each time + a new object instance is visited during netlist compilation. + <DT> <TT>%v"name"</TT> + <DD> Insert the name of a parameter. The parameter + name must be quoted exactly as the label or label segement which + defines the <I>default</I> parameter. Alternately, a parameter + can be inserted directly into the string during text edit mode + using the "Alt-p" key. This is perhaps more intuitive, because the + value shown is either the default or substituted value, as appropriate, + rather than always listing the default value. The library file + <A HREF=../xcircuit/psfiles/analoglib1.lps>analoglib1.lps</A>, + which is available either + at this link or in the source distribution under the "examples" + directory, makes use of the "%v" method. <TT>analoglib2.lps</TT> + makes use of the direct-insertion method. +</DL> +</BLOCKQUOTE> + +<font color=red> <I>Example:</I> </font> +<font color=green> +<BLOCKQUOTE><PRE><TT> +sim:n %pG %pS %pD +</TT></PRE></BLOCKQUOTE> +</font> +<font color=red> +<I>or:</I> +</font> +<font color=green> +<BLOCKQUOTE><PRE><TT> +spice:M%i %pD %pG %pS GND nmos +</TT></PRE></BLOCKQUOTE> +</font> +The top example produces an nMOS transistor line in a "sim" netlist, where +the actual net names inserted into the output file are those which correspond +to the gate, source, and drain pins, respectively. The bottom example does +the same thing for a SPICE netlist file, assuming that the SPICE model will +be called "nmos" (this can be parameterized if more than one model is +required; see paragraph below), and the "%i" sequence ensures that each +transistor gets a different label: M1, M2, M3, and so forth. + +<H3>Inserting string parameters directly into a label:</H3> + +While editing a label, use the key sequence ``Alt-p'' to insert a parameter. +If the object has only one parameter, it will be inserted automatically. If +the object has two or more parameters, xcircuit will prompt for the one to +use (listed by number). Once the copy of the parameter string is in the +label, there is effectively no difference between the copies: making changes +to one automatically changes the other (although the change may not show up +immediately). In general, this method is clearer than using ``%v'', since +the subsituted string appears directly in the info label rather than +referring back to the default string, so ``what you see is what you get.''<P> + +<OL> + <LI> From the default analog library (library page 1), grab the + (unparameterized) object "nmos" and drag + it back to page 1 (or whatever page you're working on). + <LI> Edit the "nmos" object (key "<B>></B>"). + <LI> Use the second mouse button to draw a selection box around the + word ``nmos'' in the first information (green) label. + <LI> The word ``nmos'' will be highlighted; in this selection + mechanism, only that substring of the label has been selected. + <LI> Choose menu option <I>Text->Parameterize</I>. + <LI> Now edit the info label. When you get to the word ``nmos'', + you will notice, as printed in the message field at the bottom + of the xcircuit window, that it is bounded by invisible marker + characters ``Parameter(1)<'' and ``>''. + At this point, the SPICE model is a parameter of the object, + and its default value is ``nmos''. + <LI> Because you entered the object from Page 1 rather than the Library, + what you are editing is the string <I>instance</I>, not the + string <I>default</I>. Change the parameter substring to read + <B>nmos1</B>, indicating an alternate MOS model called ``nmos1'' + (which must be added to the output SPICE file before simulation!). + Make <I>sure</I> that the character "1" comes <I>before</I> the + ">" parameter end marker; otherwise, it is not part of the + parameter, and instead becomes part of the default value. + <LI> Finish editing and return to the calling page (key "<B><</B>"). + <LI> Grab another object ``nmos'' from the library and place it on + Page 1. Edit it (key "<B>></B>"). Note that the parameter + string contains the default value ``nmos''. + <LI> Pop back out to Page 1 and run ``Netlist->Write spice''. The + resulting file is simple and can be included below. <BR><BR> + +<font color=green> +<TT> +Spice circuit Page 1<BR><BR> +M1 net.1 net.2 net.3 GND nmos<BR> +M2 net.4 net.5 net.6 GND nmos1<BR> +.end +</TT> +</font> + +</OL> + +Information labels with embedded parameters are used in the library file +<A HREF=../xcircuit/psfiles/analoglib2.lps>analoglib2.lps</A>. +Note that in most objects +("Capacitor", "Resistor"), the parameterized value is in a string and +therefore shows up as part of the circuit diagram. However, others +("PNP", "NPN", where the SPICE model name is parameterized) have the +parameter only in an information label, where it does not show up on +the top-level page. Yet others ("nMOS", "pMOS") contain both (width +and length values appear on the top-level page and are copied into +the information label, but the name of the SPICE model only appears +in the information label). <P> + +As an addendum to this task, run xcircuit and load the file and generate +a spice circuit which uses two nMOS devices from the "analoglib2" +library page, each instance having a different SPICE model. In +addition, make the widths of the two devices different. + +Note that when more than one string contain the same parameter, editing +one of the values will not be immediately reflected on the screen as +a change in the other(s). Popping back to the level above the object +and returning to edit the object will show all the proper substitutions. + +<H2><A NAME="Task6">Task 6: Making a new "fundamental" object</A></H2> + +All netlists generate output when they reach a ``fundamental'' object, +which is defined as an object containing one or more informational +labels. <P> + +Fundamental objects require several features: +<UL> + <LI> Fundamental objects are expected to be symbols. As in all + symbols, lines are interpreted as part of the symbol drawing, + not as nets. The only ``electrically relevant'' elements on + a symbol are the pins. + <LI> Fundamental objects contain ``info labels'' which tell the + netlist compiler what to do with the information passed to + the object via the pins. Presently, there are three + different "styles" of netlist, named after the primary + format which uses that kind of netlist: + <UL> + <LI> Hierarchical, or ``spice'' netlists + <LI> Flattened, or ``sim'' netlists + <LI> Network, or ``pcb'' netlists + </UL> + Information on each of these netlists is widely available + and distributed with layout and simulation software + packages. In a nutshell, however: + <UL> + <LI> Hierarchical and Flattened netlists both list by + <B>element</B>, with each line of the file consisting + of an element name followed by a list of network names + corresponding to each of the element's pins. + <font color=red> + <BR><I>example:</I> + </font> + <font color=green> + <TT>Q1 net2 D0 gnd npn1</TT><BR> + </font> + indicates that NPN transistor ``Q1'' has a collector + connection to "net2", base connection to "D0", and + an emitter connection to "gnd" (presumably a global + network). + <LI> A Network netlist lists by <B>network</B>, with each + line consisting of a network name followed by a list + of pins in the circuit to which the network connects. + The element names are part of the pin names, with + the circuit hierarchy encoded in the element name by + slashes (`/'), much like a file system directory listing. + <font color=red> + <BR><I>example:</I> + </font> + <font color=green> + <TT> Net3 control/74LS00_1#1-2 display/LED#2-5</TT><BR> + </font> + indicates that the network named "Net3" connects + pin number 2 in the first 74LS00 chip in subcircuit + "control" to pin number 5 of the second LED in subcircuit + "display". + </UL> + <LI> A result of being an object and having an info-label is that the + "Symbol" button is green, indicating a "fundamental" element. +</UL> + +There is another type of symbol called a "trivial" symbol. This cannot be +designated from xcircuit. It is only a optimization which tells xcircuit +that an object does not produce output and is not a sub-schematic, and +therefore can be ignored except for the presence of pins. This prevents +the xcircuit netlist generator from wasting time looking for subschematics +or informational labels. Except for saving compute cycles, there is no +other difference between "trivial" and normal symbols. "Trivial" symbols +are declared in the PostScript file with a "% trivial" line. + +<H2><A NAME="Task7"> +Task 7: A schematic with symbol-less schematics in the hierarchy</A></H2> + +A "subschematic" is a special kind of symbol which, unlike other symbols, +contains electrically relevant objects. Really, it's just a grouping of +electrical objects which bypasses the trouble of making a symbol to +represent the grouping. This can be useful, for instance, in drawing +one-half of a differential amplifier and repeating the schematic, flipped +horizontally. <P> + +XCircuit is extremely sophisticated in its ability to deal with subschematics. +It will determine how the subschematic is used, searching for input and +output "ports" that link the subschematic to the circuit on the level above. <P> + +The file in the xcircuit source "examples" directory +<TT>diffamp_test.ps</TT> is an example of such a file with subschematics. +It represents an obvious situation in which a subschematic is useful: This is +a differential amplifier, so a large portion of the amplifer is duplicated on +the positive and negative sides. <P> + +<CENTER><IMG SRC=giffiles/halfamp.gif><BR><BR> +Differential amplifier sub-schematic: One half of an amplifier. +</CENTER> <BR><BR> + +<CENTER><IMG SRC=giffiles/fullamp_anno.gif><BR><BR> +Differential amplifier complete schematic +</CENTER> <BR><BR> + +The second of the two figures above shows how the half-amplifer subschematic +connects into the differential amplifier schematic. Note that no pins (pin +labels) have been explicitly called out in the subschematic. All connections +are determined from context. Different contexts which xcircuit finds and +interprets are marked with red circles on the differential schematic +(the <A HREF=giffiles/fullamp.gif>unannotated version</A> of the schematic can be +found here). The annotations, called out by number, are as follows: <P> + +<font color=red> +<OL> + <LI> Port makes connection to a wire (polygon) + <LI> Port makes connection on one side but not on the other + <LI> Port makes connection to a label (pin) + <LI> Port makes connection to a pin of another object + <LI> Two ports in the subschematic get merged into one network + <LI> (not shown) Port connects to port on another subschematic +</OL> +</font> + +On any given schematic page, port connections between symbols, between +subschematics, and from subschematics to symbols and vice versa, may be +from any layer in the circuit hierarchy to any other layer in the circuit +hierarchy. <P> + +<H2><A NAME="Task8">Task 8: Identifying electrical connections</A></H2> + +XCircuit has the ability to highlight all wires belonging to a single +electrical network. This is a very useful feature for debugging +schematics, finding shorts and open-circuits. The command for +identifying network connectivity is menu selection +<I>Netlist->Highlight Connectivity</I> and the default key binding +for the same function is <B>Alt-w</B>. The key macro operates immediately +on either selected elements or whatever element is nearest the cursor, +while the menu item either operates immediately on any selected element +or prompts for a mouse click on an element to show connectivity for. +If multiple elements are selected prior to choosing the connectivity +function, connectivity will be searched for the first item encountered +in the select list which is part of a valid network. <P> + +As an example, load the file <TT>diffamp_test</TT> used previously in +Task 7 (<TT>examples/diffamp_test.ps</TT> in the XCircuit source +distribution). Place the pointer over any wire and type <B>Alt-w</B>. +The whole network will be ``highlighted'' in green. Note some features +of connectivity searches: +<UL> + <LI> Global networks such as ground have all parts of the network + highlighted, even if they are physically separated on the + drawing. + <LI> Network selection is a different from element selection: It is + recursive. In the schematic drawing for "ampl_test" (Page 2), + networks inside the "half_amp" sub-schematic can be selected for + connectivity search, even though for purposes of normal move, + copy, etc., the "half_amp" can only be selected as an entire object. + <LI> Pins can be selected as well as wires, and pins belonging to a + network will be highlighted along with the rest of the network. + <LI> The name of the network is printed in the message window at the + bottom of the xcircuit screen. Hierarchy is relevant: A network + may have a different name depending on whether it is selected on + the top-level schematic, or somewhere down in the schematic + hierarchy. The network name displayed is that name belonging to + the network at the <I>highest</I> level of the hierarchy. + <LI> Additional networks can be highlighted without erasing the original. + To erase one network before starting another, click the right + mouse button once ("Cancel" operation). +</UL> + +Currently, there is no method to detect and return a network name for +pin positions connecting two objects (that is, networks which do not +have a polygon or label explicitly attached to them in the schematic +drawing). <P> + +<I>Note:</I> Network connectivity searches only work as described above +in XCircuit version 2.3.5 rev. 1 and later. <P> + +<H2><A NAME="Task9">Task 9: A symbol on its own schematic</A></H2> + +File example "<TT>examples/logic8.ps</TT>" in the source distribution has +an example of a symbol on its own schematic. Run xcircuit on this example +file, and go to page 2, the schematic for the 2-input NAND gate. At the +bottom of the schematic is a picture of the "NAND" symbol. Note that +you can "push" (">" key) into the symbol picture, and then cross over +("/" key) to the schematic, returning to where you started in a circular +manner. You can do this all day until you run out of memory, so it is +not recommended. Fortunately, when xcircuit generates the circuit netlist, +it is not fooled into this recursive path. Instead, it detects the +presence of the recursion and will not treat the symbol picture as part +of the network. You can verify this by generating a SPICE netlist for +circuit "logic8" and reading the resulting file "<TT>logic.spc</TT>": + +<FONT color=green> +<BLOCKQUOTE> +<PRE> +*SPICE circuit "logic" from XCircuit v2.30 + +.GLOBAL Vdd +.GLOBAL GND + +.subckt invert Out In +M1 Out In Vdd Vdd pmos +M2 Out In GND GND nmos +.ends + +.subckt nand Out In.1 In.2 +M1 Out In.1 Vdd Vdd pmos +M2 Out In.1 ext13 GND nmos +M3 ext13 In.2 GND GND nmos +M4 Out In.2 Vdd Vdd pmos +.ends + +X1 int1 Pin.1 invert +X2 Pin.4 int1 Pin.2 nand +X3 Pin.5 Pin.2 Pin.3 nand +.end +</PRE> +</BLOCKQUOTE> +</FONT> + +As you can see, the circuit has been created as intended, and the symbols +marked on their own schematics do not present a problem. <P> + +<I>Caveat:</I> It is possible to do more subtle forms of recursion. For +instance, in the "<TT>logic8</TT>" circuit, redraw the NAND2 schematic so +that the output goes through a buffer made of two inverters. This is +perfectly reasonable, by itself. Now, go to the inverter schematic, and +in place of the nMOS + pMOS stack, put a NAND2 gate with its two inputs +tied together between the In and Out pins. This is also perfectly reasonable, +by itself. However, the two changes taken together try to define the +NAND2 and inverter in terms of each other, which is recursive. Versions +of xcircuit before 2.3.5 rev. 1 will simply crash. Later versions will +detect the error as a suspiciously deep hierarchy, and halt the netlist +process before the processor hits a stack limit. <P> + +<H2><A NAME="Task10">Task 10: "sim" format and flattened netlists</A></H2> + +"sim" netlists are normally associated with digital VLSI circuits, but they +also can be useful for netlist comparisons of digital, analog, and mixed-signal +VLSI circuits. The standard "sim" format defines device types for nFET +(enhancement and depletion) and pFET transistors, resistors (explicitly +defined and lumped), and capacitors. However, the format has variously +been extended to cover other devices such as bipolar transistors, and any +variation of any component, provided it gets a unique letter assigned for +the device and is meaningful to whatever software uses the format downstream. <P> + +The main difference between "sim" and "SPICE" netlists is that SPICE allows +hierarchical descriptions containing subcircuits, whereas "sim" is by +definition a "flattened" version of a circuit. There is very little that +is necessary to say here, other than to note the ability of XCircuit to +generate flattened circuit netlists. XCircuit also has an option to +generate flattened SPICE. Note the difference in output, for instance, +between the output "logic.spc" for circuit "logic8" (shown in Task 9, above), +and the following output "logic.fspc" for the same circuit (generated by +<I>Netlist->Write flattened SPICE</I>: + +<FONT color=green> +<BLOCKQUOTE> +<PRE> +*SPICE (flattened) circuit "logic" from XCircuit v2.30 + +M1 int1 Pin.1 Vdd Vdd pmos +M2 int1 Pin.1 GND GND nmos +M3 Pin.4 int1 Vdd Vdd pmos +M4 Pin.4 int1 nand1/ext13 GND nmos +M5 nand1/ext13 Pin.2 GND GND nmos +M6 Pin.4 Pin.2 Vdd Vdd pmos +M7 Pin.5 Pin.2 Vdd Vdd pmos +M8 Pin.5 Pin.2 nand2/ext13 GND nmos +M9 nand2/ext13 Pin.3 GND GND nmos +M10 Pin.5 Pin.3 Vdd Vdd pmos +</PRE> +</BLOCKQUOTE> +</FONT> + +<H2><A NAME="Task11">Task 11: "pcb" type netlists</A></H2> + +XCircuit is ostensibly an ideal platform for generating schematic netlists +to compare against PCB (printed circuit board) designs. However, by +default (at least for now), xcircuit libraries are set up primarily for +VLSI layout work, so PCB netlisting requires a little extra work +(because a lot of users want to use XCircuit for PCB netlisting, I'd like +some help putting together libraries of IC's). <P> + +PCB netlists are fundamentally different from SPICE and sim netlists. +Instead of listing by <I>device</I>, the file lists by <I>network</I>. +The format is flattened, probably on the assumption that printed circuit +boards have no hierarchy. By default, xcircuit will list device pins +(network connections) by the name of the object followed by a dash and +the name of the pin to which the network connects. Any hierarchy present +in the xcircuit file is flattened by separating layers of the hierarchy +with slashes, as is done for the "sim" format. <P> + +For PCB symbols, the name of the object is used as the part name in the +netlist unless the object's symbol has a "pcb:" info label. In addition, +the sequence number of the part is assigned automatically unless declared +as a parameter in the "pcb:" info label. Typically, PCB components are +labeled "U" for integrated circuits, "R" for resistors, "C" for capacitors, +"J" for connectors and jumpers, and so forth. The sequence number for +each part, if automatically generated, will be unique with respect to +the name used for the part in the netlist output.<P> + +Consider Harry Eatons's ``<B>LED</B>'' design which comes as an example +in the "PCB" distribution. The relevant files are also linked +here: +<OL> + <LI> <A HREF=pcb/LED>LED</A> (a PCB-format file) + <LI> <A HREF=pcb/LED.NET>LED.NET</A> (a PCB netlist file) +</OL> + +Creating the schematic is very complicated, so I've done much of the +work to get you started. Here is an xcircuit file which can be used to +create a (partial, because it's unfinished) netlist to compare +against the <B>LED</B> printed circuit layout and netlist. + +<UL> + <LI> <A HREF=pcb/FlareLED.ps>FlareLED.ps</A> (an XCircuit-format file) +</UL> + +The important thing to notice about this file is the way components are +handled. Each component has an object name (a generic name, such as +"Resistor" or a part description, such as "LTC490"), text which may or +may not duplicate the title, and text which parameterizes the object +(such as resistor and capacitor values). In addition, each object is +parameterized for use in PCB. This requires a string inside the object, +an "info label" which is interpreted by the pcb netlist generator in +xcircuit. Also inside the object, not visible from the top level +drawing, are pin numbers for each object. For integrated circuits, +there is text on each pin which is a <I>functional</I> pin description. +This is not needed for the netlist, but makes it much easier to understand +the schematic. + +<OL> + <LI> Start up xcircuit on the file <A HREF=pcb/FlareLED.ps>FlareLED.ps</A>. + <LI> Go to the User Library (the library containing all of the ICs and + connectors in the schematic). + + <CENTER><IMG SRC=pcb/flare_objects.gif><BR> + Integrated circuits and components library for FlareLED. + </CENTER> <BR> + + <LI> Edit ("<B>></B>" key) the PIC controller (object named + "PIC16C54". + <LI> You will note several things: This is an 18-pin chip, with pin + labels corresponding to the actual DIP package pin numbers. + Next to each pin number is the functional name for that pin. + On the top level page, only the functional names appear. On + the top level page, the device can be flipped, rotated, etc., + without regard to the physical PCB layout. It is only necessary + that the networks of wires correctly connect the pins of + all the components. + <LI> The "PIC16C54" object, like all the integrated circuits in the + schematic, has an "info label" which reads <BR><BR> + <font color=green><BLOCKQUOTE><PRE><TT> + pcb:U? + </TT></PRE></BLOCKQUOTE></font> + + <CENTER><IMG SRC=pcb/pic_object.gif><BR> + PIC 16C54 object, as edited from the library (default parameters) + </CENTER> <BR> + + <LI> Edit this info label ("<B>e</B>" key). Note that the question + mark is a parameter. + <LI> Escape from the label edit (3rd mouse button) and return to the + main page ("<B>1</B>" key). Now edit the <I>same</I> object, + the PIC16C54, from this page ("<B>></B>" key). + <LI> Now you will see that the info label reads + <font color=green><BLOCKQUOTE><PRE><TT> + pcb:U5 + </TT></PRE></BLOCKQUOTE></font> + This is an <I>instance</I> value. It corresponds to the location + and label for an IC on the PCB layout. <BR><BR> + + <CENTER><IMG SRC=pcb/pic_instance.gif><BR> + PIC 16C54 instance, as edited from the top page (instanced parameters) + </CENTER> <BR> + + <LI> End the label edit and return once again to the top level page. + From the menu, choose <I>Netlist->Write pcb</I>. The result + is a file named <TT>FlareLED.pcb</TT>. Compare this file to + the supplied netlist file named <TT>LED.NET</TT>. The XCircuit + schematic is not complete, but the parts that are correspond in + both netlist files. + <LI> <I>Challenge</I>: Finish this schematic and show that the two + netlists are the same (``Layout vs. Schematic'', or ``LVS''). + <LI> <I>Another Challenge</I>: Create an xcircuit library containing + the entire 7400 digital IC series and send it to me so I can + post it on this website. +</OL> + +<H2><A NAME="Task12">Task 12: Multiple-gate chips in PCB netlists</A></H2> + +Pins can be parameterized beginning in version 2.5.2 (it is allowed in +earlier versions but will cause invalid netlist output). Pins normally +work differently than label strings when making substitutions during +netlist generation; it is the network name which is substituted. +However, PCB-type netlists write pin names directly to the output, and +this is where parameterized pin names can be useful: For example, a +``quad part'' like a 7400 quad NAND chip has four NAND gates which are +identical except for their pin numbers on the package. Normally, a +PCB netlist would declare these as four parts, say, ``U1-1'' through +``U1-4''. By parameterizing all of the pin names, four instances can +be made representing the four gates inside the 7400 chip, each having +the correct pinout. <P> + +A method for saving the pinouts of gate subunits in chips was added +to version 2.5.2 along with the meaningful method for generating PCB +netlists from parameterized pin names. This method allows multiple +instances of a single object to appear on the same library page. +These copies should represent the object with different parameter +values. The most common use of this method is to parameterize pins +of a logic gate that is a subunit of a multiple-gate IC, and show +each of the subunits on the library page, where they can be used to +generate a PCB netlist. <P> + +Using XCircuit 2.5.2 or later, installed, start xcircuit and go to the +fourth library page ``<B>Library: quadparts</B>''. You will see the +following set of objects (partial view of the library): + +<CENTER><IMG SRC=giffiles/quadparts.gif><BR><BR> +Partial view of the ``Quadparts'' library (from preliminary version). +</CENTER> <BR><BR> + +Note that there are four copies of each named object. Each of the copies has +the same name, but three of the names are ``shaded out'' in a gray color. +The part with the name written in black is the original library part. It +contains parameters, but like standard library page objects, it displays all +of the default values for these parameters. As in Tasks 4 and 5, editing +parameter values in this library object will change the default values of +those parameters. The objects with the names printed in gray are +called ``virtual objects.'' They act like objects on a page rather than +objects in a library. Parameters in these objects may take on individual +values, and those specific values are copied along with the object when +it is selected and dragged back to a page. <P> + +<CENTER><IMG SRC=giffiles/nand4.gif><BR><BR> +Editing a library virtual copy (instance) of gate ``quadnand''. +</CENTER> <BR><BR> + +From the library page, grab all four ``quadnand'' objects and bring them +back to Page 1. With the four objects, one can make, for instance, a +delay flip-flop implementation from a single 7400 chip. This is shown +below: + +<CENTER><IMG SRC=giffiles/dff.gif><BR><BR> +<A HREF=psfiles/dff.ps>Delay Flip-Flop</A> using the ``quadparts'' library. +</CENTER> <BR><BR> + +After building the circuit, select <I>Netlist->Write pcb</I>. The +result is a valid PCB netlist for the circuit: + +<FONT color=green> +<BLOCKQUOTE> +<PRE> +!Q U2-2-5 U1-1-3 +D U3-3-9 +CLK U4-4-13 U3-3-10 +int5 U4-4-12 U3-3-8 U2-2-4 +int6 U4-4-11 U1-1-2 +Q U2-2-6 U1-1-1 +</PRE> +</BLOCKQUOTE> +</FONT> + +<H2><A NAME="Task13">Task 13: Modifying netlist formats</A></H2> + +The Python interpreter is supposed to make new netlist formats easy to +implement. However, the Python interface does not yet include access +to netlist information, so for the moment, netlist formats are limited. <P> + +As it stands, netlists must be one of three formats: +<OL> + <LI> Flattened ("sim" or SPICE) + <LI> Hierarchical (with subcircuits in SPICE "subckt" format) + <LI> Netlist (flattened, in a PCB netlist format) +</OL> + +Flattened netlists are the easiest to implement new formats in, since +the only structure in the file is determined by the elements themselves +(not counting comment lines, such as the first line that xcircuit writes +to the netlist file). The other two formats contain syntax that is +(currently) hard-coded into xcircuit (the "subckt" command in hierarchical +SPICE, and the entire syntax of PCB). Information about how to write +devices is encoded into ``informational labels'' (otherwise abbreviated +as ``info labels''). The syntax of info labels is described above in +<B>Task 5</B>. <P> + +Modifications to netlist formats can be useful in several ways: +<OL> + <LI> Implement a completely different netlist type (some subset of VHDL, + for instance) + <LI> Modify an existing format (hspice or pspice syntax vs. ordinary + Berkeley spice3). + <LI> Avoid explicitly drawing circuit schematics for simple devices. + <LI> Write output at the gate level instead of the transistor level. +</OL> + +The last two require some explaining, so start up xcircuit and prepare +for another task. <P> + +<H3> Aggregate output per device </H3> +Here, we will change an "inverter" into a fundamental device consisting +of two transistors in the usual CMOS configuration for the inverter. +By default, XCircuit neither attaches schematics to gates nor defines +aggregate (multiple line) output for a gate because there are too many +ways to define a gate. For instance, the inverter could be an nMOS +device with a p-pullup, or it could be a bipolar-based TTL inverter, +etc., ad nauseum. + +<OL> + <LI> Go to the first library page and drag back an inverter to the + first page. + <LI> Add some pin labels to the input and output nodes. Call them, + say, "in" and "out" (or something less boring, if you prefer). + <LI> Edit the inverter device (<B>></B> key) + <LI> Start an "info label" (<B>I</B> key, or <I>Netlist->Make Info Pin</I> + from the menu) + <LI> Type <BR> + <TT>sim:n %pIn GND %pOut</TT><Alt-Enter><TT>p %pIn Vdd %pOut</TT><BR> + where "<Alt-Enter>" + is the key combination Alt + Enter (also available using the + menu selection <I>Text->Insert->Carriage Return</I>). + Note that spaces, tabs, and other characters will transfer + to the netlist output, although embedded commands such as color, + font, and size change will not. + The embedded carriage return <I>will</I> end up in the netlist + output, as a real carriage return/newline. The result is shown + below. <BR><BR> + + <CENTER><IMG SRC=giffiles/aggregate.gif><BR> + Inverter with informational label for "sim" netlist output. + </CENTER> <BR> + + <LI> Return to the top level page, choose "File->Write Output" to + change the name from "Page 1" to something more useful. + Then, from the menu, select <I>Netlist->Write sim</I>. + The netlist output will look something like the following: <BR> + +<font color=green> +<BLOCKQUOTE> +<PRE><TT> +| sim circuit "aggregate" from XCircuit v2.30 +n in GND out +p in Vdd out +</TT></PRE> +</BLOCKQUOTE> +</font> + + <LI> If you return to editing the symbol "invert", you will find + that after writing the netlist, the "Symbol" button in + the lower left-hand corner of the XCircuit window turned + green, indicating that this symbol is now considered to be + a "fundamental" object. That is, it has an informational + label and contains no subcircuits. +</OL> + +<H3> Output not on the device (transistor) level </H3> + +Suppose, in the above example, we didn't know or care what is the +transistor-level implementation of the inverter, but wanted a SPICE +file showing the hierarchy, for which an inverter subcircuit could +be inserted at a later point. + +<OL> + <LI> Repeat the above task through number <B>4</B>. + <LI> Write for the info label <BR> + <TT>spice:X%i %pIn %pOut inverter</TT> + <LI> Return to the top level page, and write a SPICE netlist. + The netlist output will look something like the following: <BR> + +<font color=green> +<BLOCKQUOTE> +<PRE><TT> +*SPICE circuit "aggregate" from XCircuit v2.30 + +X1 in out inverter +.end +</TT></PRE> +</BLOCKQUOTE> +</font> + + <LI> While this deck is not directly simulatable, it only awaits the + insertion of an inverter model in the form of a subcircuit. +</OL> + +<H2><A NAME="Task14">Task 14: Example: A bridge rectifier for a PCB</A></H2> + +This task will summarize most of what has been covered above in the tutorial +with a practical example, a power supply bridge rectifier for a printed circuit +board layout. The example will work through detailed explanations of each +step, for the benefit of the impatient. <P> + +The bridge rectifier is a simple power supply circuit which transforms an AC +supply (e.g., wall outlet) into a DC current for powering a circuit. The +"bridge" is a diode bridge, a loop of four diodes which act as a full-wave +rectifier. The bridge also acts as a nonlinear resistance in a simple +single-pole R-C low-pass filter. The filter pole is set by a large +polarized capacitor on the rectifier output. The larger the capacitor, +the steadier the output voltage, including resistance to short spikes and +dropouts of the AC supply. <P> + +Usually the bridge rectifier circuit drives the input of a voltage regulator +to clean up the 120Hz bumps generated by the less-than-ideal lowpass filter, +and to adjust the voltage between the transformer and the circuit being +powered. For simplicity, this example will not consider the voltage +regulator. <P> + +For more information about bridge rectifiers, see Horowitz and Hill, +<I>The Art of Electronics</I>, 2nd edition, pages 45 and following +(Cambridge Press, 1989). <P> + +<H3>Step 1</H3> + + If you have xcircuit version 2.3.3 after revision 6, there will be a + symbol "Diode" (with capital-D) in the analoglib2.lps file (the + second library page). If not, you can update your library from this + link: <A HREF=../xcircuit/psfiles/analoglib2.lps>analoglib2.lps</A>, + and skip to Step 2. Alternatively, you can + use the following instructions to generate the PCB-compatible diode + from the simple diode on the first library page (named "diode", no + capital letter). <P> + + The diode symbol "diode" in the first library is not configured for use in + PCBs. This can be changed easily. Go to the first library page (<TT>l</TT> + key macro), and edit the diode symbol (<TT>></TT> key macro). + Change the pin names to "1" and "2" (edit, or <TT>e</TT> key) to match + PCB naming conventions. Finally, add an "info label" for the PCB + netlister (<TT>I</TT> key, or else create a normal label then select + menu item <I>Netlist->Convert Label To...->Info label</I>). The label + text should be + <font color=green> + <BLOCKQUOTE><PRE><TT> + pcb:D? + </TT></PRE></BLOCKQUOTE> + </font> + After creating the label, use the second mouse button to drag a select + box over the question mark. Only the question mark should be highlighted. + Then select menu item <I>Text->Parameterize</I>. As described earlier in + the tutorial, the PCB netlister will use this parameterized string to + determine a part number for the diode, or else the part number can be + explicitly declared by editing the info label from each of the four + instances of symbol "diode" that we will generate. + + <CENTER><BR><IMG SRC=giffiles/pcbdiode.gif><BR></CENTER> <BR> + + Return to a drawing page (<TT><</TT> key, <TT>1</TT> key to go to Page 1) + and continue with Step 2. + +<H3>Step 2</H3> + + Go to the library (<TT>l</TT> key, twice to get to the analoglib2 page, + or once if using an edited version of the simple diode, from Step 1) + and select the diode for copying (<TT>c</TT> key). + This action will take you back to the main + drawing page, with a diode instance in tow. While the diode is still + selected, rotate it (<TT>r</TT> key, as many times as necessary). + Place it four times with a click of the first (left) mouse button, + and finish with a click of the third (right) mouse button. Rotate and + position the diodes as shown below. + + <CENTER><BR><IMG SRC=giffiles/bridge2.gif><BR></CENTER> <BR> + +<H3>Step 3</H3> + + Connect the diodes together in a bridge configuration. While the + diode endpoints are not quite on the drawing grid when the diode is + rotated 45 degrees, they are fairly close (as drawn, see figure + above), and there is some "slop" in the netlist generator when + considering whether two wires are connected together. No special + measures are necessary to ensure the connection. + + <CENTER><BR><IMG SRC=giffiles/bridge3.gif><BR></CENTER> <BR> + + Make a schematic out of the rectifier by selecting all the components + drawn so far, typing <TT>m</TT> to "make" the object, and name + the object "rectifier". This is a "subschematic", as described + above in the tutorial, and pins will be determined from context. + +<H3>Step 4</H3> + + Grab the transformer symbol from the "analoglib2" library (2nd library + page). Add wires to the transformer input, ending in terminals for + the input AC supply. Name these terminals "V+" and "V-" (typographical + suggestion: use the Symbol font for "+" and "-"). + + <CENTER><BR><IMG SRC=giffiles/bridge1.gif><BR></CENTER> <BR> + + Connect the transformer and the rectifier together as shown. + + <CENTER><BR><IMG SRC=giffiles/bridge4.gif><BR></CENTER> <BR> + +<H3>Step 5</H3> + + Grab two capacitors (one polarized, one not) from the second library + page. These are the capacitors with values listed. + They are already configured for use with a PCB netlist. <P> + + The capacitors default to a picofarad value (for use with VLSI + layouts, not PCBs), so the value string needs to be edited to + change this to the "micro" symbol for microFarads. <P> + + <font color=red>Typographical note:</font> <BR> + The best way to do this is to change the font of the whole + string from "Times-Roman" to "Times-RomanISO" (use menu option + <I>Text->Encoding->ISO-Latin1</I> or, while editing the label, + use the <I>Alt-</I><TT>e</TT> key combination). The "micro" + symbol (Greek "mu") is available from the font symbol table (accessed + with the backslash key while editing text). The change to ISO + encoding will be necessary on both the value string and the "SPICE" + info label. <P> + + <font color=red>Netlist note:</font> <BR> + The SPICE netlist generator will convert the "mu" symbol to the "u" + used by SPICE. This happens regardless of whether the ISO-encoded + "mu" or the Symbol font "mu" is used. Of course, one may also + write ASCII "u" in the value string. + + <CENTER><BR><IMG SRC=giffiles/pcbcap.gif><BR></CENTER> <BR> + +<H3>Step 6</H3> + + Connect all the parts together on the top level page as shown. + + <CENTER><BR><IMG SRC=giffiles/bridge6.gif><BR></CENTER> <BR> + + Add finishing touches, and the completed bridge rectifier should + look something like the one shown below. + + <CENTER><BR><IMG SRC=giffiles/bridge.gif><BR></CENTER> <BR> + + The xcircuit file can be obtained here: <A HREF=psfiles/bridge.ps>bridge.ps</A>. + +<H3>Step 7</H3> + + Select menu option <I>File->Write XCircuit PS</I> and select a "Page label" + for the file. This will be the name used by the netlist generator for + the netlist file name. <P> + + Generate the PCB netlist by selecting menu option <I>Netlist->Write pcb</I>. + The result is shown below:<BR><BR> + + <font color=red> + <BLOCKQUOTE><PRE><TT> + V- T1-2 + V+ T1-1 + int5 T1-3 rectifier1/D4-1 rectifier1/D3-2 + int6 T1-4 rectifier1/D2-1 rectifier1/D1-2 + Vout rectifier1/D3-1 rectifier1/D1-1 C2-1 C1-1 + GND rectifier1/D4-2 rectifier1/D2-2 C2-2 C1-2 + </TT></PRE></BLOCKQUOTE> + </font> + <BR> + + and can also be obtained from this link: + <A HREF=pcb/bridge.pcb>bridge.pcb</A>. + +<H3>Step 8</H3> + + The example is essentially done, but we can take it one step further + by generating a symbol called "power_supply" to represent this circuit + in a larger schematic. <P> + + Go to an empty page (Page 2, perhaps) and generate the following figure:<BR> + + <CENTER><BR><IMG SRC=giffiles/powersup.gif><BR></CENTER> <BR> + + Labels in black are normal text (created with the <TT>t</TT> key), and labels + in red are pins (created with the <TT>T</TT> key). After drawing, select + everything and put it all into an object (<TT>m</TT> key). Name the object + "power_supply". <P> + +<H3>Step 9</H3> + + Now go back to Page 1, the bridge rectifier schematic. Choose the menu + selection <I>Netlist->Associate with Symbol</I>. You will be taken to + the library directory. Click (once) on the user library. You will be + taken directly to the user library. Finally, click (once) on the symbol + "power_supply". Now you should be returned to the bridge rectifier + schematic, with the difference that there is a white button labeled + "Symbol" in the bottom left-hand corner of the window. Clicking on the + button toggles the drawing window between the schematic and its + (newly associated) symbol. <P> + +<H3>Step 10</H3> + + Return to Page 2, the top-level schematic with the "power_supply" symbol. + Try out the following (trivial to the point of uselessness) circuit + (also available at this link: <A HREF=psfiles/powersup.ps>powersup.ps</A>): + <BR> + + <CENTER><BR><IMG SRC=giffiles/powersup2.gif><BR></CENTER> <BR> + + Go to menu selection <I>File->Write XCircuit PS</I> and rename the "Page + label" to "powersup". Then select <I>Netlist->Write pcb</I> to + generate a new PCB netlist. <P> + + Now look at the result: <BR><BR> + + <font color=red> + <BLOCKQUOTE><PRE><TT> + NET1 power_supply1/T1-3 power_supply1/rectifier1/D4-1 \ + power_supply1/rectifier1/D3-2 + NET2 power_supply1/T1-4 power_supply1/rectifier1/D2-1 \ + power_supply1/rectifier1/D1-2 + In+ power_supply1/T1-1 + In- power_supply1/T1-2 + Out power_supply1/rectifier1/D3-1 power_supply1/rectifier1/D1-1 \ + power_supply1/C2-1 power_supply1/C1-1 R1-1 + GND power_supply1/rectifier1/D4-2 power_supply1/rectifier1/D2-2 \ + power_supply1/C2-2 power_supply1/C1-2 R1-2 + </TT></PRE></BLOCKQUOTE> + </font> + <BR> + + which can also be obtained from this link: + <A HREF=pcb/powersup.pcb>powersup.pcb</A>. + + Note that the main difference is that the netlist is hierarchical, with + components inside the power supply being referenced by the prepended + name "power_supply1". The resistor, the only component on the top-level + page, is not so prefixed. Throughout the netlist, net names take the + name given in the highest level of the hierarchy. <P> + +<HR> +<P><A HREF=../welcome.html><IMG ALIGN=middle SRC=../giffiles/bluebutton.gif + BORDER=0></A> Back to the xcircuit home page. . . +<P><IMG SRC=../giffiles/line1.gif><P> +email: <I>tim@bach.ece.jhu.edu</I> +</BODY> +</HTML> |