pice sıkıstırma programı yazmak istiyorum

Başlatan parametre, 05 Aralık 2009, 20:10:32

Eagle_Tim

Alıntı yapılan: "FxDev"Yanılgıya düşülen bir nokta daha var. FPGA'lerin paralel işlem yapması şifre kırmada büyük önem taşır. Örneğin evdeki bilgisayarınız ya da herhangi bir mikroişlemciniz 8 bitlik binary şifreyi çok basit şöyle kırmaya başlayacaklardır;

1. işlem = 0x00
2. işlem = 0x01
3. işlem = 0x02
...

şifre uyduğunda işlem bitecek. Diyelim şifremiz 0xFF olsun, dolayısı ile 255. denemede şifremiz bulunmuş olacak.
Ama FPGA içine yazılan programa göre FPGA işlemi şöyle yapacak;

1. işlem = 0x00 - 0x01 - 0x02 - 0x04 - 0x05 - 0x06 - 0x07 - 0x08 - 0x09
2. işlem = 0x0A - 0x0B - 0x0C - 0x0D - 0x0E - 0x0F...

Buradan da görüleceği üzere 255/10 yaklaşık 25 denemede FPGA şifreyi bulacaktır.
Verilen linkteki FPGA incelediğimde Spartan 2 serisi olduğunu görüp biraz güldüm. Yakın zamanda Spartan 6 ve Virtex modellerinin yeni çıktığını görünce acaba kaç mikroişlemcinin gücü bunları yakalamaya yetecek diye düşünmüyor değilim. Tabi o da işin esprisi...

Bu arada bilgisayar mühendisliğinde okuyan bir arkadaşımın sıkıştırma algoritması şu şekildeydi;

Aynı kelime yapılarını tarıyordu ve yazıda en çok kullanılan harf dizilerini buluyordu örneğin bunlar 'ar', 'yor', 'ki' gibi olsun. Sonra bunları kendi özel dizilerine atıyordu. Böylelikle 255 karakterlik kayıt yapmak yerine 50 karakterlik kayıt yapmak yetiyordu. Böyle sıkıştırılan bir dosyayı açarken de sadece atadığı karakter dizisini çözmek yetiyordu.

Bu arada 8086 mikroişlemci diye biliyorum, mikrodenetleyici değil. Dolayısı ile 8086 için yazılmış bir kodu pic'e çevirmek işkence gibi olabilir.
olay biraz uzamış ama tam olarak merak ettiğim birşey var; FPGA da 8 bitlik  binary şifreyi kırma girişimini tam kavrayamadım. gönderici sadece 8 bit gönderebiliyorken, yan yana 64 biti 1 kerede okusunız yada alt alta 8 bit okusanız ne fark ediyor ?  FPGA ların yüksek hızından dolayı işlem hızı artabilir derseniz de, buda göndericiye bağlı değilmidir ?  ama pc gibi birşeyden veri alınıp bunuda örneğin 64 bit bir veridir deyip, FPGA tek seferde 64 bit birden alarak işlem yapıyor derseniz bu makul görünüyor ama şuanki yöntemi anlamadım açıkçası. FPGAlar hakkında fazla bilgim yok ama buradaki olayda aslına bakarsanız bence gerekte yok.. buradaki olay data hattının bit uzunluğu ve hızı ile alakalı 2 alıcıda 8 bit ise iş sadece hıza bakar diğer alıcı 64 yada 128 biti 1 seferde okuyormuş bi anlamı olmaz heralde :D
Software and Hardware Design...

FullMetal

Alıntı yapılan: "z"
Alıntı yapılan: "FullMetal"
Alıntı yapılan: "z"(Bu arada, 90 lı yıllarda CPLD + ABEL ikilisi ile PID koşturuyordum, ama artık bu ata binmiyorum)
90 lı yıllarda bunu yapmak fiyat ve performans açısından iyi olabilirdi.

O tarihler değil, asıl bulunduğumuz tarihler bu tür işleri için iyi. Arkadaş, paralel işlemlerden, ata binip kılıç kuşanmaktan vs bahsetti de o yüzden yazdım.

O zamanlar şimdilerde tarih olan C14 serisine bile kolay ulaşılamıyor, şimdiki kadar hızlı çipler ve derleyiciler kolay ve ucuza bulunmuyordu. Ayrıca cpld fiyatları hiç ama hiç ucuz değil, FPGA fiyatları ise uçuktu.

Zaten FPGA yerine üzerinde çok sayıda CPLD içeren kartlar yaygındı.

