สารบัญ:

โปรแกรมวาดภาพ VGA: 5 ขั้นตอน
โปรแกรมวาดภาพ VGA: 5 ขั้นตอน

วีดีโอ: โปรแกรมวาดภาพ VGA: 5 ขั้นตอน

วีดีโอ: โปรแกรมวาดภาพ VGA: 5 ขั้นตอน
วีดีโอ: ซีพียูทำงาน 100% แต่การ์ดจอทำงานไม่ถึง 100% เกิดจากอะไรและทำยังไงดี พี่เปามีคำตอบครับ 2024, พฤศจิกายน
Anonim
โปรแกรมวาดภาพ VGA
โปรแกรมวาดภาพ VGA

โครงการโดย: Adam Klein, Ian Strachan, Brandon Slater

โปรเจ็กต์ที่เราตั้งใจจะทำให้เสร็จคือการจัดเก็บ แยกวิเคราะห์ และแสดงข้อมูลจากเมาส์ USB ในรูปแบบของโปรแกรมระบายสี แนวคิดเบื้องหลังโครงการนี้คือสามารถเสียบเมาส์และสาย VGA เข้ากับบอร์ด Basy ในพอร์ตในตัว และให้เมาส์แสดงเป็นสี่เหลี่ยมภาพวาดที่เคลื่อนย้ายได้บนจอภาพ ซึ่งจะเปลี่ยนสีต่างๆ เมื่อคลิกซ้ายและขวา ใช้แล้ว. โดยพื้นฐานแล้ว เราจะสร้างไดรเวอร์สำหรับใช้เมาส์กับบอร์ดเบส และให้จอภาพเป็นเครื่องยืนยันการทำงานของเรา สิ่งที่เกิดขึ้นจริงคือการสร้างโปรแกรมวาดภาพโดยใช้บอร์ด basys เป็นระบบอินพุต และระบบเก็บข้อมูลกึ่งฟังก์ชันสำหรับเมาส์

ในคำแนะนำนี้ เราจะแบ่งขั้นตอนจากอินพุตเมาส์เป็นเอาต์พุต vga

ขั้นตอนที่ 1: แรงจูงใจและปัญหา

แรงจูงใจและปัญหา
แรงจูงใจและปัญหา

แรงจูงใจ:

แรงจูงใจหลักสำหรับโครงการของเราคือการสร้างไดรเวอร์เมาส์สำหรับบอร์ด Basys3 ที่นักเรียน CPE 133 ในอนาคตจะสามารถใช้สำหรับโครงการสุดท้ายของพวกเขาได้ในอนาคต อย่างไรก็ตาม เราได้นำแนวคิดนี้ไปอีกขั้นด้วยการสร้างโปรแกรมการวาดภาพ ซึ่งเป็นโปรแกรมที่นักเรียนในอนาคตสามารถสร้างขึ้นมาได้เช่นกัน

ปัญหา:

ปัญหาที่เราค้นพบคือไม่มีโมดูลเมาส์ที่ชัดเจนพร้อมที่จะดาวน์โหลดและใช้สำหรับบอร์ด Basy3 เพื่อแก้ปัญหานี้ เราพยายามสร้างมันขึ้นมาเอง การทำเช่นนี้ทำให้เรามุ่งมั่นที่จะสร้างโมดูลเมาส์ที่จะช่วยให้นักเรียนในอนาคตนำการป้อนข้อมูลด้วยเมาส์ไปใช้ในโครงการของตนได้ง่ายขึ้น

ขั้นตอนที่ 2: รับข้อมูล Raw Bit จาก Basy USB

รับข้อมูลบิตดิบจาก USB พื้นฐาน
รับข้อมูลบิตดิบจาก USB พื้นฐาน
  • สิ่งที่เราทำกับเมาส์ส่วนใหญ่ในโปรเจ็กต์นี้มาจากเอกสารประกอบของ Basy3 จากคำแนะนำเล็กๆ เกี่ยวกับพอร์ต USB ของ Basy ใน pdf นั้น เราพบว่าบอร์ด Basy มีนาฬิกาในตัวสำหรับอ่านบิตด้วยความเร็วที่เหมาะสมจากอุปกรณ์ USB
  • โดยพื้นฐานแล้ว เมาส์จะส่งบิตไปยัง usb โดยเริ่มจากสถานะไม่ได้ใช้งาน อ่าน 32 บิตแทนสถานะเมาส์ ตำแหน่ง x และตำแหน่ง y และสุดท้ายจบลงด้วยบิตที่ไม่ได้ใช้งานอีกบิต ในการทำเช่นนี้ ส่วนประกอบอินพุตของเมาส์ใช้ shift register และตัวนับ 32 บิต โดยที่ shift register ใช้เพื่อเก็บข้อมูลขาเข้า 32 บิตจากเมาส์ และตัวนับ 32 บิตใช้เพื่อนับจำนวนบิตที่จัดเก็บไว้เพื่อให้สถานะ ลงทะเบียนเพื่อรีเซ็ตและจัดเก็บ 32 บิตขาเข้าชุดถัดไป
  • ดาวน์โหลดโค้ดสำหรับ shift register ตัวนับ 32 บิต และเครื่องอ่านข้อมูลได้ที่ด้านล่าง รวมถึงไฟล์ข้อจำกัดที่ปรับให้เข้ากับการใช้พอร์ต USB ของเราเป็นอินพุต

ขั้นตอนที่ 3: การแยกวิเคราะห์ข้อมูล USB

