-
Notifications
You must be signed in to change notification settings - Fork 0
/
ALU.pld
91 lines (67 loc) · 2.07 KB
/
ALU.pld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Name PLDASS2 ;
Partno 01 ;
Date 04/28/17 ;
Revision 00 ;
Designer Student ;
Company Coop U ;
Assembly None ;
Location ECE251 ;
Device p22v10 ;
/* INPUT ASSIGNMENTS */
PIN [1..4] = [A3..0];
PIN [5..8] = [B3..0];
PIN 13 = Cin;
PIN 14 = OE;
PIN [9..11] = [M2..0];
/* OUTPUT ASSIGNMENTS */
PIN [17..20] = [Y3..0];
PIN 21 = Cout;
PIN 22 = Z;
/* HIDDEN CARRY NODES */
PINNODE 15 = state0;
PINNODE 23 = state1;
PINNODE 16 = state2;
/* FUNCTIONAL CODE */
FIELD A = [A2..0];
FIELD B = [B2..0];
FIELD Y = [Y2..0];
Y.oe = !OE;
Y3.oe = !OE;
/* Zero Bit */
APPEND Z = !Y0 & !Y1 & !Y2 &!Y3;
/* AND, OR, XOR, NOT Operations */
APPEND Cout = !M2 & !M1 & !M0 & Cin;
APPEND Cout = !M2 & !M1 & M0 & Cin;
APPEND Cout = !M2 & M1 & !M0 & Cin;
APPEND Cout = M2 & !M1 & M0 & Cin;
APPEND Y = !M2 & !M1 & !M0 & A & B;
APPEND Y = !M2 & !M1 & M0 & (A # B);
APPEND Y = !M2 & M1 & !M0 & (A $ B);
APPEND Y = M2 & !M1 & M0 & !A;
APPEND Y3 = !M2 & !M1 & !M0 & A3 & B3;
APPEND Y3 = !M2 & !M1 & M0 & state0;
APPEND Y3 = !M2 & M1 & !M0 & state0;
APPEND Y3 = M2 & !M1 & M0 & !A3;
/* Shift Left */
APPEND Y0 = !M2 & M1 & M0 & Cin;
APPEND Y1 = !M2 & M1 & M0 & A0;
APPEND Y2 = !M2 & M1 & M0 & A1;
APPEND Y3 = !M2 & M1 & M0 & A2;
APPEND Cout = !M2 & M1 & M0 & A3;
/* Shift Right */
APPEND Y0 = M2 & !M1 & !M0 & A1;
APPEND Y1 = M2 & !M1 & !M0 & A2;
APPEND Y2 = M2 & !M1 & !M0 & A3;
APPEND Y3 = M2 & !M1 & !M0 & Cin;
APPEND Cout = M2 & !M1 & !M0 & A0;
/* Adder Subtractor Combo */
APPEND state0 = M2 & M1 & ((A0 & (B0 $ !M0)) # (!M0 & A0) # (!M0 & !B0));
APPEND state0 = !M2 & !M1 & M0 & (A3 # B3);
APPEND state0 = !M2 & M1 & !M0 & (A3 $ B3);
APPEND state1 = ((A1 & (B1 $ !M0)) # (A1 & state0) # ((B1 $ !M0) & state0));
APPEND state2 = ((A2 & (B2 $ !M0)) # (A2 & state1) # ((B2 $ !M0) & state1));
APPEND Cout = (M1 & M2) & ((A3 & (B3 $ !M0)) # (A3 & state2) # ((B3 $ !M0) & state2));
APPEND Y0 = M2 & M1 & (!M0 $ (A0 $ (B0 $ !M0)));
APPEND Y1 = M2 & M1 & (state0 $ (A1 $ (B1 $ !M0)));
APPEND Y2 = M2 & M1 & (state1 $ (A2 $ (B2 $ !M0)));
APPEND Y3 = M2 & M1 & (state2 $ (A3 $ (B3 $ !M0)));