2626// comp | 000000 | 00001 | 0 | 0001
2727// and | 000000 | 00010 | 0 | 0010
2828// xor | 000000 | 00011 | 0 | 0011
29- // shll | 000000 | 00100 | 0 | 0110
30- // shrl | 000000 | 00101 | 0 | 0101
29+ // shll | 000001 | 00010 | 0 | 0110
30+ // shrl | 000001 | 00011 | 0 | 0101
3131// shllv | 000000 | 00110 | 0 | 0110
3232// shrlv | 000000 | 00111 | 0 | 0101
33- // shra | 000000 | 01000 | 0 | 0101
34- // shrav | 000000 | 01001 | 0 | 0101
33+ // shra | 000001 | 00100 | 0 | 0111
34+ // shrav | 000000 | 01001 | 0 | 0111
3535// diff | 000000 | 01010 | 0 | 0100
3636// addi | 000001 | 00000 | 1 | 0000
3737// compi | 000001 | 00001 | 1 | 0001
4747// bncy | 001011 | -- | 3 | 1000
4848// ////////////////////////////////////////////////////////////////////////////////
4949
50+ // ////////////////////////////////////////////////////////////////////////////////
51+ // Operation | ALU Control Required
52+ // --------------------------------------------------------------------------------
53+ // Sum | 0000 -- 0
54+ // Compliment | 0001 -- 1
55+ // AND | 0010 -- 2
56+ // XOR | 0011 -- 3
57+ // diff | 0100 -- 4
58+ // Right Shift | 0101 -- 5
59+ // Left Shift | 0110 -- 6
60+ // Arithematic Right Shift | 0111 -- 7
61+ // Only Flags | any --- 8+
62+ // ////////////////////////////////////////////////////////////////////////////////
63+
5064module ALUcntrlUNIT (
5165 input [1 :0 ] ALUop,
5266 input [4 :0 ] func,
@@ -75,14 +89,14 @@ module ALUcntrlUNIT(
7589 begin
7690 ALUcntrl <= 4'b0011 ;
7791 end
78- 5'b00100 : // shll
79- begin
80- ALUcntrl <= 4'b0110 ;
81- end
82- 5'b00101 : // shrl
83- begin
84- ALUcntrl <= 4'b0101 ;
85- end
92+ // 5'b00100: // shll
93+ // begin
94+ // ALUcntrl <= 4'b0110;
95+ // end
96+ // 5'b00101: // shrl
97+ // begin
98+ // ALUcntrl <= 4'b0101;
99+ // end
86100 5'b00110 : // shllv
87101 begin
88102 ALUcntrl <= 4'b0110 ;
@@ -91,10 +105,10 @@ module ALUcntrlUNIT(
91105 begin
92106 ALUcntrl <= 4'b0101 ;
93107 end
94- 5'b01000 : // shra
95- begin
96- ALUcntrl <= 4'b0111 ;
97- end
108+ // 5'b01000: // shra
109+ // begin
110+ // ALUcntrl <= 4'b0111;
111+ // end
98112 5'b01001 : // shrav
99113 begin
100114 ALUcntrl <= 4'b0111 ;
@@ -120,7 +134,19 @@ module ALUcntrlUNIT(
120134 begin
121135 ALUcntrl <= 4'b0001 ;
122136 end
123- default : // only flags
137+ 5'b00010 : // shll
138+ begin
139+ ALUcntrl <= 4'b0110 ;
140+ end
141+ 5'b00011 : // shrl
142+ begin
143+ ALUcntrl <= 4'b0101 ;
144+ end
145+ 5'b00100 : // shra
146+ begin
147+ ALUcntrl <= 4'b0111 ;
148+ end
149+ default : // only flags
124150 begin
125151 ALUcntrl <= 4'b1000 ;
126152 end
0 commit comments