1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Lập Trình Game Flappy Bird

87 2,3K 13

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 87
Dung lượng 4,8 MB
File đính kèm Lap Trinh Game Flappy Bird.rar (6 MB)

Nội dung

Đây là một trong số công trình nghiên cứu về Game Flappy Bird và nó được thực hiện bằng cách lập trình. Mình đã dùng ngôn ngữ FPGA để thực hiện. Kết quả chạy hoàn toàn ok. Các bạn có thể dùng nó làm một trong số những ứng dụng trong thực tế hoặc đồ án, luận văn tốt nghiệp. Các bạn có thể tham khảo toàn bộ code mình viết trong file đính kèm (Full Code).

Trang 1

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: Th.S NGUYỄN ĐÌNH PHÚ

TP HỒ CHÍ MINH – 12/2016

Trang 2

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

Trang 3

MỤC LỤC

Trang 4

ASIC lập trình được đã xuất hiện từ lâu dưới dạng PLD (Programmable LogicDevice), nhưng vai trò của các dạng ASIC này là không nhiều vì số lượng cổngtrê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ăm1980,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àycà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ácngoạ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ạnnày người ta sử dụng những phần mềm mô phỏng Sau đó thiết kế phải được tổnghợ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ạnsau 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ộtchip 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

Trang 5

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ấtlớn, quy trình này làm cho các đất nước nghèo như việt nam không thể tham giavà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ớiFPGA,bạn không những có thể rút ngắn thới gian thực hiện ASIC mà còn giảmchi phí nghiên cứu tối đa do quá trình kiểm tra thiết kế không những được kiểmtra 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ựctrong 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áicấ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ôngtốn một xu nào.

Flappy Bird (tạm dịch là "chú chim vỗ cánh") là một trò chơi điện tử trên nềnAndroid và iOS do Nguyễn Hà Đông, ở Hà Nội,Việt Nam, phát triển vào tháng 5nă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ànhvào tháng 5, 2013 trên nền iPhone 5, sau đó nâng cấp cho hệ máy iOS6 và mớihơ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 AppStore của Mỹ và Trung Quốc và sau đó là trên UK App Store khi nó được mệnhdanh là "trò Angry Birds mới" Vào cuối tháng 1, Flappy Bird là ứng dụng đượctả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ôiquyết định thực hiện đề tài viết game “Flappy Bird“ trên kit FPGA SPARTAN-3E Đề 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ư quytrì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ậpbằng kit FPGA, ngoài ra đề tài còn mang tính giải trí cao, giúp giải tỏa căngthẳng và kích thích niềm đam mê lập trình

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ềnFPGA) được đề xuất bởi Wahlstrom vào năm 1967 Sau đó bản thương mại của

Trang 6

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ủacá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ầnlớn các sản phẩm FPGA trên thị trường hiện nay đều dựa trên công nghệ SRAMvớ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ácsả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 nhanhchóng, công nghệ này góp phần quan trọng trong các ứng dụng nhúng mà đôi khicá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íchnhậ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ếnthắ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ụngcông nghệ FPGA sau một khoảng thời gian khá dài Tuy nhiên trong những nămgầ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áccô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ôngnghệ 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

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

Trang 7

Để thực hiện được đề tài Lập trình game flappy bird hiển thị trên màn hìnhWXGA 1360 X 768 sử dụng board mạch FPGA spartan-3E, đồ án được chia rathà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 X768

• Tìm hiểu về chip Xilinx FPGA SPARTAN XC3S250E và StarterBoard

Spartan-3E-• Sơ lược về ngôn ngữ mô tả phần cứng VHDL

Trang 8

Để thực hiện các thử nghiệm, đề tài sử dụng :

 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

Trang 9

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

Trang 10

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

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

Trang 11

Ver Pixels 768 Lines

Hor Sync Polarity POSITIVE HBlank = 24.1% of

(1.06xHA)Ver Addr Time 16.097 (msec) = 768 lines = 4.1

Trong phần sau của đồ án sẽ sử dụng các thông số điều khiển này để thựchiện việc điều khiển hiển thị màn hình LCD

Trang 12

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ậyFPGA ư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úcmả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 độnghơ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ậptrì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ớnnhư 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ểunày như Synopsys, Synplify Các gói phần mềm này có khả năng thực hiện tất

Trang 13

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 tyXilinx 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 khiCPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLAcò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ốiSPLD(Simpleprogrammable devices, thuật ngữ chung chỉ PAL, PLA) SPLD thường là mộtmả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ácphầ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ơnnhiề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ứanhiề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 FPGAphứ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ợpnhiều những bộ logic số học đã sơ bộ tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao,hay cácbộ nhân cộng(multiplication and accumulation, MAC), thuật ngữ tiếngAnh làDSP slicedù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 khivẫn đảm bảo hoạt động bình thường cho các bộ phận khác

Trang 14

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ấuthành từ LUT và một phần tử nhớ đồng bộflip-flop,LUT(Look up table) là khốilogic 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ùyvà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áiniệmSLICE, 1 Slice tạo thành từ gồm 4khố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

Trang 15

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ọclogic

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 haiphương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chiathà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ốichuyển mạchlập trình được (programmable switch), trong một khối chuyểnmạ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ênkết phức tạp khác nhau

Trang 16

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òngVirtex 4,5 của Xilinx có chứa nhân xử lý PowerPC, hay trong Atmel FPSLICtích hợp nhânAVR…, hay cho những ứng dụng xử lý tín hiệu số DSPtrongFPGA được tích hợp cácDSP Slidelàbộ nhân cộngtốc độ cao, thực hiện hàmA*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSPslicesvớ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ượngnhư 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

Trang 17

Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàngkhô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ờ Hydracó 32

bộ vi xử lý cộng thêm FPGA đã chiến thắng kiện tướng quốc tếMichaelAdamstrong 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ớpnhữ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 logiclớn FPGA được ứng dụng cho những bài toán đòihỏ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 gianthự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 nhautrong mỗi họ

Trang 18

Ví dụ : Spartan 3, Spartan 3E, Spartan 6, Spartan 6 Lower Power, Virtex 4Virtex 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ầncứng khác và các lõi mềm IP Các họ FPGA thường khác nhau về mật độ tíchhợ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úctruyề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ỉ transistortrong 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

Trang 19

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 :

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ớichứ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

Trang 20

Hình 2.10 : Cấu tạo Slice

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àothiế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 đầuvà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ớiport B, Phía trên 16 bit port B,bus đầu vào của port B được chia sẻ với bus đầuvào của bộ nhân

tính toán kết quả đầu ra

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 :

Trang 21

• Loại bỏ chênh lệch clock : Xảy ra do xung clock trong hệ thống bị lệchtrong quá trình phân phối Điều này làm tăng thời gian thiết lập và thờigian 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 311MHz, 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 :

Trang 22

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

• 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

Trang 23

 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.1 Giới thiệu

VHDL là viết tắt của cụm từ Very High Speed Intergrated Circuit HardwareDescription Language - ngôn ngữ mô phỏng phần cứng cho các mạch tích hợptốc độ rất cao VHDL là ngôn ngữ mô phỏng phần cứng được phát triển dùng chochươ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ỏngphầ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ụngtrong thực tế Ngôn ngữ VHDL được ba công ty Intermetics, IBM và TexasInstruments bắt đầu nghiên cứu phát triển vào 7/1983 Phiên bản đầu tiên đượccông bố vào 8/1985 Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thànhmột tiêu chuẩn Năm 1987, đã đưa ra tiêu chuẩn về VHDL – tiêu chuẩn IEEE-1076-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ấtnhiề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ìmhiể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

Trang 24

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ầncứng đó được phát triển để phục vụ các bộ mô phỏng chạy chúng Vì các ngônngữ mô phỏng phần cứng đó được các nhà cung cấp thiết bị phát triển, nên mangcá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ắnvới bất kỳ một phương pháp thiết kế, bộ mô phỏng hay công nghệ phần cứngnào Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trongkhi 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ầncứ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ướcnhư 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

Trang 25

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ôitrườ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àicủ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ếntrú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ềunà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 doVHDL 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)

Trang 26

Một trong các nhiệm vụ rất quan trọng là kiểm tra bản mô tả thiết kế Kiểmtra một mô hình VHDL được thực hiện bằng cách quan sát hoạt động của nótrong khi mô phỏng Thông thường các bộ mô phỏng có cung cấp khả năng kiểmtra, nhưng cũng có thể xây dựng một môi trường kiểm tra VHDL Môi trườngkiểm tra có thể hiểu như một mạch kiểm tra ảo Môi trường kiểm tra sinh ra cáctác động lên bản thiết kế và cho phép quan sát hoặc so sánh kết quả hoạt độngcủa bản mô tả thiết k

2.3.4 Cấu trúc chung của một chương trình

Sau đây là cấu trúc chung đơn giản của một chương trình mô tả VHDL:

