|
module alu8(a,b,select,out,rst);5 e7 W9 S* x$ x2 n- L6 O% F* o& i
input[3:2]a,b,rst;2 R2 q' ~" _9 P' x5 J
input[2:0]select;
$ ^/ ~8 v! p. a* P output[4:0]out;
, A7 F: f& |3 s8 H reg[4:0]out;
' d+ v+ f6 l7 M1 g% m: B parameter ; B. K1 V3 `, [$ n
idle=3'b000,) V/ k* [, m" G M2 A
s1=3'b001,7 p, y2 S1 V1 e. s5 b5 ?4 Y
s2=3'b010,& @ p$ R4 }# s( F0 G! d
s3=3'b011,& G: _3 Y" o* J8 J* z8 m
s4=3'b100,5 n9 V+ N6 p; S x7 P C0 I3 J
s5=3'b101,4 w. `: T% A) x. h7 m) \: R
s6=3'b110,
! {4 h- f5 U1 F( E3 A$ H" V% \" m s7=3'b111;
% g4 I& w! H+ ` * u1 a6 P& _% p! g
always@( a or b)! Q3 Q3 A0 z3 J) g
if(rst)8 T( x% J# K! I# T3 O) o4 F
out<=00000;+ I" M% _4 A. Z3 s/ ]* K1 J+ T' Y# Y
else: t+ Y7 n/ F2 M8 U* [! N5 G* [
begin
! Q' }; ~+ ^7 W! V* a case(select)
3 p) |+ |- D" T idle:begin4 `# H4 [# Z) \4 k" p% ?
out<=a;* b; y" e3 s0 y3 A
end
4 f* f) \' s1 x3 y9 [2 R3 Y s1:begin
0 B- _# J8 c% _& X; `) C out<=a+b;
/ c4 O1 r$ h) \4 L8 v end. x/ s% Z+ m, Q8 q8 H
s2:begin
9 m; b. N$ u3 X6 {- n out=a-b;
# q$ ^+ ~/ y3 ? end
7 p- ]( z. s; n! |+ ?0 Hs3:begin1 v4 }! Z/ K. Y2 ?9 W% i; D4 V' a1 L
out=a/b;
6 s3 Y- {* I! {6 i/ G: v! D: Y1 c end4 u% K" O1 [, N% `& d
s4: begin
* f( i9 ~2 C9 a out=a%b;
$ m9 M! C4 `2 k end
' }3 @! f/ H5 @* c s5:begin
6 h$ ]- E) B4 u% M out=a<<1;7 C& }& @8 {' B6 T( J
end
' J3 x' B1 B6 V5 g O3 ^: Ps6:begin
# [) Z$ i8 j) }' f" [out=a>>1;
/ X3 U ~& L1 W, {: c) {, Gend
8 U b+ }$ f6 E1 n \) f3 f4 j! ~s7:begin4 \+ O! H+ W' P/ s& K
out=a>b;3 b( i7 N7 T% V1 R+ s0 }
end( \/ R+ n" {9 D) D# g' Q
default
2 X2 @+ x3 s/ x8 X4 F! | ~; _ X $display( "Invalid control signals!");1 N8 [1 |3 C( s) x/ S F% q
endcase" M* }- J% J7 A) |8 N% \& W
end
2 J$ [0 A; w/ O" _* @$ t" N endmodule |
|