25
TUGAS 2 EL4040 Perancangan VLSI Counter 8-bit, Adder-16bit dan Booth Multiplier Radix-2 Nama: I Made Wiratha N. NIM : 13209057 Institut Teknologi Bandung Semester 1 2012/2013

Laporan VLSI

Embed Size (px)

DESCRIPTION

VLSI Design

Citation preview

Page 1: Laporan VLSI

N bun

Foto

a

TUGAS 2 EL4040 Perancangan VLSI

Counter 8-bit, Adder-16bit dan Booth Multiplier Radix-2

Nama: I Made Wiratha N.

NIM : 13209057

Institut Teknologi Bandung Semester 1 2012/2013

Page 2: Laporan VLSI

1. Counter 8-bit Counter pada dasarnya adalah mekanisme menghitung clock yang

terjadi pada suatu periode waktu. Pada bagian ini akan didesain sebuah

counter dengan lebar data 8 bit, dam memiliki mode up dan down

counter. Konstruksi counter 8-bit ini dilakukan secara structural yaitu

dengan mengkonstruksi bagian-bagian seperti adder, multiplexer dan

register. RTL dari Counter ini dapat dilhat pada gambar dibawah ini:

Gambar 1. RTL dari Counter

Verilog dari masing-masing bagian dapat dilihat dibawah ini:

a. ADDER 8-bit

module ADD8Bit (

input [7:0] d_in1,

input [7:0] d_in2,

output [7:0] d_out);

wire [8:1] c;

