สารบัญ:

การออกแบบตัวควบคุม VGA อย่างง่ายใน VHDL และ Verilog: 5 ขั้นตอน
การออกแบบตัวควบคุม VGA อย่างง่ายใน VHDL และ Verilog: 5 ขั้นตอน

วีดีโอ: การออกแบบตัวควบคุม VGA อย่างง่ายใน VHDL และ Verilog: 5 ขั้นตอน

วีดีโอ: การออกแบบตัวควบคุม VGA อย่างง่ายใน VHDL และ Verilog: 5 ขั้นตอน
วีดีโอ: Lesson 104 - VGA Controller 2024, พฤศจิกายน
Anonim
การออกแบบตัวควบคุม VGA อย่างง่ายใน VHDL และ Verilog
การออกแบบตัวควบคุม VGA อย่างง่ายใน VHDL และ Verilog

ในคำแนะนำนี้ เราจะออกแบบตัวควบคุม 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
การรวมตัวควบคุม 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

แนะนำ: