summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/circuit-macros/examples/Decoder.m4
blob: f6686bf139e8ba8159c1b8491ce0dce44e95a298 (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
.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