Tải bản đầy đủ (.doc) (87 trang)

Nghiên cứu công nghệ FPGA và ứng dụng xử lý nhanh dữ liệu

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.1 MB, 87 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGUYỄN QUANG HUY

NGHIÊN CỨU CÔNG NGHỆ FPGA
VÀ ỨNG DỤNG XỬ LÝ NHANH DỮ LIỆU

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên, tháng 08 năm 2015

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGUYỄN QUANG HUY

NGHIÊN CỨU CÔNG NGHỆ FPGA
VÀ ỨNG DỤNG XỬ LÝ NHANH DỮ LIỆU
Chuyên ngành : Khoa học máy tính
Mã Số

: 60 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC


TS. Vũ Duy Linh

Thái Nguyên, tháng 08 năm 2015

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

I

LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu do chính tôi thực hiện.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được
ai công bố trong bất kỳ công trình nào khác.
Thái nguyên, ngày 30 tháng 8 năm 2015
Tác giả

Nguyễn Quang Huy

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

II
LỜI CẢM ƠN
Trước tên tôi muốn gửi lời cảm ơn đến thầy giáo TS. Vũ Duy Linh, người
trực tiếp hướng dẫn tôi thực hiện luận văn này. Tôi cũng mong muốn bày tỏ lòng
biết ơn đến các thầy, cô giáo Viện Công Nghệ Thông Tin và Khoa Công Nghệ Thông
Tin – Đại học Thái Nguyên đã tận tình dạy dỗ và tạo mọi điều kiện học tập thuận
lợi cho tôi trong suốt khóa học qua.

Tôi xin gửi lời cảm ơn đến gia đình, đặc biệt là bố mẹ, anh, chị và vợ tôi
những người luôn hết mình yêu thương, dùi dắt và ủng hộ tôi trong cuộc sống.
Cuối cùng tôi xin cảm ơn ban lãnh đạo Công ty TNHH Giải Pháp Công Nghệ
ITS Việt Nam, các anh chị em đồng nghiệp đã tạo điều kiện cho tôi tham gia và
hoàn thành khóa học. Tôi xin cảm ơn các bạn của tôi, những người luôn bên
cạnh động viên, giúp đỡ và đóng góp nhiều ý kiến thiết thực trong quá trình
học tập và thực hiện luận văn./.
Thái Nguyên, ngày 30 tháng 8 năm 2015
Sinh Viên Thực hiện

Nguyễn Quang Huy

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

3

MỤC LỤC
LỜI CAM ĐOAN ............................................................................................... I
LỜI CẢM ƠN .................................................................................................... II
MỤC LỤC ........................................................................................................ III
DANH MỤC HÌNH ............................................................................................V
BẢNG CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU.................................................... VI LỜI
MỞ ĐẦU..................................................................................................... 1
CHƯƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ FPGA VÀ ỨNG DỤNG .......... 4
1.1. Lịch sử ra đời của FPGA .............................................................................. 4
1.2. Quy trình thiết kế FPGA tổng quát............................................................. 11
1.3. Ứng dụng của FPGA .................................................................................. 15
1.4. Một số ngôn ngữ lập trình cho PFGA ........................................................ 15

1.4.1. Ngôn ngữ VHDL .................................................................................... 16
1.4.2. Cấu trúc mô hình hệ thống mô tả bằng VHDL....................................... 18
1.4.3. Ngôn ngữ Verilog ................................................................................... 22
1.4.4. Phương pháp kiểm tra trong Verilog ...................................................... 23
1.5. Môi trường lập trình cho FPGA.................................................................... 23
1.5.1. Phần mềm ISE của hãng Xilinx .............................................................. 24
1.5.2. Phần mềm Quartus II của hãng Altear.................................................... 27
CHƯƠNG 2: CÔNG NGHỆ FPGA VÀ BÀI TOÁN XỬ LÝ NHANH DỮ LIỆU
.. ....................................................................................................................... 30
2.1. Các thế mạnh của các ngôn ngữ đặc tả phần cứng .......................................
30


4

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

5

2.2. Các kỹ thuật xử lý nhanh dữ liệu .................................................................. 31
2.3. Kỹ thuật Pipeline trong công nghệ FPGA .................................................... 33
2.4. Tổ chức Pipeline trong lập trình cho FPGA ................................................. 35
2.5. Pipeline cho bài toán nhân 2 số trên FPGA .................................................. 36
CHƯƠNG 3: ỨNG DỤNG FPGA XỬ LÝ NHANH DỮ LIỆU........................ 42
3.1. Lựa chọn công cụ thử nghiệm...................................................................... 42
3.2. Bài toán nhân 2 số nguyên đơn giản ............................................................
45
3.3. Bài toán nhân 2 số nguyên sử dụng kỹ thuật Pipeline .................................

48
3.4. Đánh giá kết quả .......................................................................................... 55
KẾT LUẬN ...................................................................................................... 56
TÀI LIỆU THAM KHẢO ................................................................................. 57

DANH MỤC HÌNH
Hình 1.1: Cấu trúc tổng thể một FPGA
Hình 1.2: Khối logic FPGA


6

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

7

Hình 1.3: Bộ dồn kênh F5 và F6
Hình 1.4: Sơ đồ khối của khối lặp xóa độ giữ chậm
Hình 1.5: Sơ đồ khối “Mô đun logic thích nghi” ALM
Hình 1.6: Quy trình thiết kế FPGA
Hình 1.7: Cấu trúc process
Hình 1.8: Sơ đồ khối của testbench
Hình 1.9: Giao diện phần mềm ISE
Hình 1.10: Các lựa chọn tạo Project với Virtex4
Hình 1.11: Thiết lập thời gian đếm tiến, lùi cho counter
Hình 1.12: Giao diện phần mềm Quartus II
Hình 2.1: Kỹ thuật Pipeline
Hình 2.2: Mô hình tổ chức Pipeline

Hình 2.3: Phép nhân 2 số A x B = Y
Hình 2.4: Thực thi phép nhân 2 số A x B = Y Hình
2.5: Pipeline cho phép nhân 2 số A x B = Y
Hình 2.6: Mô hình Pipeline cho phép nhân 2 số A x B = Y
Hình 2.7: Pipeline cho phép nhân 2 số A x B = Y
Hình 3.1: Tạo Project mới
Hình 3.2: Lựa chọn ngôn ngữ VHDL
Hình 3.3. Thiết kế bộ nhân 2 số
Hình 3.4. Kết quả thực hiện 250 x 15 = 3750
Hình 3.5: Các tham số input, output của LPM_MULT
Hình 3.6: Kết quả thực hiện phép nhân 250 x 15 = 3750
BẢNG CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU
Từ viết tắt
FPGA

Nghĩa tiếng anh
: Field-Programmable Gate Array


8

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

VI
DSP

: Digital Signal Processing


RAM

: Ramdom Access Memory

ROM

: Read – only Memory

DLL

: Delay Locked Loop

ADC

: Analog-to-Digital Converter

ASIC

: Application-Specific Integrated Circuit

CPLD

: Complex Programmable Logic Device

DAC

: Digital - to - Analog Converter

DRAM


: Dynamic Ramdom Access Memory

EEPROM

: Electrically Erasable Programmable Read – Only Memory

FIFO

: First In First Out

HDL

: Hardware Descripton Language

I/O

: Input/Output

LAB

: Logic Array Block

LUT

: Look Up Table

PLA

: Programmable Logic Array SPLD


: Simple Programmable Devices SRAM

:

Static Ramdom Access Memory
VHDL

: VHSIC hardware description language

VHSIC

: Very High Speed Itergrated Circuit


Số hóa bởi Trung tâm Học liệu - ĐHTN

VI

/>

1