FA bit0 (.a(d_in1[0]), .b(d_in2[0]), .Cin('b0),

.Cout(c[1]), .Dout(d_out[0]));

FA bit1 (.a(d_in1[1]), .b(d_in2[1]),.Cin(c[1]),

Page 3: Laporan VLSI

.Cout(c[2]), .Dout(d_out[1]));

FA bit2 (.a(d_in1[2]), .b(d_in2[2]), .Cin(c[2]),

.Cout(c[3]), .Dout(d_out[2]));

FA bit3 (.a(d_in1[3]), .b(d_in2[3]), .Cin(c[3]),

.Cout(c[4]), .Dout(d_out[3]));

FA bit4 (.a(d_in1[4]), .b(d_in2[4]), .Cin(c[4]),

.Cout(c[5]), .Dout(d_out[4]));

FA bit5 (.a(d_in1[5]), .b(d_in2[5]), .Cin(c[5]),

.Cout(c[6]), .Dout(d_out[5]));

FA bit6 (.a(d_in1[6]), .b(d_in2[6]), .Cin(c[6]),

.Cout(c[7]), .Dout(d_out[6]));

FA bit7 (.a(d_in1[7]), .b(d_in2[7]), .Cin(c[7]),

.Cout(c[8]), .Dout(d_out[7]));

Endmodule

b. DFF 8-Bit

module DFF8Bit (

input [7:0] In,

input Clock,

output reg [7:0] Counter);

always @ (posedge Clock)

Counter = In;

endmodule

c. Full Adder (FA)

module FA (

input a,b,Cin,

output Cout,Dout);

assign Dout = (a^b)^Cin;

assign Cout = ((a^b)&Cin)|(a&b);

endmodule

d. Multiplexer 8-Bit 2 to 1

module MUX2_1 (

input [7:0] d_in1,

input [7:0] d_in2,

input sel,

output [7:0] Counter);

Page 4: Laporan VLSI

assign Counter[0] = (d_in1[0]&~sel)|(d_in2[0]&sel);

assign Counter[1] = (d_in1[1]&~sel)|(d_in2[1]&sel);

assign Counter[2] = (d_in1[2]&~sel)|(d_in2[2]&sel);

assign Counter[3] = (d_in1[3]&~sel)|(d_in2[3]&sel);

assign Counter[4] = (d_in1[4]&~sel)|(d_in2[4]&sel);

assign Counter[5] = (d_in1[5]&~sel)|(d_in2[5]&sel);

assign Counter[6] = (d_in1[6]&~sel)|(d_in2[6]&sel);

assign Counter[7] = (d_in1[7]&~sel)|(d_in2[7]&sel);

endmodule

e. Counter (Modul Utama)

module cn(

input [7:0] In,

input Reset, Clock, Down_Up,

output wire [7:0] Counter);

wire [7:0] add1;

wire [7:0] min1;

wire [7:0] tmp_count;

wire [7:0] tmp_mux;

wire [7:0] tmp_mux8;

assign add1 = 8'b00000001;

assign min1 = 8'b11111111;

assign tmp_mux8[0] = tmp_count[0] & Reset;

assign tmp_mux8[1] = tmp_count[1] & Reset;

assign tmp_mux8[2] = tmp_count[2] & Reset;

assign tmp_mux8[3] = tmp_count[3] & Reset;

assign tmp_mux8[4] = tmp_count[4] & Reset;

assign tmp_mux8[5] = tmp_count[5] & Reset;

assign tmp_mux8[6] = tmp_count[6] & Reset;

assign tmp_mux8[7] = tmp_count[7] & Reset;

MUX2_1 updown (.d_in1(add1), .d_in2(min1),

.sel(Down_Up), .Counter(tmp_mux));

ADD8Bit counter (.d_in1(d_out), .d_in2(tmp_mux),

.d_out(tmp_count));

DFF8Bit counter_out (.In(tmp_mux8), .Clock(Clock),

.Counter(d_out));

Endmodule

Page 5: Laporan VLSI

1. Simulasi fungsional

Simulasi ini dilakukan untuk memeriksa apakah program yang

dibuat telah berjalan dengan benar dan valid

a. Testvector data uniform

Gambar 2. Testvector Data Uniform

Gambar diatas menunjukkan bahwa operasi penjumlahan yang

berjalan telah benar dan valid sacara logic dan fungsional dengan

testvector data uniform. Sedangkan pada testvector data random,

hasil yang diperoleh masih konsisten dengan funsi counter itu

sediri. Dengan demikian perancangan telah berjalan baik dan

benar.

b. Testvector data random

Gambar 3. Testvector data Random

Page 6: Laporan VLSI

2. Simulasi Timing

Pada simulasi timing, maka interval timing yang digunanakan

sebesar 10 ns, timing dengan nilai 10 ns akan mengakibatkan

delay yang cukup besar, seperti pada gambar dibawah ini. Hasil

yang diperoleh pun kurang sesuai dengan yang seharusnya.

Gambar 4. Simulasi Timing

8 bit counter ini menggunakan 14 logic elemen atau <1% dari

yang tersedia pada board yang digunakan dalam simulasi dan

menngunakan 8 register. Sedangkan critical path adalah pin

Sum[15] yang memiliki delay terpanjang sebesar 19,44 ns

2. Adder dengan berbagai arsitektur

a. 16-bit Ripple Carry Adder (RCA)

Ripple Carry Adder dapat dibentuk dengan menggunakan Half

adder dan full adder yang disusun sehingga menjadi RCA. Bagian

Page 7: Laporan VLSI

bagian dari blok penyusun ini dapat dilihat pada gambar dibawah

ini:

Gambar 6. Skema RCA

Dari gambar diatas dapat dilihat bahwa Ripple Carry Adder disusun

atas n buah Full Adder secara kaskade. Karena penyusunan secara

kaskade ini sinyal Carry in yang berjalan menyerupai ripple,

sehingga terdapat masalah delay dalam arsitektur ini. Jika perbagian

dari blok ini diuraikan, maka skematik dari full adder adalah:

Gambar 7. Dekomposisi dari Full Adder

Tabel kebenaran dari Full adder dapat dilihat pada gambar dan

penjelasan dibawah ini:

Page 8: Laporan VLSI

Tabel Keberan Full Adder

Gambar 8. Tabel Kebenaran dan K-Map

Jadi,

Si = Xi XOR Yi XOR Ci

Ci+1=XiYi + XiCi+YiCi

Kemudian Full Adder dapat dibentuk dari Half Adder, sehingga

desain yang dibuat modular. Skematik dari Half Adder adalah:

Gambar 9. Dekomposisi Half Adder

Page 9: Laporan VLSI

Melalui blok diagram diatas, maka sebuah RCA dapat dibentuk

menggunakan bahasa Verilog dengan pendekatan behavioral. Untuk

source code dari setiap modul dapat dilihat dibawah ini:

1. Half Adder (HA)

module half_adder(

input X,Y,

output S,C);

xor(S,X,Y);

and(C,X,Y);

endmodule

2. Full Adder (FA)

module full_adder(

input X,Y,Cin,

output S,Cout);

wire s1,c1,c2;

half_adder HA1(s1,c1,X,Y);

half_adder HA2(S,c2,s1,Cin);

or Out(Cout,c1,c2);

endmodule

3. Ripple Carry Adder

module RCA(

input [15:0] X,Y,

input Cin,

output [15:0] Sum,

output Cout);

wire c1, c2, c3, c4, c5, c6, c7, c8, c9, c10,

c11, c12, c13, c14, c15;

full_adder FA1(Sum[0],c1,X[0],Y[0],Cin),

FA2(Sum[1],c2,X[1],Y[1],c1),

FA3(Sum[2],c3,X[2],Y[2],c2),

Page 10: Laporan VLSI

FA4(Sum[3],c4,X[3],Y[3],c3),

FA5(Sum[4],c5,X[4],Y[4],c4),

FA6(Sum[5],c6,X[5],Y[5],c5),

FA7(Sum[6],c7,X[6],Y[6],c6),

FA8(Sum[7],c8,X[7],Y[7],c7),

FA9(Sum[8],c9,X[8],Y[8],c8),

FA10(Sum[9],c10,X[9],Y[9],c9),

FA11(Sum[10],c11,X[10],Y[10],c10),

FA12(Sum[11],c12,X[11],Y[11],c11),

FA13(Sum[12],c13,X[12],Y[12],c12),

FA14(Sum[13],c14,X[13],Y[13],c13),

FA15(Sum[14],c15,X[14],Y[14],c14),

FA16(Sum[15],Cout,X[15],Y[15],c15);

endmodule

Setelah Kode Verilog didesain, maka dikakukan langkah-langkah

sebagai berikut:

1. Kompilasi program

2. Debugging error yang terjadi

3. Simulasi

a. Silmulasi Timing dan fungsional

b. Logic Utilization

Hasil simulasi

1. Simulasi fungsional

Simulasi ini dilakukan untuk memeriksa apakah program yang

dibuat telah berjalan dengan benar dan valid

Gambar 11. Hasil simulasi Fungsional

Page 11: Laporan VLSI

Gambar diatas menunjukkan bahwa operasi penjumlahan yang

berjalan telah benar dan valid sacara logic dan fungsional.

2. Simulasi Timing

Pada simulasi timing, maka interval timing yang digunanakan

sebesar 100 ns, timing dengan nilai dibawah 100 ns akan

mengakibatkan delay yang cukup besar.

Gambar 12. Hasil simulasi Timing

Ripple carry adder ini menggunakan 32 logic elemen atau <1% dari

yang tersedia pada board yang digunakan dalam simulasi.

Sedangkan critical path adalah pin Sum[15] yang memiliki delay

terpanjang sebesar 19,44 ns

b. 16-bit Carry-Lookahead Adder (CLA)

Carry-Lookahead Adder merupakan suatu algoritma adder yang

cukup cepat. CLA ini diturunkann dari persamaan logika RCA

sehingga penyederhanaan ini membuat CLA bisa lebih cepat

dibanding RCA.

Si = Xi XOR Yi XOR Ci

Ci+1=XiYi + XiCi+YiCi

Ci+1=XiYi + Ci(Xi+Yi)

Ci+1=Gi +CiPi

Dengan:

Page 12: Laporan VLSI

Gi = XiYi

Pi = Xi + Yi

Dengan menggunakan manipulasi aljabar boolean maka dapat

diperoleh pola persamaan boolean sebagai berikut:

C1 = G0 + P0C0

C2 = G1 + P1G0 + P1P0C0

C3 = G2 + P2P1 + P2P1G0 + P2P1P0C0

C4 = G3 + P3P2 + P3P2P1 + P3P2P1G0 + P3P2P1P0C0

Carry-Lookahead Adder dapat dibentuk dengan menggunakan

persamaan boolean diatas yang disusun sehingga menjadi CLA.

Bagian bagian dari blok penyusun ini dapat dilihat pada gambar

dibawah ini:

Gambar 13. Struktur dari CLA

Gerbang logika yang ada dalam Carry-Lookahead Adder bisa

duraikan menjadi bagian perblok yang dapat dilihat pada gambar

dibawah ini:

Page 13: Laporan VLSI

Gambar 14, Dekomposisi CLA

Melalui blok diagram diatas, maka sebuah CLA dapat dibentuk

menggunakan bahasa Verilog dengan pendekatan behavioral. Untuk

source code dari setiap modul dapat dilihat dibawah ini:

1. Carry-Lookeahead Adder (CLA)

module CLA(

input [15:0] A,B,

input Cin,

output [15:0] S,

output Cout,PG,GG);

wire [15:0] G,P,c;

assign G = A & B; //Generate

assign P = A ^ B; //Propagate

assign c[0] = Cin;

assign c[1] = G[0] | (P[0] & c[0]);

assign c[2] = G[1] | (P[1] & G[0]) | (P[1] &

P[0] & c[0]);

Page 14: Laporan VLSI

.

.

assign c[15] = G[14]| (P[14]& G[13])|...

... & P[1] & P[0] & c[0]);

assign S = P ^ c;

assign PG = P[15] & P[14] & P[13]... & P[1]

& P[0];

assign GG = G[15]| (P[15]& G[14])... & P[1] &

G[0]);

endmodule

Sebagian besar dari kode ini tidak dituliskan karena sangat panjang

dan banyak. Setelah Kode Verilog didesain, maka dikakukan

langkah-langkah sebagai berikut:

1. Kompilasi program

2. Debugging error yang terjadi

3. Simulasi

a. Silmulasi Timing dan fungsional

b. Logic Utilization

Hasil simulasi

1. Simulasi fungsional

Simulasi ini dilakukan untuk memeriksa apakah program yang

dibuat telah berjalan dengan benar dan valid

Gambar 15.Hasil simulasi Fungsional dari CLA

Page 15: Laporan VLSI

Gambar diatas menunjukkan bahwa operasi penjumlahan yang

berjalan telah benar dan valid sacara logic dan fungsional.

2. Simulasi Timing

Pada simulasi timing, maka interval timing yang digunanakan

sebesar 100 ns, timing dengan nilai dibawah 100 ns akan

mengakibatkan delay yang cukup besar.

Gambar 16. Simulasi Timing dari CLA

Carry-Lookahead Adder ini menggunakan 99 logic elemen atau

2% dari yang tersedia pada board yang digunakan dalam

simulasi. Sedangkan critical path adalah pin dari Cin menuju pin

S[14] yang memiliki delay terpanjang sebesar 17,291 ns. Seperti

pada gambar dibawah ini.

Gambar 17. Summary Logic utilization dan Critical path

Page 16: Laporan VLSI

Setelah melihat kedua bentuk Adder baik RCA maupun CLA, maka dapat

dilihat bahwa pada kedua algoritma ini terdapat perbedaan yang

terlihat pada critical path atau delay terpanjang yang terjadi. Pada RCA,

delay yang terjadi adalah sebesar 19,44 ns, sedangkan pada CLA delay

yang terjadi sebesar 17,291 ns. Pada RCA, komponen logika yang

digunakan adalah sebesar 32, pada CLA sebesar 99 komponen. Secara

intuisi seharusnya CLA yang memiliki komponen paling banyak

memiliki delay yang lebih besar, ternyata sebaliknya. Hal ini terjadi

akibat algoritma dan struktur program yang berbeda. Walaupun

perbedaanya tidak terlalu mencolok, tapi pengurangan delay sekecil ini

sangat berarti dalam implementasi rangkaian yang kompleks.

c. 4-bit Kogge Stone Adder (KSA)

Kogge stone Adder atau shift and Add adder merupakan salah satu

algoritma penjumlahan yang paling cepat, hemat memori dan mudah

diimplementasikan. Kogge Stone Adder (KSA) menyelesaikan masalah

ripple Cin yang terjadi pada RCA dan critical path pada CLA. Pada KSA,

untuk melakukan penjumlahan, maka Ci+1 tidak perlu menunggu

keluaran Ci seerti pada RCA, sehingga akan mempercepat proses

penjumlahan. Untuk mengimplementasikan Kogge Stone Adder maka

dapat merujuk pada skema system dari kogge stone dibawah ini:

Gambar 18. Algoritma dari Kogge Stone Adder

Page 17: Laporan VLSI

Melalui blok diagram diatas, maka sebuah KSA dapat dibentuk

menggunakan bahasa Verilog dengan pendekatan behavioral. Untuk

source code dari setiap modul dapat dilihat dibawah ini:

//4-bit KS Adder

module KSA (A, B, Sum, Cin, Cout);

input [3:0] A, B;

output [4:0] Sum;

input Cin;

output Cout;

wire [3:0] Gi, Pi,

G_1, P_1,

G_2, P_2;

//level 1 Propagate

hijau level_0A(Cin, Pi[0], Gi[0], G_1[0]);

kuning level_1A(Gi[0], Pi[1], Gi[1], Pi[0],

G_1[1], P_1[1]);

kuning level_2A(Gi[1], Pi[2], Gi[2], Pi[1],

G_1[2], P_1[2]);

kuning level_3A(Gi[2], Pi[3], Gi[3], Pi[2],

G_1[3], P_1[3]);

//level 2 Generate

hijau level_1B(Cin, P_1[1], G_1[1], G_2[1]);

hijau level_2B(G_1[0], P_1[2], G_1[2],

G_2[2]);

kuning level_3B(G_1[1], P_1[3], G_1[3],

P_1[1], G_2[3], P_2[3]);

//level 3 Cout

hijau level_3C(Cin, P_2[3], G_2[3], Cout);

//persamaan masukan xor and

and_xor level_Z0(A[0], B[0], Pi[0], Gi[0]);

and_xor level_Z1(A[1], B[1], Pi[1], Gi[1]);

Page 18: Laporan VLSI

and_xor level_Z2(A[2], B[2], Pi[2], Gi[2]);

and_xor level_Z3(A[3], B[3], Pi[3], Gi[3]);

//Hasil

xor(Sum[0], Cin, Pi[0]);

xor(Sum[1], G_1[0], Pi[1]);

xor(Sum[2], G_2[1], Pi[2]);

xor(Sum[3], G_2[2], Pi[3]);

and(Sum[4], Cout, Cout);

endmodule

//I/O block module

module kuning(Gkj, Pik, Gik, Pkj, G, P);

input Gkj, Pik, Gik, Pkj;

output G, P;

wire Y;

and(Y, Gkj, Pik);

or(G, Gik, Y);

and(P, Pkj, Pik);

endmodule

module hijau(Gkj, Pik, Gik, G);

input Gkj, Pik, Gik;

output G;

wire Y;

and(Y, Gkj, Pik);

or(G, Y, Gik);

endmodule

module and_xor(a, b, p, g);

input a, b;

output p, g;

Page 19: Laporan VLSI

xor(p, a, b);

and(g, a, b);

endmodule

Setelah Kode Verilog didesain, maka dikakukan langkah-langkah

sebagai berikut:

1. Kompilasi program

2. Debugging error yang terjadi

3. Simulasi

a. Silmulasi Timing dan fungsional

b. Logic Utilization

Hasil simulasi

1. Simulasi fungsional

Simulasi ini dilakukan untuk memeriksa apakah program yang

dibuat telah berjalan dengan benar dan valid

Gambar 19. Simulasi Fungsional dari Kogge Stone Adder

Gambar diatas menunjukkan bahwa operasi penjumlahan yang

berjalan telah benar dan valid sacara logic dan fungsional.

Page 20: Laporan VLSI

2. Simulasi Timing

Pada simulasi timing, maka interval timing yang digunanakan

sebesar 100 ns, timing dengan nilai dibawah 100 ns akan

mengakibatkan delay yang cukup besar.

Gambar 20. Simulasi Timing dari Kogge Stone Adder

Dari hasil diatas, terlihat ada delay yang terjadi pada setiap

perhitungan. Jika timing yang digunakan ketat,maka delay yang

dihasilkan akan sangat besar. Pada rancangan KSA 4 bit ini, critical

path yang terjadi adalah dari pin B(1) menuju Cout sebesar 11,079

ns, sedangkan logic element yang digunkan adalah 12.

Gambar 21. Summary dari logic utilization dan critical

path

Page 21: Laporan VLSI

3. Multiplier dengan algoritma Booth Radix-2

Background

Rangkaian pengali atau multiplier dapat diimplementasikan dengan berbagai

algoritma dari yang sederhana hingga yang paling kompleks seperti Grid, Long

Multiplication, Lattice multiplication dan Booth. Algoritma yang digunakan akan

mempengaruhi kecepatan perhitungan yang dilakukan. Penggunaan algoritma

yang tepat akan menghemat hardware dan membuat perhitungan menjadi

efisien.

Pada dasarnya proses perkalian melibatkan 2 input angka M-Bit X dan N-Bit Y

dan menghasilkan MxN bit Z.

∑ (∑

)

Output Z dihitung dengan menambahkan produk parsial secara bersama-sama.

Implementasi yang sederhana membutuhkan adder sejumlah N-bit dan

membutuhkan siklus siklus M kali untuk menghasilkan output. Beberapa

algoritma lainnya telah dikembangkan untuk meningkatkan kecepatan dan

mengurangi konsumsi daya multiplier. Ada dua pendekatan yang digunakan

secara umum yaitu algoritma booth dan Wallace Tree compressor.

Booth menggunakanmekanisme yang lebih cepat pada pergeseran(shifting)

daripada menambah sehingga menciptakan algoritma yang cepat dan efisien.

Pada Algoritma Booth, terjadi 2 operasi yang paling penting yaitu shift dan check

2 bit LSB. Kemudian algoritma ini diterapkan pada kode pemrograma Verilog:

1. Modul Shift dan Check kondisi 2 bit terakhir

//Shift dan check 8 bit

//MD = Multiplicand

//NMD = Negative Multiplicand

Page 22: Laporan VLSI

//MR = Multiplier

//SR = Shift Registers

module chkshift(MD, NMD, MR, OUT);

input [8:0] MD;

input [8:0] NMD;

input [8:0] MR;

output [8:0] OUT;

reg signed [8:0] SR;

always @(MR)

//Memeriksa 4 kondisi untuk melakukan

prnjumlahan/pengurangan atau tidak

case(MR[1:0])

2'b00 : SR=MR;

2'b01 : SR=MR+MD;

2'b10 : SR=MR+NMD;

2'b11 : SR=MR;

endcase

assign OUT = SR>>>1;

endmodule

2. Modul Gabungan

module gabung(A, B, MD, NMD, MR);

input [3:0] A;

input [3:0] B;

output[8:0]MD;

output[8:0]NMD;

output[8:0]MR;

wire [3:0] nA;

wire [8:0] MD;

wire [8:0] NMD;

wire [8:0] MR;

assign nA = (~A) + 1'b1;

assign MD = {A,4'h0,1'b0};

assign NMD = {nA,4'h0,1'b0};

assign MR = {4'h0,r,1'b0};

endmodule

Page 23: Laporan VLSI

3. Modul Utama Algoritma Booth

module booth_m(X, Y, Z);

input [3:0] X;

input [3:0] Y;

output[7:0]Z;

wire [7:0] Z;

wire [8:0] MD;

wire [8:0] NMD;

wire signed [8:0] P0;

wire signed [8:0] P1;

wire signed [8:0] P2;

wire signed [8:0] P3;

wire signed [8:0] P4;

gabung(.m(X), .r(Y), .MD(MD), .NMD(NMD),

.MR(P0));

chkshift(.MD(MD), .NMD(NMD), .MR(P0), .OUT(P1));

chkshift(.MD(MD), .NMD(NMD), .MR(P1), .OUT(P2));

chkshift(.MD(MD), .NMD(NMD), .MR(P2), .OUT(P3));

chkshift(.MD(MD), .NMD(NMD), .MR(P3), .OUT(P4));

assign Z = P4[8:1];

endmodule

Setelah Kode Verilog didesain, maka dikakukan langkah-langkah

sebagai berikut:

4. Kompilasi program

5. Debugging error yang terjadi

6. Simulasi

3. Silmulasi Timing dan fungsional

4. Logic Utilization

Hasil simulasi

1. Simulasi fungsional

Simulasi ini dilakukan untuk memeriksa apakah program yang

dibuat telah berjalan dengan benar dan valid

Page 24: Laporan VLSI

Gambar 22. Hasil Simulasi Fungsional dari Booth Multiplier

Gambar diatas menunjukkan bahwa operasi perkalian baik

bilangan positif maupaun negatif yang berjalan telah benar dan

valid sacara logic dan fungsional.

2. Simulasi Timing

Pada simulasi timing, maka interval timing yang digunanakan

sebesar 100 ns, timing dengan nilai dibawah 100 ns akan

mengakibatkan delay yang cukup besar. Hasil yang diperoleh

adalah:

Gambar 23. Hasil Simulasi Timing

Booth multiplier ini menggunakan 50 logic elemen atau 1% dari

yang tersedia pada board yang digunakan dalam simulasi.

Sedangkan critical path adalah pin dari XR menuju pin Z[5] yang

memiliki delay terpanjang sebesar 18,474 ns. Seperti pada

gambar dibawah ini.

Page 25: Laporan VLSI

Gambar 24. Summary dari logic utilization

Setelah melakukan rancangan multiplier ini, maka dapat dilihat bahwa

pemilihan algoritma yang tepat akan sangat meminimalisasi delay dan

memaksimalkan kecepatan serta menghemat memori dan disipasi

daya.

Referensi

1. http://en.wikipedia.org/wiki/Booth_encoding

2. Digital logic, VHDL design zvonko vranesic