Tải bản đầy đủ (.pdf) (67 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.33 MB, 67 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

/>

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 tiê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

/>

III
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

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

/>

IV
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
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

V
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

Nghĩa tiếng anh

FPGA

: Field-Programmable Gate Array

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 Description 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

/>

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 tính, máy tính 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 tính năng cao cấp và
mạnh mẽ. Với việc tích 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 tìm 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 thức. Ví dụ:
Ethernet hoặc SONET/SDH. Tùy thuộc vào firmware đƣợc tải xuống FPGA. Tính


2
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.
Phần đặt vấn đề trình bày ý nghĩa, mục tiêu, tính cấp thiết của đề tài luận
vă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 tiế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 tích 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 accumulation,
MAC), thuật ngữ tiếng anh là DSP slice dùng cho những ứng dụng xử lý tín 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

output
S1

4 input
Look Up
Table
(LUT)

S SE
D T

Q

D


S2
C

END

R CLR Q
Clock

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,


7
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ử
tích 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.


8
CLB
Slice
MUXF6
LUT

LUT

MUXF5
Slice
LUT


LUT

MUXF5

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


9
cao của chip. Mỗi một khối nhớ chính gồm bốn CLB cao và vì vậy mỗi SpartanIIE có 8 CLB cao sẽ chứa hai khối nhớ trên mỗi cột và tổng cộng có bốn khối.
Delay-locked loop (DLL)
Delay-locked loop đƣợc kết hợp với mỗi bộ đệm đầu vào clock toàn cục và
là một vòng khóa độ giữ chậm số DLL mà nó loại trừ đƣợc sự lệch giữa bộ đệm
đầu vào clock và các chân đầu vào clock bên trong thiết bị. bộ DLL giám sát toàn
bộ clock đầu vào và clock đƣợc phân phối, tự động điều chỉnh phần tử giữ chậm
clock. DLL cung cấp các pha vuông 900 của clock nguồn mà có thể nhân đôi, hoặc
chia bới cho hệ số 1.5, 2, 2.5, 3, 4, 5, 8 hoặc 16 ( Hình 1.4).


CLKIN

Variable
Delay Line

CLKOUT

Clock
Distributio
n Network

CLKFB

Control

Hình 1.4: Sơ đồ khối của khối lặp xóa độ giữ chậm
Altera là hãng đầu tiên giới thiệu LUT khả phân (Fracturable Look-Up
Table – LUT có khả năng phân chia thành các cấu hình LUT nhỏ hơn) với 8 ngõ
vào trong họ Stratix II năm 2004. Lõi của nó là các mô-đun logic thích nghi ALM
(Adaptive Logic Module) 8 ngõ vào nhƣng có thể thực thi nhƣ một LUT 6 ngõ vào
đầy đủ hoặc lựa chọn các chức năng 7 ngõ vào. [4]
ALM còn có thể đƣợc phân chia hiệu quả thành các LUT nhỏ hơn và độc lập
với nhau. Nhƣ vậy, sẽ cung cấp các lợi điểm về hiệu xuất đối với các LUT lớn hơn


10
và hiệu quả về diện tích khi dung các LUT nhỏ hơn. Dòng Stratix còn trội hơn các
FPGA khác nhờ định tuyến thông qua các kết nối MultiTrack, cung cấp khả năng
kết nối tốt nhất trong công nghiệp.

Vào thời điểm năm 2006 Altera tự hào tuyên bố kiến trúc FPGA của họ đi
trƣớc ít nhất mội thế hệ và kiến trúc định tuyến bên trong FPGA thì đi trƣớc hai thế
hệ so với các đối thủ.
Chìa khóa của cấu trúc hiệu xuất cao và hiệu quả về diện tích chính là kết
cấu logic của ALM. ALM bao gồm mạch tổ hợp, hai thanh ghi, hai bộ cộng nhƣ
hình minh họa sau (Hình 1.5):

1
2
3
ALM 4
Input 5
6
s
7
8

Combinational Logic

ALM
Register
Adder

Regout (0)
Combout (0)

Adder

Regout (1)
Register


Combout (1)

LUT khả phân 8 ngõ vào

2 bộ cổng

2 thanh ghi