LỜI MỞ ĐẦU
Thế kỷ 21 là thế kỷ công nghệ thông tin và kĩ thuật số với sự phát triển và
ứng dụng rộng rãi của các bộ vi xử lý. Bằng việc đưa sức mạnh kỹ thuật số vào
thực tiễn, các bộ vi xử lý ngày một thay đổi cách sống của loài người. Các vật
dụng như máy tnh, máy tnh bảng, điện thoại,... của chúng ta đang ngày
càng thông minh hơn, mạnh mẽ và nhanh hơn nhờ các bộ vi xử lý. Trong đó công
nghệ FPGA xuất hiện như một giải pháp cơ bản cho vấn đề tranh thủ thời gian để
đưa ra thị trường và tránh rủi ro tài chính trong quá trình nghiên cứu sản phẩm

của công nghệ điện tử. FPGA là loại thiết bị khả trình (PLD) tiên tiến nhất hiện nay
của nghành công nghệ chế tạo IC chuyên biệt mà vẫn được gọi là ASIC.
Với sự phát triển của công nghệ thông tin như hiện nay thì việc nghiên cứu
về công nghệ FPGA và ứng dụng xử lý dữ liệu nhanh ngày càng được qua tâm
hơn. FPGA mới nhất hiện đang được biết đến với rất nhiều tnh năng cao cấp và
mạnh mẽ. Với việc tch hợp thêm một số lượng lớn các thiết bị logic lập trình được
cũng như bộ nhớ với dung lượng lên tới Megabits, FPGA có thể hỗ trợ các nhân xử
lý, DSP, và nhiều bộ thu phát nhúng với tốc độ tới hàng gigabit/s. [11]
Sự ra đời của rất nhiều bộ thu phát tốc độ cao trong một FPGA có một ý
nghĩa rất lớn. “các I/O tốc độ cao ra đời đánh dấu một cột mốc rất lớn đối
với chúng ta”. Các bộ thu phát tốc độ Gigabit, được ghép nối với các tài nguyên xử
lý dồi dào. Giờ đây có thể giải quyết các ứng dụng với tốc độ truyền cao hơn
rất nhiều. Các nhà sản xuất thiết bị nhận thấy rằng FPGA hấp dẫn bởi nhiều
nguyên nhân. Nó đem lại cho thiết bị sự linh hoạt và khả năng tùy biến cao và đó
là thuộc tính quan trọng mà các hãng tm kiếm nhằm mang đến sự khác biệt cho
sảm phẩm và giúp đưa sản phẩm tới thị trường nhanh hơn. FPGA có thể tùy biến
linh động, một FPGA cùng với một bộ thu phát quang cho phép hỗ trợ nhiều giao


2

thức. Ví dụ: Ethernet hoặc SONET/SDH. Tùy thuộc vào firmware được tải xuống
FPGA. Tính


3

chất linh hoạt như vậy sẽ tránh được việc phải thay đổi các bộ thu phát quang
hoặc thậm chỉ cả card đường dây.
Chính vì vậy, yêu cầu lựa chọn, so sánh, đánh giá các công nghệ FPGA và

ứng dụng xử lý dữ liệu nhanh là một đề tài mang ý nghĩa khoa học và thực
tiễn cao. Với lý do đó, tôi lựa chọn đề tài “Nghiên cứu công nghệ FPGA và ứng
dụng xử lý nhanh dữ liệu” cho luận văn tốt nghiệp Thạc Sỹ của mình.
Đối tượng và phạm vi nghiên cứu
Công nghệ FPGA: các lĩnh vực ứng dụng, các công cụ phát triển
Kỹ thuật xử lý nhanh dữ liệu Pipeline.
Ứng dụng bài toán mô phỏng xử lý dữ liệu nhanh.
Những nội dung nghiên cứu chính
- Tổng quan về công nghệ FPGA
- Công nghệ FPGA và bài toán xử lý nhanh dữ liệu
- Xây dựng ứng dụng thử nghiệm
Nội dung của luận văn bao gồm phần đặt vấn đề, 3 chương và kết luận, tài
liệu tham khảo.


4

