Mục lục:

Chương trình Vẽ tranh VGA: 5 bước
Chương trình Vẽ tranh VGA: 5 bước

Video: Chương trình Vẽ tranh VGA: 5 bước

Video: Chương trình Vẽ tranh VGA: 5 bước
Video: Tony | Lần Đầu Vẽ Tranh Tường 🎨 𝐌𝐮𝐫𝐚𝐥 𝐁𝐚𝐭𝐭𝐥𝐞 2024, Tháng mười một
Anonim
Chương trình Vẽ tranh VGA
Chương trình Vẽ tranh VGA

Dự án của: Adam Klein, Ian Strachan, Brandon Slater

Dự án mà chúng tôi đặt ra để hoàn thành là lưu trữ, phân tích cú pháp và hiển thị thông tin từ chuột USB dưới dạng một chương trình vẽ tranh. Ý tưởng đằng sau dự án là có thể cắm chuột và cáp VGA vào bảng Basys trong các cổng tích hợp của nó và hiển thị chuột dưới dạng hình vuông vẽ có thể di chuyển trên màn hình, thay đổi màu sắc khác nhau khi nhấp chuột trái và phải. đã sử dụng. Về bản chất, chúng tôi sẽ tạo một trình điều khiển để sử dụng chuột với bảng nền và có màn hình làm xác minh chức năng của chúng tôi. Điều cuối cùng thực sự xảy ra là việc tạo ra một chương trình vẽ với bảng nền làm hệ thống đầu vào và một hệ thống thu thập dữ liệu bán chức năng cho chuột.

Trong hướng dẫn này, chúng tôi sẽ chia nhỏ các bước từ đầu vào chuột đến đầu ra vga.

Bước 1: Động lực và vấn đề

Động lực và vấn đề
Động lực và vấn đề

Động lực:

Động lực chính cho dự án của chúng tôi là tạo ra một trình điều khiển chuột cho bảng Basys3 mà học sinh CPE 133 trong tương lai sẽ có thể sử dụng cho các dự án cuối cùng của họ trong tương lai. Tuy nhiên, chúng tôi đã thực hiện ý tưởng này một bước xa hơn bằng cách tạo ra một chương trình vẽ tranh, một chương trình mà các sinh viên tương lai cũng có thể xây dựng.

Vấn đề:

Vấn đề mà chúng tôi phát hiện ra là không có mô-đun chuột rõ ràng nào sẵn sàng để tải xuống và sử dụng cho bảng Basys3. Để giải quyết vấn đề này, chúng tôi đã cố gắng tự tạo một cái. Bằng cách đó, chúng tôi đang cố gắng tạo ra một mô-đun chuột cho phép các sinh viên tương lai dễ dàng triển khai thao tác nhập chuột trong các dự án của họ hơn.

Bước 2: Lấy thông tin bit thô từ USB Basys

Lấy thông tin bit thô từ USB Basys
Lấy thông tin bit thô từ USB Basys
  • Phần lớn những gì chúng tôi đã làm cho chuột trong dự án này đến từ tài liệu Basys3. Từ hướng dẫn nhỏ về cổng USB Basys trong pdf đó, chúng tôi nhận thấy rằng bảng Basys được tích hợp đồng hồ để đọc các bit ở tốc độ phù hợp từ các thiết bị USB.
  • Về cơ bản, chuột gửi các bit đến usb bắt đầu từ trạng thái nhàn rỗi, đọc 32 bit biểu thị trạng thái chuột, vị trí x và vị trí y, và cuối cùng kết thúc bằng một bit nhàn rỗi khác. Để thực hiện điều này, thành phần đầu vào chuột sử dụng một thanh ghi shift và bộ đếm 32 bit trong đó thanh ghi shift được sử dụng để lưu trữ 32 bit dữ liệu đến từ chuột và bộ đếm 32 bit được sử dụng để đếm số bit được lưu trữ cho phép trạng thái đăng ký để thiết lập lại và lưu trữ bộ 32 bit đến tiếp theo.
  • Có thể tải xuống mã cho thanh ghi shift, bộ đếm 32 bit và đầu đọc dữ liệu bên dưới, cũng như tệp ràng buộc được điều chỉnh để chúng ta sử dụng cổng USB làm đầu vào

Bước 3: Phân tích cú pháp thông tin Usb

