comparison Examples/multiply/mul_chop @ 0:cfb7c6b24319

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