Tải bản đầy đủ (.pdf) (25 trang)

Thiết kế và thực thi lõi IP phân luồng dữ liệu trên FPGA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.53 MB, 25 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƢỜNG ĐẠI HỌC BÁCH KHOA


VÕ THÀNH VĂN

THIẾT KẾ VÀ THỰC THI LÕI IP
PHÂN LUỒNG DỮ LIỆU TRÊN FPGA

Chuyên ngành: Kỹ thuật điện tử
Mã số: 60520203

TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ

Đà Nẵng - Năm 2017


Công trình được hoàn thành tại
TRƢỜNG ĐẠI HỌC BÁCH KHOA

Người hướng dẫn khoa học: TS Phan Trần Đăng Khoa

Phản biện 1: .............................................................................
Phản biện 2: .............................................................................

Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn tốt
nghiệp thạc sĩ Kỹ thuật điện tử họp tại Trường Đại học Bách
khoa vào ngày 15 tháng07 năm 2017

Có thể tìm hiểu luận văn tại:
 Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học


Bách khoa
Thư viện Khoa Điện tử-Viễn thông, Trường Đại học Bách
khoa – ĐHĐN


1
MỞ ĐẦU
1. Tính cấp thiết của đề tài
Trong giai đoạn đầu của dịch vụ Internet, do băng thông và
các tài nguyên khác đủ để cung cấp cho các ứng dụng trong mạng
nên vấn đề phân biệt và ưu tiên cho các gói tin chưa được quan tâm.
Ban đầu, các nhà cung cấp dịch vụ đưa ra mô hình best-effort, trong
đó tất cả các khách hàng sẽ được đối xử như nhau và chỉ khác nhau ở
loại kết nối. Đây là dịch vụ phổ biến trên mạng Internet hay mạng IP
nói chung.
Nhưng khi internet càng ngày càng phát triển và phát triển
thêm các dịch vụ HTTP, voice, video… thì điều này sẽ làm cho chất
lượng của các dịch vụ giảm đi rõ rệt vì độ trễ lớn, độ biến động trễ
lớn và không đủ băng thông để truyền, phương án tăng băng thông
của mạng cũng không giải quyết được vấn đề này mà lại còn rất tốn
kém. Chính vì vậy, giải pháp về phân luồng dữ liệu ra đời để đảm
bảo các ứng dụng thời gian thực chạy được trên Internet và các ứng
dụng truyền thống được bảo đảm chất lượng tốt hơn.
Bên cạnh đó, các thiết bị mạng như router, firewall đã được
sử dụng rộng rãi tại nhiều gia đình, cơ quan, doanh nghiệp tại Việt
Nam. Tuy nhiên, toàn bộ các thiết bị này hiện được nhập khẩu từ
nước ngoài, do các nhà sản xuất nước ngoài cung cấp hoàn toàn, dẫn
đến một nguy cơ lệ thuộc và mất quyền kiểm soát rất lớn đối với tầng
thông tin quốc gia khi xảy ra sự cố. Vì vậy, từng bước tạo ra các sản
phẩm do chính công dân Việt Nam nghiên cứu sản xuất để bảo đảm

an toàn thông tin là hết sức cần thiết.
Xuất phát từ những yêu cầu trên, luận văn của em nghiên cứu
về đề tài:
“Thiết kế và thực thi lõi IP phân luồng dữ liệu trên FPGA”


2
2. Mục tiêu nghiên cứu
Nghiên cứu thiết kế kiến trúc lõi IP phân luồng dữ liệu trên
FPGA, thực hiện bằng ngôn ngữ mô tả phần cứng Verilog HDL.
3. Đối tƣợng và phạm vi nghiên cứu
- Mô hình và kĩ thuật phân luồng dữ liệu.
- Ngôn ngữ mô tả phần cứng Verilog HDL và công nghệ
FPGA.
- Thực hiện và đánh giá lõi IP phân luồng dữ liệu dựa trên
công cụ mô phỏng ModelSim và trên nền tảng FPGA.
4. Phƣơng pháp nghiên cứu và nội dung nghiên cứu
- Nghiên cứu lý thuyết:
+ Tìm hiểu và phân tích các tài liệu về phân luồng
dữ liệu.
+ Nghiên cứu kiến trúc lõi IP phân luồng dữ liệu,
đặc biệt là các thành phần có liên quan như phương pháp
quản lý hàng đợi, thuật toán lập lịch.
- Nghiên cứu thực nghiệm:
+ Sử dụng ngôn ngữ mô tả phần cứng Verilog HDL
để mô tả các phương pháp, thuật toán.
+ Mô phỏng mức RTL trên công cụ mô phỏng
ModelSim, thực thi trên nền FPGA và đánh giá kết quả.
5. Ý nghĩa khoa học và thực tiễn của đề tài
Đề tài tạo ra lõi IP phân luồng dữ liệu, được ứng dụng trong

