Arama butonu
Bu konudaki kullanıcılar: 1 misafir
14
Cevap
3198
Tıklama
0
Öne Çıkarma
Asal sayıları bulan devre
D
11 yıl (837 mesaj)
Yüzbaşı
Konu Sahibi

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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



M
11 yıl (3193 mesaj)
Binbaşı

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.



D
11 yıl (837 mesaj)
Yüzbaşı
Konu Sahibi

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ı >
Bu mesaja 1 cevap geldi.
M
11 yıl (3193 mesaj)
Binbaşı

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ı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @dead-ly
S
11 yıl (6035 mesaj)
Yarbay

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 >

D
11 yıl (837 mesaj)
Yüzbaşı
Konu Sahibi

@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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Spyxxx , @mylord92
Y
11 yıl (1330 mesaj)
Binbaşı

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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @dead-ly
D
11 yıl (837 mesaj)
Yüzbaşı
Konu Sahibi

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.
< Resime gitmek için tıklayın >

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 >


Bu mesajda bahsedilenler: @yxsdf
S
11 yıl (6035 mesaj)
Yarbay

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.


Bu mesaja 1 cevap geldi.
D
11 yıl (837 mesaj)
Yüzbaşı
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Spyxxx
D
11 yıl (837 mesaj)
Yüzbaşı
Konu Sahibi

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 >
Bu mesaja 1 cevap geldi.
S
11 yıl (6035 mesaj)
Yarbay

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.


Bu mesaja 1 cevap geldi.
D
11 yıl (837 mesaj)
Yüzbaşı
Konu Sahibi

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ı >
Bu mesaja 1 cevap geldi.
S
11 yıl (6035 mesaj)
Yarbay

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.


Bu mesaja 1 cevap geldi.
D
11 yıl (837 mesaj)
Yüzbaşı
Konu Sahibi

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ı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.