ALU'da çeşitli işlevler (örn. Toplama, çıkarma ve benzeri) nasıl uygulanır?


9

Bir ALU'nun yapması gereken çok fazla işlev olduğundan, nasıl bir uygulamaya (temel Gates, Parmak arası Terlik vb. Kullanarak Logisim ile bir MIPS sistemi uygulamam gereken bir ev ödevi) nasıl başlayabileceğimi merak ediyorum.

Kafam karışan kısım, Ekle / Çıkar / VE / VEYA / vb. Gibi farklı işlevler yapabilen bir ALU'yu nasıl uygulayabileceğim. Daha fazla kontrol mantığına ihtiyacım var mı (aşağıdaki "önceki atama" bölümünde sağ üst kısma bakın).

Önceki bir ödevde Add / Subtract / Negate yapabilen bir ALU uyguladım. Şimdi bir ALU'nun,

Önceki ödevim

Yanıtlar:


7

Tüm cevapları dahili olarak hesaplarken ve sonra aralarından seçim yapmak için bir mux kullanmak işe yarayacaktır, kesinlikle minimal bir tasarım değildir.

Sorunu biraz dilimleyebileceğinizi düşünün; iki 8 bit girişli tek bir mantık bloğu yerine, doğru bir genel sonuç elde etmek için bunları bağlayabildiğiniz sürece bunu iki 4 bit bölüm olarak bölümleyebilirsiniz. Neyse ki, dilimleri bağlamak tek bir bitten daha kötü değildir, bu ekleme durumunda taşıma bitini temsil eder. Yani her 4 bitlik dilim bir taşıma bitine ve bir taşıma bitine sahiptir. (AND ve NOR gibi mantıkların buna bile ihtiyaç duymayacağını unutmayın, ancak daha sonra sol / sağ vardiyaları uygularsanız, bu bit kolayca yeniden kullanılabilir).

Aşırı bir şekilde taşındığında, her biri 8 bitlik 1 bit kullanabilirsiniz. 1 bitlik dilimleri düşünmek yararlıdır, çünkü daha büyük dilimlere kadar ölçeklenen bir yaklaşımı düşünmeyi kolaylaştırır. Yani 1 bitlik dilimde sadece 7 girişiniz vardır: 4 bit fonksiyon kodu, A girişinden biraz, B girişinden biraz ve bir taşıma biti. Ayrıca sadece iki çıktınız vardır: fonksiyon ve çalışma. Böylece, iki çıkış fonksiyonunu, insanın makul bir şekilde azaltma yeteneği içinde olan sadece 7 giriş olarak yazabilirsiniz. Her zaman tüm fonksiyonları hesaplamayacak bir avuç kapı ile sonuçlanacaksınız, ancak dilim içinde ne olduğu önemli değil , sadece dışarıdan bakıldığında doğru sonucu üretiyor.

Şimdi birkaç yoldan gidebilirsiniz. Bunun bir yolu, bu 1 bitlik dilimlerin 8'ini kullanmaktır ve işiniz bitti. Başka bir yol daha büyük dilimler yapmak ve daha sonra bunları kullanmaktır. 1-bit'ten 2-bit'e kadar olan denklemler 7 girişten 9'a gider ve 4-bit 13 girişin işlevlerini gerektirir. Her zaman kolay değildir, ancak compute-everything-then-mux yaklaşımından daha kompakt sonuçlar verecektir. Ayrıca, 74181 4-bit ALU diliminin iç kısımlarına bakarsanız, orada bir mux görmezsiniz.


Cevabımı daha çok spektrumun "başını alması kolay" olarak hedefliyordum, ancak daha uygun (donanım açısından) bir olasılığa dikkat çektiğin için teşekkürler.
Martin Thompson

5

Evet, daha fazla kontrol mantığına ihtiyacınız var.

Önceki ödeviniz tamamen aritmetikti (bu bir kelime mi?), Böylece tek bir toplayıcı kullanabilir ve istediğiniz işlevleri oluşturmak için kontrol sinyallerini kullanarak girişlere masaj yapabilirsiniz.

Yeni işlevleriniz mantıklı olduğundan , mantıksal işlemleri gerçekleştirmek için başka bir bloğa ihtiyacınız vardır. Kontrol sinyalleri bu bloğun işlevselliğini değiştirecektir.

Daha sonra diyagramınızın altında, hangi sinyallerin (toplayıcıdan ve "giriş masajı" devresinden) çıkacağınızı seçmek için kontrol sinyalleri tarafından yönlendirilen bir çoklayıcıya (bazen 'mux' denir) ihtiyacınız olacaktır. veya mantık operatöründen).

ALU kontrol hatlarınız için yeni kodlamalar seçebiliyorsanız, MSB'yi "aritmetik / mantık" seçimi olarak kullanmaya cazip gelebilir ve diğerleri mantıklıysa "alt işlev" i seçebilir, çünkü kod çözme işlemi nihai mux.


Evet, aritmetik bir kelimedir :)
Majenko

1
Bana sadece aritmetik istediğin kelime. Bu kelimenin üçüncü hecede aksanı olduğunu unutmayın. İkinci hecede vurgu ile, ilkokulda öğrendiğiniz gibi temel sayısal işlemleri gerçekleştirme mekaniğine atıfta bulunan farklı bir kelime.
Olin Lathrop

1

Mantıksal işlemlerin ele alınmasına yönelik güzel bir yaklaşım, iki işlenenin bitlerinin 4 girişli bir çoklayıcıya seçici girdi olarak hizmet etmesi ve çoklayıcının "veri" girişlerini istenen işleme karşılık gelen dört bitlik bir desenle beslemektir (tipik olarak 8 bitlik bir ALU, her bir bit için bir tane olmak üzere sekiz çoklayıcı olacaktır ve 8 çoklayıcının tümünün "veri" girdileri birbirine bağlanacaktır).


çoklayıcıyı çok küçük bir ROM olarak kullanmak gibi - ve bu da gerçek ROM'ları kullanmak için başka bir yol.
JustJeff

Nx1 bit ROM, "veri" girişleri kablo bağlantılı bir çoklayıcıdır. Açıkladığım senaryoda, çoklayıcının "veri" girişleri bir operatör seçimi olacaktır. Uygulamada, muhtemelen 16 olası mantıksal işlemden birkaçını seçmek için küçük bir ROM, artı 3 veya 4 bitlik bir opcode'dan (biri istenirse opcode'u doğrudan mantıksal birim, ancak opcode'un yararlı bir mantıksal işlem oluşturmayacağı durumlarda diğer işlemleri seçmek için diğer çoklayıcıları kullanın).
supercat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.