Çok kanallı PWM o tarihlerde başlı başına sorundu. Asıl amaç, vizyonu genişletmek, kendi çevre birimlerini yapabilmek, PID gibi aritmetik bir ifadeyi işlemci ile değil de lojik devrelerde  paralel işlemle yapmayı becermekti.
1990 lı yıllarda neler vardı tam olarak bilmiyorum ben o zamanlar ortaokulda gwbasic de program yazıyordum. :) Fakat 6502 gibi bir işlemcinin PID kontrol için kullanıldığını düşünerek PID algoritması ve çevresel işlemlerin çalışmasınıda göz önüne alırsak bir motor kontrol ünitesinde işlemciye aşırı işlem yükü biniyor olabilir. CPLD ile bunu yapmak işlem fazlalığını kaldıracaktır. Günümüzde o kadar gelişmiş chipler varki CPLD yi bu anlamda kullanmaya gerek kalmıyor olmalı düşüncesiyle o mesajı atmıştım  :)

drmp

arkadaşlar yorumlarınızı okudum da   peki ne şıkıştıracağız küçük picle  resim müzik dosya falan değil elbette değilmi

hasangurlek

Alıntı yapılan: "drmp"arkadaşlar yorumlarınızı okudum da   peki ne şıkıştıracağız küçük picle  resim müzik dosya falan değil elbette değilmi

Özellikle telsiz yönetmelikleriyle RF iletişimin iş zamanının çoğu ülkede yasal zorunluluk olması ve %10 ile kısıtlanması bu tür projelere kapı açıyor. Ya % 10 duty cycle ile iletişim hızını düşürüp tam zamanlı kullanacaksınız, yada tam iş zamanı kullanıp data hızını artıracak fakat bir saatte sadece 6 dakika iletişim kurabileceksiniz. Ha öyle ha böyle sonuç farketmiyor, işte bu noktada data sıkıştırma devreye giriyor.
http://www.cyber-warrior.org, Although they like whiteness, sometimes twilight is required...  Hala evlilermi bilinmez ama kesinlikle artık uygun değiller !!!

Eagle_Tim

Alıntı yapılan: "FxDev"@Eagle_Tim, Z hocam da az değinmiş, olayı karmaşık düşünmedim örneği yazarken.

Bir rar şifresi kıracağız diyelim. Normal bilgisayar programları seri yazıma uygun oldukları için 0000-0001-0002... tarzında başlayacaklar denemeye.
Ama FPGA tabanlı bir bilgisayarda, paralel işlem yapabilmeye uygun yazılan bir program bu denemeyi bir seferde aynı rar dosyasının kopyaları üzerinde deneyecektir.

Fakat şifre bulunurken kırılmak istenen olayın kopyalanabilir olması önemli burada. Yoksa elbette seri işlemden farkı kalmaz.

Ayrıca geçenlerde şöyle bir işleme tanık oldum ki FPGA'e bakış açım biraz daha değişti. Picoblaze denen 8 bitlik FPGA'e özel mikroişlemci ile uğraşıyordum. Öyle ki aynı FPGA'in içine 20-25'tane aynı mikroişlemciden koyup, hepsini ister birbirinden bağımsız ister birbiri ile bağıntılı çalıştırabilmeniz mümkün, hem de hiç bir hız kaybı olmadan.
Geçenlerde bir hocamız yazdı, sizin işlem hızınız devrenizdeki en yavaş parçaya göre belirlenir diye. Mesela bu yavaş parça LCD olsun, FPGA'de bir mikroişlemci sadece bununla ilgilenebilir, diğer kalanlar ise LCD'nin yavaş olmasından etkilenmeden işlemlerini sürdürebilir.
Bilgisayarda düşünürsek, arkada bir yığın program açtığımızda bilgisayarın kasması söz konusu oluyor, çünkü seri işlem bir işlemin bitmesini bekliyor, o beklenti başka programın çalışması engelliyor falan. Ama yukarıda anlattığım gibi bir sistem olsa her bir program grubu belli bir mikroişlemci tarafından yürütülecek, bir yığın mikroişlemcimiz olduğu için de böyle bekleme gibi bir sorunumuz olmayacak. Yalnız burada yanılgıya düşülen bir konu da 'hız' kavramında. FPGA'ler daha hızlı derken Hz kısmından bahsetmiyorum, onun bölüşülmesinden bahsediyorum. Sizin mikroişlemciniz 4GHz ile çalışıyordur fakat 25 program bunu bölüşür; sizin FPGA'niz 4GHz'dir fakat 25 ayrı mikroişlemci, 25 farklı programı çalıştırır. Diğerinde kabaca hız program başına 160MHz iken, diğerinde program başına 4Ghz'dir. Çift çekirdek, dört çekirdek kavramı zaten bu yüzden önemli günümüzde...


evt aynı veriyi alıp farklı kodlarla tarayan 25 işlemci gibi bir olay var derseniz durum değişiyor tabiki, bu durumda eşitlik için karşıyada 25 işlemcili bir sistem kurmak gerekir sanırım olayı kavradım iyi çalışmalar :D
Software and Hardware Design...