You are on page 1of 8

2.2.

FIFO đồng bộ
2.2.1.Giới thiệu
FIFO hoạt động theo nguyên tắc dữ liệu được lưu vào trước sẽ là dữ liệu được lấy ra
trước. Nghĩa là, thứ tự dữ liệu được đọc ra giống như thứ tự dữ liệu được ghi vào. Hai
thông số đặc trưng của FIFO là:
 Số lượng ô nhớ hay còn gọi là độ sâu của FIFO
 Độ rộng ô nhớ tương ứng với độ rộng dữ liệu được ghi vào và đọc ra.
Hai thông số trên sẽ cho biết dung lượng của FIFO. Ví dụ, FIFO có 4 ô nhớ, mỗi ô nhớ
lưu 8 bit dữ liệu thì dung lượng FIFO là 4*8 = 32 bit hoặc 4 byte. Để định địa chỉ các ô
nhớ của FIFO, một phương pháp thường dùng là sử dụng con trỏ ghi và con trỏ đọc. Con
trỏ ở đây thực chất là bộ đếm tuần tự.
2.2.2. Sơ đồ tín hiệu giao tiếp FIFO

FIFO thiết kế sẽ có các tín hiệu giao tiếp như sau:

-Ngõ vào (input)

+ clk_rd: xung clock đọc dữ liệu

+ clk_wr: xung clock ghi dữ liệu, đồng bộ với xung clock đọc clk_rd

+ rst_n: tín hiệu reset tích cực mức thấp

+ wr: tín hiệu ghi dữ liệu vào FIFO

+ rd: tín hiệu đọc dữ liệu từ FIFO

+ data_in[DATA_WIDTH-1:0]: bus dữ liệu ghi có số bit là DATA_WIDTH

+ low_th[TH_WIDTH-1:0]: tín hiệu cấu hình mức ngưỡng dưới có số bit là TH_WIDTH.

+ high_th[TH_WIDTH-1:0]: tín hiệu cấu hình mức ngưỡng trên có số bit là TH_WIDTH.
-Ngõ ra (output)

+ sfifo_empty: tín hiệu báo FIFO rỗng

+ sfifo_full: tín hiệu báo FIFO đầy

+ sfifo_low_th: tín hiệu báo FIFO thấp hơn mức ngưỡng dưới

+ sfifo_high_th: tín hiệu báo FIFO cao hơn hoặc bằng mức ngưỡng trên

+ sfifo_ov: tín hiệu báo FIFO bị overflow

+ sfifo_ud: tín hiệu báo FIFO bị underflow

+ sfifo_data_out[DATA_WIDTH-1:0]: bus dữ liệu đọc có số bit là DATA_WIDTH

2.2.3. Các thông số cấu hình

FIFO sẽ có các thông số cấu hình như sau:


Thông số định nghĩa chức năng:
1. EMPTY_SIGNAL: Thông số cho phép tạo tín hiệu ngõ ra báo trạng thái rỗng của
FIFO, sfifo_empty
2. FULL_SIGNAL: Thông số cho phép tạo tín hiệu ngõ ra báo trạng thái đầy của FIFO,
sfifo_full
3. SET_LOW_EN: Thông số cho phép tạo tín hiệu ngõ vào dùng để thiết lập giá trị
ngưỡng dưới. Chú ý, thông số này chỉ được định nghĩa khi LOW_TH_SIGNAL được
sử dụng.
4. SET_HIGH_EN: Thông số cho phép tạo tín hiệu ngõ vào dùng để thiết lập giá trị
ngưỡng trên. Chú ý, thông số này chỉ được định nghĩa khi HIGH_TH_SIGNAL được
sử dụng.
5. LOW_TH_SIGNAL: Thông số cho phép tạo tín hiệu ngõ ra báo dưới một mức
ngưỡng được thiết lập sẵn, sfifo_low_th
6. HIGH_TH_SIGNAL: Thông số cho phép tạo tín hiệu ngõ ra báo dưới mức ngưỡng
được thiết lập của FIFO, sfifo_high_th
7. OV_SIGNAL: Thông số cho phép tạo tín hiệu ngõ ra báo overflow, sfifo_ov
8. UD_SIGNAL: Thông số cho phép tạo tín hiệu ngõ ra báo underflow, sfifo_ud
9. OUTPUT_REG: Chèn thanh ghi tại ngõ ra của bus dữ liệu FIFO
10. TWO_CLOCK: Tạo tín hiệu xung clock đọc và xung clock ghi khác nhau. Lưu ý, cấu
hình này sẽ tạo ra hai tín hiệu xung clock ngõ vào sử dụng cho quá trình đọc và quá
trình ghi nhưng hai xung clock cấp cho FIFO vẫn phải là 2 xung clock đồng bộ.

Thông số cấu hình giá trị:


1. DATA_WIDTH: Thiết lập số bit của 1 ô dữ liệu FIFO, tương ứng là độ rộng của bus
dữ liệu ghi/đọc
2. POINTER_WIDTH: Thiết lập độ rộng của con trỏ ghi/đọc. Giá trị này sẽ quyết định
số ô nhớ của FIFO theo công thức "Số ô nhớ của FIFO=2^POINTER_WIDTH. Ví dụ,
cấu hình POINTER_WIDTH= 3 thì số ô nhớ của FIFO là 2^3 = 8 ô.
3. TH_WIDTH = POINTER_WIDTH
2.2.4. Phân tích cấu trúc FIFO
2.2.4.1.Mạch nguyên lý tổng quan

2.2.4.2 Con trỏ ghi và đọc


2.2.4.3. Mạch báo trạng thái full/empty/overflow/underflow

2.2.4.4. Mạch báo trạng thái ngưỡng trên và ngưỡng dưới

You might also like