|
|
module alu8(a,b,select,out,rst);# k+ V, _3 z$ s8 [) w
input[3:2]a,b,rst;7 A0 q1 Y+ q. f: L1 n
input[2:0]select;* F) q6 h; m. ?, n
output[4:0]out;
4 [( W/ N/ s& B u' h Q+ b reg[4:0]out;1 n$ ^; m Y' N( M
parameter
0 b: R6 ~: y. w* y idle=3'b000,
; z! C5 _8 k# V( X1 Y9 ^; X s1=3'b001,* a7 }* F0 L* @# J7 @3 p4 A
s2=3'b010,2 m1 N7 {! L6 ?. p3 v* q G, G
s3=3'b011,
. E8 }# T( P2 h, {$ N* c s4=3'b100,
+ z, [7 H# T) z* u$ _2 M6 t s5=3'b101,
# e! p; V& U9 a% i s6=3'b110,
m8 V |2 [3 e s7=3'b111;# {: B9 r& S0 T- x& u# N! L6 a
7 k) H$ C9 N0 ]. {! S/ I3 ]
always@( a or b)
% E% Q" V2 g& s L+ t2 o if(rst); i8 b0 g/ k3 E7 G7 w
out<=00000;# s1 K, H& |) o1 J* o' E+ i9 @
else
0 Z e# x% [( {4 z" B9 Z5 X" ] begin# V, Y9 v& t! @$ ]7 B6 O2 J L
case(select)( U3 M# x, \* H/ S
idle:begin
0 D- ~" a b; h+ Y+ q1 E9 u out<=a;: M' H5 `& _3 N) F" Q) f3 ~8 m1 U
end
4 p/ n0 _+ k; K# L s1:begin
! ~8 }- l6 E c b, J out<=a+b;
4 O3 f% e! \' R& V* ?7 n. R end x) U' O$ o% W$ V
s2:begin2 e8 Y* z% J- F8 U9 g0 P6 I
out=a-b;
, v6 ~$ b# t$ ^4 O end* v0 e0 x2 `) Z8 w, Y. |
s3:begin
* `1 |' D6 p! S) G out=a/b;6 f" T. p9 N) x/ k8 X; C( x
end4 x& B. b3 _7 S
s4: begin# M7 R: ^/ o' a& U; m
out=a%b;+ E+ z( q+ N1 _" i0 U/ q
end
0 c5 z& F+ Y9 e. b; r s5:begin. g5 D- u, r. l. `, @, \+ S- G
out=a<<1;: |4 p% c! b5 N
end, y* H4 l7 H2 U" t
s6:begin) x* t8 x1 Y) z* U
out=a>>1;
9 a: F* G& X0 O) @9 l# T7 Yend
! M& d( i* c7 l# U8 Ws7:begin1 a- e$ f5 O( t: E9 s0 ^1 |
out=a>b;
7 R v, A8 o: o3 N' m end9 s) n+ d( b) C( [, @ I) _' a
default
4 _9 j4 h) S' X" m $display( "Invalid control signals!");8 {" {, V; _/ z [
endcase
, h9 q- w' c f2 U7 A end) j Q% j5 G! ^( |0 P
endmodule |
|