Mercurial > hg > Applications > Tokio
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))). |