|
module mul(reset,shang,yushu,error,chushu,beichu); input reset;
; _ K, p# n4 C( A% z( hinput[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) 5 S7 N: W0 f7 G2 i' Q- J
begin7 G& d; F) V* I
if(!reset||error) begin
4 j" g' i6 m7 p# M" C shang=4'b0;) d( p j5 X( o/ b5 x
yushu=4'b0;" |' }% A+ h4 {0 `' X& \, v* g
chushu_a=4'b0;+ S( g0 i/ Y5 Z
shift_beichu=4'b0; # `( n& p* v2 g; M: Y4 x$ H; V/ q
end
s9 C7 H, d' A7 N- c3 u else if(chushu>beichu) begin
9 R* I' B! O: |7 ~' @( E! ^ shang=4'b0;. h9 _ f7 l6 C, X- }
yushu=beichu;
4 j: U& c) [+ J( q, n v* n# k end
& \% S8 A' U8 s5 ?; O* W' m( L$ \ else if(chushu==4'b1) begin1 u( R1 T# Z$ d9 p. j4 y+ Z4 z
shang=beichu;
/ Y7 w$ t, y0 g) w; t$ {8 L. r2 x yushu=4'b0;
, }* g0 V2 I/ f$ q8 S end
7 O5 W" r. b2 u! q1 e# I5 D else & ~) U: }/ K0 F5 n1 q
begin7 j( ]% P$ \, A/ R, b
shang=4'b0;
% s4 t# x! a* k+ y) p" r1 G1 _1 d0 } chushu_a=chushu;) K+ }- t5 t/ w* ^6 |
shift_beichu=beichu; shift_beichu=shift_beichu<<1;
; @# [4 w/ q% @( Z repeat(3) begin; ?: P& ^ A I* n4 s
shang=shang<<1; shift_beichu=shift_beichu<<1; if(chushu_a<=shift_beichu[7:4]) begin& V4 b, D; w: D4 M! b7 t
shift_beichu[7:4]=shift_beichu[7:4]-chushu_a;" U6 W2 L! R9 C( l+ E
shang=shang+1;
4 M5 ^2 P5 z. k) }1 ]) y0 t$ b end end
" P5 W* A- Y5 S! z3 k# }% \9 T5 G* h2 R: S yushu=shift_beichu[7:4; end7 {9 B& a+ F5 J4 I& c2 M6 c! x% w* p7 C
end4 U) m+ `7 Y1 ~# r
endmodule
1 w j8 ~1 z0 A6 v6 _ |