module mul(reset,shang,yushu,error,chushu,beichu); input reset;/ q. |( J' ^& y/ s1 l
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) 2 K$ y+ _( W" n1 k2 V" o
begin& U9 M) Q/ @" @0 m
if(!reset||error) begin , U, w' r- I. k: \
shang=4'b0;9 G; k% [+ S" i7 U
yushu=4'b0;+ x+ g$ p+ N: }( X g/ j. V/ T
chushu_a=4'b0;
6 P1 _/ b. b* Q+ j4 ~ shift_beichu=4'b0; . ~! i% ^% k H0 P
end; n3 ]% I& ?, s% ]* }
else if(chushu>beichu) begin+ K, n5 |1 F. U- |+ _$ R
shang=4'b0;
" D- I7 F2 N1 U2 L1 y' `$ X h) v yushu=beichu;
! O, Z v1 G1 V6 F& A w% W9 K end/ y m5 S& k" c8 Q, G7 d! b
else if(chushu==4'b1) begin9 r) \4 O1 [, Y2 c0 G Z
shang=beichu;
) N$ q2 w" T! b6 I8 X3 h6 | yushu=4'b0;
5 v$ g1 g) J( u+ b+ U+ v end. ?& O: ?. ]; d* C2 f
else ( R) n% }2 v9 ?1 t' Z5 a
begin
* x8 E% u4 H# H+ v4 [ shang=4'b0;
! A$ U; i; l* i9 A3 t chushu_a=chushu;
* T4 z1 L1 o( N z1 w; F shift_beichu=beichu; shift_beichu=shift_beichu<<1;
! o) Q- d- ^0 {) s8 S repeat(3) begin
0 p" O" |. E# R5 y, ~# H* I shang=shang<<1; shift_beichu=shift_beichu<<1; if(chushu_a<=shift_beichu[7:4]) begin6 r8 [; ?6 x4 B( Q( }
shift_beichu[7:4]=shift_beichu[7:4]-chushu_a;
7 e) R4 W0 I F8 m5 U: e shang=shang+1; : ~& p; ?/ H m2 E5 Y5 V/ \
end end
+ d. B( J; o1 O& T9 a! G yushu=shift_beichu[7:4; end
7 [. p3 R z7 i Iend9 f( s2 ]3 d ?1 a: Z! `2 k
endmodule
4 M- D% A) u6 n @) M( ]1 q: e |