TỔNG QUAN
Lý do chọn đề tài
Trong những năm gần đây, nền công nghệ thông tin nước ta đã có phát triển trên mọi lĩnh vực trong cuộc sống cũng như trong lĩnh vực quản lý xã hội khác Một trong những lĩnh vực được nhiều người quan tâm là lĩnh vực giải trí Game vừa là một cách giúp con người giải trí, giúp chúng ta có khả năng tư duy, đầu óc nhạy bén Ngoài ra, game còn giúp con người có thể tập trung cao độ hơn, rèn luyện tính quyết tâm, kiên trì, tích lũy kinh nghiệm xử lí vấn đề …Với sự số hóa ngày càng phổ biến, với nhiều công nghệ tiên tiến ra đời, việc thiết kế game trên công nghệ FPGA không chỉ đơn thuần là để giải trí mà còn là một cơ hội để xem xét cách sử dụng công nghệ số ảnh hưởng đến cuộc sống xã hội Điểm đặc biệt của việc tạo ra các trò chơi trong đề tài này là sự kết hợp giữa lập trình game, khả năng tích hợp nhiều game trên một thiết bị và những ưu điểm về phần cứng của công nghệ FPGA.
Trò chơi con rắn (Snake Game) và trò chơi bóng bàn (Pong game) không chỉ là hai trò chơi kinh điển được nhiều người chơi, mà còn có tầm quan trọng trong lĩnh vực phát triển trò chơi và điện tử Em chọn đề tài với mục tiêu thiết kế một máy chơi Game tích hợp hai trò chơi này tận dụng những ưu điểm của công nghệ FPGA Em hy vọng rằng công trình này có thể đóng góp kiến thức mới và giúp người khác hiểu rõ hơn về cách hoạt động của trò chơi điện tử và công nghệ FPGA.
Vì vậy, việc chọn đề tài “ Xây dựng chương trình Game trên màn hình VGA sử dụng công nghệ FPGA ” dựa trên sự kết hợp của sự quan tâm cá nhân, khả năng áp dụng kiến thức, giá trị thực tế, và hy vọng đóng góp cho cộng đồng
1.1 Mục đích nghiên cứu Ứng dụng công nghệ FPGA vào thiết kế và xây dựng hệ thống Game trên nền tảng FPGA, chương trình được thực hiện trên Kit Altera De2-115 hiển thị lên màn hình VGA Chương trình điều kiển trên Kit Altera De2-115 và thiết bị ngoại vi ( bàn phím), so sánh sự tối ưu khi điều khiển trên Kit và thiết bị ngoại vi.
1.1 Đối tượng và phạm vi nghiên cứu
- Tìm hiểu về ngôn ngữ VHDL, Verilog và phần mềm Quartus II
- Tìm hiểu nguyên lý hoạt động và cách kết nối của màn hình VGA
- Tìm hiểu nguyên lý hoạt động của Snake Game, Pong Game
- Tìm hiểu nguyên lý hoạt động của thiết bị ngoại vi (bàn phím)
- Chương trình được thực hiện trên phần mềm Quartus II và trên Kit Altera De2- 115
- Viết chương trình Snake Game
- Viết chương trình Pong Game
- Thông số màn hình VGA
- Cách điều khiển bằng thiết bị ngoại vi (bàn phím)
1.2 Cách tiếp cận và phương pháp nghiên cứu
Tiếp cận từ nhu cầu thực tiễn, tìm hiểu lý thuyết và áp dụng vào để giải quyết những vấn đề được đặt ra trong bảo mật thông tin Sử dụng kiến thức đã học trên lớp, ngôn ngữ VHDL, Verilog các thông tin sưu tầm trên Internet, từ đó tìm ra các phương pháp để đáp ứng các yêu cầu mà đề tài cần.
Dựa trên các vấn đề đã đưa ra phương pháp nghiên cứu để hoàn thành tốt đề tài:
- Phương pháp nghiên cứu tài liệu : Tìm hiểu về Snake Game và Pong Game, cách xây dựng chương trình VHDL/Verilog để thực hiện xử lý các thuật toán theo đúng yêu cầu
- Phương pháp thực nghiệm : Dựa trên nguyên tắc của trò chơi để viết chương trình mô phỏng hệ thống.
- Đánh giá kết quả đạt được.
Phần mở đầu sẽ trình bài thực trạng và tầm quan trọng của FPGA hiện nay từ đó đưa ra mục đích và lý do thực hiện đề tài.
Giới thiệu tổng quan về đề tài, trình bày nội dung và các mục tiêu cần đạt được
CƠ SỞ LÝ THUYẾT
Công nghệ FPGA
2.1.1 Lịch sử ra đời của FPGA
FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty Xilinx 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 một vi mạch So với kiến trúc trước đó là CPLD, FPGA có khả năng chứa 100.000 đến vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn thấp hơn nữa, chỉ đạt vài nghìn tới 10.000.
CPLD được cấu trúc từ một số lượng nhất định các khối SPLD (Simple programable logic device) thuật ngữ chung chỉ PAL, PLA SPLD thường là mảng logic AND/OR lập trình được có kích thước nhất đị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 cà 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, mỗi khối này 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 SPLD.
Một điểm khác biệt nữa với CPLD là trong những FPGA hiện đại tích hợp nhiều bộ logic số học đã được tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay các bộ nhân, cộng dùng cho những ứng dụng xử lý tín hiệu số.
Ngoài khả năng cấu trúc lại vi mạch ở mức toàn cục, một số FPGA hiện đại còn hỗ trợ cấu trúc lại ở mức cục bộ, tức là khả năng cấu trúc lại 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.
2.1.2 Giới thiệu về phần cứng FPGA
Field-programmable gate array (FPGA) là một mạch tích hợp bao gồm các khối phần cứng bên trong với các kết nối liên kết có thể lập trình cho người dùng để tùy chỉnh hoạt động cho một ứng dụng cụ thể Các kết nối liên kết có thể dễ dàng được lập trình lại, cho phép FPGA thích ứng với các thay đổi đối với thiết kế hoặc thậm chí hỗ trợ một ứng dụng mới trong suốt thời gian hoạt động của bộ phận.
FPGA có nguồn gốc từ các thiết bị trước đó như bộ nhớ chỉ đọc có thể lập trình (PROM) và thiết bị logic có thể lập trình (PLD) Các thiết bị này có thể được lập trình tại nhà máy hoặc tại hiện trường, nhưng chúng sử dụng công nghệ cầu chì (do đó, cụm từ “đốt một PROM”) và không thể thay đổi sau khi được lập trình Ngược lại, FPGA lưu trữ thông tin cấu hình của nó trong một phương tiện có thể lập trình lại như RAM tĩnh (SRAM) hoặc bộ nhớ flash Các nhà sản xuất FPGA bao gồm Intel, Xilinx, Lattice Semiconductor, Microchip Technology và Microsemi.
Hình 2.1 Kiến trúc chung FPGA Điểm mạnh của FPGA so với CPU là có thể triển khai nhiều mạch nhỏ hơn để chạy song song, trong khi CPU là một mạch tuần tự Các kết quả từng phần của mã hóa có thể được tính toán song song và được kết hợp trong giai đoạn sau, giúp giảm đáng kể số lượng chu kỳ cần thiết FPGA không thể chạy ở cùng tần số xung nhịp với CPU hiện đại (nằm trong phạm vi GHz), FPGA thường chạy với xung nhịp xử lý bên trong là 25-500 MHz Mặc dù tần số xung nhịp thấp hơn nhưng FPGA có thể xử lý dữ liệu nhanh hơn nhiều so với CPU, do khả năng xử lý song song – do đó mã hóa dữ liệu ở tốc độ cao.
2.1.3 Các bước thiết kế cho FPGA
Bước 1: Nhập thiết kế (Design Entry)
Các công cụ thiết kế cho phép nhập thiết kế theo các cách:
• Nhập thiết kế theo sơ đồ nguyên lý Schematic: Người thiết kế sử dụng các mô-đun sẵn có trong thư viện Schematic để ghép nối chúng với nhau tạo thành bản thiết kế theo yêu cầu Từ sơ đồ nguyên lý đã thiết kế được công cụ phần mềm sẽ chuyển đổi sang file ngôn ngữ mô tả phần cứng HDL, và phổ biến là VHDL hoặc Verilog.
• Nhập thiết kế dưới dạng sơ đồ: Công cụ thiết kế còn cho phép nhập thiết kế dưới dạng sơ đồ mà điển hình là đồ hình trạng thái FSM, sau đó chúng cũng được chuyển đổi sang HDL.
Bước 2: Kiểm tra thiết kế (Design Verification)
Thực hiện kiểm tra, mô phỏng chức năng hoạt động của thiết kế HDL đã tạo ra ở trên Bước này có thể không cần phải thực hiện khi thiết kế.
Bước 3: Tổng hợp thiết kế (Design Synthesis)
Sau khi hoàn thành mô phỏng thiết kế, bước tổng hợp tiếp theo có nhiệm vụ chuyển thiết kế dưới dạng file văn bản HDL thành dạng file Netlist, thực hiện mô tả mạch thực ở mức thấp dưới dạng cổng logic và kết nối với nhau
Bước 4: Thực hiện thiết kế (Design Implementation)
Bước này sử dụng file Netlist và file ràng buộc “contrains file” (mô tả các nguyên tắc thiết kế, các ràng buộc về vật lý như gán vị trí cho các đầu vào/ra trên chip, các ràng buộc về tốc độ, thời gian, tần số ) để tạo thiết kế sử dụng tài nguyên có sẵn của FPGA.
Bước này bao gồm các bước: Translate, Map, Place and Routing.
• Translate: Bước này nhằm thực hiện kiểm tra thiết kế và đảm bảo file
Netlist phù hợp với kiến trúc FPGA đã chọn, kiểm tra file ràng buộc “contrains file” của người sử dụng để phát hiện các lỗi mâu thuẫn với tham số của FPGA đã chọn Translate thường bao gồm các quá trình: Tối ưu hoá, biên dịch thành các thành phần vật lý của cấu kiện; kiểm tra ràng buộc thiết kế Khi kết thúc
Translate, sẽ có một văn bản báo các về các chương trình được sử dụng, danh sách các cổng I/O và các cấu kiện được sử dụng trong thiết kế.
• Map: Tạo bản phân bố thiết kế tới các tài nguyên cụ thể trong FPGA.
Nếu thiết kế quá lớn so với thiết bị được chọn, quy trình này không thể hoàn thành nhiệm vụ của mình Quá trình Map có các tham số ràng buộc của thiết kế, ví dụ như tham số tốc độ, thời gian của thiết kế và đôi khi quyết định gắn thêm các thành phần logic để đáp ứng các yêu cầu về thời gian Bước này nhằm đưa ra mạch thiết kế vào một thiết bị cụ thể Bước này cũng tạo ra báo cáo xác nhận các tài nguyên sử dụng trong chip, mô tả chính xác các thành phần trong thiết kế được đặt ở vị trí nào trong chip thực tế.
Kit Altera DE2 – 115
- Kit Altera DE2-115 là một sản phẩm chất lượng của Terasic Technologies, được thiết kế để đáp ứng nhu cầu đa dạng của cộng đồng phát triển và nghiên cứu mạch điện tử Với sự tích hợp của chip FPGA, kit này mang lại khả năng linh động và tùy chỉnh cao, cho phép người dùng triển khai từ các mạch đơn giản đến các dự án phức tạp, đặc biệt là trong lĩnh vực các dự án đa phương tiện.
- DE2-115 không chỉ có nhiều tính năng vượt trội mà còn được trang bị các cổng và giao tiếp đa dạng như USB, Ethernet, VGA, âm thanh, và nhiều cổng GPIO. Điều này tạo điều kiện thuận lợi cho việc kết nối và giao tiếp với nhiều thiết bị khác nhau.
- Bảng DE2-115 có nhiều tính năng cho phép người dùng triển khai nhiều mạch được thiết kế khác nhau, từ mạch đơn giản đến các dự án đa phương tiện đa dạng. Dưới đây là thông số kỹ thuật chi tiết về phần cứng được cung cấp trên bảng DE2-115:
Chip FPGA Altera Cyclone® IV 4CE115.
Thiết bị cấu hình chuỗi Altera - EPCS64.
USB Blaster tích hợp (trên bo mạch) để lập trình; hỗ trợ cả chế độ lập trình
Hai thanh RAM SDRAM 64MB.
18 đèn LED người dùng màu đỏ.
9 đèn LED người dùng màu xanh lá cây.
Dao động 50MHz cho nguồn clock.
Bộ mã hóa âm thanh CD-chất lượng 24-bit với cổng vào dòng, cổng ra dòng và cổng vào micro.
VGA DAC (3 DACs tốc độ cao 8-bit) với cổng ra VGA.
Bộ giải mã TV (NTSC/PAL/SECAM) và cổng vào TV.
2 PHY Ethernet Gigabit với kết nối RJ45.
Bộ điều khiển USB Host/Slave với các kết nối USB loại A và loại B.
Bộ truyền thông RS-232 và kết nối 9 chân.
Kết nối chuột/ bàn phím PS/2.
2 kết nối SMA cho đầu vào/ra clock từ bên ngoài.
Một tiêu chuẩn 40-pin Expansion Header với bảo vệ bằng diode.
Một kết nối High-Speed Mezzanine Card (HSMC).
- Ngoài các tính năng phần cứng này, bảng DE2-115 cũng hỗ trợ phần mềm cho các giao diện I/O tiêu chuẩn và một điều khiển cấu hình để truy cập vào các thành phần khác nhau Hơn nữa, phần mềm cung cấp hỗ trợ cho nhiều bài thực hành để minh họa khả năng tiên tiến của bảng DE2-115.
Giới thiệu về PS2 – Keyboard
Chuẩn PS2 được IBM giới thiệu để giao tiếp, truyền dữ liệu giữa bàn phím, chuột với máy chủ.
Sơ đồ chân của cổng PS2
Dữ liệu được truyền nối tiếp từng bit theo khung truyền 11 bit gồm:
1 parity bit kiểm tra lẻ.
Hình 2.4 Sơ đồ thời gian của cổng PS2
Các máy tính IBM và tương thích sử dụng các kiểu bàn phím sau:
Bàn phím XT chuẩn 83 phím
Không hỗ trợ từ host đến bàn phím
Sử dụng scan code set 1
Bàn phím AT chuẩn 84 – 101 phím
Sử dụng scan code set 2
Hỗ trợ sử dụng scan code set 3
Có 17 lệnh host to keyboard
2.3.3 Cấu trúc và giao tiếp bàn phím
Mỗi phím là 1 chuyển mạch switch, tạo ra một tiếp xúc điện khi ấn phím
Các loại nút phổ biến:
Cáp bàn phím được nối đến chip ngoại vi 8255A.
Bộ điều khiển bàn phím thường là chip 8042, 8048, 8049, 8741, 8742, 6868, 6805. Khi chip điều khiển nhận được yêu cầu từ bàn phím,chip này gửi tín hiệu ngắt IRQ1 và truyền dữ liệu vào CPU.
2.3.4 Mã quét bàn phím (Scan code) :
Hình 2.5 Bảng mã Scan Code
Khi nhấn hay nhả 1 phím, bộ xử lý bàn phím gửi đến PC mã quét (Scan code) của phím được nhấn
Khi phím được nhấn, mã này được gọi là make – code
Khi phím được nhả, mã này được gọi là break – code
Bàn phím PS2 giao tiếp bằng giao thức nối tiếp bất đồng bộ 2 chiều
Xung clock được phát bởi bàn phím, tần số khoảng 10 – 16.7 kHz
Các trạng thái hoạt động:
Data = high, Clock = high: trạng thái rảnh
Data = high, Clock = low: trạng thái cấp giao tiếp
Data = low, Clock = high: trạng thái này chủ yếu yêu cầu truyền dữ liệu
Màn hình VGA
- VGA là viết tắt của “ video graphic array”, là một chuẩn đồ họa được giới thiệu trong cuối những năm 1980 từ phía IBM cùng loại máy tính PS/2 Trong các phần sau, chúng ta sẽ thảo luận về giao diện có độ phân giải 640 x 480 với 8 màu cơ bản của màn hình CRT ( cathode ray tube).
- Dưới đây là bảng kết hợp màu từ 3 bit của VGA:
- Cổng VGA có 5 tín hiệu tích cực bao gồm các tín hiệu đồng bộ theo phương ngang và phương dọc, h_sync và v_sync và 3 tín hiệu hình ảnh cho 3 màu đỏ, xanh, xanh dương.
- Hình ảnh là một tín hiệu tương tự, và bộ điều khiển video sử dụng một bộ chuyển đổi DAC để chuyển đổi tín hiệu số đầu ra thành mức tương tự mong muốn Nếu một tín hiệu hình ảnh N-bit thì tín hiệu này có thể được chuyển thành 2N mức tương tự.
- Trong phần thảo luận, chúng ta dùng tín hiệu hình ảnh màu 3 – bit nên đầu ra chúng ta sẽ thu được 2 3 = 8 màu cơ bản như được liệt kê trong bảng trên.
- Một bộ điều khiển hình ảnh tạo ra các tín hiệu đồng bộ và các pixel dữ liệu đầu ra.
Mạch đồng bộ, kí hiệu là VGA_sync.
Mạch tạo pixel “Pixel generation circuit”
- Mạch VGA_sync tạo ra các tín hiệu đồng bộ và tín hiệu thời gian Tín hiệu h_sync và v_sync được nối với cổng VGA để điều khiển chế độ quét theo phương ngang và phương dọc của bộ điều khiển Pixel_x và pixel_y là đầu ra của các tín hiệu được giải mã từ bộ đếm ở bên trong Hai tín hiệu này xác định vị trí của pixel hiện tại Mạch VGA_sync cũng tạo ra tín hiệu video_on để xác định khi nào thì kích hoạt hay vô hiệu hóa tín hiệu hiển thị trên màn hình
Hình 2.7: Sơ đồ khối của bộ điều khiển VGA
- Mạch pixel generation circuit tạo ra 3 tín hiệu hình ảnh rgb Màu thu được tương ứng với tọa độ của các pixel hiện tại và các tín hiệu dữ liệu và điều khiển từ bên ngoài.
- Mạch này tạo ra các tín hiệu đồng bộ theo phương ngang h_sync và đồng bộ theo phương dọc v_sync Trong đó :
h_sync: chỉ ra thời gian cần thiết để quét hết một hàng.
v_sync: chỉ ra thời gian cần thiết để quét hết toàn bộ màn hình.
- Trong phần thảo luận của chúng ta dùng màn hình có độ phân giải 640x480 với tốc độ pixel là 25Mhz, nghĩa là trong 1s màn hình xử lý 25M pixel.
2.4.5 Tín hiệu đồng bộ theo phương ngang
- Sơ đồ thời gian quét của tín hiệu đồng bộ theo phương ngang như hình 2 8 Một chu kì của tín hiệu h_sync được chia làm 4 vùng:
Vùng hiển thị: là vùng mà các pixel được hiển thị trên màn hình.
Vùng quét ngược: là vùng mà các tia điện tử quay ngược lại về phía cạnh bên trái.
Vùng biên phải: là vùng màu đen bên phải, trong vùng này các tín hiệu hình ảnh bị vô hiệu hóa không được hiển thị.
Vùng biên trái: là vùng màu đen bên trái và giống như vùng biên bên phải, trong vùng này thì các tín hiệu hình ảnh không được hiển thị.
Hình 2.8: Sơ đồ thời gian quét theo phương ngang
2.4.6 Tín hiệu đồng bộ theo phương dọc
- Sơ đồ thời gian quét của tín hiệu đồng bộ theo phương dọc như sau:
Vùng hiển thị: là vùng mà các pixel được hiển thị trên màn hình.
Vùng quét ngược: là vùng mà các tia điện tử quay ngược lại về phía cạnh bên trên.
Vùng biên trên: là vùng màu đen bên trên, trong vùng này các tín hiệu hình ảnh bị vô hiệu hóa không được hiển thị.
Vùng biên dưới: là vùng màu đen bên dưới và giống như vùng biên bên trên,trong vùng này thì các tín hiệu hình ảnh không được hiển thị.
Hình 2.9: Sơ đồ thời gian quét theo phương dọc
- Gọi p là số pixel trong 1 hàng ngang, l là số đường ngang trong 1 màn hình và s là số màn hình hiển thị trong 1s thì tốc độ pixel bằng p*l*s.
- Chú ý: để màn hình không bị nhấp nháy thì s phải lớn hơn hoặc bằng 24.
- Với màn hình có độ phân giải 640x480 và số màn hình hiển thị trong 1s là 60 hình/s thì p = 800 pixel/line, lR5 line/screen, s` screen/second tốc độ pixel bằng 800x525x60 ≈25M pixel/s.
Dây cáp VGA
Dây cáp VGA Dsub 15pin ngắn nhất hiện nay, chiều dài từ 0.3M và 0.5M truyền hình ảnh cho 2 thiết bị đặt cạnh nhau Cáp VGA hay dùng cho máy tính mini cỡ nhỏ:ITX PC, Tiny PC, netcomputer, camera dvr, máy tính công nghiệp…ra màn hình máy tính, LCD, tivi.
Độ phân giải tối đa HD1080P 1920×1080
2.5.2 Sơ đồ chân của dây cáp VGA
Hình 2.11: Sơ đồ chân của dây cáp VGA
- Cấu tạo chi tiết chân của cáp VGA
Chân 1: Màu đỏ - Quan trọng
Chân 2: Màu xanh lá - Quan trọng
Chân 3: Màu xanh da trời - Quan trọng
Chân 4: ID2/RES Monitor ID bit 2
Chân 6: RED_RTN trả tín hiệu màu đỏ
Chân 7: GREEN_RTN trả tín hiệu màu xanh lá
Chân 8: BLUE_RTN trả tín hiệu màu xanh da trời
Chân 11: ID0/RES Monitor ID bit 0
Chân 12: ID1/SDA Monitor ID bit 1
Chân 13: HSync - Tín hiệu đồng bộ ngang
Chân 14: VSync - Tín hiệu đồng bộ dọc
Chân 15: ID3/SCL - Monitor ID bit 3
Trong 15 chân của cáp VGA thì các chân số 1,2,3,13,14 là 5 chân quan trọng nhất Về lý thuyết thì kể cả khi gãy các chân khác ngoài 5 chân này và hai chân GND thì cáp VGA vẫn hoạt động được Nếu các chân 1,2 và 3 bị gãy sẽ dẫn đến việc bị mất màu hoặc sai màu Các chân 13 và 14 khi bị gãy sẽ dẫn đến việc không có hình.
Màn hình máy tính là thiết bị điện tử gắn liền với máy tính với mục đích chính là hiển thị và giao tiếp giữa người sử dụng với máy tính.
Nhiệm vụ của màn hình là tái tạo lại hình ảnh Để tái tạo lại hình ảnh, phương pháp phổ biến nhất hiện nay là hiển thị hình ảnh dựa vào bản đồ ma trận điểm ảnh.Theo phương pháp này, một khung hình sẽ được chia ra làm vô số các điểm ảnh nhỏ.Các điểm ảnh có dạng hình vuông, có kích thước rất nhỏ Kích thước “thực” của một điểm ảnh là: 0.01 x0.01 (cm) Tuy nhiên kích thước thực này phần lớn chỉ có ý nghĩa lý thuyết, vì hầu như chúng ta ít khi quan sát được các điểm ảnh tại kích thước thực của chúng, một phần do chúng quá bé, một phần do kích thước quan sát của điểm ảnh phụ thuộc vào độ phân giải Với cùng một diện tích hiển thị, độ phân giải (số lượng điểm ảnh) càng lớn thì kích thước quan sát được của chứng càng bé Kích thước của một khung hình được cho bởi số lượng điểm ảnh theo chiều ngang và số lượng điểm ảnh theo chiều dọc Ví dụ kích thước khung hình 1600x1200 (pixel) có nghĩa khung hình dọc Độ phân giải càng cao, hình ảnh được hiển thị sẽ càng nét Độ phân giải đạt đến giá trị độ phân giải thực khi mà một pixel được hiển thị với đứng kích thước thực của nó (kích thước thực của pixel đựơc lấy sao cho ở một khoảng cách nhất định, pixel đó đựơc nhìn dưới một góc xấp xỉ bằng năng suất phân li của mắt người) Nếu độ phân giải bé hơn giá trị độ phân giải thực, mắt người sẽ có cảm giác hình ảnh bị sạn, không nét Nếu độ phân giải cao hơn độ phân giải thực, trên lý thuyết, độ nét và độ chi tiết của hình ảnh sẽ tăng lên, tuy nhiên thực sự mắt người không cảm nhận được hoàn toàn sự khác biệt này Mắt người cảm nhận hình ảnh dựa vào hai yếu tố, màu sắc và độ sáng (chói) của hình ảnh Màn hình muốn hiển thị được hình ảnh thì cũng phải tái tạo lại được hai yếu tố thị giác này của hình ảnh Về màu sắc, mắt người có khả năng cảm nhận hơn 4 tỉ sắc độ màu khác nhau, trong đó có một phổ màu khoảng hơn 30 triệu màu được cảm nhận rõ rệt nhất Muốn tái tạo lại hình ảnh chân thực, màn hình hiển thị cần phải có khả năng hiển thị ít nhất là khoảng 16 triệu màu Bình thường, khi muốn tạo ra một màu sắc, người ta sử dụng kĩ thuật lọc màu từ ánh sáng trắng, mỗi bộ lọc màu sẽ cho ra một màu Tuy nhiên, với kích thước vô cùng bé của điểm ảnh, việc đặt
16 triệu bộ lọc màu trước một điểm ảnh là gần như vô vọng Chính vì thế, để hiển thị màu sắc một cách đơn giản nhưng vẫn cung cấp khá đầy đủ dải màu, người ta sử dụng phương pháp phối hợp màu từ các màu cơ bản.
2.5.4 Phương pháp quét màn hình
Tần số quét là số lượng khung hình mà mắt bạn nhận được từ màn hình trong vòng một giây được tính bằng đơn vị Hz Ví dụ như 1 màn hình laptop có tần số quét là
60 Hz có nghĩa là nó có thể hiển thị 60 khung hình/giây Tần số quét cao sẽ cho ra chất lượng hình ảnh chân thực mượt mà và rõ nét hơn Nếu tần số quét thấp thì hình ảnh của bạn có thể bị nhòe, chuyển động không chân thực nhất là các pha chuyển động nhanh.
Do đó, các chi tiết nhỏ trên n ảnh cũng có thể không được rõ ràng và bắt nét đúng. Nguyên tắc hoạt động của tần số quét là vẽ lần lượt từng điểm trên màn hình từ trái sang phải thành một dòng, hết dòng trên xuống dòng dưới cho tới khi hoàn tất một khung hình
Các dòng trong một mành được quét xen kẽ Để khắc phục hiện tượng nhấp nháy do cách quét 25 hình (hoặc 30 hình) trong ls, người ta sử dụng cách quét xen kẽ; lần lượt quét mành lẽ theo thứ tự 1,3,5,7 rồi quét mành chẵn theo thứ tự 2,4,6,8 Như thế, trong một mành chẵn hay một mành lẽ,mỗi dòng chớp sáng (xuất hiện) 25 lần, nhưng 2 dòng kề nhau thuộc 2 mành khác nhau thì xuất hiện 50 lần trong ls Nhưng vì khoảng cách giữa 2 dòng rất bé nên mắt không phát hiện được Kết quả là ta có cảm giác số hình xuất hiện trong ls tăng gấp đôi, khắc phục được hiện tượng nhấp nháy của hình ảnh trên màn hình.
Hình 2.12: Cách quét màn hình xen kẽ
Ngôn ngữ mô tả phần cứng Verilog
2.6.1 Giới thiệu công nghệ (và ứng dụng) thiết kế bằng Verilog
- Hiện nay 2 ứng dụng chính và trực tiếp của Verilog là các ứng dụng trong các thiết bị logic có thể lập trình được (Programmable Logic Devices –PLD) (bao gồm các thiết bị logic phức tạp có thể lập trình được và các FPGA - Field Programmable Gate Arrays) và ứng dụng trong ASICs (Application Specific Integrated Circuits).
- Khi chúng ta lập trình cho các thiết bị thì chúng ta chỉ cần viết mã Verilog một lần, sau đó ta có thể áp dụng cho các thiết bị khác nhau (như Altera, Xilinx, Atmel,…) hoặc có thể để chế tạo một con chip ASIC Hiện nay, có nhiều thương mại phức tạp (như các vi điều khiển) được thiết kế theo dựa trên ngôn ngữ Verilog
2.6.2 Quy trình thiết kế mạch bằng Verilog
Như đề cập ở trên, một trong số lớn các ứng dụng của Verilog là chế tạo các mạch hoặc hệ thống trong thiết bị có thể lập trình được (PLD hoặc FPGA) hoặc trong ASIC Việc chế tao ra vi mạch sẽ được chia thành 3 giai đoạn như sau:
Chúng ta bắt đầu thiết kế bằng viết mã Verilog Mã Verilog này sẽ được lưu vào file có đuôi là vc và có tên cùng với tên thực thể Mã Verilog sẽ được mô tả ở tầng chuyển đổi thanh ghi.
Bước đầu tiên trong quá trình chế tạo là biên dich Quá trình biên dịch sẽ chuyển mã Verilog vào một netlist ở tầng cổng Bước thứ 2 của quá trình chế tạo là tối ưu Quá trình tối ưu được thực hiện trên netlist ở tầng cổng về tốc độ và phạm vi Trong giai đoạn này, thiết kế có thể được mô phỏng để kiểm tra phát hiện những lỗi xảy ra trong quá trình chế tạo.
Là giai đoạn ghép nối đóng gói phần mềm Ở giai đoạn này sẽ tạo ra sự sắp xếp vật lý cho chip PLD/FPGA hoặc tạo ra mặt nạ cho ASIC
2.6.3 Cấu trúc chương trình Verilog
Một đọan Code chuẩn của Verilog gồm tối thiểu 5 mục sau:
Khai báo Module tên chương trình (tên biến I/O);
Module module_name(port list);
Khai báo các dây nối:
Hình 2.13: Tóm tắt quy trình thiết kế Verilog
Kết nối các wire và module đã viết sẵn
Thuật toán (một số lệnh giống ngôn ngữ C như :if ,case,for,while )
Chuyển đổi thanh ghi (kết nối bằng các biểu thức Boolean).
Các cổng kết nối (cổng: OR, AND, NOT….).
Ngôn ngữ Verilog cũng chỉ rõ cách thức kết nối, điều khiển vào/ ra trong mô phỏng.
Một module là bản thiết kế chủ yếu tồn tại trong Verilog Dòng đầu tiên của khai báo module chỉ rõ danh sách tên và port (các đối số) Những dòng kế tiếp chỉ rõ dạng I/
O (input, output hoặc inout) và chiều rộng của mỗi port Mặc định chiều rộng port là 1 bit.
Sau đó, những biến port phải được khai báo wire, wand, reg Mặc định là wire. Những ngõ vào đặc trưng là wire khi dữ liệu được chốt bên ngoài module Các ngõ ra là dạng reg nếu những tín hiệu của chúng được chứa trong khối always hoặc initial
Module tên module (danh sách port);
Input [msb:lsb] danh sách port ngõ vào;
Onput [msb:lsb] danh sách port ngõ ra;
Inout [msb:lsb] danh sách port ngõ vào_ra;
Các chỉ định liên tiếp được dùng để gán một giá trị lên trên một wire trong một module Đó là các chỉ định thông thường bên ngoài khối always hoặc khối initial.Các chỉ định liên tiếp được thực hiện với một lệnh gán (assign) rõ ràng hoặc bằng sự chỉ định một giá trị đến một wire trong lúc khai báo Chú ý rằng, các lệnh chỉ định liên tiếp thì tồn tại và được chạy liên tục trong suốt quá trình mô phỏng.Thứ tự các lệnh gán không quan trọng.Mọi thay đổi bên phải của bất cứ ngõ vào sẽ lập tức thay đổi bên trái của ngõ ra.
Wire biến wire = giá trị;
Assign biến wire = biểu thức;
Hình 2.14: Các chế độ tín hiệu
Những khai báo module là những khuôn mẫu mà nó được tạo nên từ các đối tượng thực tế (instantiation) Các module đơn cử bên trong các module khác,và mỗi dẫn chứng tạo một đối tượng độc nhất từ khuôn mẫu.Ngoại trừ đó là module mức trên là những dẫn chứng từ chính chúng.
Các port của module ví dụ phải thỏa những định nghĩa trong khuôn mẫu Đây là mặt lý thuyết: bằng tên, sử dụng dấu chấm(.) “.tên port khuôn mẫu (tên của wire kết nối đến port)” Bằng vị trí, đặt những port ở những vị trí giống nhau trong danh sách port của cá khuôn mẫu lẫn instance.
Tên instance1 (danh sách kết nối port );
Tên instance2 (danh sách kết nối port);
Mô tả kiến trúc theo mô hình hoạt động:
Mô hình hoạt động mô tả các hoạt động của hệ thống (hệ thống đáp ứng với các tín hiệu vào như thế nào và đưa ra kết quả gì ra đầu ra) dưới dạng các cấu trúc ngôn ngữ lập trình bậc cao Cấu trúc đó có thể là WHILE, WAIT, IF, CASE, FOR …
Mô tả kiến trúc theo mô hình cấu trúc
Mô hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiều cấp cấu trúc bắt đầu từ một cổng logic đơn giản đến xây dựng mô tả cho một hệ thống hoàn thiện Thực chất của việc mô tả theo mô hình cấu trúc là mô tả các phần tử con bên trong hệ thống và sự kết nối của các phần tử con đó.(khối ALWAYS và khối INITIAL)
Hàm được khai báo trong phạm vi một module, và có thể được gọi từ những lệnh liên tục, khối always, hoặc những hàm khác Trong lệnh chỉ định liên tục, cũng được chỉ định liên tục khi bất kì các hàm khai báo ngõ vào thay đổi.Trong chương trình chúng được chỉ định tới khi cần gọi.
Các hàm mô tả sự kết nối logic và không tạo ra chốt Do đó một lệnh if mà không else sẽ mô phỏng, mặc dù nó có chốt dữ liệu nhưng mô phỏng thì không có Đây là trường hợp dở của tổng hợp không có mô phỏng theo sau Đây là khái niệm tốt để mã hóa hàm, vì vậy chúng sẽ không tạo ra chốt nếu mã hàm được dùng trong một chương trình.
THIẾT KẾ HỆ THỐNG
Mục tiêu thiết kế
Mục tiêu của thiết kế là xây dựng một hệ thống trò chơi bằng phương pháp sử dụng ngôn ngữ Verilog để thiết kế trò chơi trên Kit Altera DE2-115 và hiển thị trò chơi trên màn hình VGA
Bước đầu tiên của thiết kế liên quan đến việc hiểu nguyên lý và làm thế nào để kết nối màn hình VGA với Kit Altera để hiển thị trên màn hình Khi có thể hiển thị thành công hình ảnh trên màn hình bằng chương trình điều khiển VGA, bước tiếp theo là thiết kế được Snake Game và Pong Game hiển thị lên màn hình, sau đó điều khiển trò chơi bằng các nút nhấn trên Kit Altera và thiết bị ngoại vi.
Điều kiển màn hình VGA
Hình 3.1: Lưu đồ thuật toán màn hình VGA
3.2.2 Phương pháp điều khiển màn hình VGA Đầu tiên reset bộ đếm, tiếp theo là điều khiển bộ đếm quét lần lượt theo hàng ngang rồi đến hàng dọc Trong quá trình quét chúng ta sẽ kiểm tra để xuất ra màn hình giá trị màu tương ứng Sau khi quét lần lượt pixel, chúng ta kiểm tra yêu cầu bài toán(đếm ngang < 640 và đếm dọc < 480) Nếu đúng, xuất ra màn hình màu trắng và bật chế độ mở màn hình Nếu sai xuất ra màu đen Sau đó chương trình sẽ kiểm tra ngưỡng giới hạn ngang và giới hạn đứng nếu đạt ngưỡng thì reset và tiếp tục quá trình.
Điều khiển bàn phím PS2
Hình 3.2: Lưu đồ thuật toán bàn phím PS2
3.3.2 Phương pháp điều khiển bàn phím PS2
- Trạng thái Chờ Đợi: Khi bàn phím không gửi dữ liệu, nó liên tục gửi một hằng số 1 (cao) cho cả dữ liệu và xung đồng hồ.
- Dữ Liệu Khi Nhấn Phím: Mỗi lần nhấn một phím sẽ tạo ra ít nhất 33 bit dữ liệu từ bàn phím.
- Mã 'Make' và 'Break': Khi một phím được nhấn lần đầu, nó gửi 11 bit dữ liệu dưới dạng mã 'make' Khi phím được thả ra, nó sẽ gửi một mã 'break' 11 bit, sau đó là mã 'make' 11 bit tương tự.
- Gửi Dữ Liệu Khi Giữ Phím: Khi giữ một phím, bàn phím liên tục gửi lại cùng
- Thời Điểm Gửi Dữ Liệu: Bàn phím gửi dữ liệu vào cạnh âm của xung đồng hồ.
- Xung Đồng Hồ Nội Bộ: Bàn phím có xung đồng hồ riêng, và bạn không cần phải định nghĩa xung đồng hồ riêng để làm việc với bàn phím.
Xây dựng trò chơi
3.4.1 Sơ đồ khối hệ thống
Hình 3.3: Sơ đồ khối hệ thống
3.4.2.1 Xậy dựng game snake trên màn hình VGA Để viết chương trình điều khiển VGA, chúng ta có thể tạo ra một số hình ảnh có nhiều màu sắc với 3 màu chủ đạo ( Red, Green, Blue) bằng cách sử dụng một dãy số nhị phân trộn lẫn vào nhau Khung tường giới hạn được biểu diễn hiển thị các pixel màu xanh da trời bằng dãy số nhị phận 001 ( Red, Green, Blue).Khu vực di chuyển của rắn được biểu diễn hiển thị các pixel màu đen bằng dãy số nhị phân 000 ( Red, Green, Blue) Thân hình con rắn được biểu diễn hiển thị các pixel màu xanh lá xây bằng dãy số nhị phân 010 (Red, Green, Blue) Mồi thức ăn của rắn được biểu diễn hiển thị các pixel màu đỏ bằng các dãy số nhị phân 100(Red, Green, Blue)
Hình 3.4: Thiết lập giao diện Snake Game 3.4.2.2 Lưu đồ thuật toán
Hình 3.5: Lưu đồ thuật toán Snake Game 3.4.2.3 Nguyên lý hoạt động
Chương trình bắt đầu bằng cách khởi chạy trò chơi con rắn(Snake Game) trên màn hình VGA Người chơi sẽ điều khiển một con rắn và nhiệm vụ của họ là điều khiển con rắn bằng các phím điều hướng trên bàn phím Người chơi có thể di chuyển con rắn lên, xuống, sang trái, phải với mục đích con rắn sẽ ăn trúng những điểm mồi xuất hiện ngẫu nhiên trên màn hình Khi con rắn ăn mồi, nó sẽ lớn dần lên, tạo ra những thử thách mới Tuy nhiên, thử thách thực sự đến khi người chơi chắc chắn phải đối mặt với những bức tường hoặc cơ thể của chính con rắn Nếu chúng ta không kiểm soát và con rắn va chạm vào bất kỳ đường viền nào hoặc con rắn tự va chạm vào mình thì trò chơi sẽ kết thúc và người chơi sẽ thất bại
3.4.3.1 Xậy dựng game Pong trên màn hình VGA Để viết chương trình điều khiển VGA, chúng ta có thể tạo ra một số hình ảnh có nhiều màu sắc với 3 màu chủ đạo (Red, Green, Blue) bằng cách sử dụng một dãy số nhị phân trộn lẫn vào nhau Khung tường phải trái được biểu diễn hiển thi bằng các pixel màu xanh lá cây bằng dãy số nhị phân 010 (Red, Green, Blue) Khung tường trên dưới được biểu diễn hiển thị bằng các pixel màu tím bằng dãy số nhị phân 101 (Red, Green, Blue) Quả bóng được biểu diễn hiển thị bằng các pixel màu đỏ bằng dãy số nhị phân 100 (Red, Green, Blue) Khoảng trống cho quả bóng di chuyển được biểu diễn hiển thị bằng các pixel màu đen bằng dãy số nhị phân 000 (Red, Green, Blue) Mái chèo của 2 người chơi được biểu diễn hiển thị bằng các pixel màu xanh da trời bằng dãy số nhị phân 011 (Red, Green, Blue)
Hình 3.6: Thiết kế giao diện Pong Game
Hình 3.7: Lưu đồ thuật toán Pong Game 3.4.3.3 Nguyên lý hoạt động
Chương trình bắt đầu bằng cách khởi chạy trò chơi bóng bàn (Pong Game) trên màn hình VGA Mỗi người chơi sẽ tiếp cận trò chơi này với các nút nhấn trên Kit điều khiển để chiến đấu với đối thủ của mình.Thanh chắn, được điều khiển bởi người chơi, có thể di chuyển lên và xuống, tạo ra một cơ hội linh hoạt để đánh trái bóng về phía đối thủ Mục tiêu của trò chơi Pong rất đơn giản là đánh quả bóng bay về phía đối thủ của mình Bóng bay với tốc độ nhanh giữa hai thanh chắn và nếu một bên để bóng chạm vào đường biên phía mình, đối phương sẽ ghi được một điểm trò chơi sẽ tiếp tục cho đến khi một trong hai người chơi đạt đến điểm số chiến thắng được thiết lập trước đó.
Hình 3.8: Lưu đồ thuật toán chương trình chính 3.4.4.2 Nguyên lý hoạt động
Khi bắt đầu chương trình kiểm tra nút Pause đã được bật hay chưa, nếu đã được bật thì người chơi bật button 1 và không bật button 2, hệ thống sẽ kiểm tra nút Reset. Nếu nút Reset được bật, hệ thống sẽ tiếp tục kiểm tra nút Play, nếu nút Play được bật chương trình sẽ bật trò chơi con rắn (Snake Game) lên màn hình, nơi mà người chơi sẽ đối mặt với thách thức của việc điều khiển một chú rắn để ăn mồi và tránh va chạm.
Ngược lại, nếu button 2 được bật và button 1 không được bật, hệ thống sẽ thực hiện một kiểm tra khác Nếu nút Reset và Play được nhấn trong tình huống này, chương trình sẽ bật trò chơi bóng bàn (Pong Game) lên màn hình Hai người chơi sẽ tham gia vào cuộc đấu đối kháng, với mục tiêu đơn giản là đánh bóng về phía đối thủ và ghi điểm.
Trong trường hợp nút Pause không được bật hoặc không có button nào được nhấn hoặc cả hai button đều được nhấn, hệ thống sẽ tự chuyển đến trạng thái IDLE, không hoạt động, tạo ra một không gian trống trải nghiệm giữa các phiên chơi Điều này mang lại sự linh hoạt và thoải mái cho người chơi, cho phép họ dễ dàng chuyển đổi giữa các trò chơi hoặc nghỉ ngơi khi cần thiết.
KẾT QUẢ VÀ ĐÁNH GIÁ
Hệ thống điều khiển trò chơi trên phần mềm Quartus II
4.1.1 Giới thiệu tổng quan về hệ thống
Chương trình được thiết kế trên phần mềm Quartus II, sử dụng ngôn ngữ Verilog để viết một hệ thống trò chơi bao gồm: Trò chơi con rắn (Snake Game) và trò chơi bóng bàn (Pong Game)
- Trò chơi con rắn (Snake Game): được điều khiển bằng cách nhấn các nút lên, xuống, trái , phải trên bàn phím PS2 Sau khi rắn ăn được mồi thì kích thước sẽ được tăng lên cho đến khi đạt đến giới hạn đã thiết lập.
- Trò chơi bóng bàn (Pong Game): được điều khiển bằng các nút nhấn trên KIT để di chuyển mai chèo lên xuống để đánh quả bóng về phía đối thủ để ghi điểm Nếu một trong hai người chơi đạt được điểm mà trò hơi đã thiết lập thì sẽ chiến thắng và trò chơi sẽ thiết lập lại giá trị để người chơi bắt đầu ván chơi tiếp theo.
Hình 4.1: Hệ thống điều khiển trò chơi
4.1.2 Mô phỏng trên phần mềm
4.1.2.1 Mô phỏng trò chơi con rắn (Snake Game)
Hình 4.2: Mô phỏng Snake Game
Thiết lập giá trị đầu vào lên mức 1 cho button 1
Thiết lập clk của bàn phím
Các tín hiệu màn màn hình VGA khi chạy
Các tín hiệu đèn sau khi chạy chương trình
Thiết lập clk cho chương trình
Thiết lập giá trị đầu vào lên mức 1 cho play và rstThiết lập giá trị cho bàn phím
4.1.2.2 Mô phỏng trò chơi bóng bàn (Pong Game)
Hình 4.3: Mô phỏng Pong Game
Thiết lập giá trị đầu vào lên mức 1 cho button 2
Các tín hiệu màn màn hình VGA khi chạy
Thiết lập các giá trị đầu vào để điều khiển chương trình
Các tín hiệu đèn sau khi chạy chương trình Thiết lập giá trị đầu vào lên mức 1 cho play và rst Thiết lập các clk cho chương trình
Hệ thống điều kiển trò chơi trên màn hình vga
Cổng VGA kết nối với màn hình
Hiển thị điểm giữa các người chơi Các nút nhấn điều khiển chương trình
Cổng PS2/ bàn phím ổn Nhận dữ liệu từ PC
Bắt đầu trò chơi con rắn (Snake Game) bằng cách nhấn các nút Button, Reset trên Kit để hiển thị được giao diện khi bắt đầu trò chơi.
Sau đó, chúng ta sẽ nhấn nút Play để bắt đầu trò chơi và dùng các nút điều khiển lên, xuống, trái và phải trên bàn phím PS2 để điều khiển hướng đi của con rắn cho đến khi rắn ăn được mồi Tiếp tục như vậy mỗi lần ăn mồi kích thước của rắn sẽ tăng lên theo hệ thống đã thiết lập cho đến khi đạt giới hạn tối đa Bằng cách di chuyển chúng ta phải tránh được vật cản như bức tường và thân của con rắn, nếu chúng va chạm với nhau thì trò chơi sẽ kết thúc.
Hình 4.6: Giao diện khi bắt đầu Snake Game
Hình 4.7: Giao diện khi chơi Snake Game
Hình 4.8: Giao diện khi trò chơi kết thúc
Bắt đầu trò chơi bóng bàn (Pong Game) bằng cách nhấn các nút Button và Reset trên Kit để hiển thị được giao diện và tiếp tục nhấn nút Play để bắt đầu trò chơi.
Trong trò chơi này quả bóng sẽ xuất hiện và bay về hướng ngẫu nhiên, nhiệm vụ hướng di chuyển của mái chèo để đánh qủa bóng về phía đối phương Nếu để bóng chạm vào đường biên của một trong hai người chơi thì đối phương sẽ ghi được một điểm Trò chơi sẽ tiếp tục cho đến khi một trong hai người chơi đạt được điểm tối đa. Sau đó, trò chơi sẽ thiết lập lại điểm số để người chơi có thể bắt đầu ván đấu tiếp theo.
Hình 4.9: Giao diện khi bắt đầu Pong Game
Hình 4.10: Giao diện khi chơi Pong Game
Đánh giá hệ thống và kết quả
4.3.1 Đánh giá hệ thống Ưu điểm:
- Mô hình đơn giản, dễ sử dụng giúp người chơi có thể sử dụng 1 máy chơi game linh hoạt hơn so với trò chơi trên máy tính.
- Chuyển đổi giữa các trò chơi trực tiếp chỉ bằng 1 nút nhấn
- Tốc độ xử lý nhanh
- Có thể xử lý trực tiếp các lỗi hay giao diện trò chơi
- Dễ dàng láp ráp và bố trí không gian chơi
- Giao diện trò chơi còn đơn giản
- Hệ thống Game còn ít sự lựa chọn về trò chơi
4.3.2 Đánh giá kết quả Đề tài đặt ra nhiệm vụ: “ Xây dựng chương trình Game trên màn hình VGA sử dụng công nghệ FPGA”, qua thời gian thực hiện với sự nỗ lực bản thân và đặc biệt được sự giúp đỡ cô hướng dẫn, kết quả xây dựng được chương trình điều khiển trò chơi trên màn hình VGA đạt yêu cầu của đề tài đề ra Các thông số trong kỹ thuật thiết kế như: tốc độ xử lý, tài nguyên sử dụng đều hợp lý, hệ thống thiết kế ổn định.
Lần thử Kết quả Đánh giá
Thiết kế game Snake điều khiển bằng swith trên kit và bị lỗi di chuyển của con rắn màn hình VGA bị đỏ
2 Hoàn thành tiến trình thiết kế game Snake Đạt
Phát triển thêm game Pong, chương trình điều khiển game Pong bị lỗi nút nhấn di chuyển giữa các mái chèo đánh bóng
4 Xong tiến trình thiết kế game Pong Đạt thống menu game và bị lỗi các chân thiết kế
6 Lỗi các bước thiết kế để chọn game trong menu Chưa đạt
7 Hoàn thành thiết kế hệ thống game Đạt
Tiếp tục phát triển game Snake điều khiển bằng bàn phím và bị lỗi không nhận bàn phím
9 Chương trình điều khiển game Snake điều khiển từ bàn phím thành công Đạt
10 Tiến hành viết chương trình chính gộp hai game thành một hệ thống Game Đạt
11 Hoàn thành thiết kế hệ thống Game có sử dụng bàn phím PS2 Đạt Đánh giá chung Đạt
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Sau một thời gian nghiên cứu và phát triển, em đã hoàn thành đề tài thiết kế hệ thống game sử dụng Kit FPGA và hiển thị giao diện chơi trên màn hình VGA Qua đó thu nhận được nhiều kinh nghiệm và kiến thức quý giá cho bản thân bao gồm:
- Kiến thức về FPGA, KIT FPGA Altera DE2.
- Nguyên lý hoạt động của Kit FPGA và màn hình VGA.
- Xây dựng chương trình Verilog để điều khiển hệ thống.
- Xây dựng giao diện chơi game Snake và Pong thực tế trên màn hình VGA
Hướng phát triển đề tài:
Với những kết quả đã đạt được, em xây dựng hướng phát triển đề tài trong thời gian đến là cố gắng hoàn thiện trò chơi tối ưu một cách tốt nhất và điều khiển tín hiệu linh hoạt hơn Tối ưu trò chơi bằng cách sử dụng bàn phím cho trò chơi bóng bàn(Pong Game) phong phú hơn, có thiết kế nhạc trong game để người chơi cảm thấy hấp dẫn hơn
Dù đã cố gắng rất nhiều, nhưng em vẫn không tránh khỏi những sai sót, trong việc xây dựng hệ thống, trong việc trình bày đồ án Mong sự góp ý của các thầy cô.