Temel olarak, hiçbir mikroişlemci, hatta ahududu pi, yeterince hızlı değildir. Ahududu pi, HDMI çıkışını üreten yerleşik bir GPU'ya sahiptir. Bunun dışında ahududu pi'nin G / Ç özelliği inanılmaz derecede sınırlıdır - HDMI'dan farklı olarak en yüksek bant genişliği arayüzü USB'dir. HDMI dönüştürme projelerinin çoğu, garip bir formatta başka bir video akışı almayı ve bunu HDMI üzerinden standart bir HDTV'ye gönderilebilecek bir şey haline getirmeyi içerir. Bu, video sinyalinde okumak için bazı özel arayüz mantığı, onu yeniden biçimlendirmek için işlem yürütme mantığı, HDMI TMDS kodlama mantığı ve ardından HDMI portunu sürmek için yüksek hızlı seri hale getiriciler gerektirir.
Akış, sıkıştırılmamış, yüksek tanımlı videolarla çalışmak, genel amaçlı bir CPU'da mümkün olmayan büyük miktarda veriyi işlemeyi gerektirir. Saniyede 30 kare hızında olan bir 1080p video sinyali saniyede 62 milyon piksele sahiptir. Ahududu pi 700 MHz'de çalışır, böylece piksel başına 11 talimatınız vardır. Ve tuhaf video formatında gerçek zamanlı olarak okumak, yeniden boyutlandırmak vb. 11 talimat. Bu mümkün değil. Dönemi.
Bir FPGA'da, saat döngüsü başına bir veya daha fazla pikseli işleyebilen ve bunu çok belirleyici bir şekilde (kesintiler veya görev değiştirme!) Yapabilen, böylece piksel verilerinin HDMI üzerinden iletime hazır olması için uzun bir işlem hattı oluşturmak mümkündür. tam olarak doğru zamanda. Herhangi bir işletim sistemini çalıştıran genel amaçlı CPU'larla yoğun bir şekilde çalıştıysanız, bir milisaniyelik seviyede doğru zamanlamanın elde edilmesinin neredeyse veya daha az yapılabilir olduğunu bileceksiniz, ancak mikrosaniye düzeyinde neredeyse imkansız olduğunu anlayacaksınız. HDMI için nanosaniye ölçek hassasiyetine ihtiyacınız var. Genel amaçlı bir işlemcide yapılamaz. Ayrıca, neo geo için HDMI ses / video projesine bakın. Bu videoyu yalnızca yeniden ölçeklendirmekle kalmaz, aynı zamanda sesi yeniden örneklemeli ve HDMI video akışına yerleştirmelidir.
Bu da, sahip olduğunuz giriş verisi biçiminde okumak için gereken özel mantığı göz önüne almaz. Bunu yorumlamak için özel donanıma ihtiyacınız olacak. Yazılım yeterince hızlı veya yeterince belirleyici değil. Bunu bir tür USB tabanlı akışta yeniden biçimlendirmek mümkün olabilir, ancak bu yine de özel bir dijital mantık gerektirecektir, bu yüzden doğrudan HDMI çıkışı da yapabilirsiniz.
Tüm bunları uygulamak için, dijital mantık gerçekten uygulanabilir tek çözümdür. Ve eğer dijital mantık yapıyorsanız, ayrık 7400 mantığı için çok hızlı ve çok karmaşık olduğu için FPGA'ler mümkün olan tek çözümdür ve ASIC'ler büyük oranda daha büyük siparişlerdir.
Gereken bir diğer bileşen, gerçek yüksek hızlı serileştiriciler ve kablodan gönderilen paralel seri veri akışlarını üreten diferansiyel sürücülerdir. Seri bir veriyi genel amaçlı bir işlemciden saniyede bir gigabit sırasına göre ayarlamak mümkün değildir, bu özel bir donanım gerektirir. Ahududu pi, bunu yapan bir GPU'ya sahiptir, ancak belgelenmiş olandan bahsetmek yerine, GPU'nun yapabilecekleri ile sınırlıdır. Çoğu FPGA, en azından gerekli diferansiyel sürücüleri ve düşük çözünürlüklü videoyu desteklemek için yeterli olan DDR flip flop'larını içerir ve full HD akışları oluşturmak için gerekli serileştiricileri (yani Xilinx OSERDES blokları) da içeren oldukça az sayıda FPGA vardır. Seri akışın 'temel bant' olmadığını unutmayın gerçek verilerin bazı çerçeveleme bilgileriyle sözlü olarak gönderildiği normal bir seri bağlantı noktası gibi, ancak veriler sinyale belirli elektriksel özellikler kazandırmak için aslında TMDS (geçişi en aza indirgemiş diferansiyel sinyalizasyonu) ile kodlanmıştır. Gerçek yüksek hızlı serileştiricilere ek olarak bunu uygulamak için bir miktar mantık gerekir. Bunların hepsi, bir ASIC veya bir FPGA üzerinde saf dijital mantıkta (her neyse, yine de kodlayıcı - seri hale getiriciler muhtemelen analog veya en azından karışık sinyaller) yapmak için oldukça kolaydır.
Bu, bir sistemin hangi parçalarının yazılımda uygulanabileceğini ve hangilerinin kullanıma hazır özel cipsler, FPGA'lar, özel biçimler halinde donanım gerektirdiğini bulmak, genel dijital / gömülü sistem tasarım sürecinin çok önemli bir parçasıdır. ASIC'ler, sert veya yumuşak IP (HDL, netlists, GDSII), vb. Bu durumda net bir şekilde anlaşılır: video sinyali üretimi özel bir donanım gerektirir, genel amaçlı bir CPU ile eşleştirilmiş bir GPU, bir bütünleşik sert veya bir FPGA Yumuşak CPU çekirdeği veya harici bir CPU ile eşleştirilmiş veya daha özel bir şey.
Düzenleme: Sadece fpga4fun sitesi ve neo geo video projesinin full HD yerine 640x480'de çalıştığını gördüm. Ancak, bu işlem gerçekten çok daha basitken gerçekleşmez. Minimum piksel saati 25 MHz, bit saati 250 MHz'dir. Bu, FPGA'nın HDMI, sadece DDR flip flopları iletmek için serileştirici gerektirmediği anlamına gelir. Bu yine de video verilerini okuma konusunu hafifletmiyor. Ahududu pi üzerinde donanım desteği olmadan bunu yapmak istiyorsanız, GPIO'dan sürekli olarak 25 MHz'de okumak zorunda kalacaksınız. 175 talimatın her birini okuyun. Olasılık alanına girmek, ancak bu işi yapmanın tek yolu, el kodlu düzene sahip çıplak metaldir (Linux yok).