Anda di halaman 1dari 9

MODUL 3 Rangkaian Logika Kombinasional

Brian Radhitya (13213102)


Asisten: SPL Aditya
Tanggal Percobaan: 22/10/2014
EL2102-Praktikum Sistem Digital

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
Abstrak
Dalam modul kali ini total tiga percobaan yang dikerjakan.
Percobaan yang pertama adalah mengenai pembuatan
rangkaian sederhana. Dalam percobaan tersebut dibuat
rangkaian sederhana dengan vhdl kemudian dilakukan dua
macam simulasi yaitu, functional dan timing simulation.
Percobaan kedua membuat rangkaian BCD-to-7-segment
juga dengan pendekatan VHDL. Dalam percobaan ini
akan dianalisis waktu tunda paling lama (worst case delay)
dari rangkaian BCD dengan memanfaatkan timing
simulation. Dalam percobaan ini juga dilakukan functional
simulation dan pemrograman ke dalam FPGA. Percobaan
terakhir berkaitan dengan perancangan BCD-to-7-segment
dengan level abstraksi behavioral. Dalam percobaan ini
dibuktikan bahwa simulasi timing lebih memodelkan secara
akurat kondisi nyata dari rangkaian, sedangkan simulasi
lebih baik dalam hal menunjukkan hubunga input dan
output. Selain iut, baik menggunakan level abstraski
struktural maupun level abstraksi behavioral, rangkaian
yang dibuat menghasilkan keluaran yang sama, namun level
abstraksi behavioral lebih efisien ketika digunakan untuk
merancang rangkaian yang kompleks.
Kata kunci: BCD-to-7-segment, worst case delay,
VHDL, simulasi .
1.

PENDAHULUAN

Rangkaian logika kombinasional merupakan


rangkaian logika yang keluarannya hanya
bergantung murni pada inputnya saja, tanpa
bergantung pada keadaan input sebelumnya.
Semua rangkaian logika yang telah dianalisis pada
percobaan-percobaan
sebelumnya
termasuk
rangkaian logika kombinasional, seperti full adder.
Pada modul sebelumnya, telah dilakukan
percobaan untuk memverifikasi kebenaran fungsi
rangkaian
yang
telah
dibuat,
tanpa
memperhitungkan salah satu faktor yang harus
diperhitungkan dalam merancang rangkaian
logika, yaitu propagation delay. Pada modul ini
akan dilakukan simulasi untuk mencari worst case
delay dari rangkaian BCD-to-7-segment. Selain itu
juga akan dilakukan perancangan rangkaian
logika dengan dua macam level abstraksi, yaitu
level abstraksi struktural, dan level abstraksi
behavioral.

Pada laporan ini akan dipaparkan teori dan rumus


yang mendasari percobaan, metodologi praktkum,
hasil percobaan beserta analisisnya, serta
kesimpulan berdasarkan analisis yang telah dibuat.

2.

STUDI PUSTAKA

Pada bagian ini akan dijelaskan mengenai teori


yang mendasari modul kali ini.

2.1

RANGKAIAN KOMBINASIONAL

Salah satu jenis rangkaian logika adalah rangkaian


logika kombinasional. Rangkaian kombinasional
adalah rangkaian yang diimplementasikan dengan
persamaan boolean yang keluarannya adalah
murni berdasarkan keadaan masukan saat ini,
artinya tanpa bergantung keadaan masukan
sebelumnya,[1]. Pada percobaan ini, rangkaian
kombinasional yang digunakan adalah rangkaian
sederhana dan rangkaian BCD-to-7-segment.

2.2

WORST CASE DELAY

Dalam merancang rangkaian logika, sangat


penting untuk mengetahui delay yang akan
dimiliki rangkaian yang kita rancang. Setiap
gerbang logika tentu memiliki delay tersendiri,
namun delay terlama yang dimiliki gate tertentu
lah yang paling diperhatikan. Tentunya sangat
berguna untuk mengetahui berapa delay yang
akan dimiliki rangkaian yang kita rancang. Untuk
mengetahuinya dilakukan simulasi dengan
bantuan software.

2.3

RANGKAIAN SEDERHANA

Rangkaian sederhana dalam percobaan ini dapat


digambarkan secara skematik pada Gambar 2-1,
meskipun cara yang digunakan dalam percobaan
ini adalah dengan VHDL.

Gambar 2-1 Skematik Rangkaian


Laporan Praktikum - LaboratoriumSederhana
Dasar Teknik Elektro STEI ITB

Dengan mengacu pada Gambar 2-1 dapat dibuat


tabel kebenarannya. Berikut ini adalah tabel
kebenaran dari rangkaian sederhana.
Tabel 2-1 Tabel Kebenaran Rangkaian Sederhana
CLK

GPIO[15]

GPIO[16]

2.4

BCD-TO-7-SEGMENT

Dengan menggunakan pendekatan K-maps, dapat


dibuat persamaan boolean setiap bagian 7segment. Persamaan-persamaan boolean tersebut
adalah sebagai berikut:
a = D1 + D3 + D2D0 + (D2)(D0)

Gambar 2-2 7-SEGMENT


BCD-to-7-segment
merupakan
rangkaian
kombinasional yang mengkonversi suatu nilai
desimal terkode biner ke pola segment yang
sesuai pada display 7-Segment,[2]. Pada
percobaan ini, digunakan empat masukan yang
memiliki jangkauan 0-9. Nilai 10-15 akan
diperdulikan sebagai dont care karena tidak akan
mempengaruhi desain rangkaian. Gambar 2-2
mengilustrasikan 7-segment yang digunakan
dalam percobaan ini. Tabel 2-2 menunjukkan tabel
kebenaran dari rangkaian BCD-to-7-segment. D3
menunjukkan MSB sedangkan D0 menunjukkan
LSB. Huruf pada tabel merepresentasikan bagian
7-segment seperti yang tergambar pada Gambar 22.
Tabel 2-2 Tabel Kebenaran BCD-to-7-Segment
D3

D2

D1

D0

b = (D2) + (D1)(D0) + D1D0


c = (D1) + D0 + D2
d = D3 + D1(D0) + (D2)D1 + D2(D1)D0 +
(D2)(D0)
e = (D2)(D0) + D1(D0)
f

= D3 + (D1)(D0) + D2(D1) + D2(D0)

g = D3 + D2(D1) + D1(D0) + (D2)D1

2.5

LEVEL ABSTRAKSI

Dalam modul kali ini ada dua level abstraksi yang


digunakan dalam merancang BCD-to-7-segment.
Level abstraksi yang pertama adalah level
abstraksi struktural. Pada abstraksi ini, fungsi
boolean diimplementasikan dengan fungsi
gerbang logika, baik secara skematik maupun
VHDL. Level abstraksi yang kedua adalah level
abstraksi behavioral. Level abstraksi ini lebih
tinggi dari yang pertama, artinya level abstraksi
ini lebih dekat dengan cara manusia berpikir,[2].
Pada level abstraksi ini, kita tidak perlu mencari
persamaan logika untuk setiap variabel. User
hanya perlu menentukan bentuk keluaran untuk
setiap input. Proses merubah menjadi persamaan
boolean, meminimisasi, dan membuat rangkaian
gerbang logikanya dikerjakan oleh software,[2].

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

3.

METODOLOGI

DIVOUT: buffer BIT);

Dalam modul ini, alat dan komponen yang


digunakan adalah komputer yang telah terinstal
software Altera Quartus dan Modelsim, FPGA
development board tipe ALTERA DE1, osiloskop,
dan kabel downloader USB-Blaster. Langkah
percobaan-percobaan akan dijelaskan pada
subbab di bawah.

3.1

MEMBUAT RANGKAIAN SEDERHANA

Berikut ini adalah


percobaan pertama:

langkah-langkah

dalam

END CLOCKDIV;
ARCHITECTURE behavioural OF CLOCKDIV
IS
BEGIN
PROCESS(CLK)
VARIABLE count: integer:=0;
CONSTANT div: integer:=24;
BEGIN
IF CLK'EVENT AND CLK='1' THEN