Phân tích cú pháp thông tin Usb
Phân tích cú pháp thông tin Usb
Phân tích cú pháp thông tin Usb
Phân tích cú pháp thông tin Usb
  • Sau khi tạo đầu vào chuột vào thành phần usb, bước tiếp theo là tạo thành phần thông tin từ các bit usb sang thành phần thông tin vectơ để làm cho dữ liệu nhận được của chuột có thể đọc được đối với vga.
  • Thành phần này sử dụng một máy trạng thái nhận tập hợp các bit được xuất bởi đầu vào chuột vào usb và di chuyển qua các trạng thái dựa trên việc liệu các bit mới thay đổi trạng thái và vị trí của chuột có được nhập vào hay không.
  • Sơ đồ khối cho hai bước đầu tiên của dự án được hiển thị ở đây và hai tệp vhdl dùng để kiểm tra khả năng thực thi của chuột bằng cách sử dụng đèn LED nền (một bài kiểm tra đáng tiếc là chưa bao giờ vượt qua) và để truyền luồng bit từ USB cổng đến tốc độ và vị trí các vectơ mà VGA có thể sử dụng.
  • Hình ảnh bên cạnh sơ đồ khối ở trên là một ảnh chụp nhanh nhỏ (Các tài liệu hướng dẫn không cho phép chúng tôi hiển thị toàn bộ hình ảnh rộng) của thông tin bit mà chúng tôi tìm thấy trong tài liệu cơ sở để hoàn thành bước này.

Bước 4: Hiển thị hình ảnh được vẽ trên VGA và chỉnh sửa những gì đang được vẽ

Hiển thị hình ảnh được vẽ trên VGA và chỉnh sửa những gì đang được vẽ
Hiển thị hình ảnh được vẽ trên VGA và chỉnh sửa những gì đang được vẽ
Hiển thị hình ảnh được vẽ trên VGA và chỉnh sửa những gì đang được vẽ
Hiển thị hình ảnh được vẽ trên VGA và chỉnh sửa những gì đang được vẽ
Hiển thị hình ảnh được vẽ trên VGA và chỉnh sửa những gì đang được vẽ
Hiển thị hình ảnh được vẽ trên VGA và chỉnh sửa những gì đang được vẽ
  • Cáp VGA có 14 bit đầu ra, 4 bit cho mỗi màu trong ba màu và một bit cho đồng bộ hóa ngang và đồng bộ hóa dọc.
  • OtherVGA là mô-đun VGA được cung cấp và nó hoạt động như sau:

    • Màn hình được chia thành các khối 40x30 16x16 pixel để có màn hình độ phân giải 640x480 như trong hình trên. Mô-đun chọn một địa chỉ khối để đại diện cho một trong 1200 khối trên màn hình. Địa chỉ khối được chọn thông qua phương trình sau: address = 40y + x
    • Màu được biểu thị bằng tín hiệu 12 bit tương quan với giá trị RRRRGGGGBBBB để tô màu cho khối đã chọn.
  • Mã điều khiển của chúng tôi, VGAtest và VGAtestconst, hoạt động như sau:

    • Đầu tiên, nó đặt khối đã chọn vào giữa màn hình.
    • Màu của khối được xác định bởi 12 công tắc trên bảng, thiết lập giá trị RRRRGGGGBBBB.
    • Bốn nút định hướng trên bảng thay đổi địa chỉ đã chọn. Ví dụ, nhấn nút bên phải sẽ thêm 1 vào địa chỉ, chọn khối một ở bên phải của khối trước đó. Nhấn nút xuống sẽ thêm 40 vào địa chỉ, chọn khối một bên dưới khối trước đó.
    • Nút trung tâm được sử dụng để đặt tất cả các giá trị màu thành 0 khi được nhấn. Điều này có nghĩa là hoạt động như một nút xóa dễ dàng cho người dùng sử dụng, vì vậy người dùng không phải chuyển mọi công tắc về 0 để xóa.
  • Hình ảnh cuối cùng là sơ đồ khối cho bộ điều khiển. Nó khá rộng vì nó bao gồm các thành phần của mô-đun và có thể không được hiển thị đầy đủ.

Bước 5: Tận hưởng sự sáng tạo của bạn

Được liên kết ở đây là một dòng thời gian nhanh chóng về niềm vui mà bạn có thể có với dự án cuối cùng, thậm chí chỉ với việc sử dụng các công tắc và nút trên bảng nền làm đầu vào.

Cảm ơn vì đã đọc!

Đề xuất: