1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng snake game trên nền tảng phần cứng DE1 từ altera

49 499 0

Đ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 49
Dung lượng 2,76 MB

Nội dung

Để điều khiển được hướng di chuyển của con rắn, nhập mức level để bắt đầu chơi hayđể lưu tên nếu người chơi đạt điểm số cao… chúng ta phải sử dụng một keyboard.Hiện nay trên thị trường c

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ VIỄN THÔNG PHÒNG THÍ NGHIỆM HỆ THỐNG NHÚNG VÀ VI MẠCH KHẢ TRÌNH

Xây dựng snake game trên nền tảng phần cứng

DE1 từ Altera

BÁO CÁO

Hà Nội, tháng 09 năm 2011

Snake Game

Trang 2

Thông tin đề tài

Nội dung đề tài

Ngày bắt đầu 10/07/2011 Ngày kết thúc 13/08/2011

Hướng dẫn đề tài

Nhóm tác giả Phan Đình Long

Trần Hữu Thụ Nguyễn Duy Phương

Thông tin liên hệ Phan Đình Long

Email: longfet53@gmail.com Điện thoại:0973785654

Địa chỉ Web NA

Thông tin tài liệu

Tiêu đề tài liệu Báo cáo cuối cùng về snake game trên DE1

Ngày báo cáo 17/09/2011

Ngày nộp 16/09/2011 Tên tài liệu Snake_final_report.doc

x

Bảng nội dung

Trang 4

- Thiết kế và hoàn thiện snake game trên kit DE1.

- Giao tiếp tốt với chuẩn VGA

- Hoàn thiện kĩ năng lập trình VHDL

- Hiểu rõ hơn về kit DE1

2.2 Nền tảng cơ bản

- Kiến thức cơ bản về FPGA

- Biết lập trình FPGA bằng ngôn ngữ VHDL

- Có kĩ năng đọc tài liệu ( cả tiếng anh và tiếng việt)

- Kĩ năng tìm kiếm tài liệu trên mạng

2.3.2 Yêu cầu phi chức năng

- Giao diện đơn giản, dễ chơi

2.4 Công việc cụ thể

 Giao tiếp giữa Kit DE1 với bàn phím thông qua chuẩn giao tiếp PS2

 Xây dựng phần cứng xử lý game trên Kit DE1

 Giao tiếp và hiển thị game lên màn hình

Trang 5

2.5 Kết quả đạt được

Hoàn thành game Giao tiếp tốt với bàn phím, có khả năng gõ text từ bàn phím Hiển thịgame lên màn hình với khung hình trên giây cao Di chuyển của rắn mượt mà Xử lý tốtviệc rắn ăn mồi, tăng chiều dài…

3 Giới thiệu công nghệ sử dụng

3.1 Phần cứng

3.1.1 Kit DE1

DE1 ( Development and Education ) là một phiên bản thu nhỏ của Kit DE2 Nó rất phù

hợ để học điện tử số, kĩ thuật máy tính và FPGAs Con chip Cyclon II 2C20 trên DE1được thiết kế chyên để phục vụ cho mục đích giáo dục như trong các phòng lab của cáctrường đại học, cao đẳng Nó phù hợp để làm nhiều bài tập trong các môn học như điện

tử số, kĩ thuật máy tính thông qua các ví dụ đơn giản

Thông số cơ bản của kit DE1:

Trang 6

Hình 3.1 Kit DE1

Trang 7

3.2 Phần mềm Quartus II

Quartus II là công cụ chính được sử dụng trong quá trinh thực hiện đề tài Được cung cấp

và cập nhật thường xuyên bởi Altera Đây là công cụ thiết kế tốt nhất cho các dòng chipFPGA của Altera bao gồm cả Cyclon II 2C20 có trên DE1

Là công cụ phân tích và tổng hợp thiết kế HDL, nó cho phép nhà phát triển thực hiệnthiết kế của họ, đồng thời cho phép phân tích thời gian, kiểm tra sơ đồ RTL, mô phỏng hệthống và cấu hình sản phẩm một cách phù hợp nhất

3.2.1 Quy trình thiết kế FPGA với Quartus II

Dưới đây là quy trình thiết kế FPGA với các phần mềm thiết kế FPGA nói chung vàQuartus II nói riêng:

Trang 8

Hình 3.2 Design Flow

Nó bao gồm các bước cơ bản sau:

Design Entry – Mạch sau đã thiết kế sẽ được mô tả bởi các ngôn ngữ mô tả phần

cứng như VHDL hay Verilog, hoặc cũng có thể dùng sơ đồ Schematic

Synthesis – Công cụ tổ hợp sẽ tổ hợp mạch tạo ra một file netlist có chứa các phần tử

logic và các kết nối giữa chúng

Function Simulation – Chức năng của mạch sau tổ hợp sẽ được kiểm định.

Fitting – Công cụ máy tính sẽ đặt các phần tử logic được định nghĩa trong file netlist

xuống các phần tử logic trong con chip FPGA thực tế Đồng thời chọn ra các đường dây để kết nối chúng với nhau

Timming Analysis – Phân tích trễ truyền dẫn trên các đường dây khác nhau nhằm

đưa ra các chỉ thị giúp cải thiện hiệu năng làm việc của mạch

Trang 9

Timming Simulation – Kiểm tra đồng thời cả về mặt chức năng lẫn thời gian của

mạch

Programming and Configuration – Thực hiện mạch trên con chip vật lý bằng cách

cấu hình các phần tử logic trên chip và thành lập các kết nối cần thiết

Trang 10

Để điều khiển được hướng di chuyển của con rắn, nhập mức level để bắt đầu chơi hay

để lưu tên nếu người chơi đạt điểm số cao… chúng ta phải sử dụng một keyboard.Hiện nay trên thị trường có 2 loại keyboard là keyboard cổng usb và keyboard cổngps2.Trong snake game do nhóm thực hiện thì ps2 keyboard được chọn để sử dụng.Chúng ta sẽ lần lượt tìm hiểu về loại keyboard này cũng như thiết kế các khối cầnthiết để có thể nhận được dữ liệu gửi từ keyboard một cách chính xác

5.1 Khối nhận dữ liệu PS2

5.1.1 Giao tiếp vật lý cổng PS2

Hình 5.1 Cổng PS2

Hình 5.2 Mô tả một khối dữ liệu

Một cổng ps2 có bốn chân : chân data ps2d, chân clockps2c và hai chân nguồn là VCC và ground trong đóchân nguồn VCC được cung cấp bởi host

Dữ liệu từ keyboard tới host được truyền qua chân datamột cách nối tiếp theo chuẩn UART.Quá trình truyền

dữ liệu bắt đầu với 1 bit start ,8 bit dữ liệu ,1 bit chẵn

lẻ và 1 bit stop

Trang 11

Clock của bàn phím thì được truyền qua chân ps2c có tần số trong khoảng từ 10Khztới 16,7 Khz, Tín hiệu ps2d phải ổn định ít nhất là 5 us trước và sau sườn lên và xuốngcủa tín hiệu ps2c Ta có thể thấy được điều này qua hình mô tả vẽ :

Hình 5.3

5.1.2 Khối nhận dữ liệu PS2

Để có thể thu lại được dữ liệu thay vì phải thiết kế một bộ lấy mẫu ta sẽ dung một mạch

dò sườn xuống của tín hiệu ps2c làm điểm tham khảo.Đầu vào của mạch bao gồm tínhiệu ps2d và ps2c nhận từ keyboard ,tín hiệu clock của host ,một tín hiệu reset của hệthống và một tín hiệu cho phép nhận dữ liệu từ bàn phím Đầu ra của mạch sẽ là 8 bit dữliệu và một tín hiệu báo hiệu rx_done_tick.Tín hiệu này ở mức cao sau mỗi chu kì clock

Ta có sơ đồ khối của mạch nhận :

Hình 5.4 Sơ đồ khối mạch nhận dữ liệu

Trang 12

Sơ đồ ASM của khối nhận dữ liệu:

Hình 5.5 ASM của mạch nhận

Về cơ bản, mạch hoạt động như sau:

- Trước tiên ở trạng thái chờ, mạch sẽ kiểm tra sườn xuống của tín hiệu clock củaPS2 và nhận là start bit

- Sau khi xác định được start bit mạch sẽ nhận vào 10 bit tiếp theo bao gồm 8 bit dữliệu, 1 bit chẵn lẻ và 1 bit stop

Trang 13

- Cuối cùng xuất ra 8 bit dữ liệu và chuyển về trạng thái chờ.

5.2 Mạch giao tiếp với PS2 Keyboard

Trong mục này chúng ta sẽ đi tìm hiểu về cách mã hóa bàn phím đồng thời thiết kế một mạch để giải mã các lệnh gửi từ bàn phím tới Host

5.2.1 Tổng quan về mã hóa bàn phím

