สารบัญ:
- ขั้นตอนที่ 1: อินเทอร์เฟซของตัวควบคุม VGA
- ขั้นตอนที่ 2: การรวมตัวควบคุม VGA เข้ากับจอแสดงผล VGA
- ขั้นตอนที่ 3: การออกแบบเฟรมบัฟเฟอร์
- ขั้นตอนที่ 4: บันทึกย่อ
- ขั้นตอนที่ 5: ไฟล์แนบ
วีดีโอ: การออกแบบตัวควบคุม VGA อย่างง่ายใน VHDL และ Verilog: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ในคำแนะนำนี้ เราจะออกแบบตัวควบคุม VGA อย่างง่ายใน RTL VGA Controller เป็นวงจรดิจิตอลที่ออกแบบมาเพื่อขับเคลื่อนจอภาพ VGA โดยจะอ่านจาก Frame Buffer (หน่วยความจำ VGA) ซึ่งแสดงถึงเฟรมที่จะแสดง และสร้างข้อมูลที่จำเป็นและสัญญาณซิงค์เพื่อการแสดงผล
หากคุณกำลังมองหา Verilog/System verilog code: เยี่ยมชมบล็อกของฉัน VGA Controller and Video System ใน Verilog
ขั้นตอนที่ 1: อินเทอร์เฟซของตัวควบคุม VGA
ต่อไปนี้เป็นสัญญาณอินเทอร์เฟซหลักในตัวควบคุม VGA
- นาฬิกาพิกเซลหรือนาฬิกา VGA
- สัญญาณ HSYNC และ VSYNC
สำหรับจอแสดงผล VGA ที่เลือก คุณต้องคำนวณความถี่ของนาฬิกาพิกเซลที่จำเป็นในการขับเคลื่อนก่อน ขึ้นอยู่กับพารามิเตอร์ 3 ตัว ได้แก่ พิกเซลแนวนอนทั้งหมด พิกเซลแนวตั้งทั้งหมด อัตราการรีเฟรชหน้าจอ
โดยทั่วไป F = THP * TVP * อัตราการรีเฟรช
ค้นหาเอกสารเกี่ยวกับนาฬิกาพิกเซลที่จำเป็นสำหรับจอแสดงผล VGA ต่างๆ ใน RAR ที่แนบมา
สัญญาณ HSYNC และ VSYNC ถูกสร้างขึ้นจากนาฬิกา Pixel เวลาของสัญญาณ HSYNC และ VSYNC ขึ้นอยู่กับจำนวนของพารามิเตอร์: Frontporch แนวนอนและแนวตั้ง Backporch แนวนอนและแนวตั้ง พิกเซลการแสดงผลแนวนอนและแนวตั้ง ความกว้างพัลส์ซิงค์แนวนอนและแนวตั้งและขั้ว
พารามิเตอร์เหล่านี้เป็นมาตรฐานสำหรับจอแสดงผล VGA ที่เลือก ค้นหาเอกสารเหล่านี้ใน RAR ที่แนบมา
พารามิเตอร์เหล่านี้เป็นพารามิเตอร์ที่กำหนดค่าได้ใน VGA Controller IP ของเรา
ขั้นตอนที่ 2: การรวมตัวควบคุม VGA เข้ากับจอแสดงผล VGA
รูปภาพแสดงวิธีการรวมตัวควบคุม VGA เข้ากับจอแสดงผล VGA คุณต้องมีส่วนประกอบเพิ่มเติมอีกสององค์ประกอบเพื่อให้ระบบสมบูรณ์:
- Frame Buffer: หน่วยความจำที่เก็บเฟรมที่จะแสดง
- Video DAC: DAC ที่แปลงข้อมูลดิจิตอล RGB และขับเคลื่อนจอแสดงผล VGA ด้วยสัญญาณอนาล็อก RGB ที่ระดับแรงดันไฟฟ้าที่เหมาะสม
หนึ่งใน Video DAC ที่ง่ายและเป็นที่นิยมที่สุดคือ ADV7125 เป็น DAC 8 บิตที่แปลงคำดิจิตอล RGB เป็นสัญญาณแอนะล็อก 0-0.7 V และขับเคลื่อนจอแสดงผล VGA
ขั้นตอนที่ 3: การออกแบบเฟรมบัฟเฟอร์
เป็นหน่วยความจำที่ 'เก็บ' ภาพที่จะแสดง โดยทั่วไปจะเป็น RAM หรือ ROM บางครั้ง เราจะหารือถึงวิธีออกแบบเฟรมบัฟเฟอร์เพื่อแสดงภาพ บัฟเฟอร์เฟรมส่งข้อมูลดิจิทัลนี้ไปยัง Video DAC ตามคำสั่งจากตัวควบคุม VGA
ก่อนอื่นเราต้องตัดสินใจเลือกความลึกของพิกเซลที่ต้องการ มันตัดสินคุณภาพของภาพ ความหลากหลายของสีที่พิกเซลสามารถแสดงได้ สำหรับ DAC 8 บิต เราต้องแสดงองค์ประกอบสีหลักของพิกเซล: R, G และ B ในแต่ละ 8 บิต หมายความว่า พิกเซลเป็น 24 บิต
แต่ละพิกเซลจะถูกจัดเก็บในลักษณะที่ต่อเนื่องกันในตำแหน่งหน่วยความจำบัฟเฟอร์เฟรม
สมมติว่าภาพที่จะแสดงมีขนาด 800x600 พิกเซล
ดังนั้นเฟรมบัฟเฟอร์ที่ต้องการคือ 800x600 = 480000 x 24 บิตหน่วยความจำ
ขนาดหน่วยความจำรวม 800x600x24 = 1400 kB โดยประมาณ
ถ้าภาพขาวดำ 800x600x1 = 60 kB โดยประมาณ
บล็อก RAM อาจใช้เพื่อเป็นตัวแทนของ Frame Buffer ใน Xilinx FPGA
ขั้นตอนที่ 4: บันทึกย่อ
- จำเป็นต้องมีสัญญาณเพิ่มเติมบนตัวควบคุม VGA ขึ้นอยู่กับ DAC ที่เลือก ผมเคยใช้ ADV7125
- เพิ่มรอบการหน่วงเวลาผ่าน flip-flop บน VSYNC และ HSYNC ก่อนขับจอแสดงผล VGA นี่เป็นเพราะเวลาแฝงของ DAC และหน่วยความจำ สัญญาณพิกเซลควรซิงโครไนซ์กับ HSYNC และ VSYNC ในกรณีของฉันมันเป็น 2 รอบล่าช้า
- หากเฟรมบัฟเฟอร์ตามขนาดที่กำหนดไม่สามารถออกแบบบน FPGA ได้เนื่องจากข้อจำกัดขนาดบล็อกแรม ให้ใช้หน่วยความจำที่เล็กกว่าเพื่อแสดงภาพ และแก้ไขโค้ดเพื่อเลื่อนไปยังที่อยู่ในขอบเขตของหน่วยความจำที่มีอยู่ แทนที่จะเป็นขอบเขตของฟูลเฟรม การดำเนินการนี้จะทำซ้ำภาพเดียวกันซ้ำแล้วซ้ำอีกตลอดทั้งหน้าจอ อีกวิธีหนึ่งคือการปรับขนาดพิกเซลซึ่งแต่ละพิกเซลจะถูกจำลองเพื่อแสดงภาพทั้งหมดแบบเต็มหน้าจอด้วยความละเอียดที่น้อยกว่า ซึ่งสามารถทำได้โดยปรับแต่งตรรกะการเพิ่มที่อยู่ในโค้ด
- IP นั้นพกพาได้อย่างสมบูรณ์ใน FPGA ทั้งหมด และมีการตรวจสอบเวลาสูงถึง 100 MHz บน Virtex-4 FPGA
ขั้นตอนที่ 5: ไฟล์แนบ
RAR ประกอบด้วย:
- รหัสคอนโทรลเลอร์ VGA
- PDFs ของมาตรฐาน VGA
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