Sel penambah awalan paralel di Negabinary

14

Saya mencoba merancang adder paralel awalan untuk adder berbasis negabinary. Negabinary adalah basis bukan biner basis akrab . Setiap 1 bit penambah menghasilkan jumlah dan dua (bukan satu dalam biner) membawa yang pergi ke penambah berikutnya.22

Untuk membuat adder lebih cepat, saya ingin menggunakan struktur awalan paralel, seperti struktur Ladner-Fischer yang diberikan di bawah ini. Saya akrab dengan fungsi sel ungu di sistem biner, tapi saya tidak yakin bagaimana saya bisa mendapatkan fungsionalitas yang sama di sistem negabinary.

Alasan saya melakukan ini hanya untuk bersenang-senang, saya belum menemukan kegunaan untuk negabinary.

Rumus untuk menghitung jumlah dan membawa:

si=aibi(ci++ci)

ci+1+=ai¯bi¯ci+¯ci

ci+1=aibici¯+aici+ci¯+bici+ci¯

Tangga-fischer membawa struktur pohon:

masukkan deskripsi gambar di sini

Jika ada yang tidak jelas, jangan ragu untuk bertanya.

gilianzz
sumber
Meskipun ini mungkin pertanyaan yang menarik, sepertinya itu bukan pertanyaan elektrik, dan Anda mungkin lebih beruntung membawanya ke SE matematika.
Redja
3
Saya taruh di sini karena saya pikir orang-orang EE memiliki lebih banyak pengalaman dengan membawa logika, merancang adders dll.
gilianzz
Ini benar-benar pertanyaan EE
Voltage Spike
Sepertinya Anda membutuhkan lebih dari dua output per carry. Apakah Anda tidak perlu menghasilkan dan menyebarkan untuk membawa dan meminjam?
stark
Saya berasumsi Anda sedang berbicara tentang struktur Ladner-fischer. Itu hanya contoh untuk memamerkan pohon awalan paralel. Setiap 1 bit penambah negabinary menghasilkan jumlah, positif dan negatif. Saya tidak yakin apakah kita bisa menggunakan konsep menghasilkan dan menyebarkan dengan negabinary.
gilianzz

Jawaban:

1

Saya mungkin menghabiskan lebih banyak waktu untuk pertanyaan ini daripada yang seharusnya, tetapi inilah temuan saya.

Saya tidak dapat menemukan contoh penambah awalan paralel "murni" untuk angka negatif. Saya juga berpikir ini adalah masalah terbuka, karena saya belum melihat bukti bahwa itu tidak mungkin.

Yang paling dekat yang bisa saya dapatkan adalah dengan menggunakan tambahan negatif dua langkah negatif (biasanya disingkat nnba dalam literatur). Itu didasarkan pada properti berikut:

Biarkan dan g ( x ) = x n - 1 ¯ x n - 2 . . . x 1 ¯ x 0 . Ini pada dasarnya adalah operasi XOR dengan dan masing - masing. Anda kemudian dapat membuktikannyaf(x)=xn1¯xn2...x1¯x0g(x)=xn1xn2¯...x1x0¯0xAA...AA0x55...55

(a+nbb)=g(f(a)+f(b)+1)

Di mana sisi kiri adalah jumlah negabinary , sedangkan + di sisi kanan adalah jumlah biner normal.+nb+

Jumlah negatif kemudian dapat dengan mudah dibalik menggunakan properti yang sama tetapi dengan nol operan:

x=g(f(x)+f(0)+1)

Jadi untuk menemukan jumlah menggunakan pengaya awalan paralel, Anda dapat:

  1. f(a)f(b)
  2. +1s1
  3. s1f(g(s1))
  4. 0xAA...AB=f(0)+1s2
  5. g(s2)

Saya sebenarnya telah mencoba untuk menemukan adder paralel awalan "murni", tetapi saya menganggapnya terlalu rumit untuk waktu yang ingin saya habiskan untuk itu. Inilah alasannya:

{0,1}n×{0,1}n{0,1}nab=ab¯

(ab)c=ab¯c¯a(bc)=abc¯¯

ci+ci¯cici+¯

Sven B
sumber
Pemahaman saya saat ini adalah bahwa pada kenyataannya mustahil untuk membuat adder paralel "murni" paralel ini. Tampaknya adder paralel awalan bisa mendapatkan efisiensi O (log (N)), sedangkan yang setara negabinary tampaknya selalu memiliki kompleksitas O (2 * log (N)) (2x nnba).
gilianzz
Saya tidak menemukan literatur yang membuktikan atau menyatakan bahwa itu tidak mungkin . Saya akan senang terbukti salah. Tapi nnba 2-langkah tampaknya menjadi standar saat ini untuk penambahan yang buruk sejauh yang saya tahu.
Sven B