a. Membuat Direktori Baru


1.

Membuat direktori dengan nama Modul3


pada direktori PraktikumSisDig.

2.

Di dalam direktori Modul3 dibuat dua


direktori baru dengan nama sederhana
dan bcd.

IF(count<div) THEN
count:=count+1;
IF(DIVOUT='0') THEN
DIVOUT<='0';
ELSIF(DIVOUT='1') THEN
DIVOUT<='1';
END IF;
ELSE

b. Membuat Projek Baru Menggunakan Quartus


II 9.0 sp2 Web Edition
1.

Menjalankan program Quartus II 9.0 sp2


Web Edition.

2.

Di dalam program, klik File -> New


Project Wizard kemudian klik Next
setelah muncul jendela Introduction.

3.

Setelah muncul jendela baru, klik tombol


... pada kolom paling atas kemudian
cari folder sederhana yang telah dibuat
sebelumnya. Setelah itu klik Open.

4.

Pada
kolom
berikutnya
ketikkan
sederhana untuk nama proyek.

5.

Klik Next, setelah muncul jendela baru


klik Next kembali.

6.

Setelah muncul jendela baru, pilih Cylone


II pada daftar Family kemudian pilih
EP2C20F484C7 pada bagian device. Klik
Finish.

7.

Setelah
itu
clockdiv.vhd.

8.

Mengetikkan kode vhdl seperti pada


Gambar 3-2.

Di bawah ini
clockdiv.vhd.

adalah

men-download

source

code

file

dari

IF(DIVOUT='0') THEN
DIVOUT<='1';
ELSIF(DIVOUT='1') THEN
DIVOUT<='0';
END IF;
count:=0;
END IF;
END IF;
END PROCESS;
END behavioural;
Di bawah ini adalah source code dari
sederhana.vhd.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY sederhana IS
PORT(CLK : IN BIT; GPIO : OUT
BIT_VECTOR(16 DOWNTO
15);OUTCLK : BUFFER BIT);
END sederhana;
ARCHITECTURE behavioural OF sederhana
IS
COMPONENT CLOCKDIV IS

LIBRARY IEEE;

PORT(CLK: IN BIT;

USE IEEE.STD_LOGIC_1164.ALL;

DIVOUT: BUFFER BIT);


END COMPONENT;

ENTITY CLOCKDIV IS PORT (


CLK: IN STD_LOGIC;

BEGIN
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

CLOCK:CLOCKDIV PORT MAP (CLK => CLK,


DIVOUT => OUTCLK);

4.

Klik Next. Setelah muncul jendela baru


klik Next kembali.

GPIO(15) <= (NOT OUTCLK) NAND


OUTCLK;

5.

Pada bagian Family pilih Cyclone II dan


pada bagian Available Device pilih
EP2C20F484C7.

6.

Klik finish.

GPIO(16) <= NOT OUTCLK;


END behavioural;
c. Pembuatan Netlist untuk Simulasi

b. Membuat Desain VHDL

1.

Pilih Processing -> Simulator Tool ->


Simulation Mode -> Functional.

2.

Klik Generate
Netlist.

3.

Klik check box Overwrite Simulation


input file with simulation result.

4.

Klik Open pada bagian bawah jendela


Simulator Tool.

5.

Setelah muncul jendela baru, klik kanan


pada bagian kolom Name jendela
tersebut dan pilih Insert -> Insert Node or
Bus -> Node Finder -> Filter -> Pins: all ->
List -> klik tombol >>.

6.

Klik Detach Windows lalu simpan file


simulasi
dengan
nama
SimulationSederhana.vwf.

7.

Functional

Simulation

Pada kolom Simulation Input di


Simulator Tool pilih Simulation
Sederhana.vwf sebagai input simulasi.

d. Membuat Waveform Masukan


1.

Buka SimulationSederhana.vwf dengan


File -> Open atau SimulatorTool -> Open

2.

Klik kiri pada port masukan CLK pada


kolom paling kiri file tersebut.

3.

Pilih Overwrite Clock kemudian atur


perioda yang sesuai pada bagian Time
period.

4.

Setelah itu pada jendela Simulator Tool


pilih tombol Start.

e. Melakukan Timing Simulation


1.

Membuka
SimulatorTool
kemudian
mengubah Simulation Mode menjadi
Timing => Klik Start.

3.2 MEMBUAT RANGKAIAN BCD

1.

Membuat dua file vhdl dengan text editor.

2.

File pertama bernama bcd.vhd dan file


kedua bernama bcd7seg.vhd.

3.

Setelah selesai simpan file.

4.

File pertama dimasukkan ke dalam project


bcd.

Pada source code bcd7seg, fungsi masing-masing


bagian 7-segment diturunkan menggunakan Kmaps. Namun, fungsi yang diturunkan tidak sama
dengan
fungsi
yang
diimplementasi
menggunakan VHDL. Pada source code, semua
fungsi diberi NOT karena FPGA yang
digunakan pada percobaan kali ini bersifat active
low.
Di bawah ini
bcd7seg.vhd.

adalah

source

code

dari

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY bcd7seg IS
PORT ( D3, D2, D1, D0 : IN BIT;
A, B, C, D, E, F, G : OUT BIT);
END bcd7seg;
ARCHITECTURE behavioural OF bcd7seg
IS
BEGIN
A <= NOT (D1 OR D3 OR (D2 AND D0)
OR ((NOT D2) AND (NOT D0)));
B <= NOT ((NOT D2) OR ((NOT D1) AND
(NOT D0)) OR (D1 AND D0));
C <= NOT ((NOT D1) OR D0 OR D2);
D <= NOT (D3 OR (D1 AND (NOT D0))
OR ((NOT D2) AND D1) OR (D2 AND (NOT
D1) AND D0) OR ((NOT D2) AND (NOT
D0)));
E <= NOT (((NOT D2) AND (NOT D0))
OR (D1 AND (NOT D0)));

a. Membuat Projek Baru


1.

Klik File -> New Project Wizard

2.

Buka directory dan cari folder bcd.

3.

Beri nama project dan top level entity :


bcd.

F <= NOT (D3 OR ((NOT D1) AND (NOT


D0)) OR (D2 AND (NOT D1)) OR (D2 AND
(NOT D0)));
G <= NOT (D3 OR (D2 AND (NOT D1))
OR (D1 AND (NOT D0)) OR ((NOT D2) AND
D1));

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

END behavioural;

3.

Mencari nilai set, yaitu set nilai ketika


terjadi perubahan pada keluaran yang
memiliki delay maksimum pada saat
masukan yang memiliki delay maksimum
berubah.

4.

Menentukan delay melalui Simulation


Report.

Dibawah ini adalah source code dari bcd.vhd.


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY bcd IS

f. Memprogram ke FPGA

PORT (SW1 : IN BIT_VECTOR(3 DOWNTO 0);

1.

Processing -> Start -> Start Analysis &


Synthesis.

END bcd;

2.

Pilih Assignment -> Pin Planner.

ARCHITECTURE test OF bcd IS

3.

Klik Direction untuk mengurutkan pin.

COMPONENT bcd7seg IS

4.

Pada kolom Location klik kiri dua kali


kolom yang sebaris dengan port yang
ditinjau untuk memilih kaki pada FPGA
berhubungan dengan port tersebut.

5.

Siapkan board FPGA dan pasang kabel


FPGA.

6.

Klik Tools -> Programmer -> Hardware


Setup -> Add Hardware -> klik 2 kali
pada USB-Blaster.

HEX1 : OUT BIT_VECTOR(6 DOWNTO 0));

PORT ( D3, D2, D1, D0 : IN BIT;


A, B, C, D, E, F, G

: OUT BIT);

END COMPONENT;
BEGIN
test : bcd7seg PORT MAP(
D3

=> SW1(3),

D2

=> SW1(2),

7.

Pada bagian Mode pilih JTAG.

D1

=> SW1(1),

8.

Cari file bcd.sof kemudian klik Open.

D0

=> SW1(0),

9.

=> HEX1(0),

=> HEX1(1),

Sorot nama file, lakukan checklist pada


kolom Program/Configure, kemudin
klik tombol Start. FPGA telah
terprogram.

=> HEX1(2),

=> HEX1(3),

=> HEX1(4),

=> HEX1(5),

=> HEX1(6));

10. Cek
kebenaran
program
memainkan empat switch FPGA.

dengan

3.3 MERANCANG BCD 7SEG DENGAN LEVEL


ABSTRAKSI BEHAVIORAL
1.

Membuat folder baru dan projek baru.

END test;

2.

Membuat file DUT.

c. Pembuatan Netlist dan Simulasi Fungsional

3.

Membuat file Testbench.

4.

Membuat file sim.do.

5.

Pada jendela transcript mengetikkan do


dim.do untuk menjalankan simulasi.

6.

Mengimplementasikan ke dalam FPGA


seperti pada langkah f bagian 3.2.

1.

Langkah yang sama dilakukan seperti


pada bagian 3.1 langkah c.

d. Simulasi Timing
1.

Langkah yang sama dilakukan seperti


pada bagian 3.1 langkah d.

Di bawah ini adalah source code dari file DUT.

e. Simulasi Worst Case Delay


1.

2.

Memeriksa bagian Timing Analyzer


Summary dan tpd melalui Processing
=> Compilation Report.
Menentukan pasangan kaki keluaranmasukan yang memiliki delay maksimum.

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;
ENTITY bcd IS

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

PORT(SW
: IN STD_LOGIC_VECTOR(3
DOWNTO 0); HEX1 : OUT
STD_LOGIC_VECTOR(1 TO 7));
END bcd;

WHEN SEMBILAN
<= NOT "1111011";

=> HEX1

WHEN OTHERS
<= NOT "0000000";

=> HEX1

ARCHITECTURE behavioural OF bcd IS

END CASE;

CONSTANT NOL: STD_LOGIC_VECTOR(3


DOWNTO 0) := "0000";

END PROCESS;
END behavioural;

CONSTANT SATU: STD_LOGIC_VECTOR(3


DOWNTO 0) := "0001";

Di bawah ini adalah source code dari file


testbench.

CONSTANT DUA: STD_LOGIC_VECTOR(3


DOWNTO 0) := "0010";

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

CONSTANT TIGA: STD_LOGIC_VECTOR(3


DOWNTO 0) := "0011";

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

CONSTANT EMPAT: STD_LOGIC_VECTOR(3


DOWNTO 0) := "0100";
CONSTANT LIMA: STD_LOGIC_VECTOR(3
DOWNTO 0) := "0101";

ENTITY tb_bcd IS
END tb_bcd;

CONSTANT ENAM: STD_LOGIC_VECTOR(3


DOWNTO 0) := "0110";

ARCHITECTURE behavioural OF tb_bcd IS

CONSTANT TUJUH: STD_LOGIC_VECTOR(3


DOWNTO 0) := "0111";
CONSTANT DELAPAN:
STD_LOGIC_VECTOR(3 DOWNTO 0) :=
"1000";

SIGNAL clk

: STD_LOGIC := '0';

SIGNAL SW
: STD_LOGIC_VECTOR(3
DOWNTO 0) := "0000";
SIGNAL HEX1 : STD_LOGIC_VECTOR(1 TO
7);

CONSTANT SEMBILAN:
STD_LOGIC_VECTOR(3 DOWNTO 0) :=
"1001";

COMPONENT bcd IS

BEGIN

PORT(SW
: IN
STD_LOGIC_VECTOR(3 DOWNTO 0);

PROCESS(SW)

HEX1 : OUT
STD_LOGIC_VECTOR(1 TO 7));

BEGIN
CASE SW IS
WHEN NOL
<= NOT "1111110";

=> HEX1

WHEN SATU
<= NOT "0110000";

=> HEX1

WHEN DUA
<= NOT "1101101";

=> HEX1

WHEN TIGA
<= NOT "1111001";

=> HEX1

WHEN EMPAT
<= NOT "0110011";

=> HEX1

WHEN LIMA
<= NOT "1011011";

=> HEX1

WHEN ENAM
<= NOT "1011111";

=> HEX1

WHEN TUJUH
<= NOT "1110000";

=> HEX1

WHEN DELAPAN
<= NOT "1111111";

=> HEX1

END COMPONENT;
BEGIN
dut: bcd PORT MAP(SW => SW,
HEX1=>HEX1);
clock: PROCESS
BEGIN
WAIT FOR 50 ps;clk<= not clk;
END PROCESS clock;
increment: PROCESS(clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN
SW<=SW + "0001";
END IF;
END PROCESS;
END behavioural;
Di bawah ini adalah source code dari file sim.do.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

onbreak {resume}
if [file exist work] {
vdel all
}
vlib work
vcom bcd.vhdl
add wave sim:/bcd/*
force -freeze sim:/bcd/SW(3) 1 0, 0
{200 ps} -r 400
Gambar 4-2 Simulasi Timing
Rangkaian Sederhana

force -freeze sim:/bcd/SW(2) 1 0, 0


{100 ps} -r 200
force -freeze sim:/bcd/SW(1) 1 0, 0
{50 ps} -r 100
force -freeze sim:/bcd/SW(0) 1 0, 0
{25 ps} -r 50

Dari Gambar 4-2, dapat dilihat bahwa terjadi


delay sebesar 248,301ns. Dengan membandingkan
Gambar 4-1 dan Gambar 4-2, dapat disimpulkan
bahwa delay yang sebenarnya adalah sebesar:

4.

Delay GPOI[16] = 248,301 240 = 8,301ns.

HASIL DAN ANALISIS

Pada bagian ini akan dijelaskan hasil percobaan


dan analisis dari hasil percobaan tersebut.

4.1

MEMBUAT RANGKAIAN SEDERHANA

Pada percobaan ini dilakukan perancangan


rangkaian sederhana dengan VHDL. Source code
VHDL seperti yang tertera pada metodologi.
Setelah source code dibuat dilakukan simulasi.
Simulasi yang pertama adalah simulasi fungsional.
Berikut ini adalah hasil simulasi fungsional.

Dengan mengacu pada bagian studi pustaka,


dapat dilihat bahwa keluaran pada Gambar 4-1,
GPIO[15] dan GPIO[16], sesuai dengan tabel
kebenaran. Ini berarti rangkaian sederhana yang
sudah dirangkai telah bekerja dengan sesuai.
Simulasi fungsional tidak memperhitungkan
delay gate dalam rangkaian, sedangkan simulasi
timing memperhitungkannya.
Simulasi dengan menggunakan timing tentunya
lebih memodelkan secara akurat kondisi nyata
rangkaian yang kita rancang karena simulasi
timing memperhitungkan delay gate yang kita
gunakan. Simulasi fungsional hanya berguna
untuk
Delay tersebut adalah delay perubahan nilai dari 1
menuju 0. Ketika membandingkan delay
perubahan nilai dari 0 menuju satu, hasil yang
sama pun didapatkan. Delay ini adalah delay
yang dimiliki NOT gate. Jika dilihat dari referensi,
NOT gate memiki delay minimal 3ns dan
maksimal 10ns. Artinya, hasil ini masih dapat
diterima.

Gambar 4-1 Simulasi Fungsional


Rangkaian Sederhana

4.2

Dari Gambar 4-1 dapat dilihat bahwa clockdiv


membuat keluaran memiliki delay sebesar 240ns.
Hasil ini akan digunakan untuk membandingkan
dengan hasil simulasi timing. Di bawah ini adalah
hasil simulasi timing.

MEMBUAT RANGKAIAN BCD

Pada percobaan ini dilakukan perancangan


rangkaian BCD-to-7-segment dengan VHDL.
Source code rangkaian ini seperti yang tertera
pada metodologi. Setelah source code berhasil
dibuat dilakukan simulasi. Simulasi yang pertama
adalah simulasi fungsional. Berikut ini adalah
hasil siulasi fungsional.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

sedangkan HEX1[3] merepresentasikan keluaran


D.
Dengan melihat pada hasil simulasi fungsional
Gambar 4-3, dapat ditentukan nilai set, yaitu nilai
yang menyebabkan perubahan pada keluaran D
ketika hanya masukan D3 yang berubah. Nilai set
yang didapat adalah (0,0,1) dan (1,0,0). Ketika
dilakukan pengetesan, ternyata didapat kedua
nilai set tersebut menyebabkan worst case delay,
artinya delay kedua nilai set tersebut sama.
Artinya kedua nilai set tersebut menyebabkan
worst case delay. Besar delay-nya adalah 12,401ns.

Gambar 4-3 Simulasi Fungsional


BCD-to-7-Segment
Gambar 4-3 menunjukkan hasil yang sesuai
dengan referensi pada studi pustaka. Ini
menunjukkan bahwa rangkaian yang telah dibuat
telah bekerja sesuai dengan yang diharapkan.
Berikutnya dilakukan simulasi timing. Di bawah
ini adalah hasil yang didapatkan.

Ketika program diimplementasikan ke FPGA,


setelah memainkan keempat input dengan semua
kombinasi ternyata hasilnya sesuai dengan tabel
kebenaran dalam referensi pada studi pustaka.
Artinya program telah berjalan sesuai dengan
yang diharapkan.
Berikut ini adalah salah satu keluaran pada FPGA.
Kombinasi input dalam keluaran Gambar 4-5
adalah 0100, artinya menampilkan angka 4.
Karena dalam rancangan VHDL semua fungsi
diberi NOT, maka implementasi pada FPGA
menjadi active high (sebenarnya LED 7-segment
FPGA bekerja dengan active low). Dengn cara ini
pengetesan dalam FPGA menjadi lebih mudah.

Gambar 4-4 Simulasi Timing BCD-to7-Segment


Secara visual kita dapat melihat perbedaan
mendasar antara simulasi fungsional dan simulasi
timing. Pada Gambar 4-4, simulasi timing
menunjukkan delay pada keluaran.

Gambar 4-6 Keluaran FPGA

4.3

Gambar 4-5 Compilation Report


Pada Gambar 4-5, dapat dilihat bahwa worst case
delay
adalah
sebesar
12,401ns
dengan
MasukanDelay adalah SW1[3] dan KeluaranDelay
adalah HEX1[3]. Dalam rancangan rangkaian,
SW1[3]
merepresentasikan
masukan
D3,

MERANCANG BCD 7SEG DENGAN


LEVEL ABSTRAKSI BEHAVIORAL

Pada bagian ini, percobaan yang dilakukan


sebenarnya sama dengan 4.2, namun ada sedikit
perbedaan pada level abstraksi pembuatan
rancangan. Pada percobaan kali ini dibuat
rangkaian BCD-to-7-segment dengan VHDL
dengan level abstraksi behavioral. Artinya pada
pembuatan source code, hanya dibuat setiap
bentuk keluaran untuk setiap kombinasi input.
Tidak dituliskan bagaimana persamaan boolean
maupun pembuatan rangkaian logikanya. Source
code dari rancangan ini seperti yang ditunjukkan

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

pada metodologi. Setelah source code dibuat


dilakukan simulasi dengan Modelsim. Berikut ini
adalah hasil simulasi.

kita tidak dapat mengetahui setiap detail dari


rancangan sehingga kita hanya dapat mengetahui
input dan outputnya saja tanpa mengetahui fungsi
yang memetakan setiap input pada output.

5.

Gambar 4-7 Hasil Simulasi Modelsim


Ketika dicek satu-satu hasil simulasi, keluarannya
sama persis dengan tabel kebenaran seperti yang
tertera pada referensi di bagian studi pustaka.
Pada proses simulasi program digunakan
testbench untuk menghasilkan semua kombinasi
input. Selain itu proses simulasi juga dibantu
dengan command khusus yang dibuat, yaitu
dengan file yang bernama sim.do. Ketika
diketikkan do sim.do pada jendela transcript,
hasil simulasi diatas pun dihasilkan. Source code
program BCD-to-7-segment, testbench dan sim.do
ditunjukkan pada bagian metodologi. Seperti pada
percobaan sebelumnya, agar FPGA bekerja secara
active high, pada source code DUT diberi NOT
pada keluaran. Dengan begitu pengetesan pada
FPGA menjadi lebih mudah dimengerti. Setelah
diimplementasikan pada FPGA, dengan level
abstraksi ini pun keluaran FPGA sesuai dengan
tabel kebenaran pada referensi yang tertera pada
bagian studi pustaka. Artinya meskipun dibuat
dengan level abstraksi yang berbeda, hasil yang
ditunjukkan sama persis dan sesuai dengan
referensi.
Berdasarkan percobaan ini, dapat disimpulkan
bahwa kedua level abstraksi memiliki kelebihan
dan kekurangan. Dengan level abstraksi struktural
kita tidak perlu menuliskan keluaran program.
Jika program yang dibuat memiliki keluaran yang
banyak, hal ini akan menjadi lebih efisien. Selain
itu dengan cara ini kita dapat mengetahui dengan
jelas detail program kita sehingga analisis
rancangan dapat dilakukan dengan lebih mudah.
Namun, kelemahan level abstraksi struktural
adalah kita harus menuliskan detail setiap fungsi.
Jika rancangan yang dibuat sangat kompleks, cara
ini sangat tidak efektif dan dapat menyebabkan
meningkatnya kemungkinan terjadinya human
error.
Dengan level abstraksi behavioral, kita tidak perlu
menuliskan setiap fungsi sehingga proses
perancangan menjadi lebih mudah. Cara ini
sangat berguna jika kita sedang merancang
rangkaian yang kompleks. Namun dengan cara ini

KESIMPULAN

Dalam percobaan ini telah dilakukan 2 proses


analisis yang utama yaitu dengan melakukan
simulasi fungsional dan simulasi timing. Dengan
membandingkan hasil kedua simulasi tersebut
dapat disimpulkan bahwa simulasi dengan
simulasi fungsional hanya menghasilkan keluaran
berdasarkan dari semua kemungkinan input yang
ada sedangkan dengan simulasi timing kita dapat
mengetahui delay yang terjadi pada saat program
berjalan. Dengan mengetahui hal tersebut
tentunya simulasi timing lebih memodelkan
secara akurat kondisi nyata dari rangkaian yang
telah dirancang. Namun simulasi fungsional lebih
unggul dalam hal memberikan informasi
mengenai hubungan langsung antara keluaran
dan masukan karena dalam simulasi timing
keluaran telah bergeser karena delay yang
dihasilkan, sehingga sulit untuk melihat
hubungannya. Dalam percobaan pertama delay
rangkaian sederhana adalah 8,301ns, yang didapat
dari membandingan hasil simulasi fungsional dan
simulasi timing.
Pada percobaan kedua didapat worst case delay
sebesar 12,401ns. Hasil tersebut didapat dengan
melihat Compilation Report dari simulasi timing.
Nilai set yang didapat adalah (0,0,1) dan (1,0,0).
Pada percobaan ini juga telah ditunjukkan bahwa
ketika program diimplementasikan pada FPGA,
hasil keluaran sesuai dengan referensi.
Pada percobaan ketiga didapat hasil yang serupa
dengan percobaan kedua. Dari hasil percobaan
ketiga dapat disimpulkan bahwa level abstraksi
struktural dan behavioral menghasilkan keluaran
yang sama dan sesuai dengan yang diharapkan.
Level abstraksi struktural sangat tidak efisien
ketika digunakan untuk merancang rangkaian
yang kompleks, sedangkan level abstraksi
behavioral sangat cocok. Dengan level abstraksi
behavioral kita hanya menuliskan keluaran untuk
setiap input dan tidak perlu menuliskan fungsinya.

DAFTAR PUSTAKA
[1]

http://en.wikipedia.org/wiki/Combinational
_logic, 21 Oktober 2014, pukul 20.59 WIB

[2]

Mervin T. Hutabarat, Praktikum Sistem Digital,


Laboratorium Dasar Teknik Elektro, ITB,
2014.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB