1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
.PS
# Decoder.m4
log_init
define(`nlines',3) # OK for nlines from 1 to approximately 4
define(`ndata',`eval(2**nlines-1)')
for_(0,nlines-1,1,
`{right_; A`'m4x: dot(at rsvec_(0,m4x*AND_ht))
"$A_{m4x}$" at last [].w rjust}')
for_(0,ndata,1,
`define(`m4y',m4x) down_
G`'m4y: AND_gate(nlines) \
at A0+svec_(AND_ht*3/2,(m4y+1/2)*AND_ht*3/2)
line down linewid/3; dot; "$\;D_{m4y}$" at last [].s below
for_(0,nlines-1,1,
`ifelse(eval(m4y/2**m4x%2),0,
`up_; NOT_circle with .s at',`move to') G`'m4y.In`'eval(nlines-m4x)
line to (Here,A`'m4x) ifelse(m4y,ndata,`then to A`'m4x',`; dot')
')
')
.PE
|