always @(posEDGE clk or negedge rst_n)begin
( v; `! `2 F0 ]/ l. E3 Q8 W if(!rst_n)begin
. b( @2 T! K* K" I3 n4 D: h3 \ cnt0 <= 0; " A$ y; @% I8 b% Z0 W" e( b
end & ?& X5 ~6 r1 C5 O% o
else if(add_cnt0)begin 3 T- H w' k; D, H; r
if(end_cnt0) 9 K$ Y+ J+ s1 _ [9 s" m
cnt0 <= 0; 6 I0 P# D' G: D
else . z" e5 h9 a$ n* ]
cnt0 <= cnt0 + 1; 0 |& T7 Z# D0 P6 V3 H
end
: [5 I4 r# f6 e( C$ eend
" {/ T* I9 z1 r$ Bassign add_cnt0 = add_flag ; ; N+ u. i5 O9 [# s+ D2 L+ F
assign end_cnt0 = add_cnt0 && cnt0==x-1 ; & {0 R" c: S: v5 y! s( x
always @(posedge clk or negedge rst_n)begin ( f5 Z# a. g7 D Z
if(!rst_n)begin
g1 s3 z1 r8 n2 c cnt1 <= 0;
* m) @" N) R4 i0 C& ^# }5 j end " _+ `# P" `, y4 n% p
else if(add_cnt1)begin
) p/ Y4 N( |! b! M [; z if(end_cnt1) $ C2 o" L3 i8 x: a
cnt1 <= 0; - B# B9 y# f+ z5 U6 ?$ V
else / M" ~! n1 m5 |* ~% u7 a" U
cnt1 <= cnt1 + 1;
9 e8 j+ ]5 H! V, J; Y: ]) e& K- ` end , V* Z$ L7 B# k8 r3 c. l- q' M. m
end , @3 O9 S: m/ X* Q8 ?
assign add_cnt1 = end_cnt0; 6 Y. g, B5 P, D2 k3 i+ z K
assign end_cnt1 = add_cnt1 && cnt1==4-1 ; + K+ p0 k t6 v% Q( S
always @(posedge clk or negedge rst_n)begin 7 @4 _2 V: T- S# z3 f$ q1 R
if(rst_n==1'b0)begin 8 D& X$ Z' t) v* T g% \) G1 L9 u$ f
dout <= 0;
7 } X. L6 l8 ~! m end
3 p+ J8 F& T+ d! ~ else if(en_dout)begin 8 ?* X, J6 Q. ^' k ]
dout <= 1; 5 v$ j' X. ]( Z' }
end 8 H3 ]( v, @, m8 b+ q1 \; _
else if(end_cnt0)begin & C- x5 D0 j& Q# Y: X, B H* @+ k
dout <= 0; 2 K4 k h' c! w; b& ?$ y2 T
end 7 |: o7 a8 [ B7 r
end
( M. K6 o; @1 h! V& d9 l% C; kassign en_dout = add_cnt0 && cnt0 == y-1;
9 T4 p- V/ n# j: M2 Zalways @(posedge clk or negedge rst_n)begin
' n$ D% \1 a& f+ y; ?" q if(rst_n==1'b0)begin
4 Y0 ?! X3 ^$ a$ E8 v7 b add_flag <= 0;
1 z4 B0 {/ G: G [, H* l end 0 C. r+ Z! b0 {' k* ^# s8 p
else if(en1||en2)begin
4 C! g0 U* F2 J0 T! _ add_flag <= 1;
' ^* Q' h- _. g, U+ p) |* p% ? end $ q3 p5 u2 A* W" B3 N- K
else if(end_cnt1)begin + ?7 @* U ^; e( @
add_flag <= 0;
9 I: [2 a, T4 F" ] end
/ u7 z/ v3 R2 M \5 Gend
& O' z1 J, t2 y% {# aalways @(posedge clk or negedge rst_n)begin ' w. B2 T+ k. i1 _, u/ H8 q8 X
if(rst_n==1'b0)begin
+ }$ L* m, U/ ^ sel_flag <= 0;
! ?: r, h: @+ c* J end 9 ^; b; w' a) v
else if(en1)begin ( o l" v) n2 A) N6 w, A- _
sel_flag <= 0; - n* w+ | t3 l9 Y" B0 `! Y5 ~( b
end 0 B1 \3 N6 q$ _6 _3 g; d
else if(en2)begin l/ x1 P+ r$ _9 C. z- q* [
sel_flag <= 1; # S! y; r# r, q% T8 @
end 2 a) Y8 ~+ P, e, r I1 U
end
3 X, [4 ]% i( |always @(*)begin
& W9 R) ~5 b6 s7 K9 d if(sel_flag==0)begin
8 V; U$ I% g: [2 b; v1 R if(cnt==0)begin
$ t) @0 q6 i/ z x = 7; : y) W7 V5 ^6 S3 K
y = 2;
: o8 ?! x; \! i x) \) h8 E end
9 V& g$ ?" j5 X# \0 Z% p else if (cnt1==1)begin
- ]/ }3 S' \$ h6 _6 T8 N x = 9; 6 m/ r. g: J( p5 {8 l
y = 2;
& @1 H6 ^0 e8 |2 M6 u end
7 n* w% e2 w0 p) Q else if (cnt1==2)begin * e( ?8 T1 Z* ~0 Q) v4 P& H2 ?
x = 5;
# m" y' ^5 a4 L& ? y = 2; + @$ \& x U3 T6 X7 B
end
" R6 R2 V( P8 Z5 x. R8 X6 U. D) z$ U5 c else begin , t& ^' _) V: E; F4 ^5 r e
x = 8; 0 y1 b" K8 k* x3 B2 ~
y = 2;
, B$ _. i1 @* w' V end - H9 E ^8 ~8 @+ o6 o7 V) M# m9 G
end
4 j) m; ~; D9 Z4 C. p else begin - l2 o1 a& l- b S/ [4 C& b
if(cnt==0)begin
% l/ }# `; x% \1 a7 U x = 7; 9 [4 C: r! q5 L/ }5 \7 _
y = 4; 4 d* v: R0 n" u9 \4 c7 P
end 9 z$ O, j0 J9 i F9 R0 y4 o
else if (cnt1==1)begin 6 n1 y; a) k- s
x = 7; $ W R/ D4 H# h
y = 1; - p8 X/ @ ~0 V* e* l
end 6 i: l a3 n* [ P# x
else if (cnt1==2)begin 4 p" B+ ^: i/ a% n. j/ v
x = 9;
1 J- T- C$ e* J- B y = 6; 9 [0 @8 L2 m" F; y, G+ k7 Z1 \/ h2 [
end
, _2 ^; q0 h' y" ~- e3 | else begin 6 v, X) Q8 |+ |& s
x = 7; $ r8 _& R. P( w
y = 2;
, j+ V- T$ ]3 g: R1 v5 ^ end
! O* z0 w, B) J5 |9 ]: l. [# k$ ^ end
2 n9 [% w) A7 b N! g: Gend |