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 đ
Trang 1Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
ĐẠ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
Trang 2Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
ĐẠ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
Trang 3Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
Trang 4Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
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
Trang 5Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
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
Trang 6Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
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
Trang 7Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
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
Trang 8Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
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
Trang 9Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
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
Trang 10LỜ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
Trang 11chấ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
Trang 12Chươ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
Trang 13CHƯƠ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
Trang 14mả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
Trang 15Khố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,
Flip - Flop
Hình 1.2: Khối logic FPGA
Look Up Table (LUT)
4 input
output
S1 S2
Trang 16tù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
Trang 17Hì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
CLB
MUXF6 Slice
Trang 18cao của chip Mỗi một khối nhớ chính gồm bốn CLB cao và vì vậy mỗi IIE 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
Spartan-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)
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
CLKIN
CLKFB
Variable Delay Line
Control
Clock Distributio
n Network
CLKOUT
Trang 19và 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):
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
Trang 20hợ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
MÔ TẢ
SPECIFLCATION
MÔ TẢ THIẾT KẾ
MÔ PHỎNG CHỨC NĂNG TỔNG HỢP LOGIC HIỆU CHỈNH KẾT NỐI ÁNH XẠ MAPPING ĐẶT KHỐI ĐỊNH TUYẾN
NẠP HAY LẬP TRÌNH
BẢN VẼ NGÔN NGỮ HDL
MÔ PHỎNG CÔNG CỤ SYNT HE SYS PHÂN TÍCH THỜI GIAN
CÔNG CỤ ĐẶT KHỐI VÀ ĐỊNH TUYẾN
CÔNG CỤ CẤU HÌNH
Trang 21Mô 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
Trang 22Tổ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
Trang 23tiế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]
ư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
Trang 24Nế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ữ
Trang 25đượ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
Trang 26VHDL được phát triển như một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng nào Người thiết kế
có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất, và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác đã kể ra ở trên ta thấy VHDL có một số ưu điểm hơn hẳn các ngôn ngữ khác:
Tính công cộng: VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ
và hiện nay là một chuẩn của IEEE VHDL được hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống
Khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế: VHDL cho phép thiết kế bằng nhiều phương pháp Ví dụ: phương pháp thiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện có sẵn VHDL cũng hỗ trợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên
Tính độc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể chuyển thành các bản tổng hợp mạch khác nhau tùy thuộc công nghệ chế tạo phần cứng mới ra đời, nó có thể được áp dụng ngay cho các hệ thống đã thiết kế
Khả năng mô tả rộng: VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số cho đến mức cổng VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ thống con được mô tả chi tiết
Khả năng trao đổi kết quả: VHDL là một tiêu chuẩn được chấp nhận, nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL Các kết quả mô tả hệ thống có thể được trao đổi giữa các nhà thiết
Trang 27kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL Cũng như một nhóm thiết kế có thể trao đổi mô tả mức cao của các
hệ thống con trong một hệ thống lớn, trong đó các hệ thống con đó được thiết kế độc lập
Khả năng hỗ trợ thiết kế mức lớn và khả năng tái sử dụng lại các thiết kế: VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản
lý, thử nghiệm và chia sẻ thiết kế và nó cũng cho phép ta tái sử dụng lại các phần đã có sẵn
1.4.2 Cấu trúc mô hình hệ thống mô tả bằng VHDL
Trong phần này em giới thiệu sơ qua về cấu trúc khung cơ bản của VHDL khi mô tả cho một mô hình thiết kế thực Thông thường mô hình VHDL bao gồm
ba phần: Thực thể (entity), kiến trúc (architecture), các cấu hình, đôi khi ta sử dụng các gói (packages) và mô hình kiểm tra hoạt động của hệ thống (testbench).[15]
a) Thực thể (entity)
Đây là nơi chứa các khai báo thực thể (là các port giao tiếp giữa FPGA và các tín hiệu bên ngoài các port này được sử dụng như là lớp vỏ của kiến trúc thiết kế) và có thể bao gồm các tùy chọn “generic” là khai báo chung có thể dễ dàng sửa đổi khi cần
b) Kiến trúc (architecture)
Phần thứ hai trong mô hình VHDL là khai báo kiến trúc của chương trình Mỗi một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tương ứng VHDL cho phép tạo ra hơn một kiến trúc cho một thực thể Phần khai báo kiến trúc có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong
Trang 28hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống Tên của kiến trúc
là nhãn được đặt tùy theo người xử dụng Có hai cách mô tả kiến trúc của một
phần tử (hoặc hệ thống) đó là mô hình hoạt động (Behaviour) hay mô tả theo mô hình cấu trúc (Structure) Tuy nhiên một hệ thống có thể bao gồm cả mô tả theo
mô hình hoạt động và mô tả theo mô hình cấu trúc
c) Mô tả kiến trúc theo mô hình hoạt động
Mô hình hoạt động mô tả các hoạt động của hệ thống (hệ thống đáp ứng với các tín hệu vào như thế nào và đưa ra kết quả gì ở đầu ra) dưới dạng các cấu trúc ngôn ngữ lập trình bậc cao Cấu trúc đó có thể là PROCESS, WAIT, IF, CASE, FOR-LOOP…
d) Mô tả kiến trúc theo mô hình cấu trúc
Mô hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiều cấp cấu trúc, bắt đầu từ một cổng logic đơn giản đến xây dụng mô tả cho một hệ thống hoàn thiện Thực chất của việc mô tả theo mô hình cấu trúc là mô tả các phần tử con bên trong hệ thống và sự kết nối của các phần tử con đó Ví dụ: mô tả mô hình cấu trúc một flip-flop RS gồm hai cổng NAND có thể mô tả cổng NAND được định nghĩa tương tự như ví dụ cổng NOT, sau đó mô tả sơ đồ móc nối các phần tử NAND tạo thành trigo RS
e) Cấu trúc process
Process là khối cơ bản của việc mô tả theo hoạt động Process được xét đến như là một chuỗi các hoạt động đơn trong suốt quá trình dịch
Trang 29S: Mô hình cấu trúc B: Mô hình hoạt động S/B: Mô hình kết hợp Cấu trúc tổng quát
Trong đó các phần đặt trong dấu [ ] thì có thể có hoặc không
Trang 30- Process label: (nhãn lệnh) là tùy thuộc người lập trình đặt tên
- sensitive_lish: Danh sách các yếu tố kích thích hoạt động
f) Môi trường kiểm tra (testbench)
Một trong các nhiệm vụ rất quan trọng là kiểm tra bản mô tả thiết kế kiểm tra một mô hình VHDL được thực hiện bằng cách quan sát hoạt động của nó trong khi mô phỏng và các giá trị thu được có thể đem so sánh với yêu cầu thiết kế
Môi trường kiểm tra có thể hiểu như một mạch kiểm tra ảo, môi trường kiểm tra sinh ra các tác động lên bản thiết kế và cho phép quan sát hoặc so sánh kết quả hoạt động của bản mô tả thiết kế Thông thường thì các bản mô tả đều cung cấp
chương trình thử, nhưng ta cũng có thể tự xây dựng chương trình thử (testbench)
Mạch thử thực chất là sự kết hợp của tổng hợp nhiều thành phần Nó gồm ba thành phần: Mô hình VHDL đã qua kiểm tra, nguồn dữ liệu và bộ quan sát Hoạt động của mô hình VHDL được kích thích bởi các nguồn dữ liệu và kiểm tra tính đúng đắn thông qua bộ quan sát
Trong đó: DUT: (device under test) mô hình VHDL cần kiểm tra
Data Source (Stimuli Generator)
Generics
Hình 1.8: sơ đồ khối của testbench
Trang 31Observer: Khối quan sát kết quả
Data source: Nguồn dữ liệu (Khối tạo ra các tín hiệu kích thích)
và thường dễ đọc ở dạng biểu đồ, đặc biệt ở các mạch điện tử lớn.[6]
Verilog thường được dùng để mô tả thiết kế ở các dạng
Thuật toán (một số lệnh giống ngôn ngữ C như: if, case, for, while …)
Chuyển đổi thanh ghi (kết nối thành các biểu thức Boolean)
Các cổng kết nối (cổng: OR, AND, NOT …)
Uyển chuyển và độc lập với công nghệ
Cho phép tái sử dụng những thiết kế đã có sẵn
Mạch có thể được tổng hợp tự động từ đặc tả
Nhược điểm:
Trang 32 Chương trình tuần tự, bộ tổng hợp có thể sẽ thêm phần nhiều chi tiết cứng
Cần một bộ priority encoder
Có thể có trạng thái không xác định
Tạo ra nhiều trạng thái không dự định trước
Không tính trước được số phần tử phần cứng
1.4.4 Phương pháp kiểm tra trong Verilog
a) Kiểm tra mạch thực hiện đúng chức năng:
Lập kế hoạch kiểm tra tỉ mỉ (kiểm tra mạch lớn)
Kiểm tra ngẫu nhiên phức tạp và không chính xác
b) Kiểm tra tất cả các trường hợp:
Kiểm tra phân cấp
- Half_adder
- Full_adder
- Add_rca_4 cần kiểm tra 29 trường hợp
- Chọn một số trường hợp để kiểm tra các kết nối
- Add_rca_4 trong Add_rca_16
Kiểm tra theo chiều ngược với cây phân cấp thiết kế
Mạch cộng 16 bit cần kiểm tra 223 trường hợp
1.5 Môi trường lập trình cho FPGA
Hiện nay, có nhiều nhà cung cấp sản phẩm FPGA trên thị trường như Altear, Xilinx, Actel… Sản phẩm của mỗi nhà cung cấp lại có những ưu, nhược điểm riêng do các hãng đều sản xuất theo công nghệ riêng của mình Chính vì vậy mỗi
Trang 33hãng lại đưa ra một sản phẩm phần mềm riêng đi kèm làm thiết kế và nạp cho chip FPGA của hãng đó như của Altear là Quartis II, Actel có Actel Libero còn Xilinx
có ISE Trong phần này em xin giới thiệu một số phần mềm của các hãng sản xuất làm môi trường lập trình cho FPGA, qua đó em lựa chọn một phần mềm hỗ trợ để thực hiện luận văn của mình
1.5.1 Phần mềm ISE của hãng Xilinx
Hệ thống phần mềm ISE (Hình 1.9) của Xilinx là một môi trường thiết kế thích hợp bao gồm thiết kế chương trình, mô phỏng và thực hiện các thiết kế trên các thiết bị FPGA hay CPLD ISE có thể tham gia vào việc điều khiển mọi giai đoạn trong quy trình thiết kế Thông qua giao diện của ISE người dùng có thể can thiệp vào các thiết kế và sử dụng các công cụ thực hiện thiết kế ngoài ra người dùng còn có thể can thiệp vào các file hay tài liệu có liên quan đến project đang thiết kế [5]
Hình 1.9: Giao diện phần mềm ISE