ทำไม FPGA จึงถูกใช้บ่อยสำหรับโครงการวิดีโอ HDMI


24

หากคุณดูโครงการ hdmi บนเว็บไซต์อย่างเช่น hackadayคุณจะพบว่าทุกอย่างเกี่ยวกับ FPGA ฉันไม่คิดว่าจะเห็นโครงการ DIY ใด ๆ ที่มีเอาต์พุต HDMI ที่ไม่ได้ใช้ FPGA

แต่ทำไม เท่าที่ฉันสามารถบอกได้ FPGAs มีราคาแพงประมาณ $ 70 - $ 100 เปรียบเทียบกับ Raspberry Pi ราคา $ 35 ที่สามารถทำสิ่งที่ซับซ้อนมากขึ้นและส่งออก HDMI ทำไม ARM ถึงไม่ใช้? หรือไมโครคอนโทรลเลอร์ที่ราคาถูกกว่า?

ในกรณีของการอัพเกรดวิดีโอบนระบบเกมเก่าตรรกะไม่น่าจะซับซ้อนกว่าที่ไมโครคอนโทรลเลอร์ราคาถูกสามารถจัดการได้ แต่ฉันเห็น HDMI เป็นอุปสรรคที่เป็นไปไม่ได้ที่ FPGAs จัดการ


คุณสามารถหาG PUS ราคาถูกได้เช่นกัน (เช่นใน RPi) สิ่งที่จับได้คือพวกเขาจะไม่ทำสิ่งที่ละเมิดใบอนุญาต HDMI หรือผิดกฎหมายโดยทันทีในบางประเทศ (DMCA) สิ่งใดเป็นโครงการส่วนใหญ่ที่คุณเชื่อมโยงไปถึง คุณสามารถซื้อIP core GPU และปรับเปลี่ยนเพื่อทำสิ่งต่าง ๆ ... แต่ใครจะไปหาคุณ? FPGA เป็นคนยากจน (หรือของโจรสลัด) fab
Fizz

คำตอบ:


66

โดยพื้นฐานแล้วไม่มีไมโครคอนโทรลเลอร์แม้แต่ราสเบอร์รี่ปี่ก็เร็วพอ ราสเบอร์รี่ pi มี GPU ออนบอร์ดที่สร้างเอาต์พุต HDMI และนอกเหนือจากนั้นความสามารถของ I / O ของราสเบอร์รี่ pi นั้นมี จำกัด อย่างไม่น่าเชื่อ - อินเตอร์เฟสแบนด์วิธที่สูงที่สุดนอกเหนือจาก HDMI คือ USB โครงการแปลง HDMI หลายโครงการเกี่ยวข้องกับการรับสตรีมวิดีโออื่นในรูปแบบแปลก ๆ และการทำงานซ้ำซึ่งเป็นสิ่งที่สามารถส่งไปยัง HDTV มาตรฐานผ่าน HDMI ต้องใช้ตรรกะการเชื่อมต่อแบบกำหนดเองเพื่ออ่านในสัญญาณวิดีโอประมวลสัญญาณสัญญาณเพื่อทำการฟอร์แมทตรรกะการเข้ารหัส HDMI TMDS จากนั้นตัวเรียงลำดับความเร็วสูงเพื่อขับเคลื่อนพอร์ต HDMI

การทำงานกับสตรีมมิ่งวิดีโอที่ไม่มีการบีบอัดและมีความคมชัดสูงนั้นต้องการการประมวลผลข้อมูลจำนวนมากซึ่งเป็นสิ่งที่ไม่สามารถทำได้บน CPU ที่ใช้งานทั่วไป สัญญาณวิดีโอ 1080p ที่ 30 เฟรมต่อวินาทีมีประมาณ 62 ล้านพิกเซลต่อวินาที ราสเบอร์รี่ pi ทำงานที่ 700 MHz ดังนั้นคุณมี 11 คำแนะนำต่อพิกเซล และนั่นคือ 11 คำแนะนำในการอ่านในรูปแบบวิดีโอคี่บอลแบบเรียลไทม์, ขายต่อเป็นต้น ระยะเวลา

