|
module alu8(a,b,select,out,rst);
6 L3 R/ d6 f: a) N' D input[3:2]a,b,rst;
1 v& }- P- C) }) q0 h2 ? input[2:0]select;' Y' ?6 o0 a3 B" w" W
output[4:0]out;: O8 P4 J9 e; v% o8 i, v
reg[4:0]out;
$ e6 h C* ^' o3 ?% u parameter
( a L) g: z' K; l/ m1 u idle=3'b000,
& i8 F& G+ e8 c8 s( ?9 C s1=3'b001,
( J! m7 y7 L/ K0 P- j4 ~4 ~ s2=3'b010,
6 I7 V9 Z$ Z, }; z s3=3'b011,! g& n* W9 n; E! _
s4=3'b100,% a5 G& k2 q* P& t
s5=3'b101,
`3 e) ~6 Y9 g, k s6=3'b110,
* t3 F( l: P4 R: A; r/ D s7=3'b111;
4 K1 a8 F: _9 v ( R A5 M) v% w( S/ V( _
always@( a or b)
9 I+ d! I/ u, k; u* K if(rst) p' _1 @! q% \
out<=00000;
: O' Z' P' B' Q# x: l else
3 @, |$ t: x. x6 A1 ]# ? begin1 {& W J; V6 z2 i1 ]. ]
case(select)
( U3 {: f9 R$ a6 _ idle:begin
8 e) \, I& F6 G. y2 V) B out<=a;: |: \& V a1 p; P7 A8 W' _
end+ H2 u! R0 s4 j* z0 g" J/ o
s1:begin
1 ~4 {+ F0 G$ }( G) [ out<=a+b;- |5 X! b+ s! r
end. `2 v; R6 A: N2 B: |' ~
s2:begin' V+ X! {7 H# T$ s, A3 }
out=a-b;
' ^( K6 K2 x6 q$ h& w" \5 P end
( x' M2 j, {" n5 v) Z! ns3:begin
" k. }/ e5 E$ L' s out=a/b;7 O8 D& U" [. ~9 D# ~2 `. W. A
end
4 {6 j* L* o# o- \6 Os4: begin) v! g n6 C+ |: z4 I
out=a%b;: s' Z/ v q9 P/ K. z5 ~/ C* S1 k. Y4 x
end
" g+ L0 Z& J( `# ^ s5:begin
9 e* s# e+ C. ~; B" E. R out=a<<1;
' |: O' G& P; P C* b end2 e2 S$ q. C: w u! a4 V
s6:begin' q4 q, P9 z6 h: G4 @$ K
out=a>>1;
) {2 G7 \% c* rend F B" p0 {4 n- I% ~# g) [) m" g
s7:begin$ ]2 D( i4 v u. T; G6 H
out=a>b;8 G2 B6 U# {' ]$ |7 n3 m
end7 A$ _6 C2 z% q6 n4 c9 \
default% e( i5 h' v2 R
$display( "Invalid control signals!");
- S; K2 @; }, y- f M8 v& O endcase5 _6 w) t+ T$ ]- q1 _* c# j( V6 c
end# I+ g- E3 h( C6 M
endmodule |
|