|
module alu8(a,b,select,out,rst);& B! y, D8 g N2 o3 b
input[3:2]a,b,rst;+ X ~# H* ?+ J3 d! v! N
input[2:0]select;8 r9 ~( T' c, s
output[4:0]out;8 b3 N' ?8 }/ w& R% \/ F" M
reg[4:0]out;" H7 O; X4 _8 R+ o4 S
parameter
+ e$ v$ W& D9 m+ B" H idle=3'b000,. @& a6 m4 m/ t7 u
s1=3'b001,
7 B& K- v" \7 R1 B/ j, Z; ` s2=3'b010,3 k# V$ z s# g* z) P
s3=3'b011,
0 E& D$ h. z3 j: m& c: s8 J. \ s4=3'b100,
: K2 y' g. p2 U, f& [ s5=3'b101,& m$ c; k$ D3 s7 c g
s6=3'b110,7 S5 Q8 v ]4 j) {
s7=3'b111;, C3 D! Q" v3 `1 j
; {. j, q, n; @
always@( a or b)/ f9 B2 n9 R0 d% q$ m1 Y
if(rst)
% d& q( g' w, F/ s out<=00000;
" v) p* ~5 s- q8 T else
/ p& N0 V) Q2 L begin( Y9 Y3 ^2 r+ D5 O Y5 r
case(select)
2 O, G o; M6 F. \7 X, R idle:begin/ R& n% p8 T$ U h9 A0 b. G
out<=a;* t: ]- ?" y" \) K3 h0 H' a/ |5 Q
end; r4 c) k8 E& {
s1:begin# `0 V0 X. F. V/ B n
out<=a+b;( H/ ?9 P m+ M. y: }9 V
end
( G% z" P7 G8 m1 {& M+ Y+ f) h! t s2:begin) n% B0 B/ D. ]3 U
out=a-b;4 [) W- I) W% n e) r+ ^
end
1 H8 t0 K, z' u# m2 ss3:begin
K. F4 Y6 G/ E2 v& W7 A" e/ C out=a/b;
: z: o: S0 n# p/ u3 Z end3 q U' v& b. v! a( l
s4: begin# @* z9 Q& P, R
out=a%b;% N$ m* r8 q! s" x- E5 u' ~7 J
end
0 M: m2 a! _4 e s5:begin2 D4 u o% [: n% C q- T3 F& T0 T
out=a<<1;
* `+ D/ q8 D! F, K" f" x! a end4 T3 F+ w7 i5 Z- T
s6:begin" X" e0 V$ B$ ?. E: k
out=a>>1;
: T' c3 Q8 k0 `) Rend4 D% L# N, D: ]" h7 Q* N) D
s7:begin }; J4 ^6 U- k( f* E2 |* U& h- |2 J
out=a>b;% u- K6 e6 ]+ j+ L* u
end* f4 u& R- p( {
default6 M& m( Q7 ^5 y- G( \3 n
$display( "Invalid control signals!");8 _- M) {7 g# s6 h
endcase8 ^- ^( h! f( e9 y$ S
end
1 ^7 R; R6 B' S) { F endmodule |
|