module mul(reset,shang,yushu,error,chushu,beichu); input reset;
3 Y r& R5 \1 X& x5 P, T6 S4 q& oinput[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)
( m- x; \8 i! a; G8 F$ {, jbegin
" I1 o$ ]' S" ^: ~: j/ q* \) l$ w if(!reset||error) begin
. a/ A; i$ j: Y* F- R shang=4'b0;9 |# {/ G! t6 u
yushu=4'b0;
5 S1 X, }: d& B z( S1 q chushu_a=4'b0;
( R2 S3 ^+ B' |$ _6 W shift_beichu=4'b0; # _$ u% i2 b4 N7 u) b
end& S! p4 C2 ?4 N$ F' j" B
else if(chushu>beichu) begin
S' @4 L6 R ` shang=4'b0;0 @0 Q/ W& j Z3 Q2 L/ s0 t: `
yushu=beichu;
) C1 T$ j3 _. n& x end7 N' u8 v8 h; Z9 P* y- [7 Y
else if(chushu==4'b1) begin" z6 X$ f% S& r7 J+ E
shang=beichu;) b/ i" S2 v- |& X9 ]
yushu=4'b0;0 F7 p* v( G: y6 ?4 @2 \, q. [
end
U5 X; t# _" ^; u else
: Z$ W/ s h5 l+ Q# [& ` begin$ f+ j- M- M' Z
shang=4'b0;! N) n# L9 l3 Q! M* U! W6 K
chushu_a=chushu;
7 ~! J' U T8 P9 l& h shift_beichu=beichu; shift_beichu=shift_beichu<<1;
4 ^( m# p W+ w% { repeat(3) begin* a/ V, ]% z* ^' }
shang=shang<<1; shift_beichu=shift_beichu<<1; if(chushu_a<=shift_beichu[7:4]) begin2 r9 q* F/ F' i* _4 s: P: K
shift_beichu[7:4]=shift_beichu[7:4]-chushu_a;
# X+ X% n, h; u shang=shang+1;
& T! D P4 c8 t: k1 [3 h end end
9 b. ]2 v( s, D* o0 l; _ yushu=shift_beichu[7:4; end
% f4 [: H- t2 b+ @end* s' Q9 n) z7 u
endmodule
0 s9 s( V7 u! ^/ n |