Phần đặt vấn đề trình bày ý nghĩa, mục têu, tnh cấp thiết của đề tài
văn. luận
Chương 1 của luận văn trình bày nội dung nghiên cứu tổng quan về công
nghệ FPGA, các khả năng của công nghệ này, các lĩnh vực ứng dụng, các công cụ
phát triển trên FPGA với các dòng sản phẩm của Xlinx và Altera.


3

Chương 2 của luận văn trình bày các cách tếp cận xử lý nhanh dữ liệu, kỹ
thuật Pipeline, cách thức tổ chức và xây dựng chương trình Pipeline cho bài
toán xử lý nhanh phép nhân 2 số nguyên lớn.
Chương 3 thực hiện xây dựng chương trình thử nghiệm, nhân 2 số nguyên

trên 2 chip họ Flex10 và Stratix, từ đó so sánh và thấy được khả năng xử lý nhanh
khi dùng kỹ thuật Pipeline.
Phần Kết luận của luận văn trình bày tóm tắt các kết quả đạt được và định
hướng phát triển của luận văn trong các nghiên cứu tiếp theo.


4

CHƯƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ FPGA VÀ ỨNG DỤNG
FPGA là viết tắt của (Field-Programmable Gate Array) là vi mạch dùng cấu
trúc mảng phần tử logic cho phép người thiết kế lập trình thay đổi các thiết kế của
mình [6],[7].
Vi mạch FPGA được cấu thành từ các bộ phận:
Các khối logic cơ bản lập trình được (logic block).
Hệ thống mạch liên kết lập trình được.
Khối vào/ra (IO Pads).
Phần tử thiết kế sẵn khác như DSP Slice, RAM, ROM, nhân vi xử lý…
Ưu điểm:
- Có thể tái cấu trúc lại khi đang sử dụng, tác vụ tái lập trình thực hiện
đơn giản.
- Công đoạn thiết kế đơn giản, khả năng lập trình linh động.
- Chi phí thấp, rút ngắn thời gian đưa vào sử dụng.
- Có khả năng chứa khối lượng lớn cổng logic (logic gate)
- Linh hoạt và tốc độ xử lý nhanh.
1.1. Lịch sử ra đời của FPGA
Năm 1984 Ross Freeman là người đầu tiên thiết kế PFGA và cũng là người
sáng lập công ty Xilinx. Kiến trúc mới của FPGA cho phép tích hợp số lượng lớn các
phần tử bán dẫn vào một vi mạch so với kiến trúc trước đó là CPLD. FPGA có khả
năng chứa từ 100.000 đến vài tỷ cổng logic, trong khi CPLD chỉ chứa từ
10.000 đến 100.000 cổng logic, con số này đối với PAL vá PLA còn thấp hơn rất

nhiều chỉ đạt vài nghìn đến 10.000 cổng logic.
CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple
Programable devices) (Thuật ngữ chung chỉ PAL, PLA). SPLD thường là một


5

mảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượng
hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả
năng thực hiện những hàm phức tạp và thông thường hiệu xuất làm việc của vi
mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán.
Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic nhỏ hơn
nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa
nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử
logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA
phức tạp hơn nhiều so với CPLD. Một điểm khác biệt với CPLD là trong những
FPGA hiện đại được tch hợp nhiều những bộ logic số học đã sơ bộ tối ưu hóa hỗ
trợ RAM, ROM tốc độ cao, hay các bộ nhân cộng (multication and accumulaton,
MAC), thuật ngữ tếng anh là DSP slice dùng cho những ứng dụng xử lý tn hiệu số
DSP.
Ngoài khả năng tái cấu trúc vi mạch toàn cục, FPGA hiện tại còn hỗ trợ tái
cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thường
cho các bộ phận khác.
Cấu trúc tổng thể của một FPGA được minh họa ở Hình 1.1.

I/O
logic block
Programmable
Interconnect
Hình 1.1: Cấu trúc tổng thể một FPGA



6

Khối logic FPGA


7

S1

4 input
Look Up
Table
(LUT)

Clock

S SE
D

