annotate Examples/multiply/mul_chop @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
1 mul2(X1,X0,Y1,Y0,M3,M2,M1,M0) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
2 cell(0, 0, X0,Y0,M0,C00),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
3 cell(0, 0, X1,Y0,S10,C10)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
4 &&
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
5 cell(S10,C00,X0,Y1,M1, C01),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
6 cell(0 ,C10,X1,Y1,S11,C11)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
7 &&
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
8 cell(S11,C01,0, 0,M2 , M3),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
9 cell(0, C11,0, 0, _, _ ).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
10
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
11
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12 cell(Sin,Cin,X,Y,Sout,Cout) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 and(X,Y,L1),S1 <- Sin,C1<- Cin
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14 &&
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 full_adder(S1,C1,L1,Sout,Cout).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 full_adder(S1,C1,L1,Sout,Cout) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18 half_adder(S1,C1,S2,C2),L2 <- L1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 &&
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 half_adder(S2,L2,S3,C3),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 C4 <- C2
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22 &&
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 or(C3,C4,Cout),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 Sout <- S3.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 half_adder(A,B,S,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 A = 0, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 @S = 0, @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 half_adder(A,B,S,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 A = 0, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 @S = 1, @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 half_adder(A,B,S,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36 A = 1, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 @S = 1, @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 half_adder(A,B,S,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 A = 1, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 @S = 0, @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43 or(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45 A = 0, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47 or(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 A = 0, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51 or(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 A = 1, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 or(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57 A = 1, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58 @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60 and(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62 A = 0, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64 and(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66 A = 0, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
67 @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
68 and(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
69 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
70 A = 1, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
71 @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
72 and(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
73 length(1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
74 A = 1, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
75 @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
76
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
77 test1 :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
78 mul2(1,1,1,1,M3,M2,M1,M0),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
79
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
80 fin(write((M3,M2,M1,M0))),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
81 keep(write((M3,M2,M1,M0))).