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

Lập Trình Game Flappy Bird

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.03 MB, 87 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ VIỄN THÔNG

ĐỒ ÁN MÔN HỌC 2

LẬP TRÌNH GAME FLAPPY BIRD TRÊN
KIT FPGA SPARTAN-3E

Ngành Công Nghệ Kỹ Thuật Điện Tử Truyền Thông

Sinh viên:

GVHD:

TP. HỒ CHÍ MINH – 12/2016

Th.S NGUYỄN ĐÌNH PHÚ


LỜI CẢM ƠN
Lời đầu tiên, em muốn gửi lời cảm ơn chân thành đến giáo viên,
ThS.Nguyễn Đình Phú, trong thời gian qua, đã hướng dẫn và giúp đỡ em
trong quá trình thực hiện đồ án. Những lời nhận xét, góp ý và hướng dẫn của
thầy đã giúp em có một định hướng đúng trong quá trình thực hiện đề tài,
giúp em thấy được những ưu, khuyết điểm của đề tài và từng bước khắc phục
để ngày một tốt hơn, giúp em có thể hoàn thành đồ án này.
Đồng thời em cũng muốn gửi lời cảm ơn sâu sắc đến gia đình và bạn bè
đã động viên, cổ vũ tinh thần trong suốt quá trình học tập và thực hiện đồ án.
Bên cạnh đó, em muốn nói lời cảm ơn đến những giáo viên đã đứng
trên bục giảng truyền đạt kinh nghiệm, kiến thức trong suốt những năm học


đã qua.
Một lần nữa, em xin gửi lời cảm ơn sâu sắc đến bố mẹ, thầy cô và bạn
bè, những người luôn ở cạnh động viên, giúp đỡ và cổ vũ tinh thần cho em.

Tp. Hồ Chí Minh, ngày 20 tháng 12 năm 2016
Sinh viên

2


MỤC LỤC

3


CHƯƠNG 1
GIỚI THIỆU
1.1 ĐẶT

VẤN ĐỀ

FPGA là viết tắt của thuật ngữ tiếng anh “Field programmable Gate Array”,
nghĩa là Mảng cổng lập trình được dạng trường. FPGA thuộc họ ASIC lập trình
được.
ASIC lập trình được đã xuất hiện từ lâu dưới dạng PLD (Programmable Logic
Device), nhưng vai trò của các dạng ASIC này là không nhiều vì số lượng cổng
trên Chip rất ít dẫn tới chức năng của các PLD này cũng nghèo nàn và thường chỉ
sử dụng với những nhiệm vụ rất hạn chế trong toàn hệ thống. Kể từ năm
1980,Các công ty sản xuất PLD hàng đầu đã đẩy mạnh quá trình nghiên cứu về
FPGA và nhanh chóng cho ra các thế hệ FPGA với số lượng cổng và tốc độ ngày

càng cao. Các FPGA hiện nay có số lượng cổng đủ lớn để có thể thay thế cả một
hệ thống bao gồm lõi CPU, Bộ điều khiển bộ nhớ (Memory Controller), các
ngoại vi như SPI,Timer, I2C, GPIO, PWM, Video/Audio Controller… (nghĩa là
tương đương với các SoC hiện đại).
Trước đây, khi muốn chế tạo ra 1 con Chip Vi Xử Lý. Người ta phải thiết kế
Chip ở mức logic sử dụng các ngôn ngữ mô tả phần cứng, Để kiểm tra công đoạn
này người ta sử dụng những phần mềm mô phỏng. Sau đó thiết kế phải được tổng
hợp dựa trên các thư viện cấp thấp của hãng mà bạn sẽ sản xuất con Chip của bạn
sau này, sau đó là quá trình kiểm tra timing (định thời) cho toàn bộ thiết kế để
đảm bảo thiết kế của bạn sẽ hoạt động ở tần số yêu cầu.Tất cả các công đoạn này
đều chỉ có thể kiểm tra bằng các phần mềm mô phỏng (Điều này dẫn tới nguy cơ
xảy ra sai xót rất lớn khi chuyển thiết kế sang môi trường Chip thực ). Sau đó bạn
sẽ gởi thiết kế của mình tới công ty sản xuất Chip và phó mặc cho số phận, một
chip mẫu giá vài triệu đô la sẽ được chuyển cho bạn, và sau đó bạn bắt đầu quá
trình test chip trong môi trường thực, nếu thất bại, khả năng lớn là bạn sẽ phải
4


