FIFO Depth Calculations
1. Given the following FIFO and rules, how deep does the FIFO need to be to prevent underow or overow? RULES: 1) frequency(clk_A) = frequency(clk_B) / 4 2) perio(en_B) = perio(clk_A) ! 1"" #) u$y_cycle(en_B) = 2%& Solu$ion : A''ue clk_B = 1""*+ (1"n') ,ro (1)- clk_A = 2%*+ (4"n') ,ro (2)- perio(en_B) = 4"n' ! 4"" = 4"""n'- u$ e only ou$pu$ for 1"""n'-ue $o (#)- 'o #"""n' of $0e enle e re oin no ou$pu$ ork. 30erefore- ,,5 'i+e = #"""n'/4"n' = 6% en$rie'. 2. Given the following FIFO and rules, how deep does the FIFO need to be to prevent underow or overow? RULES: 1) frequency(clk_A) = frequency(clk_B) / 4 2) perio(en_B) = perio(clk_A) ! 1"" #) u$y_cycle(en_B) = %"& Solu$ion : A''ue clk_B = 1""*+ (1"n') ,ro (1)- clk_A = 2%*+ (4"n') ,ro (2)- perio(en_B) = 4"n' ! 4"" = 4"""n'- u$ e only ou$pu$ for 2"""n'-ue $o (#)- 'o 2"""n' of $0e enle e re oin no ou$pu$ ork. 30erefore- ,,5 'i+e = 2"""n'/4"n' = %" en$rie'. #. A ,,5 0' 0' folloin $ r$e. r$e. 70$ i' ep$0 ep$0 of $0$8 $0$8 incoin $ = 9" or' $ 1"" clk' ou$oin $ = 9 or' per 1" clk'
re clk = ri$e clk fo $ i$0 = 1 or. Solu$ion : 4". 4. Suppo'e 2"" y$e' ur'$ i' $o e ri$$en $ 1"" *;- 1 y$e per ri$e clock. n Re clock i' %" *;- 1 y$e re per re clock. 0$ i' $0e ,,5 ep$08 Solu$ion : 3ie $ken $o ri$e 1 y$e = (1/1"") = 1" n' So- 3ie $ken $o ri$e 2"" By$e' = 1" ! 2"" = 2""" n' 3ie require $o re 1 y$e = (1/%") = 2" n' So- in 2""" n' $e y$e' re = (2"""/2") = 1"" By$e' So- ,,5 2.% = ># By$e' So- ,,5 # = >2 By$e'. >. ?on'ier $0e c'e of ,,5 0ere $0e @,@ i' 1"" *+ n %" or' re ri$$en in$o $0e ,,5 in 1"" clock' 0ile $0e @,r@ i' %" *+ n one or i' re ou$ eery clock. Solu$ion : n $0e or'$ c'e 'cenrio- $0e %" or' re ri$$en in$o $0e ,,5 ' ur'$ in %"" n'. n $0e 'e $ie ur$ion- $0e re 'ie cn re only 2% or' ou$ of $0e ,,5. 30e reinin 2% or' re re ou$ of $0e ,,5 in $0e %" ile ri$e clock'. So
$0e ep$0 of $0e ,,5 '0oul e $ le'$ 29. (30ree clock cycle' re for 'ync0roni+er l$ency). 6. A''ue $0$ 7ri$e ?lock ,requency 7?lk = 2"" 0+ Re ?lock ,requency R?lk = 1"" 0+ o of $ per 1"" 7?lk cycle (<$ r$e incluin ely) = 9" $ Solu$ion : So 7?lk = 2""0+ = %n' R?lk = 1"" 0+ = 1"n' 3o$l 3ie 3ken for ri$in 9" $ = 9"!% = 4""n' . Bu$ 3ie 3ken for rein 9" $ = 9"!1" = 9"" n' . So iCerence / $ ri$e D re 'e no of $ = 9"" 4"" = 4"" n' . ie e n$ $o '$ore 4""n' $ $o 'oe po'i$ion. 5$0eri'e $ ill oer ri$e . *o ny $ ill ri$e $0i' 4""n' $ie = 4""n'/%n' = 9" . 7e 0e $o '$ore $0i' 9" <$ . So e cn 'y $0$ ,,5 '0oul 0e iniu ep$0 of 9" . 9. A''ue $0$ 7ri$e ?lock ,requency 7?lk = 2"" 0+ Re ?lock ,requency R?lk = #"" 0+ o of $ per 2"" 7?lk cycle (<$ r$e incluin ely) = 1"" $ Solu$ion : So 7?lk = 2""0+ = %n' R?lk = #"" 0+ = #.#n' 3o$l 3ie 3ken for ri$in 1"" $ = 1""!% = %""n' . Bu$ 3ie 3ken for rein 1"" $ = 1""!#.# = ##" n' .
So iCerence / $ ri$e D re Se no of $ = %"" ##" = 16" n'. i.e. e n$ $o '$ore 16" n' $ $o 'oe po'i$ion. 5$0eri'e $ ill oer ri$e. *o ny $ ill ri$e $0i' 16"n' $ie = 16"n'/%n' = #4. 7e 0e $o '$ore $0i' #4 <$. So e cn 'y $0$ ,,5 '0oul 0e iniu ep$0 of #4. . A''ue $0$ e 0e $o e'in ,,5 i$0 folloin requireen$' n 7e n$ $o clcul$e inuu ,,5 ep$0A 'ync0roni+e fo 7ri$in clock #"*+ ,1 Rein clock 4"*+ ,2 7ri$in Bur'$ Si+e B ?'e 1: 30ere i' 1 ile clock cycle for rein 'ie ?'e 2: 30ere i' 1" ile clock cycle for rein 'ie ,,5 ep$0 clcul$ion = B B !,2/(,1!) f e 0e l$ern$e re cycle i.e e$een $o re cycle $0ere i' .> = 6 or 9 (clock' re 'ync0ronou')
f B = #" ,,5 ep$0 = #"/# = 1" 1"H1 = 11 (clock' re 'ync0ronou') f 1" /#" 1". A''ue $0$ e 0e $o e'in ,,5 i$0 folloin requireen$' n 7e n$ $o clcul$e inuu ,,5 ep$0A 'ync0roni+e fo 7ri$in clock %"*+ ,1 Rein clock 2""*+ ,2 7ri$in Bur'$ Si+e 4" 30ere i' 2" ile clock cycle for rein 'ie ,,5 ep$0 clcul$ion = B B !,2/(,1!) n our pre'en$ prole ,,5 ep$0 = 4" 4" !2""/(%"!2") = 4" I (4"!".2) = #2
11.
7ri$e ?lk ,req = >" *+.
Re ?lk ,req = 1"" *+. Giu 7ri$e Bur'$ Si+e = 1"24. "!4)
= 1"24 I (1"24!".9##) = 161.""9 J 161
12.
7ri$e ?lk ,req = >" *+.
Re ?lk ,req = 1"" *+. Giu 7ri$e Bur'$ Si+e = 1"24. "!r_ely) 161 = 1"24 I (16">.>6 / re_ely ) Re_ely = 16">.>6 / 9%# = 2."""6 J 2 clock cycle'.