Hình 1.5: Sơ đồ khối “Mô đun logic thích nghi” ALM
Phần mạch tổ hợp có tám ngõ vào và một LUT có khả năng chia thành hai
LUT thích nghi (ALUT – Adaptive LUT) nhỏ sử dụng công nghệ LUT. Một ALM
toàn vẹn đƣợc dung để thực hiện một chức năng 6 ngõ vào bất kỳ, nhƣng vì nó có
đến 8 ngõ vào đƣa đến khối logic tổ hợp nên một ALM có thể thực hiện các kết


11
hợp khác nhau của hai chức năng. Sau đây là bảng mô tả thể hiện tính linh động
của ALM.
1.2.

Quy trình thiết kế FPGA tổng quát

Quy trình này đƣợc trình bày tại Hình 1.6

QUY TRÌNH THIẾT KẾ FPGA
QUÁ TRÌNH

NHIỆM VỤ


CÔNG CỤ
BẢN VẼ

MÔ TẢ THIẾT KẾ
NGÔN NGỮ HDL
MÔ TẢ
SPECIFLCATION

MÔ PHỎNG CHỨC NĂNG

MÔ PHỎNG

TỔNG HỢP LOGIC

CÔNG CỤ
SYNT HE SYS

HIỆU CHỈNH KẾT NỐI

PHÂN TÍCH THỜI
GIAN

ÁNH XẠ MAPPING
THỰC THI
IMPLEMENTATION

ĐẶT KHỐI
ĐỊNH TUYẾN

CẤU HÌNH

CONFIGURATION

NẠP HAY LẬP TRÌNH

Hình 1.6: quy trình thiết kế FPGA

CÔNG CỤ ĐẶT
KHỐI VÀ ĐỊNH
TUYẾN

CÔNG CỤ CẤU
HÌNH


12
Mô tả ban đầu về thiết kế
Khi xây dựng một chip khả trinh FPGA với ý nghĩa dành cho một ứng dụng
riêng biệt, xuất phát từ ứng dụng thực tiễn cuộc sống sẽ đặt ra yêu cầu thiết kế IC
thực hiện tối ƣu nhất những ứng dụng đó. Bƣớc đầu của quy trình thiết kế này có
nhiệm vụ tiếp nhận các yêu cầu của thiết kế và xây dựng nên kiến trúc tổng quát
của thiết kế. [8]
Mô tả thiết kế: Trong bƣớc này từ những yêu cầu của thiết kế và dựa trên
khả năng của công nghệ hiện có, ngƣời thiết kế kiến trúc sẽ xây dựng nên toàn bộ
kiến trúc tổng quan cho thiết kế và mô tả đƣợc những vấn đề chủ yếu sau:
Thiết kế những khối nào?
Mỗi khối có chức năng gì?
Hoạt động của thiết kế và của mỗi khối ra sao?
Phân tích các kỹ thuật sử dụng trong thiết kế.
Các công cụ và phần mềm hỗ trợ thiết kế.
Một thiết kế có thể đƣợc mô tả sử dụng ngôn ngữ mô tả phần cứng nhƣ

VHDL hay Verilog HDL hoặc có thể mô tả qua bản vẽ mạch. Một thiết kế có thể
vừa bao gồm bản vẽ mạch mô tả sơ đồ khối chung, vừa có thể dung ngôn ngữ HDL
để mô tả chi tiết cho các khối trong sơ đồ.
Mô phỏng chức năng (Function simulation): Sau khi mô tả thiết kế, ngƣời
thiết kế cần mô phỏng tổng thể thiết kế về mặt chức năng để kiểm tra thiết kế có
hoạt động đúng với chức năng yêu cầu.


