FPGA Çalışması Hakkında

Başlatan ds01, 11 Ocak 2016, 19:55:29

ds01

            Merhabalar, ben Kodlab'ın VHDL ile Sayısal Tasarım ve FPGA uygulamaları kitabını epeyce bitirdim. İmge işleme uygulamalarına kadar uygulamaları kendim de bizzat yazarak geldim. Fakat imge işleme uygulamasında takıldım kaldım ve anlamadığımı farkettim. Değişik bir algoritma mantığı var. Kafamda bir türlü uygulamayı oluşturamıyorum. Özellikle yapmam gereken işlem imge işleme, acaba bu amaç doğrultusunda tavsiyeleriniz olur mu? İyi akşamlar...

alicavuslu

Takıldığınız yer kodlama kısmı mı? Yoksa algoritmanın nasil gerçeklendiği mi?

ds01

         İlginiz için teşekkür ederim. Takıldığım yer algoritmanın nasıl gerçeklendiği. Soruyu biraz dar sormuşum aslında. Biraz programlama biliyorum. Fakat bu sistemde algoritmaların nasıl gerçeklendiği gerçekten muamma kalıyor benim için. Kitapta simüle etmek için test bench sınıfları yazılmış. İlk etaplarda 1 tane temel sonra test sınıfı ile kavramak o kadar zor olmuyordu. Mantığı az çok oturuyordu. Fakat imge işleme algoritmalarıyla beraber 2 ve hatta 3 sınıf için test bench yazılmaya başlanıldı. Burada işin içinden çıkamadım. Hangi kod nereye, gidiyor takip etmekte zorlanıyorum. Ve böyle bir algoritmayı oturup kendimin yazabilmesi imkansız gibi. Belki bir püf noktası vardır bilemiyorum.

         Asıl merak ettiğim husus ise fpga ' da kendimizi geliştirmek için daha başka ne yapmamız gerekiyor. Esas niyetim fpga ile görüntü işleme algoritmaları. Fakat malesef yeterli kaynak  yok. Tekrar teşekkürler...

alicavuslu

Aslında anlatım mantığında çok bi değişiklik yok. Bu durum özellikle yapıldı. Biraz daha kişinin kendisini zorlaması adına açıklamalara az yer verildi. Biraz sistem seviyesinden düşünmek gerekiyor. Kod olarak bir sınama kodu, bir paket, bir hafıza birimi ve konvolüsyon işleminin yapıldığı ana kod.

Matlab ile çalıştığımızı düşünelim. Önce imgeyi okuyoruz ve hafızaya alıyoruz. Sınama kodunda yapılan ilk işlem imgenin değerlerini bir hafızaya yazmak. Daha sonra konvolusyon bloğu aktif oluyor. Burada ise sıra sıra 3'lük sütunlar hafızadan okunuyor. 3x3 lük matrisin dolması ile konvolusyon işlemi yapılmakta. Kodda bu kısmı görebilirsin. Sonuç tamamlandıgında ise dışarıya aktararak yeni değeleri RAM'dan okumaktadır.

Paket yapısı ise biraz daha karışık hale getirildi. Olası büyük projeler yapmanız durumunda bu tarz bir yapıya gereksinim duyacaksınız.

ds01

Aslında soruma şunu da ekleyebilirim hocam, siz bir yerde demişsiniz ki;
İş hayatımda FPGA ile ilgili sinyal işleme uygulamaları ile ilgili uğraşıyorum. Daha çok akademik olarak  Yapay Zeka uygulamalarının FPGA üzerinde gerçeklenmesine çalışıyorum.

Biz de bu seviyelere çıkabilmek için nasıl bir yol izlemeliyiz.

alicavuslu

Açıkçası elindeki kitap senin için başlangıç açısından yeteri kadar iyi. Tüm detaylar mevcut. Sadece biraz konuya aşina olmanız gerekmektedir.

FPGA'da bir sistemi gerçeklerden zamanımın %80'ini literatür taraması ve algoritmanın FPGA'ya nasıl uygulanacağına dair yöntemleri test etmekle geçer. Matlab ortamında çalışırım. Sayı uzunluklarına varana kadar herşeyi belirledikten sonra kodlama işlemlerini yaparım. Matlab ortamında oluşturduğum kodları aynı zamanda gerçekleme test sonuçlarının karşılaştırılması için kullanırım.

Genel olarak yaptıklarım bu şekilde..

mesaj birleştirme:: 11 Ocak 2016, 20:54:12

Hala kodla alakalı bir sorunun var mı?

ds01

#6
                Hocam yardımınız için çok teşekkür ederim. Bugün epeyce 'temel_imge_isleme' uygulamasını anlamaya çalıştım. Sizin izahınızdan sonra bile bazı şeyler biraz netleşti. Koda bir daha bakınca esas takıldığım, karışık gelen noktanın şu olduğunu anladım. Mesela test bench'de bir kontrol ifadesi var. O kontrol ifadesi alt sınıfları da etkiliyor. Yani üst sınıfta yani tb'de değiştirdiğimiz bir nokta diğer alt sınıflarda da anında değişikliğe sebep oluyor. Bu nokta bana çok karmaşık geliyor...

mesaj birleştirme:: 11 Ocak 2016, 21:14:03

           Hocam çok soru sordum ama, bir de şunu merak etmiştim. Teyit ettirmek için soruyorum. process tanımlarken process ile begin arasında tanımlanan şeyler bir defa, begin'den sonraki yapı process'in hassaslık değerlerine göre sürekli mi çalışma sağlıyor ?

alicavuslu

Zaten o kontrol ifadeleri alt sınırları aktif veya pasif yapmak için kullanılmaktadır. Bu yüzden bu tarz ifadelere alışsan iyi edersin.

process ile begin arasında variable değişkenini tanımlarsın. process'i aktif etmek için ise hassasiyet lsitesindeki değişkenleri kullanırsın.

ds01

             Hocam çok teşekkür ederim yardımınız için, kitap için de ayrıca teşekkürlerimi belirtmek isterim. İyi akşamlar....

alicavuslu

Kitap hakkinda dusuncelerini almayi cok isterim.

ds01

#10
           Ben kitabı çok beğendim. Büyük bir bölümünü de bitirdim. Gerekli temeli sağladığını düşünüyorum. Sorumda da değindiğim imge uygulamalarında biraz daha açıklama yapılabilirdi. Tabi siz de "Biraz daha kişinin kendisini zorlaması adına açıklamalara az yer verildi. " diye söylediniz, haklısınız. Kişiden kişiye değişen durumlar bunlar. Benim ilk gömülü sistemler üzerinde çalıştığım platform diyebilirim bu yüzden zorlandım belki.
           
            Özet olarak  yeni başlayanlar için çok güzel bir kaynak olduğunu düşünüyorum.

mesaj birleştirme:: 11 Ocak 2016, 21:54:25

             Şunu da eklemeliyim ki; 'Biraz daha kişinin kendisini zorlaması adına açıklamalara az yer verildi. ' dediniz fakat yazarın kendisinin bizzat interaktif olarak  sorulan sorulara hızlı bir şekilde çözüm getirmesi ise kitabın değerini kat kat artırıyor.