module mul(reset,shang,yushu,error,chushu,beichu); input reset;8 ]. L6 e( [1 B' Z* i$ w* Q
input[3:0] chushu; input[3:0] beichu; output[3:0] shang; output[3:0] yushu; output error; reg[7:0] shift_beichu; reg[3:0] chushu_a; reg[3:0] shang; reg[3:0] yushu; wire error=(chushu==4'b0); always @(chushu or beichu) * _+ [* \8 d6 N' Z; v
begin4 w* S0 y: E. K8 T- D4 @
if(!reset||error) begin
7 k5 C8 s( [2 \# c# \/ o r shang=4'b0;9 j4 E' A$ _; N- C) @; i e/ Y
yushu=4'b0;
8 m4 J7 L- t" g9 {" ` chushu_a=4'b0;
" c9 w' `# b* ~( @/ e! z; K( f8 C; u; o shift_beichu=4'b0; 9 e9 p5 l0 V q5 n( a: k% k
end
" H. f. w3 D& j5 [ else if(chushu>beichu) begin
% y1 P4 a) r$ f shang=4'b0;* Z6 p, O6 f/ c( Z" L# [4 Y
yushu=beichu;' v, N3 K: K- e0 e" \
end) d$ I" I \# L& u, ^) c Q% r
else if(chushu==4'b1) begin
& x/ `; G+ G7 ~% ~3 n' R) k shang=beichu;
, b2 l& P$ d# }, Q yushu=4'b0;
c* K. q" e$ |( w3 H( A6 H; n j4 F end
! M' C- |& e( X. b else 5 a, h: _4 Z& \2 f9 X0 e
begin) @/ v9 ~, k, L; X1 Z( t! I6 N
shang=4'b0;
! e' ^8 |: P7 H; C; l4 s9 D/ e chushu_a=chushu;0 A% ^8 \+ j d
shift_beichu=beichu; shift_beichu=shift_beichu<<1; , x# F% ~0 W# n3 k. L# p+ k3 l0 a
repeat(3) begin
% u3 {4 e% ]6 A) `! q* v/ | shang=shang<<1; shift_beichu=shift_beichu<<1; if(chushu_a<=shift_beichu[7:4]) begin) O7 b4 }, N7 B. `! r! ?9 w6 {
shift_beichu[7:4]=shift_beichu[7:4]-chushu_a;1 Z7 f+ r4 y' Z) Q( S$ c8 M; o
shang=shang+1;
+ {1 o' f" `, ~/ o0 ?5 B/ g* a end end
7 T, u6 a: B1 j$ F o yushu=shift_beichu[7:4; end2 S7 ^. B- m" k [, v
end
K9 U7 P. y: X4 j% Fendmodule 3 `9 p6 `" ~ K1 ?$ V' q
|