Ví dụ cấu trúc 1 file mô tả cho một hệ thống phần cứng số dùng VHDL

 Khai báo thư viện, mặc định cần khai báo thư viện IEEE (thư viện chuẩn

Khai báo các tham số generic nếu cần:

Generic( khai báo danh sách các tham số);

Port( Khai báo danh sách các cổng vào/ra);

End Tên_thực_thể;

 Bắt đầu viết

Architecture Tên_kiến_trúc of Tên_thực_thể is

{Khai báo: kiểu dữ liệu, các component, các đối tượng constant, signal} Begin

{ Viết các mô tả dùng cấu trúc lệnh song song }

Process( danh sách tín hiệu kích thích nếu cần)

{Khai báo:kiểu dữ liệu, các đối tượng biến constant, variable }

Begin

{ Viết các mô tả dùng cấu trúc lệnh tuần tự } End process;

Trang 27

{ Viết các mô tả dùng cấu trúc lệnh song song hay process khác }

End Tên_kiến_trúc;

Để có thể tiến hành viết chương trình, biên dịch, tổng hợp và cấu hình lên kitFPGA, đồ án sử dụng phần mềm ISE phiên bản 13.2 do hãng Xilinx cung cấp

Hình 2.12 : Giao diện chương trình ISE khi mới khởi động

Để tiến hành viết chương trình ta tiến hành các bước sau :

Bước 1: Tạo project mới

Trên thanh menu nhấn New->Project một hộp thoại New Project Wizard hiện

ra, ta nhập tên project muốn tạo và nhấn phím next

Trang 28

Hình 2.13 : Giao diện cửa sổ New project wizard

Tiếp theo, ta chọn các thông số ứng với chip sẽ thực hiện việc cấu hình, cácthông số quan trọng như Family, Device, Package, VHDL Source AnalysisStandard… Sau khi chọn xong các thông số ta nhần phím next, việc tạo mộtproject mới đã hoàn thành

Trang 29

Hình 2.14 : Giao diện cửa sổ Project Setting Bước 2: Tạo file nguồn mới

Project khi mới tạo sẽ chưa có file nguồn chứa chương trình, vì vậy ta sẽ tạo

ra các file nguồn này như sau : Nhấn vào menu Project-> New Source, cửa sổNew Source Wizard hiện ra, lựa chọn VHDL Module và nhập tên cho source sau

đó nhấn phím next

Trang 30

Hình 2.15 : Giao diện cửa sổ New Source Wizard

Tiếp theo, cửa sổ Define module hiện ra, ta đặt tên cho các tín hiệu vào, racho module cũng như hướng của các tín hiệu đó Nếu tín hiệu là một Bus ta tíchvào check box Bus và đặt MSB, LSB cho tín hiện ứng với chỉ số cao nhất và thấpnhất của Bus tín hiệu Sau đó nhấn phím next, quá trình thêm source file mới đãhoàn thành

Trang 31

Hình 2.16 : Giao diện cửa sổ Define Module Bước 3: Thên source file đã có sẵn

Ngoài việc thêm các source mới như đã thực hiện ở bước 2, ta có thể thêmvào project các source file có sẵn như sau : Nhấn vào menu Project-> AddSource, cửa sổ add source hiện ra, ta chọn tới file source cần thêm vào project vànhấn nút open, như vậy việc add source file cho project đã hoàn thành

Trang 32

Hình 2.17 : Giao diện cửa sổ Add Source

Ngoài phần mềm trên, đồ án còn sử dụng một phần mềm nhỏ để tính toán giátrị DCM như sau : Ta chỉ cần chọn tần số clock ngõ vào và ngõ ra, sau đó nhấnphím next, phần mềm sẽ tín toán các hệ số với sai số nằm trong phạm vi chophép

Hình 2.18 : Giao diện chương trình tính hệ số cho DCM

Trang 33

CHƯƠNG 3

LẬP TRÌNH

3.1 BÀI TOÁN ĐẶT RA

3.1.1 Giao diện trò chơi

Game được hiển thị trên màn hình WXGA 1366 X 768 với giao diện đượcchia làm 2 phần như sau :

 Phần hiển thị chú chim flappy bird và chướng ngại vật

Chú chim flappy bird xuất hiện tại giữa màn hình và không dịch chuyển quahai bên trái-phải, khi người chơi bấm nút hoặc sau một thời gian nhất định sẽ tựđộng bay lên hoặc rơi dần xuống với tốc độ nhanh dần Game sẽ thiết kế tốc độrơi gồm 9 cấp độ, khi người chơi bấm nút tốc độ rơi sẽ được reset về mức 1 vàtăng dần khi người chơi không bấm nút

Trướng ngại vật lần lượt xuất hiện từ bên góc trái màn hình và chạy sang bêngóc phải màn hình gồm 2 trướng ngại vật ( ống trên và ống dưới ) khoảng cáchgiữa 2 cặp trướng ngại vật bất kì là cố định Trong quá trình dịch chuyển tốc độcủa các trướng ngại vật là cố định , tung độ của các ống là ngẫu nhiên Mỗi mộtthời điểm sẽ có hai cặp trướng ngại vật xuất hiện

Khi chim bay qua một cặp ống, điểm sẽ được tăng lên Ngược lại, nếu chimchạm vào ống bất kì hoặc chạm vào 2 cạnh trên dưới điểm sẽ reset về 0 và tròchơi kết thúc

 Phần hiển thị điểm

Phần hiển thị điểm nằm bên góc phải màn hình, bao gồm dòng chữ cho biếtthông tin nó hiển thị và điểm số của người chơi hiện đạt được

Trang 34

Hình 3.1 : Giao diện chương trình

3.1.2 Hệ thống điều khiển

Sử dụng nút nhấn để chơi game, khi nút được nhấn chú chim sẽ bay lên caohơn, tùy vào tốc độ nhấn chú chim bay lên các khoảng khác nhau, cụ thể tốc độnhấn như sau :

 Nhấn một lần trong 0.5s

 Nhấn hai lần trong 0.5s

 Nhấn ba lần trong 0.5s

Đồng thời, khi nhấn nút tốc độ rơi xuống của chim sẽ được reset về mức 1

3.2 LƯU ĐỒ GIẢI THUẬT

3.2.1 Lưu đồ tổng quát

Trang 35

Hình 3.2 : Lưu đồ tổng quát chương trình

3.2.2 Điều khiển màn hình WXGA 1360 X 768

a Cổng VGA

Cổng VGA gồm có 5 tín hiệu active gồm: tín hiệu đồng bộ ngang, tín hiệuđồng bộ dọc, 3 tín hiệu video Red, Green, Blue

Trang 36

Hình 3.3 : Cổng VGA

Khi ta cấp tín hiệu điều khiển màn hình, cần cung cấp thời gian đồng bộ chínhxác, như vậy tín hiệu được gửi tới mới được nhận dạng là video và hiển thị trênmàn hình

Hình 3.4 : Xung đồng bộ ngang và dọc tích cực dương

Hình 3.5 : Xung đồng bộ ngang tích cực dương và dọc tích cực âm

Trang 37

Hình 3.6 : Xung đồng bộ ngang và dọc tích cực âm

Hình 3.7 : Xung đồng bộ ngang tích cực âm và dọc tích cực dương

Hình 3.8 : Xung đồng bộ trong một chu kỳ quét toàn màn hình

Như vậy, xung đồng bộ ngang bắt đầu tích cực tại đầu mỗi dòng và duy trìmức tích cực trong thời gian Hor Sync Sau đó xung đồng bộ ngang duy trì ởmức không tích cực, cho tới khi bắt đầu hiển thị dòng tiếp theo

Trang 38

Xung đồng bộ dọc bắt đầu tích cực tại vị trí bắt đầu khung hình mới, duy trìmức tích cực trong thời gian Ver Sync Sau đó xung đồng bộ dọc duy trì ở mứckhông tích cực, cho tới khi bắt đầu hiển thị khung hình mới.

Tạo khối xung quét ngang và dọc

Từ phân tích trên, ta xây dựng hai bộ đếm được ghép nối tiếp, bộ đếm cơ sở

là bộ đếm cho xung quét ngang (kí hiêu HS) với xung clock đầu vào có tần sốđúng bằng tần số pixel của màn hình (85.5MHz) lấy từ DCM Bộ đếm thứ 2 làxung quét dọc (hay còn gọi là bộ đếm hàng kí hiệu VS) VS sẽ được tăng lên 1đơn vị sau khi mỗi hàng được đếm xong

Hình 3.9 : Lưu đồ tạo khối xung quét ngang và dọc

3.2.3 Đối tượng chim

Trang 39

Game hoạt động trên thời gian thực, các đối tượng như chim, trướng ngại vật

sẽ thay đổi vị trí sau những khoảng thời gian nhất định Để định được khoảngthời gian đó, ta dựa vào xung cấp của hệ thống (85.5MHz) Sau khoảng 16ms( thời gian lựa chọn ) tọa độ của chim được cập nhật theo trạng thái của nó, vi

dụ : nếu người sử dụng không bấm nút cho chim bay lên biến TT_rot liên tụctăng lên từ 1-9 làm tốc độ rơi của chim sẽ tăng lên TT_rot * 3 px, chim rơi xuốngtheo trục dọc màn hình nhanh dần Khi người sử dụng nhấn nút chim sẽ bay lêntheo 3 mức độ TT_bay = 0.1.2 ứng với độ dời lên trên theo trục dọc màn hình100px, 140 px và 180 px

Lưu đồ cho đối tượng chim Lưu đồ cho chức năng chim bay lên

và chim rơi xuống

Ngày đăng: 30/05/2017, 22:04

TỪ KHÓA LIÊN QUAN

w