summaryrefslogtreecommitdiff
path: root/psfiles/filter.ps
blob: deb06e52b9eb68efb60ebfca35898078362f2811 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
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