các thiết bị mạng, góp phần thực tiễn vào việc nâng cao chất lượng
dịch vụ của các thiết bị này, đồng thời làm chủ được công nghệ giúp
đảm bảo an toàn thông tin.
6. Kết cấu của luận văn
Luận văn bao gồm có 4 chương được tóm tắt như sau:


3
Chương 1 - Tổng quan về phân luồng dữ liệu
Chương 2 - Cơ sở lý thuyết các thuật toán lập lịch.
Chương 3 –Thiết kế lõi IP phân luồng dữ liệu
Chương 4 –Mô phỏng và thực hiện lõi IP phân luồng dữ liệu trên
nền FPGA.
CHƢƠNG 1-TỔNG QUAN VỀ PHÂN LUỒNG DỮ LIỆU
1.1. Giới thiệu chƣơng
1.2. Khái niệm phân luồng dữ liệu
Phân luồng dữ liệu là công việc được sử dụng trong nhiều ứng
dụng, nhằm mục đích phân loại các gói dữ liệu vào các tập dữ liệu
khác nhau để xử lý tiếp theo; mỗi tập dữ liệu có một quy tắc hành
động riêng, đặc biệt là trong chức năng nâng cao chất lượng dịch vụ
(QoS - Quality of Service) của hệ thống mạng ngày nay. Tiêu chuẩn
mới nhất của phân luồng dữ liệu được định nghĩa trong các tài liệu
RFC 5777 và RFC 7640.
1.3. Vai trò của phân luồng dữ liệu
1.4. Các chức năng chính của phân luồng dữ liệu
Hình 1.1 biểu diễn vị trí của phân luồng dữ liệu trong một
router/switch với 2 cổng vào, trong đó cả ngõ vào và ngõ ra của mỗi
cổng đều sử dụng chức năng phân luồng dữ liệu. Các khối chức năng
chính của phân luồng dữ liệu được mô tả như sau:



Phân loại luồng dữ liệu (Traffic classification).



Chính sách lưu lượng (Traffic policing).



Định hình luồng lưu lượng (Traffic shaping).



Lập lịch (Traffic scheduling).



Quản lý bộ đệm (Buffer Management).


4

Hình 1.1: Sơ đồ khối của phân luồng dữ liệu trong router/switch
Tại ngõ vào của mỗi cổng, chức năng giới hạn tốc độ xác định
luồng dữ liệu có phù hợp với các chính sách lưu lượng đã đề ra hay
không, sau đó khối quản lý bộ đệm xác định gói tin đó được cho phép
đi vào hay bị loại bỏ và nếu bị loại bỏ thì sẽ loại bỏ theo phương
pháp nào. Bên cạnh đó, khối lập lịch gói tin và tối ưu hóa luồng lưu
lượng xác định gói tin nào sẽ được tháo ra tiếp theo và được gửi tới
cổng nào thông qua Fabric, đồng thời kiểm soát tốc độ truyền của gói

tin trước khi đi ra khỏi router.
1.4.1.

Phân loại luồng dữ liệu

1.4.2.

Chính sách lưu lượng

1.4.3.

Định hình luồng lưu lượng

1.4.4.

Lập lịch gói tin

1.4.5.

Quản lý bộ đệm

1.5. Kết luận chƣơng


5
CHƢƠNG 2 - CƠ SỞ LÝ THUYẾT CÁC THUẬT TOÁN
LẬP LỊCH
2.1. Giới thiệu chƣơng
2.2. Thuật toán First Come First Serve
2.3. Thuật toán lập lịch Max-Min

2.4. Thuật toán Round-Robin
2.5. Thuật toán Weighted Round-Robin
2.6. Thuật toán Deficit Round-Robin
Thuật toán thâm hụt round robin (DRR) là trường hợp mở rộng
của thuật toán WRR cho trường hợp các gói tin có kích thước khác
nhau. Ý tưởng chính của thuật toán là sử dụng thuật toán round robin
với một phần lượng tử dịch vụ được gán cho mỗi hàng đợi. Điểm
khác biệt duy nhất so với phương pháp round robin truyền thống là
nếu hàng đợi không thể tháo gói tin trong lượt của nó vì kích thước
gói tin quá lớn thì phần lượng tử sẽ được thêm vào ở lượt rà soát tiếp
theo. Cụ thể như sau:
Giả sử mỗi luồng dữ liệu i được xác định bởi một giá trịQi bits
tại mỗi lượt rà soát, kèm theo một biến trạng thái DCi (Deficit
Counter) để xác định phần thâm hụt. Công việc rà soát ở mỗi lượt
được tính là một vòng round robin tất cả các hàng đợi hiện có.Để
tránh việc phải kiểm tra các hàng đợi rỗng, một danh sách ActiveList
được tạo ra để chứa chỉ số của các hàng đợi có ít nhất một gói tin
trong đó.Các gói tin đi vào từ nhiều luồng dữ liệu được phân loại để
lưu trữ vào các hàng đợi khác nhau. Giả sử số bytes của gói tin đầu
tiên trong hàng đợi i ở lượt rà soát thứklà 𝑏𝑦𝑡𝑒𝑠𝑖 (𝑘). Khi một gói tin
đến và lưu trữ vào hàng đợi đang rỗng i thì chỉ số i sẽ được thêm vào
cuối danh sách ActiveList. Nếu i ở đầu danh sách ActiveList thì ở lượt
rà soát thứ k, thuật toán sẽ tính toán giá trị 𝐷𝐶𝑖 = 𝐷𝐶𝑖 + 𝑄𝑖 và tháo