Một bàn phím là ma trận các phím.Nó được nhúng một con vi điều khiển để điều các hoạtđộng của bàn phím.Có 3 chế độ hoạt động của các phím có thể xảy ra là :

- Khi ta bấm một phím thì make code của phím đó được truyền đi

- Khi ta giữ một phím với thời gian đủ lớn khoảng 0,5 s thì make code sẽ được truyền

đi một cách lặp lại với một tốc độ xác định chu kì 100 ms

- Khi ta nhả phím thì break code của phím đó sẽ được truyền

Hình vẽ dưới đây sẽ cho ta thấy make code của các phím của keyboard :

Hình 5.6 Keyboard

Đối với các phím thường thì make code của nó có kích thước là 1 byte còn đối với các phím mở rộng thì kích thước là từ 2 byte cho đến 4 byte PS2 keyboard sẽ truyền tuần tự code tùy theo hoạt động của phím Ví dụ ta bấm và nhả phím A thì đầu tiên make code được gửi vào sau đó là break code của nó :

1C F0 1C

Đối với phím mở rộng ví dụ nút up :

E0 75 F0 E0 75

Trang 14

Nếu ta nhấn một phím đủ lâu sau đó nhả ra thì make code sẽ được gửi nhiều lần :

1C 1C 1C … F0 1C

Nếu nhiều phím được bấm cùng một lúc thì code gửi đi lần lượt là make code và break code của 2 phím.ví dụ ta bấm 2 phím Shift và A cùng lúc thì coe gửi đi sẽ là :

12 1C F0 1C F0 12

5.2.2 Mạch giao tiếp PS2 keyboard

Mạch giao tiếp PS2 keyboard làm nhiệm vụ lọc lấy thành phần chính trong scan code thu được sau các hoạt động bấm và nhả phím.Đồng thời tạo ra một tín hiệu báo hiệu để bộ điều khiển có thể nhận ra được đâu là phím mở rộng (thông thường phục vụ cho mục đíchchuyển động của con rắn ,chọn level chơi) đâu là phím thường (dùng trong việc lưu tên trong trường hợp người chơi đạt kết quả cao)

Có 2 cách để thu lại thành phần chính trong scan code từ hoạt động nhấn nhả phím là bắt break code và bắt make code.Trong snake game mà nhóm thực hiện thì nhóm đã chọn cách bắt make code sẽ chính xác hơn vì các lệnh sẽ được thực hiện ngay lập tức ngay sau khi được nhập tránh được khoảng thời gian trễ chờ nhả phím nếu chúng ta dùng cách bắt break code

Sơ đồ khối của mạch giao tiếp với PS2 keyboard :

Hình 5.7

Trang 15

Điểm chú ý trong mạch này là tín hiệu got_key.Sau khi mạch nhận dữ liệu được gửi từPS2 keyboard cho đầu ra là dout và một tín hiệu báo hiệu là done_tick.tín hiệu đầu ra này

sẽ được đưa tới một mạch FSM để xác định thành phần chính của code mà ta cần thu lại

để phục vụ cho các mục đích của chúng ta.Tín hiệu got_tick sẽ tích cực cao khi mạchFSM xác định được thành phần code cần đọc ,đồng thời cho phép ghi thành phần codenày vào bộ FiFo chờ cho Control Unit xử lý

Sơ đồ FSM để bắt make code :

Hình 5.8

FSM được thiết kế để thu scan code thay vì break code của tất cả các phím được nhấn kể

cả các phím mở rộng Ưu điểm là có thể nhận được phím ngay khi phím được nhấnxuống nhưng đổi lại là mạch sẽ phức tạp hơn FSM này khi đọc được E0 sẽ bỏ qua code

Trang 16

này; Khi nhận được F0 thì sẽ bỏ qua F0 và đồng thời bỏ qua đoạn code nhận ngay tiếpsau nó Như vậy, FSM hoàn thành nhiệm vụ nhận scan code.

FSM thực hiện công việc trên như sau:

- Ban đầu cho tín hiệu got_key và brk_flag bằng 0

- Khi nhận được một mã từ bộ thu, nó sẽ kiểm tra có phải là mã mở rộng E0 haykhông, nếu phải sẽ bỏ qua ( got_key <= 0) và trơ vệ trạng thái chờ

- Nếu không phải là E0, kiểm tra xem có phải là F0 hay Nếu là F0 thì set cờbrk_flag lên 1 và bỏ qua mã này và chuyển về trạng thái chờ