การแยกวิเคราะห์ข้อมูล USB
การแยกวิเคราะห์ข้อมูล USB
การแยกวิเคราะห์ข้อมูล USB
การแยกวิเคราะห์ข้อมูล USB
  • หลังจากสร้างอินพุตเมาส์ไปยังส่วนประกอบ usb ขั้นตอนต่อไปคือการสร้างส่วนประกอบข้อมูล usb บิตเป็นเวกเตอร์ซึ่งจะทำให้ข้อมูลที่ได้รับจากเมาส์สามารถอ่านได้สำหรับ vga
  • ส่วนประกอบนี้ใช้เครื่องสถานะที่ใช้ในชุดของบิตที่ส่งออกโดยอินพุตเมาส์ไปยัง usb และย้ายผ่านสถานะโดยพิจารณาจากว่ามีการป้อนบิตใหม่ที่เปลี่ยนสถานะและตำแหน่งของเมาส์หรือไม่
  • แผนภาพบล็อกสำหรับสองขั้นตอนแรกของโครงการแสดงไว้ที่นี่ และไฟล์ vhdl สองไฟล์ใช้สำหรับทดสอบการใช้งานเมาส์โดยใช้ไฟ LED พื้นฐาน (การทดสอบที่ไม่ผ่านอย่างน่าเสียดาย) และสำหรับการส่งกระแสข้อมูลบิตจาก USB พอร์ตเพื่อเพิ่มความเร็วและกำหนดตำแหน่งเวกเตอร์ที่ VGA สามารถใช้ได้
  • รูปภาพถัดจากบล็อกไดอะแกรมด้านบนเป็นสแน็ปช็อตขนาดเล็ก (Instructables ไม่อนุญาตให้เราแสดงรูปภาพแบบเต็มความกว้าง) ของข้อมูลบิตที่เราพบในเอกสารประกอบพื้นฐานสำหรับการทำตามขั้นตอนนี้ให้เสร็จสิ้น

ขั้นตอนที่ 4: การแสดงภาพที่ทาสีบน VGA และการแก้ไขสิ่งที่กำลังวาด

การแสดงภาพที่วาดบน VGA และการแก้ไขสิ่งที่กำลังวาด
การแสดงภาพที่วาดบน VGA และการแก้ไขสิ่งที่กำลังวาด
การแสดงภาพที่วาดบน VGA และการแก้ไขสิ่งที่กำลังวาด
การแสดงภาพที่วาดบน VGA และการแก้ไขสิ่งที่กำลังวาด
การแสดงภาพที่วาดบน VGA และการแก้ไขสิ่งที่กำลังวาด
การแสดงภาพที่วาดบน VGA และการแก้ไขสิ่งที่กำลังวาด
  • สาย VGA มีเอาต์พุต 14 บิต, 4 บิตสำหรับแต่ละสีจากสามสี และบิตสำหรับการซิงค์ในแนวนอนและแนวตั้ง
  • OtherVGA เป็นโมดูล VGA ที่ให้มาและทำงานดังต่อไปนี้:

    • จอภาพแบ่งออกเป็น 40x30 บล็อกขนาด 16x16 พิกเซลสำหรับหน้าจอความละเอียด 640x480 ดังที่แสดงในภาพด้านบน โมดูลจะเลือกที่อยู่บล็อกเพื่อแสดงหนึ่งใน 1200 บล็อกบนจอภาพ ที่อยู่บล็อกถูกเลือกผ่านสมการต่อไปนี้: ที่อยู่ = 40y + x
    • สีจะแสดงด้วยสัญญาณ 12 บิตซึ่งสัมพันธ์กับค่า RRRRGGGGBBBB ที่ทำให้สีบล็อกที่เลือก
  • รหัสควบคุมของเรา VGAtest และ VGAtestconst ทำงานดังต่อไปนี้:

    • ขั้นแรกให้ตั้งค่าบล็อกที่เลือกไว้ตรงกลางจอภาพ
    • สีของบล็อกถูกกำหนดโดยสวิตช์ 12 ตัวบนกระดานโดยตั้งค่า RRRRGGGGBBBB
    • ปุ่มทิศทางสี่ปุ่มบนกระดานจะเปลี่ยนที่อยู่ที่เลือก ตัวอย่างเช่น การกดปุ่มขวาจะเพิ่ม 1 ไปยังที่อยู่ โดยเลือกบล็อกที่หนึ่งทางด้านขวาของบล็อกก่อนหน้า การกดปุ่มลงจะเพิ่ม 40 ไปยังที่อยู่ โดยเลือกบล็อกที่อยู่ใต้บล็อกก่อนหน้า
    • ปุ่มกลางใช้เพื่อตั้งค่าสีทั้งหมดเป็น 0 เมื่อกด ฟังก์ชันนี้มีไว้เพื่อใช้เป็นปุ่มลบที่ผู้ใช้ใช้งานง่าย ดังนั้นผู้ใช้จึงไม่ต้องพลิกทุกสวิตช์เป็น 0 เพื่อลบ
  • ภาพสุดท้ายคือแผนภาพบล็อกสำหรับคอนโทรลเลอร์ มันค่อนข้างกว้างเนื่องจากมีส่วนประกอบของโมดูลและอาจแสดงผลได้ไม่เต็มที่

ขั้นตอนที่ 5: สนุกกับการสร้างสรรค์ของคุณ

ลิงก์ที่นี่คือไทม์แลปส์อย่างรวดเร็วของความสนุกที่คุณมีกับโปรเจ็กต์สุดท้ายได้ แม้จะเพียงแค่ใช้สวิตช์และปุ่มบนกระดานเบสเป็นอินพุต

ขอบคุณที่อ่าน!

แนะนำ: