|
module mul(reset,shang,yushu,error,chushu,beichu); input reset;5 v! v6 p- I1 ~
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) . |9 _- h: |7 K5 m4 C
begin4 P* g* N O, g1 C! U6 i
if(!reset||error) begin 7 I1 q( F0 T5 T5 P4 a
shang=4'b0; w! B" N: _1 a- A, G
yushu=4'b0;
# W% b; w% ~2 o5 i# x. |! Y chushu_a=4'b0;
" p' \; i/ P5 r9 f! C shift_beichu=4'b0;
( t3 O5 d- W8 q9 W end6 T7 W4 s3 X" O( S l4 a
else if(chushu>beichu) begin7 G2 M5 a1 ~6 b) \5 z
shang=4'b0;
; s) [" M" r. G3 q! E" P/ g yushu=beichu;9 s, Y) w9 D4 T; Y
end4 V" j9 \* S7 x
else if(chushu==4'b1) begin5 |# \# a9 o( ~2 }! n# ?; I
shang=beichu;: R0 R/ @& f/ n
yushu=4'b0;1 {2 |5 n3 P: P" G
end# C+ F- V0 U; `' ]4 L$ Q
else , K- W; c: G& R2 P7 @2 P! {
begin
X3 f" G/ f _/ P j7 v8 u9 d6 t9 D: H shang=4'b0;
3 F n3 r, X' E1 X1 d; F chushu_a=chushu;
3 L- L0 M5 a- i9 j- | shift_beichu=beichu; shift_beichu=shift_beichu<<1; & q: e& l% Q( r6 U& ]! z) A/ S3 I
repeat(3) begin) x5 t! V* @0 s1 J$ g
shang=shang<<1; shift_beichu=shift_beichu<<1; if(chushu_a<=shift_beichu[7:4]) begin
( [' N8 Y1 R+ b7 ^' J shift_beichu[7:4]=shift_beichu[7:4]-chushu_a;
3 N( f3 V) C/ h( G- ?1 G _1 | shang=shang+1;
" a/ O+ E3 T$ A3 X; @/ P end end
. B" x2 [* {: n yushu=shift_beichu[7:4; end/ J7 |# D: ], k1 A3 d3 F; b
end1 Q. f1 A& Z/ s
endmodule
- \' p' @% Y2 n+ } |