|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
这个同步FIFO的设计方法是调用异步读写双端口RAM来实现的。9 s; e5 Z4 [, l1 Q2 F7 G
: Y: d% u( F2 O- ]# D
4 P9 d9 [8 n9 Q, ^/ p+ P( v关于异步读写双端口RAM的设计,前面已经讲到过了:双端口RAM的设计(异步读写)之FPGA3 ~# N# A. F* t- b3 w/ N
; O; _" f) P/ Q$ V% u) V$ c
' q: q3 J% Z, F3 L2 N" G4 ]
此时使用双端口RAM来设计FIFO,可以使用一套端口进行写操作,一套端口进行读操作的方式来实现,例如例化方式大概是这样的:" F3 B; r' }5 @" _7 f+ g5 r
2 e4 |+ _6 F7 Y" g/ R+ u3 H% Y
" q, e7 M) b- U+ Y- n6 qram_dp_ar_aw #(DATA_WIDTH,ADDR_WIDTH) DP_RAM (
# `% j' r: v4 I3 Y! i& a.address_0 (wr_pointer) , // address_0 input ( D* P! L7 I: m- d5 k
.data_0 (data_in) , // data_0 bi-directional
# S+ G9 z n3 ~+ l2 c.cs_0 (wr_cs) , // chip select
* p+ L2 V' x5 i7 h3 o.we_0 (wr_en) , // write enable
, d$ i4 [0 E2 k2 c.oe_0 (1'b0) , // output enable
2 }9 r5 @5 A' r.address_1 (rd_pointer) , // address_q input
& A- a7 s7 _. u3 {6 f' r: d3 o.data_1 (data_ram) , // data_1 bi-directional2 R% n# E* V1 b( Y* G
.cs_1 (rd_cs) , // chip select; i! M1 K% v/ j% X$ Q
.we_1 (1'b0) , // Read enable! ?2 P; V( [& ^
.oe_1 (rd_en) // output enable
* x4 ^. N& l \4 l6 U);
7 i. F& ? K; H* I! H" ?
+ N: ~! _! L0 ?# }- @7 ?4 ^2 Z6 K( I* s" |' [: x
这样就可以同时读写。
( B, ]+ J6 ^& V# j8 X: G
8 F& w+ I( s& p h4 |/ ^
5 S0 k1 ], U+ |+ T其原理大概如此:1 p7 j# D$ i1 P! _) R
3 J& X. _5 v8 ?9 w5 t
3 r1 Y# p2 W! V! ^
2 v7 \6 F1 c$ i6 o! ?+ ]4 f6 Q) t; Y- c7 I% h9 u
0 Q+ c$ b. W" Z5 O1 \! m- P7 M1 a0 x0 L; q# v8 K% Q' f
& ?" S/ ^9 s+ b) \ |
|