Synchronous FIFO Design

1. Giới thiệu về FIFO.

– FIFO rất thường được sử dụng trong các thiết kế, chức nằng chủ yếu là bộ buffer lưu giữ tạm dữ liệu của bạn khi dữ liệu trước đó chưa xử lý xong. Ngoài ra còn được sử dụng để truyền nhận dữ liệu giữa 2 miền clock khác nhau (asynchronous FIFO). Trong hầu hết nhiều đều sử dụng FIFO

– Có hai loại FIFO cơ bản là : FIFO đồng bộ ( synchronous FIFO, read write sử dụng cùng clock) và FIFO bất đồng bộ( asynchronous FIFO, read clock khác write clock) . Trong bài này sẽ nói về thiết kế  FIFO đồng bộ.

– Thông thường để thiết kế FIFO ta thường dùng thanh ghi (Regidters) được để lưu trữ dữ liệu, cách này chỉ áp dụng cho các FIFO cỡ nhỏ vì dùng nhiều thanh ghi rất tốn tài nguyên (resource). Một cách khác là thiết kế FIFO để điều khiển SRAM hai port.

 

2. Nguyên lý hoạt động FIFO

76

                                                                         Figure 1 : Đọc FIFO.

  • Theo Figure 1 trên ta thấy cứ sau một lần đoc thì con trỏ đọc của FIFO tăng lên, đến một lúc nào đó thì hai con trỏ ở cùng một vị trì như hình trên thì FIFO empty( FIFO không còn data). Lúc này wptr = rptr.

#Note : Nhưng ô màu đỏ chứa data chưa được đọc.

77

                                                               Figure 2 : Đọc FIFO.

  • Trong Figure 2 trên ta thấy cứ sau một lần ghi thì con trỏ ghi của FIFO tăng lên, đến một lúc nào đó thì hai con trỏ ở cùng một vị trì như hình trên thì FIFO full. Lúc này wptr = rptr.

  • Khi FIFO full con trỏ ghi = con trỏ đọc, khi FIFO empty thì con trỏ ghi cũng bằng con trỏ đọc. Vậy làm sao để biết lúc nào là full, lúc nào la empty ? .

  • Trong design này sử dụng một cách đơn giản là mở rộng con trỏ đọc và ghi thêm một bit.

Ví dụ : Nếu FIFO có chiều sâu là 8 ô nhớ thì chỉ cần 3 bit địa chỉ là đủ. Trong design này ta sẽ dùng 4 bit cho con trỏ đọc và ghi.( reg [3:0] wptr , reg [3:0] rptr).

  • Trong quá trinh ghi FIFO nếu thỏa điều kiện {~wptr[3],wptr[2:0]} = rptr thi kết luận FIFO full.

  • Còn trong quá trinh ghi FIFO nếu thỏa điều kiện wptr = rptr thi kết luận FIFO empty.

3. IN/OUT

78

                                                                 Figure 3 : Inputs, outputs port

3. Logic Implementation

79

                                                 Figure 4  : Functional blocks.

  • Trong thiết kế FIFO được chia thành ba phần, read control, write control và SRAM dual port (Ta dùng SRAM model cho simulation) .

Read control logic

80

Write control logic

81

Read/Write timing

82

Link code : http://www.mediafire.com/file/38wbunf32uuoqyw/sync_fifo.rar

 

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s