|
module alu8(a,b,select,out,rst);, k' h+ Z, |& o2 I$ V
input[3:2]a,b,rst;! }& @$ Q! _! ~" v* |
input[2:0]select;
( l" p) V" ^1 b* l6 Q output[4:0]out;4 U7 ?5 M5 V& ?5 o! y/ c, y
reg[4:0]out;9 v0 U( x1 J J# r& g4 D6 U
parameter
: ]9 j, x* V% {6 \, e, O idle=3'b000,
E. w- \' p8 L& j4 \2 U s1=3'b001,
4 i/ a# \4 K5 N s2=3'b010,
0 W# k( m4 V% ?# |; a1 j' L5 B s3=3'b011,
# r8 h6 @: h4 t' g s4=3'b100,
- C. P% t9 Z2 w B! W. |. T s5=3'b101,7 K) p! p( z0 z
s6=3'b110,2 N; k/ V- s5 b4 M! f
s7=3'b111;' ^, b2 X! z4 H$ @% ~0 R: Z
! W7 r+ ~) {; {( W8 [! q: E# Q always@( a or b)
/ z( J- u+ W x, Q if(rst). h- i4 f" ?( O
out<=00000;) y# h; |. j% q4 d6 s
else) _% H( S' L2 E. c, |+ [1 l
begin
" {" J" R* ^, N" v# s& F; {, h case(select)
3 I8 }: u2 w v/ P- o+ N idle:begin1 _* L- C9 u5 P9 N. m6 Q+ Q
out<=a;: B# `/ O' \% D% P
end8 f2 W& w% s2 `. Z4 y6 q C, ~
s1:begin8 m" A" K2 Y0 d2 T: U7 ~
out<=a+b;
7 K0 R$ k& {0 b1 l. N end* V6 [' l; K- `/ S7 f# e, K1 v w
s2:begin
9 A# n2 b' @+ l5 o6 l out=a-b;
6 x7 h0 z/ D" k c. X! @ end
) k, ~0 N/ V9 i" |s3:begin/ F) g U& _$ X% i
out=a/b;: Z* {# m( M4 J
end
# W0 E' L# L+ F+ ?7 gs4: begin
. u5 R. W) W, Z out=a%b;5 ~' x( m% q. H! N
end
. @) y' P) c' T s5:begin! l+ X( T3 `* E4 H* W8 [7 X
out=a<<1;0 c e2 o* t2 E2 z. k% ?; q, o
end
5 m( _& w7 ^1 A3 k* es6:begin
( m. m4 K, K) U1 p2 o; k( Wout=a>>1;
4 U$ s: L( L @& Z( l% Y# @4 n" oend
! Z7 E6 ?* O8 w2 f) I2 _+ rs7:begin
4 D3 l/ I. _7 w5 C/ J$ q out=a>b;
+ K X4 M$ ]: B# ~/ n3 G# C end
" j- i, R& R+ L5 B! K4 P default$ f+ o; X4 _7 C% D- J
$display( "Invalid control signals!");
6 ?4 ^1 ?( Y! ]$ x9 _" Y E endcase
( {# Q! D; E& F9 a; y end8 X {+ Y( W1 x7 Z/ @4 _4 O( o$ d
endmodule |
|