Birkaç haftalık aradan sonra tekrar merhaba.
Projede bazı olumlu gelişmeler, bir de olumsuz gelişme mevcut. Öncelikle olumlu olanlardan başlayalım.
1. Samsung TV'lerdeki, HDMI-520'yi tanımama sorunu sonunda giderdim. Aslında alakasız birçok yere boşu boşuna bakmışım. Sorun ne formatta, ne de oluşturduğumuz sinyalin eletriksel speklere uymamasındaymış. (Ben bu iki maddeden birinden gol yediğimizi düşünüyordum.) Neyse uzatmadan, HDMI kablosunda +5v adlı bir pin var. Bu pin, HDMI çıkışına bağlı olan bir cihaz varsa beslenebilsin diye düşünülmüş. Normalde HDMI çıkış veren cihazlar bu pinden de 5V çıkış vermeleri gerekiyor. Ben de nasıl olsa TV'ye bağlıyoruz, bizim vereceğimiz 5V'a mı kaldı diye düşünerek bu pini bağlamamıştım bile. Gerçekten de Samsung hariç denediğim hiç bir TV yada monitör bu pin ile ilgilenmiyordu. Samsung ise, çok akıllı ya, bu pinde 5V yoksa, o girişe bir HDMI kaynak bağlı değil şeklinde yorumlayarak, listeye bile çıkartmıyor. Neyse o pine bir 5V verince Sumsunglarla aramız düzeldi.
2. NTSC zamanlamarını da FPGA içerisine ekleyebildim ve sonuç başarılı. Artık gerçek NTSC sinyalini de HDMI-520 tanıyor ve uygun HDMI çıkış üretiyor. (480p 60Hz)
Ve olumsuz gelişme:
3. FPGA içerisine interlaced zamanlamaları da ekledim. Buna bir nevi flickerfixer da diyebiliriz. Çalışma mantığı şu: Normalde gerçek bir flickerfixer yapabilmek için, bir frame buffer ihtiyacı var. Yani interlaced olarak gelen iki field'i (tek ve çift satırlar ayrı ayrı geliyor) alıp birleştirip, tek bir progressive frame üretmek gerekiyor. Ancak bizde framebuffer yok. Ben şu şekilde düşünmüştüm. Madem elimizde framebuffer yok, gelen fieldları alıp, olduğu gibi TV'ye HDMI üzerinden gönderelim. Ancak bunu yaparken, sinyalin interlaced olduğu bilgisini ve her bir field'in tek mi çift satırları mı içerdiğini de belirtelim. (Bu HDMI üzerinden yapılabiliyor.) Karşıdaki TV de bu satırları alıp kendi bildiği şekilde birleştirsin ve görüntüyü üretsin. (Gene bir not: Örneğin bir çok DVD 576i şeklinde encode edilmiştir. DVD player bunu doğrudan TV'ye gönderir, TV interlaced satırları birleştirir ve görüntüyü oluşturur.)
Neyse bu mantık bir yere kadar çalıştı denebilir. Öncelikle 576i yani interlced PAL formatını hemen hemen denediğim tüm TV'ler tanıdı ve görüntüleyebildi. Ancak her TV kendine özgü bazı "iyileştirmeler" yapmaya çalıştığı için bazı durumlarda istenmeyen artifactlar ortaya çıktı. Örneğin WB ekranında bir windowun yerini değiştirince, bir anda arkada diğer iconlar ortaya çıkınca, TV Bunu noise olarak algılayıp bir önceki frame ile geçiş yapmaya çalışabiliyor vb. Gerçi oyunlarda herhangi bir problemle karşılaşmadım.
Bir başka olumsuz durum da ne yaptıysam 480i yani interlaced NTSC formatını Samsung TV'de görüntüleyemedim. En sonunda manuel'e baktığımda şu cümleyi gördüm:
This error message only appears if you have set the source on your TV to a device (such as a set top box or DVD player) that is set to a resolution the TV cannot accept.
•You connected a device to your TV using HDMI/ DVI and the device is set to 480i. This TV cannot accept a 480i signal through the HDMI/ DVI input. You must set the output resolution of the device to a minimum of 480p.
En azından benim elimdeki Samsung TV, 480p aşağısındaki çözünürlükleri desteklemiyor. Sorun bende değilmiş yani.
Son durumda HDMI-520 tarafından desteklenen formatlar aşağıda:
576p / PAL 50Hz Progressive - Tüm TV'lerde destekleniyor.
480p / NTSC 60Hz Progressive - Tüm TV'lerde destekleniyor.
576i / PAL 50Hz Laced - ASUS Marka bir monitör hariç tamamında desteklendi.
480i / NTSC 60Hz Laced - ASUS ve Samsung desteklemedi. LG Destekliyor.
Kısacası geldiğimiz noktada HDMI-520 Progressive modları tamamen, laced modları deneysel olarak kısmen destekliyor diyebiliriz.
Yukarıda yazdığım maddeleri içeren bir video ekleyeceğim.
İyi akşamlar.