Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

CHƯƠNG 1: TỔNG QUAN

1.1. Đặt vấn đề

Ngày nay, các hệ thống nhúng rất phát triển với những ứng dụng rộng rãi trong nhiều
lĩnh vực công nghiệp và đời sống, đâu đâu ta cũng bắt gặp các ứng dụng của hệ thống
nhúng, từ những thiêt sbij nhỏ như điện thoại, máy nghe nhạc đến cả hệ thống phức tạp như
ô tô, máy móc công nghiệp. Có thể nói đánh dấu sự ra đời và phát triển của hệ thống nhúng
trước tiên phải kể đến sự ra đời của các bộ vi xử lí, vi điều khiển.

Thập kỷ 80 có thể được coi là khởi điểm bắt đầu kỷ nguyên của sự bùng nổ về phát
triển của hệ thống nhúng. Tư đó khởi nguồn cho làn song ra đời của hang loạt các chủng
loại vi xử lý và gắn liền là các hệ thống nhúng để thâm nhập rộng khắp trong các ứng dụng
hàng ngày của cuộc sống chúng ta, ví dụ như các thiết bị điện tử sử dụng cho sinh hoạt hàng
ngày (lò vi sóng, ti vi, tủ lạnh,máy giặt, điều hòa,…) và văn phòng làm việc (máy fax, máy
in, máy tính,…). Các bộ vi xử lý, phần cứng, phần mềm ngày càng được sử dụng trong các
hệ thống nhúng hiện nay đã vượt xa so với PC về số lượng chủng loại và sẽ vẫn còn tiếp tục
phát triển nhằm đáp ứng và thỏa mãn rất nhiều ứng dụng đa dạng

Với mục đích nghiên cứu nhằm làm sáng tỏ về khái niệm, vai trò và các ứng dụng,
cũng như những kiến thức về phần cứng, phần mềm trong một hệ thống nhúng, đồng thời
thiết kế một mạch điện tử ứng dụng, nhóm chúng em đã chọn đề tài “Hệ thống FIFO” làm
bài báo cáo môn học này.

1.2. Mục tiêu

- Tìm hiểu và góp phần làm sáng tỏ hơn những nội dung cơ bản về khái niệm, vai trò, đặc
điểm, nguyên lí hoạt động và các ứng dụng của FIFO trong thực tế .

- Nghiên cứu, làm sáng tỏ những kiến thức về phần cứng, phần mềm của FIFO.

- Trên cơ sở đó tổng kết bài học, đưa ra kết luận đổng thời thiết kế và mô phỏng mạch điện
tử ứng dụng FIFO bằng phần mềm ISE Design Suite tích hợp ISIM.

- Rút ra những kinh nghiệm kiến thức trong thục tiễn thông qua mạch ứng dụng.

1.3. Nội dung nghiên cứu

- Nghiên cứu và trình bày các thông tin quan trọng, cụ thể cũng như cách thức hoạt động,
mạch ứng dụng của hệ thống và các yêú tố cần thiết để tạo nên một hệ thống FIFO hoàn
chỉnh.
- Trình bày phần cứng và một số phần mềm của FIFO.

1.4. Bố cục

Bố cụ nghiên cứu và trình bày bài tiểu luận gồm 6 chương:

- Chương 1: Tổng quan

- Chương 2: Cơ sở lý thuyết

- Chương 3: Thiết kế

- Chương 4: Đánh giá qua testbench

- Chương 5: Đánh giá trên kit FPGA

- Chương 6: Kết luận và hướng phát triển

1.5. Giới hạn

Tiểu luận tập trung nghiên cứu chức năng, nguyên lí hoạt động, các thành phần có trong
phần cứng và một số phần mềm tiêu biểu của hệ thống FIFO.
CHƯƠNG 2

2.1. Tổng quát về FIFO

2.1.1. Định nghĩa

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. Nghĩa là, thứ tự dữ liệu được đọc ra giống như
thứ tự dữ liệu được ghi vào. 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.

Hình 1. Sơ đồ khái niêm về bộ nhớ đệm 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
writeclock).
- 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.
Các thành phần bộ nhớ nằm trong vòng tròn với 2 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 tăng 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

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.
Hình 2. Mô hình hoạt động của FIFO

2.1.2. Chức năng

Các chức năng chính của FIFO bao gồm:

- Thêm phần tử vào cuối hàng đợi: khi một phần tử mới được thêm vào FIFO, nó sẽ được
đặt vào cuối hàng đợi.

- Lấy phần tử đầu tiên: phần tử đầu tiên được thêm vào FIFO sẽ được lấy ra khi thực hiện
phép lấy dữ liệu.

- Kiểm tra FIFO có trống hay không: có thể kiểm tra xem FIFO có phần tử nào hay không.

- Kiểm tra FIFO đã đầy hay chưa: có thể kiểm tra xem FIFO đã đầy hay chưa.
2.1.3. Sơ đồ tín hiệu giao tiếp FIFO

Hình 3. Sơ đồ tín hiệu giao tiếp của FIFO

- Ngõ vào (input):

 clk: xung clock đọc và ghi dữ liệu


 rst: reset tích cực mức thấp
 wr: tín hiệu cho phép ghi dữ liệu vào FIFO
 rd: tín hiệu cho phép đọc dữ liệu từ FIFO
 data_in: bus dữ liệu ghi vào

- Ngõ ra (output):

 data_out: bus dữ liệu đọc ra


 fifo_full: Fifo báo trạng thái đầy
 fifo_empty: Fifo báo trạng thái rỗng
2.2. FIFO bất đồng bộ

2.2.1. Định nghĩa

- FIFO bất đồng bộ (asynchronous FIFO) là một loại FIFO được sử dụng trong các mạch
điện tử kỹ thuật số để truyền dữ liệu giữa các modul hoặc thiết bị với tốc độ khác nhau.

- Trong một hệ thống bất đồng bộ, các tín hiệu đồng bộ được sử dụng để đồng bộ hóa các tín
hiệu dữ liệu giữa các modul. Tuy nhiên, trong trường hợp các tín hiệu đồng bộ không đủ để
đảm bảo tính đồng bộ giữa các modul, các FIFO bất đồng bộ có thể được sử dụng để giải
quyết vấn đề này.

2.2.2. Đặc điểm

- Độ trễ không đồng đều: Trong một hệ thống bất đồng bộ, các tín hiệu dữ liệu có thể được
truyền qua các đường truyền với tốc độ khác nhau. Điều này dẫn đến độ trễ không đồng đều
giữa các tín hiệu dữ liệu và làm cho việc đồng bộ hóa dữ liệu trở nên phức tạp hơn.

- Dung lượng giới hạn: FIFO bất đồng bộ có dung lượng giới hạn, do đó, nếu FIFO đầy, dữ
liệu mới sẽ bị mất.

- Sử dụng các tín hiệu bổ sung: FIFO bất đồng bộ sử dụng các tín hiệu bổ sung để đồng bộ
hóa dữ liệu, chẳng hạn như tín hiệu thăm dò (request) và phản hồi (acknowledge) để xác
nhận các truyền dữ liệu.

- Khả năng xử lý tương đối chậm: Trong một số ứng dụng, FIFO bất đồng bộ có thể xử lý
dữ liệu chậm hơn so với các phương pháp truyền dữ liệu đồng bộ khác.

- Dễ dàng tích hợp vào hệ thống: FIFO bất đồng bộ có thể dễ dàng tích hợp vào các hệ
thống kỹ thuật số do nó được thiết kế để tương thích với các chuẩn giao tiếp khác nhau.

- Đáp ứng được yêu cầu thời gian thực: FIFO bất đồng bộ có thể được sử dụng để đáp ứng
các yêu cầu thời gian thực vì nó cho phép truyền dữ liệu giữa các modul với tốc độ khác
nhau mà không làm gián đoạn hoạt động của hệ thống.

2.2.3. Chức năng

