İkili bir sayının sıfır olup olmadığını bulma


16

ALU'yu Bilişim Sistemleri unsurları kitabımda verilen özelliklerden uyguluyordum. Sadece bir sorun üzerinde sıkıştım. Belirli bir sayının sıfır olup olmadığını nasıl bulabilirim? Yapabileceğim bir şey, ya da otobüsteki her bit ve sonra bunun üzerine bir kapı değil. Ama başka zarif bir çözüm olmalı.


6
gerçekten sıkışmış gibi görünmüyor - daha çok tatmin
olmamış

7
Bir X girişi NOR olan bir çözüm. Kaydın sıfır içerip içermediğini belirlemek için, her bitin mantıksal 0 içerip içermediğini görmek için incelenmelidir. Tek bir bit çıkışına ihtiyacınız olduğunu belirttiniz. Bu nedenle, X girişleri ve NOR gibi bir çıkış ile bazı fonksiyonlara ihtiyacınız vardır.
W5VO

Yanıtlar:


14

Tüm bitleri ORing çevresinde göründüğü kadar tatmin edici olmanın hiçbir yolu yoktur. Ancak, silikondaki iki giriş kapısı ile de sınırlı değilsiniz. CMOS mantığında, çekme ağına 4 serisi p tipi transistör ve açılan ağa 4 paralel n tipi transistör koyarak 4 girişli bir NOR geçidi oluşturabilirsiniz. Bu, ağaç topolojinizin derinliğini ve dolayısıyla yayılma gecikmenizi azaltır. Bu teoriyi, şimdiye kadar, seri transistörlerdeki kümülatif voltaj düşüşünün çekmeyi "1" olacak kadar yukarı çekmemesi için ... şimdiye kadar alabilirsin ... doğru hatırlıyorsam, dört iyi bir kural.


Daha fazla sayıda bit için alternatif NOR ve NAND kapıları kullanmak mantıklı olur mu? Örneğin, 4 kapılı fan girişi ile, 64 bitlik sıfır testi, 4 bit sıfır ise, 4 bitin 1 olması durumunda 0 sonucunu besleyen 4 NAND geçidine 1 sonucunu besleyen 16 NOR kapısını kullanabilir (tümü 16 orijinal bit 0 idi), bu dört sonuç daha sonra nihai bir NOR geçidine gönderilecektir. (Ben bir EE değilim, ama ara sıfır çeviriciler kullanmaktan daha iyi gibi görünüyor - sıfır sonucunu 0'a geri döndürmek - ve sadece NOR kapılarını kullanmak.)
Paul A. Clayton

Sıfır tespiti gecikmesini ekleme gecikmesine kısmen katlamanın yolları da olabilir.
Paul A. Clayton

NMOS: Peki herhangi bir giriş 1 ise seviyeyi 0'a düşürmek için bir çekme direnci ve X transistörleri kullanmaya ne dersiniz?
Oskar Skog

13

Mantık fonksiyonu NOR geçididir. Bu, mevcut en basit mantık işlevidir.


8

8 bit makinelerle tipik çözüm, ALU'nun en son operasyonun sonucunu temsil edecek bir dizi 'bayrak' bit üretmesi idi. Etrafta herhangi bir sayıda bayrak biti olması mümkün olsa da (yani, CPU'nuzdaki her kayıt için bir 'Z' bayrağınız olabilir), ancak genellikle en çok ilgi duyduğunuz hesapladığınız şeydir. bu şekilde yapmak belli bir anlam ifade ediyor.

Bu eski CPU'lardan bazıları, hemen hemen her veri hareketi için otomatik olarak bayrak bitleri ayarlarken, diğerleri, belirli bir kaydın sıfır olup olmadığını anlamanız gerekirse, kodunuza belirli bir 'karşılaştırma' talimatı yapıştırmanızı gerektirir. Ve her kayıt için veya sadece hesaplanmış olan için sıfır kontrolü sağlasanız da, "bu sıfır kelime" olup olmadığını kontrol etmenin basit bir yolu yoktur.


1
Bu aynı zamanda 32 bit ARM çipleri için tipiktir ve çoğu mimaride tipik olabilir. ARM için APSR (Uygulama Programı Durum Kaydı), aradığınız sıfır bitin yanı sıra diğer işlevleri sağlamak için N, Z, C, V ve Q bitlerini (Negatif, Sıfır, Taşıma, oVerflow, saturateQ) bitleri tutar . Bunlar makineniz için yararlı olabilir veya olmayabilir.
Kevin Vermeer

Çözümü aldım ya da çözdüm, ama beni sadece bir bit almak için çok fazla mantık kullanmam gerekiyor. Zarif bir çözüm olmalı.
Rick_2047

@ Rick_2047 - bunu neyle uyguladığınızdan bahsetmediniz, ama bir FPGA mı tahmin ediyorum? Sadece yüksek bir fan giriş kapısı yapmak için ne kadar çok sayıda mantık bloğu bağlamak zorunda kalırsam beni rahatsız eder. Bu sadece bir tanesini koymak için iyi bir neden.
JustJeff

tam olarak bir FPGA değil, bir HDL ve donanım simülatörü.
Rick_2047

3

Örneğin, bazı CPU'larda MIPS, her zaman sıfır içeren bir kayıt defterine sahiptir, bu da sıfır için başka bir kayıt testini çok hızlı yapar.


Sıfır içeren bir kaydım varsa numarayı nasıl kontrol edebilirim? Ayrıca ben gerçek veya 16 bit veriyolu sıfır olup olmadığını bağlı olarak yanlıştır sadece bir bit oluşturmak istiyorum
Rick_2047

1
yüceltilmiş bir NOR geçidine dejenere olan bir karşılaştırıcı ...
vicatcu

Eğer kayıtlar ucuzsa (bir FPGA'da bir SRAM bloğundalarsa) bu şekilde bir şey kazanabilir ve yine de başka nedenlerle bir kayıt karşılaştırma talimatına ihtiyacı vardır.
jpc

@vicatu - aslında iki N bit sayısını karşılaştırmak istiyorsanız, N 2 girişli XOR geçitlerine ihtiyacınız olacaktır. OR / NOR şey sadece sıfır test için iyidir.
JustJeff

ama sonuçta girdi bitlerim kadar kapı kullanmam ya da en az transistör kullanmam gerekecekti.
Rick_2047

0

Ben büyük bir hayranıyım or_reduce- çoğu sentez aracı tam olarak ne yaptığınızı bildikleri için onu en iyi uygulamaya optimize edecektir.

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.