|
module mul(reset,shang,yushu,error,chushu,beichu); input reset;+ R$ A3 M9 w# B! g- }4 K8 e
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)
( s4 ?9 ?. z9 \2 ubegin" Q* e$ s# |. c8 G
if(!reset||error) begin * x; X0 c4 G+ P8 j+ ?" o
shang=4'b0;+ r0 R+ Y, c1 u6 O0 R/ ?, M
yushu=4'b0;8 Z6 R) t0 y$ l2 N/ I1 L
chushu_a=4'b0; s; \( |& a; o+ ]
shift_beichu=4'b0;
& j% s. w/ z* ~ [. P I end
* N3 w5 y$ `: _. @7 n else if(chushu>beichu) begin) f& m. I0 d& O; ?
shang=4'b0;: v) b/ B+ P- c4 `( q
yushu=beichu;- ?) \ X* ^- a- o2 S; ^0 U
end) t) Z4 Q5 x5 y: J- \3 K
else if(chushu==4'b1) begin+ i D8 q$ G# c8 j, |# p
shang=beichu;/ R# f( J6 I/ X& c+ X5 h. S, f7 Q
yushu=4'b0;* D% x7 N8 C9 e3 L) e
end
. z9 `' _2 T& D' ]9 M9 U else : X) P6 y U$ N g3 R4 s5 M. r
begin. W* I7 z+ A( \: }4 M
shang=4'b0;
/ N# c- j8 d- x/ i chushu_a=chushu;
- n5 i- P- j0 V$ b& e shift_beichu=beichu; shift_beichu=shift_beichu<<1; + {: U) c( {7 f7 H2 w+ O8 w9 _+ n5 P$ E
repeat(3) begin2 H% Y8 g5 q. W4 v7 U' q$ ^
shang=shang<<1; shift_beichu=shift_beichu<<1; if(chushu_a<=shift_beichu[7:4]) begin
6 W5 {' R+ ~8 Z3 x: t shift_beichu[7:4]=shift_beichu[7:4]-chushu_a;
3 A' I6 @' F( w% R }* ~3 o7 a8 a shang=shang+1;
- j( }4 }: i0 `6 G+ \( r end end) h9 b7 k5 F7 S9 Z
yushu=shift_beichu[7:4; end) s0 A y5 {. V" [$ g# E2 u
end' V5 n( t: ]. a$ f0 ~7 y
endmodule 0 m) m' _2 F" F- ^
|