- Đồng bộ hóa dữ liệu giữa các thành phần mạch điện tử: FIFO bất đồng bộ giúp đồng bộ
hóa dữ liệu giữa các thành phần mạch điện tử chạy ở tốc độ khác nhau hoặc không đồng bộ
với nhau.

- Lưu trữ dữ liệu: FIFO bất đồng bộ có khả năng lưu trữ dữ liệu trong một khoảng thời gian
ngắn, cho phép các thành phần mạch điện tử đọc và ghi dữ liệu vào FIFO một cách độc lập.
- Giảm thiểu xung đột: FIFO bất đồng bộ giúp giảm thiểu xung đột (collision) giữa các tín
hiệu truyền dẫn giữa các thành phần mạch điện tử.

- Đảm bảo tính toàn vẹn dữ liệu: FIFO bất đồng bộ giúp đảm bảo tính toàn vẹn dữ liệu khi
truyền dữ liệu giữa các thành phần mạch điện tử. Nó có khả năng kiểm tra lỗi và sửa chữa
các lỗi truyền dữ liệu nếu có.

2.2.4. Nguyên lí hoạt động

- FIFO bất đồng bộ hoạt động bằng cách sử dụng các cơ chế đồng bộ hóa bổ sung, chẳng
hạn như các tín hiệu trễ (handshake signals) và các khối đồng bộ hóa (synchronization
blocks). Khi dữ liệu được gửi đến một FIFO bất đồng bộ, nó được lưu trữ trong bộ nhớ
FIFO theo thứ tự vào trước. Khi dữ liệu được yêu cầu từ FIFO, dữ liệu đầu tiên sẽ được đọc
ra và FIFO sẽ dịch chuyển các dữ liệu còn lại lên để giữ nguyên thứ tự vào trước.

2.2.5. Ứng dụng

- FIFO bất đồng bộ được sử dụng trong nhiều ứng dụng như truyền dữ liệu giữa các chip
trên một bo mạch, truyền dữ liệu giữa các thiết bị trong một mạng điều khiển, hoặc truyền
dữ liệu giữa các module trong một hệ thống xử lý tín hiệu số.

2.2.6. Cờ full và cờ empty

Cờ Full và cờ Empty là các tín hiệu được sử dụng trong FIFO bất đồng bộ để xác
định trạng thái của FIFO.

- Cờ Full (Full flag): Cờ Full được đặt lên cao (high) khi FIFO đã đầy và không thể
chứa thêm dữ liệu nào nữa. Khi một phần tử mới được ghi vào FIFO, cờ Full sẽ được
đặt xuống thấp (low). Việc sử dụng cờ Full cho phép hệ thống gửi dữ liệu đến FIFO
biết được khi nào FIFO đã đầy và không thể chứa thêm dữ liệu nữa.

- Cờ Empty (Empty flag): Cờ Empty được đặt lên cao (high) khi FIFO trống và
không có dữ liệu nào để đọc. Khi một phần tử được đọc ra khỏi FIFO, cờ Empty sẽ
được đặt xuống thấp (low). Việc sử dụng cờ Empty cho phép hệ thống đọc dữ liệu từ
FIFO biết được khi nào FIFO đã trống và không còn dữ liệu nữa.

Cờ Full và cờ Empty thường được sử dụng kết hợp với các tín hiệu khác, chẳng hạn
như tín hiệu thăm dò (request) và phản hồi (acknowledge) để đảm bảo tính đồng bộ
hóa dữ liệu trong hệ thống bất đồng bộ. Việc sử dụng cờ Full và cờ Empty rất hữu ích
trong việc xử lý dữ liệu một cách hiệu quả trong hệ thống bất đồng bộ.
Tài liệu tham khảo:

[1] https://vimach.net/threads/thiet-ke-bo-nho-dem-fifo-dung-verilog.124/

[2] https://nguyenquanicd.blogspot.com/2017/08/ip-core-fifo-ong-bo-co-cau-hinh-uoc.html

[3] https://vimach.net/threads/thiet-ke-synchronous-fifo.955/

You might also like