Saya sedang mengerjakan sirkuit Subtractor menggunakan sirkuit Adder. Saya harus melakukan xy.
Misalkan x = 111111, y = 100000 Menggunakan sirkuit penambah 6 bit yang saya buat bendera melimpah datang menjadi 0 tetapi ketika saya menyelesaikannya menggunakan pena dan kertas melimpah menjadi 1.
Ketika x = 000000 dan y = 000000 bendera Carry out akan menjadi 1 tetapi menggunakan pena dan kertas maka akan menjadi 0.
Saya telah menggunakan logika dasar yang digunakan untuk membuat sirkuit Adder dan untuk evaluasi flag.
Saya membuat 15 kasus uji. Hanya dua kasus uji ini yang tidak setuju dengan tanda ini. Jawaban akhir yang mereka tampilkan benar.
Perhitungan yang saya lakukan pada pulpen dan kertas:
x = 111111, y = 100000
y'+1 = 100000
x + y' + 1 = 011111 with Carry out = 1 and overflow = ex-or of 1 and 0 = 1
x = 000000, y = 000000
y'+1 = 000000
x + y' + 1 = 000000 with carry out = 0 and overflow = ex-or of 0 and 0 = 0
Kesalahan apa yang mungkin saya lakukan?
Saya pikir itu harus melakukan sesuatu dengan komplemen 2s karena komplemen 2s dari 0000000 dan 100000 adalah angka sendiri.
Saya telah membuat sirkuit di vivado.
Kode saya adalah ini: Full 1bit Adder:
module FullAdder( a,b,cin,s,cout ) ;
input wire a,b,cin ;
output wire s,cout ;
assign s = cin^a^b;
assign cout = (b&cin) | (a&cin) | (a&b) ;
endmodule
Kode untuk 6 bit adder:
`timescale 1ns/ 1ps
module sixbit_ripple_adder
(
input wire[5:0] x,y,
input wire sel,
output wire overflow, c_out,
output wire[5:0] sum
) ;
wire c1,c2,c3,c4,c5,c6 ;
FullAdder f1 ( .a(x[0]) , .b(y[0]^sel) , .cin(sel) , .s(sum[0]) , .cout(c1) ) ;
FullAdder f2 ( .a(x[1]) , .b(y[1]^sel) , .cin(c1) , .s(sum[1]) , .cout(c2) ) ;
FullAdder f3 ( .a(x[2]) , .b(y[2]^sel) , .cin(c2) , .s(sum[2]) , .cout(c3) ) ;
FullAdder f4 ( .a(x[3]) , .b(y[3]^sel) , .cin(c3) , .s(sum[3]) , .cout(c4) ) ;
FullAdder f5 ( .a(x[4]) , .b(y[4]^sel) , .cin(c4) , .s(sum[4]) , .cout(c5) ) ;
FullAdder f6 ( .a(x[5]) , .b(y[5]^sel) , .cin(c5) , .s(sum[5]) , .cout(c6) ) ;
assign c_out = c6 ;
assign overflow = c5^c6 ;
endmodule
Nilai sel untuk kedua kasus uji adalah 1.
Apa yang saya lewatkan?