Để đ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 1TRƯỜ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 2Thô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 52.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 6Hình 3.1 Kit DE1
Trang 73.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 8Hì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 11Clock 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 12Sơ đồ 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 14Nế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 16nà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 17sẽ 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 18Hì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 19Hì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 206.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 23Hì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 246.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