|
module alu8(a,b,select,out,rst);
3 I) }% m% Z) d9 R: o1 l1 n input[3:2]a,b,rst;
# v* N8 C, c+ _ input[2:0]select;
9 c0 T# Q% g+ U$ f- l; M- _ output[4:0]out;
. K. I. Y: [2 N reg[4:0]out;
+ V Q' F. _* p! n7 t M6 D parameter
! S; {3 J! }, D idle=3'b000,
+ Q8 Q+ g% N, ~/ B% {6 ?- n) |( I s1=3'b001,/ ~% r& O5 ]1 a! ^0 b) m
s2=3'b010,0 b2 w4 k0 ^# l }: M
s3=3'b011,* c$ y( H8 {* d4 S
s4=3'b100,
' y% D' N' J0 t6 A; H3 ^ s5=3'b101,& N. X7 L6 {0 }7 i* l9 ?
s6=3'b110,0 E7 `4 _$ `5 I. B
s7=3'b111;7 }: x/ T* d/ Y( d5 @ V
. D3 h3 l7 T$ @# w2 L \% ^ always@( a or b)& i" y3 P8 m0 B0 X& q- U9 ]) R
if(rst)7 ^6 X* T" Z" h' y
out<=00000;. z, }! e9 r! A
else
; y8 r; q' F1 V1 j' T begin7 o' `' ?6 Y0 n2 y4 I5 R# [" `* g
case(select)
y9 K! B6 Z) R' r6 r idle:begin1 @" O% A( C! t4 E, b
out<=a;; I6 @0 X. z0 U$ h! x
end
. o* }: @$ N4 x0 m' M" @ s1:begin4 `* B* n; F4 S- `! W
out<=a+b;( S. V: Z9 g t9 k6 t% R
end& l4 |6 v+ B$ W6 P2 \
s2:begin1 ^0 \( }' Y5 d% g. P
out=a-b;
. Z. X/ k9 T0 W5 t; v( _( H end
- W; A! c1 R/ T) z2 y" ~) c3 K3 Ds3:begin
' X- O: _3 w9 E out=a/b;: t* o) \/ o$ v5 n
end. l8 j: d' T. L6 h
s4: begin
2 q" Z @( l" @; \8 i [5 r% u# w1 k out=a%b;3 s' ]2 u+ k% w- }6 B$ [
end
7 m- |6 A/ ?" M z% X/ K$ e s5:begin( k$ e+ U# k# M' o `( w
out=a<<1;
8 a8 {0 m, U5 ]$ b9 ^ end
, X& y( |" g! ]& d2 us6:begin
5 B- r+ I- R4 L& n) f) u( G! Qout=a>>1;
% i) X- T7 [1 p; aend
9 e2 H. N0 E# d4 S% ~% h+ ^$ N3 a$ Q( A' Ns7:begin
9 W* q9 R: G$ Y# x7 L out=a>b;
; ~7 i- v9 n" w; r; ? end
' Y& U9 i- H8 Y+ e$ S* ~- n3 R1 U default
, D. A+ T, p; j8 A; H7 ` $display( "Invalid control signals!");, v& P3 f) F* o3 I. e% z3 e
endcase6 M2 O( N; C0 w
end0 c+ ^' T: s- f: d+ G b6 b2 o
endmodule |
|