|
module alu8(a,b,select,out,rst);" x! j5 ~' l0 p. j
input[3:2]a,b,rst;1 J- x; l, K' k0 ~$ U0 l0 F: H) J+ P
input[2:0]select;
2 @& {6 d s+ e5 d" H output[4:0]out;
3 q j( v& K2 r$ ~7 [( B. \: W* K; K reg[4:0]out;
" i! b- o% f l7 R) [8 I parameter N# F" w& \( s( i
idle=3'b000,
# b3 \! H) ~# s/ i9 `, A8 Y* t, x s1=3'b001,
) D8 `; Z. S( M( s3 o/ R, G s2=3'b010,8 s- n0 C% x. t0 G$ p
s3=3'b011,
0 d6 T6 ~& Z) e% i: Z5 D# T+ V s4=3'b100,
0 b m6 i1 Z( P6 X9 D r0 h, j s5=3'b101,
4 v+ R; S( R$ }3 O- n7 }" ]) F s6=3'b110,- V& M: z- Y- v5 A$ v7 c E$ x
s7=3'b111;( M! B* Q- F% x% g& g
9 a* _. v0 e$ V$ |% ~' K
always@( a or b)
4 u0 w. a* d& n0 m } if(rst)/ k1 F0 l4 b9 Q
out<=00000;/ @8 ~6 q3 _- P3 {$ N3 G8 a
else" o0 g3 r, K+ y* Q
begin
8 \+ k/ _; e" l. h* j5 S- c case(select)
, |) E. @" N5 y idle:begin$ M: ?3 P2 [6 X; A# c
out<=a;
' \/ [) U1 z/ [7 K7 P end$ U$ D% ^" F# T! \( q+ d& _0 C5 {
s1:begin; S; U, `( y7 j$ h* b, r" ^
out<=a+b;* ?" o8 M" h+ w% X4 B& J% i; _
end% B1 X% k9 G* `/ x
s2:begin; W2 X' ^/ _6 t/ B
out=a-b;
& o; k4 r2 |7 t8 a end; s* |) p' b T4 z( l, O( m
s3:begin7 a" D8 Z1 l0 Z2 O( B
out=a/b;8 {& N/ t4 V: O1 J
end
- D* ^: o* ?7 U# rs4: begin
1 ~' u1 C! }8 I3 f. p out=a%b;/ H; ?( }. o$ W: S6 P9 _
end! r {2 F' p- [0 C8 s
s5:begin3 V c6 g2 I8 Z9 s0 X. k* G
out=a<<1;
" z4 T& O! l- H5 ? end
+ c& p! e1 N3 x3 i! P: p$ c0 h2 us6:begin
0 }2 R1 n* c- }9 U4 n$ G% U. ?out=a>>1;
+ H2 n4 F$ A+ [end
! h( j& Z7 q0 I3 W- F1 \' Js7:begin4 f4 {+ O2 K# `+ S" o3 s2 Q3 t
out=a>b;
, S& {& {/ N! A3 b end+ O6 n; Z' o: t; m3 X. x: d1 P
default! B$ n2 E" V4 U, Q
$display( "Invalid control signals!");1 p1 l- }( C- M# R; ~7 |$ N
endcase
$ U2 Z. n' I4 f0 H) z7 m end8 O1 n; g: p' I. o; M8 |- B
endmodule |
|