December 29, 2017 | Author: Emily Wang | Category: N/A
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 Group3 – K53
Thông tin đề tài
Tên viết tắt
SGOFP
Mã số (ID)
10/07/2011
Ngày kết thúc
Nội dung đề tài Ngày bắt đầu
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:
[email protected] Đ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
URL
NA
Tên tài liệu
Snake_final_report.doc x
Bảng nội dung 1
Lời cảm ơn.................................................................................................................6
2
Tổng quan đề tài.........................................................................................................6 2.1
Mục tiêu................................................................................................................6
2.2
Nền tảng cơ bản....................................................................................................6
Snake game – Group3–K53
Page 2
2.3
3
Yêu cầu hệ thống..................................................................................................6
2.3.1
Yêu cầu chức năng.........................................................................................6
2.3.2
Yêu cầu phi chức năng...................................................................................6
2.4
Công việc cụ thể...................................................................................................6
2.5
Kết quả đạt được...................................................................................................7
Giới thiệu công nghệ sử dụng.....................................................................................7 3.1
Phần cứng.............................................................................................................7
3.1.1 3.2
Phần mềm Quartus II............................................................................................9
3.2.1 4
5
Quy trình thiết kế FPGA với Quartus II.........................................................9
Sơ đồ khối hệ thống..................................................................................................10 4.1
Bàn phím............................................................................................................11
4.2
Màn hình.............................................................................................................11
4.3
ROM...................................................................................................................11
4.4
Khối xử lý ( CU )................................................................................................11
PS2 Keyboard..........................................................................................................12 5.1
Khối nhận dữ liệu PS2........................................................................................12
5.1.1
Giao tiếp vật lý cổng PS2.............................................................................12
5.1.2
Khối nhận dữ liệu PS2.................................................................................13
5.2
6
Kit DE1..........................................................................................................7
Mạch giao tiếp với PS2 Keyboard......................................................................15
5.2.1
Tổng quan về mã hóa bàn phím...................................................................15
5.2.2
Mạch giao tiếp PS2 keyboard.......................................................................16
VGA.........................................................................................................................19 6.1
Đồ họa................................................................................................................19
6.1.1
Giới thiệu.....................................................................................................19
Snake game – Group3–K53
Page 3
6.1.2 6.2
Mạch đồng bộ VGA.....................................................................................20
6.2.2
Mạch tạo pixel..............................................................................................22
VGA text............................................................................................................24
6.3.1
Giới thiệu.....................................................................................................24
6.3.2
Tạo text........................................................................................................24
6.3.3
Font ROM....................................................................................................25
6.3.4
Mạch tạo text cơ bản....................................................................................26
6.3.5
Tỉ lệ của Font...............................................................................................27
Các bước xây dựng game.........................................................................................27 7.1
Xây dựng màn hình new game...........................................................................29
7.1.1
Layer nền.....................................................................................................31
7.1.2
Text layer.....................................................................................................32
7.2
8
Bộ điều khiển video............................................................................................19
6.2.1
6.3
7
Cổng VGA...................................................................................................19
Xây dựng màn chơi chính...................................................................................33
7.2.1
Text..............................................................................................................35
7.2.2
Header..........................................................................................................37
7.2.3
Bức tường....................................................................................................37
7.2.4
Bóng mồi......................................................................................................38
7.2.5
Rắn...............................................................................................................39
7.3
Khi nào kết thúc trò chơi?...................................................................................45
7.4
Xây dựng phần kết thúc trò chơi.........................................................................45
7.4.1
Màn hình tính điểm......................................................................................45
7.4.2
Màn lưu điểm và tên người chơi..................................................................47
Kết luận....................................................................................................................49
Snake game – Group3–K53
Page 4
9
Các tài liệu tham khảo..............................................................................................49
Các tài liệu tham khảo
Snake game – Group3–K53
Page 5
1 Lời cảm ơn Chúng tôi xin bày tỏ sự cảm ơn tới những thành viên trong ESRCLab đã nhiệt tình hướng dẫn, giúp đỡ chúng tôi hoàn thành đề tài này.
2 Tổng quan đề tài 2.1 Mục tiêu – 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.
1.1 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.
1.1 Yêu cầu hệ thống 1.1.1 Yêu cầu chức năng – Tần số làm việc 50MHz. – Màn hình hiển thị 8 màu cơ bản. – Tần số quét màn hình lớn hơn 24 fps. – Nhận phím từ bàn phím nhanh, kịp thời, đủ nút.
1.1.1 Yêu cầu phi chức năng – Giao diện đơn giản, dễ chơi.
Snake game – Group3–K53
Page 6
1.1 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.
1.1 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ốt việc rắn ăn mồi, tăng chiều dài…
2 Giới thiệu công nghệ sử dụng 2.1 Phần cứng 2.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ác trườ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: ✔ Bộ nhớ: – 8Mb SDRAM. – 512Kb SRAM. – 4Mb Flash. ✔ Âm thanh. – Hỗ trợ bộ codec 24 bit. ✔ Công tắc và chỉ thị. – 10 công tắc chuyển và 4 nút bấm. – 4 led 7 thanh.
Snake game – Group3–K53
Page 7
– 10 LED đỏ và 8 LED xanh. ✔ Các kết nối – VGA, RS-232, và PS2. – 2 cổng mở rộng 40 chân. – Khe cắm SD/MMC. ✔ Nguồn – Có thể nguồn từ cáp USB hoặc thông qua cáp nguồn riêng.
Hình 3.1 Kit DE1
Snake game – Group3–K53
Page 8
1.1 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 chip FPGA 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ện thiế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.
1.1.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:
Snake game – Group3–K53
Page 9
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.
Snake game – Group3–K53
Page 10
• 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.
1 Sơ đồ khối hệ thống
Font ROM
CU PS2 Interface
VGA Controller
Keyboard
Monitor
Hình 4.1 Sơ đồ khối hệ thống
1.1 Bàn phím Bàn phím với chuẩn giao tiếp PS2. Giao tiếp với khối xử lý thông qua khối PS2 Interface.
1.2 Màn hình Màn hình được sử dụng là màn hình máy tính CRT hoặc LCD thông dụng được điều khiển thông qua khối VGA Controller.
Snake game – Group3–K53
Page 11
1.3 ROM Được sử dụng để chứa font hiển thị trong game. Là distributed ROM - được trình biên dịch tổng hợp từ các phần tử logic có sẵn trong chip.
1.4 Khối xử lý ( CU ) Khối chịu trách nhiệm điều khiển toàn bộ hệ thống.
2 PS2 Keyboard Để đ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ổng ps2.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ần thiết để có thể nhận được dữ liệu gửi từ keyboard một cách chính xác.
2.1 Khối nhận dữ liệu PS2 2.1.1 Giao tiếp vật lý cổng PS2 Một cổng ps2 có bốn chân : chân data ps2d, chân clock ps2c 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 data mộ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
Hình 5.1 Cổng PS2
bit stop
Start Bit (1 bit)
Data Bits (8 bits)
Odd Parity Bit (1 bit)
Stop Bit (1 bit)
Hình 5.2 Mô tả một khối dữ liệu
Snake game – Group3–K53
Page 12
Clock của bàn phím thì được truyền qua chân ps2c có tần số trong khoảng từ 10Khz tớ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ống củ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
2.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ín hiệ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 : rx_en clk rst KEYBOARD
dout (7 downto 0) ps2_rx
ps2d ps2c clk
rx_done _tick Falling edge
Filter & Falling Edge ps2c
Hình 5.4 Sơ đồ khối mạch nhận dữ liệu
Sơ đồ ASM của khối nhận dữ liệu:
Snake game – Group3–K53
Page 13
Idle
F Rx_en=1 and Fail_edge=1 T b>1) n1)
F
n=0
n bỏ qua đồng thời xóa cờ này về 0.
1 VGA 1.1 Đồ họa 1.1.1 Giới thiệu – 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: Đỏ(R) 0 0 0 0 1 1 1 1
Xanh (G) 0 0 1 1 0 0 1 1
Snake game – Group3–K53
Xanh dương (B) 0 1 0 1 0 1 0 1
Màu Đen Xanh dương Xanh Lục lam Đỏ Đỏ tươi Vàng Trắng
Page 18
1.1.1 Cổng 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.
1.1 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: External data/control
rgb
pixel_x pixel_y video_on h_sync v_sync
clock
Pixel Pixel generation generation circuit circuit
VGA monitor
VGA_sync VGA_sync
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.
Snake game – Group3–K53
Page 19
– 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.
1.1.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: x
O
border
Visible area
y h_video_on
639 655 751 799
0 h_sync
Left border
display Right retrace border
Snake game – Group3–K53
Left border
Page 20
Hình 6.2: Sơ đồ thời gian quét theo phương ngang 1.1.1.1 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. 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ị. 1.1.1.1 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_video_on
479 489 491 524
0 v_sync
Top border
display Bottom retrace border
– Trong đó:
Top border
Hình 6.3: Sơ đồ thời gian của tín hiệu quét theo phương dọc. • 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ó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 hển thị.
Snake game – Group3–K53
Page 21
1.1.1.1 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 ≈25M pixel/s.
1.1.1 Mạch tạo pixel – Mạch tạo pixel tạo ra tín hiệu màu 3 – bit rgb cho cổng VGA. Tín hiệu điều khiển và dữ liệu từ bên ngoài chỉ ra nội dung cần hiển thị trên màn hình, pixel_x và pixel_y chỉ ra tọa độ hiện tại của pixel. Có 3 loại mạch tạo pixel: • 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. 1.1.1.1 Sơ đồ kiểu object – mapped . – Sơ đồ khối :
Snake game – Group3–K53
Page 22
Data/control Video_on pixel_x pixel_y
rgb mux
rgb
Object 1 Generation Generation circuit circuit
Object 2 Generation Generation circuit circuit
Object 3 Generation Generation circuit circuit
Hìn–h 6.4: Sơkhố đồi khố củmacá mạ chcobject Sơ đồ bao igồ c mạ h tạo ra–cámapped. 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. 1.1.1.1 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ớ. 1.1.1.2 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.
Snake game – Group3–K53
Page 23
1.1 VGA text 1.1.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.
1.1.1 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 ).
00000000 00000000 00010000 00111000 01101100 11000110 11000110 11111110 11000110 11000110 11000110 11000110 00000000 00000000 00000000 00000000
Hình 6.5: 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í tự đồ họa đặc biệt. – Đối với màn hình có độ phân giải 640 x480 , khi sử dụng các tile có kích thước 8 x16 thì mỗi hàng ngang chứa vừa 80 tile và mỗi hàng dọc chứa vừa đủ 30 tile. Khi đó ta có thể coi màn hình có độ phân giải là 80 x 30.
Snake game – Group3–K53
Page 24
1.1.1 Font ROM – Để 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 “00000000”, -- 1 “00000000”, -- 2 “00000000”, -- 3 “00000000”, -- 4 “00000000”, -- 5 “00000000”, -- 6 “00000000”, -- 7 “00000000”, -- 8 “00000000”, -- 9 “00000000”, -- a “00000000”, -- b “00000000”, -- c “00000000”, -- d “00000000”, -- e “00000000”, -- f ... begin -- addr register to infer block RAM
Snake game – Group3–K53
Page 25
process (clk) begin if (clk’event and clk = ‘1’) then addr-reg end
if ;
end
process;
data end