|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
这个同步FIFO的设计方法是调用异步读写双端口RAM来实现的。+ b/ a9 G# b: P* w' A8 V
, t+ Y, u' I+ W- O. H
$ ~1 ]- p3 s, a关于异步读写双端口RAM的设计,前面已经讲到过了:双端口RAM的设计(异步读写)之FPGA
2 t1 B* V: N; J& A; @% K( G1 B: ~5 S8 w, c
: l8 q, Z8 e& n* G+ @+ i3 Z
此时使用双端口RAM来设计FIFO,可以使用一套端口进行写操作,一套端口进行读操作的方式来实现,例如例化方式大概是这样的:
/ q$ X) M) P& ~7 [7 b) w- N9 G Q/ [; B* G1 D+ Z; D$ x; J/ ~
( f4 n% l$ s8 u" A# @0 |ram_dp_ar_aw #(DATA_WIDTH,ADDR_WIDTH) DP_RAM (% [1 `5 o& ?* O4 r* Q
.address_0 (wr_pointer) , // address_0 input m& O0 _4 R: F- o) k
.data_0 (data_in) , // data_0 bi-directional
7 _8 Q: r0 G1 N0 c8 O/ Y& S0 Q.cs_0 (wr_cs) , // chip select3 ^8 g# M+ I) w$ ], F7 Y: c
.we_0 (wr_en) , // write enable
: x1 B* X3 e" M3 z' x h.oe_0 (1'b0) , // output enable) D1 \/ u& d5 |* `$ n
.address_1 (rd_pointer) , // address_q input
& n* i* r$ J d7 _2 a; k4 ~+ q0 f.data_1 (data_ram) , // data_1 bi-directional" Y( f8 l: `. U2 t$ K4 T
.cs_1 (rd_cs) , // chip select* x N' Z% d. h& B( L
.we_1 (1'b0) , // Read enable: d. f- l4 M5 N) N) A7 E3 C
.oe_1 (rd_en) // output enable. }1 ]% g* j* y8 v; \
);
$ S" ]5 f0 j- Y- N4 m+ c2 |, d3 y9 G6 O: t
: `* \& G7 x% z1 v1 y$ z2 P; m
这样就可以同时读写。
' i% o% C! j5 Q5 C2 H$ N. m; s" W% ]/ _( Y
' p- W, N7 ]+ P' Z8 R, t, ^ E
其原理大概如此:- m3 R/ g0 m& m* e! j0 `
* P) l3 {, G3 l- K
- ~; W5 Z( |% Y
4 {4 V% `- v' Z0 z/ s) \1 M
2 g3 u+ q7 m% a% T- E( u8 O3 Y. m1 T' K- M* R
. v4 d$ q j; x( L8 K9 q7 V$ R
- Y, x6 ]7 G) L1 J; K |
|