File: parity.ella

package info (click to toggle)
hol88 2.02.19940316-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 63,052 kB
  • ctags: 19,365
  • sloc: ml: 199,939; ansic: 9,300; sh: 7,118; makefile: 6,076; lisp: 2,747; yacc: 894; sed: 201; cpp: 87; awk: 5
file content (38 lines) | stat: -rw-r--r-- 614 bytes parent folder | download | duplicates (11)
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
TYPE bit = NEW(t | f).

FN PARITY_SPEC = (bit: in) -> bit:
 BEGIN SEQ
    STATE VAR parity INIT t;
    CASE in
    OF t: op := f,
       f: op := t
    ESAC;
    OUTPUT parity
END.

FN NOT = (bit: in) -> bit:
 CASE in
 OF f: t,
    t: f
 ESAC.

FN MUX = (bit: cntl in1 in2) -> bit:
 CASE cntl
 OF t: in1,
    f: in2
 ESAC.

FN REG = (bit) -> bit: DELAY(f, 1).

FN PARITY_IMP = (bit: in) -> bit:
BEGIN
   MAKE NOT: l1,
        MUX: l3 out,
        REG: l2 l5.
   JOIN (in,l1,l2) -> l3,
        t            -> l5,
        (l5, l3, l4) -> out,
        out          -> l2,
        l2           -> l1.
OUTPUT out
END.