Vga ve pic.. Bu kadar zor olmamalı !

Başlatan EMG81, 12 Nisan 2011, 01:35:20

mcan

Bu olay pll siz hse ve cpu frekansı bus frekansına eşitkrnde oluyormu?

iyildirim

Sorun anladım hocam. Adeta duty ve/veya frekansın anlık değişmesi gibi. 
Umarım donanımsal modüllerde bu tip bir sorun yoktur. 

Etkisi anladığım kadarı ile ns ler bazında olsa da, bu tip yüksek çözünürlük gerektiren bir projede sıkıntı çıkarır.



z

Alıntı yapılan: mcan - 30 Ekim 2011, 16:18:14
Bu olay pll siz hse ve cpu frekansı bus frekansına eşitkrnde oluyormu?

Bu bahsettiklerinizi denemek zaman isteyen işler. Şu sıralar programı işe yarar şekle sokmaya çalışıyorum. 
Ayrıca her aklımıza gelen CPU clk değerini kullanarak videoda kararlı görüntü oluşturamayız. Monitör hiç açmayabilir de.

Video ve sync sinyallerinin frekansları katı katıya belirlenmiş. Bunların dışına çıkılamaz. Bu da yapılabilecek denemelerin sayısını sınırlıyor.

(Belki de gözden kaçırdığım bir sorun vardır.)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mcan

#48
Alıntı yapılan: bunalmis - 30 Ekim 2011, 17:38:14

Bu bahsettiklerinizi denemek zaman isteyen işler. Şu sıralar programı işe yarar şekle sokmaya çalışıyorum. 
Ayrıca her aklımıza gelen CPU clk değerini kullanarak videoda kararlı görüntü oluşturamayız. Monitör hiç açmayabilir de.

Video ve sync sinyallerinin frekansları katı katıya belirlenmiş. Bunların dışına çıkılamaz. Bu da yapılabilecek denemelerin sayısını sınırlıyor.

(Belki de gözden kaçırdığım bir sorun vardır.)
Görüntü olarak düşünmemiştim, osiloskopda değişiyormu onu merak etmiştim aslında.
Yanlış anlaşılmasın mutlaka denemişsinizdir diye soruyorum,çünki bende skop filan yok kendi yöntemlerim ile de ölçmek istemiyorum,ayrıca diğer sorunla bir bağlantısı mı var diye merak ediyorum.

Birde üst tarafda bir soru sormuştum,acaba yataydaki pixellerin sayısını belirliyen nedir?

kralsam

#49
Alıntı yapılan: EMG81 - 30 Ekim 2011, 14:09:22
@Bunalmış. Tebrik ederim, Çok güzel gözüküyor.

18F yada türevleri ile de oluyor. Olduda. Fakat fontlar sadece biraz daha büyük oldu.
Bu tarz işlemciler bu iş için hiç uygun değil. Kesinlikle tavsiye etmiyorum.

Tüm iş senkron palslerinin kalitesinde, yada kalitesizliğinde bitiyor. Yavaş işlemci ile de bu palsleri istenilen zamanlarda üretmek çok zor oluyor.


Hadi bakalım size güzel bir soru

Piyasada 640x480 veya 800x600 TFT driver chipleri var.
24 bit. (R8,G8,B8) H,V sync çıkışları var.
RGB çıkışlarını Video DAC ile Vga e versek, ortaya ne gibi bir sonuç çıkar ?
Hocam ben bu tarz bir chip ile FPGA kullanarak 800x600 VGA sinyali ile çalıştım. Daha doğrusu zorunda kaldım. :) Uygun pixel bilgilerini ve Data Enable sinyali benzeri bir sinyali chip portlarına giriyorsun ve çıkışı direk monitöre gönderiyorsun. Benim kullandığım chip portları paralel çalışıyordu ve çok basit oldu. Ama tebrik etmek istiyorum. Pic ile o senkronizasyonu sağlamak gerçekten zor iş :)

Örnek uygulama için : www.mafgom.com/fpga-ile-800x600-vga-kontrolu/

@Edit: Senkron pulse'leri chip'e girmiyor. Direk monitöre gidiyor.

z

Alıntı yapılan: mcan - 30 Ekim 2011, 18:34:05
....Birde üst tarafda bir soru sormuştum,acaba yataydaki pixellerin sayısını belirliyen nedir?

(Horz.Sync sinyalimizin Peryodu - (Horz. Sync. sinyalimizin Pals Suresi) - Ondeki Bekleme Suresi - Sondaki Bekleme suresi) / Video Clock Suresi

sana yataydaki pixel sayisini verir. Bu degerleri zamaninda birileri standartlari koymak adina belirlemisler. Ekran cozunurlugu ve dusey tarama frekansina gore degisiyorlar.

Bu konuyu merak ediyorsan oncelikle video sinyal yapisina gozatman lazim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mcan


Sinyallere göz attım ama ,hala anlamadım. Şimdi şekildeki gibi active video alanındaki süre içinde green ucuna sürenin yarısı kadar 0.7 verirsek ,tüm yatay-dikey frame bittiğinde ekranın yatayda yarısı yeşil olucak olarak anladım. Eğer doğru anladıysam, green ucuna verebildiğimiz kadar kısa süreli değişimler vermek pixel sayısını arttırmıyormu?Yoksa monitörün içinde bunu seknkronizasyon sinyallerine göre örnekleyen -kesen bir devremi var?Birde eski ekran kartları yada aterilerde ilginç değerli kristaller vardı ,16.934 MHz ,14.318 ... bunları kullanmak içimizi kolaylaştırır mı?

z

#52
Tüplü monitorlerde pixel bilgisini (sinyali) istediğin gibi verip kesebilirsin. Frekansı arttırdıkça pixel sayısı artar fakat bunun sınrı var çünkü CRT dediğimiz bir vakum lambası ve bunun band genişliği belli.

LCD monitörlerin yapısını bilmiyorum, tahminimce video sinyalinden sample alıyor. Dolayısı ile video sinyalinin frekansı önemli hale geliyor aksi halde var olan pixel bilgileri kaçırılabilir. (Bu konudan emin değilim)



İlk VGA projemde bazı konuların farkında olmadan programı yazdığımı söylemiştim. Şimdi yazdığımda daha önce bahsettiğim konulara dikkat ettim ve özellikle de CPU frekansını özel olarak seçtim, video sinyal üretme rutinini yeni baştan yazdım.

Şimdikinin sonucu daha iyi. Karakter jenaratörü de eklendi.

Programın kaynak kodu için: www.cncdesigner.com/STM/CRT.rar

Monitör bağlantıları  GPIOD 8-9-10 dan alındı. (8 Video), (9 HS), (10 VS)


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

-Hasan-

Alıntı yapılan: bunalmisBu arada bizim STM32F4 çipinden, aşağıda açıkladığım sorundan dolayı birazcık soğudum.

Sorun şu;

Diyelimki bir pini toggle eden çok dikkatlice yazılmış minicik bir asm kod parçasını peş peşe 10... 20 kez kopyaladınız.

Her bir toggle süresinin (kodun int ile kesilmediğini garantilersek) ns ler mertebesinde eş olması beklenir. (Çünkü aynı asm kodları peş pele kopyalamıştık)

Bizim çipte CPU clk ile APB bus aynı frekansı kullanmadığından mı yoksa PLL de jittermi var yoksa piple line mekanizmasında mı sorun var  anlamadım, toggle süreleri arasında minik farklar oluşuyor.

Bu da aynı boyutta olması gereken pixellerin bazıların ince bazılarının şişman olmasına neden oluyor. Üretilen sinyal scopla gözlendiğinden STM'nin TI karşısındaki notunu kırdım.

bunalmis hocam; bu sorunu çözdünüz mü yani?

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

kralsam

Alıntı yapılan: mcan - 30 Ekim 2011, 21:17:15
(Resim gizlendi görmek için tıklayın.)
Sinyallere göz attım ama ,hala anlamadım. Şimdi şekildeki gibi active video alanındaki süre içinde green ucuna sürenin yarısı kadar 0.7 verirsek ,tüm yatay-dikey frame bittiğinde ekranın yatayda yarısı yeşil olucak olarak anladım. Eğer doğru anladıysam, green ucuna verebildiğimiz kadar kısa süreli değişimler vermek pixel sayısını arttırmıyormu?Yoksa monitörün içinde bunu seknkronizasyon sinyallerine göre örnekleyen -kesen bir devremi var?Birde eski ekran kartları yada aterilerde ilginç değerli kristaller vardı ,16.934 MHz ,14.318 ... bunları kullanmak içimizi kolaylaştırır mı?
Hocam bu resimi değerlendirecek olursak, sinyalimiz eğer 800x600 lük bir sistemde ise 800 pixel lik ilk line (satır) yeşil olmuş oluyor.
Ben bu sistemi LCD monitörde denedim ve aynen o şekilde çalışıyor. Ekranın sol yarısı yeşil ,diğer yarısı ör: beyaz olsun dersen hsync sinyalinin aktif kısmının yarısına kadar yeşil pixel değerleri kalanında beyaz sinyal değerleri göndermeniz gerekir.
Yatayda yapmak isterseniz 600 line(satır) olan vsync sinyalinin yarısı yani 300 değerine kadar bir renk kalanına bir renk bastırmanız gerekiyor.
İnşallah anlatabilmişimdir.

z

#56
Bahsettiğim pals sürelerindeki oynamanın, PLL den kaynaklanıp kaynaklanmadığını anlamak için https://www.picproje.org/index.php/topic,35896.0.html de örneğini verdiğim
Scopla SYSCLK'a bakmak programını işleterek, PC9 pinine scopla baktığımda CPU CLKda jitter olmadığını (gözle farkedilen bir şey olmadığını) tespit ettim.

(Scoptaki görüntü stabil kalırken scopa ait frekansmetrenin 37.11 - 37.88 Mhz aralığında gezinmesi de garip)

Bu durumda işler çetrefilleşiyor demektir.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com