Breadboard Computer - Arithmetic Logic Unit

Kategori: Electronics , 24 Haziran 2020 , JanFranco


Bu yazımda breadboard bilgisayarın arithmetic logic unit kısaca ALU modülü tamamlayacağız. Bu modülü oluşturabilmek için önceki yazılarımda tamamladığımız iki adet 8-bit register modülüne, işlemin sonucunu bus'a aktarabilmek için 1 adet 74LS245 entegresine, toplama işlemini gerçekleştirebilmek için 2 adet 74LS283 entegresine, çıkarma işlemini de gerçekleştirebilmek için 2 adet 74LS86 entegresine ihtiyacımız olacak. Devre şemasını görelim:



8-bit bilgisayar yapmaya çalışıyoruz. Bu nedenle iki adet 4-bitlik binary adder entegresini kullanıyoruz. Çıkarma işlemini yapabilmek için 2s complement methodunu kullanıyoruz. 2s complement methodunda pozitif binary sayının negatife çevrilebilmesi için sayının tersi (B') alınıp bir eklenmelidir. A registerındaki değerden B registerındaki değeri çıkarmak istersek A + (-B) işlemini yapabiliriz. Bunun için de B'nin bitlerini XOR kapılarına bağlıyoruz. XOR kapılarının diğer girişi sub girişinden geliyor. XOR kapısının doğruluk tablosunu biliyoruz. Eğer sub 0 ise B'nin bitleri direk aktarılacak, eğer sub 1 ise bitlerin tersi aktarılacak. Sub 1 ise sayının tersini aldık. Bir değerini de eklememiz gerekli. Bunu da sub girişini ilk adder entegrenin Cin girişine (C0) bağlayarak gerçekleştiriyoruz.

Elde zincirinin bozulmaması için ilk entegrenin Cout çıkışını diğer entegrenin Cin girişine bağlıyoruz. Ayrıca sonucu bus'a direk aktarmak istemeyebiliriz. Bunu da enable_out girişi ile kontrol ediyoruz.

Şemadan yola çıkarak ve ilgili entegrelerin datasheet'leri incelenerek aşağıdaki devreyi kurabiliriz:



En üstte daha önceden oluşturduğumuz clock modülünü, onun altında A register'ını, sol tarafta bus'ı, en altta da B register'ını görüyoruz. Ortada ise ALU modülümüz yer alıyor. ALU modülünde en solda bus için kullandığımız entegreyi görüyoruz. Onun sağında ise iki adet binary adder entegreleri yer alıyor. En sağdaki iki entegre de 4-bit XOR kapılarını içeriyor. En sağdaki entegrenin sol üstünde bir jumper kablo yer alıyor. Bu kablo sub girişini temsil ediyor.

Test için A register'ına 1 B register'ına 0 değerini atadım. ALU'daki A + B işleminin sonucunu bus'a aktardım. Bus'taki değerin de B register'ı tarafından okunmasını sağladım. Bu durumda 1 + 0 işlemi yapılacak. Bus'a 1 değeri aktarılacak. B register'ı bus'tan 1 değerini okuyacak. Okuduğunda 1 + 1 işlemi yapılacak. 2 değeri tekrar B register'ına yazılacak. 1 + 2 işlemi yapılacak ve bu şekilde 255'e kadar sayım yapabileceğiz:



Geriye sayım yapabilmek için sadece sub sinyalini logic-1 yapmamız yeterli.


Sonraki Yazı: Breadboard Computer - 64-bit Random Access Memory
Yorumlar

Henüz bir yorum bulunmuyor.