13
Tổng hợp logic (Logic Synthesis): Tổng hợp logic là quá trình tổng hợp các
mô tả thiết kế thành sơ đồ bố trí mạch (netlist). Quá trình chia thành hai bƣớc:
chuyển đổi các mã RTL, mã HDL thành mô tả dƣới dạng các biểu thức đại số
Boolean và dựa trên các biểu thức này kết hợp với thƣ viện tế bào chuẩn sẵn có để
tổng hợp nên một thiết kế tối ƣu.
Hiệu chỉnh kết nối (Datapath Schematic): nhập netlish và các ràng buộc về
thời gian vào một công cụ phân tích thời gian (time analysic). Công cụ phân tích
này sẽ tách rời tất cả các kết nối của thiết kế, tính thời gian trễ của các kết nối dựa
trên các ràng buộc. Dựa trên kết quả phân tích (report) của công cụ phân tích, xác
định các kết nối không thỏa mãn về thời gian. Tùy theo nguyên nhân dẫn đến
không thỏa mãn mà ta có thể viết lại mã và tiến hành lại tổng hợp logic hoặc hiệu
chỉnh lại các rang buộc.
Quá trình thực thi (Device Implementation): Ta đã có sơ đồ bố trí Netlist
mô tả tổng thể thiết kế các mức cổng (chỉ gồm các cổng logic cơ bản và các mạch
logic khác nhƣ: MUX). Quá trình này sẽ đặt sơ đồ Netlist này lên chip. Quá trình
thực thi gồm các bƣớc:
-

Ánh xạ (mapping): chuẩn bị dữ liệu đầu vào, xác định kích thƣớc các

khối. Các khối sẽ phải phù hợp với cấu trúc của một tế bào cơ bản của

FPGA và đặt chúng vào các vị trí tối ƣu cho việc chạy dây.
-

Đặt khối định tuyến (Place & Route):

Đặt khối: đặt các khối ánh xạ vào các tế bào (cell) ở vị trí tối ƣu cho việc
chạy dây.
Định tuyến: Thực hiện nối dây các tế bào. Để thực hiện điều này ta cần các
thông tin sau: các thông tin vật lý về thƣ viện tế bào, kích thƣớc, các đặc điểm kết
nối, định thời, các trở ngại trong khi đi dây. Một netlist đƣợc tổng hợp sẽ chỉ ra chi


14
tiết các instance và mối quan hệ kết nối bao gồm cả đƣờng dẫn bị hạn chế trong
thiết kế. Tất cả các yêu cầu trong tiến trình cho các lớp kết nối, bao gồm các luật
thiết kế cho các lớp chạy dây, trở kháng, điện dung, tiêu thụ năng lƣợng và các luật
về sự dẫn điện trong mỗi lớp.
Quá trình nạp và lập trình (Download and Program): Sau quá trình thực
hiện, thiết kế cần đƣợc nạp vào FPGA dƣới dạng dòng bit (bit Stream).
Quá trình nạp thiết kế (Download) vào FPGA thƣờng nạp vào bộ nhớ bay
hơi, ví dụ nhƣ SRAM. Thong tin cấu hình sẽ đƣợc nạp vào bộ nhớ. Dòng bít đƣợc
truyền lúc này sẽ mang thông tin định nghĩa các khối logic cũng nhƣ kết nối của
thiết kế. Tuy vậy, cần lƣu ý SRAM sẽ mất dữ liệu khi mất nguồn nên thiết kế sẽ
không lƣu đƣợc đến phiên làm việc kế tiếp. [1]
Lập trình (Program) là thuật ngữ để miêu tả quá trình nạp chƣơng trình cho
các bộ nhớ không bay hơi, ví dụ nhƣ PROM. Nhƣ vậy thông tin cấu hình vẫn sẽ
đƣợc lƣu giữ khi mất nguồn. [11]
So sánh FPGA và ASIC và các vi mạch bán dẫn khác:
ASIC (Application-Specific Integrated Circuit) là một mạch IC đƣợc thiết kế
dành cho một ứng dụng cụ thể.

FPGA cũng đƣợc xem nhƣ một loại vi mạch bán dẫn chuyên dụng ASIC,
nhƣng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế
trên thƣ viện logic thì FPGA không đạt đƣợc mức độ tối ƣu nhƣ những loại này, và
hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp. Tuy vậy FPGA
ƣu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế đơn
giản, chi phí giảm, rút ngắn thời gian đƣa sản phẩm vào sử dụng.