ใน FPGA เป็นไปได้ที่จะสร้างขั้นตอนการประมวลผลที่ยาวซึ่งสามารถประมวลผลหนึ่งพิกเซลหรือมากกว่าต่อรอบสัญญาณนาฬิกาและทำได้ในลักษณะที่กำหนดไว้สูง (ไม่มีการขัดจังหวะหรือการสลับงาน!) เพื่อให้ข้อมูลพิกเซลพร้อมสำหรับการส่งผ่าน HDMI ในเวลาที่เหมาะสม หากคุณทำงานอย่างกว้างขวางกับซีพียูที่ใช้งานทั่วไปที่ใช้ระบบปฏิบัติการใด ๆ คุณจะรู้ว่าการกำหนดเวลาที่แม่นยำในระดับ milisecond นั้นทำได้ไม่มากก็น้อย แต่ในระดับไมโครวินาทีนั้นเป็นไปไม่ได้เลยทีเดียว สำหรับ HDMI คุณต้องมีความแม่นยำระดับนาโนวินาที ไม่สามารถทำได้บน CPU วัตถุประสงค์ทั่วไป นอกจากนี้ให้ดูที่โครงการเสียง / วิดีโอ HDMI สำหรับ neo geo อันนี้ไม่เพียง แต่จะ rescale วิดีโอมันยังต้อง resample เสียงและใส่ลงในสตรีมวิดีโอ HDMI

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

ในการดำเนินการทั้งหมดนี้ตรรกะดิจิทัลเป็นทางออกที่เป็นไปได้เท่านั้น และถ้าคุณกำลังทำตรรกะดิจิตอล FPGAs เป็นทางออกที่เป็นไปได้เพียงอย่างเดียวเนื่องจากมันเร็วเกินไปและซับซ้อนเกินไปสำหรับตรรกะ 7400 ที่ไม่ต่อเนื่องและ ASIC นั้นดีคำสั่งขนาดใหญ่หลายคำมีราคาแพงกว่า

ส่วนประกอบที่จำเป็นอีกอย่างหนึ่งคือตัวเรียงลำดับความเร็วสูงที่เกิดขึ้นจริงและไดร์เวอร์ที่แตกต่างกันเพื่อสร้างสตรีมข้อมูลอนุกรมแบบขนาน เป็นไปไม่ได้ที่จะส่งข้อมูลแบบบิตบิตในลำดับกิกะบิตต่อวินาทีจาก CPU ที่ใช้งานทั่วไปสิ่งนี้ต้องใช้ฮาร์ดแวร์เฉพาะ ราสเบอร์รี่ pi มี GPU ออนบอร์ดที่ทำสิ่งนี้ แต่มีข้อ จำกัด ในแง่ของความสามารถของ GPU ไม่ต้องพูดถึงสิ่งที่บันทึกไว้ FPGA ส่วนใหญ่จะมีไดร์เวอร์ดิฟเฟอเรนเชียลที่จำเป็นและฟลิปฟล็อป DDR ที่เพียงพอที่จะรองรับวิดีโอความละเอียดต่ำและมี FPGAs ไม่กี่ตัวที่มีซีเรียลไลเซอร์ที่จำเป็น (เช่น Xilinx OSERDES block) อย่าลืมว่าสตรีมอนุกรมไม่ใช่ 'เบสแบนด์' เหมือนพอร์ตอนุกรมปกติที่ข้อมูลจริงถูกส่งด้วยคำต่อคำมีข้อมูลกรอบบางส่วน แต่ข้อมูลนั้นถูกเข้ารหัสด้วย TMDS (การส่งสัญญาณที่แตกต่างกันลดทรานส์) เพื่อให้สัญญาณคุณสมบัติทางไฟฟ้าบางอย่าง ต้องใช้ตรรกะเล็กน้อยในการดำเนินการนี้นอกเหนือจาก serializers ความเร็วสูงที่เกิดขึ้นจริง ทั้งหมดนี้ค่อนข้างง่ายที่จะทำในลอจิกดิจิตอลบริสุทธิ์ (เช่นกันการเข้ารหัสต่อไป - serialzers เป็นอะนาล็อกเนื้อหาหรือสัญญาณผสมอย่างน้อย) ทั้ง ASIC หรือ FPGA