6
gói tin của hàng đợi i ra nếu thỏa mãn điều kiện 𝑏𝑦𝑡𝑒𝑠𝑖 𝑘 ≤ 𝐷𝐶𝑖 ,
sau đó cập nhật lại giá trị 𝐷𝐶𝑖 = 𝐷𝐶𝑖 − 𝑏𝑦𝑡𝑒𝑠𝑖 (𝑘). Lúc này, nếu
hàng đợi 𝑖 vẫn còn gói tin để tháo ra thì chỉ số𝑖 sẽ được ghi vào cuối
danh sách ActiveList, nếu không thì gán giá trị của 𝐷𝐶𝑖 về 0 và xóa

chỉ số 𝑖 ra khỏi danh sách ActiveList.

Hình 2.5: Lượt rà soát round-robin thứ nhất.

Hình 2.6: Lượt rà soát round-robin thứ hai.


7
Một ví dụ về hoạt động của thuật toán DRR được mô tả như
hình 2.5 và hình 2.6. Tại thời điểm khởi đầu, các giá trị biến đếm 𝐷𝐶𝑖
đều được gán bằng 0, con trỏ trỏ vào đỉnh của danh sách ActiveList.
Khi hàng đợi đầu tiên được rà soát, giá trị lượng tử 500 được cộng
vào biến đếm 𝐷𝐶𝑖 . Vì kích thước gói tin ở đầu hàng đợi 𝑖 là 200 (nhỏ
hơn giá trị 𝐷𝐶𝑖 = 500) nên gói tin này được tháo ra, phần dư thừa
300 được gán lại cho 𝐷𝐶𝑖 . Vì kích thước gói tin tiếp theo trong hàng
đợi 𝑖 là 750 > 300 nên không thể tháo gói tin này ra khỏi hàng đợi 𝑖,
lúc đó cập nhật lại giá trị thâm hụt sang cho lượt rà soát tiếp theo
(𝐷𝐶𝑖 = 𝐷𝐶𝑖 + 𝑄𝑖 = 300 + 500 = 800). Con trỏ được di chuyển
sang hàng đợi 𝐹𝑄#2, nơi mà giá trị 𝐷𝐶 được gán bằng 500 bytes và
cho phép gói tin đầu hàng đợi được phép tháo ra.
2.3.Kết luận chƣơng
CHƢƠNG 3 –THIẾT KẾ LÕI IP PHÂN LUỒNG DỮ LIỆU
3.1. Tổng quan quá trình thiết kế
3.2. Thiết kế kiến trúc lõi IP

Hình 3.1: Sơ đồ kết nối lõi IP phân luồng dữ liệu


8
Để đảm bảo các chức năng phân luồng dữ liệu vào các hàng đợi khác

nhau, đồng thời đảm bảo tốc độ do người dùng cấu hình, lõi IP phân
luồng dữ liệu được thiết kế với sơ đồ khối như hình 3.1.
Trong đó:


KhốiCongestion: có chức năng kiểm tra tắc nghẽn trước khi
lưu gói tin vào bộ nhớ. Khối này sử dụng thuật toán WRED
đã được nêu ra trong chương 1.



Khối BuffMan (Buffer Management): có nhiệm vụ quản lý
bộ đệm, cấp phát vùng nhớ cho các gói tin, quản lý các hàng
đợi chứa các gói tin với mục đích phân luồng dữ liệu. Bên
cạnh đó, khối BuffMan còn có chức năng ghi, đọc gói tin vào
bộ nhớ, thông báo tình trạng gói tin cho khối Scheduler được
biết. Khối BuffMan được trình bày chi tiết ở mục 3.3



Khối Scheduler: có chức năng quản lý danh sách ActiveList
và thực hiện công việc lập lịch. Đồng thời áp dụng cơ chế
thùng thẻ, đảm bảo được tính năng định hình lưu lượng của
lõi IP phân luồng dữ liệu. Khối Scheduler được trình bày ở
mục 3.9.

Mô tả tín hiệu
Bảng 3.1 mô tả các tín hiệu của lõi IP phân luồng dữ liệu.
Bảng 3.1: Bảng mô tả tín hiệu lõi IP
Tín hiệu


Nguồn

Mô tả

Clk

Clock

Tín hiệu Clock

Rstn

Reset

Tín hiệu Reset

Input

S

Luồng dữ liệu vào

Output

M

Luồng dữ liệu ra

Hinf


S

Các thông số của người dùng


9
cấu hình cho mỗi hàng đợi và
các thông số thống kê được
truyền qua nhóm tín hiệu này.
Nhóm tín hiệu DAAxiAcc bao gồm cả đọc và ghi
Nhóm tín hiệu QMAxiAcc bao gồm cả đọc và ghi
Nhóm tín hiệu AxiAcc bao gồm cả đọc và ghi
Nhóm tín hiệu Hinf
dabaseaddr[31:0]

S

Địa chỉ cơ sở của vùng nhớ mà
khối DynamicAllocator quản lý

databaseaddr[31:0]

S

Địa chỉ cơ sở của vùng nhớ lưu
dữ liệu của lõi IP

qmbaseaddr[31:0]


S

Địa chỉ cơ sở của vùng nhớ mà
khối QueueManagement quản lý

coeffdivide[7:0]

S

Hệ số chia clock

cmd[4:0]

S

Lệnh gửi từ host

inqc1[QCT1_WID-1:0]

S

Thông số được ghi vào trường
thông tin thứ nhất của hàng đợi

Inqc2[QCT1_WID-1:0]

S

Thông số được ghi vào trường
thông tin thứ 2 của hàng đợi


length[LENGTH-1:0]

S

Độ rộng nội dung được phép ghi
vào ô nhớ

qid[QID_WIDTH-1:0]

S

Chỉ số hàng đợi

retcode

M

Cờ trạng thái trả về khi nhận
được lệnh cấu hình từ Host

bytecount[63:0]

M

Số byte dữ liệu ra khỏi lõi IP

pktcount[63:0]

M


Số gói dữ liệu ra khỏi lõi IP

handshake signal

S

Nhóm tín hiệu bắt tay


10
3.3. Thiết kế khối quản lý bộ đệm (Buffer Management)
3.3.1. Chức năng
Khối Quản lý bộ đệm thực hiện chức năng ghi dữ liệu vào và
đọc dữ liệu ra trong bộ nhớ, quá trình ghi đọc được thực hiện bởi
khối Enqueue và Dequeue tương ứng. Bên cạnh đó, có khối
QueueMan sẽ quản lý các hàng đợi và các cell, cấp phát các vị trí nhớ
cho các gói tin đủ điều kiện đi vào. Việc phân loại các gói tin đi vào
các hàng đợi tương ứng cũng được thực hiện trong khối này.
3.3.2. Sơ đồ kết nối

Hình 3.2: Sơ đồ kết nối khối Quản lý bộ đệm
Hình 3.2 mô tả sự kết nối giữa các khối con của khối Quản lý bộ
đệm.
Trong đó:


Khối Enq (Enqueue): có chức năng phân loại gói tin đầu
vào theo phương pháp phân loại kết hợp hành vi, thực hiện



11
yêu cầu bộ nhớ đến khối quản lý hàng đợi, đồng thời ghi dữ
liệu của gói tin vào bộ nhớ theo đơn vị là từng cell nếu gói
tin hợp lệ.

 Khối Deq (Dequeue): có chức năng nhận lệnh tháo hoặc hủy
bỏ gói tin từ bộ lập lịch, giao tiếp với khối truy xuất bộ nhớ
để đọc gói tin ra theo từng cell và phân xử đưa đến ngõ ra
mong muốn.


Khối QMan (Queue Management): có chức năng quản lý
các hàng đợi và các cell. Mỗi hàng đợi được quản lý bởi cấu
trúc danh sách liên kết, ngoài ra còn có các con trỏ đầu và
cuối giúp thuận tiện trong việc cấp phát và tháo bỏ một cell,
bên cạnh đó hai con trỏ này còn hỗ trợ việc liên kết các hàng
đợi trong danh sách ActiveList của bộ lập lịch.



Khối Memory Accessor: thực hiện quá trình truy xuất bộ
nhớ.



Các khối QM_RRCmd, Deq_RRCmd: có chức năng phân
xử các lệnh (command) đầu vào theo thuật toán round robin.

3.3.3. Mô tả tín hiệu

3.4. Thiết kế khối xử lý ghi gói tin vào hàng đợi (Enqueue)
3.4.1. Chức năng
3.4.2. Mô tả tín hiệu
3.4.3. Máy trạng thái
3.5. Thiết kế khối xử lý đọc gói tin từ hàng đợi ra (Dequeue)
3.5.1. Chức năng
3.5.2. Mô tả tín hiệu
3.5.3. Máy trạng thái
3.6. Thiết kế khối hỗ trợ giao tiếp bộ nhớ (Memory Accessor)
3.6.1. Chức năng


12
3.6.2. Mô tả tín hiệu
3.6.3. Máy trạng thái
3.7. Thiết kế khối quản lý hàng đợi (Queue Management)
3.7.1. Chức năng
3.7.2. Cấu trúc
3.7.3. Mô tả tín hiệu
3.7.3. Máy trạng thái
3.8. Thiết kế khối cấp phát bộ nhớ động (Dynamic Allocator)
3.8.1. Chức năng
3.8.2. Mô tả tín hiệu
3.8.3. Máy trạng thái
3.9. Thiết kế khối lập lịch (Scheduler)
3.9.1. Chức năng
Khối Scheduler có chức năng thực hiện việc lập lịch để tháo
gói tin ra khỏi các hàng đợi tùy theo tốc độ tháo cùng các thông số
khác được cấu hình bởi người sử dụng.
Scheduler sử dụng một danh sách liên kết để chứa các hàng

đợi có ít nhất một gói tin trong đó, một khi có hàng đợi mới vào mà
chưa có trong danh sách, nó sẽ được ghi vào cuối danh sách này, nếu
có rồi thì chỉ cần cập nhật thông số số gói tin trong hàng đợi lên 1;
thứ tự hàng đợi được xem xét để lập lịch sẽ đi từ đầu đến cuối danh
sách.
3.9.2. Mô tả tín hiệu
3.9.3. Máy trạng thái
Khối Scheduler sử dụng 3 máy trạng thái, trong đó:


wr_dq_state: xử lý gói tin vào, đồng thời xử lý việc thay đổi
danh sách hàng đợi được tháo ra (departure queue).


13


dq_empty_state: xác định danh sách hàng đợi được tháo ra
có rỗng hay không.



schedule_state: thực hiện công việc lập lịch cho từng hàng
đợi, gửi lệnh tháo tới khối Dequeue, gửi thông báo về gói tin
vừa được tháo cho khối Congestion, cập nhật danh sách
hàng đợi thay đổi.

3.10. Thiết kế khối chống tắc nghẽn (Congestion)
3.10.1. Chức năng
KhốiCongestion có chức năng sử dụng thuật toán WRED để

kiểm tra tắc nghẽn trước khi lưu gói tin vào bộ nhớ; nếu có tắc nghẽn
xảy ra, khối này sẽ loại bỏ gói tin, đảm bảo cho bộ nhớ không bị tràn.
3.10.2. Máy trạng thái

Hình 3.21: Máy trạng thái của khối Congestion
Máy trạng thái khối Congestion được biểu diễn như hình 3.21. Trong
đó, các trạng thái của Congestion FSM được mô tả như sau:
RESET
Trạng thái khởi tạo ban đầu.
WAIT_PKT
Trạng thái chờ gói tin tới.


14
SEND_INFO_TO_RED
Trạng thái gửi thông tin của gói tin tới khối WRED để xử lý tắc
nghẽn, nếu thỏa mãn thì sẽ chuyển tiếp gói tin tới khối Buffer
Management, nếu không thì sẽ loại bỏ gói tin đó.
WAIT_COMPLETE_PACKET
Trạng thái chờ kết thúc gói tin.
3.10.3. WRED
3.11. Kết luận chƣơng
Với những trình bày ở trên, chương 3 đã hoàn thành việc thiết kế
IPCore phân luồng dữ liệu. Đây là tiền đề cho quá trình khảo sát và
đánh giá chi tiết mà ta sẽ đề cập ở chương sau.
CHƢƠNG 4 –MÔ PHỎNG VÀ THỰC HIỆN LÕI IP PHÂN
LUỒNG DỮ LIỆU TRÊN NỀN FPGA
4.1. Giới thiệu
4.2. Yêu cầu phần mềm
Sử dụng phần mềm mô phỏng Modelsim 10.2c của Mentor

Graphic và bộ phần mềm tổng hợp, biên dịch của hãng Xilinx là ISE
và XPS. Xilinx ISE và XPS là các bộ phần mềm thiết kế của Xilinx,
cho phép người lập trình thực hiện một lõi IP hoàn chỉnh, từ các bước
cơ bản đầu tiên về thiết kế cho đến các bước cuối cùng là nạp thiết kế
của mình lên FPGA. Ngoài ra, các phần mềm trên của Xilinx còn
cung cấp các lõi IP cơ bản như các giao tiếp DMA, AXI,...để kết nối
lõi IP Phân luồng dữ liệu với các khối chức năng khác có sẵn để tạo
nên một hệ thống hoàn chỉnh. Bên cạnh đó, các lõi IP được tạo ra bởi
phần mềm System Generator của Xilinx còn có thể tổng hợp thành
các thư viện mô phỏng Modelsim, giúp cho việc mô phỏng một hệ


15
thống được tiện lợi và hoàn hảo hơn. Cụ thể, những phần mềm này
có những chức năng chính như sau:


mô phỏng mức hành vi và mức cổng lõi IP với các đầu vào
khác nhau.



tạo ra các lõi IP với các chức năng riêng biệt giúp cấu thành
nên một hệ thống hoàn chỉnh.



tổng hợp IP Core và cho biết các thông số sau tổng hợp: tài
nguyên sử dụng, clock, độ trễ,…




tạo được file bitstream để nạp xuống board.

Để kiểm tra được số lượng tài nguyên sử dụng cũng như chức năng
hoạt động của lõi IP, quá trình tổng hợp, mô phỏng và biên dịch được
thực hiện qua các bước sau:


Bước 1: Kiểm tra lỗi cú pháp và tổng hợp, phân tích tài
nguyên sử dụng của lõi IP bằng cách sử dụng phần mềm
Xilinx ISE 14.7.



Bước 2: Mô phỏng lõi IP ở mức hành vi và mức cổng bằng
cách sử dụng phần mềm Modelsim 10.2c. Ở bước này, liên
tục thay đổi các thông số đầu vào khác nhau tương ứng với
các trường hợp trên thực tế để đảm bảo rằng lõi IP hoạt động
đúng chức năng của mình.



Bước 3: Sử dụng phần mềm Xilinx XPS để kết nối lõi IP và
các thành phần khác để tạo nên một hệ thống hoàn chỉnh, sau
đó tạo file bitstream để nạp hệ thống xuống board FPGA.
Trong quá trình tạo file bitstream, các công việc kiểm tra
DRC (Design Rule Check), phân vùng clock hay place &
route cũng được thực hiện đầy đủ.


Tiếp theo sẽ tập trung vào công đoạn cụ thể và kết quả đạt được ở
từng bước.


16
4.3. Kết quả tổng hợp
Tổng hợp là quá trình tiếp theo sau khi hoàn thành bước viết
code. Đây là kết quả của quá trình biên dịch hoặc chuyển đổi ngôn
ngữ mô tả phần cứng Verilog HDL vào trong mức cổng. Căn cứ vào
cấu trúc và quy mô phần cứng được mô tả trong chương trình
Verilog, trình tổng hợp ISE 14.7 sẽ cho các kết quả sau khi tổng hợp.
Các thông số quan trọng đánh giá kết quả quá trình tổng hợp bao
gồm:


Tài nguyên sử dụng: là số Logic Block mà lõi IP cần sử
dụng. Khái niệm Logic Block tuỳ thuộc vào mỗi hãng sản
xuất định nghĩa, ví dụ của hãng Altera là LE (Logic
Element), hãng Xilinx gọi là LC (Logic Cell hoặc Slice). Mỗi
Logic Block bao gồm các thành phần chính là LUT và Flip
Flop, số lượng LUT và Flip Flop trong Logic Block tuỳ
thuộc từng hãng sản xuất và dòng sản phẩm.



Độ trễ cực đại: là thời gian trễ lớn nhất trong các độ trễ mà
một khối logic tính toán từ một tín hiệu vào đến một tín hiệu
ra. Độ trễ càng lớn thì tốc độ xử lý của lõi càng chậm.




Tần số hoạt động: là tần số cực xung nhịp (Clock) cực đại
của hệ thống cung cấp cho lõi IP để nó hoạt động không bị
lỗi.



Bộ nhớ được sử dụng: là số lượng BRAM hoặc FIFO tạo ra
để lưu trữ.
Tiến hành quá trình tổng hợp bằng phần mềm Xilinx ISE

14.7, kết quả như sau:
Số slice register

Số slice LUTs

Độ trễ cực đại

Tần số cực đại

8081 (1%)

9324 (4%)

4.976ns

200.974MHz


17

Có thể thấy, tuy khối lượng công việc cần xử lý lớn và sử
dụng bộ nhớ để lưu trữ gói tin, nhưng số lượng tài nguyên sử dụng
thấp (chiếm 1% thanh ghi và 4% LUTs trên toàn board) và tần số cực
đại cũng đạt được 200MHz.
4.4. Kết quả mô phỏng
Để kiểm tra kết quả mô phỏng trên Modelsim, ta xây dựng mô hình
kiểm tra như sau (hình 4.2):

Hình 4.2: Mô hình kiểm tra mô phỏng
Trong đó:


Pcap file: chứa đựng các gói tin đầu vào có các luồng dữ liệu
khác nhau.



Pcap Master: là tập tin code verilog, có nhiệm vụ đọc file có
định dạng *.pcap và đầu ra theo chuẩn AXIS, trong đó phần
thông tin (tuser) đã chứa các trường cần thiết phục vụ cho
phân luồng dữ liệu trong phần header của gói tin IPv4.



TrafficMan: Lõi IP phân luồng dữ liệu.



Matching: Bộ so sánh kết quả đầu ra với đầu vào.


Kịch bản được xây dựng để kiểm tra như sau:
Từ một tập tin pcap đầu vào chứa các luồng dữ liệu khác nhau, sử
dụng chương trình Wireshark để tách file pcap ban đầu thành các file


18
pcap con, mỗi file ứng với một luồng dữ liệu. Ở đây, giả sử số luồng
dữ liệu khác nhau là 3. Lõi IP TrafficMan được cấu hình sao cho có 3
ngõ ra, nhiệm vụ của bộ lập lịch sẽ tháo các gói tin của luồng dữ liệu
thứ nhất ra ngõ ra 0, luồng dữ liệu thứ 2 ra ngõ ra 1 và luồng dữ liệu
thứ 3 ra ngõ ra 2. Thực hiện so sánh song song các tập tin pcap con
tương ứng với các ngõ ra 0,1,2. Kết quả, sẽ được xác định dựa trên
tín hiệu error_data được tạo ra trên môi trường testbench. Tiếp tục
tiến hành kiểm tra với các file pcap khác nhau được bắt ngẫu nhiên
trên internet theo các tiêu chí: đa dạng nguồn và đa dạng kích thước.
Kết quả mô phỏng với một trường hợp file pcap bắt được ngẫu
nhiên trên Internet được biểu diễn ở hình 4.2.

Hình 4.2: Kết quả mô phỏng trên Modelsim
Từ kết quả hình trên, ta nhận thấy rằng, kết quả tại mỗi ngõ
ra 0, 1 và 2 đều đúng với luồng dữ liệu đã được tạo ra ban đầu. Như
vậy, có thể kết luận được rằng: Việc sử dụng ngôn ngữ mô tả phần
cứng Verilog HDL để mô tả cho lõi IP Phân luồng dữ liệu đã chính
xác.


19
4.5. Thực hiện trên nền FPGA
4.5.1. Công nghệ FPGA
4.5.2. Phần cứng sử dụng

4.5.3. Quá trình thực hiện
Để có thể hoạt động được, chỉ cần nạp lõi IP xuống kit phát
triển và chạy với các thông số đã được cấu hình mặc định. Tuy nhiên,
với mong muốn có thể thay đổi các giá trị cấu hình trong lúc thực
hiện, ví dụ như thay đổi tốc độ tháo gói tin trong khối lập lịch hay
ngưỡng loại bỏ gói tin trong khối chống tắc nghẽn,...thì ngoài lõi IP
đã được thiết kế ra, cần có bộ vi xử lý đóng vai trò điều khiển hoạt
động và thiết bị ngoại vi hỗ trợ. Các thiết bị ngoại vi bao gồm: bộ
nhớ DDR3 là nơi lưu trữ các trình điều khiển hệ thống, chứa các gói
tin đi vào lõi IP cũng như các thông số phục vụ cho các quá trình xử
lý gói tin; lõi UART dùng để giao tiếp với máy tính, nhập các thông
số cấu hình và quản lý các thống kê từ lõi IP; lõi AXI4 – Lite IPIF để
giao tiếp, ghi/đọc các thanh ghi cấu hình cho lõi IP.
Việc kết nối các lõi IP để tạo thành hệ thống và tạo file
bitstream để nạp xuống board được thực hiện thông qua công cụ phát
triển hệ thống nhúng XPS do hãng Xilinx cung cấp có kết quả như
hình 4.6 và 4.7, trong đó:


axi_interconnect: lõi IP do hãng Xilinx cung cấp, giúp kết
nối một hay nhiều thiết bị chủ (master) tới một hay nhiều
thiết bị tớ (slave) theo chuẩn AXI.



processing_system_7: là phần mềm giao tiếp của họ Zynq
7000 ở phần PS. Như đã trình bày ở phần trước, kit phát triển
Zynq ZC706 thuộc họ Zynq 7000, được thiết kế bao gồm
phần xử lý PS và phần logic PL nhằm cung cấp giải pháp