thực hiện lại hoàn toàn qui trình thiết kế như đã nói ở trên, và cứ mỗi lần như
vậy, bản sẽ phải bỏ sọt rác nhiều triệu đô la và khoảng thời gian nghiên cứu rất
lớn, quy trình này làm cho các đất nước nghèo như việt nam không thể tham gia
vào các cuộc chơi của các đất nước giàu có trong thế giới của ASIC. Nhưng với
FPGA,bạn không những có thể rút ngắn thới gian thực hiện ASIC mà còn giảm
chi phí nghiên cứu tối đa do quá trình kiểm tra thiết kế không những được kiểm
tra bằng các phần mềm mô phỏng mà giờ đây còn có thể chạy trên các Chip thực
trong mội trường có thể nói là gần với môi trường ASIC thực nhất. Khả năng tái
cấu hình cho phép bạn sửa đi sửa lại thiết kế cho đến khi đạt yêu cầu mà không
tốn một xu nào.
1.2


LÝ DO CHỌN ĐỀ TÀI
Flappy Bird (tạm dịch là "chú chim vỗ cánh") là một trò chơi điện tử trên nền

Android và iOS do Nguyễn Hà Đông, ở Hà Nội,Việt Nam, phát triển vào tháng 5
năm 2013, và do GEARS Studios, một studio phát triển game quy mô nhỏ, hoạt
động độc lập có trụ sở tại Việt Nam, phát hành. Ban đầu trò chơi được phát hành
vào tháng 5, 2013 trên nền iPhone 5, sau đó nâng cấp cho hệ máy iOS6 và mới
hơn vào tháng 9, 2013.
Vào tháng 1, 2014, trò chơi đứng đầu bảng thể loạt miễn phí trên iTunes App
Store của Mỹ và Trung Quốc và sau đó là trên UK App Store khi nó được mệnh
danh là "trò Angry Birds mới". Vào cuối tháng 1, Flappy Bird là ứng dụng được
tải về nhiều nhất trên App Store cũng như trên Google Play.
Đây là một trò chơi điện tử thú vị và không quá khó để lập trình do vậy tôi
quyết định thực hiện đề tài viết game “Flappy Bird“ trên kit FPGA SPARTAN3E. Đề tài nhằm mục đích giúp hiểu rõ hơn về cách thức hoạt động cũng như quy
trình để tạo ra một con chip có thể điều khiển màn hình VGA một cách độc lập
bằng kit FPGA, ngoài ra đề tài còn mang tính giải trí cao, giúp giải tỏa căng
thẳng và kích thích niềm đam mê lập trình.
1.3 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
1.3.1 Tình hình ngoài nước
Bộ nhớ tĩnh đầu tiên dựa trên FPGA (thường được gọi là SRAM trên nền
FPGA) được đề xuất bởi Wahlstrom vào năm 1967. Sau đó bản thương mại của
5


FPGA được Xilinx giới thiệu vào năm 1984. Lúc này nó gồm có một mảng của
các khối logic có thể tái cấu hình – Configurable Logic Blocks (CLBs) và các
đầu vào ra – I/O (input/output). Chip FPGA đầu tiên chứa 64 CLBs và 58 I/Os.
Ngày nay, FPGA có thể chứa khoảng 330,000 CLBs và khoảng 1100 I/Os. Phần
lớn các sản phẩm FPGA trên thị trường hiện nay đều dựa trên công nghệ SRAM
với 2 hãng sản xuất lớn nhất là Xilinx và Altera. Ngoài ra còn có các hãng khác