- Nếu không phải là E0 và F0, lúc này sẽ kiểm tra cờ brk_flag, nếu là 1 thì sẽ bỏ quađoạn mã, đồng thời xóa cờ brk_flag về 0 Nếu là 0 thì nhận đoạn mã này Sau đóchuyển về trạng thái chờ

Ví dụ: khi ta nhấn và thả phím mũi tên lên ta sẽ có đoạn mã sau được truyền lần lượt:E0 75 E0 F0 75

- Khi nhận giá trị E0 đầu tiên, đây là mã mở rộng nên bỏ qua

- Khi nhận giá trị 75 tiếp theo, đây không phải E0 hay F0, đồng thời kiểm tra cờbrk_flag cho giá trị 0 => nhận giá trị này => ta thu dược scan code

- E0 tiếp theo bỏ qua

- F0 tiếp theo bỏ qua và set cờ brk_flag lên 1

- Giá trị 75 cuối cùng, kiểm tra cờ brk_flag cho giá trị 1 => bỏ qua đồng thời xóa cờnày về 0

Trang 17

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 23=8 màu cơ bản như được liệt kê trong bảng trên

6.2 B điều khiển video ô

- 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 Sơ đồnhư sau:

Trang 18

Hình 6.1: Sơ đồ khối của bộ điều khiển VGA

- Sơ đồ bao gồm:

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

- 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

6.2.1 Mạch đồng bộ VGA

- 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ùn 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

- Màn hình bao gồm vùng viền đen ở xung quanh màn hình và vùng nhìn thấy ở giữa có hình chữ nhật Các trục tọa độ và chiều dương của các trục như hình vẽ dưới đây:

Trang 19

Hình 6.2: Sơ đồ thời gian quét theo phương ngang

6.2.1.1 Tin 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 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 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 hển thị

Trang 20

6.2.1.2 Tin hi u đ ng b theo ph ê ô ô ươ ng d c o

- Sơ đồ thời gian quét của tín hiệu đồng bộ theo phương dọc như sau:

Hình 6.3: Sơ đồ thời gian của tín hiệu quét theo phương dọc.

- Trong đó:

• 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 trên: là vùng màu đen bên trên, trong vùng này các tín hình ảnh bị vô hiệu hóakhô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 hển thị

6.2.1.3 T c đ pixel ô ô

- 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 1 s 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, l=525 line/screen, s=60 screen/second tốc độ pixel bằng 800x525x60

Trang 21

Sơ đồ kiểu bit – mapped

Sơ đồ kiểu tile – mapped

Sơ đồ kiểu object – mapped

- Trong sơ đồ kiểu bit – mapped, dữ liệu hiển thị trên màn hình được lưu trữ trong một ô

bộ nhớ Mỗi pixel được lưu trữ trực tiếp trong bộ nhớ tạo thành từ nhớ ( memory word )

và tín hiệu pixel_x, pixel_y tạo ra địa chỉ của ô nhớ Một mạch xử lý đồ họa liên tục cập

nhật màn hình và ghi dữ liệu vào ô nhớ Một mạch thu liên tục đọc từ bộ nhớ và truyền

dữ liệu tới tín hiệu rgb Sơ đồ bit – mapped thường được dùng để tạo màu Nhược điểm

khi sử dụng sơ đồ này là tốn bộ nhớ

- Để giảm yêu cầu bộ nhớ, người ta dùng sơ đồ kiểu tile – mapped Trong sơ đồ kiểu này, chúng ta nhóm một tập bit để tạo thành 1 tile ( ô gạch ) và coi mỗi tile như 1 bit Sơ đồ này thường được dùng để tạo text.

- Cuối cung, sơ đồ kiểu object – mapped thường được dùng để tạo ra các vật thể Trong các

bào toán, chúng ta thường kết hợp cả 3 cách trên để tạo ra một màn hình hoàn chỉnh

6.2.2.1 S đ ki u object – mapped ơ ô ê

- Sơ đồ khối :

Hình 6.2: Sơ đồ khối của mạch object – mapped.

Trang 22

- Sơ đồ khối bao gồm các mạch tạo ra các vật thể, một bộ mux để chọn vật thể hiển thị

Mạch này thực hiện các chức năng sau:

Giữ tọa độ của các vật thể và so sánh các tọa độ này với vị trí hiện tại mà pixel_x và

pixel_y cung cấp.

Nếu vị trí hiện tại của vật thể ở trong vùng hiển thị thì mạch này sẽ chèn thêm tín hiệu on

của vật thể đó

• Chỉ ra tín hiệu màu của vật thể

