|
module alu8(a,b,select,out,rst); G! v6 ]7 \8 j8 o& ~
input[3:2]a,b,rst;8 h: g1 |9 F7 k* N
input[2:0]select;& ^6 P T/ c$ P0 s
output[4:0]out;
$ {2 v2 [! U$ t# _, ? | reg[4:0]out;
/ O( N6 i O: A; ^ parameter 8 l! @ S1 @8 S! X
idle=3'b000,
2 g( P I! X' b s1=3'b001,/ I8 E* n y5 N- J+ P- @
s2=3'b010,
8 l3 S" {4 m e J5 C8 E s3=3'b011,7 V5 o$ h% w: X+ H4 ^# x8 }
s4=3'b100,
7 V9 ~" B9 e; C) b2 j4 i1 f& c s5=3'b101,
/ [+ A1 q& _* y/ s4 T. ~ s6=3'b110,
2 h* h9 _% X+ v, q! K" ^ s7=3'b111;; n& ^& T; I& ?9 S; n+ a
" F, c* K; R# W
always@( a or b)
. a- X p8 Z( I6 ~# P if(rst)
3 r7 U" {% ?- S! s6 c out<=00000;
, p, q3 Q4 W4 H; ]( j/ ~6 B3 o else
8 e2 G- Y$ `" Z* {$ g5 V0 w! ]" _ begin8 q( o, @0 n1 f* c
case(select)
1 v" T5 ~- L3 b* I: }; ? idle:begin
+ F/ e) Q, r7 H( ~) E% j' r out<=a;
" u! b+ P- c" R% `& l end' n4 U% u5 R/ m8 P3 l9 @0 H, r
s1:begin: q1 d3 }% J$ B# a5 R( z1 y. V+ V6 }
out<=a+b;
2 n* u" _5 p+ o& ^9 n3 r5 | end0 u/ N" q9 k) F* D. h* t
s2:begin
# v$ H* U# w+ n+ D' i) h5 ?* t$ \ out=a-b;: ?( x3 [: ~ T: x5 w3 r
end9 P& [* Q1 J1 W& [. R
s3:begin! i% f+ A" D+ J, o+ O) M
out=a/b;
( b% s4 h3 L* Q2 Z: y/ n) w end5 F: K) h4 k5 t, m4 b
s4: begin+ K/ [0 m, @ A/ q0 t
out=a%b;
/ D$ k$ i! H$ P2 I; {+ M end4 z8 `! T) T: A. w# M2 O
s5:begin) a w5 _+ [- I
out=a<<1;: H+ \ W' ], c9 s: u
end- I5 O9 q2 A9 z- c: h4 J
s6:begin
' I) N9 J6 M' G+ T% G! Y1 Oout=a>>1;
4 i: e: D; c' H6 Lend- {' ^# o3 ~5 n' x% K* A `( Y6 g) d
s7:begin
2 E5 L% K, `4 p' b out=a>b;
D6 B ?6 g+ u6 f: y4 b& j end' Q+ k& I3 K2 {
default' g7 p" i, a# n: v6 U9 u5 L Q
$display( "Invalid control signals!");
3 S6 T! |2 d' p endcase" o' \) W7 r- a( ~( \6 x
end
: A0 Q; D; k; F8 I endmodule |
|