İmzasız tamsayı maks donanımda nasıl uygulanır?


10

Ben max fonksiyonları (ve max fonksiyonları diğer max işlevlerine argümanlar olarak) içeren bir tasarım üzerinde çalışıyorum.

Donanım tasarımını basitleştirmek için donanımda max'ın nasıl uygulandığını merak ediyordum?

Matematiksel olarak Maks (a, b) [(a + b) + abs (b - a)] / 2 olarak temsil edilebilir.

Donanımda bu şekilde mi uygulanıyor? (yani aşamalar halinde; toplama, bit kaydırma bölümü vb.)

Öyleyse, farkın mutlaklığı nasıl hesaplanır?

Yanıtlar:


10

(A> b)? A: b'yi uygulamak çok basit bir yaklaşım olacaktır. a> b soldan başlayarak uygulanabilir ve (a, b) 'nin her bir bit çiftini kontrol edin:

  • her ikisi de 0 veya her ikisi 1: sonraki alt çifti sürdür
  • a 1: a en yüksek; b 1: b en yüksek

Hangisinin en yüksek olduğunu bildiğinizde, bunu 2N-> N mux ile seçebilirsiniz.

Bazı zekice kandırma işlemlerinde, bit çiftlerinin kontrolü, aynı bit çifti için muxer ile birleştirilebilir.


2

Sorudaki algoritmaya bakalım:

[(a + b) + abs(b - a)]/2

Bu, daha sonra ikinci bir aşama ilavesine beslenen bir toplama ve çıkarma aşamalarına sahiptir. 2'ye bölmek donanımda önemsizdir, LSB kaldırılarak yapılabilir. Bununla birlikte, iki aşamalı tam toplayıcı / çıkarıcı oldukça yavaş ve yoğun bir işlemdir, özellikle de sizin gibi birden fazla caparison kullanıyorsanız.

Wouter van Ooijen'in cevabından yola çıkarak, genelleştirilmiş yapı, bir muxin seçme sinyalini besleyen dijital bir karşılaştırıcıdır:

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

Yukarıdaki şema:

(A > B) ? A : B

ancak karşılaştırıcı çıkışları ile mux seçimi arasında farklı mantıksal bağlantılar kurarak iki giriş arasındaki herhangi bir karşılaştırma için kolayca yeniden yapılandırılabileceğine dikkat edin.

Dolayısıyla, karşılaştırıcıdan üç çıkışı nasıl formüle edeceğimizi bilirsek, donanımda herhangi bir karşılaştırma yapabiliriz. Karşılaştırıcı mantık burada iyi açıklanmıştır . Donanımı optimize etmek için, kullanılmayan karşılaştırıcı çıkışlarını çalıştıran mantığı kaldıracağız.

Ama sonunda, eğer donanıma gidecekse, sentezden geçmek zorunda. Bu yüzden hangi kapı seviyesi şemasının en uygun olduğunu saplantı haline getirmemelisiniz. Bunun yerine, kodunuzu ve algoritmalarınızı en azından sentezleyiciyi verimsiz bir sonuç üretmeye zorlamayacak şekilde optimize edin. "Bazı akıllı numaralar ile bit çiftlerinin kontrolü aynı bit çifti için muxer ile birleştirilebilir" ve bu optimizasyonu yapmanın en kolay yolu sentezdir.


1

Maksimum değeri hesaplamak için gerçekten özel bir devre oluşturmak istiyorsanız, aşağıdaki denklemlerle temel bir blokla başlayabilirsiniz:

Eben,ÖutEben,benn¬(birbenbben)Lben,Öut(¬Eben,bennLben,benn)(Eben,bennbirben¬bben)rben(¬Eben,benn((Lben,bennbirben)(¬Lben,bennbben)))(Eben,benn(birbenbben))

ve sonra bir sonrakini besleyen en önemli basamakla bağlayın. Kritik kısım MSB'den LSB'ye giderken, çıkarma işlemine dayanan devre en iyi şekilde LSB'den MSB'ye ve sonra tekrar LSB'ye giden kritik bir yola sahip olacaktır.

Bir taşıma-dalgalanma toplayıcının eşdeğeridir. İlgileniyorsanız, taşıma-kaydetme veya taşıma-seçme ekleyicilerine eşdeğer bir yapı oluşturabilirsiniz.

(E buraya kadar eşit anlamına gelir ve L sadece şu anlama gelirse ¬E ve seçme anlamına gelir bir)

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.