Altifigence Academy

16 / 63 · Konsep

Adder dan struktur perambatan carry

Turunkan persamaan full adder dan analisis fungsi, lebar, serta tundaan ripple-carry bersama-sama.

Menyatakan penjumlahan satu bit dengan dua bit

Jumlah ai,bi,cia_i,b_i,c_i berada pada 0–3, sehingga diperlukan bit jumlah sis_i dan carry ke posisi berikutnya ci+1c_{i+1}. Jumlah masukan 1 yang ganjil menghasilkan bit jumlah 1; sedikitnya dua masukan 1 menghasilkan carry 1.

si=ai⊕bi⊕cis_i=a_i\oplus b_i\oplus c_i
ci+1=aibi+(ai⊕bi)cic_{i+1}=a_ib_i+(a_i\oplus b_i)c_i

Definisikan generate gi=aibig_i=a_ib_i dan propagate pi=ai⊕bip_i=a_i\oplus b_i, sehingga ci+1=gi+picic_{i+1}=g_i+p_ic_i, dengan ++ berarti OR. Half adder adalah kasus tanpa carry masuk: jumlahnya XOR dan carry-nya AND.

Ubah ketiga masukan dan pastikan a+b+cin = sum+2×cout selalu berlaku. Carry menjadi masukan posisi berikutnya dan tidak memiliki bobot yang sama dengan sum.

Jumlah satu posisi dan carry ke posisi berikut

a + b + cin = sum + 2 × cout

Sejauh mana carry merambat?

Pada 1111 + 0001 empat bit, bit 0 menghasilkan carry yang diteruskan ke tiga posisi berikutnya. Jumlah tersimpan 0000 dan carry akhir 1. Pada struktur ripple-carry, posisi tinggi mungkin harus menunggu carry dari posisi rendah.

c2=g1+p1g0+p1p0c0c_2=g_1+p_1g_0+p_1p_0c_0

Ekspansi persamaan menunjukkan kemungkinan menghitung carry secara paralel. Adder cepat menggabungkan generate/propagate kelompok, dengan pertukaran luas dan tundaan yang melibatkan fan-in, pengawatan, serta pustaka sel. Operator + RTL tidak selalu diimplementasikan sebagai satu rangkaian ripple-carry.

Nyatakan lebar jumlah dalam desain

SystemVerilog
logic [3:0] a, b, sum;
logic cin, cout;
logic [4:0] wide_sum;
assign wide_sum = {1'b0, a} + {1'b0, b} + {4'b0000, cin};
assign sum = wide_sum[3:0];
assign cout = wide_sum[4];

Karena 15+15+1=3115+15+1=31, lima bit cukup. Tentukan dahulu apakah hanya bit rendah diperlukan, carry diteruskan, atau saturasi dibutuhkan. Elemen interaktif memeriksa tabel kebenaranTabel kebenaran Tabel seluruh kombinasi masukan beserta keluarannya. Perubahan terhadap waktu diperiksa terpisah melalui gelombang. Selengkapnya satu full adder, bukan mengukur tundaan hasil sintesis nyata.

Ubah masukan

Coba sendiri

Untuk unsigned empat bit, hitung jumlah lengkap, jumlah empat bit, dan carry saat a=9a=9, b=6b=6, cin=1c_{in}=1. Apakah carry saja menentukan overflow jika rangkaian yang sama ditafsirkan sebagai penjumlahan signed?

Baca penjelasan

Jumlah lengkap 16, atau 10000: sum=0000 dan carry=1. Pada interpretasi signed, 1001 adalah -7, sehingga −7+6+1=0-7+6+1=0, masih dalam rentang. Carry dan overflow signed adalah kondisi berbeda.

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.