|
module alu8(a,b,select,out,rst);. Y4 W2 r8 x" @6 u$ V8 W2 ~
input[3:2]a,b,rst;1 b$ o. B# |5 _1 H# Q" x# W
input[2:0]select;$ A3 E- b( V8 B+ J( {" b
output[4:0]out;
- `: M' p3 }& I) G reg[4:0]out;
8 s* {7 W/ @* T! Y parameter . _% i4 v4 i3 Y: _: W6 [/ v6 S
idle=3'b000,$ ?- t g6 q6 W/ _3 \9 m0 ]
s1=3'b001,0 W9 p2 Q' A; t) l. B
s2=3'b010,
/ x& ]* N9 M) p; b6 x s3=3'b011,
8 }8 @0 `' W; C s4=3'b100,
" o4 B- q t: c s5=3'b101,
7 D' v7 C0 m6 } s6=3'b110,
$ j* c$ p# G9 w0 A+ J$ P* B+ C% p, O s7=3'b111;4 \& K# [3 ~& H( ?! G) i7 {! @' }
2 e/ }! D6 H9 u o1 M
always@( a or b)% G7 g; I: l; j- ^/ D9 M
if(rst)
# B ]8 @$ V+ ] l W V out<=00000;8 O& \! Q2 Q* V' e* I
else) h7 }% U Z" ^: x7 v$ O, ~
begin
0 }9 ^* X$ k6 U case(select)8 r: w3 r7 J, }% r* }& q$ P, b" b
idle:begin: v7 K2 V) S& G( Z. ]3 a' o
out<=a;
( F+ y' c1 N+ R1 p8 W/ a$ b end) ^6 i$ m) H! P- u/ p/ v; e
s1:begin6 R A* C' \ C# l9 e( ?! h* v
out<=a+b;
- R, C S+ _. Y7 A! D' x; @/ _ end! b! i: O* `4 B( @
s2:begin' I) B- [( Q) E% o1 A5 }
out=a-b;
6 J4 V0 Z% i! V5 Z3 c4 l end
: t r9 {3 S+ hs3:begin
- h; C6 W1 }% r# O5 x/ t) V; g1 R out=a/b;! M# }! b4 \) r) h
end4 \: r1 t3 f% M. ~' E
s4: begin
4 w2 `, M. P% t out=a%b;7 L8 t" s; g t# a9 G
end
7 \2 _0 J! }3 ?2 H* a s5:begin
% j9 Q5 y9 |3 H+ B1 j out=a<<1;
" P$ o: K4 _3 o- G) d3 o% ~ end
$ I7 ~! @# k: `3 A% c2 Z. ds6:begin
3 r1 y7 V, v* O+ \, ?5 A6 }. Rout=a>>1;8 r. G. g. L* K/ J- J* G6 x
end4 U% T5 L' ?8 W; H
s7:begin* S, {3 U& M7 {# F, x, n8 M
out=a>b;$ p- c4 [$ e# L/ v: ^7 B7 O
end( I- l1 {6 h/ q6 n1 `: R% |
default
: o# ]. ^- {$ ~/ L7 c1 S $display( "Invalid control signals!");
8 G5 m$ Y; G$ T2 e( w3 l endcase
- c2 ]' u; q1 w. Q+ Q _, A end
, y9 i: d5 E9 ?& G1 h+ Q3 d endmodule |
|