BỘ GIÁO DỤC VÀ ĐÀO TẠO
NGUYỄN VĂN HÀO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-------------------------------------
LUẬN VĂN THẠC SĨ KHOA HỌC
KỸ THUẬT ĐIỆN TỬ
CƠNG NGHỆ FPGA VÀ PHƯƠNG PHÁP ĐỊNH LẠI
CẤU HÌNH TỪNG PHẦN CHO FPGA CỦA XILINX
NGUYỄN VĂN HÀO
2005 - 2007
Hà Nội
2007
HÀ NỘI 2007
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-------------------------------------
LUẬN VĂN THẠC SĨ KHOA HỌC
CÔNG NGHỆ FPGA VÀ PHƯƠNG PHÁP ĐỊNH LẠI
CẤU HÌNH TỪNG PHẦN CHO FPGA CỦA XILINX
NGÀNH : KỸ THUẬT ĐIỆN TỬ
MÃ SỐ :
NGUYỄN VĂN HÀO
Người hướng dẫn khoa học : TS. PHẠM NGỌC NAM
HÀ NỘI 2007
1
Danh Mục Các Ký Hiệu Và Chữ Viết Tắt
Từ viết tắt Nghĩa tiếng Anh
Nghĩa tiếng Việt
ASIC
Application Specific IC
IC ứng dụng chuyên biệt
ASSP
Application Specific Standard
Sản phẩm tiêu chuẩn ứng dụng
Product
chuyên biệt
BRAM
Block RAM
RAM khối
CLB
Configurable Logic Block
Khối lơgic lập trình được
CLK
Clock
Tín hiệu đồng hồ
CMOS
Complementary MOS
Công nghệ MOS cải tiến
CPLD
Complex Programmable Logic
Thiết bị lôgic lập trình được
Device
phức tạp
CPU
Central Processing Unit
Đơn vị xử lý trung tâm
DCI
Digitally Controlled Impedance Trở kháng được điều khiển số
DCM
Digital Clock Manager
Quản lý đòng hồ số
DDR
Double-Data-Rate
Tốc độ dữ liệu kép
DFS
Digital Frequency Synthesizer
Bộ tổng hợp tần số số
DLL
Delay-Locked Loop
Vịng khóa độ trễ
DRAM
Dynamic Random - Access
Bộ nhớ động truy xuất ngẫu
Memory
nhiên - còn gọi là RAM động
EDIF
Electronic Data Interchange
Format
EEPROM
Electrically erasable
Bộ nhớ chỉ đọc lập trình và xố
programmable read-only-
được bằng điện
memory
EPROM
Electrically Programmable Read- Bộ nhớ chỉ đọc lập trình và xố
Only-Memory
được
2
Từ viết tắt Nghĩa tiếng Anh
Nghĩa tiếng Việt
FPGA
Field-Programmable Gate Array
GAL
Generic Array Logic
HDL
Hardware Description Language Ngôn ngữ mô tả phần cứng
I/O
Input/Output
Vào/ Ra
IC
Integrated Circuit
Mạch tích hợp
IEEE
Institute of Electrical and
Hiệp hội các Kỹ sư Điện và
Electronic Engineers
Điện tử
IOB
Input/Output Block
Khối vào ra
ISE
Integrated Software Environment Mơi trường phần mềm tích hợp
LSI
Large Scale Integrated
Tích hợp mật độ lớn
LUT
Look-Up Table
Bảng dị tìm
MGA
Masked Gate Array
Ma trận cổng đã được mặt nạ
Lơgic ma trận chung
hố
MOS
Metal-Oxide-Silicon
Kim loại-Oxit-Silic
MSI
Medium Scale Integrated
Tích hợp mật độ trung bình
NCD
Native Circuit Description
NGC
Native Generic compiler
NGD
Native Generic Database
OTP
One-Time Programmable
Lập trình một lần
PAL
Programmable Array Logic
Lơgic ma trận lập trình được
PAR
Place And Route
Xếp đặt và định tuyến
PCF
Physical Constraints File
Tập tin ràng buộc vật lý
PLA
Programmable Logic Array
Ma trận logic lập trình được
PLD
Programmable Logic Device
Thiết bị logic lập trình được
PLICE
Programmable Low-Impedance Phần tử trở kháng thấp lập trình
Circuit Element
được
3
Từ viết tắt Nghĩa tiếng Anh
Nghĩa tiếng Việt
PROM
Bộ nhớ chỉ đọc lập trình được
Programmable Read-OnlyMemory
PS
Phase Shifter
Bộ dịch pha
RAM
Random-Access Memory
Bộ nhớ truy xuất ngẫu nhiên
ROM
Read Only Memory
Bộ nhớ chỉ đọc
SRAM
Static Random-Access Memory Bộ nhớ tĩnh truy xuất ngẫu
nhiên - còn gọi là RAM tĩnh
TTL
Transistor-Transistor Logic
Transistor-Transistor Logic
UCF
User Constraints File
Tập tin ràng buộc người dùng
VHDL
VHSIC Hardware Description
Ngôn ngữ mô tả phần cứng của
Language
mạch tích hợp tốc độ rất cao
Very High Speed Integrated
Mạch tích hợp tốc độ rất cao
VHSIC
Circuits
XST
Xilinx Synthesis Technology
Công nghệ tổng hợp của Xilinx
Danh Mục Các Bảng
Bảng.2.1: Tóm lược những thuộc tính của Spartan-3 FPGA........................... 19
Bảng 2.2: Các tín hiệu DFS.............................................................................. 32
Bảng 2.3: Các thuộc tính DFS.......................................................................... 32
Bảng 2.4: Các tín hiệu lôgic trạng thái............................................................. 34
Bảng 2.5: Bus các trạng thái DCM .................................................................. 34
Bảng 3.1. Mức ưu tiên của các toán tử trong VHDL ....................................... 50
4
Danh Mục Các Hình Vẽ, Đồ Thị
Hình 1.1: Các thành phần ứng dụng chuyên biệt ............................................... 3
Hình 1.2: Tiến trình phát triển các lơgic khả trình ............................................ 5
Hình 1.3: Cầu chì nghịch Actel .......................................................................... 7
Hình 1.4: Các giá trị điện trở của cầu chì nghịch với dịng lập trình 5mA ........ 7
Hình 1.5: Cấu tạo cầu chì nghịch kim loại – kim loại với 3 mức kim loại ........ 8
Hình 1.6: Giá trị điện trở cho cầu chì nghịch kim loại ...................................... 8
Hình 1.7: Phần tử cấu hình SRAM .................................................................... 9
Hình 1.8: Thực hiện các kết nối trong FPGA .................................................. 10
Hình 1.9: Transistor EPROM ........................................................................... 11
Hình 1.10: Phần tử lơgic SRAM ...................................................................... 12
Hình 1.11: Phần tử lơgic OTP .......................................................................... 12
Hình 1.12: Lưu đồ thiết kế FPGA của Xilinx .................................................. 14
Hình 2.1: Kiến trúc FPGA Spartan-3 ............................................................... 20
Hình 2.2: Sơ đồ khối I/O .................................................................................. 22
Hình 2.3: Sơ đồ sắp đặt các slice trong CLB ................................................... 23
Hình 2.4: Sơ đồ slice bên trái ........................................................................... 24
Hình 2.5: Các đường dữ liệu RAM khối .......................................................... 27
Hình 2.6: Sơ đồ bộ nhân cơ sở ......................................................................... 28
Hình 2.7: Các khối chức năng DCM và các tín hiệu liên kết .......................... 30
Hình 2.8: Sơ đồ chức năng của DLL ............................................................... 31
Hình 2.9: Mạng tín hiệu đồng hồ ..................................................................... 36
Hình 2.10: Các kiểu kết nối.............................................................................. 39
Hình 3.1: Ví dụ về mơ phỏng kiến trúc phần cứng .......................................... 45
Hình 3.2: Các thư viện thiết kế bằng VHDL ................................................... 47
Hình 4.1: Thiết kế với các mơ đun có thể định lại cấu hình ............................ 64
5
Hình 4.2: Cấu trúc thư mục cho thiết kế .......................................................... 65
Hình 4.3: Bus macro dùng cho các tín hiệu liên mơ đun ................................ 66
Hình 4.4: Trực quan thiết kế trong FPGA Editor ............................................ 71
Hình 4.5: Bus macro ........................................................................................ 73
Hình 4.6: Thực thi mức vật lý của bus macro .................................................. 74
Hình 4.7: Sơ đồ khối chức năng ....................................................................... 77
Hình 4.8: Sơ đồ nguyên lý khối số học ............................................................ 78
Hình 4.9: Kết quả tổng hợp cho mơ đun adder ................................................ 81
Hình 4.10: Các ràng buộc cho thiết kế top ....................................................... 83
Hình 4.11: Trực quan thiết kế top và top1 trong FPGA Editor ....................... 87
Hình 4.12: Thiết kế top .................................................................................... 90
Hình 4.13: Thiết kế top1 .................................................................................. 91
Hình 4.14: Kết quả mơ phỏng thiết kế ............................................................. 92
6
Mở Đầu
Vào khoảng năm 1985, cơng ty có tên gọi là Xilinx đã giới thiệu về
cơng nghệ FPGA, nó được xem như là một giải pháp thay thế cho các loại IC
tùy biến (custom IC). Với công cụ thiết kế được hỗ trợ bởi máy tính (CAD:
computer-aided design), những mạch thiết kế trên FPGA có thể được thực
hiện trong một thời gian tương đối ngắn mà không phải sử dụng bất kỳ một
cơng cụ chế tạo mạch tích hợp nào.
Với một thiết bị FPGA, cho phép thiết kế bất kỳ một mạch chức năng
từ đơn giản đến phức tạp của hệ thống mạch số và có thể thực hiện việc thay
đổi thiết kế dễ dàng. Rõ ràng với lợi ích mang lại từ công nghệ FPGA, tôi
nhận thấy việc ứng dụng và triển khai công nghệ FPGA là phù hợp ở Việt
Nam, trong khi ngành công nghiệp chế tạo IC chưa được phát triển mạnh.
Đề tài của luận văn " Cơng nghệ FPGA và phương pháp định lại cấu
hình từng phần cho FPGA của xilinx ". Với mục đích tìm hiểu về công nghệ
FPGA cũng như các công cụ hỗ trợ, phương pháp thiết kế định lại cấu hình
cho FPGA. Xem đây như là một cơ sở quan trọng để tiếp cận và ứng dụng
công nghệ thiết kế số và điều khiển số đầy tiềm năng và hiệu quả. Nội dung
của luận văn được trình bày trong bốn chương:
Chương 1: Giới thiệu công nghệ FPGA
Chương 2: Kiến trúc FPGA spartan-3 của xilinx
Chương 3: Ngôn ngữ mô tả phần cứng VHDL
Chương 4: Phương pháp định lại cấu hình từng phần cho FPGA
Do trình độ có hạn cả về chuyên môn cũng như ngoại ngữ, vấn đề mà
luận văn đề cập tới tương đối phức tạp, tài liệu phải tham khảo tương đối
rộng, nhiều chỗ vượt quá trình độ hiểu biết vẫn cịn có phần hạn chế của
người viết, nhất định trong luận văn không thể tránh khỏi có chỗ sơ sài hoặc
7
thiếu chính xác. Tơi rất mong nhận được những đóng góp và chỉ bảo của các
thầy cơ giáo và các bạn để luận văn hồn chỉnh hơn.
Trong suốt q trình nghiên cứu và thực hiện luận văn được sự hướng
dẫn trực tiếp của thầy TS. Phạm Ngọc Nam và sự giúp đỡ quý báu của các
thầy cô trong khoa ĐTVT và Trường ĐHBK Hà Nội.
Qua đây tôi xin chân thành cảm ơn thầy TS. Phạm Ngọc Nam đã tận
tình, chu đáo hướng dẫn tôi thực hiện tốt các nhiệm vụ đề tài đã đưa ra và
hoàn thành đúng kế hoạch. Tơi xin bày tỏ lịng biết ơn đến các thầy cô trong
khoa ĐTVT và trường ĐHBK Hà Nội về những kiến thức đã nhận được trong
thời gian học tại trường.
Hà Nội, Ngày 20 tháng 10 năm 2007
8
Chương 1:
GIỚI THIỆU CƠNG NGHỆ FPGA
Thiết bị lập trình được bao gồm các simple PLD (Programmable Logic
Device), CPLD (Complex Programmable Logic Device), và FPGA (FieldProgrammable Gate Array). Các thiết bị này đều có đặc điểm chung là dựa
trên cơ sở các cơng nghệ lập trình để cho phép việc lập trình và có thể lập
trình lại nhiều lần. Trong chương này sẽ đề cập đến những vấn đề cơ bản của
thiết bị lơgic lập trình được (PLD) và cơng nghệ lập trình FPGA.
1.1. Khái quát chung
Các thành phần ứng dụng chuyên biệt (Hình 1.1) bao gồm các fullcustom ASIC (Application Specific Integrated Circuit), các semi-custom
ASIC, và các IC (Integrated Circuit) lập trình được.
Hình 1.1: Các thành phần ứng dụng chuyên biệt
Các ASIC hoàn toàn tuỳ biến (full-custom ASIC) bao gồm một số (có
thể là tất cả) cell lơgic đã được tùy biến và tất cả các lớp mặt nạ cũng được
tùy biến. Khi đó việc tùy biến được tất cả các đặc tính của IC cho phép các
9
nhà thiết kế có thể tạo ra các mạch tương tự, tối ưu hoá được các phần tử nhớ,
hoặc tự tạo ra một IC tích hợp khác.
Các ASIC bán tùy biến (semi-custom ASIC) bao gồm tất cả các cell
lôgic đã được thiết kế trước (không thay đổi được) và một số (có thể là tất cả)
lớp mặt nạ đã được tùy biến. Khi đó việc sử dụng các cell lơgic từ một thư
viện có sẵn sẽ giúp cho cơng việc của các nhà thiết kế được dễ dàng hơn. Có
hai loại ASIC bán tùy biến: loại thứ nhất là ASIC dựa trên cơ sở các cell
chuẩn (standard-cell based ASIC) và loại thứ hai là ASIC dựa trên cơ sở là
các ma trận cổng (gate-array based ASIC).
Các IC lập trình được - đơi khi cịn được gọi là các ASIC lập trình được
- là loại IC gồm có các cell lơgic đã được thiết kế trước, và ngồi ra khơng có
lớp mặt nạ nào được tùy biến sẵn. Các IC này bao gồm các simple PLD,
CPLD và FPGA.
1.2. Lôgic lập trình được
Những thiết bị lơgic có thể được phân loại theo hai phạm trù là cố định
và lập trình được. Các mạch bên trong một thiết bị lôgic cố định sẽ thực hiện
một hoặc nhiều chức năng, và chúng khơng thể thay đổi được như các ASIC
truyền thống. Nói một cách khác, các thiết bị lơgic lập trình được có thể thay
đổi những phần đã được thiết kế sẵn để thực hiện các chức năng khác nhau.
Các thiết bị lơgic lập trình được PLD dựa trên cơ sở cơng nghệ bộ nhớ
viết lại được để thực hiện việc thay đổi thiết kế, và lập trình cho thiết bị. Tiến
trình phát triển của các PLD được minh họa trong hình 1.2. Phạm vi của
chúng bao gồm từ những thiết bị nhỏ với khả năng thực hiện một một số chức
năng lơgic cho đến các thiết bị FPGA, mà chúng có thể thực hiện toàn bộ lõi
của bộ xử lý cùng với một số thiết bị ngoại vi. Trong những thiết bị lơgic lập
trình được, có hai loại chính đang được quan tâm hiện nay: thiết bị lơgic lập
trình được phức tạp CPLD và thiết bị FPGA.
10
600 Gates
Programmable
Logic
Simple
PLDs
600 Gates
High-Capacity
PLDs
Segmented
Continuous
Interconnect
Interconnect
CPLDs
FPGAs
EPROM EEPROM FLASH
SRAM
Antifuse
EPROM EEPROM FLASH
SRAM
Hình 1.2: Tiến trình phát triển của thiết bị lơgic lập trình được
Các thiết bị lơgic lập trình được bắt đầu từ loại có dung lượng thấp nhất
là các simple PLD ( 600 cổng), chúng được biết như là các thiết bị PLD đơn
giản: PLA (Programmable Logic Array), PAL (Programmable Array Logic),
GAL (Generic Array Logic). Một simple PLD được tạo ra từ các macrocell đã
được kết nối với nhau. Các macrocell điển hình gồm có một vài mạch lơgic tổ
hợp như các cổng AND/OR và một phần tử Flip-Flop. Trong mỗi macrocell
có thể thực hiện một phương trình đại số Boole đơn giản.
Quá trình phát triển của các nhà sản xuất PLD đã tạo ra thiết bị có dung
lượng cao hơn và được gọi là thiết bị lơgic lập trình được phức tạp (CPLD).
Theo một khía cạnh nhất định, các CPLD được mô tả như một vài simple
PLD cùng với các kết nối lập trình được. Một CPLD cho phép thực hiện
nhiều phương trình lơgic hơn hoặc thiết kế phức tạp hơn các simple PLD.
Một thiết bị FPGA bao gồm một cấu trúc các cell lôgic và các kết nối.
Các thành phần này được cấu hình dựa trên cơ sở cơng nghệ lập trình RAM
tĩnh (SRAM) hoặc cầu chì nghịch (Antifuse). FPGA được xem là thiết bị có
khả năng ứng dụng rộng và có dung lượng cao nhất hiện nay trong số các thiết
bị lơgic lập trình được. Chúng có thể được sử dụng để thực hiện bất kỳ một
thiết kế phần cứng nào trong hệ thống mạch số.
11
1.3. Các cơng nghệ lập trình FPGA
Có nhiều cách thực hiện các phần tử lập trình, các cơng nghệ lập trình
hiện đang được sử dụng là RAM tĩnh (SRAM : Static Random-Access
Memory), cầu chì nghịch (Antifuse), EPROM (Electrically Programmable
Read-Only-Memory) và EEPROM (Electrically Erasable Programmable
Read-Only-Memory). Mặc dù các công nghệ lập trình khác nhau, nhưng tất cả
các phần tử lập trình đều có tính chất chung là có thể cấu hình được một trong
hai trạng thái ON hoặc OFF. Các phần tử lập trình được sử dụng để thực hiện
các kết nối lập trình được giữa các khối lơgic của FPGA. Một FPGA thơng
thường có thể có hơn 100.000 phần tử lập trình. Có thể tùy thuộc vào các ứng
dụng cụ thể mà các phần tử lập trình có thể có các đặc tính khác nhau. Về mặt
chế tạo, các phần tử lập trình nếu có thể chế tạo theo cơng nghệ CMOS chuẩn
là tốt nhất. Dưới đây sẽ trình bày chi tiết các cơng nghệ lập trình FPGA:
Các thiết bị lập trình cầu chì nghịch.
Cầu chì ngịch của Actel.
Một cầu chì nghịch có ngun lý ngược lại với cầu chì thơng thường.
Một cầu chì nghịch thường là một mạch hở cho đến khi ta đưa vào một dòng
điện lập trình qua nó (khoảng 5mA) với một điện thế giữa hai đầu cầu chì
thích hợp (18v). Dịng và áp này tạo ra một nhiệt lượng đủ nóng bên trong lớp
điện mơi làm nó nóng chảy và tạo ra một liên kết dẫn điện giữ các điện cực.
Các transistor chịu được điện thế cao được chế tạo bên trong FPGA để đáp
ứng cho dòng và áp đủ lớn. Cả hai lớp dưới cùng và trên cùng của cầu chì
nghịch được nối với các dây kim loại, khi được lập trình cầu chì nghịch sẽ tạo
ra một kết nối có trở kháng thấp (300 đến 500 ) giữa hai dây kim loại. Hãng
Actel gọi các cầu chì nghịch là các phần tử mạch điện có trở kháng thấp lập
trình được (PLICE : Programmable Low-Inpedance Circuit Element). Cấu tạo
của một cầu chì nghịch Actel được minh họa trong hình 1.3:
12
(a) Mặt cắt ngang.
(b) Cấu trúc các lớp cầu chì nghịch
+ Lớp điện môi ONO (Oxy-Nitơ-Oxy) cách điện, chiều dày nhỏ
hơn 10nm.
+ Lớp dưới mang điện tích dương.
+ Lớp trên là Poly-Silic
(c)Một cầu chì nghịch nhìn từ phía trên xuống giống như một cơng tắc.
Hình 1.3: Cầu chì nghịch Actel
Hình 1.4: Các giá trị điện trở của cầu chì nghịch với dịng lập trình 5mA
Diện tích các chíp sử dụng cơng nghệ cầu chì nghịch rất nhỏ so với các
cơng nghệ khác. Tuy nhiên, bù lại cần phải có khơng gian lớn cho các
transistor chịu được điện thế cao cần để giữ cho dịng và áp cao lúc lập trình.
Nhược điểm của cầu chì nghịch là quy trình chế tạo chúng cần phải thay đổi
so với quy trình chế tạo CMOS.
Để thiết kế và lập trình một FPGA sử dụng cơng nghệ cầu chì nghịch
Actel, người thiết kế thực hiện các bước thiết kế đầu vào và mô phỏng trên
máy tính. Khi thiết kế đã được hồn thiện theo đúng ý định, ta sẽ cắm chip
13
vào một socket trên một hộp lập trình chuyên dụng gọi là Activator, mà nó
phát ra điện áp lập trình. Sau đó sử dụng máy tính nạp tập tin cấu hình cho
Activator để thực hiện cấu hình cho các cầu chì nghịch cần thiết trên chip.
Nhược điểm của các chip lập trình sử dụng cơng nghệ cầu chì nghịch là
khơng thể lập trình trực tiếp trên bo mạch in.
Cầu chì nghịch kim loại - kim loại (Metal-Metal Antifuse)
Cấu tạo của một cầu chì nghịch kim loại - kim loại của QuickLogic
được gọi là ViaLink được minh họa trong hình 1.5:
Hình 1.5: Cấu tạo cầu chì nghịch kim loại - kim loại
Hình 1.6: Giá trị điện trở của cầu chì nghịch kim loại - kim loại
Nó tương tự như PLICE, tuy nhiên cầu chì nghịch ViaLink sử dụng
kim loại mức 1 cho lớp dưới cùng, một hợp kim Silic vô định hình cho lớp
giữa và kim loại mức 2 cho lớp trên cùng. Khi ở trạng thái khơng được lập
trình, một cầu chì nghịch có trở kháng cao (cỡ G), nhưng khi được lập trình
nó sẽ tạo ra một kết nối giữa hai lớp kim loại có trở kháng khoảng 80. Cầu
chì nghịch được chế tạo bằng cách thêm vào 3 mặt nạ đặc biệt trong quy trình
chế tạo CMOS thơng thường. Cầu chì nghịch Vialink được lập trình bằng
cách đặt một điện thế 10v giữa các đầu của nó, dịng điện lập trình khoảng
14
15mA, trạng thái của Silic vơ định hình sẽ thay đổi và tạo ra một liên kết dẫn
điện giữa hai lớp kim loại.
RAM tĩnh.
Cơng nghệ lập trình SRAM sử dụng cơng nghệ CMOS tiêu chuẩn. Một
phần tử cấu hình SRAM của Xilinx (Hình 1.7) được xây dựng từ hai cổng đảo
ghép ngược nhau. Các phần tử cấu hình SRAM điều khiển cực cổng của các
transistor khác trên chip - hoặc bật các transistor truyền dẫn cũng như các
cổng truyền dẫn để tạo một kết nối hoặc tắt để ngắt kết nối.
Q
Configuration
control
READ or
WRITE
Q
DATA
Hình 1.7: Phần tử cấu hình SRAM
Trong một FPGA sử dụng cơng nghệ lập trình SRAM, các kết nối
được thực hiện bằng các transistor truyền dẫn, các cổng truyền dẫn hoặc các
bộ dồn kênh. Những thành phần này được điều khiển bởi các phần tử SRAM
(Hình 1.8). Trường hợp transistor truyền dẫn và cổng truyền dẫn, các phần tử
SRAM sẽ điều khiển các cực cổng để bật hoặc tắt. Khi tắt giữa hai dây nối với
cổng truyền dẫn sẽ có một trở kháng rất cao, khi bật nó sẽ tạo một kết nối có
trở kháng thấp giữa hai dây nối. Đối với bộ dồn kênh, các phần tử SRAM sẽ
điều khiển ngõ nhập nào của bộ dồn kênh sẽ được kết nối với ngõ ra của nó.
Cách này thường dùng để kết nối tùy chọn từ một hay nhiều ngõ nhập của
một khối logic. Các bộ dồn kênh và các cổng truyền dẫn có thể được kết hợp
với nhau để tạo các kết nối giữa các khối lôgic trong FPGA.
15
transistor truyền
dẫn
Cổng truyền dẫn
Bộ dồn kênh
Dây nối
Dây nối
Dây nối Dây nối
Dây nối
SRAM
Cell
MUX
SRAM
Cell
SRAM
Cell
SRAM
Cell
Dây nối
Hình 1.8: Thực hiện các kết nối trong FPGA
Vì SRAM là bộ nhớ bay hơi, các FPGA sử dụng cơng nghệ SRAM
phải được cấu hình lại mỗi khi cấp nguồn cho chip. Điều này có nghĩa là hệ
thống sử dụng các chip này phải có một cơ chế lưu trữ thường trực cho các bit
của các phần tử SRAM, chẳng hạn ROM hay đĩa từ. Các bit của SRAM có
thể được nạp vào FPGA một cách tuần tự hay định địa chỉ như một phần tử
của mảng (theo cách thông thường của RAM). Nhược điểm của các chip được
thực hiện theo cơng nghệ SRAM có diện tích khá lớn, bởi vì cần ít nhất 5
transistor cho mỗi SRAM cũng như các transistor cần thêm cho cổng truyền
dẫn hay bộ dồn kênh. Ngược lại, ưu điểm chính của cơng nghệ này cho phép
FPGA có thể tái cấu hình ngay trên mạch rất nhanh và nó có thể chế tạo bằng
cơng nghệ CMOS chuẩn.
Cơng nghệ lập trình EPROM và EEPROM (Hình 1.9).
Các thiết bị lập trình EPROM có diện tích nhỏ gồm một hộp lập trình
chun dụng, chúng được lập trình ngồi mạch và có thể tái lập trình khơng
cần bộ nhớ ngồi. Tuy nhiên, các điện tử tiêu tốn năng lượng lớn, chúng có
16
nhiệt độ cao khi xóa. Do đó, thiết bị lập trình phải sử dụng tới các vật liệu
gốm đặc biệt làm tăng chi phí của hệ thống.
Hình 1.9: Transistor EPROM
Với điện áp lập trình VPP ( >12V ) cung cấp tới cực máng của transistor
EPROM, khi đó các điện tử có đủ năng lượng để nhảy vào cổng treo gate1.
Các điện tử ở cổng treo gate1 tăng lên làm tăng điện áp ngưỡng của transistor
EPROM và làm cho nó ngưng dẫn (khóa). Để xóa các transistor EPROM về
trạng thái ban đầu, sử dụng nguồn ánh sáng cực tím để cung cấp đủ năng
lượng cho các điện tử nhảy khỏi cổng treo gate1 cho phép transistor hoạt động
bình thường.
Việc lập trình các transistor EEPROM tương tự như lập trình các
transistor EPROM xóa được bằng tia cực tím, nhưng cơ chế xóa của chúng thì
khác nhau. Trong một transistor EEPROM, một trường điện từ được sử dụng
để chuyển các điện tử khỏi cổng treo của một transistor đã được lập trình.
Điều này giúp việc lập trình nhanh hơn và chip khơng cần phải lấy ra khỏi hệ
thống. Ngược lại, chúng lại tốn diện tích gấp đơi so với các transistor EPROM
và cần nhiều nguồn điện thế để tái lập trình mà các loại khác khơng cần.
1.4. Các kiểu FPGA của Xilinx
Có hai kiểu FPGA cơ bản là lập trình lại được dựa trên cơ sở SRAM và
lập trình một lần. Hai kiểu FPGA này khác nhau trong sự thực hiện của phần
tử lôgic và cơ chế được sử dụng để tạo những kết nối bên trong thiết bị.
17
FPGA có khả năng lập trình lại dựa trên cơ sở SRAM.
Các bít SRAM được sử dụng để tạo ra các kết nối.
Trong phần tử lôgic SRAM (Hình 1.10), thay vì các cổng lơgic truyền
thống thì một LUT (Look Up Table) xác định đầu ra dựa vào những giá trị
của những đầu vào, SRAM định nghĩa các lơgic trong bảng dị tìm LUT.
Hình 1.10: Phần tử lơgic SRAM
FPGA lập trình một lần (OTP : Once - Time Programmable) .
Loại cầu chì nghịch được dùng để tạo ra kết nối bền vững trong thiết bị.
Các phần tử lơgic là các cổng truyền thống (Hình 1.11).
Hình 1.11: Phần tử lơgic OTP
1.5. Ứng dụng của FPGA
FPGA có thể sử dụng trong hầu hết các ứng dụng hiện đang dùng
simple PLD, CPLD và các mạch tích hợp nhỏ. Dưới đây là 6 ứng dụng điển
hình của FPGA :
Các mạch tích hợp ứng dụng đặc biệt : FPGA là một phương tiện tổng
quát nhất để thực hiện các mạch logic số. Chúng đặc biệt thích hợp cho việc
18
thực hiện các ASIC.
Thiết kế mạch ngẫu nhiên : Mạch lôgic ngẫu nhiên thường được thực
hiện bằng PAL. Nếu tốc độ của mạch khơng địi hỏi khắc khe thì mạch có thể
thực hiện thay thế bằng FPGA.
Thay thế các chip tích hợp nhỏ cho mạch ngẫu nhiên : Các mạch hiện
tại trong các sản phẩm thương mại thường chứa nhiều chip SSI (Small Scale
Integration). Trong nhiều trường hợp các chip SSI này có thể được thay thế
bằng FPGA và kết quả là giảm diện tích của bo mạch đi đáng kể.
Chế tạo mẫu : FPGA rất lý tưởng cho các ứng dụng sản phẩm mẫu. Giá
thành thực hiện thấp, thời gian ngắn chính là ưu điểm rất lớn của FPGA.
Máy tính dựa trên FPGA : Một loại máy tính mới có thể được chế tạo
với các FPGA, có thể tái lập trình ngay trên mạch FPGA. Các máy tính kiểu
này có một bo mạch chứa các FPGA với các chân nối với các chip lân cận
giống như thơng thường.
Tái cấu hình phần cứng trực tuyến : FPGA cho phép có thể thay đổi
theo ý muốn cấu trúc của một máy đang hoạt động. Ứng dụng thích hợp nhất
là những FPGA có chuyển mạch lập trình được.
1.6. Quá trình thiết kế với FPGA
Quá trình thiết kế cho FPGA của Xilinx được thực hiện theo trình tự
các bước được mơ tả trong hình 1.12:
Thiết kế đầu vào và tổng hợp (Design Entry and Synthesis)
Trong bước này của luồng thiết kế, trước tiên thực hiện việc tạo ra một
thiết kế bằng việc sử dụng dạng sơ đồ hoặc mã HDL (Hardware Decription
Language). Trong trường hợp sử dụng kiểu mã HDL cho thiết kế đầu vào, thì
phải thực hiện quá trình tổng hợp tập tin HDL sang một tập tin theo định dạng
chuẩn EDIF (Electronic Data Interchange Format). Nếu sử dụng công cụ tổng
hợp XST (Xilinx Synthesis Technology), một tập tin netlist theo định dạng
19
NGC (Native Generic Compiler) được tạo ra, mà nó có thể được chuyển đổi
thành một tập tin EDIF. Trong suốt q trình tổng hợp, những thơng tin về
hành vi trong tập tin HDL được dịch sang một netlist câu trúc và thiết kế được
tối ưu cho kiến trúc thiết bị.
Design
Verifycation
Design Entry
Functional
Simulation
Design
Synthesis
Static Timing
Analysis
Design
Implementation
Otimization
FPGAs
- Mapping
- Placement
- Routing
Back
Annotation
Timing
Simulation
Bitstream
Generation
Download to a
Xilinx Device
In-Circuit
Verifycation
Hình 1.12: Lưu đồ thiết kế FPGA của Xilinx
Thực thi thiết kế (Design Implementation)
Trong bước này sẽ thực hiện chuyển đổi định dạng tập tin thiết kế lôgic
(định dạng EDIF) sang một định dạng tập tin vật lý và những thông tin vật lý
này được chứa trong tập tin định dạng NCD (Native Circuit Description). Sau
20
đó tập tin này được dùng để tạo ra một tập tin luồng bít lập trình cho thiết bị.
Các q trình được thực hiện trong bước này như sau :
Dịch (translating):
Quá trình này thực hiện tất cả các bước cần thiết để đọc một tập tin
netlist theo định dạng EDIF hoặc NGC và tạo ra một tập tin NGD (Native
Generic Database) mô tả thiết kế lôgic. Một thiết kế lôgic dưới dạng những
phần tử lôgic, như là các cổng AND, OR, các bộ giải mã, các flip-flop, bộ nhớ
RAM. Tập tin NGD được tạo ra từ việc chạy NGDBuild, bao gồm cả sự mô tả
lôgic của thiết kế và mô tả dưới dạng phân cấp được thể hiện trong netlist đầu
vào. Tập tin NGD này sẽ được dùng để ánh xạ vào tài nguyên của thiết bị.
Ánh xạ (Mapping):
Quá trình này thực hiện ánh xạ một thiết kế lơgic sang một thiết bị
FPGA đích. Đầu vào cho q trình này bao gồm một tập tin định dạng NGD
và các tập tin macro vật lý đã được xếp đặt và định tuyến. Chương trình MAP
thực hiện ánh xạ những lơgic đó vào các thành phần như các phần tử lôgic,
các phần tử I/O và những thành phần khác trong kiến trúc của thiết bị. Đầu ra
cho thiết kế là một tập tin định dạng NCD, nó mơ tả thiết kế vật lý đã được
ánh xạ vào các thành phần trong kiến trúc thiết bị. Tập tin NCD sau đó được
sử dụng cho quá trình xếp đặt và định tuyến.
Xếp đặt và định tuyến (Placing and Routing):
Sau khi tạo ra một tập tin NCD đã được ánh xạ, có thể bắt đầu thực
hiện việc xếp đặt và định tuyến tập tin này bằng việc sử dụng công cụ xếp đặt
và định tuyến tự động. Chương trình PAR (Place and Route) sử dụng đầu vào
là tập tin NCD để thực hiện xếp đặt và định tuyến cho thiết kế. Và sau đó tạo
ra một tập tin định dạng NCD đã được xếp đặt và định tuyến, nó sẽ được sử
dụng để tạo luồng bít lập trình cho thiết bị. Q trình xếp đặt và định tuyến
được thực hiện như sau :
21
Xếp đặt (Placing)
Chương trình PAR thực hiện qua nhiều giai đoạn cho việc sắp xếp. Nó
thực hiện ghi vào tập tin NCD sau khi các giai đoạn được hoàn thành. Trong
suốt quá trình này, PAR thực hiện xếp đặt các thành phần vào những vị trí
dựa vào những yếu tố như các ràng buộc được chỉ rõ trong tập tin PCF
(Physical Constraint File), chiều dài của các kết nối, và những tài nguyên định
tuyến có sẵn. Đồng thời việc sắp xếp theo ràng buộc thời gian sẽ được thực
hiện tự động nếu có các ràng buộc thời gian trong tập tin ràng buộc vật lý.
Định tuyến (Routing)
Giai đoạn tiếp theo sẽ thực hiện việc định tuyến cho thiết kế đã được
xếp đặt. PAR sẽ thực hiện ghi vào tập tin NCD khi thiết kế hoàn toàn được
định tuyến. Tại thời điểm này, thiết kế có thể được phân tích tính tốn thời
gian. Một tập tin NCD mới sẽ được viết khi việc định tuyến được hồn thiện.
Q trình định tuyến thực hiện một quy trình tập trung về một cách giải quyết
để định tuyến thiết kế hoàn toàn và đạt được các ràng buộc thời gian. Việc
định tuyến theo ràng buộc thời gian tự động được thực hiện nếu có các ràng
buộc thời gian trong tập tin ràng buộc vật lý.
Lập sơ đồ mặt bằng (Floorplanning)
Việc lập sơ đồ mặt bằng là quá trình xác định rõ các ràng buộc xếp đặt
của người dùng. Các công cụ Floorplanner và PACE cung cấp một giao diện
đồ họa cho việc xếp đặt, trong khi FPGA Editor cung cấp giao diện đồ họa
cho cả sự xếp đặt và định tuyến. Cả hai cơng cụ này có thể được dùng trước
hoặc sau q trình PAR để phân tích hoặc ràng buộc cho thiết kế.
Tạo ra luồng bít (Bitstream Generation)
Sau khi thiết kế đã được định tuyến hồn tồn, chương trình BitGen sử
dụng tập tin NCD đã được định tuyến để tạo ra một tập tin luồng bít cấu hình
cho thiết bị. Tập tin bít nhị phân này bao gồm tất cả các thơng tin cấu hình từ
22
tập tin NCD và các thông tin chuyên biệt về thiết bị từ những tập tin khác liên
quan đến thiết bị đích. Dữ liệu nhị phân trong tập tin này được tải xuống các
phần tử nhớ của thiết bị FPGA để thực hiện việc cấu hình.
Kiểm tra thiết kế (Design Verification)
Kiểm tra thiết kế là quá trình kiểm tra chức năng và sự thực hiện của
thiết kế. Quá trình kiểm tra thiết kế có thể bắt đầu ngay sau khi thiết kế đầu
vào và được lặp lại trong các bước thực thi thiết kế. Kiểm tra thiết kế có thể
được thực hiện theo những cách như sau :
Mô phỏng chức năng nhằm mục đích xác định chức năng mạch lôgic
trong thiết kế trước khi thực hiện trên thiết bị. Q trình mơ phỏng chức năng
sẽ khơng tính đến các độ trễ thành phần hoặc kết nối, do đó nó có thể được
thực hiện ngay sau khi thiết kế đầu vào.
Mô phỏng thời gian là để kiểm tra hoạt động của thiết kế dưới những
điều kiện khác nhau. Quá trình này được thực hiện sau khi thiết kế đã được
xếp đặt và định tuyến. Vì tại thời điểm này, tất cả các độ trễ của thiết kế đã
được xác định, khi đó q trình mơ phỏng thời gian mới cho kết quả đúng.
Phân tích thời gian tĩnh được thực hiện cho một thiết kế đã được xếp
đặt và định tuyến. Quá trình này sẽ thực hiện kiểm tra thiết kế theo các ràng
buộc thời gian và liệt kê các vi phạm về ràng buộc thời gian. Đồng thời việc
phân tích thời gian tĩnh cũng cho phép xác định các độ trễ đường dẫn trong
thiết kế.
Kiểm tra trên mạch là quá trình thực hiện sau cùng để kiểm tra thiết kế
thực hiện như thế nào trong ứng dụng cụ thể trên thiết bị FPGA. Sau khi
luồng bít của thiết kế được tạo ra, tiến hành lập trình cho thiết bị FPGA và bắt
đầu kiểm tra việc thực hiện chức năng của thiết kế trên mạch.
23
Kết luận chương 1
Trong nội dung chương này đã trình bày một cách khái quát về các vấn
đề cơ bản của cơng nghệ FPGA, bao gồm tiến trình phát triển của lơgic lập
trình được, các cơng nghệ lập trình FPGA, quá trình thiết kế cơ bản cho
FPGA….Phần này được xem như là cơ sở cho việc thực hiện những chương
sau, chương tiếp theo sẽ trình bày chi tiết kiến trúc một FPGA điển hình của
Xilinx là Spartan-3.