В основному, жоден мікроконтролер, навіть малиновий пі, є досить швидким. Малина 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) з ручним кодуванням.