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