|
module alu8(a,b,select,out,rst);
: z1 Q# p- d5 }! E input[3:2]a,b,rst;
' I6 R/ J% N0 O* ?: i" x% j input[2:0]select;7 H5 X: o& }& @/ W. t, S: x! D4 a
output[4:0]out;: x! m g/ s; i# [, c5 q
reg[4:0]out;
; j& N& c' T# N+ _9 ~' R parameter 6 M9 i' l& }# E% O; |1 H
idle=3'b000,; R2 {: I6 H/ p
s1=3'b001,- v- [) _/ g* ~. u7 F$ d; T# V3 L
s2=3'b010,$ J# C2 R8 f6 ^' b+ g
s3=3'b011,
6 x, F! B3 b! f/ ]' Z+ z s4=3'b100,
8 O9 J% {' Z' ^2 v- c/ g1 \' x6 h( _ s5=3'b101, ]/ I; ^* F L) }7 ]
s6=3'b110,, T. `; E8 F% z) y" k
s7=3'b111;
( `; r$ y+ F1 Y% d: H2 w2 A5 p
( r! P- ~. N) t$ { always@( a or b)
! R3 k( I* u3 [% V! v6 | if(rst)% h' K- W' ]9 m
out<=00000; \2 \& j; v4 G$ E. f1 `" I* O
else
# K) i9 C4 ^8 I6 E5 Z9 I+ j begin
3 q" C' W& F: v x z D6 i case(select)
, H8 ~; ?( g! B" ^ O" @% g idle:begin
% G2 s9 w, G2 E' V2 ^; x S out<=a;+ l. _# M8 {# `/ [0 o! N0 R( ?
end
8 f$ x3 w1 @) ]* ?6 A s1:begin
% g+ Z1 o' q( F$ C out<=a+b;
0 j3 |" @: h6 S9 q end
+ h: l1 }8 k/ n- U s2:begin! C4 K: \7 { S& e& Y) Z
out=a-b;
% L( ?4 {. o% ]6 J end) R% m, @# R- L% i) o
s3:begin
3 q% e" ?) H, X# D8 O6 A1 t out=a/b;
% f! y* B; G/ C! n3 y. c1 Z end: V! J- ?8 \' T: F m
s4: begin
7 A+ n5 w0 J7 X' I/ C3 g5 G& d out=a%b;
: v- E7 }, y6 `' O" o4 z5 f end
) p4 I [7 U' U s5:begin
9 F& b3 p8 D" w' Y out=a<<1;' k6 V" e5 Y! p* O: s' d
end0 p- g- g! {7 q' Z1 h/ |
s6:begin
" p, P# k9 k$ t% O7 R4 Vout=a>>1;1 g) ~$ Y% }8 z, ~& ^1 N A9 A9 o
end3 u" T3 {, w% o' O5 }( s
s7:begin
% B! B1 A2 I+ R; \- [ out=a>b;: V# X& L6 {; `5 G3 X( |
end
9 r7 ]3 i k. x/ G( s8 L5 \6 X default
7 a: e% }. F4 g $display( "Invalid control signals!");! n; C7 D2 Z. t C3 h- E
endcase( M2 ~$ D# b9 V; W5 B
end
# S, }/ P# h: q( a2 X" s endmodule |
|