20
linh hoạt và mở rộng SoC trên một die riêng lẻ. Khi đó, lõi IP
processing_system_7 hoạt động như là một kết nối logic giữa
PS và PL, trong khi người lập trình có thể tùy biến thêm các
lõi IP tự phát triển thông qua phần mềm ISE hoặc Vivado.


axi_ethernet: lõi IP mô tả Ethernet MAC ở 3 chế độ
10/100/1000 Mb/s; hỗ trợ các giao tiếp MII, GMII, SGMII,
RGMII và 1000BASE-X để kết nối với chip PHY. Ngoài ra
còn có hỗ trợ các tính năng kiểm tra checksum UDP/TCP, bỏ
qua VLAN, tagging hay bật chế độ lọc các gói tin multicast.



traffic_man: Lõi IP phân luồng dữ liệu.



gmii_to_rgmii: Là lõi IP của Xilinx, cung cấp chuẩn giao tiếp
RGMII (Reduced Gigabit Media Independent Interface) giữa
chip PHY và bộ điều khiển Gigabit Ethernet của họ Zynq
7000. Các chân ngõ ra GMII sẽ được nối đến lõi axi_ethernet
ở trên.



myclkgen: là lõi IP tạo ra clock chung cho cả hệ thống với
nhiều tần số khác nhau.


Hình 4.6: Kết nối lõi IP và các thành phần vào hệ thống


21

Hình 4.7: Kết quả của quá trình tạo file bitstream
3.11. Kết luận chƣơng
Chương này đã trình bày kết quả mô phỏng lõi IP Phân luồng
dữ liệu trên phần mềm Modelsim và quá trình thực hiện trên kit phát
triển Zynq ZC706 của hãng Xilinx. Đồng thời, xây dựng một hệ
thống bao gồm lõi IP phân luồng dữ liệu cùng với các lõi ngoại vi
cần thiết khác, được điều khiển bởi vi xử lý MicroBlaze trong môi
trường XPS-EDK của Xilinx. Hoàn thành việc tạo ra netlist và file
bitstream nạp xuống board Zynq ZC706.
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Kết luận
Với những kết quả đạt được, có thể thấy việc thiết kế và thực
hiện lõi IP phân luồng dữ liệu trên nền FPGA đã đáp ứng các yêu cầu
của đề tài như sau:


22


Phân tích các chức năng của một khối phân luồng dữ liệu, các
thuật toán được ứng dụng trong chức năng lập lịch. Từ đó, xây
dựng được các sơ đồ khối chức năng, thuật toán xử lý cho toàn
bộ lõi IP.




Sử dụng được ngôn ngữ mô tả phần cứng Verilog HDL để mô
tả lõi IP phân luồng dữ liệu.



Tổng hợp thành công lõi IP phân luồng dữ liệu bằng công cụ
Xilinx ISE 14.5.



Mô phỏng thành công hoạt động của lõi IP phân luồng dữ liệu
trên phần mềm Modelsim 10.2c.



Thực hiện nhúng lõi IP phân luồng dữ liệu vào hệ thống, tạo
file bitstream để nạp xuống kit phát triển Zynq ZC706.

Hƣớng phát triển đề tài


Nghiên cứu thêm các thuật toán lập lịch và chống tắc nghẽn có
hiệu suất tốt hơn.



Nghiên cứu các kỹ thuật tối ưu tài nguyên sử dụng cũng như
tăng tốc độ xử lý của lõi IP phân luồng dữ liệu.




Nghiên cứu ứng dụng vào các trường hợp cụ thể như chức
năng nâng cao chất lượng dịch vụ QoS, chức năng nối các gói
tin bị phân mảnh IP Reassembly trong các thiết bị mạng như
tường lửa (Firewall), bộ định tuyến (Router).
Tác giả cũng xin được gởi lời cảm ơn chân thành và sâu sắc

nhất đến người hướng dẫn khoa học Thầy giáo TS. Phan Trần
Đăng Khoa, người đã hướng dẫn cho tôi phương pháp làm việc khoa
học và tận tình giúp đỡ động viên tôi trong suốt quá trình thực hiện
luận văn này.


23
Xin được gởi lời cảm ơn chân thành đến Tập thể các Thầy Cô
giáo trong khoa Điện Tử Viễn Thông, trường Đại học Bách Khoa,
thuộc Đại học Đà Nẵng đã giúp đỡ và tạo điều kiện thuận lợi cho tác
giả trong suốt quá trình học tập và hoàn thành đề tài.
Tuy đã hết sức cố gắng, nỗ lực và đạt được những kết quả đáp
ứng mục tiêu nghiên cứu đặt ra, song chắc chắn không tránh khỏi
những thiếu sót trong quá trình thực hiện luận văn. Tác giả rất mong
nhận được những ý kiến đóng góp và trao đổi của người đọc để tiếp
tục hoàn thiện nghiên cứu của mình trong tương lai.


×