1, Giới thiệu
-- FIFO (First-In-First-Out) là một khối nhớ đệm đặc biệt, rất hay ứng dụng trong các hệ thống truyền dẫn số, dùng làm các khối đệm trong các thiết bị lưu trữ… Như tên gọi của nó thì dữ liệu nào ghi vào trước thì được đọc ra trước. Đối với FIFO không còn khái niệm địa chỉ mà chỉ còn các cổng điểu khiển đọc và ghi dữ liệu. Khi được cho phép ghi, dữ liệu bên ngoài sẽ ghi vào bộ nhớ đệm.Khi có tín hiệu cho phép đọc, dữ liệu sẽ được đọc từ bộ nhớ đệm ra ngoài theo thứ tự đã ghi. Tùy theo yêu cầu cụ thể mà FIFO có thể được thiết kế bằng các cách khác nhau. Sơ đồ đơn giản và tổng quát nhất của FIFO là sơ đồ sử dụng khối RAM đồng bộ hai cổng đọc ghi độc lập.

-- Như vậy, khi dữ liệu được đọc nó được xem như bị loại bỏ khỏi bộ đệm lưu trữ, và như thế ta có thể ghi nhiều dữ liệu hơn.
2,Thiết kế FIFO.
--Các đầu vào và ra của một FIFO hoàn chỉnh:
-- Để thiết kế được FIFO chúng ta hãy tưởng tượng các thành phần bộ nhớ nằm trong vòng tròn với hai con trỏ write (ghi) và read (đọc). Đầu tiên ta có 2 con trỏ ghi và đọc ở đầu vòng tròn.Ta tăng lần lượt con trỏ đọc lên để ghi dữ liệu vào bộ đệm. Sau khi đã ghi được một ô nhỏ trong vòng tròn ta bắt đầu tang con trỏ đọc lên để đọc dữ liệu ra. Cứ như thế cho hết vòng tròn ta được dữ liệu ra y như giá trị dữ liệu ban đầu.
![[IMG]](https://lh3.googleusercontent.com/-yDnyTHY7fB0/VTOq0_mWasI/AAAAAAAACIg/P67kuWE2SVc/w639-h809-no/FIFO%2BVerilog.png)
++ Bộ đệm này cũng gồm 2 flags ( cờ ): empty ( rỗng ) và full ( đầy).
- Flags full là trạng thái khi con trỏ ghi đã thực hiện ghi dữ liệu được một vòng tròn và gặp con trỏ đọc tại vòng tròn thứ 2. Nói cách khác, con trỏ đọc trùng với con trỏ ghi khi vòng quay con trỏ ghi lớn hơn con trỏ đọc 1 vòng. Dữ liệu chưa được đọc ra mà đã có tín hiệu ghi vào ô nhớ đó.Khi đó ta sẽ không được phép ghi dữ liệu vào nữa.
- Flags empty: là trạng thái con trỏ đọc trùng với con trỏ ghi khi cả 2 con trỏ cùng một vòng. Dữ liệu chưa được ghi vào đã có tín hiệu đọc ra => xem như dữ liệu cũng bị mất.
3,CODE
Một FIFO có thể đồng bộ hoặc không đồng bộ. Trong fifo đồng bộ, có thể có 1 hoặc 2 clock vì một số FIFOs có đồng hồ riêng biệt cho việc đọc và viết. FIFOs không đồng bộ không được sử dụng phổ biến hiện nay là một ngày vì FIFOs đồng bộ đã cải thiện giao tiếp thời gian.Sau đây là code của FIFO đồng bộ:
- FIFO gồm các module:
+ Bộ nhớ đệm memory.( Thiết kế gần giống với RAM )
+ Con trỏ ghi WIRE_POINTER
+ Con trỏ đọc READ_POINTER
+ 2 Trạng thái FULL và EMPTY
+ Một số tín hiệu khác
Bạn có đam mê ngành thiết kế vi mạch
Liên hệ đăng ký tham gia Hội Thảo & Khóa Học Thiết Kế Vi Mạch
HotLine: 0972 800 931 Ms Duyên