annotate Examples/multiply/mul_al @ 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 cell(S10,C00,X0,Y1,M1, C01),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
5 cell(0 ,C10,X1,Y1,S11,C11),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
6 cell(S11,C01,0, 0, M2, M3 ),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
7 cell(0, C11,0, 0, _, _ ).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
8
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
9
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
10 cell(Sin,Cin,X,Y,Sout,Cout) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
11 #delay(Sin,S1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12 #delay(Cin,C1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 #and(X,Y,L1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14 #delay(L1,L2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 #half_adder(S1,C1,S2,C2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16 #delay(C2,C4),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 #half_adder(S2,L2,S3,C3),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18 #delay(S3,Sout),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 #or(C3,C4,Cout).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 delay(X,X1) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22 @X1 = X.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 half_adder(A,B,S,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 A = 0, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 @S = 0, @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 half_adder(A,B,S,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 A = 0, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 @S = 1, @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 half_adder(A,B,S,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 A = 1, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 @S = 1, @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 half_adder(A,B,S,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 A = 1, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 @S = 0, @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 or(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 A = 0, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 or(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 A = 0, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43 or(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 A = 1, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45 @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 or(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47 A = 1, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 and(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51 A = 0, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52 @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 and(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 A = 0, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56 and(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57 A = 1, B = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58 @C = 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59 and(A,B,C) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60 A = 1, B = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61 @C = 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 test2 :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64 length(12),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 mul2(1,1,1,1,M3,M2,M1,M0),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66 #write((M3,M2,M1,M0)).