Basketbol Skor Sayacı – Sayısal Tasarım Laboratuarı Final Projem
Bu dönem aldığımız Sayısal Tasarım Laboratuarı dersinin final sınavı yerine proje yaptık. Genel olarak herkes 4 kavşaklı trafik ışığı yapmış olsa da ben farkımı konuşturdum
(çok da mütevaziyim bu konularda hem de çoook).
Yaptığım Projede Skor tahtasını (score board’u) yöneten kişi için 3 adet giriş vardı. Bunlar basketbol oyununda atılan basketlerin skor’a katkısı olan 1,2 ve 3 değerleridir. Çıkış olaraksa 2 adet 7 segmentli display kullandım. Devrenin görünümü genel olarak aşağıdaki gibi:

Devremizde skor’un 1′ler basamağını ROM ile saydırıyoruz, 10′lar basamağını 4 bitlik sayıcı ile saydırıyoruz. Bu durumda devremizin çıkışında 4 adet durum değişkeni ve 1 adet elde çıkışı var. Elde çıkışı 10′lar basamağını saymak için.
Şimdi gel gelelim projenin gerçeklenişine. Öncelikli olarak kurallarımızı yazalım.
- +1 girişine basıldığında sayının 1′ler basamağı 1 artacak
- +2 girişine basıldığında sayının 1′ler basamağı 2 artacak
- +3 girişine basıldığında sayının 1′ler basamağı 3 artacak
- Eğer 1′ler basamağı + giriş değeri 9′u aşıyorsa Elde çıkışı 1 olacak ve devre toplam-10 durumuna gidecek. Örneğin: skor 28 iken +3 değeri geldiğinde Onlar basamağı Elde’nin etkisiyle 3 yapılır, 1ler basamağı 8+3=11, 11-10=1 durumuna gider. Bu durumda yeni skor 28+3=31 olmuş olur.
Adım 1 – Akış Diyagramının çıkartılması, akış diyagramında sadece 1′ler basamağı saydırılmaktadır.
S0 durumu: skor’un 0 olması durumudur.
S1 durumu: skor’un 1 olması durumudur
s2 durumu: skor’un 2 olması durumudur.
…..
s9 durumu skor’un 9 olması durumudur.
s0 durumundayken +1 girişi alınırsa S1 durumuna gidilir ve Elde çıkışı 0′dır
s0 durumundayken +2 girişi alınırsa S2 durumuna gidilir ve Elde çıkışı 0′dır
s0 durumundayken +3 girişi alınırsa S3 durumuna gidilir ve Elde çıkışı 0′dır
s1 durumundayken +1 girişi alınırsa S2 durumuna gidilir ve Elde çıkışı 0′dır
s1 durumundayken +2 girişi alınırsa S3 durumuna gidilir ve Elde çıkışı 0′dır
s1 durumundayken +3 girişi alınırsa S4 durumuna gidilir ve Elde çıkışı 0′dır
……
s8 durumundayken +1 girişi alınırsa s9 durumuna gidilir ve Elde çıkışı 0′dır
s8 durumundayken +2 girişi alınırsa S0 durumuna gidilir ve Elde çıkışı 1′dir
S8 durumundayken +3 girişi alınırsa S1 durmuna gidilir ve Elde çıkışı 1′dir
s9 durumundayken +1 girişi alınırsa s0 durumuna gidilir ve Elde çıkışı 1′dir.
s9 durumundayken +2 girişi alınırsa s1 durumuna gidilir ve Elde çıkışı 1′dir.
s9 durumundayken +3 girişi alınırsa s2 durumuna gidilir ve Elde çıkışı 1′dir.
Programımızın akışı bu şekilde olacaktır. Akış’ı kendiniz kağıt kalem alıp çizebilirsiniz.
Adım 2 – PLA Programının yazılması. (Rom ile yazmayacak mıydık hönk ?!! )
10 durum’u 4 bit ile ifade ediyoruz, bu durumda Q1,Q2,Q3,Q4 durum değişkenlerimiz olacak. Diğer girişlerimizX1 +1′i, X2 +2′yi, X3 +3′ü ifade etmektedir. Q1+ Q1′in bir sonraki durumunu,Q2+ Q2′nin bir sonraki durumunu,Q3+ Q3′ün bir sonraki durumunu göstermektedir. E çıkışı ise Eldenin olup olmadığını göstermektedir. Programın bir kısmı aşağıda verilmiştir:

Adım 3 – PLA Programını ROM Programına Çevirmek.
ROM programının PLA Programından farkı ROM’da “don’t care” kullanamayışımızdır. 7 girişli bir ROM devresinde 2^7=128 satır yazmak gerekmektedir. ROM’da tüm satırları yazmak gerekmektedir. O yüzden üşenmeden Bu PLA Programını aşağıdaki hale getiriyoruz.

Rom Programını bu hale getirdikten sonra bu programı Flash ROM writer cihazıyla ROM’umuza aktaracak hale getirmemiz lazım. Bunun için 5 bitlik rom çıkışlarımızın başına 3 adet önemsiz çıkış ekliyoruz. Ama kullanmayacağız. Çıkıştaki toplam bit sayısını 8′e çıkarmamızın sebebi Programımızı ROM’a Hexal olarak aktaracak olmamızdır. Yani aşağıdaki gibi:
Daha sonra bu hexal değerleri sırasıyla ROM’daki satırlara yazıyoruz ve flash rom writer ile rom’u programlıyoruz.
{Bana ROM’u programlamayı öğreten 2. Öğretim Sait arkadaşıma Teşekkürler…}
Adım 4 – ROM’umuzu programladık. Şimdi ROM bacaklarını belirleyelim.
- Kullandığımız ROM’un kataloğunu elimize alıyoruz.
Girişlerimiz:
A0 bacağı LSB (en anlamsız bit) – X3 girişi
A1 bacağı – X2 girişi
A2 bacağı – X3 girişi
A3 bacağı – Q4 (durum değişkenimiz)
A4 bacağı – Q3 (durum değişkenimiz)
A5 bacağı – Q2 (durum değişkenimiz)
A6 bacağı – Q1 (durum değişkenimiz)
Çıkışlarımız:
Q0 bacağı – E (elde çıkışımız) (buradaki Q0′ın girişle alakası yoktur)
Q1 bacağı – Q4+ (durum değişkenlerimizin bir sonraki durumları)
Q2 bacağı – Q3+
Q3 bacağı – Q2+
Q4 bacağı – Q1+
Adım 5 – Devremizin Kurulması
5.1- ROM’u board’a yerleştiriyoruz ve gerekli besleme gerilimini verip, chipset enable, output enable işlemlerini yapıyoruz.
5.2 – Girişlerde belirtilen Q1,Q2,Q3,Q4 girişlerine 4 adet D flip flop’larımızın çıkışlarını (Q’larını) bağlıyoruz.
5.3 – Rom’umuzun çıkışları olan Q1+,Q2+,Q3+,Q4+’ları D flip flop’larımızın Girişlerine bağlıyoruz.
(5.2 ve 5.3 nolu adımlarda geri beslemeli bir şekilde flip floplarımızı Rom’umuza bağladık, bu sayede gelen girişlere göre Rom’umuzda akış’ı sağlayacağız.)
5.4 – Elde çıkışımızı 74163 4 bitlik sayıcı’mızın Saat girişine bağlıyoruz. (Bu sayede Elde çıkışı olduğunda Sayıcının saat girişinden lojik 1 gelecek ve bu lojik 1′in yükselen kenar’ında sayıcımız 1 artacak.) {Bu öneri için sınıf arkadaşım M. Ali’ye teşekkürler…}
5.5 – 7 segmentli display’lerde sayıları görebilmek için gerekli kod çözücü olan 4511′leri (2 tane) deney board’umuza yerleştiriyoruz. 4511 çip’imizin özelliği aldığı 4 bitlik 2 tabanındaki sayıyı 16 tabanında gösterebilmesi (1,2,3…D,E,F). Daha doğrusu bu 16 sayıyı ifade edebilecek olan 7 parçayı üretebilmesi. 4511′in çıkışlarını 7 segmentli display’e bağlıyoruz.
5.5.a – 1′ler basamağını Q1+,Q2+,Q3+,Q4+’dan alıyoruz ve 4511′e bağlıyoruz.
5.5.b – 10′lar basamağını 4 bitlik sayıcı çıkışından alıyoruz ve 4511′e bağlıyoruz.
5.6 – 7 Segmentli Display’lerimizin Ortak Katotlu Olması gerekmektedir. Bu display’lerimizin orta bacaklarından herhangi birini toprağa bağlamayı ihmal etmiyoruz. (Ortak Anotlu display alırsanız tüm çıkışları tek tek NOT’layıp 7 segmentli display’e bağlayacaksınız ve orta bacaktan +5V vereceksiniz){Ortak Anotlu ve Ortak Katotlu display’ler arasındaki farkı öğreten sınıf arkadaşım M.Ali’ye tekrar teşekkürler.}
5.7 – D flip flop’larımıza Clock işaretini Clear, Preset ve VCC girişlerine 5V, Tüm çiplerin besleme gerilimlerini ve topraklamalarını bağlamayı unutmuyoruz, aksi halde devremiz puff duman olur ![]()
5.8 – X1, X2, X3 girişlerimizi Switch’lere bağlıyoruz (skor board’u biz yönetiyormuşuz gibi switch’lerden lojik 1 verince gerekli miktarda artışı sağlayabilmek için.)
Adım 6 – Tüm bağlantıları baştan bi kontrol edip devreyi çalıştırıyoruz.
Devre Şeması:

Ekler:
74LS163 datasheet indir (4 bitlik sayıcı)
M27C256B datasheet indir (256 Baytlık EPROM)
SN7474 datasheet indir (D Flip Flop)
TC4511BP datasheet indir (7 segmentli display kod çözücü)
Dipnotlar:
- EPROM: Ultraviyole ışıkla silinebilen ve tekrar programlanabilen bir ROM türüdür.
-Kullandığınız devre elemanlarına göre datasheetler değişebilir.
Bilgisayar Mühendisliği ve Elektrik Elektronik Mühendisliği bölümlerinde okutulan Mantık Devreleri, Sayısal Tasarım derslerini kapsayan bu projeyle ilgili soru ve önerilerinize açığım
Bu yazı bugün 0, toplamda 676 kez okundu.





Haziran 14th, 2010 at 13:26
Dersini alsam bende yapardım
Ama pek birşey anladığımda söylenemez
Helal olsun abi.
Haziran 14th, 2010 at 13:37
Bunlar basit şeyler aslında
bunun daha karmaşıkları da var
Parayı atıyon para üstü, ürün veren otomat falan da tasarlayabilirdim
o biraz daha karmaşık…
Ocak 28th, 2011 at 21:39
bnim dersim 0 yha bune bn nasıl yapım abi yha
Ocak 28th, 2011 at 21:41
bune yha
Ocak 30th, 2011 at 03:38
tanya isimli arkadaş bunlar basit şeyler
Nisan 25th, 2011 at 00:19
Merhaba,
Peki bundan satmayı düşündünüz mü? Yada zaten satıyor musunuz? (Toplu satış değil bana 1 adet lazım.)
Ağustos 17th, 2011 at 01:37
merhaba emre bey,
sadece ders için yaptığım bir projeydi satmayı düşünmüyorum, ancak yazıda detaylı açıklaması var. siz de yapabilirsiniz