15
Nếu so sánh FPGA với các dạng vi mạch bán dẫn lập trình đƣợc dung cấu
trúc mảng phần tử logic nhƣ PLA, PAL, CPLD thì FPGA ƣu việt hơn nhƣ: Tác vụ
tái lập trình thực hiện đơn giản hơn, khả năng lập trình linh động, kiến trúc cho
phép chứa khối lƣợng lớn các cổng logic (logic gate) so với các vi mạch bán dẫn
lập trình đƣợc có trƣớc nó.
Thiết kế hay lập trình cho FPGA đƣợc thực hiện chủ yếu bằng các ngôn ngữ
mô tả phần cứng HDL nhƣ VHDL, Verilog, AHDL, các hãng sản xuất FPGA lớn
nhƣ Xilinx, Altera thƣờng cung cấp các gói phần mềm và thiết bị phụ trợ cho quá
trình thiết kế. cũng có một số các hãng thứ ba cung cấp các gói phần mềm kiểu này
nhƣ Synopsys, Synplify… các gói phần mềm này có khả năng thực hiện tất cả các
bƣớc của toàn bộ quy trình thiết kế IC chuẩn với đầu vào và mã thiết kế trên HDL
(còn gọi là mã RTL).
1.3.

Ứng dụng của FPGA

Ứng dụng của FPGA bao gồm: Xử lý tín hiệu số DSP, các hệ thống hàng
không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ
thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã
học, mô hình phần cứng máy tính...
Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp

những bài toán phức tạp mà trƣớc kia chỉ thực hiện nhờ phần mềm máy tính, ngoài
ra nhờ mật độ cổng logic lớn FPGA đƣợc ứng dụng cho những bài toán đòi hỏi
khối lƣợng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực.
1.4.

Một số ngôn ngữ lập trình cho PFGA

Có nhiều ngôn ngữ có thể lập trình cho FPGA nhƣ VHDL, Verilog, C, …
Mỗi ngôn ngữ lại có ƣu điểm và nhƣợc điểm riêng. Ví dụ nhƣ Verilog là ngôn ngữ


16
đƣợc phát triển và sử dụng chủ yếu ở Mỹ. Đây là ngôn ngữ rất gần với C, chính vì
vậy sẽ rất thuận tiện cho ai đó đã quen với lập trình ngôn ngữ C. Ở châu Âu thì
ngƣời ta lại quen dùng VHDL hơn, ƣu điểm của ngôn ngữ này giúp ngƣời làm việc
với nó sẽ có cái nhìn rất thấu đáo về phần cứng.
Trong phần này tôi xin giới thiệu vài nét, khái quát về ngôn ngữ VHDL và
Verilog. Đây cũng là các ngôn ngữ rất thông dụng đối với lập trình FPGA hiện
nay.
1.4.1. Ngôn ngữ VHDL
VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là
một loại ngôn ngữ mô tả phần cứng đƣợc phát triển dung cho chƣơng trình VHSIC
(Very High Speed Itergrated Circuit) của bộ quốc phòng Mỹ. Mục tiêu của việc
phát triển VHDL là có đƣợc một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và
thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn, cũng nhƣ cho phép dễ
dàng đƣa các hệ thống đó vào ứng dụng trong thực tế. Ngôn ngữ VHDL đƣợc ba
công ty IBM, Intermetics, Texas Instruments bắt đầu nghiên cứu và phát triển vào
tháng 7 năm 1983. Phiên bản đầu tiên đƣợc công bố vào tháng 8 năm 1985. Sau đó
VHDL đƣợc đề xuất tổ chức IEEE xem xét thành một tiêu chuẩn chung. Năm 1987
đã đƣa ra tiêu chuẩn về VHDL (tiêu chuẩn IEEE-1076-1987).[3],[7]

VHDL đƣợc phát triển để giải quyết các khó khăn trong việc phát triển, thay
đổi và lập tài liệu cho các hệ thống số. Nhƣ ta đã biết, một hệ thống số có rất nhiều
tài liệu mô tả. Để có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu kỹ
lƣỡng tài liệu đó. Với việc mô phỏng phần cứng tốt việc xem xét các tài liệu mô tả
trở nên dễ dàng hơn vì bộ tài liệu đó có thể đƣợc thực thi để mô phỏng hoạt động
của hệ thống . nhƣ thế ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt
động trong một mô hình thống nhất.


×