You are on page 1of 160

C3: CÔNG NGHỆ FPGA

Design of Digital Integrated Circuits

Giảng viên: TS. Nguyễn Phương Huy


Bộ môn Kỹ thuật Điện tử
Khoa Điện tử
Trường ĐH Kỹ thuật công nghiệp
10/05/2022 1
Nội dung

3.1. Tổng quan về ASIC/ASIP


3.2. Tổng quan về FPGA
3.3. Cấu trúc FPGA
3.4. Quá trình lập trình FPGA
3.5. FPGA của Xilinx
3.6. FPGA của Altera
3.7. Thực hiện FPGA
3.7.1. Với Altium Designer và Kit NBSDK01
3.7.2. Với Quatus II và Kit Cyclone IVE
3.7.3. Với ISE và Kit Spartan VI 2
3.1. Tổng quan về ASIC/ASIP
1.1 Giới thiệu

 ASIC: Application Specific Integrated Circuit


 ASIP: Application Specific Instruction set Processor
(Bộ xử lý có tập lệnh chuyên dụng)
 Đặc điểm
- Thực hiện các chức năng mạch mà bằng các linh kiện tiêu
chuẩn khác không thực hiện được.
- Cải thiện các tham số thiết bị điện tử.
- Giảm trọng lượng, kích thước, công suất tiêu thụ và nâng cao
độ tin cậy của thiết bị.
10/05/2022 3
3.1. Tổng quan về ASIC/ASIP

1.1 Giới thiệu

Quá trình hình thành và phát triển của các thiết bị logic

10/05/2022 4
3.1. Tổng quan về ASIC/ASIP
1.2 Phân loại
 IC đặt hàng toàn bộ (Full Custom đi sâu tới mức thiết kế transistor)
 IC theo cơ sở cell chuẩn  IC theo cơ sở ma trận cổng

 IC lập trình được – PLD (SPLD,CPLD,FPGA)


10/05/2022 5
Full Custom
 Best size, power, performance
 Hand design
 Horrible time-to-market/flexibility/NRE cost…
 Reserve for the most important units in a processor
 ALU, Instruction fetch…
 Physical design tools
 Less optimal, but faster…
Semi-Custom

 Gate Array
 Array of prefabricated gates
 “place” and route
 Higher density, faster time-to-market
 Does not integrate as well with full-custom

 Standard Cell
 A library of pre-designed cell
 Place and route
 Lower density, higher complexity
 Integrate great with full-custom
3.1. Tổng quan về ASIC/ASIP
1.3 Quá trình thiết kế ASIC
1) Đặc tả thiết kế và thiết kế bằng ngôn ngữ mô tả phần cứng
2) Tổng hợp logic dùng HDL và các công cụ tổng hợp khác để mô tả
các thành phần và các kết nối của chúng
3) Chia hệ thống thành các khối nhỏ hợp lý.
4) Giả lập để kiểm tra chức năng mạch.
5) Sắp xếp các khối xử lý, các cell
6) Định vị các khối xử lý, các cell
7) Định tuyến, tạo kết nối, đi dây giữa các cell và các khối.
8) Trích mạch, tính giá trị điện trở, điện dung của các kết nối.
9) Kiểm tra, giả lập chức năng lại khi tính tới cả Rs, Cs trong các kết
nối.
10/05/2022 8
3.1. Tổng quan về ASIC/ASIP
1.3 Quá trình thiết kế ASIC

10/05/2022 9
3.2. Tổng quan FPGA
2.1 Giới thiệu

 RCC : Reconfigurable Computing (thay đổi được chức năng


tính toán RAM, ROM, PLA, PAL)
 Thiết bị RCC hiện đại nhất là FPGA
 FPGA : Field Programmable Gate Array (mạch tích hợp cỡ
lớn dùng cấu trúc mảng phần tử logic mà người dùng có
thể lập trình được)
 Field : “in the field”
 Programmable : “Re-Configurable” Change Logic Functions
 Gate Array : reference to ASIC internal architecture

10/05/2022 10
3.2. Tổng quan FPGA
(Xilinx.com) Field-Programmable Gate Arrays (FPGAs) are
semiconductor devices that are based around a matrix of configurable
logic blocks (CLBs) connected via programmable interconnects. FPGAs
can be reprogrammed to desired application or functionality
requirements after manufacturing.
- Công nghệ IC lập trình mới nhất và tiên
tiến nhất hiện nay.
- Quá trình tái cấu trúc IC có thể được
thực hiện bởi người dùng cuối
- Công nghệ cho phép hiện thực hóa các
thiết kế số với chi phí và thời gian hợp lý
- Công nghệ đủ mạnh để đáp ứng đa số các
ứng dụng cơ bản, thay thế các chip ASIC
chuyên dụng
- Công nghệ cho phép mở ra các giải pháp
kỹ thuật mới cho các hệ xử lý truyền thống,
thay thế bằng các hệ có khả năng tái cấu
hình mềm dẻo.
10/05/2022 11
3.2. Tổng quan FPGA
2.1 Giới thiệu

10/05/2022 12
3.2. Tổng quan FPGA
2.2 Quá trình phát triển
 FPGA ra đời vào những năm 1980 và bắt đầu phát triển
rực rỡ từ thập kỷ trước
 Là khoảng nối giữa các thiết bị logic có thể lập trình được
đơn giản và ASIC bán chuyên biệt
PLDs ASICs

SPLDs
The Gate Arrays
GAP
CPLDs Structured ASICs*

Standard Cell

Full Custom

*Not available circa early 1980s


10/05/2022 13
3.2. Tổng quan FPGA
2.2 Quá trình phát triển
 Các thiết bị logic thế hệ trước
 Thiết bị Logic đơn giản ( “gắn” các IC với nhau)
 Lập trình lại (tia UV, điện)
 Rẻ, dễ lập trình, nhiều biến thể (VD thực hiện logic theo ‘Sum of
Products’ ) a b c
Predefined link
Programmable link
PLDs a & b & c
&

Programmable
a & c

OR array
&
!b & !c
&

SPLDs CPLDs a !a b !b c !c

