Şimdi Ara

Asal sayıları bulan devre

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
15
Cevap
2
Favori
2.910
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Pic gibi programlanabilir birimler kullanmadan girilen değere kadar asal sayıları bulup, bulduğum değerlere işlem yaptırıp lcdye yazdırma imkanım var mı?
    Aradım ama bulduklarım asal sayıları programlamayla buluyor.



  • Dediğiniz devre biraz zor gibi geldi yapılması. Programlamayla yapmak elbette mümkün ve kolay fakat sadece devre ile fazlaca sayısal elektronik bilgisi gerektiriyor diye düşünüyorum.
  • Proje olarak verdiler, pice izin vermiyorlar yoksa kolay olacaktı. Araştırıyorum ama bulamadım halen

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • dead-ly kullanıcısına yanıt
    Ilginç geldi açıkçası. Bulunca burada da paylaşırsanız bir aydınlansak, fazlasıyla ilgimi çekti.

    Bu arada sanırım genel olaral mikrodenetleyiciler yasak değil mi? Pic dışındakilerde yani?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Aklıma şöyle bir devre geliyor.

    Bir tane sayıcı devresi olur. N diye bir sayı girilir misal. 2'den N-1'e kadar belli bir frekansla bu devre sayar. Sistemin ana hızına göre yavaş kalacak ama çok da bekletmeyecek bir frekans uygundur. Sonrasında ise bir mod alıcı devre olsa, bizim girdiğimiz sayının modunu alsa, tüm bitlerini OR kapısından geçirip bize 1 tane bit verse. Eğer sayı sıfır ise bu bit ancak o zaman sıfır olur. Sıfırdan farklı ise o bit 1 olacaktır. Sonra bu bitleri de (ki seri bir şekilde saydırıcı değiştikçe gelecektir) not kapısından geçirerek bir flip flopun SET girişine uygulasak (tabi sistem başlarken reset yapmayı unutmuyoruz) eğer ki bu gelen sinyallerden bir tanesi bile 0 ise not kapısından geçerek 1 olacaktır ve flip flopu set edecektir. Reset kısmına da aktif bir sinyal vermediğimiz için resetlenmeyecektir yani sayılardan 1 tanesinin bölünebilir olması bizim flip flopumuzu set eder. Eğer flip flopumuz hala reset konumunda sıfır çıkış veriyorsa sayı asaldır diye düşünebilir ve ekrana yazdırabiliriz. Aklıma böyle bir dijital tasarım geldi ama denemek lazım tabi.

    düzenleme: Tabi ki saydırıcı çıkışın N-1' e eşit olup olmadığını kontrol ettirmek için karşılaştırıcı çıkışları kullanılabilir. Karşılaştırıcının çıkışı sıfır iken ise ekrana "hesaplanıyor" yazdırılır. İşlem bitince de sonuç yazdırılır.



    < Bu mesaj bu kişi tarafından değiştirildi Spyxxx -- 10 Mart 2015; 13:18:57 >




  • @mylord92 Evet, genel olarak yasak. Bugün tekrar konuştum ama ipucu bile alamadım. Bulursam paylaşırım tabiki.

    @Spyxxx Sağolun hocam, Yeni yeni devrelere aşina olmaya başladığımızdan verdiniz tasarıyı uygulayabilmem zaman alacak. Mod alıcı devreyi hangi isimle aramam gerekli? Arama yaptığımda RF alıcı ile ilgili sonuçlar çıkıyor.



    < Bu mesaj bu kişi tarafından değiştirildi dead-ly -- 10 Mart 2015; 20:02:38 >
  • Girdi boyutunuz belirli ise, ki mutlaka bir üst limit vardır, bir fonksiyon tasarlayıp bunu gate array ile ifade edebilirsiniz.
    Örneğin 4-bit diyelim.
    O zaman girdi boyutu 4-bit, çıktı boyutu 1-bit olan bir fonksiyon tasarlamanız gerekecek. Bu 1-bitlik çıktı, 0 ise sayı asal değil, 1 ise asal demek olsun. Fonksiyonu aşağıdaki gibi tasarlayabiliriz. Yani tüm girdi değerlerini (x1,x2,x3,x4) ve onlara karşılık gelen çıktı değerini (o1) aşağıdaki gibi belirleyelim.
     

    N X1 X2 X3 X4 O1
    0 0 0 0 0 0
    1 0 0 0 1 0
    2 0 0 1 0 1
    3 0 0 1 1 1
    4 0 1 0 0 0
    5 0 1 0 1 1
    6 0 1 1 0 0
    7 0 1 1 1 1
    8 1 0 0 0 0
    9 1 0 0 1 0
    10 1 0 1 0 0
    11 1 0 1 1 1
    12 1 1 0 0 0
    13 1 1 0 1 1
    14 1 1 1 0 0
    15 1 1 1 1 0


    Şimdi elimizde girdi değerine göre çıktısını bildiğimiz bir fonksiyon var ancak bu işlemsel olarak ifade edebilmeliyiz ki gate array olarak implement edebilelim. Burada Matematik bize güzel şeyler sunuyor. Boolean fonksiyon teorisine göre, gerçeklik tablosunu (truth table) bildiğiniz bir boole fonksiyonunu hesaplamanız mümkündür. Butterfly algoritması denilen yöntem ile bunu hesaplayabiliyorsunuz, aslında FFT'nin varyasyonu. Truth table dediğimiz şey tam olarak çıktı değerlerinin yanyana yazılması.

    Bu durumda yukarıdaki fonksiyonun gerçeklik tablosu: 0011010100010100. O1 değerleri yani. Buna karşılık gelen fonksiyonda f olsun:
    f(x1,x2,x3,x4) = x3 + x1.x3 + x2.x3 + x1.x2.x3 + x2.x4 + x1.x3.x4 (Bu değeri butterfly algoritması ile elde ediyoruz.)
    Buradaki . işlemi AND, + işlemi ise XOR operatörünü ifade ediyor. Diğer operatörleri de kullanarak karnaugh haritası ile bu işlemi daha da sadeleştirebilirsiniz.
    Geriye sadece elde ettiğiniz nihai fonksiyonu gerçeklemek kalıyor.

    Bunlarla birlikte biraz Google'da iş görür :)
    https://www.google.com.tr/search?q=prime+number+detector+circuit
    http://www.sccs.swarthmore.edu/users/06/adem/engin/e15/lab1/
    http://www.ee.calpoly.edu/media/uploads/resources/KarnaughExplorer_1.html



    < Bu mesaj bu kişi tarafından değiştirildi yxsdf -- 10 Mart 2015; 23:00:49 >




  • yxsdf Y kullanıcısına yanıt
    Hocam, teşekkürler uğraşmışsınız baya. Bu yöntem ile sayıyı asallığını kontrol etmiyor ama önceki belirlediğimiz değerlere göre hareket ediyor, doğru mu anladım?

    Eğer bu şekilde yapacak olursam bu devre işimi görecektir.


    3. linkteki hesaplayıcı çok pratik, teşekkürler. Asal sayıya işlem yaptırıp sonucu lcd'ye yazdırmam mümkün mü PIC olmadan? Yoksa 7 segment display mi kullanmam gerek?



    < Bu mesaj bu kişi tarafından değiştirildi dead-ly -- 11 Mart 2015; 0:23:16 >
  • quote:

    Orijinalden alıntı: dead-ly

    @mylord92 Evet, genel olarak yasak. Bugün tekrar konuştum ama ipucu bile alamadım. Bulursam paylaşırım tabiki.

    @Spyxxx Sağolun hocam, Yeni yeni devrelere aşina olmaya başladığımızdan verdiniz tasarıyı uygulayabilmem zaman alacak. Mod alıcı devreyi hangi isimle aramam gerekli? Arama yaptığımda RF alıcı ile ilgili sonuçlar çıkıyor.

    Bölücü devre diye aratırsın veya en kötü mux koyarsın seçici bir devre olur bir tane karşılaştırıcı entegre olur, sürekli ana sayıdan bölen sayıyı çıkartırsın kalan sayı bölenden küçük olduğunda mux yardımıyla diğer kalandan çıkış alırsın falan.

    İlk olarak fonksiyonel düşünüyordum bu şekilde ancak üstteki arkadaşın mantığı baya iyi. Sonuçta bu devreler de kapılardan oluşuyor o devreler de oluşuyor. Üst limit biti ile doğruluk tablosu yapıp sadeleştirmek de aynı işi görür ki, bilgisayar algoritmaları ile çok hızlı bir şekilde yapılabiliyor. Hem de net sonuç verir frekans ayarı gibi şeyleri düşünmek zorunda kalmazsın.




  • Spyxxx kullanıcısına yanıt
    Sanırım o şekilde yapacağım. Verdiğiniz yöntem ile çok daha büyük sayılar daha kolay bulunur ama hazırlaması daha zor.
  • Girilen 3 bitlik sayıyı yarıya bölmem gerekiyor. Bulamadım, bildiğiniz sayıyı bölebilecek devre var mı?

    Çarpma entegresini bir şekilde bölme olarak kullanabilir miyim?



    < Bu mesaj bu kişi tarafından değiştirildi dead-ly -- 30 Mart 2015; 23:36:48 >
  • quote:

    Orijinalden alıntı: dead-ly

    Girilen 3 bitlik sayıyı yarıya bölmem gerekiyor. Bulamadım, bildiğiniz sayıyı bölebilecek devre var mı?

    Çarpma entegresini bir şekilde bölme olarak kullanabilir miyim?

    Yarıya bölmek demek 2'ye bölmek demek zaten 2'lik tabanda çalıştığın için 1 basamak kaydırmak demek. İlk 2 basamağını alırsın sayının yazarsın. Eğer son basamağı 1 ise kalan 1 olur eğer 0 ise tam bölünür.
  • quote:

    Orijinalden alıntı: Spyxxx

    quote:

    Orijinalden alıntı: dead-ly

    Girilen 3 bitlik sayıyı yarıya bölmem gerekiyor. Bulamadım, bildiğiniz sayıyı bölebilecek devre var mı?

    Çarpma entegresini bir şekilde bölme olarak kullanabilir miyim?

    Yarıya bölmek demek 2'ye bölmek demek zaten 2'lik tabanda çalıştığın için 1 basamak kaydırmak demek. İlk 2 basamağını alırsın sayının yazarsın. Eğer son basamağı 1 ise kalan 1 olur eğer 0 ise tam bölünür.

    Hocam 2ye bolup sonucu displaye yazdirmam gerek

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: dead-ly


    quote:

    Orijinalden alıntı: Spyxxx

    quote:

    Orijinalden alıntı: dead-ly

    Girilen 3 bitlik sayıyı yarıya bölmem gerekiyor. Bulamadım, bildiğiniz sayıyı bölebilecek devre var mı?

    Çarpma entegresini bir şekilde bölme olarak kullanabilir miyim?

    Yarıya bölmek demek 2'ye bölmek demek zaten 2'lik tabanda çalıştığın için 1 basamak kaydırmak demek. İlk 2 basamağını alırsın sayının yazarsın. Eğer son basamağı 1 ise kalan 1 olur eğer 0 ise tam bölünür.

    Hocam 2ye bolup sonucu displaye yazdirmam gerek

    2 ye bölmek için dediğim gibi

    100 olan bir sayının 2 ye bölümü 10'dur.
    1000 olan bir sayının 2'ye bölümü 100'dür.

    Yani son biti almayacaksın. İlk 2 bitini alacaksın 3 basamaklı bir sayı için. Son basamağa da bakacaksın eğer 0 ise ekrana ilk 2 biti yazdır ama eğer 1 ise o zaman buçuklu çıkacak ekrana ,5 yazdırırsın.




  • quote:

    Orijinalden alıntı: Spyxxx

    quote:

    Orijinalden alıntı: dead-ly


    quote:

    Orijinalden alıntı: Spyxxx

    quote:

    Orijinalden alıntı: dead-ly

    Girilen 3 bitlik sayıyı yarıya bölmem gerekiyor. Bulamadım, bildiğiniz sayıyı bölebilecek devre var mı?

    Çarpma entegresini bir şekilde bölme olarak kullanabilir miyim?

    Yarıya bölmek demek 2'ye bölmek demek zaten 2'lik tabanda çalıştığın için 1 basamak kaydırmak demek. İlk 2 basamağını alırsın sayının yazarsın. Eğer son basamağı 1 ise kalan 1 olur eğer 0 ise tam bölünür.

    Hocam 2ye bolup sonucu displaye yazdirmam gerek

    2 ye bölmek için dediğim gibi

    100 olan bir sayının 2 ye bölümü 10'dur.
    1000 olan bir sayının 2'ye bölümü 100'dür.

    Yani son biti almayacaksın. İlk 2 bitini alacaksın 3 basamaklı bir sayı için. Son basamağa da bakacaksın eğer 0 ise ekrana ilk 2 biti yazdır ama eğer 1 ise o zaman buçuklu çıkacak ekrana ,5 yazdırırsın.

    Simdi anladim hocam, cok tesekkurler. Cok basitmis aslinda. Kafayi yiyecektim bolucu devre tasarlayacagim diye

    < Bu ileti tablet sürüm kullanılarak atıldı >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.