Q

D

output

S2
C END


R CLR Q
Flip - Flop

Hình 1.2: Khối logic FPGA
Phần tử chính của FPGA là các khối logic (logic block). Khối logic được cấu
thành từ LUT và một phần tử nhớ đồng bộ flip-flop.
Khối vào/ra (IO)
Khối vào/ra nhiều hay ít là tùy thuộc vào từng loại FPGA. Chúng có thể
được kết nối với các thiết bị bên ngoài như LED, USB, RAM … tùy theo mục đích sử
dụng.
LUT (Look up table) là khối logic có thể thực hiện bất kỳ hàm logic nào từ
bốn đầu vào, kết quả của hàm này tùy thuộc vào mục đích mà gửi ra ngoài khối
logic trực tiếp hay thông qua phần tử nhớ flip-flop. Nếu nhìn cấu trúc tổng
thể mảng LUT thì ngoài bốn đầu vào kể trên còn hỗ trợ thêm hai đầu vào bổ
sung từ các khối logic phân bố trước và sau nó nâng tổng số đầu vào của LUT lên 6
chân. Cấu trúc này nhằm tăng tốc các bộ số học logic.
Hệ thống mạch liên kết là khối chuyển mạch của FPGA. Mạng liên kết
trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và đứng,


tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác
nhau. Ví dụ, trong XC4000 của Xilinx có ba loại kết nối: ngắn, dài và rất dài. Các
đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được
(programmable switch), trong một khối chuyển mạch chứa một số lượng
nút chuyển lập trình được đảm bảo cho các dạng liên kết phức tạp khác nhau.
Các phần tử tích hợp sẵn
Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử
tch hợp thêm khác nhau. Ví dụ: công cụ SoPC Builder của hãng Altera khai thác
kiến trúc (System Interconnect Fabric) công nghệ tạo ra các kết nối của SoPC
Builder dùng các nguồn tài nguyên logic bên trong FPGA tích hợp các thành phần

vào hệ thống để phát triển các thiết kế. Ngoài các thành phần thường có trong
một SoPC như CPU nhúng, bộ điều khiển SDRAM, bộ điều khiển SRAM, bộ
điều
khiển chuyển tiếp mạng, UART … [8],[9]


Có hai loại FPGA cơ bản: Loại SRAM (Static Random Access Memory) có
thể
Arithmetic Logic
Bộ dồn kênh F5IN ở trong mỗi slice được kết hợp các đầu ra, bộ tạo chức
năng được chỉ ra như trong Hình 1.3.



CLB
Slice
MUXF6
LUT
LUT

Slice
LUT
LUT

Hình 1.3: Bộ dồn kênh F5 và F6
Sự kết hợp này sẽ đưa ra hoặc một bộ tạo hàm mà nó có thể thực thi bất kỳ
5 đầu vào chức năng hoặc một bộ dồn kênh 4:1 hoặc các chức năng được chọn
lựa của chin đầu vào. Tương tự, bộ dồn kênh F6 kết hợp các đầu ra của bốn
bộ tạo chức năng trong CLB bằng việc chọn một trong hai đầu ra của bộ dồn
kênh F5. Điều này cho phép thực thi bất kỳ một hàm 6 đầu vào, một bộ dồn kênh

8:1, hoặc chức năng được chọn lựa lên đến 19 đầu vào.
Block RAM
Họ Spartan-IIE của Xilinx hợp nhất một vài bộ nhớ RAM theo khối thành
khối lớn hơn (gọi là Select RAM+), có nghĩa cần phải bổ sung thêm các LUT
RAM đã được dung. Kiến trúc bộ nhớ không bền vững này được thực hiện trong
các CLB. Các khối bộ nhớ RAM Block chúng được tổ chức theo các cột. Hầu hết
họ Spartan-IIE có chứa hai cột như nhau, mỗi một cột được bố trí dọc theo chiều
đứng. Họ XC2S400E có bốn cột RAM khối, mỗi cột này được kéo dài hết chiều


×