l
Predefined AND array w x y
w = (a & c) | (!b & !c)
x = (a & b & c) | (!b & !c)
PROMs PLAs PALs GALs etc.
y = (a & b & c)

10/05/2022 14
3.2. Tổng quan FPGA
2.2 Quá trình phát triển
 PROM
 Mask-Programmable Chip: chỉ do duy nhất nhà sản xuất lập trình
 Field-Programmable Chip: do người sử dụng cuối cùng lập trình.
 Erasable Programmable Read-Only Memory (EPROM)
 Electrically Erasable Programmable Read-Only Memory EEPROM): có thể xoá
và lập trình lại được nhiều lần

 PLA (Programmable Logic Array): khả chuyển, linh hoạt và mềm dẻo
hơn, dùng được với các thiết kế có độ phức tạp cao hơn.
 PAL/GAL (Programmable Array Logic/Generic Array Logic): linh hoạt
cao, nhanh và rẻ hơn so với PLA.
3.2. Tổng quan FPGA
2.2 Quá trình phát triển

 Simple PLDs =PLD


3.2. Tổng quan FPGA
2.2 Quá trình phát triển
 CPLD
 Tích hợp nhiều PAL lên 1 chip và xây dựng ma trận kết nối giữa
các PAL với nhau hình thành nên một dòng chip gọi là Complex
PLD (CPLD).
3.2. Tổng quan FPGA
2.2 Quá trình phát triển
 FPGA
 Cấu thành từ các khối
logic (Logic Block) dưới
dạng ma trận, nối với
nhau thông qua hệ
thống các kênh kết nối
lập trình được. Hệ thống
này còn kết nối với các
cổng giao tiếp IO_PAD
của FPGA
3.2. Tổng quan FPGA
 FPGA vs CPLD
FPGA SPLD&CPLD

Integration Very high (Up to 2 Millions gates) Small, medium (~max 1024 Macroclls)

Architechture Matrix (chess-board) “Wings” with center GIM

Conf. technology Field-programmable (Violated) PROM, E2PROM-technology (non-


violated)
Application Large class Small class

Element cell Logic block Macrocell

Speed Vary (low) Determined (may be faster)

Resource High in logic High in memory


3.2. Tổng quan FPGA
 FPGA vs ASIC
FPGA ASIC
Integration Very high (Up to 2 Millions -
gates)
Complexity (design Low Very High
cost)
Cost for small Low High
quantity
Cost for small High Low
quantity
Application Large class Any problems
Performance (for Average Optimum
same application)
Speed 100-500Mhz Up to several Ghz
Time to market Several months Several years
3.2. Tổng quan FPGA
2.3 Ứng dụng của FPGA

So sánh ưu điểm, nhược điểm của ASIC và FPGA


3.2. Tổng quan FPGA
2.4 Cấu trúc và phân loại
 Theo kích thước đơn vị xử lý
 Coarse-grained có một số CLB lớn dùng để thực thi một số hàm phức
tạp, có yêu cầu tính toán lớn.
 Fine grained: chỉ gồm các CLB nhỏ thực thi các chức năng đơn giản.

 Theo kiến trúc xử lý


 FPGA có ma trận đối xứng
 FPGA có cấu trúc dòng
 PLD phân cấp
 Sea-of-gate
3.2. Tổng quan FPGA
2.4 Cấu trúc và phân loại

Phân loại FPGA theo kiến trúc xử lý


3.2. Tổng quan FPGA
2.5 Các công nghệ chế tạo FPGA
 Công nghệ Static RAM (Xilinx)
 Ưu điểm: cho phép cấu hình lại mạch dễ dàng
 Nhược điểm: dung lượng chip phụ thuộc vào công nghệ chế tạo RAM,
không ổn định, cần có PROM kèm theo, cần nhiều không gian
 Một số sản phẩm: Xilinx LCA, Altera FLEX, AT&T ORCA.
3.2. Tổng quan FPGA
2.5 Các công nghệ chế tạo FPGA
 Công nghệ Static RAM (Xilinx)
3.2. Tổng quan FPGA
2.5 Các công nghệ chế tạo FPGA
 Công nghệ Anti-Fuse (Quicklogic, Actel) :
 Ưu điểm: rẻ hơn so với công nghệ RAM, mật độ tích hợp cao, ổn định,
tiêu thụ năng lượng ít
 Nhược điểm: chỉ lập trình được 1 lần.

(a) mặt cắt chéo (b) mô hình (c) mỗi antifuse ứng với 1 tiếp điểm
3.2. Tổng quan FPGA
2.5 Các công nghệ chế tạo FPGA
 Công nghệ Metal-Metal Antifuse
 Điểm kết nối giờ đây không dựa vào sự khuyếch tán nữa mà thực
sự là các dây dẫn kim loại.
 Điện trở antifuse giảm, chỉ cỡ chục Ω.

(a) mặt cắt chéo (b) mô hình (c) mỗi antifuse ứng với 1 tiếp điểm
5.2. Tổng quan FPGA
2.5 Các công nghệ chế tạo FPGA
 Công nghệ EPROM / EEPROM (Altera)
 Giống như cách thức làm việc với bộ nhớ EPROM.
 Ưu điểm: có thể lập trình lại mà không cần bộ nhớ ngoài lưu trữ
cấu hình
3.2. Tổng quan FPGA
2.6 Lựa chọn FPGA phù hợp với thiết kế
1) Đưa ra ý tưởng về một bản thiết kế logic glue, từ đó ước lượng
được số lượng các CLB cần thiết cho thiết kế, chọn một thiết bị
phù hợp như 3S400, 2S300...
2) Dự kiến số lượng các chân I/O cần thiết.
3) Điện áp hoạt động. Các FPGA mới sử dụng mức điện áp thấp
LVTTL, LVCMOS, đòi hỏi phải chuyển đổi điện áp để tương thích
với điện áp TTL, cung cấp một hoặc nhiều vùng sử dụng đồng thời
đa mức điện áp.
4) Tốc độ FPGA
5) Tối ưu hoá thiết kế theo hướng ưu tiên tốc độ hay số phần tử logic
6) Khả năng tài chính.
3.2. Tổng quan FPGA
3.2.7. Thị trường FPGA
Công ty Kiến trúc Kiểu khối logic CN lập trình

Xilinx Symmetrical Array Look-up Table Static RAM

Actel Hierachical-PLD PLD Block EPROM

Altera Row-based Multiplexers-Based Anti-fuse

Plessey Sea-of-gates NAND-gate Static RAM

Plus Hierachical-PLD PLD Block EPROM

AMD Hierachical-PLD PLD Block EPROM

QuyckLogic Symmetrical Array Multiplexers-Based Anti-fuse

Algotronix Sea-of-gates Multiplexers-Based Gate Static RAM


3.3. Cấu trúc FPGA
3.1 Cấu trúc chung
 Các khối logic cấu hình được (CLB – Configurable Logic
Block), khối I/O (IOB), và các kết nối lập trình được
Configurable Logic
Block

I/O Block Connect


3.3. Cấu trúc FPGA
3.2 Khối logic lập trình được
 Mỗi CLB chứa một cặp Flip-Flop (FF), 2 khối thực hiện hàm 4
đầu vào độc lập với nhau và các bộ chọn kênh
 CLB được sắp xếp trong FPGA thành các hàng và các cột
3.3. Cấu trúc FPGA
3.2 Khối logic lập trình được
 Bộ thực hiện hàm (LUT)
 F,G thực thi các hàm 4 biến và đưa kết qua tính toán ra ngoài CLB hoặc
trở thành đầu vào cho LUT H.
 Nếu phép toán có nhiều hơn 4 biến, LUT H sẽ được sử dụng
3.3. Cấu trúc FPGA
3.3 Khối IO
 FPGA đã hỗ trợ rất nhiều cho các chuẩn ngoại vi
 Tương thích với mức điện áp TTL, CMOS, LVTTL… tuỳ theo
từng họ FPGA

Khối I/O của XC4000X


3.3. Cấu trúc FPGA
3.4 Các kết nối
 Dựa trên nguyên tắc chập 2 điểm nằm ở 2 lưới dẫn khác nhau, (Antifuse
EEPROM/EPROM)
 Kết nối trực tiếp: liên kết các CLB hoặc IOB kề nhau
 Kết nối dài: bỏ qua các SW
 Kết nối đa năng gồm các đoạn nằm ngang và các đoạn nằm dọc, nối các SW và
IOB
Kết nối đa năng Kết nối dài Kết nối trực tiếp

SW CLB SW CLB SW
3.4. Quá trình lập trình FPGA

1) Thiết kế bằng ngôn ngữ mô tả phần cứng


2) Giả lập chức năng bằng phần mềm
3) Phân tích tổng hợp thiết kế thành các phần tử logic cơ bản
4) Ánh xạ thiết kế lên một chip FGPA thực, sử dụng tài
nguyên được cung cấp của FPGA đó.
5) Định vị và định tuyến các phần tử thực hiện.
6) Nạp FPGA
3.5. FPGA của Xilinx
3.5.1. Các họ FPGA của Xilinx
 Các họ cũ
 XC3000, XC4000, XC5200
 Công nghệ cũ 0.5µm, 0.35µm and 0.25µm.
 Các họ thực thi cao
 Virtex (0.22µm)
 Virtex-E, Virtex-EM (0.18µm)
 Virtex-II, Virtex-II PRO (0.13µm)
 Virtex-4 (0.09µm)
 Virtex-6
 Họ giá thành thấp
 Spartan/XL – derived from XC4000
 Spartan-II – derived from Virtex
 Spartan-IIE – derived from Virtex-E
 Spartan-3/ Spartan 3E/3A/3AN
 Spartan-6
3.5. FPGA của Xilinx
3.5.1. Các họ FPGA của Xilinx
 Họ Virtex:
 Virtex-5
 2006, 1 V, 65 nm

 550 MHz, low power

 330,000 logic cells, DSP, PowerPC

 1200 I/O pins

 Virtex-4:
 2004, 1.2 V, 90nm

 500 MHz, low power


 200.000 logic cells, DSP, PowerPC

 Thay thế ASIC, ASSP

 Virtex-II Pro /X
 2002, 1.5 V, 130nm

 400 MHz

 3K to 99K logic cells + DSP, PowerPC


3.5. FPGA của Xilinx
3.5.1. Các họ FPGA của Xilinx
 Họ Virtex:
 Virtex-II
 2001, 1.5 V, 150nm
 300 MHz
 3K to 99K logic cells
 Virtex /E
 1998/1999, 2.5 /1.8 V, 220 / 180 nm
 150/ 200 MHz
 3K to 70K logic cells
3.5. FPGA của Xilinx
3.5.1. Các họ FPGA của Xilinx
 Họ Spartan:
 Spartan-3A
DSP/AN/A/E /L
 2003, 1.5 V, 90nm
 300 MHz
 5M gates
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
 Cấu trúc CLB

Cấu trúc của CLB - Configurable Logic Block


3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx

Cấu trúc thành phần của Slice

• Mỗi slice gồm hai Function generator 4 đầu vào, cờ logic, các cổng
logic số học, bộ dồn kênh rộng và hai phần tử cất giữ (register)
Slice

VD: Spartan-3E
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
Chức năng của LUT (Look Up Table)
x1
x2
y
x3 LUT
x1
0
x2
0
x3
0
x4
0
y
1
x4
x1
0
x2
0
x3
0
x4
0
y
0 LUT là các phần tử chủ
0 0 0 1 1 0 0 0 1 1
0
0
0
0
1
1
0
1
1
1
0
0
0
0
1
1
0
1
0
0
yếu để thực thi logic
0
0
1
1
0
0
0
1
1
1
0
0
1
1
0
0
0
1
0
1 Mỗi bảng LUT có thể
0 1 1 0 1 0 1 1 0 0
0
1
1
0
1
0
1
0
1
1
0
1
1
0
1
0
1
0
1
0
thực hiện một hàm logic
1
1
0
0
0
1
1
0
1
1
1
1
0
0
0
1
1
0
1
0 bốn đầu vào bất kỳ
1 0 1 1 1 1 0 1 1 0
1 1 0 0 0 1 1 0 0 1
1 1 0 1 0 1 1 0 1 1
x1 x2 x3 x4
1 1 1 0 0 1 1 1 0 0
1 1 1 1 0 1 1 1 1 0