จริงๆแล้วมันเป็นส่วนสำคัญของกระบวนการออกแบบระบบดิจิตอล / ฝังตัวโดยรวมเพื่อให้ทราบว่าส่วนใดของระบบที่สามารถนำไปใช้ในซอฟต์แวร์และสิ่งใดที่ต้องใช้ฮาร์ดแวร์ไม่ว่าจะเป็นในรูปแบบของชิปพิเศษ FPGAs แบบกำหนดเอง ASICs, IP ที่แข็งหรืออ่อน (HDL, netlists, GDSII) ฯลฯ ในกรณีนี้มันชัดเจน: การสร้างสัญญาณวิดีโอต้องใช้ฮาร์ดแวร์พิเศษไม่ว่าจะเป็น GPU ที่จับคู่กับ CPU ที่ใช้งานทั่วไป, FPGA ที่มีฮาร์ดหรือ soft CPU core หรือจับคู่กับ CPU ภายนอกหรือบางสิ่งที่พิเศษกว่า

แก้ไข: ฉันเพิ่งรู้ว่าเว็บไซต์ fpga4fun และโครงการวิดีโอ neo geo ทำงานที่ 640x480 แทนที่จะเป็น full HD อย่างไรก็ตามนี่ไม่ได้ทำให้สิ่งนี้เกิดขึ้นจริงในขณะที่การทำงานง่ายขึ้นมาก นาฬิกาพิกเซลขั้นต่ำคือ 25 MHz, ด้วยนาฬิกา bit 250 MHz ซึ่งหมายความว่า FPGA จริง ๆ แล้วไม่ต้องการ serializers ในการส่ง HDMI เพียง flip flops DDR แม้ว่าจะยังไม่สามารถบรรเทาปัญหาการอ่านข้อมูลวิดีโอได้ หากคุณต้องการทำเช่นนั้นบนราสเบอร์รี่ pi โดยไม่มีความช่วยเหลือด้านฮาร์ดแวร์คุณจะต้องอ่านจาก GPIO อย่างต่อเนื่องที่ 25 MHz ซึ่งเป็นหนึ่งอ่านทุก 175 คำแนะนำ การเข้าสู่ขอบเขตของความเป็นไปได้ แต่วิธีเดียวที่คุณจะทำให้งานนั้นอยู่บนโลหะเปลือย (ไม่มี Linux) ด้วยชุดประกอบที่เขียนด้วยมือ


2
ตอนนี้ฉันพูดถึงลอจิก 7400 ... ฉันสงสัยว่ามันเป็นไปได้ที่จะสร้างสัญญาณ HDMI ด้วยตรรกะที่ไม่ต่อเนื่อง ไซต์ fpga4fun มีตัวอย่างวิดีโอ 640x480 พร้อมนาฬิกา 25 MHz HDMI สำหรับอัตราบิต 250 Mbit / วินาทีหรือ 125 MHz DDR ที่ไม่สูงมากจนอาจทำได้ด้วยชิปตรรกะแบบแยก อาจเป็นโครงการที่น่าสนใจสำหรับใครบางคน
alex.forencich

11 คำแนะนำต่อพิกเซล - คุณคำนวณจำนวนนั้นอย่างไร คุณสมมติหนึ่งคำสั่งต่อหนึ่งขีดนาฬิกาหรือไม่?
gronostaj

700 MHz / 62 Mpps = 11.3 สมมติฐาน Ballpark 1 CPU ต่อรอบสัญญาณนาฬิกาสำหรับ CPU แกนเดียว
alex.forencich

และข้อสันนิษฐานอื่น ๆ ที่ฉันคิดว่าฉันไม่ได้กล่าวถึงก็คือสัญญาณอินพุตวิดีโอจะถูกกระแทกเข้ากับพิน GPIO โดยไม่มีการช่วยเหลือด้านฮาร์ดแวร์ดังนั้นคำแนะนำสำหรับสิ่งนั้นจะต้องมีการประสานกันอย่างใดเวลาหนึ่ง
alex.forencich

15
TL; DR: ต้องทำในฮาร์ดแวร์ ซอฟต์แวร์ช้าเกินไป
JS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.