Чому FPGA використовуються так часто для відео-проектів HDMI?


24

Якщо ви переглянете hdmi-проекти на такому сайті, як хакдей , ви побачите, що майже кожен з них включає FPGA. Я не думаю, що я не бачив жодного DIY проекту з виходом HDMI, який не використовував FPGA.

Але чому? Наскільки я можу сказати, FPGA коштують дорого, приблизно від 70 до 100 доларів. Порівняйте це з Raspberry Pi за 35 доларів, що може робити складніші речі та виводити HDMI. Чому ARM не використовується? Або ще дешевший мікроконтролер?

Що стосується оновлення відео на старих ігрових системах, логіка не повинна бути більш складною, з якою керує дешевий мікроконтролер , але я продовжую бачити HDMI як неможливе перешкоду, з яким вирішуються лише FPGA.


Ви також можете знайти дешевий G PUS (наприклад, на RPi). Проблема полягає в тому, що вони не робитимуть дій, які порушують ліцензію HDMI або є явно незаконними в деяких країнах (DMCA). Це те, що більшість проектів, з якими ви посилаєтесь. Ви можете придбати IP-ядро GPU і змінити його для таких дій ... Але хто збирається створити його для вас? FPGA - убогий чоловік (або пірат).
Фіз

Відповіді:


66

В основному, жоден мікроконтролер, навіть малиновий пі, є досить швидким. Малина pi має вбудований GPU, який генерує вихід HDMI. І крім цього, можливість вводу / виводу малинового пі надзвичайно обмежена - найвищий інтерфейс пропускної здатності окрім HDMI - це USB. Багато проектів перетворення HDMI передбачають зняття іншого відеопотоку в дивному форматі та перероблення його на щось, що може бути надіслане до стандартного HDTV через HDMI. Для цього потрібна певна спеціальна логіка взаємодії для читання відеосигналу, логіки обробки сигналів для її переформатування, логіки кодування HDMI TMDS, а потім високошвидкісних серіалізаторів для фактичного керування портом HDMI.

Робота з потоковим, нестисненим відео високої чіткості вимагає обробки величезної кількості даних, чого неможливо здійснити в центральному процесорі загального призначення. Відеосигнал 1080p зі швидкістю 30 кадрів в секунду має близько 62 мільйонів пікселів в секунду. Малиновий пі працює на частоті 700 МГц, тому ви маєте, о, 11 інструкцій на піксель. І це 11 інструкцій читати у форматі дивного відео у режимі реального часу, змінювати його масштаб тощо та ін. Неможливо. Період.

На FPGA можна генерувати довгий конвеєр обробки, який може обробляти один або кілька пікселів за тактовий цикл і робити це вкрай детерміновано (без перебоїв або переключення завдань!), Щоб дані пікселів були готові до передачі через HDMI точно в потрібний час. Якщо ви широко працювали з центральними процесорами, що працюють під будь-якою операційною системою, ви знатимете, що отримати точний хронометр на рівні мілісекунд є більш-менш можливим, але на мікросекундному рівні це майже неможливо. Для HDMI потрібна точність наносекундної шкали. Не підлягає процесору загального призначення. Також погляньте на аудіо / відео проект HDMI для neo geo. Цей не тільки має змінити масштаб відео, але він також повинен перевпорядкувати аудіо та вставити його у відеопотік HDMI.

І це все ще не враховує власну логіку, необхідну для читання у будь-якому форматі вхідних даних. Для інтерпретації цього знадобиться спеціальне обладнання. Програмне забезпечення недостатньо швидко або детерміновано. Можливо, ви зможете, скажімо, переформатувати його в якийсь USB-потік, але для цього потрібна спеціальна цифрова логіка, так що ви можете просто виводити HDMI безпосередньо.

Для реалізації всього цього цифрова логіка - це справді єдине можливе рішення. І якщо ви робите цифрову логіку, FPGA - єдине можливе рішення, оскільки це занадто швидко і занадто складно для дискретних логік 7400, а ASIC - це на кілька порядків дорожче.