x1 x2

y
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
Phân bố LUT trên một slice
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
X5 X4 X3 X2 X1 Y
0 0 0 0 0 0
0 0 0 0 1 1
0 0 0 1 0 0
0 0 0 1 1 0
0 0 1 0 0 1
0 0 1 0 1 1
0 0 1 1 0 0
0 0 1 1 1 0 LUT
0 1 0 0 0 1
0 1 0 0 1 0
0 1 0 1 0 0
0 1 0 1 1 1 OUT
0 1 1 0 0 1
0 1 1 0 1 1
0 1 1 1 0 1
0 1 1 1 1 1
1 0 0 0 0 0
1 0 0 0 1 0
1 0 0 1 0 0
1 0 0 1 1 0
1 0 1 0 0 0
1 0 1 0 1 0
1 0 1 1 0 0
1 0 1 1 1 1
1 1 0 0 0 0
1 1 0 0 1 1
LUT
1 1 0 1 0 0
1 1 0 1 1 1
1 1 1 0 0 0
1 1 1 0 1 1

Thực hiện hàm 5 đầu vào sử dụng 2 LUT


1 1 1 1 0 0
1 1 1 1 1 0
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
Thực hiện hàm 5 đầu vào sử dụng 2 LUT
LUT
A4
ROM
D
A3 RAM
A2
A1
WS DI F5
0
F5
1 X
WS DI GXOR
F4 A4 G
D
F3 A3
F2 A2 LUT
ROM
F1 A1
RAM

BX nBX
BX
1
0

 Một thành phần CLB có thể thực hiện một hàm bất kỳ có 5 đầu
vào
 Hàm logic được phân chia giữa hai bảng LUT

5.5. FPGA của Xilinx
5.5.2. Sơ đồ khối FPGA của Xilinx
RAM phân bố RAM16X1S
D
WE
 CLB LUT có thể định cấu hình =
WCLK
LUT A0 O
A1

như RAM phân tán A2


A3

 Một LUT bằng RAM 16x1 RAM32X1S


D

Bổ sung các cổng đơn hoặc kép


WE
 WCLK
A0 O

Xếp chồng các LUT để tăng kích


A1
 A2
A3
thước RAM A4

 Ghi đồng bộ
LUT
or RAM16X2S
D0
D1
WE

 Đọc đồng bộ/không đồng bộ = WCLK


A0
A1
A2
O0
O1
RAM16X1D
D

 Các flip-flop phụ sử dụng để đọc A3


WE
WCLK

đồng bộ
or
A0 SPO
LUT
A1
A2
A3
DPRA0 DPO
DPRA1
DPRA2
DPRA3
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx LUT
Thanh ghi dịch IN
CE
D
CE
Q

CLK
 Mỗi LUT có thể được định cấu hình
như thanh ghi dịch D
CE
Q

 Vào nối tiếp, ra nối tiếp


 Các địa chỉ động có thể giữ chậm tới LUT
= D
CE
Q OUT

16 chu kỳ
 Có thể lập trình theo dạng đường ống
 Xếp chồng để có chu kỳ giữ chậm
D Q
lớn hơn CE

 Sử dụng các flip-flops của CLB để DEPTH[3:0]

tăng chiều sâu


3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
Bộ nhân nhúng 18x18 mới
Các hàm số học nhanh
Tối ưu để thực hiện các Module nhân và nhân tích luỹ
18 x 18 signed multiplier
Fully combinatorial
Optional registers with CE & RST (pipeline)
Independent from adjacent block RAM
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
Bộ nhân nhúng 18x18 mới
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
Chức năng của IOB
 IOB đưa ra các mạch ghép nối giữa các chân đóng gói với
các CLB
 Mỗi IOB có thể làm việc như I/O một hoặc hai chiều hỗ trợ
tới 19 các chuẩn tín hiệu khác nhau, bao gồm LVDS,
BLVDS, LVPECL, LVCMOS, HSTL, SSTL, GTL…
 Các đầu ra có thể được ép lên mức trở kháng cao
 Các đầu vào và ra có tốc độ cao có khả năng hỗ trợ với tất
cả các bộ nhớ hiện đại và giao tiếp bus khác nhau
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx

Three-State D Q
FF Enable EC
Three-State
Clock SR Control
Set/Reset

Output D Q
FF Enable EC
Output Path
SR

Direct Input
FF Enable
Input Path
Registered Q D
Input EC
SR
Cấu trúc của khối vào/ra cơ sở
VD: Spartan-3E
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
Tài nguyên kết nối

CLB CLB CLB

PSM PSM
Ma trận chuyển
mạch có khả năng
CLB CLB CLB lập trình

PSM PSM

CLB CLB CLB


3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
 Interconnect-lines

Long lines Double lines

Hex lines Direct lines


3.5. FPGA của Xilinx
3.5.2. Sơ đồ khối FPGA của Xilinx
 Block RAM
3.6. Thực hiện thiết kế FPGA
 Phần mềm:
 ISE, Quatus II, Altium designer, Modelsim

 Phần cứng: KIT phát triển FPGA


 NBSDK01
 Spartan VI
 Cycone IVE
3.6. Thực hiện thiết kế FPGA
Một số công cụ thực hiện thiết kế FPGA

NB2DSK01 + Altium Designer

61
10/05/2022
3.6. Thực hiện thiết kế FPGA
Một số công cụ thực hiện thiết kế FPGA

Spartan VI + ISE (Xilinx)


62
10/05/2022
3.6. Thực hiện thiết kế FPGA
Một số công cụ thực hiện thiết kế FPGA

Cyclone IVE + Quatus II (Altera)

63
10/05/2022
3.6. Thực hiện thiết kế FPGA

Ví dụ 1 – Thiết kế mạch logic tổ hợp


 Xây dựng mạch logic thực hiện cảnh báo an ninh trên ô tô
(bằng chuông). Biết hệ thống cảnh báo sẽ hoạt động
trong các trường hợp sau (chuông kêu):
 Khi xe đang hoạt động nhưng quên không đóng cửa
 Thể hiện: Chìa khóa đề vẫn trong ổ và cửa xe mở
 Khi xe đang hoạt động nhưng quên thắt dây an toàn
 Thể hiện: chìa khóa đề vẫn trong ổ nhưng chưa thắt dây an toàn
 Quên tắt đèn trong xe khi không dùng
 Thể hiện: Chìa khóa đề không ở trong ổ nhưng đèn trong xe sáng

64
3.6. Thực hiện thiết kế FPGA

Ví dụ 2 – Thiết kế mạch logic tuần tự


Thiết kế và mô phỏng mạch tuần tự dựa trên công nghệ
FPGA trên Kit Cyclone IVE. Mạch điều khiển hoạt động nháy
chữ TNUT theo các yêu cầu sau:
 Thứ nhất: Từng ký tự được sáng và giữ nguyên trạng thái cho tới
ký tự cuối cùng được sáng.
 Thứ hai: Khi tất cả các ký tự sáng hết thì sau đó cùng tắt rồi lại
cùng sáng và lại tắt hết để sang một chu kỳ mới bắt đầu từ yêu cầu
thứ nhất.

65
3.6.1. Thiết kế FPGA với Altium Designer

 Bước 1: Tạo Project mới


 Bước 2: Add File VHDL
 Bước 3: Biên dịch chương trình
 Bước 4: Thiết kế mạch nguyên lý
 Bước 5: Biên dịch lại và nạp chương trình lên KIT
Nanoboard NB2DSK01
3.6.1. Thiết kế FPGA với Altium Designer

Ví dụ 1 – Thiết kế mạch logic tổ hợp


 Xây dựng mạch logic thực hiện cảnh báo an ninh trên ô tô
(bằng chuông). Biết hệ thống cảnh báo sẽ hoạt động
trong các trường hợp sau (chuông kêu):
 Khi xe đang hoạt động nhưng quên không đóng cửa
 Thể hiện: Chìa khóa đề vẫn trong ổ và cửa xe mở
 Khi xe đang hoạt động nhưng quên thắt dây an toàn
 Thể hiện: chìa khóa đề vẫn trong ổ nhưng chưa thắt dây an toàn
 Quên tắt đèn trong xe khi không dùng
 Thể hiện: Chìa khóa đề không ở trong ổ nhưng đèn trong xe sáng
3.6.1. Thiết kế FPGA với Altium Designer

Phân tích bài toán thiết kế để xác định hàm logic đầu ra
và các biến logic đầu vào
 Từ bài toán ta xác định 4 biến đầu vào là: chìa khóa, trạng thái cửa
xe, đèn xe và dây an toàn, hàm đầu ra là trạng thái chuông báo
 Quy ước các trạng thái của các biến logic như sau:

Tên biến Ký hiệu Điều kiện Hoạt động

Tín hiệu chuông F F=1 Chuông kêu

Chìa khóa a a=1 Chìa khóa trong ổ đề


Cửa b b=1 Cửa mở
Đèn c c=1 Đèn sáng

Dây an toàn d d=1 Dây an toàn được thắt


68
3.6.1. Thiết kế FPGA với Altium Designer
Xây dựng bảng chân lý
a b c c F
Từ phát biểu bài toán ta và các giả định về các biến 0 0 0 0 0
logic, chuông sẽ kêu (F=1) khi: 0 0 0 1 0
 Chìa khóa trong ổ đề (a=1) AND cửa mở (b=1), 0 0 1 0 1
0 0 1 1 1
OR 0 1 0 0 0
 Chìa khóa trong ổ đề (a=1) AND dây an toàn 0 1 0 1 0
không thắt (d=0), OR 0 1 1 0 1
0 1 1 1 1
 Chìa khóa không trong ổ đề (a=0) AND đèn sáng
1 0 0 0 1
(c=1). 1 0 0 1 0
F = a’b’cd’ + a’b’cd + a’bcd’ + a’bcd + ab’c’d’ + 1 0 1 0 1
ab’cd’ + abc’d’ + abc’d + abcd’ + abcd 1 0 1 1 0
1 1 0 0 1
f (a, b, c, d )   m  2,3, 6, 7,8,10,12,13,14,15  1 1 0 1 1
69
1 1 1 0 1
3.6.1. Thiết kế FPGA với Altium Designer

 Bước 1: Tạo Project mới


3.6.1. Thiết kế FPGA với Altium Designer
 Bước 1: Tạo Project mới
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Add File VHDL
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Add File VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---------------------------------
entity BT1 is
port (a : in std_logic;
b : in std_logic;
c : in std_logic;
d : in std_logic;
F : out std_logic
);
end BT1;
----------------------------------------------- 73
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Add File VHDL
-----------------------------------------------
architecture dataflow of BT1 is begin
F <= ((not a) and (not b) and c and (not d))
or ((not a) and (not b) and c and d)
or ((not a) and b and c and (not d))
or((not a) and b and c and d)
or (a and (not b) and (not c) and (not d))
or (a and(not b) and c and (not d))
or (a and b and (not c) and (not d))
or (a and b and (not c) and d)
or (a and b and c and (not d))
or (a and b and c and d);
end dataflow;
74
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Add File VHDL
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 3: Biên dịch chương trình
3.6.1. Thiết kế FPGA với Altium Designer

 Bước 4: Thiết kế mạch nguyên lý


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 4: Thiết kế mạch nguyên lý

Tạo quan hệ giữa mạch mạch nguyên lý và code VHDL


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 4: Thiết kế mạch nguyên lý

Tạo quan hệ giữa mạch mạch nguyên lý và code VHDL


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 4: Thiết kế mạch nguyên lý

Tìm các phần tử vào ra trong thư viện FPGA


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 4: Thiết kế mạch nguyên lý

Tìm các phần tử vào ra trong thư viện FPGA


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 5: Nạp chương trình lên KIT Nanoboard NB2DSK01


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 5: Nạp chương trình lên KIT Nanoboard NB2DSK01


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 5: Nạp chương trình lên KIT Nanoboard NB2DSK01


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 5: Nạp chương trình lên KIT Nanoboard NB2DSK01


3.6.1. Thiết kế FPGA với Altium Designer

Ví dụ 2 – Thiết kế mạch logic tuần tự


Thiết kế và mô phỏng mạch tuần tự dựa trên công nghệ
FPGA trên Kit Cyclone IVE. Mạch điều khiển hoạt động nháy
chữ TNUT theo các yêu cầu sau:
 Thứ nhất: Từng ký tự được sáng và giữ nguyên trạng thái cho tới
ký tự cuối cùng được sáng.
 Thứ hai: Khi tất cả các ký tự sáng hết thì sau đó cùng tắt rồi lại
cùng sáng và lại tắt hết để sang một chu kỳ mới bắt đầu từ yêu cầu
thứ nhất.
3.6.1. Thiết kế FPGA với Altium Designer

 Bước 1: Tạo Project mới


3.6.1. Thiết kế FPGA với Altium Designer
 Bước 1: Tạo Project mới
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Add File VHDL
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Tạo các file VHDL
Library IEEE;
Use IEEE.Std_Logic_1164.all;
entity led_nhay is port
(
ena_db : in std_logic;
rst : in std_logic;
q : out std_logic_vector(3 downto 0)
);
end led_nhay;

Khai báo thư viện và Entity trong file led_nhay.vhd


3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Tạo các file VHDL
architecture Structure of led_nhay is
begin
PROCESS(ena_db, rst)
VARIABLE temp: INTEGER RANGE 0 TO 7;
BEGIN
IF (rst='1') THEN temp := 0;
ELSIF (ena_db'EVENT AND ena_db='1') THEN temp := temp + 1;
IF (temp=7) THEN temp := 0;
END IF;
END IF;
CASE temp IS
WHEN 0 => q <= "0000"; WHEN 1 => q <= "1000";
WHEN 2 => q <= "1100"; WHEN 3 => q <= "1110";
WHEN 4 => q <= "1111"; WHEN 5 => q <= "0000";
WHEN 6 => q <= "1111"; WHEN OTHERS => NULL;
END CASE;
END PROCESS;
End Structure; Khai báo architecture trong file led_nhay.vhd
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Add File VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---------------------------------
entity BT1 is
port (a : in std_logic;
b : in std_logic;
c : in std_logic;
d : in std_logic;
F : out std_logic
);
end BT1;
----------------------------------------------- 92
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 2: Add File VHDL
3.6.1. Thiết kế FPGA với Altium Designer
 Bước 3: Biên dịch chương trình
3.6.1. Thiết kế FPGA với Altium Designer

 Bước 4: Thiết kế mạch nguyên lý


3.6.1. Thiết kế FPGA với Altium Designer

 Bước 5: Nạp chương trình lên KIT Nanoboard NB2DSK01


Ví dụ minh họa 2
 Bước 5: Nạp chương trình
3.6.2. Thiết kế FPGA với Quatus II

 Bước 1: Nạp cấu hình FPGA: file bitstream

 Bước 2: Tạo file VHDL

 Bước 3: Biên dịch chương trình VHDL và sửa lỗi

 Bước 4: Gán chân và biên dịch lại chương trình

 Bước 5: Nạp chương trình lên Kit và kiểm tra


3.6.2. Thiết kế FPGA với Quatus II

Ví dụ 1 – Thiết kế mạch logic tổ hợp


 Xây dựng mạch logic thực hiện cảnh báo an ninh trên ô tô
(bằng chuông). Biết hệ thống cảnh báo sẽ hoạt động
trong các trường hợp sau (chuông kêu):
 Khi xe đang hoạt động nhưng quên không đóng cửa
 Thể hiện: Chìa khóa đề vẫn trong ổ và cửa xe mở
 Khi xe đang hoạt động nhưng quên thắt dây an toàn
 Thể hiện: chìa khóa đề vẫn trong ổ nhưng chưa thắt dây an toàn
 Quên tắt đèn trong xe khi không dùng
 Thể hiện: Chìa khóa đề không ở trong ổ nhưng đèn trong xe sáng
3.6.2. Thiết kế FPGA với Quatus II

Phân tích bài toán thiết kế để xác định hàm logic đầu ra
và các biến logic đầu vào
 Từ bài toán ta xác định 4 biến đầu vào là: chìa khóa, trạng thái cửa
xe, đèn xe và dây an toàn, hàm đầu ra là trạng thái chuông báo
 Quy ước các trạng thái của các biến logic như sau:

Tên biến Ký hiệu Điều kiện Hoạt động

Tín hiệu chuông F F=1 Chuông kêu

Chìa khóa a a=1 Chìa khóa trong ổ đề


Cửa b b=1 Cửa mở
Đèn c c=1 Đèn sáng

Dây an toàn d d=1 Dây an toàn được thắt


100
3.6.2. Thiết kế FPGA với Quatus II
Xây dựng bảng chân lý
a b c c F
Từ phát biểu bài toán ta và các giả định về các biến 0 0 0 0 0
logic, chuông sẽ kêu (F=1) khi: 0 0 0 1 0
 Chìa khóa trong ổ đề (a=1) AND cửa mở (b=1), 0 0 1 0 1
0 0 1 1 1
OR 0 1 0 0 0
 Chìa khóa trong ổ đề (a=1) AND dây an toàn 0 1 0 1 0
không thắt (d=0), OR 0 1 1 0 1
0 1 1 1 1
 Chìa khóa không trong ổ đề (a=0) AND đèn sáng
1 0 0 0 1
(c=1). 1 0 0 1 0
F = a’b’cd’ + a’b’cd + a’bcd’ + a’bcd + ab’c’d’ + 1 0 1 0 1
ab’cd’ + abc’d’ + abc’d + abcd’ + abcd 1 0 1 1 0
1 1 0 0 1
f (a, b, c, d )   m  2,3, 6, 7,8,10,12,13,14,15  1 1 0 1 1
101
1 1 1 0 1
3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo mới project

Giao diện khi mở phần mềm Quartus


3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo mới project

Thao tác tạo project mới


3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo mới project

Nhập đường dẫn lưu trữ, tên và thực thể cao nhất của project mới
3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo mới project

Thêm file VHDL có sẵn vào project


3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo mới project

Chọn thiết bị phù hợp với Kit FPGA


3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo mới project

Kết quả thông tin ban đầu về project


3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo mới project

Kết quả sau khi tạo project mới


3.6.2. Thiết kế FPGA với Quatus II
 Bước 2: Tạo File VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---------------------------------
entity BT1 is
port (a : in std_logic;
b : in std_logic;
c : in std_logic;
d : in std_logic;
F : out std_logic
);
end BT1;
----------------------------------------------- 109
3.6.2. Thiết kế FPGA với Quatus II
 Bước 2: Tạo File VHDL
-----------------------------------------------
architecture dataflow of BT1 is begin
F <= ((not a) and (not b) and c and (not d))
or ((not a) and (not b) and c and d)
or ((not a) and b and c and (not d))
or((not a) and b and c and d)
or (a and (not b) and (not c) and (not d))
or (a and(not b) and c and (not d))
or (a and b and (not c) and (not d))
or (a and b and (not c) and d)
or (a and b and c and (not d))
or (a and b and c and d);
end dataflow;
110
3.6.2. Thiết kế FPGA với Quatus II
 Bước 2: Tạo File VHDL

Tạo cửa sổ Editor để soạn thảo code VHDL


3.6.2. Thiết kế FPGA với Quatus II
 Bước 2: Tạo File VHDL

Nội dung file VHDL mô tả thiết kế


3.6.2. Thiết kế FPGA với Quatus II
 Bước 3: Biên dịch chương trình VHDL và sửa lỗi

Processing/ Start Compilation hoặc


3.6.3. Thiết kế FPGA với Quatus II
 Bước 4: Gán chân và biên dịch lại chương trình
Chọn Assignments/ Pin Planner hoặc

Gán chân cho Kit


3.6.2. Thiết kế FPGA với Quatus II
 Bước 4: Gán chân và biên dịch lại chương trình

Vị trí các chân cần gán (phần tô đậm)


3.6.2. Thiết kế FPGA với Quatus II
 Bước 4: Gán chân và biên dịch lại chương trình

Kết quả sau khi gán chân


3.6.2. Thiết kế FPGA với Quatus II
 Bước 4: Gán chân và biên dịch lại chương trình

Kết quả sau khi biên dịch lại


3.6.2. Thiết kế FPGA với Quatus II
 Bước 5: Nạp chương trình lên Kit và kiểm tra

Chọn Tools/ Programmer hoặc


3.6.3. Thiết kế FPGA với Quatus II
 Bước 5: Nạp chương trình lên Kit và kiểm tra

Chương trình nạp thành công


3.6.2. Thiết kế FPGA với Quatus II
 Bước 5: Nạp chương trình lên Kit và kiểm tra

Một số kết quả kiểm thử (4, 15, 11, 0)


3.6.2. Thiết kế FPGA với Quatus II

Ví dụ 2 – Thiết kế mạch logic tuần tự


Thiết kế và mô phỏng mạch tuần tự dựa trên công nghệ
FPGA trên Kit Cyclone IVE. Mạch điều khiển hoạt động nháy
chữ TNUT theo các yêu cầu sau:
 Thứ nhất: Từng ký tự được sáng và giữ nguyên trạng thái cho tới
ký tự cuối cùng được sáng.
 Thứ hai: Khi tất cả các ký tự sáng hết thì sau đó cùng tắt rồi lại
cùng sáng và lại tắt hết để sang một chu kỳ mới bắt đầu từ yêu cầu
thứ nhất.

121
3.6.2. Thiết kế FPGA với Quatus II

Ví dụ 2 – Thiết kế mạch logic tuần tự

122
3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo các file VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
entity CHIA_1ENA1HZ is
Port ( CKHT: in STD_LOGIC;
ENA1HZ: out STD_LOGIC);
end CHIA_1ENA1HZ;
 

Khai báo thư viện và Entity trong file chia_1ena1hz.vhd


3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo các file VHDL
architecture Behavioral of CHIA_1ENA1HZ is
CONSTANT N: INTEGER := 50000000;
SIGNAL D1HZ_REG, D1HZ_NEXT: INTEGER RANGE 0 TO N:=1;
Begin
PROCESS (CKHT)
BEGIN
IF FALLING_EDGE (CKHT) THEN
D1HZ_REG <= D1HZ_NEXT;
END IF;
END PROCESS;
D1HZ_NEXT <= 1 WHEN D1HZ_REG = N ELSE
D1HZ_REG + 1;
ENA1HZ <= '1' WHEN D1HZ_REG = N/2 ELSE '0';
end Behavioral;

Khai báo architecture trong file chia_1ena1hz.vhd


3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo các file VHDL
Library IEEE;
Use IEEE.Std_Logic_1164.all;
entity led_nhay is port
(
ena_db : in std_logic;
rst : in std_logic;
q : out std_logic_vector(3 downto 0)
);
end led_nhay;

Khai báo thư viện và Entity trong file led_nhay.vhd


3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo các file VHDL
architecture Structure of led_nhay is
begin
PROCESS(ena_db, rst)
VARIABLE temp: INTEGER RANGE 0 TO 7;
BEGIN
IF (rst='1') THEN temp := 0;
ELSIF (ena_db'EVENT AND ena_db='1') THEN temp := temp + 1;
IF (temp=7) THEN temp := 0;
END IF;
END IF;
CASE temp IS
WHEN 0 => q <= "0000"; WHEN 1 => q <= "1000";
WHEN 2 => q <= "1100"; WHEN 3 => q <= "1110";
WHEN 4 => q <= "1111"; WHEN 5 => q <= "0000";
WHEN 6 => q <= "1111"; WHEN OTHERS => NULL;
END CASE;
END PROCESS;
End Structure; Khai báo architecture trong file led_nhay.vhd
3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo các file VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity MACH_NHAY_TNUT is
Port ( CKHT, BTN0: in STD_LOGIC;
LED_N: out STD_LOGIC_VECTOR (3 downto
0));
end MACH_NHAY_TNUT;
architecture Structural of MACH_NHAY_TNUT is
COMPONENT CHIA_1ENA1HZ
Port ( CKHT: in STD_LOGIC;
ENA1HZ: out STD_LOGIC);
END COMPONENT;
COMPONENT LED_NHAY
Port ( ENA_DB : in std_logic;
RST : in std_logic;
Q : out std_logic_vector(3 downto 0) );
END COMPONENT;
Khai báo thư viện và Entity trong file mach_nhay_tnut.vhd
3.6.2. Thiết kế FPGA với Quatus II
 Bước 1: Tạo các file VHDL
SIGNAL ENA_DB, RST: STD_LOGIC;
signal Q: STD_LOGIC_VECTOR (3 downto 0);
begin
LED_N <= not Q;
RST <= NOT BTN0;
DUT1: CHIA_1ENA1HZ PORT MAP ( CKHT => CKHT,
ENA1HZ => ENA_DB);

DUT2: LED_NHAY PORT MAP ( RST => RST,


ENA_DB => ENA_DB,
Q => Q);
end Structural;

Khai báo architecture trong file mach_nhay_tnut.vhd


3.6.2. Thiết kế FPGA với Quatus II
 Bước 2: Tạo mới project

Tạo project mới thực hiện nháy chữ TNUT


3.6.2. Thiết kế FPGA với Quatus II
 Bước 2: Tạo mới project

Tổng hợp thông tin sau khi tạo project (add 3 file có sẵn)
3.6.2. Thiết kế FPGA với Quatus II
 Bước 3: Biên dịch chương trình

Khai báo thư viện và Entity trong file chia_1ena1hz.vhd


3.6.2. Thiết kế FPGA với Quatus II
 Bước 4: Gán chân và biên dịch lại chương trình

Vị trí các chân cần gán (phần tô đậm)


3.6.2. Thiết kế FPGA với Quatus II
 Bước 4: Gán chân và biên dịch lại chương trình

Kết quả sau khi gán chân


3.6.2. Thiết kế FPGA với Quatus II
 Bước 4: Gán chân và biên dịch lại chương trình

Kết quả sau khi biên dịch lại


3.6.2. Thiết kế FPGA với Quatus II
 Bước 5: Nạp chương trình lên Kit và kiểm tra

Một số kết quả kiểm thử


3.6.3. Thiết kế FPGA với Xilinx ISE
 Bước 1: Tạo Project mới
 Bước 2: Tạo mã nguồn VHDL
 Bước 3: Bổ xung mã nguồn vào Project
 Bước 4: Kiểm tra mã nguồn VHDL
 Bước 5: Tổng hợp thiết kế
 Bước 6: Kết xuất sơ đồ công nghệ, và sơ đồ RTL
 Bước 7: Kiểm tra thiết kế sau tổng hợp
 Bước 8: Gán chân vào/ra sau tổng hợp
 Bước 9: Hiện thực hóa thiết kế
 Bước 10: Tạo cấu hình FPGA: file bitstream
 Bước 11: Nạp cấu hình FPGA: file bitstream
3.6.3. Thiết kế FPGA với Xilinx ISE

Ví dụ 1 – Thiết kế mạch logic tổ hợp


 Xây dựng mạch logic thực hiện cảnh báo an ninh trên ô tô
(bằng chuông). Biết hệ thống cảnh báo sẽ hoạt động
trong các trường hợp sau (chuông kêu):
 Khi xe đang hoạt động nhưng quên không đóng cửa
 Thể hiện: Chìa khóa đề vẫn trong ổ và cửa xe mở
 Khi xe đang hoạt động nhưng quên thắt dây an toàn
 Thể hiện: chìa khóa đề vẫn trong ổ nhưng chưa thắt dây an toàn
 Quên tắt đèn trong xe khi không dùng
 Thể hiện: Chìa khóa đề không ở trong ổ nhưng đèn trong xe sáng
3.6.3. Thiết kế FPGA với Xilinx ISE

 Bước 1: Tạo Project mới


3.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 1: Tạo Project mới


3.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 1: Tạo Project mới


3.6.2. Thiết kế FPGA với Quatus II
 Bước 2: Tạo mã nguồn VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---------------------------------
entity BT1 is
port (a : in std_logic;
b : in std_logic;
c : in std_logic;
d : in std_logic;
F : out std_logic
);
end BT1;
----------------------------------------------- 141
3.6.2. Thiết kế FPGA với Quatus II
 Bước 2: Tạo mã nguồn VHDL
-----------------------------------------------
architecture dataflow of BT1 is begin
F <= ((not a) and (not b) and c and (not d))
or ((not a) and (not b) and c and d)
or ((not a) and b and c and (not d))
or((not a) and b and c and d)
or (a and (not b) and (not c) and (not d))
or (a and(not b) and c and (not d))
or (a and b and (not c) and (not d))
or (a and b and (not c) and d)
or (a and b and c and (not d))
or (a and b and c and d);
end dataflow;
142
5.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 3: Bổ xung mã nguồn VHDL vào project
3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 3: Bổ xung mã nguồn VHDL vào project
3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 4: Kiểm tra mã nguồn VHDL
3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 5: Tổng hợp thiết kế
5.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 5: Tổng hợp thiết kế Đọc kết quả tổng hợp
3.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 6: Kết xuất sơ đồ công nghệ, và sơ đồ RTL


3.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 6: Kết xuất sơ đồ công nghệ, và sơ đồ RTL


3.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 6: Kết xuất sơ đồ công nghệ, và sơ đồ RTL

Sơ đồ RTL
5.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 3: Kết xuất sơ đồ công nghệ, và sơ đồ RTL

Sơ đồ công nghệ
3.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 7: Kiểm tra thiết kế sau tổng hợp


3.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 8: Gán chân vào/ra sau tổng hợp


3.6.2. Thiết kế FPGA với Xilinx ISE

 Bước 8: Gán chân vào/ra sau tổng hợp


3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 9: Hiện thực hóa thiết kế

Mapping
Translate
3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 9: Hiện thực hóa thiết kế

Routing
3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 10: Tạo cấu hình FPGA: file bitstream
3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 11: Nạp cấu hình FPGA: file bitstream
3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 11: Nạp cấu hình FPGA: file bitstream
3.6.2. Thiết kế FPGA với Xilinx ISE
 Bước 11: Nạp cấu hình FPGA: file bitstream

You might also like