- Bộ mux kiểm tra các tín hiệu on và xác định tín nào được truyền tới tín hiệu đầu ra rgb.

6.2.2.2 S đ ki u bit – mapped ơ ô ê

Trong kiểu sơ đồ này, mỗi pixel tạo thành 1 ô nhớ nên nhược điểm của phương pháp này

là rất tốn bộ nhớ Cách tiếp cận này không yêu cầu thêm mạch để chuyển các tín hiệu

pixel_ x và pixel_y thành địa chỉ ô nhớ nhưng lãng phí nhiều bộ nhớ

6.2.2.3 S đ ki u tile – mapped ơ ô ê

- Sơ đồ kiểu này được dùng để tạo text và sẽ được thảo luận trong phần 2.

6.3 VGA text

6.3.1 Giới thiệu

- Sơ đồ kiểu tile – mapped được dùng để tạo text và các kí tự Mỗi tile được coi như một

siêu pixel Phương pháp xây dựng các kí tự là coi chúng như các tile và thiết kế mạch tạo

pixel bằng phương pháp này

6.3.2 Tạo text

- Khi áp dụng phương pháp này, mỗi kí tự được coi như một tile, giá trị của một tile biểu

diễn mã của một vị mẫu cụ thể Chúng ta sử dụng mã ASCII 7 – bit cho các kí tự

- Mẫu của các tile tạo nên font chữ của tập các kí tự Có nhiều loại font chữ nhưng trong phần thảo luận của chúng ta dùng font chữ có kích thước 8x16( 8 cột và 16 hàng )

Trang 23

Hình 6.3: Mẫu kí tự và font của kí tự

- Các kí tự bao gồm phần số, các chữ cái hoa và chữ cái thường, các biểu tượng và nhiều kí

- Để thực hiện các kí tự mã ASCII, chúng ta sử dụng font ROM Giả sử chúng ta thực hiện

128 kí tự đầu của bảng mã ASCII thì kích thước của ROM là 211 x 8 Trong đó, 7 bit có trọng số cao nhất của 11 bit địa chỉ được dùng để xác định kí tự, 4 bit có trọng số nhỏ nhất được dùng để xác định hàng trong một mẫu của kí tự Hình 5 là địa chỉ và nội dung ROM của kí tự A

- Cách thực hiện như sau:

constant ADDR_WIDTH: integer :=ll;

constant DATA_WIDTH: integer:=8;

signal addr_reg: std_logic_vector (ADDR_WIDTH -1 downto 0); type rom_type is array (0 to 2**ADDR_WIDTH-l)

ROM definition

constant RUM: rom_type :=

code x00 (blank space)

“00000000”, 0

Trang 24

6.3.4 Mạch tạo text cơ bản

- Mạch tạo pixel tạo ra các giá trị của pixel tương ứng với tọa độ của pixel hiện tại và các tín hiệu dữ liệu/điều khiển bên ngoài Mạch tạo pixel dựa trên sơ đồ kiểu tile – mapped

liên quan tới 2 giai đoạn Ở giai đoạn thứ nhất dùng các bit cao của pixel_x và pixel_y để tạo ra mã của một tile, và ở giai đoạn thứ hai dùng mã này và các bit thấp để tạo ra giá trị

của pixel

- Theo phương pháp này thì màn hình được coi như có độ phân giải 80x30 tile, mỗi tile là một ô có kích thước 8x16 Đầu tiên, pixel_x và pixel_y sẽ chỉ ra tọa độ của vị trí tile hiện

tại Mạch tạo kí tự sử dụng những tọa độ này kết hợp với các tín hiệu dữ liệu/ điều khiển

từ bên ngoài để tạo ra giá trị của tlie tương ứng với mã ASCII Tiếp theo, mã ASCII này

sẽ làm 7 bit cao của địa chỉ của font ROM và chỉ ra vị trí của mẫu đang xét Kết hợp với

4 bit thấp của tọa độ y để hình thành nên địa chỉ đầy đủ của font ROM Đầu ra của font ROM tương ứng với 8 bit hàng ngang của một mẫu, còn 3 bit có trọng số nhỏ nhất của tọa độ x chỉ ra vị trí của pixel

6.3.5 Tỉ lệ của Font

- Trong sơ đồ kiểu tile – mapped chúng ta có thể điều chỉnh kích thước của các pixel Chẳng hạn, chúng ta có thể mở rộng từ font có kích thước 8x16 lên font có kích thước

Ngày đăng: 24/09/2017, 12:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w