sản xuất FPGA nhưng với mục đích chuyên dụng (Atmel, Actel, Lattice,
SiliconBlue,..).
Từ lâu tại các nước tiên tiến FPGA đã được nghiên cứu phát triển nhanh
chóng, công nghệ này góp phần quan trọng trong các ứng dụng nhúng mà đôi khi
các công nghệ khác không thể thay thế được. Ứ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,
máy đánh cờ (Máy đánh cờ Hydra có 32 bộ vi xử lý cộng thêm FPGA đã chiến
thắng kiện tướng quốc tế Michael Adams trong năm 2005.
1.3.2 Tình hình trong nước
So với các nước tiên tiến trên thế giới, nước ta bắt đầu tiếp cận và ứng dụng
công nghệ FPGA sau một khoảng thời gian khá dài. Tuy nhiên trong những năm
gần đây, nhờ sự mở của của nền kinh tế thị trường và đầu tư mạnh mẽ của nhà
nước, công nghệ FPGA đang dần trở lên lớn mạnh.Hiện nay có khá nhiều các
công ty chuyên về thiết kế vi mạch và phát triển hệ thống nhúng dựa trên công
nghệ FPGA được đặt tại nước ta như : Renesas,

Marvell, Uniquify,

AppliedMicro (AMCC), Intel, ESilicon (SDS), Synapsys, TMA Solutions,
ATVN(Arrive Technology), AWAH, Grey Stones, Splendid, … đây hứa hẹn là
cơ hội đầy triển vọng giúp nước ta có thể bắt kịp các nước trong lĩnh vực thiết kế
vi mạch .

1.4

NHIỆM VỤ ĐỒ ÁN

Các nhiệm vụ của đồ án:


6


Để thực hiện được đề tài Lập trình game flappy bird hiển thị trên màn hình
WXGA 1360 X 768 sử dụng board mạch FPGA spartan-3E, đồ án được chia ra
thành các nội dung chính sau đây:
Nội dung 1: Khảo sát phần cứng và phần mềm.
• Tìm hiểu về các loại màn hình hiển thị và màn hình WXGA 1360 X
768
• Tìm hiểu về chip Xilinx FPGA SPARTAN XC3S250E và Spartan-3EStarterBoard
• Sơ lược về ngôn ngữ mô tả phần cứng VHDL
• Phần mềm sử dụng, cách sử dụng.
Nội dung 2: Lập trình.





Xây dựng lưu đồ giải thuật
Giải thích lưu đồ
Lập trình
Chạy thực tế.

Nội dung 3: Kết quả, những mặt đạt được và chưa đạt được, hướng phát triển
của đề tài.

CHƯƠNG 2
KHẢO SÁT PHẦN CỨNG VÀ PHẦN MỀM


7


Để thực hiện các thử nghiệm, đề tài sử dụng :
Phần cứng:
 Màn hình WXGA 1360 X 768
 Spartan-3E-StarterBoard
 Laptop cá nhân dùng để viết chương trình, biên dịch, tổng hợp…
Phần mềm :
 Phần mềm ISE 13.2 của hãng Xilinx
 Phần mềm tính toán thông số DCM
2.1 TÌM

HIỂU VỀ CÁC LOẠI MÀN HÌNH HIỂN THỊ VÀ

MÀN HÌNH WXGA 1360 X 768
2.1.1 Nhiệm vụ :
Là thiết bị xuất ( nhập ) chuẩn, tạo ra môi trường giao tiếp giữa người và thiết
bị điều khiển.
2.1.2 Phân loại :
 Theo công nghệ
 Màn hình ống phóng tia âm cực CRT (Cathode Ray Tube)
 Màn hình tinh thể lỏng LCD (Liquid crystal display)
 Màn hình Plasma
 Màn hình cảm biến
 Màn hình OLED
 Theo kích thước: được đo bằng đơn vị inches (theo đường chéo)
Hiện có các loại màn hình 14 inches, 15 inches,17 inches, 21 inches. …
 Theo Màu sắc
- Màn hình MonoColor (đơn sắc: đen trắng)

- Các màn hình màu theo các chuẩn phổ biến ngày nay:
VGA (Video Graphics Array): 640x480 pixels
SVGA (Super VGA): 800x600 pixels
XGA (Extended Graphics Array): 1024x768 pixels
SXGA (Super XGA): 1280x1024 pixels
UXGA (Ultra XGA): 1600x1200 pixels
QXGA (Quad XGA): 2048x1536 pixels
QSXGA (Quad SXGA): 2560x2048 pixels
QUXGA (Quad UXGA): 3200x2400 pixels
WXGA (Wide XGA): màn hình rộng 1366x768 pixels
WSXGA+ (Wide SXGA+): màn hình rộng 1680x1050 pixels

8


WUXGA (Wide UXGA): màn hình rộng 1920x1200 pixels
WQUXGA (Wide QUXGA): màn hình rộng 3840x2400 pixels

Hình 2.1 : Phân loại màn hình màu theo độ phân giải
2.1.3 Các yếu tố ảnh hưởng đến màn hình
 Độ phân giải : Là số điểm anh ( pixel ) được hiển thị trên màn hình . Tính
bằng số điểm ảnh theo chiều ngang X số điểm ảnh theo chiều dọc .
 Dot pitch : Là khoảng cách tâm các điểm ảnh . Dot pitch càng nhỏ thì hình
ảnh cằng sắc nét. Các màn hình VGA thường có Dot pitch bằng 0.28 mm.

Hình 2.2 : Các loại Dot pitch
2.1.4 Màn hình WXGA 1360 X 768

9



a. Giới thiệu chung

Hình 2.3 Màn hình WXGA 1360 X 768
Bảng 2.1 : Một số thông số kỹ thuật của màn hình vi tính LG 19M35A
Kích thước màn hình
Tỉ lệ khung hình
Độ phân giải
Thời gian đáp ứng
Tần số quét

18.5"
16:9
1366x768
5ms
30~61kHz/56~75Hz

b. Các thông số điều khiển
Để có thể điều khiển hiển thị trên màn hình ta cần biết : Cách thức hoạt động,
đồng bộ, các thông số như tần số xung đồng bộ ngang, tần số xung đồng bộ dọc,
thời gian refresh màn hình...dưới đây là các thông số cần thiết để thực hiện :
Bảng 2.2 : Các thông số điều khiển màn hình vi tính LG 19M35A
Định dạng pixel
Tốc độ làm mới
Tần số đồng bộ ngang
Tần số Pixel

1360 x 768
60 Hz
47.7 kHz

85.500 MHz

Hor Pixels

1360 Pixels
10


Ver Pixels
Hor Frequency
Ver Frequency
Pixel Clock
Character Width
Scan Type
Hor Sync Polarity

768 Lines
47.712
60.015
85.500
8
NONINTERLACED
POSITIVE

kHz = 21.0 usec / line
Hz = 16.7 msec / frame
MHz = 11.7 nsec ± 0.5%
Pixels = 93.6 nsec
H Phase = 5.4 %
HBlank = 24.1% of

HTotal
Ver Sync Polarity
POSITIVE
VBlank = 3.4% of
VTotal
Hor Total Time
20.959
(usec) = 224 chars =
1792 Pixels
Hor Addr Time
15.906
(usec) = 170 chars =
1360 Pixels
Hor Blank Start
15.906
(usec) = 170 chars =
1360 Pixels
Hor Blank Time
5.053
(usec) = 54 chars = 432
Pixels
Hor Sync Start
16.655
(usec) = 178 chars =
1424 Pixels
H Right Border
0.000
(usec) = 0 chars = 0
Pixels
H Front Porch

0.749
(usec) = 8 chars = 64
Pixels
Hor Sync Time
1.310
(usec) = 14 chars = 112
Pixels
H Back Porch
2.994
(usec) = 32 chars = 256
Pixels
H Left Border
0.000
(usec) = 0 chars = 0
Pixels
Ver Total Time
16.662
(msec) = 795 lines HT –
(1.06xHA)
Ver Addr Time
16.097
(msec) = 768 lines = 4.1
Ver Blank Start
16.097
(msec) = 768 lines
Ver Blank Time
0.566
(msec) =27lines
Ver Sync Start
16.159

(msec) = 771 lines
V Bottom Border
0.000
(msec) = 0lines
V Front Porch
0.063
(msec) = 3lines
Ver Sync Time
0.126
(msec) = 6lines
V Back Porch
0.377
(msec) = 18lines
V TopBorder
0.000
(msec) = 0lines
Trong phần sau của đồ án sẽ sử dụng các thông số điều khiển này để thực
hiện việc điều khiển hiển thị màn hình LCD .

11


2.2

TÌM HIỂU VỀ CHIP XILINX FPGA SPARTAN XC3S250E
VÀ SPARTAN-3E-STARTER BOARD
2.2.1 Khái niệm
Field-programmable gate array (FPGA) là một loại 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.
(Chữ field ở đây muốn chỉ đến khả năng tái lập trình "bên ngoài" của người sử

dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn).
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ý...

FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC,
nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế
trên thư viện logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này,
và hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậy
FPGA ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết
kế đơn giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc
mảng phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác
vụ tái lập trình của FPGA thực hiện đơn giản hơn; khả năng lập trình linh động
hơn; và khác biệt quan trọng nhất là kiến trúc của FPGA cho phép nó có khả
năng chứa khối lượng lớn 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
12


cả các bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế
trên HDL (còn gọi là mã RTL).

2.2.2 Lịch sử phát triển
FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty
Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lượng tương
đối lớn các phần tử bán dẫn vào 1 vi mạch so với kiến trúc trước đó là CPLD.
FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, [1] trong khi
CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA
còn thấp hơn nữa chỉ đạt vài nghìn đến 10.000.
CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple
programmable devices, thuật ngữ chung chỉ PAL, PLA). SPLD thường là một
mảng logic AND/OR lập trình được có kích thước xác định và chứa một số
lượng hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế
khả năng thực hiện những hàm phức tạp và thông thường hiệu suấ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 (multiplication 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, một số FPGA hiện đại còn hỗ
trợ tái cấu trúc cục bộ, tức là khả năng 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.
13


2.2.3 Kiến trúc
Cấu trúc tổng thể của một FPGA được minh họa ở hình sau.

Hình 2.4 : Kiến trúc tổng quan FPGA
a. Khối logic

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, LUT (Look up table) là khối
logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy
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.
Trong tài liệu hướng dẫn của các dòng FPGA của Xilinx còn sử dụng khái
niệm SLICE, 1 Slice tạo thành từ gồm 4 khối logic, số lượng các Slices thay đổi
từ vài nghìn đến vài chục nghìn tùy theo loại FPGA.
14


Nếu nhìn cấu trúc tổng thể của mảng LUT thì ngoài 4 đầu vào kể trên còn hỗ
trợ thêm 2 đầ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 là nhằm tăng tốc các bộ số học
logic


Hình 2.5 : Khối logic của FPGA
b. Hệ thống mạch liên kết

Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai
phương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia
thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 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.

15


Hình 2.6 : Hệ thống mạch liên kết của FPGA
c. 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ụ để thiết kế những ứng dụng SoC, trong dòng
Virtex 4,5 của Xilinx có chứa nhân xử lý PowerPC, hay trong Atmel FPSLIC
tích hợp nhân AVR…, hay cho những ứng dụng xử lý tín hiệu số DSP trong
FPGA được tích hợp các DSP Slide là bộ nhân cộng tốc độ cao, thực hiện hàm
A*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSP
slices với A, B, C 18-bit.
d. Block RAM

Ngoài ra những FPGA của Xilinx còn có block RAM, có thể mường tượng
như là bộ nhớ nhỏ nằm trong FPGA. Những FPGA này tuy nhỏ (khoảng vài chục
kí lô bit cho đến vài triệu bit tùy theo loại FPGA) nhưng có thể dùng để tạo một

bộ nhớ nhỏ như ROM, FIFO

2.2.4 Ứng dụng

16


Ứ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, máy đánh cờ (Máy đánh cờ Hydra có 32
bộ vi xử lý cộng thêm FPGA đã chiến thắng kiện tướng quốc tế Michael
Adams trong năm 2005.)...

Hình 2.7 : Một con robot sử dụng FPGA EPXA1 cũa hãng Altera
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.

2.2.5 FPGA của XILINX
Xilinx có 2 họ FPGA chính là Spartan và Virtex và có nhiều loại khác nhau
trong mỗi họ.
17


Ví dụ : Spartan 3, Spartan 3E, Spartan 6, Spartan 6 Lower Power, Virtex 4
Virtex II và Virtex II Pro.
Trong đó Virtex 4, Virtex II và Virtex II Pro là các FPGA platform (nền) bởi

vì chúng tích hợp nhiều chức năng như bộ nhớ, vi xử lý, bộ thu phát, các phần
cứng khác và các lõi mềm IP. Các họ FPGA thường khác nhau về mật độ tích
hợp và các thông số kỹ thuật . Hầu hết các thiết bị FPGA của Xilinx có cấu trúc
truyền thống , tuy nhiên Virtex II Pro X có cấu trục gọi là khối module chỉ định
ứng dụng ASMBL ( Apllication Specific Modular Block) có trên 1 tỉ transistor
trong 1 chip đơn .

a. Chip Xilinx FPGA SPARTAN XC3S250E
Bảng 2.3 : Đặc điểm XC3S250E-4VQG100

 Tổng số cổng : 250.000 cổng
 Phần tử logic tương đương: 5.508 phần tử . Phần tử logic tương đương là
sự kết hợp các Look-up table và các phần tử lưu trữ. Có các tính năng bổ
xung hơn slide như khả năng nhân nhiều bit, thực hiện logic, cổng số học
 Khối logic cấu hình - Configurable Logic Blocks(CLB) : 612 khối . Chứa
các Look-up table mềm dẻo, thực hiện cộng logic các phần tử được lưu trữ
,sử dụng như các Flip-Flop hoặc các mạch chốt . CLB thực hiện một loạt
các chức năng logic cũng như lưu trữ dữ liệu .

18


Hình 2.8 : Khối logic cấu hình ( CLB )
 Tổng Slice: 2448
Mỗi CLB gồm 4 slice kết nối với nhau như hình sau :

Hình 2.9 : Cấu tạo khối logic cấu hình ( CLB )
Mỗi Slice được nhóm lại thành cặp , mỗi cặp được tổ chức như là một cột với
chức năng độc lập . Cặp còn lại hỗ trợ chức năng logic và bộ nhớ .
Cặp bên trái được kí hiệu là CLICEM, cặp bên phải được kí hiệu là CLICEL.

Cấu tạo của mỗi cặp được thể hiện phía bên dưới .

19


Hình 2.10 : Cấu tạo Slice
 Block RAM Bits: 216K
Khối RAM được đặt cùng với bộ nhân trên đế trong một hoặc hai cột tùy vào
thiết bị . Hình bên dưới cho thấy số lượng khối RAM có trên mạch .
Bảng 2.4 : Số lượng khối RAM có trên các dòng chip

Ngay bên cạnh khối RAM là khối nhận 18 bit, Phía trên 16 bit port A,bus đầu
vào của port A được chia sẻ với bus đầu vào của bộ nhân, tương tự như vậy với
port B, Phía trên 16 bit port B,bus đầu vào của port B được chia sẻ với bus đầu
vào của bộ nhân.
 Khối nhân : 12 khối . Cho phép 2 tín hiệu đầu vào là số nhị phân 18 bit và
tính toán kết quả đầu ra.
 Quản lý xung clock số - Digital Clock Manager(DCM): DCM là phần
quản lý tần số xung clock hệ thống, dịch pha và góc nghiêng. Trong chip
Xilinx FPGA SPARTAN XC3S250E có tích hợp sẵn 4 DCM. DCM hoạt
động dựa trên vòng lặp delay-locked .
DCM hỗ trợ 3 chức năng chính :

20


• Loại bỏ chênh lệch clock : Xảy ra do xung clock trong hệ thống bị lệch
trong quá trình phân phối. Điều này làm tăng thời gian thiết lập và thời
gian yêu cầu. Tăng thời gian đáp ứng của mạch, ảnh hưởng lớn tới
mạch khi hoạt động ở tần số cao.

• Tổng hợp tần số : DCM có thể tạo ra tần số khác với xung clock đầu
vào, dựa vào các bộ nhân tần và chia tần . Đối với chip Xilinx FPGA
SPARTAN XC3S250E tần số output có thể tùy chọn từ 5MHz đến 311
MHz, việc lựa chọn tần số output phụ thuộc vào các hệ số chia và nhân
(D và M) với D là hệ số chia (có thể chọn từ 1-32 trong phiên bản
Xilinx ISE 13.2), M là hệ số nhân (có thể chọn từ 2-32). Tần số clock
ngõ ra được tính theo công thức :
=
• Dịch Pha : DCM cung cấp khả năng dịch pha của tất cả tín hiệu clock
đầu vào so với tín hiệu clock ngõ ra .

Hình 2.11 : Cấu tạo khối DCM của FPGA

2.2.6 Spartan-3E-StarterBoard

21


Hình 2.11 : Spartan-3E-StarterBoard của hãng Xilinx
Các tính năng đặt biệt :
 Các tính năng cụ thể
• Cấu hình Flash song song NOR
• Multiboot cấu hình FPGA từ NOR Flash PROM song song
• Cấu hình Flash SPI nối tiếp
 Phát triển nhúng
• Tích hợp vi xử lý 32 bit RISC
• Bộ điều khiển nhúng 8 bit
• Bộ nhớ giao tiếp DDR
Các thành phần quan trọng và chức năng:
 Xilinx XC3S500E Spartan-3E FPGA

• 232 chân I/O
• 320 gói FBGA
• Hơn 10,000 tế bào logic(logic cell)
 Cấu hình PROM Xilinx 4 Mbit Nền tảng Flash
 Xilinx 64-macrocell XC2C64A CoolRunner ™ CPLD
 64 MByte (512 Mbit) DDR SDRAM, giao diện dữ liệu x16, 100 MHz
 16 MByte (128 Mbit) NOR Flash song song (Intel StrataFlash)
• Lưu trữ cấu hình FPGA
• Lưu mã MicroBlaze / shadowing
 16 Mbits của SPI flash nối tiếp (STMicro)
• lưu trữ cấu hình FPGA
• MicroBlaze mã shadowing
 Màn hình LCD 2 hàng, 16 cột
 Cổng PS / 2 chuột hoặc bàn phím
22













Cổng màn hình VGA
10/100 Ethernet PHY (yêu cầu Ethernet MAC trong FPGA)

Hai 9-pin cổng RS-232 (DTE- và DCE-style)
FPGA / CPLD download / giao diện gỡ lỗi USB On-board
Xung Clock 50 MHz
SHA-1 1-wire EEPROM nối tiếp cho bitstream chống sao chép
Kết nối mở rộng Hirose FX2
Ba Digilent 6-pin kết nối mở rộng
Bốn-đầu ra, SPI dựa trên Digital-to-Analog Converter (DAC)
Hai đầu vào, SPI dựa trên Bộ chuyển đổi tương tự sang số (ADC) có thể









lập trình tái khuyếch đại
Chipscope ™ SoftTouch cổng gỡ lỗi
Bộ mã hóa xoay kèm nút nhấn
Tám led đơn
Bốn switch
Bốn nút nhấn
SMA đầu vào xung clock
Ổ cắm DIP 8-pin cho xung clock phụ

2.3 SƠ

LƯỢC VỀ NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL


2.3.1 Giới thiệu
VHDL là viết tắt của cụm từ Very High Speed Intergrated Circuit Hardware
Description Language - ngôn ngữ mô phỏng phần cứng cho các mạch tích hợp
tốc độ rất cao. VHDL là ngôn ngữ mô phỏng phần cứng được phát triển dùng cho
chương trình VHSIC (Very High Speed Intergrated 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 phát triển 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 Intermetics, IBM và Texas
Instruments bắt đầu nghiên cứu phát triển vào 7/1983. Phiên bản đầu tiên được
công bố vào 8/1985. Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thành
một tiêu chuẩn. Năm 1987, đã đưa ra tiêu chuẩn về VHDL – tiêu chuẩn IEEE1076-1987.
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 tài liệu đó kỹ lưỡng. Với một ngôn ngữ mô phỏng phần cứng tốt việc xem

23


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.
Trước khi VHDL ra đời, có nhiều ngôn ngữ mô phỏng phần cứng được sử
dụng nhưng không có một tiêu chuẩn thống nhất. Các ngôn ngữ mô phỏng phần
cứng đó được phát triển để phục vụ các bộ mô phỏng chạy chúng. Vì các ngôn
ngữ mô phỏng phần cứng đó được các nhà cung cấp thiết bị phát triển, nên mang
các đặc trưng gắn với các thiết bị của nhà cung cấp đó và thuộc sở hữu của nhà
cung cấp.
Trong khi đó, VHDL đượ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ế, bộ mô phỏng 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 vẫn sử dụng một ngôn ngữ duy nhất.

2.3.2 Cấu trúc ngôn ngữ của VHDL
VHDL là ngôn ngữ cho phép mô tả các thiết bị phần cứng số trừu tượng, nó
không dựa vào công nghệ thiết bị phần cứng số, phương pháp được sử dụng để
thiết kế thiết bị số, mà những khái niệm, mô hình trừu tượng của thiết bị phần
cứng số được đưa ra như là nền tảng của ngôn ngữ. Do đó dùng VHDL cho phép
mô tả được hầu hết các hệ thống phần cứng số. Các mô hình trừu tượng gồm:
 Mô hình hoạt động (a Model of Behavior).
 Mô hình thời gian (a Model of Time).
 Mô hình cấu trúc (a Model of Structure).
Để thực hiện mô tả cho một hệ thống số nào đó cần thực hiện theo các bước
như sau:





Phân tích yêu cầu của hệ thống số cần phải thiết kế hoặc cần phải mô tả.
Phân tách hệ thống thành những khối con.
Xác định mô hình mô tả phù hợp cho mỗi khối con hoặc cho cả hệ thống.
Sử dụng ngôn ngữ VHDL để mô tả hệ thống số theo các mô hình đã xác
định.

Như vậy việc nắm chắc cấu trúc, cú pháp, các mô hình mô tả của ngôn ngữ là
rất quan trọng, quyết định chủ yếu đến thành công trong việc mô tả hệ thống số
cần thiết kế. VHDL cũng có nhiều điểm giống như một ngôn ngữ lập trình bậc
24



cao, có cấu trúc, có cú pháp riêng, có cách tổ chức chương trình, có từ khóa, có
phương pháp biểu diễn số liệu riêng...

2.3.3 Cấu trúc một mô hình hệ thống mô tả bằng VHDL
Thông thường một mô hình VHDL bao gồm ba phần: thực thể, kiến trúc và
các cấu hình. Trong một số trường hợp mô hình còn có thêm phần các môi
trường kiểm tra.
a. Thực thể (Entity)
Khai báo thực thể trong VHDL là câu lệnh định nghĩa các chỉ tiêu phía ngoài
của một phần tử hay một hệ thống. Các thông tin có trong phần khai báo thực thể
cho phép kết nối phần tử (hệ thống) mà thực thể đó đại diện với các phần tử (hệ
thống) khác. Thực chất việc khai báo thực thể chính là khai báo giao diện của hệ
thống với bên ngoài.
b. Kiến trúc (Arrchitecture)
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 khai báo nhiều kiến trúc cho một thực thể. Một 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
hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống. Có hai cách mô
tả kiến trúc của một phần tử (hệ thống) đó là mô tả theo mô hình hoạt động hay
mô tả theo mô hình cấu trúc. 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. Cấu hình
Việc khai báo cấu hình tương tự như việc liệt kê các phần của bản thiết kế.
Khai báo cấu hình thực chất là chỉ ra kiến trúc nào được gắn với thực thể nào.
Như vậy các kiến trúc khác nhau có thể cùng được gắc với một thực thể. Ðiều
này cho phép thay đổi bản mô tả ở thời điểm mô phỏng hay tổng hợp hệ thống.
Việc khai báo cấu hình là tuỳ chọn, cũng có thể sử dụng cấu hình mặc định do
VHDL cung cấp, khi đó kiến trúc được khai báo cuối cùng cho một thực thể sẽ

được gắn với thực thể đó.
d. Môi trường kiểm tra (testbench)

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×