Іншим необхідним компонентом є власне швидкісні серіалізатори та диференціальні драйвери для генерації паралельних потоків послідовних даних, які надсилаються по кабелю. Неможливо перебивати послідовні дані в порядку гігабіту в секунду з центрального процесора загального призначення, для цього потрібне спеціалізоване обладнання. Малиновий пі має вбудований GPU, який робить це, але це обмежено з точки зору того, на що здатний GPU, не кажучи вже про те, що документально підтверджено. Більшість FPGA містять принаймні необхідні диференціальні драйвери та фліп-флоти DDR, яких достатньо для підтримки відео з низькою роздільною здатністю, і є досить багато FPGA, які також містять необхідні серіалізатори (тобто блоки Xilinx OSERDES) для генерації потоків повного HD. Не забувайте, що послідовний потік не є "базовим діапазоном" як звичайний послідовний порт, де фактичні дані надсилаються дослівно з деякою інформацією про обрамлення, але дані фактично кодуються TMDS (мінімізована перехідна диференціальна сигналізація) для надання сигналу певних електричних характеристик. Трохи логіки потрібно здійснити це на додаток до справжніх швидкодіючих серіалізаторів. Все це досить просто зробити в чистій цифровій логіці (ну, кодування все одно - серіалізатори, мабуть, аналогові, або принаймні змішаний сигнал) або на ASIC, або на FPGA.

Насправді це дуже важлива частина загального цифрового / вбудованого процесу проектування системи, щоб визначити, які частини системи можуть бути реалізовані в програмному забезпеченні, а які потребують апаратного забезпечення, або у формі позаштатних спеціалізованих чіпів, FPGA, на замовлення ASIC, жорсткий або м'який IP (HDL, netlists, GDSII) і т. Д. У цьому випадку це чітко: для генерації відеосигналів потрібне спеціалізоване обладнання, будь то GPU в парі з процесором загального призначення, FPGA з інтегральним жорстким або м'яке ядро ​​CPU або в парі з зовнішнім процесором, або щось більш спеціалізоване.

Редагувати: Я щойно зрозумів, що сайт fpga4fun та відео-проект neo geo працюють у форматі 640x480 замість повного HD. Однак це насправді не робить це в той час як робота набагато простіша. Мінімальний тактовий піксель - 25 МГц, а бітний такт - 250 МГц. Це означає, що FPGA насправді не вимагає серіалізаторів для передачі HDMI, лише фліп-флопи DDR. Це все ще не полегшує питання читання відеоданих. Якщо ви хочете зробити це на малиновому пі без будь-якої апаратної допомоги, вам доведеться читати з GPIO постійно на 25 МГц. Що таке один читання кожні 175 інструкцій. Введіть сферу можливостей, але єдиний спосіб, який ви зробите, це робота над голим металом (без Linux) з ручним кодуванням.


2
Тепер, коли я згадав 7400 логіку ... мені цікаво, чи можна генерувати сигнал HDMI з дискретною логікою. На сайті fpga4fun є приклад відео 640х480 з тактовою частотою 25 МГц HDMI для бітової швидкості 250 Мбіт / с або 125 МГц DDR. Це не настільки високо, що це можливо зробити з дискретними логічними фішками. Може бути цікавим проектом для когось.
alex.forencich

11 інструкцій на піксель - як ви обчислили це число? Ви припускаєте одну інструкцію за годинник?
gronostaj

700 МГц / 62 Мпс = 11,3. Припущення Ballpark - 1 процесор на тактовий цикл для одного основного процесора.
alex.forencich

І інше припущення, яке, напевно, я не згадував, - це те, що вхідний відеосигнал буде бити в штифти GPIO без апаратної допомоги, тому вказівки щодо цього повинні були б якось переплутатися з правильними термінами.
alex.forencich

15
TL; DR: повинно бути виконано апаратно. Програмне забезпечення занадто повільне.
JS.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.