Anda di halaman 1dari 188

LAPORAN PRAKTIKUM

SISTEM DIGITAL LANJUT

DISUSUN OLEH :

NAMA : Irgantara Arda Pratama


NIM : 21120117140015
KELOMPOK : 17

LABORATORIUM SISTEM TERTANAM DAN ROBOTIKA


DEPARTEMEN TEKNIK KOMPUTER
FAKULTAS TEKNIK
UNIVERSITAS DIPONEGORO
SEMARANG
2019
LEMBAR PENGESAHAN

ii
iii
KATA PENGANTAR

Puji syukur hanya bagi Allah SWT yang telah memberikan rahmat, nikmat,
kesempatan, hidayah-Nya kepada penulis sehingga dapat menyelesaikan Penulisan
Laporan Praktikum Sistem Digital Lanjut dengan lancar tanpa kendala apapun.
Laporan praktikum Sistem Digital Lanjut ini diharapkan mampu untuk
membantu kita dalam mempelajari dan memahami segala sesuatu yang berkaitan
dengan Sistem Digital Lanjut. Sehingga kita dapat mengimplementasikan ilmu yang
kita peroleh di kemudian hari. Dengan disusunnya laporan ini, tidak lupa penyusun
menyampaikan terimakasih yang tak terhingga kepada pihak-pihak yang membantu
dalam penulisan laporan ini, khususnya :
1. Allah SWT, yang telah melimpahkan rahmat-Nya,
2. Kedua orang tua, yang selalu mendukung dan mendoakan,
3. Bapak Agung Budi Prasetijo, ST, M.IT, Ph.D. selaku dosen pengampu mata
kuliah Sistem Digital Lanjut,
4. Saudara Nur Kholid, selaku coordinator praktikum Sistem Digital Lanjut,
5. Seluruh asisten yang telah membimbing saya dalam praktikum.

Semoga laporan ini dapat bermanfaat bagi yang membacanyan. Kritik dan sara
sangat diterima demi lebih baiknya laporan ini.

Semarang, 20 Mei 2019

Irgantara Arda Pratama


21120117140015

iv
DAFTAR ISI

HALAMAN JUDUL................................................................................................i
LEMBAR PENGESAHAN.....................................................................................ii
KATA PENGANTAR............................................................................................iv
DAFTAR ISI............................................................................................................v
DAFTAR GAMBAR.............................................................................................vii
DAFTAR TABEL................................................................................................xiii
ABSTRAK............................................................................................................xiv
BAB 1......................................................................................................................1
PENDAHULUAN...................................................................................................1
1.1 Latar Belakang..........................................................................................1
1.2 Tujuan Praktikum......................................................................................1
1.3 Batasan Masalah........................................................................................1
1.4 Metode Penulisan......................................................................................2
1.5 Sistematika Penulisan................................................................................2
BAB II......................................................................................................................4
MULTIPLEKSER DAN EKSPANSI SHANNON.................................................4
2.1 Tujuan........................................................................................................4
2.2 Alat Dan Bahan.........................................................................................5
2.3 Dasar Teori................................................................................................6
2.4 Langkah Kerja.........................................................................................10
2.5 Analisa Perilaku Sistem...........................................................................19
2.6 Kesimpulan..............................................................................................32
BAB III..................................................................................................................33
ENKODER, DEKODER DAN DEMULTIPLEKSER.........................................33
3.1 Tujuan......................................................................................................33
3.2 Alat dan bahan.........................................................................................34
3.3 Dasar Teori..............................................................................................36

v
3.4 Langkah Kerja.........................................................................................40
3.5 Analisa Perilaku Sistem...........................................................................56
3.6 Kesimpulan..............................................................................................68
BAB IV..................................................................................................................69
DECODER TO 7-SEGMENT (HDL)...................................................................69
4.1 Tujuan......................................................................................................69
4.2 Alat dan Bahan........................................................................................70
4.3 Dasar Teori..............................................................................................72
4.4 Langkah Kerja.........................................................................................77
4.5 Analisa Perilaku Sistem dan Hasil Percobaan.........................................95
4.6 Kesimpulan............................................................................................104
BAB V.................................................................................................................105
DESAIN COUNTER...........................................................................................105
5.1 Tujuan....................................................................................................105
5.2 Alat dan Bahan......................................................................................106
5.3 Dasar Teori............................................................................................107
5.4 Langkah Kerja.......................................................................................112
5.5 Hasil Pengamatan Dan Analisa Perilaku Sistem...................................127
5.6 Kesimpulan............................................................................................137
BAB VI................................................................................................................138
LACTH AND FLIP-FLOP..................................................................................138
6.1 Tujuan....................................................................................................138
6.2 Alat dan bahan.......................................................................................139
6.3 Dasar Teori............................................................................................141
6.4 Langkah Kerja.......................................................................................144
6.5 Hasil Percobaan dan Analisa.................................................................156
6.6 Tugas.....................................................................................................158
6.7 Kesimpulan............................................................................................160
BAB VII...............................................................................................................161
PENUTUP............................................................................................................161
Lampiran I Lembar Asistensi...............................................................................162

vi
Lampiran II Tugas Pendahuluan dan Form Data Praktikum...............................167

DAFTAR GAMBAR

Gambar 2. 1 Xilinx ISE Webpack 11.1.........................................................................5


Gambar 2. 2 Laptop.......................................................................................................5
Gambar 2. 3 ISE Project Navigator GUI: Eksplorer, Proses, Entry dan Log...............6
Gambar 2. 4 ISE iMPACT: Konfigurasi Boundary Scan (JTAG)................................6
Gambar 2. 5 Simbol Mux 4 ke 1..................................................................................7
Gambar 2. 6 Rangkaian Mux 4 ke 1..............................................................................8
Gambar 2. 7 Contoh Pengaplikasian Ekspansi Shannon...............................................9
Gambar 2. 8 Membuat Verilog Text Fixture untuk mux4_proc_top..........................14
Gambar 2. 9 Pilih Mux4_Proc_Top...........................................................................14
Gambar 2. 10 Memberikan masukan untuk text fixture di mux4_proc_tb.................15
Gambar 2. 11 Simulasi Test Bench............................................................................16
Gambar 2. 12 Membuat Verilog Text Fixture untuk mux4_struc_top........................16
Gambar 2. 13 Pilih Mux4_Struc_Top........................................................................17
Gambar 2. 14 Memberikan masukan untuk text fixture di mux4_struc_tb.................17
Gambar 2. 15 Simulasi Test Bench.............................................................................18
Gambar 2. 16 Skematik mux procedural awal............................................................22
Gambar 2. 17 Skematik RTL fixture mux procedural di klik 1 kali..........................22
Gambar 2. 18 Skematik RTL mux procedural di klik 2 kali.......................................22
Gambar 2. 19 Saat simulasi test bench Mux procedural............................................23
Gambar 2. 20 Saat simulasi test bench Mux procedural 2.........................................23
Gambar 2. 21 Skematik RTL mux struktural awal......................................................28
Gambar 2. 22 Skematik RTL mux struktural di klik 1 kali.........................................28
Gambar 2. 23 Skematik RTL mux struktural di klik 2 kali.........................................29
Gambar 2. 24 Saat simulasi test bench Mux struktural...............................................29
Gambar 2. 25 Saat simulasi test bench Mux structural 2.........................................29Y
Gambar 3.1 Laptop.....................................................................................................34
Gambar 3.2 Xilinx ISE Webpack 11.1........................................................................34
Gambar 3.3 ISim Simulator.........................................................................................35
Gambar 3.4 Rangkaian Enkoder..................................................................................36
Gambar 3.5 Membuat Project Baru.............................................................................40
Gambar 3.6 Membuat Project Baru.............................................................................40
Gambar 3.7 Jendela Project Summary........................................................................41

vii
Gambar 3.8 New source..............................................................................................41
Gambar 3.9 Source Code dec3to8...............................................................................42
Gambar 3.10 Membat new source...............................................................................42
Gambar 3.11 Membat new source...............................................................................42
Gambar 3.12 dec3to8_tb..............................................................................................43
Gambar 3.13 Membuat new source.............................................................................43
Gambar 3.14 Membuat new source.............................................................................43
Gambar 3.15 Memasukan source code........................................................................44
Gambar 3.16 Membuat new source.............................................................................44
Gambar 3.17 Membuat new source.............................................................................44
Gambar 3.18 memasukan source code........................................................................45
Gambar 3.19 Membuat new source.............................................................................45
Gambar 3.20 Membuat new source.............................................................................45
Gambar 3.21 memasukan source code........................................................................46
Gambar 3.22 Membuat new source.............................................................................46
Gambar 3.23 Membuat new source.............................................................................46
Gambar 3.24 Memasukan source code........................................................................47
Gambar 3.25 Listing Program dec3to8.......................................................................47
Gambar 3.26 Gambar Tabel kebenaran dekoder.........................................................48
Gambar 3.27 Listing Program demux3to8 1...............................................................49
Gambar 3.28 Listing Program enc_4to2_proc............................................................51
Gambar 3.29 Gambar tabel kebenaran enkoder..........................................................52
Gambar 3.30 Melakukan behavioral check syntax......................................................52
Gambar 3.31 Melakukan simulate behavioral model..................................................52
Gambar 3.32 Tampilan hasil dalam bentuk waveform................................................53
Gambar 3.33 Melakukan behavioral check syntax......................................................54
Gambar 3.34 Melakukan simulate behavioral model..................................................54
Gambar 3.35 Tampilan hasil dalam bentuk waveform................................................54
Gambar 3.36 Melakukan behavioral check syntax......................................................55
Gambar 3.37 Melakukan simulate behavioral model..................................................55
Gambar 3.38 Tampilan hasil dalam bentuk waveform................................................55
Gambar 3.39 Tampilan hasil akhir pada waveform....................................................59
Gambar 3.40 Tampilan hasil akhir pada waveform....................................................63
Gambar 3.41 Tampilan hasil akhir pada waveform......................................................6
Gambar 4.1 Laptop......................................................................................................70
Gambar 4.2 Board Starter Kit Spartan-3E...................................................................70
Gambar 4.3 Xilinx ISE Webpack12.2.........................................................................71

viii
Gambar 4.4 ISE Simulator...........................................................................................71
Gambar 4.5 Dekoder BCD ke 7-segmen beserta tabel kebenaran fungsi logikanya...72
Gambar 4.6 Tampilan keluaran dekoder hexa-ke-7 Segmen......................................72
Gambar 4.7 ISE Project Navigator GUI: Explorer, Proses, Entry, dan Log...............73
Gambar 4.8 ISE iMPACT: Konfigurasi Boundary Scan (JTAG)...............................74
Gambar 4.9 Decoder to Seven Segment.......................................................................75
Gambar 4. 10 Tabel Kebenaran Dekoder ke 7 Segmen..............................................75
Gambar 4.11 Pencacah Desimal/Hexa Asinkron 4-bit dengan Set-Reset...................76
Gambar 4.12 New Project...........................................................................................77
Gambar 4.13 Device Properties..................................................................................77
Gambar 4.14 Summary................................................................................................78
Gambar 4.15 Mengisikan nama file hex_7seg............................................................78
Gambar 4.16 Define Module.......................................................................................79
Gambar 4.17 Summary................................................................................................79
Gambar 4.18 Listing Code hex_7seg...........................................................................79
Gambar 4.19 Mengisikan nama file debouncer...........................................................80
Gambar 4.20 Define Module.......................................................................................80
Gambar 4.21 Summary................................................................................................81
Gambar 4.22 Listing Code debouncer.........................................................................81
Gambar 4.23 Mengisikan nama file count_1...............................................................82
Gambar 4.24 Define Module.......................................................................................82
Gambar 4.25 Summary................................................................................................82
Gambar 4.26 Listing Code count_1.............................................................................83
Gambar 4.27 Mengisikan nama file Kombinasional_top............................................83
Gambar 4.28 Define Module.......................................................................................84
Gambar 4.29 Summary................................................................................................84
Gambar 4.30 Listing Code kombinasional_top...........................................................84
Gambar 4.31 Mengisikan nama DESAIN_KOMBINASIONAL...............................85
Gambar 4.32 Summary................................................................................................85
Gambar 4.33 Listing Code Desain_Kombinasional....................................................85
Gambar 4.34 Set as Top Module.................................................................................86
Gambar 4.35 Pemberitahuan Changging the top module............................................86
Gambar 4.36 View RTL Schematic............................................................................86
Gambar 4.37 Add dan Create Schematic.....................................................................87
Gambar 4.38 Desain Schematic...................................................................................87
Gambar 4.39 Membuat projek baru pada aplikasi Xilinx...........................................88
Gambar 4.40 Setting konfigurasi pada aplikasi Xilinx................................................89

ix
Gambar 4.41 Ringkasan project pada aplikasi Xilinx.................................................89
Gambar 4.42 Membuat source baru dengan Verilog Module.....................................90
Gambar 4.43 Kotak Dialog Define Module................................................................90
Gambar 4.44 Kotak Dialog Summary.........................................................................91
Gambar 4.45 Source code hex_7seg_1........................................................................91
Gambar 4.46 Membuat source baru dengan Verilog Test Fixture..............................92
Gambar 4.47 Kotak dialog Associate Source..............................................................92
Gambar 4.48 Kotak Dialog Summary.........................................................................92
Gambar 4.49 Source code hex_7seg_1_tb..................................................................93
Gambar 4.50 Mensimulasikan ISim di Xilinx.............................................................93
Gambar 4.51 Mensimulasikan ISim di Xilinx.............................................................94
Gambar 4.52 Hasil simulasi ISim di Xilinx................................................................94
Gambar 4.53 Hasil Simulasi ISim di Xilinx 102

Y
Gambar 5.1 Laptop....................................................................................................106
Gambar 5.2 Xilinx ISE Webpack12.2.......................................................................106
Gambar 5.3 Sinyal Clock...........................................................................................107
Gambar 5.4 ISE Project Navigator GUI: Eksplorer, Proses, Entry dan Log.............108
Gambar 5.5 ISE iMPACT: Konfigurasi Boundary Scan (JTAG).............................108
Gambar 5.6 Simulasi sinyal digital............................................................................110
Gambar 5.7 Membuat new source.............................................................................112
Gambar 5.8 Mengatur project....................................................................................112
Gambar 5.9 Jendela Ringkasan Project.....................................................................113
Gambar 5.10 Membuat new source...........................................................................113
Gambar 5.11 Ringkasan source.................................................................................114
Gambar 5.12 Listing Code Sekuensial_top...............................................................115
Gambar 5.13 Membuat new source...........................................................................115
Gambar 5.14 Jendela ringkasan source debouncer....................................................116
Gambar 5.15 Listing Code.........................................................................................116
Gambar 5.16 Membuat new source...........................................................................117
Gambar 5.17 Jendela ringkasan source.....................................................................117
Gambar 5.18 Listing Code.........................................................................................118
Gambar 5.19 Membuat new source...........................................................................118
Gambar 5.20 Jendela ringkasan source.....................................................................119
Gambar 5.21 Listing Code.........................................................................................119
Gambar 5.22 Membuat new source...........................................................................120

x
Gambar 5.23 Jendela ringkasan source.....................................................................120
Gambar 5.24 Listing Code.........................................................................................120
Gambar 5.25 Membuat new source...........................................................................121
Gambar 5.26 Jendela ringkasan source.....................................................................121
Gambar 5.27 Listing Code.........................................................................................122
Gambar 5.28 Membuat new source...........................................................................122
Gambar 5.29 Associate Source..................................................................................123
Gambar 5.30 Jendela ringkasan source.....................................................................123
Gambar 5.31 Listing Code.........................................................................................123
Gambar 5.32 Set as Top Module...............................................................................124
Gambar 5.33 Implement Design................................................................................124
Gambar 5.34 Generate Programming File.................................................................125
Gambar 5.35 Rerun All.............................................................................................125
Gambar 5.36 create schematic...................................................................................126
Gambar 5.37 RTL Schematic desain counter (zoom in)...........................................127
Gambar 5.38 Waveform desain counter....................................................................127
Gambar 5.39 Waveform desain counter......................................................................12
Gambar 6.1 Laptop....................................................................................................139
Gambar 6.2 Xilinx ISE Webpack 12.2......................................................................139
Gambar 6.3 ISim Simulator.......................................................................................140
Gambar 6.4 D Latch (active high).............................................................................141
Gambar 6.5 D Latch (active low)..............................................................................141
Gambar 6.6 Positive Edge Triggered (active low)....................................................141
Gambar 6.7 Negative Edge Triggered (active high)..................................................141
Gambar 6.8 Gambar Rangkaian Dasar D Flip-Flop..................................................142
Gambar 6.9 Membuka Aplikasi.................................................................................144
Gambar 6.10 Memberi nama project.........................................................................144
Gambar 6.11 New Project Wizard.............................................................................145
Gambar 6.12 Project Summary.................................................................................145
Gambar 6.13 Simulation – Behavioral......................................................................146
Gambar 6.14 Verilog Module dff..............................................................................146
Gambar 6.15 New Source Wizard.............................................................................146
Gambar 6.16 Project Summary.................................................................................147
Gambar 6.17 Verilog Test Fixture dff_tb..................................................................147
Gambar 6.18 Associate Source..................................................................................148
Gambar 6.19 Project Summary.................................................................................148
Gambar 6.20 Behavioral Check Syntax....................................................................150

xi
Gambar 6.21 Simulate Behavioral Model.................................................................150
Gambar 6.22 Verilog module dlatch.........................................................................151
Gambar 6.23 New Source Wizard.............................................................................151
Gambar 6.24 Project Summary.................................................................................151
Gambar 6.25 Verilog Test Fixture dlatch_tb.............................................................152
Gambar 6.26 Associate Source..................................................................................153
Gambar 6.27 Project Summary.................................................................................153
Gambar 6.28 Behavioral Check Syntax....................................................................155
Gambar 6.29 Simulate Behavioral Model.................................................................155
Gambar 6.30 Waveform D Flip Flop.........................................................................156
Gambar 6.31 Waveform D Latch..............................................................................157
Gambar 6.32 Waveform T flip flop...........................................................................159

xii
DAFTAR TABEL

Tabel 2. 1 Tabel Kebenaran Mux 4 ke 1.......................................................................8


Tabel 2. 2 mux4_proc.................................................................................................23
Tabel 2. 3 mux4_struc.............................................................................................30 Y
Tabel 4. 1 Hasil Percobaan BCD to 7-Segment menggunakan FPGA Xilinx (Mode
Desimal).......................................................................................................................95
Tabel 4. 2 Hasil Percobaan BCD to 7-Segment menggunakan FPGA Xilinx (Mode
Hexadesimal)...............................................................................................................98
Tabel 4. 3 Input Output pada Xilinx............................................................................10
Tabel 6. 1 Tabel Kebenaran Positive Edge................................................................142
Tabel 6. 2 Tabel Kebenaran D Flip Flop 142

xiii
ABSTRAK

Perkembangan teknologi dewasa ini menunjukkan begitu sangat pesat sekali.


Ditunjukan dengan semakin maraknya teknologi – teknologi terbaru yang dapat
membantu kehidupan sehari – hari manusia. Perkembangan ini pun diawali oleh
semua perangkat sistem komputer yang sebelumnya sangat besar sekarang sudah
menjadi sangat kecil, praktis dan bekerja sangat cepat. Hal ini dipengaruhi oleh
perkembangan dari sistem digital komputer. Seluruh teknologi yang kita gunakan
pasti selalu diperlukan adanya abstraksi antara kita sebagai user dengan alat yang kita
gunakan. Suatu ilmu yang mempelajari abstraksi dari user ke dalam sebuah perangkat
digital dapat dimasukan kedalam lingkup Sistem Digital Lanjut.
Pada Laporan Sistem Digital Lanjut ini berisi pengetahuan mengenai materi
Sistem Digital yang sering kita temui di sekitar kita. Dimulai dengan multiplekser dan
ekspansi shannon, kemudian dikenalkan dengan enkoder, dekoder dan
demultiplekser, decoder to 7-segment, desain counter, dan latch dan flip – flop.

Kata kunci : Xilinx ISE, ISim Simulator, Board Starter Kit Spartan-3E,
Rangkaian Digital, Multiplekser, Ekspansi Shannon, Enkoder, Dekoder,
Demultiplekser, Decoder to 7-Segment, Desain Counter, Latch dan Flip – flop

xiv
BAB 1

PENDAHULUAN

1.1 Latar Belakang


Pada praktikum Sistem Digital Lanjut diadakan untuk mahasiswa Teknik
Komputer Universtias Diponegoro yang telah mengambil mata kuliah Sistem
Digital Lanjut. Disamping praktikum Sistem Digital Lanjut juga mata kuliah yang
wajib diambil. Pada praktikum ini, mahasiswa Teknik Komputer bisa praktik
langsung dari materi yang sudah dijarkan pada semester sebelumnya.

1.2 Tujuan Praktikum


1. Untuk memenuhi tugas dari mata kuliah praktikum Sistem Digital Lanjut.
2. Sebagai referensi bagi pembuatan Laporan Praktikum Sistem Digital Lanjut
kedepannya.
3. Mampu mengimplementasikan semua materi yang telah diajarkan oleh
dosen waktu mata kuliah Sistem Digital Lanjut.
1.3 Batasan Masalah
Dalam praktikum sistem digital kali ini, diperlukan sebuah batasan-batasan
yang bertujuan untuk membatasi pokok bahasan dan tidak meyimpang dari pokok
bahasan, berikut batasannya:
1. Cara kerja BCD to 7-segment, cara kerja 7-segment, dan proses dekoding input
ke 7-segment.
2. Multiplexer dan ekspansi Shannon meliputi pemograman Verilog untuk
multiplekser pada Xilinx ISE dan mengamati perilakunya setelah
diimplementasikan ke ISim simulator.
3. Enkoder, dekoder, dan demultiplekser meliputi pemograman Verilog untuk
enkoder dan decoder pada Xilinx ISE dan mengamati perilakunya setelah
diimplementasikan ke ISim simulator.
4. Desain rangkaian kombinasional meliputi pembuatan modul pencacah
hexadesimal up-down dengan set-rest dan converter hexa ke 7-segment pada
Xilinx ISE dan implementasaikan pada Xilinx.

1
2

5. Desain counter meliputi perancangan rangkaian logika dari counter sesuai


dengan spesifikasi masukan dan keluaran yang telah ditentukan dan
dimplementasikan pada Xilinx ISE
6. Desain flip-flop dan latch menggunakan Xilinx ISE

1.4 Metode Penulisan


Metode penulisan dalam laporan ini, menggunakan metode mengambil data
dari hasil percobaan berdasarkan praktikum yang sudah dilakukan serta
menganalisa pada laporan. Metode lain dalam laporan ini adalah mencari referensi
lain dari berbagai sumber seperti : buku, internet, dan lain-lain.

1.5 Sistematika Penulisan


Pada laporan praktikum Sistem Digital Lanjut ini sistematika penulisan
terdiri dari sembilan bab yang memiliki tujuan agar pembaca dapat mengerti serta
memahami isi dari laporan ini. Sembilan bab tersebut diantara lain:

BAB I Pendahuluan
Bab ini menjelaskan tentang latar belakang, tujuan, batasan masalah, metode
penulisan dan sistematika penulisan.

BAB II MULTIPLEKSER DAN EKSPANSI SHANNON


Pada bab ini menjelaskan tentang multiplekser dan ekspansi shannon.

BAB III ENKODER, DEKODER DAN DEMULTIPLEKSER


Pada bab ini menjelaskan tentang enkoder, dekoder dan demultiplekser.

BAB IV DECODER TO 7-SEGMENT (HDL)


Pada bab ini menjelaskan tentang definisi dan prinsip kerja decoder to 7-
segment.

BAB V DESAIN COUNTER


Pada bab ini menjelaskan tentang definisi, jenis-jenis, dan prinsip kerja dari
counter.

BAB VI LACTH AND FLIP-FLOP


3

Pada bab ini menjelaskan tentang definisi, dan cara membaca sinyal pada
latch dan flip – flop.

BAB VII PENUTUP


Pada Bab ini berisikan tentang kesimpulan dan saran, baik dari cara kerja
maupun ide dari apa yang telah di uraikan pada bab-bab sebelumnya.
BAB II

MULTIPLEKSER DAN EKSPANSI SHANNON


2.1 Tujuan
1. Praktikan dapat membuat sebuah proyek sistem digital
2. Praktikan dapat memahami blok rangkaian kombinasional, yaitu
multiplekser 4-Masukan.
3. Praktikan dapat mengcompile proyek : sintesis dan implementasi desain.
4. Praktikan dapat mengimplementasikan blok rangkaian tersebut sebagai
modul menggunakan desain secara procedural maupun structural.
5. Praktikan dapat menganalisa hasil implementasi.
6. Praktikan dapat mengaplikasikan modul (reusable) tersebut untuk membuat
suatu rangkaian berbasis komponen.

4
5

2.2 Alat Dan Bahan


2.2.1 Perangkat Lunak
1. Xilinx ISE Webpack 11.1

Gambar 2. 1 Xilinx ISE Webpack 11.1


Xilinx ISE Webpack 11.1 merupakan perangkat lunak yang digunakan
untuk merancang dan mensimulasikan suatu rangkaian digital ke dalam board
Starter Kit Spartan-3E.
2.2.2 Perangkat Keras
1. Laptop

Gambar 2. 2 Laptop
PC merupakan perangkat yang digunakan untuk menginstalasi segala
perangkat lunak (software) yang digunakan saat praktikum, yaitu Xilinx ISE
6

2.3 Dasar Teori


2.3.1 Xilinx ISE
Software Xilinx ISE Webpack 11.1 akan digunakan sebagai GUI untuk
merancang problem sistem digital yang diinginkan. Selanjutnya Xilinx ISE
Webpack 11.1 disebut sebagai ISE. ISE telah terinstall di komputer masing-
masing. ISE berisi tool-tool untuk mengembangkan rancangan sistem digital
terprogram. Tool yang akan digunakan dalam praktikum adalah:
1. ISE Project Navigator digunakan untuk membuat proyek baru,
memasukan entry desain (HDL, skematik), kompilasi desain (sintesis),
mengimplementasikan desain dan membangkitkan file programming (konfigurasi
FPGA). Tool lain dari ISE dipanggil dari Project Navigator ini.
2. ISE iMPACT digunakan untuk menuliskan file konfigurasi FPGA ke
board Starter Kit.GUI dari program ISE Project Navigator diperlihatkan dalam
Gambar 2.3 GUI dari program ISE iMPACT diperlihatkan dalam Gambar 2.4.

Gambar 2. 3 ISE Project Navigator GUI: Eksplorer, Proses, Entry dan Log

Gambar 2. 4 ISE iMPACT: Konfigurasi Boundary Scan (JTAG)


(Sumber : http://didik.blog.undip.ac.id//)
7

2.3.2 Multiplekser 4 Masukkan


Multiplexer adalah suatu rangkaian yang mempunyai banyak input dan
hanya mempunyai satu output. Dengan menggunakan selector, kita dapat memilih
salah satu inputnya untuk dijadikan output. Sehingga dapat dikatakan bahwa
multiplexer ini mempunyai n input, m selector ,dan 1 output. Biasanya jumlah
inputnya adalah 2m selectornya.Adapun macam dari multiplexer ini adalah
sebagai berikut:
- Multiplexer 4x1 atau 4 to 1 multiplexer
- Multiplexer 8x1 atau 8 to 1 multiplexer
- Multiplexer 16x1 atau 16 to 1 multiplexer dsb.

Gambar 2. 5 Simbol Mux 4 ke 1

Gambar 2.5 di atas adalah symbol dari multiplexer 4x1 yang juga disebut
sebagai “data selector” karena bit output tergantung pada input data yang dipilih
oleh selector. Input data biasanya diberi label D0 s/d Dn. Pada multiplexer ini
hanya ada satu input yang ditransmisikan sebagai output tergantung dari
kombinasi nilai selectornya. Kita misalkan selectornya adalah S1dan S0, maka
jika nilai : S1 S0 = 00, Maka outputnya (kitaberi label Y) adalah : Y = D0. Jika
D0 bernilai 0 maka Y akan bernilai 0, jika D0 bernilai 1 maka Y akan bernilai
1. Adapun rangkaian multiplexer 4x1 dengan menggunakan strobe atau enable
yaitu suatu jalur bit yang bertugas mengaktifkan atau menonaktifkan multiplexer,
dapat kita lihat pada Gambar berikut ini.
8

Gambar 2. 6 Rangkaian Mux 4 ke 1


Tabel 2. 1 Tabel Kebenaran Mux 4 ke 1
Strobe S1 S0 Output
0 0 0 D0
0 0 1 D1
0 1 0 D2
0 1 1 D3
1 x X 0
(Sumber : http://zonaelektro.net/adc-analog-to-digital-converter/ )
9

2.3.3 Ekspansi Shannon


Teori Ekspansi Shannon merupakan Sintesis Multiplekser. Sembarang
fungsi Boolean f(w1, • • • ,wn) dapat dituliskan dalam bentuk
f(w1, • • • ,wn) = w1 •f(0,w2, • • • ,wn)+w1 •f(1,w2, • • • ,wn)
misalnya :
f(w1,w2,w3) = ∑m(3, 5, 6, 7)
= ŵ1w2w3 + w1ŵ2w3 + w1w2ŵ3 + w1w2w3
= ŵ1 (w2w3) + w1 (ŵ2w3 + w2ŵ3 + w2w3)
= ŵ1 (w2w3)+ w1 (w2 + w3)
f saat w1=0 dan f saat w1=1
Contoh Ekspansi Shanon :

Gambar 2. 7 Contoh Pengaplikasian Ekspansi Shannon

Contoh Ekspansi Shanon :


Contoh : f(w1,w2,w3) = ∑m(0, 1, 3, 4, 5)
Pilih w1 sebagai variabel ekspansi
f(w1,w2,w3) = ∑m(0, 1, 3, 4, 5)
= ŵ1ŵ2ŵ3 + ŵ1ŵ2w3 + ŵ1w2w3 + w1ŵ2ŵ3 + w1ŵ2w3
= ŵ1 (ŵ2ŵ3 + ŵ2w3 + w2w3) + w1(ŵ2ŵ3 + ŵ2w3)
= ŵ1 (ŵ2 + w3) + w1(ŵ2)
= w1 (w2 + w3)+ w1(ŵ2)
f saat w1=0 f saat w1=1
10

2.4 Langkah Kerja


2.4.1 Membuat proyek baru
1. Buka aplikasi Xilinx ISE. Kemudian pilih menu File, New Project. Kotak
dialog New Project Wizard akan muncul. Ketikkan field name dengan nama
kelompok17. Dan pilih HDL, Next.
2. Pada new project wizard, pilih family Spartan3E, device XC3S500E, Package
(FG320), Speed (-4). Set Preffered Language dengan Verilog. Klik tombol
Next.
3. Pastikan ringkasannya sesuai yang dimasukan tadi, lalu klik finish.

2.4.1.1 Membuat Verilog Module (*.v) dan Implementation Constaint File


(*.ucf)
1. Pilih / buat new source lalu pada source pilih verilog module(*.v) , isikan
field name dengan mux4_proc_kel17.
Jangan lupa add to project di centang dan lokasi sesuai dengan projek yang
dibuat.
2. Masukan source code mux4_proc, lalu save (ctrl+s).
module mux4_proc_kel17(
input [3:0] w_in,
input [1:0] sel,
output [1:0] sel_stat,
output fout
);

reg fout_reg;
always @(sel,w_in) begin
case (sel)
2'b00: fout_reg=w_in[0];
2'b01: fout_reg=w_in[1];
2'b10: fout_reg=w_in[2];
2'b11: fout_reg=w_in[3];
default: fout_reg=w_in[0];
endcase
end

assign fout = fout_reg;


assign sel_stat=sel;

endmodule
11

3. Buat new source kembali, dan pilih verilog module(*.v). Isikan field name
dengan mux4_proc_top. Jangan lupa add to project di centang dan lokasi
sesuai dengan project yg dibuat.
4. Masukan source code mux4_proc_top, jangan lupa pada source code
mux4_proc_kel17.Lalu save (ctrl+s).
module mux4_proc_top(
input BTN_NORTH,
input BTN_EAST,
input BTN_SOUTH,
input BTN_WEST,
input [3:0] SW,
output [7:0] LED
);

wire [1:0] sel_stat;


wire fout;

mux4_proc_kel17 MUX1(
.w_in ({BTN_WEST,BTN_SOUTH, BTN_EAST,BTN_NORTH}),
.sel (SW[1:0]),
.sel_stat (sel_stat),
.fout(fout)
);

assign LED = {fout,1'b0,sel_stat,4'b0};


endmodule

5. Sama seperti sebelumnya, buat new source lalu pada source pilih verilog
module(*.v), isikan field name dengan mux4_struc_. Jangan lupa add to
project di centang dan lokasi sesuai
dengan project yg dibuat.
6. Masukan source code mux4_struc, lalu save (ctrl+s).
module mux4_struc_kel17(
input [3:0] w_in,
input [1:0] sel,
output [1:0] sel_stat,
output fout
12

);

assign fout =(~sel[1] & ~sel[0] & w_in[0])|


(sel[1] & ~sel[0] & w_in[1])|
(~sel[1] & sel[0] & w_in[2])|
(sel[1] & sel[0] & w_in[3]);

assign sel_stat =sel;


endmodule

7. Buat new source kembali, dan pilih verilog module(*.v). Isikan field name
dengan mux4_struc_top. Jangan lupa add to project di centang dan lokasi
sesuai dengan project yg dibuat.
8. Masukan source code mux4_struc_top, jangan lupa pada source code
mux4_struc_kel.Lalu save (ctrl+s).
module mux4_struc_top(
input BTN_NORTH,
input BTN_EAST,
input BTN_SOUTH,
input BTN_WEST,
input [3:0] SW,
output [7:0] LED
);

wire [1:0] sel_stat;


wire fout;

mux4_struc_kel17 MUX1(
.w_in ({BTN_WEST,BTN_SOUTH, BTN_EAST,BTN_NORTH}),
.sel (SW[1:0]),
.sel_stat (sel_stat),
.fout(fout)
);

assign LED = {fout,1'b0,sel_stat,4'b0};


endmodule

9. Setelah masing-masing mux4_proc_top dan mux_struc_top terbuat, buat


new source kembali dan pilih implementation constraints file (*.ucf). Isikan
field name dengan nama rangkaian_kombinasional, jangan lupa add to
project tercentang dan lokasi sesuai dengan project yang dibuat.
10. Setelah dibuat, isikan source codenya seperti di file desain_constraint,
jangan lupa simpan (ctrl+s). (OPTIONAL)
NET "BTN_EAST" LOC="H13" | IOSTANDARD = LVTTL | PULLDOWN;
13

NET "BTN_NORTH" LOC="V4" | IOSTANDARD = LVTTL | PULLDOWN;


NET "BTN_SOUTH" LOC="K17" | IOSTANDARD = LVTTL | PULLDOWN;
NET "BTN_WEST" LOC="D18" | IOSTANDARD = LVTTL | PULLDOWN;

NET "SW<0>" LOC="L13" | IOSTANDARD = LVTTL | PULLDOWN;


NET "SW<1>" LOC="L14" | IOSTANDARD = LVTTL | PULLDOWN;
NET "SW<2>" LOC="H18" | IOSTANDARD = LVTTL | PULLDOWN;
NET "SW<3>" LOC="N17" | IOSTANDARD = LVTTL | PULLDOWN;

NET "LED<7>" LOC="F9" | IOSTANDARD = LVTTL | SLEW = SLOW |


DRIVE =8;
NET "LED<6>" LOC="E9" | IOSTANDARD = LVTTL | SLEW = SLOW |
DRIVE =8;
NET "LED<5>" LOC="E12" | IOSTANDARD = LVTTL | SLEW = SLOW |
DRIVE =8;
NET "LED<4>" LOC="F12" | IOSTANDARD = LVTTL | SLEW = SLOW |
DRIVE =8;
NET "LED<3>" LOC="F11" | IOSTANDARD = LVTTL | SLEW = SLOW |
DRIVE =8;
NET "LED<2>" LOC="E11" | IOSTANDARD = LVTTL | SLEW = SLOW |
DRIVE =8;
NET "LED<1>" LOC="D11" | IOSTANDARD = LVTTL | SLEW = SLOW |
DRIVE =8;
NET "LED<0>" LOC="C11" | IOSTANDARD = LVTTL | SLEW = SLOW |
DRIVE =8;
14

2.4.1.2 Membuat Verilog Text Fixture (*.v)


1. Membuat New Source dan pilih Verilog Text Fixture untuk mux4_proc lalu
klik next, lihat Gambar 3 dan Gambar 4.

Gambar 2. 8 Membuat Verilog Text Fixture untuk mux4_proc_top

Gambar 2. 9 Pilih Mux4_Proc_Top


15

2. Masuk ke view dari Implementation menjadi Simulation

Gambar 2. 10 Memberikan masukan untuk text fixture di mux4_proc_tb

initial begin
// Initialize Inputs
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST
= 1;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST
= 0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST
= 0;
SW = 0; #100;
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST
= 0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST
= 1;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST
= 0;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST
= 0;
SW = 1; #100;
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST
= 0;
SW = 1; #100;
end
16

3. Pilih Simulate Behavioral pada tab Simulation pada Processes:


mux4_proc_tb. Lalu amati Keluaran Sinyalnya.

Gambar 2. 11 Simulasi Test Bench


4. Membuat New Source dan pilih Verilog Text Fixture untuk mux4_struc lalu
klik next, lihat Gambar 5 dan Gambar 6.

Gambar 2. 12 Membuat Verilog Text Fixture untuk mux4_struc_top


17

Gambar 2. 13 Pilih Mux4_Struc_Top

5. Masuk ke view dari Implementation menjadi Simulation

Gambar 2. 14 Memberikan masukan untuk text fixture di mux4_struc_tb


18

initial begin
// Initialize Inputs
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST = 0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST = 0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 1;
SW = 0; #100;
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 0;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST = 0;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST = 0;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 1;
SW = 1; #100;
end
6. Pilih Simulate Behavioral pada tab Simulation pada Processes:
mux4_struc_tb. Lalu amati Keluaran Sinyalnya.

Gambar 2. 15 Simulasi Test Bench


19

2.5 Analisa Perilaku Sistem


2.5.1 Mux – Prosedural
source code mux4_proc
module mux4_proc_kel17(
input [3:0] w_in,
input [1:0] sel,
output [1:0] sel_stat,
output fout
);

reg fout_reg;
always @(sel,w_in) begin
case (sel)
2'b00: fout_reg=w_in[0];
2'b01: fout_reg=w_in[1];
2'b10: fout_reg=w_in[2];
2'b11: fout_reg=w_in[3];
default: fout_reg=w_in[0];
endcase
end

assign fout = fout_reg;


assign sel_stat=sel;

endmodule

input [3:0] w_in, untuk variabel input yaitu w_in dengan bus sebanyak
4, input [1:0] sel, untuk variabel input yaitu sel dengan bus sebanyak 2,
output [1:0] sel_stat, untuk variabel output yaitu sel_stat dengan bus
sebanyak 2, output fout untuk variabel output yaitu fout, reg fout_reg; sebagai
storage to store fout in procedural design always @(sel, w_in) begin untuk
persyaratan dengan menggunakan variabel sel dan w_in case (sel) pilihan. Jika
sel bernilai biner 00 maka fout menghasilkan keluaran sesuai w_in[0]. Jika sel
bernilai biner 01 maka fout menghasilkan keluaran sesuai w_in[1]. Jika sel
bernilai biner 10 maka fout menghasilkan keluaran sesuai w_in[2]. Jika sel
bernilai biner 11 maka fout menghasilkan keluaran sesuai w_in[3]. Jika sel
bernilai biner selain diatas maka fout menghasilkan keluaran sesuai w_in[0],
assign fout = fout_reg; untuk variabel fout bernilai fout_reg, assign
sel_stat = sel; untuk variabel sel_stat bernilai sel.
20

source code mux4_proc_top


module mux4_proc_top(
input BTN_NORTH,
input BTN_EAST,
input BTN_SOUTH,
input BTN_WEST,
input [3:0] SW,
output [7:0] LED
);

wire [1:0] sel_stat;


wire fout;

mux4_proc_kel17 MUX1(
.w_in ({BTN_WEST,BTN_SOUTH, BTN_EAST,BTN_NORTH}),
.sel (SW[1:0]),
.sel_stat (sel_stat),
.fout(fout)
);

assign LED = {fout,1'b0,sel_stat,4'b0};


endmodule

input BTN_NORTH, untuk variabel input yaitu BTN_NORTH, input


BTN_EAST, untuk variabel input yaitu BTN_EAST, input BTN_SOUTH, untuk
variabel input yaitu BTN_SOUTH, input BTN_WEST, untuk variabel input yaitu
BTN_WEST, input [3:0] SW, untuk variabel input yaitu SW dengan bus sebanyak 4,
output [7:0] LED untuk variabel output yaitu LED dengan bus sebanyak 8, wire
[1:0] sel_stat; untuk variabel sel_stat dengan bus sebanyak 2, wire fout;
untuk variabel fout. Inisialisasi w_in dengan gabungan BTN_WEST, BTN_SOUTH,
BTN_EAST, dan BTN_NORTH. Inisialisasi sel dengan SW[1:0]. Inisialisasi sel_stat
dengan sel_stat. Inisialisasi fout dengan fout, assign LED =
{fout,1'b0,sel_stat,4'b0}; untuk variabel sel_stat bernilai gabungan
fout,0,sel_stat dan 0000.

initial begin
// Initialize Inputs
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST =
1;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST =
0;
SW = 0; #100;
21

BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST =


0;
SW = 0; #100;
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST =
0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST =
1;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST =
0;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST =
0;
SW = 1; #100;
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST =
0;
SW = 1; #100;
end

Sebagai inputan untuk mux prosedural BTN_NORTH = 0; BTN_EAST = 0;


BTN_SOUTH = 0; BTN_WEST = 1; SW = 0; #100; dengan masukan 0001 untuk
setiap button dengan switch 0, BTN_NORTH = 0; BTN_EAST = 0;
BTN_SOUTH = 1; BTN_WEST = 0; SW = 0; #100; dengan masukan 0010
untuk setiap button dengan switch 0, BTN_NORTH = 0; BTN_EAST = 1;
BTN_SOUTH = 0; BTN_WEST = 0; SW = 0; #100; dengan masukan 0100 untuk
setiap button dengan switch 0, BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH =
0; BTN_WEST = 0; SW = 0;#100; dengan masukan 1000 untuk setiap button
dengan switch 0, BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0;
BTN_WEST = 1; SW = 1; #100; dengan masukan 0001 untuk setiap button
dengan switch 1, BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1;
BTN_WEST = 0;SW = 1; #100; dengan masukan 0010 untuk setiap button
dengan switch 1, BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST
= 0; SW = 1; #100; dengan masukan 0100 untuk setiap button dengan switch 1,
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 0; SW = 1;

#100; dengan masukan 1000 untuk setiap button dengan switch 1.


22

Gambar 2. 16 Skematik mux procedural awal

Gambar 2. 17 Skematik RTL fixture mux procedural di klik 1 kali

Gambar 2. 18 Skematik RTL mux procedural di klik 2 kali


23

Gambar 2. 19 Saat simulasi test bench Mux procedural

Gambar 2. 20 Saat simulasi test bench Mux procedural 2


Tabel 2. 2 mux4_proc
Outp
Inputs
ut
SW SW BTN_NORT BTN_EAS BTN_SOUT BTN_WES
0 1 H T H T
0 0 1 0 0 0 -
0 0 0 1 0 0 -
0 0 0 0 1 0 -
0 0 0 0 0 1 8
0 1 1 0 0 0 5
0 1 0 1 0 0 5
0 1 0 0 1 0 5,8
0 1 0 0 0 1 5
1 0 1 0 0 0
1 0 0 1 0 0
1 0 0 0 1 0
24

1 0 0 0 0 1
1 1 1 0 0 0
1 1 0 1 0 0
1 1 0 0 1 0
1 1 0 0 0 1
Saat SW 0 dengan masukan 0 dan SW 1 dengan masukan 0 dengan
keaadaan BTN_NORTH bernilai 1 BTN_EAST, BTN_SOUTH, BTN_WEST bernilai 0 maka
output yang di keluarkan tidak ada atau lampu led tidak ada yang menyala. Saat
SW 0 dengan masukan 0 dan SW 1 dengan masukan 0 dengan keaadaan BTN_EAST
bernilai 1 BTN_NORTH, BTN_SOUTH, BTN_WEST bernilai 0 maka output yang di
keluarkan tidak ada atau lampu led tidak ada yang menyala. Saat SW 0 dengan
masukan 0 dan SW 1 dengan masukan 0 dengan keaadaan BTN_SOUTH bernilai 1
BTN_EAST, BTN_NORTH, BTN_WEST bernilai 0 maka output yang di keluarkan tidak
ada atau lampu led tidak ada yang menyala.
Saat SW 0 dengan masukan 0 dan SW 1 dengan masukan 0 dengan
keaadaan BTN_WEST bernilai 1 BTN_EAST, BTN_SOUTH, BTN_NORTH bernilai 0 maka
output yang di keluarkan 8 karena lampu led 8 bernilai 1. Saat SW 0 dengan
masukan 0 dan SW 1 dengan masukan 1 dengan keaadaan BTN_NORTH bernilai 1
BTN_EAST, BTN_SOUTH, BTN_WEST bernilai 0 maka output yang di keluarkan 5
karena lampu led 5 bernilai 1. Saat SW 0 dengan masukan 0 dan SW 1 dengan
masukan 1 dengan keaadaan BTN_EAST bernilai 1 BTN_NORTH, BTN_SOUTH,
BTN_WEST bernilai 0 maka output yang di keluarkan 5 karena lampu led 5 bernilai
1. Saat SW 0 dengan masukan 0 dan SW 1 dengan masukan 1 dengan keaadaan
BTN_SOUTH bernilai 1 BTN_EAST, BTN_NORTH, BTN_WEST bernilai 0 maka output
yang di keluarkan 5,8 karena lampu led 5 dan 8 bernilai 1. Saat SW 0 dengan
masukan 0 dan SW 1 dengan masukan 1 dengan keaadaan BTN_WEST bernilai 1
BTN_EAST, BTN_SOUTH, BTN_NORTH bernilai 0 maka output yang di keluarkan 5
karena lampu led 5 bernilai 1.
25

2.5.2 Mux – Struktural


source code mux4_struc
module mux4_struc_kel17(
input [3:0] w_in,
input [1:0] sel,
output [1:0] sel_stat,
output fout
);

assign fout =(~sel[1] & ~sel[0] & w_in[0])|


(sel[1] & ~sel[0] & w_in[1])|
(~sel[1] & sel[0] & w_in[2])|
(sel[1] & sel[0] & w_in[3]);

assign sel_stat =sel;


endmodule

input [3:0] w_in, untuk variabel input yaitu w_in dengan bus sebanyak
4, input [1:0] sel, untuk variabel input yaitu sel dengan bus sebanyak 2,
output [1:0] sel_stat, untuk variabel output yaitu sel_stat dengan bus sebanyak
2, output fout untuk variabel output yaitu fout, fout memiliki nilai hasil dari
~sel[1] & ~sel[0] & w_in[0]) | (~sel[1] & sel[0] & w_in[1]) |
(sel[1] & ~sel[0] & w_in[2]) | (sel[1] & sel[0] & w_in[3], assign

sel_stat = sel; untuk variabel sel_stat bernilai sama dengan variabel


sel.
source code mux4_struc_top
module mux4_struc_top(
input BTN_NORTH,
input BTN_EAST,
input BTN_SOUTH,
input BTN_WEST,
input [3:0] SW,
output [7:0] LED
);

wire [1:0] sel_stat;


wire fout;

mux4_struc_kel17 MUX1(
.w_in ({BTN_WEST,BTN_SOUTH, BTN_EAST,BTN_NORTH}),
.sel (SW[1:0]),
.sel_stat (sel_stat),
.fout(fout)
);

assign LED = {fout,1'b0,sel_stat,4'b0};


endmodule
26

input BTN_NORTH, untuk variabel input yaitu BTN_NORTH, input BTN_EAST,


untuk variabel input yaitu BTN_EAST, input BTN_SOUTH, untuk variabel input yaitu
BTN_SOUTH, input BTN_WEST, untuk variabel input yaitu BTN_WEST, input [3:0]
SW, untuk variabel input yaitu SW dengan bus sebanyak 4, output [7:0] LED untuk
variabel output yaitu LED dengan bus sebanyak 8, wire [1:0] sel_stat; untuk
variabel sel_stat dengan bus sebanyak 2, wire fout; untuk variabel fout.
Inisialisasi w_in dengan gabungan BTN_WEST, BTN_SOUTH, BTN_EAST, dan
BTN_NORTH. Inisialisasi sel dengan SW[1:0]. Inisialisasi sel_stat dengan
sel_stat. Inisialisasi fout dengan fout, assign LED =

{fout,1'b0,sel_stat,4'b0}; untuk variabel sel_stat bernilai gabungan


fout,0,sel_stat dan 0000.

initial begin
// Initialize Inputs
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST = 0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST = 0;
SW = 0; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 1;
SW = 0; #100;
BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 0;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0; BTN_WEST = 0;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST = 0;
SW = 1; #100;
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 1;
SW = 1; #100;

end

Sebagai inputan untuk mux prosedural BTN_NORTH = 1; BTN_EAST = 0;


BTN_SOUTH = 0; BTN_WEST = 0; SW = 0; #100; dengan masukan 1000 untuk
setiap button dengan switch 0, BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH =
0; BTN_WEST = 0; SW = 0; #100; dengan masukan 0100 untuk setiap button
dengan switch 0, BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1;
BTN_WEST = 0; SW = 0; #100; dengan masukan 0010 untuk setiap button
27

dengan switch 0, BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0;


BTN_WEST = 1; SW = 0;#100; dengan masukan 0001 untuk setiap button
dengan switch 0, BTN_NORTH = 1; BTN_EAST = 0; BTN_SOUTH = 0;
BTN_WEST = 0; SW = 1; #100; dengan masukan 1000 untuk setiap button
dengan switch 1, BTN_NORTH = 0; BTN_EAST = 1; BTN_SOUTH = 0;
BTN_WEST = 0;SW = 1; #100; dengan masukan 0100 untuk setiap button
dengan switch 1, BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 1; BTN_WEST
= 0; SW = 1; #100; dengan masukan 0010 untuk setiap button dengan switch 1,
BTN_NORTH = 0; BTN_EAST = 0; BTN_SOUTH = 0; BTN_WEST = 1; SW = 1;

#100; dengan masukan 0001 untuk setiap button dengan switch 1.

Gambar 2. 21 Skematik RTL mux struktural awal

Gambar 2. 22 Skematik RTL mux struktural di klik 1 kali


28

Gambar 2. 23 Skematik RTL mux struktural di klik 2 kali

Gambar 2. 24 Saat simulasi test bench Mux struktural

Gambar 2. 25 Saat simulasi test bench Mux structural 2


29

Tabel 2. 3 mux4_struc
Outp
Inputs
ut
SW SW BTN_NORT BTN_EAS BTN_SOUT BTN_WES
0 1 H T H T
0 0 1 0 0 0 8
0 0 0 1 0 0 -
0 0 0 0 1 0 -
0 0 0 0 0 1 -
0 1 1 0 0 0 5
0 1 0 1 0 0 5
0 1 0 0 1 0 5,8
0 1 0 0 0 1 5
1 0 1 0 0 0
1 0 0 1 0 0
1 0 0 0 1 0
1 0 0 0 0 1
1 1 1 0 0 0
1 1 0 1 0 0
1 1 0 0 1 0
1 1 0 0 0 1
Saat SW 0 dengan masukan 0 dan SW 1 dengan masukan 0 dengan keaadaan
BTN_NORTH bernilai 1 BTN_EAST, BTN_SOUTH, BTN_WEST bernilai 0 maka output
yang di keluarkan 8 karenan lampu led 8 bernilai 1. Saat SW 0 dengan masukan 0
dan SW 1 dengan masukan 0 dengan keaadaan BTN_EAST bernilai 1 BTN_NORTH,
BTN_SOUTH, BTN_WEST bernilai 0 maka output yang di keluarkan tidak ada atau
lampu led tidak ada yang menyala. Saat SW 0 dengan masukan 0 dan SW 1 dengan
masukan 0 dengan keaadaan BTN_SOUTH bernilai 1 BTN_EAST, BTN_NORTH,
BTN_WEST bernilai 0 maka output yang di keluarkan tidak ada atau lampu led tidak
ada yang menyala.
Saat SW 0 dengan masukan 0 dan SW 1 dengan masukan 0 dengan keaadaan
BTN_WEST bernilai 1 BTN_EAST, BTN_SOUTH, BTN_NORTH bernilai 0 maka output
yang di keluarkan 8 karena lampu led 8 bernilai 1. Saat SW 0 dengan masukan 0
dan SW 1 dengan masukan 1 dengan keaadaan BTN_NORTH bernilai 1 BTN_EAST,
BTN_SOUTH, BTN_WEST bernilai 0 maka output yang di keluarkan 5 karena lampu
led 5 bernilai 1.
30

Saat SW 0 dengan masukan 0 dan SW 1 dengan masukan 1 dengan keaadaan


BTN_EAST bernilai 1 BTN_NORTH, BTN_SOUTH, BTN_WEST bernilai 0 maka output
yang di keluarkan 5 karena lampu led 5 bernilai 1. Saat SW 0 dengan masukan 0
dan SW 1 dengan masukan 1 dengan keaadaan BTN_SOUTH bernilai 1 BTN_EAST,
BTN_NORTH, BTN_WEST bernilai 0 maka output yang di keluarkan 5,8 karena lampu
led 5 dan 8 bernilai 1. Saat SW 0 dengan masukan 0 dan SW 1 dengan masukan 1
dengan keaadaan BTN_WEST bernilai 1 BTN_EAST, BTN_SOUTH, BTN_NORTH bernilai
0 maka output yang di keluarkan 5 karena lampu led 5 bernilai 1.
31

2.6 Kesimpulan
1. Blok rangkaian dapat diimplementasikan menggunakan desain secara
procedural maupun structural namun hasil atau output yang dihasilkan sama
saja.
2. Multiplexer adalah suatu rangkaian yang mempunyai banyak input dan hanya
mempunyai satu output. Dengan menggunakan selector juga dapat memilih
salah satu inputnya untuk dijadikan output.
3. Perbedaan antara pemograman procedural dan structural adalah pada
pemograman procedural fungsi yang akan diimplementasikan dijabarkan
dahulu per baris, Sedangkan pada pemograman secara structural yaitu
komponen harus dituliskan satu per satu dalam fungsi logika secara tersebut
4. Ekspansi Shannon berguna apabila kita hendak membuat suatu rangkaian
yang mengandung multiplekser, namun tidak memiliki perangkat
multiplekser, maka dapat dibentuk beberapa gerbang logika biasa yang bisa
menghasilkan hasil yang sama dengan keluaran multiplekser.
5. Pada percobaan menggunakan Xilinx, maka hasil keluarannya dapat dilihat
melalui Waveform Xilinx.
6. Untuk menggabungkan beberapa module pada Xilinx, maka dibentuklah
TopModule.
BAB III

ENKODER, DEKODER DAN DEMULTIPLEKSER

3.1 Tujuan
1. Praktikan dapat memahami blok rangkaian kombinasional enkoder 4-ke-2,
dekoder 3-ke-8 dan demux 3-ke-8.
2. Praktikan dapat mengimplementasikan blok rangkaian tersebut sebagai
modul menggunakan desain secara prosedural maupun struktural.
3. Praktikan dapat mengaplikasikan modul (reusable) tersebut untuk membuat
suatu rangkaian berbasis komponen.
4. Praktikan dapat memahami (dan membedakan) hasil sintesis rangkaian RTL
(register transfer level) kedua bentuk desain tersebut serta
utilisasi/penggunaan device untuk desain tersebut.
5. Praktikan dapat menganalisis perilaku masukan-keluaran desain di board
Starter Kit; Sumber referensi yang bisa digunakan.
6. Praktikum memahami fungsi dan cara kerja serta melakukan simulasi
enkoder, dekoder, dan demux.
33

3.2 Alat dan bahan


3.2.1 Laptop

Gambar 3.1 Laptop

PC merupakan perangkat yang digunakan untuk menginstalasi segala


perangkat lunak (software) yang digunakan saat praktikum, yaitu Xilinx ISE.
3.2.2 Xilinx ISE

Gambar 3.2 Xilinx ISE Webpack 11.1

Xilinx ISE Webpack 11.1 merupakan perangkat lunak yang digunakan


untuk merancang dan mensimulasikan suatu rangkaian digital ke dalam board
Starter Kit Spartan-3E.
34

3.2.3 ISim Simulator

Gambar 3.3 ISim Simulator


ISim menyediakan simulator HDL lengkap yang terintegrasi dalam ISE.
Simulasi HDL sekarang dapat menjadi langkah yang lebih mendasar dalam aliran
desain dengan intgrasi ISim yang ketat dalam lingkungan desain.
3.3 Dasar Teori
3.3.1. Enkoder
Enkoder adalah susunan dari gerbang gerbang logika yang menghasilkan
keluaran biner sebagai tanggapan adanya dua atau lebih variabel dalam aljabar
bolean tergantung pada kombinasi gerbang gerbang yang digunakan. Sebuah
variabel harus memenuhi /mempunyai perancangan m<=2n. Variabel m adalah
kombinasi masukan dan n adalah jumlah bit keluaran sebuah enkoder satu
kombinasi masukan boleh mewakili satu kombinasi biner.
Enkoder adalah rangkaian logika kombinasional yang berfungsi untuk
merubah atau mengkodekan suatu sinyal diskrit (angka digital (1 dan 0)) menjadi
keluaran kode biner (biner yang sudah dikodekan, ariab 6 = 0110). Enkoder
disusun dari gerbang-gerbang logika yang menghasilkan keluaran biner sebagai
hasil tanggapan adanya dua atau lebih ariable masukan.

Gambar 3.4 Rangkaian Enkoder


Hasil keluarannya dinyatakan dengan aljabar boole, tergantung dari
kombinasi-kombinasi gerbang yang digunakan. Sebuah Enkoder harus memenuhi
syarat perancangan m < 2 n. Variabel "m" adalah kombinasi masukan dan "n"
adalah jumlah bit keluaran sebuah Enkoder. Satu kombinasi masukan hanya dapat
mewakili satu kombinasi keluaran.
36

Perhatian tabel contoh dibawah :

Gambar 3.5 Input Output Enkoder


Fungsi keluaran dari tabel diatas:
Y0 = I1+I3+I5+I7     Y1 = I2+I3+I6+I7     Y2 = I4+I5+I6+I7
Jadi:
Y0 hidup jika I1, I3, I5, I7 bernilai satu atau hidup.
Y1 hidup jika I2, I3, I6, I7 bernilai satu atau hidup.
Y2 hidup jika I4, I5, I6, I7 bernilai satu atau hidup.
3.3.2. Dekoder
Dekoder adalah suatu rangkaian logika yang memiliki sedikit masukan dan
banyak keluaran.

Gambar 3.6 Gambar Tabel kebenaran Dekoder


37

Gambar 3.7 Diagram Blok Decoder


Dekoder pada Gambar 2 memiliki tiga masukan x0, x1 dan x2 dan delapan
keluaran ( y0 – y7 ). Bergantung dari kombinasi masukan. Keluaran akan berganti
ke 0 maupun 1.
Kombinasi masukan dan keluaran yang dikeluarkan bergantung dari jenis
atau tipe dekoder yang digunakan. Dari tabel Gambar 1.10.a, kita ambil contoh
pada keluaran y6 menjadi 1 ketika input x0 = 0, x1= 1, dan x2 = 1.
Pada prakteknya, dekoder yang paling banyak dipergunakan adalah yang
keluarannya dibalik. Rumus umum dekoder adalah memiliki n maukan dan 2
pangkat n keluaran.
38

3.3.3. Multiplekser dan Demultiplekser


Dalam elektronik , sebuah multiplexer (atau mux) adalah perangkat yang
memilih salah satu dari beberapa analog atau digital sinyal input dan meneruskan
input yang dipilih menjadi garis tunggal. Sebuah Multiplexer dari 2 input n
memiliki garis n pilih, yang digunakan untuk memilih baris masukan untuk
dikirim ke output. Multiplexers terutama digunakan untuk meningkatkan jumlah
data yang dapat dikirim melalui jaringan dalam jumlah tertentu waktu dan
bandwidth yang . Sebuah Multiplexer juga disebut pemilih Data.
Sebuah Multiplexer elektronik memungkinkan beberapa sinyal untuk berbagi
satu perangkat atau sumber daya, misalnya satu A / D converter atau satu jalur
komunikasi, daripada harus satu perangkat per sinyal input. Di sisi lain,
demultiplexer (atau demux) adalah perangkat mengambil sinyal input tunggal dan
memilih salah satu dari banyak-output data-baris, yang dihubungkan ke input
tunggal. Multiplexer Sebuah sering digunakan dengan demultiplexer pelengkap di
ujung penerima.
Sebuah Multiplexer elektronik dapat dianggap sebagai beberapa masukan-
tunggal-output beralih, dan demultiplexer sebagai masukan-tunggal, multi-output
yang beralih. Simbol skematis untuk multiplexer adalah trapesium sama kaki
dengan sisi sejajar lagi berisi pin input dan sisi paralel pendek berisi pin output.
Skema di sebelah kanan menunjukkan multiplexer 2-ke-1 di sebelah kiri dan
saklar setara di sebelah kanan. S e l kawat menghubungkan input yang diinginkan
untuk output.
39

3.4 Langkah Kerja


3.4.1 Membuat Project
1. Buka aplikasi Xilinx ISE. Kemudian pilih menu File, New Project. Kotak
dialog New Project Wizard akan muncul. Ketikkan field name dengan nama
proyek. Lalu klik Next

Gambar 3.5 Membuat Project Baru

2. Muncul jendela Device Properties. Pilih Family (Spartan3E), device


(XC3S500E), Package (FG320), Speed (-4). Set Preffered Language dengan
Verilog. Klik tombol Next.

Gambar 3.6 Membuat Project Baru

3. Muncul jendela Create New source. Klik tombol Next, jendela Add Existing
Sources muncul. Klik tombol Next, jendela Project Summary muncul.
Pastikan ringkasan proyek sesuai dengan yang tercatat di modul praktikum.
40

Klik tombol Finish untuk mengakhiri wizard. File project


<modul2_kel17>.xise akan dibuat :

Gambar 3.7 Jendela Project Summary

3.4.2 Membuat file desain .v (procedural) dan file tb


1. Pilih / buat new source lalu pada source pilih verilog module (*.v), isikan
field name dengan nama dec3to8

Gambar 3.8 New source

2. Masuka source code dec3to8, lalu save (ctrl+s)


41

Gambar 3.9 Source Code dec3to8

3. Buat new source kembali, dan pilih Verilog Text Fixture I (*,v). Isikan field
name dengan nama dec3to8_tb

Gambar 3.10 Membat new source

Gambar 3.11 Membat new source

4. Masukan source code dec3to8_tb nya


42

Gambar 3.12 dec3to8_tb

5. Buat new source kembali, dan pilih Verilog module (*,v). Isikan field name
dengan nama demux3to8

Gambar 3.13 Membuat new source

Gambar 3.14 Membuat new source

6. Masukan Source code untuk demux3to8 nya.


43

Gambar 3.15 Memasukan source code

7. Buat new source kembali, dan pilih Verilog Text Fixture (*,v). Isikan name
dengan nama demux3to8_tb

Gambar 3.16 Membuat new source

Gambar 3.17 Membuat new source

8. Masukkan source code ntuk demux3to8_tb nya


44

Gambar 3.18 memasukan source code

9. Buat new source kembali dan pilih Verilog module ((*,v). Isikan field name
dengan nama enc4to2

Gambar 3.19 Membuat new source

Gambar 3.20 Membuat new source


45

10. Masukan source code enc4to2 nya

Gambar 3.21 memasukan source code

11. Buat new source kembali, dan pilih Verilog Text Fixture (*,v). Isikan field
name dengan nama enc4to2_tb

Gambar 3.22 Membuat new source

Gambar 3.23 Membuat new source

12. Masukan source code enc4to2_tb nya.


46

Gambar 3.24 Memasukan source code

3.4.3 Hipotesis (berisi penjelasan listing dan kemungkinan hasil keluaran)


3.4.3.1 Decoder 3 ke 8
Berikut listing program decoder 3 ke 8 :

Gambar 3.25 Listing Program dec3to8

Analisis dari listing program yang ada pada percobaan decoder 3 ke 8 :

dec3to8
case (w_in)
3'b000: y_out_reg <= (enable == 1)? 8'b00000001:8'bZ;
3'b001: y_out_reg <= (enable == 1)? 8'b00000010:8'bZ;
3'b010: y_out_reg <= (enable == 1)? 8'b00000100:8'bZ;
3'b011: y_out_reg <= (enable == 1)? 8'b00001000:8'bZ;
3'b100: y_out_reg <= (enable == 1)? 8'b00010000:8'bZ;
3'b101: y_out_reg <= (enable == 1)? 8'b00100000:8'bZ;
3'b110: y_out_reg <= (enable == 1)? 8'b01000000:8'bZ;
3'b111: y_out_reg <= (enable == 1)? 8'b10000000:8'bZ;
default: y_out_reg <= (enable == 1)? 8'b00000001:8'bZ;
endcase
end
47

Dari listing di atas maka saat masukan dan keluaran kemungkinan hasil
keluaran dapat dilihat pada tabel berikut :

Gambar 3.26 Gambar Tabel kebenaran dekoder

Dekoder pada Tabel 4.4 memiliki tiga masukan x0, x1 dan x2 dan delapan
keluaran ( y0 – y7 ). Bergantung dari kombinasi masukan. Keluaran akan berganti
ke 0 maupun 1. Kombinasi masukan dan keluaran yang dikeluarkan bergantung
dari jenis atau tipe dekoder yang digunakan. Dari tabel, kita ambil contoh pada
keluaran y7 menjadi 1 ketika input x0 = 1, x1= 1, dan x2 = 1.
48

3.4.3.2 Demux 3 ke 8
Berikut listing code demux 3 ke 8 :

Gambar 3.27 Listing Program demux3to8 1

Analisa dari listing code demux 3 ke 8


case (sel)
3'b000: data_out_reg[0] = data_in;
3'b001: data_out_reg[1] = data_in;
3'b010: data_out_reg[2] = data_in;
3'b011: data_out_reg[3] = data_in;
3'b100: data_out_reg[4] = data_in;
3'b101: data_out_reg[5] = data_in;
3'b110: data_out_reg[6] = data_in;
3'b111: data_out_reg[7] = data_in;
default: data_out_reg = 8'bZ;
endcase
end
49

Dari listing di atas maka bisa dilihat saat masukan selektor.

Tabel 3. 1 Tabel output demux 3 ke 8


Input Output
000 Output 0
001 Output 1
010 Output 2
011 Output 3
100 Output 4
101 Output 5
110 Output 6
111 Output 7
Output di atas merupakan pemilihan jalur yang akan dilewati oleh data input
pada setiap kombinasi selektor.
50

3.4.3.3 Encoder 4 ke 2
Berikut listing code encoder 4 ke 2 :

Gambar 3.28 Listing Program enc_4to2_proc

Analisa dari listing code encoder 4 ke 2 :


casex (w_in)
4'b0000: begin /*incompletely function, input
never happen*/
y_out_reg <= 2'b00; zero_reg = 0;
end
4'b0001: begin
y_out_reg <= 2'b00; zero_reg = 1;
end
4'b001X: begin
y_out_reg <= 2'b01; zero_reg = 1;
end
4'b01XX: begin
y_out_reg <= 2'b10; zero_reg = 1;
end
4'b1XXX: begin
y_out_reg <= 2'b11; zero_reg = 1;
end
default: begin
y_out_reg <= 2'b11; zero_reg = 1;
end
endcase

Dari listing di atas hipotesis sementara adalah untuk masukan :

Tabel 3. 2 Tabel masukan Enkoder 4 ke 2


0001 00
001X 01
01XX 10
1XXX 11
Kemungkinan hasil keluaran dari listing code encoder 4 ke 2 di atas sebagai
berikut :
51

Gambar 3.29 Gambar tabel kebenaran enkoder

Fungsi keluaran dari tabel diatas:


Y0 = I1+I3+I5+I7
Y1 = I2+I3+I6+I7
Y2 = I4+I5+I6+I7
Jadi:
Y0 hidup jika I1, I3, I5, I7 bernilai satu atau hidup.
Y1 hidup jika I2, I3, I6, I7 bernilai satu atau hidup.
Y2 hidup jika I4, I5, I6, I7 bernilai satu atau hidup.
3.4.4 Mengkompilasi Desain dan Membuka aplikasi Isim
3.4.4.1 Decoder 3 ke 8
1. Setelah menuliskan listing code ke dalam Xilinx, klik source dec3to8_tb, view
simulation, dan pada kotak ISim Simulator, klik Behavioral Check Syntax.

Gambar 3.30 Melakukan behavioral check syntax

2. Ketika syntax tidak error, klik Simulate Behavioral Model

Gambar 3.31 Melakukan simulate behavioral model

3. Hasil simulasi akan tampak seperti gambar dibawah ini.


52

Gambar 3.32 Tampilan hasil dalam bentuk waveform


53

3.4.4.2 Demux 3 ke 8
1. Setelah menuliskan listing code ke dalam Xilinx, klik source dec3to8_tb,
view simulation, dan pada kotak ISim Simulator, klik Behavioral Check
Syntax.

Gambar 3.33 Melakukan behavioral check syntax

2. Ketika syntax tidak error, klik Simulate Behavioral Model

Gambar 3.34 Melakukan simulate behavioral model

3. Hasil simulasi akan tampak seperti gambar dibawah ini.

Gambar 3.35 Tampilan hasil dalam bentuk waveform


54

3.4.4.3 Encoder 4 ke 2
1. Setelah menuliskan listing code ke dalam Xilinx, klik source dec3to8_tb,
view simulation, dan pada kotak ISim Simulator, klik Behavioral Check
Syntax.

Gambar 3.36 Melakukan behavioral check syntax

2. Ketika syntax tidak error, klik Simulate Behavioral Model

Gambar 3.37 Melakukan simulate behavioral model

3. Hasil simulasi akan tampak seperti gambar dibawah ini.

Gambar 3.38 Tampilan hasil dalam bentuk waveform


55

3.5 Analisa Perilaku Sistem


3.5.1 Dekoder
3.5.1.1 dec3to8

module dec3to8(
input [2:0] w_in, //variabel input yaitu w_in dengan jumlah bus
3
input enable, //variabel input yaitu enable
output reg [7:0] y_out //variabel input dan register yaitu
y_out dengan jumlah bus 8

);
/*Active high decoder*/
always @(w_in, enable) begin //Jika w_in dan enable mendapatkan
masukan

case (w_in) //Pilihan dengan menggunakan w_in sebagai argumen


/*Z=high-impedance*/
3'b000: y_out <= (enable == 1)? 8'b00000001:8'bZ; //Jika w_in
bernilai 000 maka y_out_reg bernilai 00000001 jika enable
bernilai 1 dan 00000000 jika enable bernilai 0
3'b001: y_out_reg <= (enable == 1)? 8'b00000010:8'bZ; //Jika
w_in bernilai 001 maka y_out_reg bernilai 00000010 jika enable
bernilai 1 dan 00000000 jika enable bernilai 0
3'b010: y_out_reg <= (enable == 1)? 8'b00000100:8'bZ; //Jika
w_in bernilai 010 maka y_out_reg bernilai 00000100 jika enable
bernilai 1 dan 00000000 jika enable bernilai 0
3'b011: y_out_reg <= (enable == 1)? 8'b00001000:8'bZ; //Jika
w_in bernilai 011 maka y_out_reg bernilai 00001000 jika enable
bernilai 1 dan 00000000 jika enable bernilai 0
3'b100: y_out_reg <= (enable == 1)? 8'b00010000:8'bZ; //Jika
w_in bernilai 100 maka y_out_reg bernilai 00010000 jika enable
bernilai 1 dan 00000000 jika enable bernilai 0
3'b101: y_out_reg <= (enable == 1)? 8'b00100000:8'bZ; //Jika
w_in bernilai 101 maka y_out_reg bernilai 00100000 jika enable
bernilai 1 dan 00000000 jika enable bernilai 0
3'b110: y_out_reg <= (enable == 1)? 8'b01000000:8'bZ; //Jika
w_in bernilai 110 maka y_out_reg bernilai 01000000 jika enable
bernilai 1 dan 00000000 jika enable bernilai 0
3'b111: y_out_reg <= (enable == 1)? 8'b10000000:8'bZ; //Jika
w_in bernilai 111 maka y_out_reg bernilai 10000000 jika enable
bernilai 1 dan 00000000 jika enable bernilai 0
default: y_out <= (enable == 1)?8'b00000001:8'bZ; //Jika w_in
bernilai selain diatas maka y_out_reg bernilai 00000001 jika
enable bernilai 1 dan 00000000 jika enable bernilai 0

endcase //akhir pilihan


end //akhir statement
endmodule //akhir module
56

3.5.1.2 dec3to8_tb

module dec3to8_tb;
reg [2:0] w_in; //register yaitu 2_in_reg dengan jumlah bus 3
reg enable; //register enable

// Outputs
wire [7:0] y_out; //variabel y_out dengan jumlah bus
8

// Instantiate the Unit Under Test (UUT)


dec3to8 uut (
.w_in (w_in),
.enable (enable),
.y_out (y_out)
);

initial begin
// Initialize Inputs
w_in = 0; //variabel w_in sama dengan 0
enable = 0; //variabel enable sama dengan 0
// Wait 100 ns for global reset to finish
#10; //100 ns

// Add stimulus here


#10 w_in = 3'b000; enable = 1; //untuk masukan 000
dengan enable sama dengan 0 dengan delay 100 ns
#10 w_in = 3'b001; enable = 1; //untuk masukan 001
dengan enable sama dengan 0 dengan delay 100 ns
#10 w_in = 3'b010; enable = 1; //untuk masukan 010
dengan enable sama dengan 0 dengan delay 100 ns
#10 w_in = 3'b011; enable = 1; //untuk masukan 011
dengan enable sama dengan 0 dengan delay 100 ns
#10 w_in = 3'b100; enable = 1; //untuk masukan 100
dengan enable sama dengan 0 dengan delay 100 ns
#10 w_in = 3'b101; enable = 1; //untuk masukan 101
dengan enable sama dengan 0 dengan delay 100 ns
#10 w_in = 3'b110; enable = 1; //untuk masukan 110
dengan enable sama dengan 0 dengan delay 100 ns
#10 w_in = 3'b111; enable = 1; //untuk masukan 11
dengan enable sama dengan 0 dengan delay 100 ns

#10 $finish; //selesai delay 100ns


end

endmodule
57

Tabel 3. 3 Tabel Kebenaran dec3to8_tb

Masukan Keluaran

SW SW SW SW LED LED LED LED LED LED LED LED


3 2 1 0 0 1 2 3 4 5 6 7

1 0 0 0 1 0 0 0 0 0 0 0

1 0 0 1 0 1 0 0 0 0 0 0

1 0 1 0 0 0 1 0 0 0 0 0

1 0 1 1 0 0 0 1 0 0 0 0

1 1 0 0 0 0 0 0 1 0 0 0

1 1 0 1 0 0 0 0 0 1 0 0

1 1 1 0 0 0 0 0 0 0 1 0

1 1 1 1 0 0 0 0 0 0 0 1

Dari tabel didapatkan saat SW_3 , SW_2 , SW_1 , dan SW_0 dengan
masukan 1000 mendapatkan keluaran led 0 – led 7 dengan keluaran 10000000 ,
Saat SW_3 , SW_2 , SW_1 , dan SW_0 dengan masukan 1001 mendapatkan
keluaran led 0 – led 7 dengan keluaran 01000000 , Saat SW_3 , SW_2 , SW_1 ,
dan SW_0 dengan masukan 1010 mendapatkan keluaran led 0 – led 7 dengan
keluaran 00100000 , Saat SW_3 , SW_2 , SW_1 , dan SW_0 dengan masukan
1011 mendapatkan keluaran led 0 – led 7 dengan keluaran 00010000 , Saat SW_3
, SW_2 , SW_1 , dan SW_0 dengan masukan 1100 mendapatkan keluaran led 0 –
led 7 dengan keluaran 00001000 , Saat SW_3 , SW_2 , SW_1 , dan SW_0
dengan masukan 1101 mendapatkan keluaran led 0 – led 7 dengan keluaran
00000100 , Saat SW_3 , SW_2 , SW_1 , dan SW_0 dengan masukan 1110
58

mendapatkan keluaran led 0 – led 7 dengan keluaran 10000010 , Saat SW_3 ,


SW_2 , SW_1 , dan SW_0 dengan masukan 1111 mendapatkan keluaran led 0 –
led 7 dengan keluaran 00000001.

Gambar 3.39 Tampilan hasil akhir pada waveform


59

3.5.2 Enkoder
3.5.2.1 enc2to4

module enc4to2(
input [3:0] w_in, //variabel input yaitu w_in dengan
jumlah bus 4
output reg zero_reg, //variabel output dan register yaitu
zero_reg
output reg [1:0] y_out_reg //variabel output dan register
yaitu y_out_reg dengan jumlah bus 2
);
always @(w_in) begin //Jikaa w_in mendapat masukan
casex (w_in) //Pilihan w_in
4'b0000: begin /*incompletely function, input never happen*/
y_out_reg <= 2'b00; zero_reg = 0;
end
4'b0001: begin
/*Jika w_in bernilai 0001 maka y_out_reg bernilai00 dan zero_reg
bernilai 1*/
y_out_reg <= 2'b00; zero_reg = 1;
end
4'b001X: begin
/*Jika w_in bernilai 001X maka y_out_reg bernilai01 dan zero_reg
bernilai 1*/
y_out_reg <= 2'b01; zero_reg = 1;
end
4'b01XX: begin
/*Jika w_in bernilai 01XX maka y_out_reg bernilai10 dan zero_reg
bernilai 1*/
y_out_reg <= 2'b10; zero_reg = 1;
end
4'b1XXX: begin
/*Jika w_in bernilai 1XXX maka y_out_reg bernilai11 dan zero_reg
bernilai 1*/
y_out_reg <= 2'b11; zero_reg = 1;
end
default: begin
/*Jika w_in bernilai selain diatas maka y_out_reg bernilai11 dan
zero_reg bernilai 1*/
y_out_reg <= 2'b11; zero_reg = 1;
end //Akhir statement
endcase //Akhir pilihan
end //akhir statement

endmodule //akhir module

3.5.2.2 enc2to4_tb
module enc4to2_tb;
reg [3:0] w_in; //register w_in dengan 4 bus
// Outputs
60

wire zero_reg; //register zero_reg


wire [1:0] y_out_reg; //register y_out_reg dengan 2 bus

// Instantiate the Unit Under Test (UUT)


enc4to2 uut (
.w_in(w_in),
.zero_reg(zero_reg),
.y_out_reg(y_out_reg)
);

initial begin
// Initialize Inputs
w_in = 0; //variabel w_in sama dengan 0
// Wait 100 ns for global reset to finish
#10; //delay 100 ns

// Add stimulus here


#10 w_in = 4'b0000; //sebagai masukan 0000 delay 100
ns
#10 w_in = 4'b0001; //sebagai masukan 0001 delay 100
ns
#10 w_in = 4'b0010; //sebagai masukan 0010 delay 100
ns
#10 w_in = 4'b0011; //sebagai masukan 0011 delay 100
ns
#10 w_in = 4'b0100; //sebagai masukan 0100 delay 100
ns
#10 w_in = 4'b0101; //sebagai masukan 0101 delay 100
ns
#10 w_in = 4'b0110; //sebagai masukan 0110 delay 100
ns
#10 w_in = 4'b0111; //sebagai masukan 0111 delay 100
ns
#10 w_in = 4'b1000; //sebagai masukan 1000 delay 100
ns
#10 w_in = 4'b1001; //sebagai masukan 1001 delay 100
ns
#10 w_in = 4'b1010; //sebagai masukan 1010 delay 100
ns
#10 w_in = 4'b1011; //sebagai masukan 1011 delay 100
ns
#10 w_in = 4'b1100; //sebagai masukan 1100 delay 100
ns
#10 w_in = 4'b1101; //sebagai masukan 1101 delay 100
ns
#10 w_in = 4'b1110; //sebagai masukan 1110 delay 100
ns
#10 w_in = 4'b1111; //sebagai masukan 1111 delay 100
ns
#10 $finish; //selesai delay 100 ns
end //akhir statement

endmodule //akhir module


61

Tabel 3. 4 Tabel kebenaran enc4to2_tb

SW SW SW SW
Y1 (LED1) Y2 (LED0) ZERO_REG (LED7)
3 2 1 0

0 0 0 0 0 0 0

0 0 0 1 0 0 1

0 0 1 0 0 1 1

0 0 1 1 0 1 1

0 1 0 0 1 0 1

0 1 0 1 1 0 1

0 1 1 0 1 0 1

0 1 1 1 1 0 1

1 0 0 0 1 1 1

1 0 0 1 1 1 1

1 0 1 0 1 1 1

1 0 1 1 1 1 1

1 1 0 0 1 1 1

1 1 0 1 1 1 1

1 1 1 0 1 1 1

1 1 1 1 1 1 1

Dari table didapatkan saat SW3 , SW 2 , SW1 , dan SW0 dengan kondisi
0000 mendapatkan keluaran led1 , led0 , dan led7 dengan kondisi 000, saat SW3 ,
SW 2 , SW1 , dan SW0 dengan kondisi 0001 mendapatkan keluaran led1 , led0 ,
dan led7 dengan kondisi 001, saat SW3 , SW 2 , SW1 , dan SW0 dengan kondisi
0010 mendapatkan keluaran led1 , led0 , dan led7 dengan kondisi 011, saat SW3 ,
SW 2 , SW1 , dan SW0 dengan kondisi 0011 mendapatkan keluaran led1 , led0 ,
dan led7 dengan kondisi 011, saat SW3 , SW 2 , SW1 , dan SW0 dengan kondisi
0100 mendapatkan keluaran led1 , led0 , dan led7 dengan kondisi 101, saat SW3 ,
SW 2 , SW1 , dan SW0 dengan kondisi 0101 mendapatkan keluaran led1 , led0 ,
dan led7 dengan kondisi 101, saat SW3 , SW 2 , SW1 , dan SW0 dengan kondisi
0110 mendapatkan keluaran led1 , led0 , dan led7 dengan kondisi 101, saat SW3 ,
62

SW 2 , SW1 , dan SW0 dengan kondisi 0111 mendapatkan keluaran led1 , led0 ,
dan led7 dengan kondisi 101, saat SW3 , SW 2 , SW1 , dan SW0 dengan kondisi
1000 mendapatkan keluaran led1 , led0 , dan led7 dengan kondisi 111, saat SW3 ,
SW 2 , SW1 , dan SW0 dengan kondisi 1001 mendapatkan keluaran led1 , led0 ,
dan led7 dengan kondisi 111, saat SW3 , SW 2 , SW1 , dan SW0 dengan kondisi
1010 mendapatkan keluaran led1 , led0 , dan led7 dengan kondisi 111, saat SW3 ,
SW 2 , SW1 , dan SW0 dengan kondisi 1011 mendapatkan keluaran led1 , led0 ,
dan led7 dengan kondisi 111, saat SW3 , SW 2 , SW1 , dan SW0 dengan kondisi
1100 mendapatkan keluaran led1 , led0 , dan led7 dengan kondisi 111, saat SW3 ,
SW 2 , SW1 , dan SW0 dengan kondisi 1101 mendapatkan keluaran led1 , led0 ,
dan led7 dengan kondisi 111, saat SW3 , SW 2 , SW1 , dan SW0 dengan kondisi
1110 mendapatkan keluaran led1 , led0 , dan led7 dengan kondisi 111, saat SW3 ,
SW 2 , SW1 , dan SW0 dengan kondisi 1111 mendapatkan keluaran led1 , led0 ,
dan led7 dengan kondisi 111.

Gambar 3.40 Tampilan hasil akhir pada waveform


63

3.5.3 Demultiplexer
3.5.3.1 demux3to8

module demux_3to8(
input data_in, //variabel input data_in
input [2:0] sel, //variabel input sel dengan 3 bus
output reg [7:0] data_out_reg //variabel output dan register
data_out_reg dengan 8 bus
);

always @(data_in, sel) begin //


data_out_reg = 8'b000000000; /*blocking assignment*/
case (sel) //pilihan variabel sel sebagai argument
3'b000: data_out_reg[0] = data_in; //Jika sel
bernilai 000 maka data_out_reg[0] bernilai data_in
3'b001: data_out_reg[1] = data_in; //Jika sel
bernilai 001 maka data_out_reg[1] bernilai data_in
3'b010: data_out_reg[2] = data_in; //Jika sel
bernilai 010 maka data_out_reg[2] bernilai data_in
3'b011: data_out_reg[3] = data_in; //Jika sel
bernilai 011 maka data_out_reg[3] bernilai data_in
3'b100: data_out_reg[4] = data_in; //Jika sel
bernilai 100 maka data_out_reg[4] bernilai data_in
3'b101: data_out_reg[5] = data_in; //Jika sel
bernilai 101 maka data_out_reg[5] bernilai data_in
3'b110: data_out_reg[6] = data_in; //Jika sel
bernilai 110 maka data_out_reg[6] bernilai data_in
3'b111: data_out_reg[7] = data_in; //Jika sel
bernilai 111 maka data_out_reg[7] bernilai data_in
default: data_out_reg = 8'bZ; //Jika sel
bernilai selain diatas maka data_out_reg bernilai
zero

endcase //akhir pilihan


end //akhir statement

endmodule //akhir module

3.5.3.2 demux3to8_tb

module demux3to8_tb;

reg data_in; //variabel register data_in


reg [2:0] sel; //variabel register sel dengan 3 bus
// Outputs
wire [7:0] data_out_reg; //variabel register data_out_reg
dengan 8 bus

// Instantiate the Unit Under Test (UUT)


demux_3to8 uut (
.data_in (data_in),
.sel (sel),
64

.data_out_reg (data_out_reg)
);

initial begin
// Initialize Inputs
sel = 0; //sel sama dengan 0
data_in = 0; //data_in sama dengan 0
// Wait 100 ns for global reset to finish
#10; //delay 100 ns

// Add stimulus here


#10 sel = 3'b000; data_in = 1; //masukan sel 000
data_in 1 delay 100 ns
#10 sel = 3'b001; data_in = 1; //masukan sel 001
data_in 1 delay 100 ns
#10 sel = 3'b010; data_in = 1; //masukan sel 010
data_in 1 delay 100 ns
#10 sel = 3'b011; data_in = 1; //masukan sel 011
data_in 1 delay 100 ns
#10 sel = 3'b100; data_in = 1; //masukan sel 100
data_in 1 delay 100 ns
#10 sel = 3'b101; data_in = 1; //masukan sel 101
data_in 1 delay 100 ns
#10 sel = 3'b110; data_in = 1; //masukan sel 110
data_in 1 delay 100 ns
#10 sel = 3'b111; data_in = 1; //masukan sel 111
data_in 1 delay 100 ns
#10 $finish; //selesai delay 100 ns
end //akhir statement

endmodule //akhir module

Tabel 3. 5 Tabel kebenaran demux_3to8_proc_tb

Masukan Keluaran

SW SW SW LED LED LED LED LED LED LED LED


BTN_North
2 1 0 0 1 2 3 4 5 6 7

1 0 0 0 1 0 0 0 0 0 0 0

1 0 0 1 0 1 0 0 0 0 0 0

1 0 1 0 0 0 1 0 0 0 0 0
65

1 0 1 1 0 0 0 1 0 0 0 0

1 1 0 0 0 0 0 0 1 0 0 0

1 1 0 1 0 0 0 0 0 1 0 0

1 1 1 0 0 0 0 0 0 0 1 0

1 1 1 1 0 0 0 0 0 0 0 1

Dari tabel didapatkan saat BTN_North , SW_2 , SW_1 , dan SW_0


dengan masukan 1000 mendapatkan keluaran led 0 – led 7 dengan keluaran
10000000 , Saat BTN_North , SW_2 , SW_1 , dan SW_0 dengan masukan 1001
mendapatkan keluaran led 0 – led 7 dengan keluaran 01000000 , Saat
BTN_North , SW_2 , SW_1 , dan SW_0 dengan masukan 1010 mendapatkan
keluaran led 0 – led 7 dengan keluaran 00100000 , Saat BTN_North , SW_2 ,
SW_1 , dan SW_0 dengan masukan 1011 mendapatkan keluaran led 0 – led 7
dengan keluaran 00010000 , Saat BTN_North , SW_2 , SW_1 , dan SW_0
dengan masukan 1100 mendapatkan keluaran led 0 – led 7 dengan keluaran
00001000 , Saat BTN_North , SW_2 , SW_1 , dan SW_0 dengan masukan 1101
mendapatkan keluaran led 0 – led 7 dengan keluaran 00000100 , Saat
BTN_North , SW_2 , SW_1 , dan SW_0 dengan masukan 1110 mendapatkan
keluaran led 0 – led 7 dengan keluaran 10000010 , Saat BTN_North , SW_2 ,
SW_1 , dan SW_0 dengan masukan 1111 mendapatkan keluaran led 0 – led 7
dengan keluaran 00000001.
66

Gambar 3.41 Tampilan hasil akhir pada waveform


67

3.6 Kesimpulan
1. Enkoder merupakan rangkaian yang menerjemahkan keaktifan salah satu
inputnya menjadi urutan bit-bit biner.
2. Dekoder merupakan rangkaian logika yang menerima input biner dan
mengaktifkan salah satu outputnya sesuai dengan urutan biner inputnya.
3. Dekoder berfungsi untuk mengubah masukan berbentuk biner menjadi
keluaran yang berbentuk decimal.
4. Dekoder mempunyai n input danmempunyai 2n output.
5. Demux atau demultiplexer adalah rangkaian kombinasional yang memiliki
beberapa output dan sebuah input.
6. Demultiplexer berfungsi untuk memilih salah satu dari beberapa sinyal output
dengan menggunakan selector.
BAB IV

DECODER TO 7-SEGMENT (HDL)

4.1 Tujuan
1. Praktikan dapat membuat modul pencacah hexa/desimal up-down dengan
set-reset dan konverter hexa-ke-7 segmen.
2. Praktikan dapat mengimplementasikan rangkaian kombinasional tersebut ke
FPGA.
3. Praktikan dapat mengatur rangkaian dan memasang kabel ke FPGA.

4. Praktikan dapat mengimplementasikan rangkaian kombinasional tersebut ke


FPGA.
5. Praktikan dapat menganalisis hasil implementasi rangkaian kombinasional
tersebut, yaitu skematik RTL dan utilisasi/penggunaan device untuk device
tersebut.
6. Praktikan dapat menganalisis perilaku masukan-keluran desain pada
waveform

7.
69

4.2 Alat dan Bahan


4.2.1 Laptop

Gambar 4.1 Laptop


PC merupakan perangkat yang digunakan untuk menginstalasi segala
perangkat lunak (software) yang digunakan saat praktikum, yaitu Xilinx ISE

4.2.2 Board Starter Kit Spartan-3E


Board Starter Kit Spartan-3E berbasis Xilinx FPGA XC3S500E-4FG320C
merupakan board pengembang yang cocok untuk merancang pemrograman FPGA
menggunakan Xilinx

Gambar 4.2 Board Starter Kit Spartan-3E


70

4.2.3 Xilinx ISE Webpack 12.2


Xilinx ISE Webpack 11.1 merupakan perangkat lunak yang digunakan
untuk merancang dan mensimulasikan suatu rangkaian digital ke dalam board
Starter Kit Spartan-3E.

Gambar 4.3 Xilinx ISE Webpack12.2


4.2.4 ISE Simulator
ISE Simulator adalah perangkat lunak yang dihasilkan oleh Xilinx untuk
sintesis dan analisis desain HDL , memungkinkan pengembang
untuk mensintesis ("mengkompilasi") desain mereka, melakukan analisis waktu ,
memeriksa RTL diagram, simulasikan reaksi desain terhadap rangsangan yang
berbeda, dan konfigurasikan perangkat target dengan programmer .

Gambar 4.4 ISE Simulator


71

4.3 Dasar Teori


4.3.1 Board Starter Kit Spartan-3E
Dekoder BCD-ke-7 segmen ini mengkonversikan satu digit BCD (binary-
coded decimal, kode biner untuk bilangan desimal) untuk mendrive display
berorientasi digit, yaitu 7-segmen. Lebih luasnya adalah berupa hexadesimal-ke-
7segmen. Display ini mempunyai 7 segmen. Tiap segmen diimplementasikan
dengan 1 LED yang akan menyala saat didrive dengan sinyal bernilai '1' (lihat
gambar berikut).

Gambar 4.5 Dekoder BCD ke 7-segmen beserta tabel kebenaran fungsi logikanya
Dekoder biner-ke-7 Segmen menambahkan masukan 1010 sampai 1111
untuk menghasilkan keluaran tampilan A, B, C, D, E dan F.

Gambar 4.6 Tampilan keluaran dekoder hexa-ke-7 Segmen


(Sumber: Modul 3 Praktikum SDL 2019)
72

4.3.2 Xilinx ISE Webpack 11.1


Software Xilinx ISE Webpack 11.1 akan digunakan sebagai GUI untuk
merancang problem sistem digital yang diinginkan. Selanjutnya, Xilinx ISE
Webpack 11.1 disebut sebagai ISE. ISE telah ter-install di komputer masing
masing. ISE berisi tool-tool untuk mengembangkan rancangan sistem digital
terprogram. Tool yang akan digunakan dalam praktikum adalah:
1. ISE Project Navigator digunakan untuk membuat proyek baru, memasukan
entry desain (HDL, skematik), kompilasi desain (sintesis),
mengimplementasikan desain dan membangkitkan file programming
(konfigurasi FPGA). Tool lain dari ISE dipanggil dari Project Navigator ini.
2. ISE iMPACT digunakan untuk menuliskan file konfigurasi FPGA ke Board
Starter Kit. GUI dari program ISE Project Navigator diperlihatkan dalam
Gambar 4.7 GUI dari program ISE iMPACT diperlihatkan dalam Gambar
4.8.

Gambar 4.7 ISE Project Navigator GUI: Explorer, Proses, Entry, dan Log
73

Gambar 4.8 ISE iMPACT: Konfigurasi Boundary Scan (JTAG)


(Sumber: Modul 3 Praktikum SDL 2019pdf)

4.3.3 Decoder to 7-Segment


Dekoder adalah rangkaian logika yang menerima inputs biner dan
mengaktifkan salah satu output-nya sesuai dengan urutan biner input-nya.
Rangkaian dekoder mempunyai sifat yang berkebalikan dengan enkoder yaitu
merubah kode biner menjadi sinyal diskrit. Syarat perancangan sebuah dekoder
adalah m ≤ 2n dimana m adalah kombinasi keluaran dan n adalah jumlah bit
masukan. Satu kombinasi masukan hanya dapat mewakili satu kombinasi
keluaran. Sehingga dapat disimpulkan bahwa variabel keluaran bebas tapi harus
tetap memperhatikan unsur efisiensi rangkaian. Misal dekoder 3 bit memiliki 8
atau kurang kombinasi keluaran tetapi bisa memiliki jumlah saluran keluaran
lebih dari 8 (10 atau 55 atau 100 dan sebagainya). Contoh rangkaian decoder adalah
rangkaian decoder dot matriks, dan decoder 7 segment.
Seven segment display adalah sebuah rangkaian yang dapat menampilkan
angka-angka 1abel maupun heksadesimal. Seven segment display biasa tersusun atas
7 bagian yang setiap bagiannya merupakan LED (Light Emitting Diode) yang dapat
menyala. Jika 7 bagian dioda ini dinyalakan dengan aturan yang sedemikian rupa,
maka ketujuh bagian tersebut dapat menampilkan sebuah angka heksadesimal. Seven
segment display membutuhkan 7 sinyal input untuk mengendalikan setiap dioda di
dalamnya. Setiap dioda dapat membutuhkan input HIGH atau LOW untuk
mengaktifkannya, tergantung dari jenis seven segment display tersebut. Jika Seven
74

segment bertipe common-cathode, maka dibutuhkan sinyal HIGH untuk


mengaktifkan setiap diodanya. Sebaliknya, common-annode, dibutuhkan input LOW
untuk mengaktifkan setiap diodanya.

Gambar 4.9 Decoder to Seven Segment


Salah satu cara untuk menghasilkan sinyal-sinyal pengendali dari suatu
seven segment display yaitu menggunakan sebuah seven segment decoder. Seven
segment decoder membutuhkan 4 input sebagai angka berbasis heksadesimal yang
dinyatakan dalam bahasa mesin (biner) kemudian sinyal-sinyal masukan tersebut
akan “diterjemahkan” dekoder ke dalam sinyal-sinyal pengendali seven segment
display. Sinyal-sinyal pengendali berisi 7 sinyal yang setiap sinyalnya mengatur
aktif-tidaknya setiap LED.

Gambar 4. 10 Tabel Kebenaran Dekoder ke 7 Segmen


(Sumber: Modul 3 Praktikum SDL 2019/)
75

4.3.4 Pencacah Desimal


Pencacah asinkron ini mempunyai 5 jalur masukan kontrol up dan down,
set, reset dan selector Dec/Hexa serta 4 jalur keluaran. Kontrol Up menambah isi
register keluaran dengan 1, sedangkan kontrol Down mengurangkan isi register
keluaran dengan 1. Kontrol Set mengeset isi register dengan 9 (desimal) atau
0xFF (hexa), sedangkan kontrol Reset mereset isi register ke 0.

Gambar 4.11 Pencacah Desimal/Hexa Asinkron 4-bit dengan Set-Reset


(Sumber: Modul 3 Praktikum SDL 2019)
76

4.4 Langkah Kerja


4.4.1 Langkah Percobaan 1
1. Membuat Proyek
1. Buka aplikasi ISE Project Navigator lalu pilih New Project
2. Kemudian isi nama project dengan nama bcd_kel17. Lalu klik Next.

Gambar 4.12 New Project


3. Kemudian akan muncul jendela Device Properties. Pada kotak Family
isikan dengan Spartan3E, pada Device dengan XC3S500E, pada Package
dengan FG320, pada Speed dengan -4 sedangkan pada Set Preffered
Language diisikan dengan Verilog. Klik tombol Next.

Gambar 4.13 Device Properties


77

4. Lalu akan muncul jendela Project Summary. Pastikan ringkasan proyek


sesuai dengan yang tercatat di modul praktikum. Klik tombol Finish.

Gambar 4.14 Summary


2. File Desain *.v dan *.ucf

1. Klik menu Project, New Source untuk membuat file source baru. Jendela
New Source Wizard akan muncul. Klik Verilog Module sebagai Source
Type. Isikan field File Name dengan nama hex_7seg. Location sama dengan
lokasi proyek. Pastikan checkbox Add to project tercentang. Klik tombol
Next.

Gambar 4.15 Mengisikan nama file hex_7seg


2. Klik Next pada jendela Define Module.
78

Gambar 4.16 Define Module


3. Akan muncul jendela Summary. Klik Finish.

Gambar 4.17 Summary


4. Lalu isikan listing code yang telah ada.

Gambar 4.18 Listing Code hex_7seg


79

5. Klik menu Project, New Source untuk membuat file source baru. Jendela
New Source Wizard akan muncul. Klik Verilog Module sebagai Source
Type. Isikan field File Name dengan nama debouncer. Location sama
dengan lokasi proyek. Pastikan checkbox Add to project tercentang. Klik
tombol Next.

Gambar 4.19 Mengisikan nama file debouncer

6. Klik Next pada jendela Define Module.

Gambar 4.20 Define Module

7. Akan muncul jendela Summary. Klik Finish.


80

Gambar 4.21 Summary

8. Lalu isikan listing code yang telah ada.

Gambar 4.22 Listing Code debouncer

9. Klik menu Project, New Source untuk membuat file source baru. Jendela
New Source Wizard akan muncul. Klik Verilog Module sebagai Source
Type. Isikan field File Name dengan nama count_1. Location sama dengan
lokasi proyek. Pastikan checkbox Add to project tercentang. Klik tombol
Next.
81

Gambar 4.23 Mengisikan nama file count_1


10. Klik Next pada jendela Define Module.

Gambar 4.24 Define Module


11. Akan muncul jendela Summary. Klik Finish.

Gambar 4.25 Summary


82

12. Lalu isikan listing code yang telah ada.

Gambar 4.26 Listing Code count_1


13. Klik menu Project, New Source untuk membuat file source baru. Jendela
New Source Wizard akan muncul. Klik Verilog Module sebagai Source
Type. Isikan field File Name dengan nama kombinasional_top. Location
sama dengan lokasi proyek. Pastikan checkbox Add to project tercentang.
Klik tombol Next.

Gambar 4.27 Mengisikan nama file Kombinasional_top


83

14. Klik Next pada jendela Define Module.

Gambar 4.28 Define Module


15. Akan muncul jendela Summary. Klik Finish.

Gambar 4.29 Summary


16. Lalu isikan listing code yang telah ada.

Gambar 4.30 Listing Code kombinasional_top


84

17. Klik menu Project, New Source untuk membuat file source baru. Jendela
New Source Wizard akan muncul. Klik Implementation Constraints File
sebagai Source Type. Isikan field File Name dengan nama
DESAIN_KOMBINASIONAL. Location sama dengan lokasi proyek.
Pastikan checkbox Add to project tercentang. Klik tombol Next.

Gambar 4.31 Mengisikan nama DESAIN_KOMBINASIONAL


18. Klik Next pada jendela Define Module.
19. Akan muncul jendela Summary. Klik Finish.

Gambar 4.32 Summary


20. Lalu isikan listing code yang telah ada.

Gambar 4.33 Listing Code Desain_Kombinasional


85

21. Klik pada kombinasional_top lalu pilih Set as Top Module.

Gambar 4.34 Set as Top Module


22. Lalu akan muncul window pemberitahuan, pilih Yes.

Gambar 4.35 Pemberitahuan Changging the top module


3. Menampilkan RTL Schematic
1. Pilih View RTL Schematic laluakan muncul sebuah window. Pilih pilihan
Start with the Explorer Wizard lalu klik OK.

Gambar 4.36 View RTL Schematic


86

2. Klik pada semua nama file yang telah kita buat lalu klik Add. Setelah itu
klik Create Schematic pada tombol disebelah kanan bawah

Gambar 4.37 Add dan Create Schematic


3. Setelah itu akan muncul desain schematic yang diinginkan.

Gambar 4.38 Desain Schematic


87

4.4.2 Langkah Percobaan 2


1. Membuat Proyek
1. Buka aplikasi Xilinx ISE. Kemudian pilih menu File, New Project. Kotak
Dialog New Project Wizard akan muncul. Ketikkan field name dengan nama
kelompok17_bcd. Dan pilih HDL, Next.

Gambar 4.39 Membuat projek baru pada aplikasi Xilinx


2. Pada new project wizard, pilih family Spartan3E, device XC3S500E,
Package (FG320), Speed (-4). Set Preffered Language dengan Verilog. Klik
tombol Next.
88

Gambar 4.40 Setting konfigurasi pada aplikasi Xilinx

3. Pastikan ringkasannya sesuai yang dimasukan tadi, lalu klik finish

Gambar 4.41 Ringkasan project pada aplikasi Xilinx


89

2. Membuat File Desain dan Test Bench


1. Pilih / buat new source lalu pada source pilih verilog module(*.v) , isikan
field name dengan hex_7seg_1 kemudian add to project di centang dan
lokasi sesuai dengan project yg dibuat.

Gambar 4.42 Membuat source baru dengan Verilog Module


2. Kemudian pilih next

Gambar 4.43 Kotak Dialog Define Module


3. Pastikan ringkasannya sesuai yang dimasukan tadi, lalu klik finish.
90

Gambar 4.44 Kotak Dialog Summary


4. Masukan source code hex_7seg_1, lalu save (ctrl+s).

Gambar 4.45 Source code hex_7seg_1


5. Pilih / buat new source lalu pada source pilih verilog text ficture sebagai
testbenchnya , isikan field name dengan hex_7seg_1_tb kemudian add to
project di centang dan lokasi sesuai dengan project yg dibuat.
91

Gambar 4.46 Membuat source baru dengan Verilog Test Fixture


6. Pilih hex_7seg_1 sebagai sumber yang dihubungkan, kemudian next

Gambar 4.47 Kotak dialog Associate Source


7. Pastikan ringkasannya sesuai dengan konfigurasi diawal, kemudian pilih
finish

Gambar 4.48 Kotak Dialog Summary


8. Masukan source code hex_7seg_1_tb, lalu save (ctrl+s).
92

Gambar 4.49 Source code hex_7seg_1_tb


Menampilkan ISim
1. Pilih simulation pada ekplorer desain yang berada dikanan atas.

Gambar 4.50 Mensimulasikan ISim di Xilinx


2. Kemudian click 2 kali pada simulate behavior model untuk menampilkan
Isim pada proses desain yang berada dikanan atas.

Gambar 4.51 Mensimulasikan ISim di Xilinx


3. Amati hasil ISim pada Xilinx
93

Gambar 4.52 Hasil simulasi ISim di Xilinx


94

4.5 Analisa Perilaku Sistem dan Hasil Percobaan


4.5.1 Analisa Percobaan 1

Tabel 4. 1 Hasil Percobaan BCD to 7-Segment menggunakan FPGA Xilinx (Mode Desimal)

BUTTON OUTPUT SEGMEN


SW0
BTN_ BTN_ BTN_ BTN_
NORTH SOUTH WEST EAST A B C D E F G
0 0 0 0 0 1 1 1 1 1 1 0 0
0 0 0 1 0 0 1 1 0 0 0 0 1
0 0 0 1 0 1 1 0 1 1 0 1 2
0 0 0 1 0 1 1 1 1 0 0 1 3
0 0 0 1 0 0 1 1 0 0 1 1 4
0 0 0 1 0 1 0 1 1 0 1 1 5
0 0 0 1 0 1 0 1 1 1 1 1 6
0 0 0 1 0 1 1 1 0 0 0 0 7
0 0 0 1 0 1 1 1 1 1 1 1 8
0 0 0 1 0 1 1 1 1 0 1 1 9
0 0 0 1 0 1 1 1 1 0 1 1 9
0 0 1 0 0 1 1 1 1 1 1 1 8
0 0 1 0 0 1 1 1 0 0 0 0 7
0 0 1 0 0 1 0 1 1 1 1 1 6
0 0 1 0 0 1 0 1 1 0 1 1 5
0 0 1 0 0 0 1 1 0 0 1 1 4
0 0 1 0 0 1 1 1 1 0 0 1 3
0 0 1 0 0 1 1 0 1 1 0 1 2
0 0 1 0 0 0 1 1 0 0 0 0 1
0 0 1 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 1 0
95

1 0 0 0 0 1 1 1 1 0 1 1 9
0 1 0 0 0 1 1 1 1 1 1 0 0
Saat kondisi 1 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST

dengan keadaan 0000 dan SW 0 dengan keadaan 0 maka menghasilkan keluaran 7


segment 1111110 dengan membentuk angka 0. Saat kondisi 2

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 0 maka menghasilkan keluaran 7 segment 0110000 dengan
membentuk angka 1. Saat kondisi 3 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0001 dan SW 0 dengan keadaan 0 maka


menghasilkan keluaran 7 segment 1101101 dengan membentuk angka 2. Saat
kondisi 4 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 0 maka menghasilkan keluaran 7
segment 1111001 dengan membentuk angka 3. Saat kondisi 5

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 0 maka menghasilkan keluaran 7 segment 0110011 dengan
membentuk angka 4. Saat kondisi 6 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0001 dan SW 0 dengan keadaan 0 maka


menghasilkan keluaran 7 segment 1011011 dengan membentuk angka 5. Saat
kondisi 7 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 0 maka menghasilkan keluaran 7
segment 1011111 dengan membentuk angka 6. Saat kondisi 8

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 0 maka menghasilkan keluaran 7 segment 1110000 dengan
membentuk angka 7. Saat kondisi 9 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0001 dan SW 0 dengan keadaan 0 maka


menghasilkan keluaran 7 segment 1111111 dengan membentuk angka 8. Saat
kondisi 10 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 0 maka menghasilkan keluaran 7
segment 1111011 dengan membentuk angka 9. Saat kondisi 11

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0010 dan


96

SW 0 dengan keadaan 0 maka menghasilkan keluaran 7 segment 1111011 dengan


membentuk angka 9. Saat kondisi 12 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0010 dan SW 0 dengan keadaan 0 maka


menghasilkan keluaran 7 segment 1111111 dengan membentuk angka 8. Saat
kondisi 13 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0010 dan SW 0 dengan keadaan 0 maka menghasilkan keluaran 7
segment 1110000 dengan membentuk angka 7. Saat kondisi 14

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0010 dan


SW 0 dengan keadaan 0 maka menghasilkan keluaran 7 segment 1011111 dengan
membentuk angka 6. Saat kondisi 15 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0010 dan SW 0 dengan keadaan 0 maka


menghasilkan keluaran 7 segment 1011011 dengan membentuk angka 5. Saat
kondisi 16 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 0 maka menghasilkan keluaran 7
segment 0110011 dengan membentuk angka 4. Saat kondisi 17

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0010 dan


SW 0 dengan keadaan 0 maka menghasilkan keluaran 7 segment 1111001 dengan
membentuk angka 3. Saat kondisi 18 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0010 dan SW 0 dengan keadaan 0 maka


menghasilkan keluaran 7 segment 1101101 dengan membentuk angka 2. Saat
kondisi 19 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0010 dan SW 0 dengan keadaan 0 maka menghasilkan keluaran 7
segment 0110000 dengan membentuk angka 1. Saat kondisi 21

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0010 dan


SW 0 dengan keadaan 0 maka menghasilkan keluaran 7 segment 1111110 dengan
membentuk angka 0. Saat kondisi 22 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0010 dan SW 0 dengan keadaan 0 maka


menghasilkan keluaran 7 segment 1111110 dengan membentuk angka 0. Saat
kondisi 23 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 1000 dan SW 0 dengan keadaan 0 maka menghasilkan keluaran 7
97

segment 1111011 dengan membentuk angka 9. Saat kondisi 24

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0100 dan


SW 0 dengan keadaan 0 maka menghasilkan keluaran 7 segment 1111110 dengan
membentuk angka 0.
Dari analisa di atas sehingga fungsi BTN_NORTH;
Sebagai masukan yang akan mengeluarkan hasil atau nilai
yang terbesar BTN_SOUTH; Sebagai Masukan yang akan
mengeluarkan hasil atau nilai yang terkecil. BTN_WEST;
Sebagai masukan yang akan mengeluarkan hasil atau nilai
awalan yang urut dari kecil hingga besar BTN_EAST; Sebagai
masukan yang akan mengeluarkan hasil atau nilai awalan
yang urut dari besar hingga kecil.
Tabel 4. 2 Hasil Percobaan BCD to 7-Segment menggunakan FPGA Xilinx (Mode Hexadesimal)

BUTTON SW0 OUTPUT SEGMEN


BTN_ BTN_
BTN_ BTN_
NORT SOUT
WEST EAST A B C D E F G
H H

0 0 0 0 1 1 1 1 1 1 1 0 0
0 0 0 1 1 0 1 1 0 0 0 0 1
0 0 0 1 1 1 1 0 1 1 0 1 2
0 0 0 1 1 1 1 1 1 0 0 1 3
0 0 0 1 1 0 1 1 0 0 1 1 4
0 0 0 1 1 1 0 1 1 0 1 1 5
0 0 0 1 1 1 0 1 1 1 1 1 6
0 0 0 1 1 1 1 1 0 0 0 0 7
0 0 0 1 1 1 1 1 1 1 1 1 8
0 0 0 1 1 1 1 1 1 0 1 1 9
0 0 0 1 1 1 1 1 1 1 0 1 a
0 0 0 1 1 0 0 1 1 1 1 1 b
0 0 0 1 1 1 0 0 1 1 1 0 C
0 0 0 1 1 0 1 1 1 1 0 1 d
98

0 0 0 1 1 1 1 1 1 1 0 1 E
0 0 0 1 1 1 0 0 0 1 1 1 F
0 0 0 1 1 1 0 0 0 1 1 1 F
0 0 1 0 1 1 0 0 1 1 1 1 E
0 0 1 0 1 0 1 1 1 1 0 1 d
0 0 1 0 1 1 0 0 1 1 1 0 C
0 0 1 0 1 0 0 1 1 1 1 1 b
0 0 1 0 1 1 1 1 1 1 0 1 a
0 0 1 0 1 1 1 1 1 0 0 1 a
1 0 0 0 1 1 1 1 1 0 1 1 F
0 1 0 0 1 1 1 1 1 1 1 0 0
Saat kondisi 1 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST

dengan keadaan 0000 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7


segment 1111110 dengan membentuk angka 0. Saat kondisi 2

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 1 maka menghasilkan keluaran 7 segment 0110000 dengan
membentuk angka 1. Saat kondisi 3 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0001 dan SW 0 dengan keadaan 1 maka


menghasilkan keluaran 7 segment 1101101 dengan membentuk angka 2. Saat
kondisi 4 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7
segment 1111001 dengan membentuk angka 3. Saat kondisi 5

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 1 maka menghasilkan keluaran 7 segment 0110011 dengan
membentuk angka 4. Saat kondisi 6 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0001 dan SW 0 dengan keadaan 1 maka


menghasilkan keluaran 7 segment 1011011 dengan membentuk angka 5. Saat
kondisi 7 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7
99

segment 1011111 dengan membentuk angka 6. Saat kondisi 8

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 1 maka menghasilkan keluaran 7 segment 1110000 dengan
membentuk angka 7. Saat kondisi 9 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0001 dan SW 0 dengan keadaan 1 maka


menghasilkan keluaran 7 segment 1111111 dengan membentuk angka 8. Saat
kondisi 10 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7
segment 1111011 dengan membentuk angka 9. Saat kondisi 11

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 1 maka menghasilkan keluaran 7 segment 1111101 dengan
membentuk angka a. Saat kondisi 12 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0001 dan SW 0 dengan keadaan 1 maka


menghasilkan keluaran 7 segment 0011111 dengan membentuk angka b. Saat
kondisi 13 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7
segment 1001110 dengan membentuk angka C. Saat kondisi 14

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 1 maka menghasilkan keluaran 7 segment 0111101 dengan
membentuk angka d. Saat kondisi 15 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0001 dan SW 0 dengan keadaan 1 maka


menghasilkan keluaran 7 segment 1001111 dengan membentuk angka E. Saat
kondisi 16 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0001 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7
segment 1000111 dengan membentuk angka F. Saat kondisi 17

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0001 dan


SW 0 dengan keadaan 1 maka menghasilkan keluaran 7 segment 1000111 dengan
membentuk angka F. Saat kondisi 18 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0010 dan SW 0 dengan keadaan 1 maka


menghasilkan keluaran 7 segment 1001111 dengan membentuk angka E. Saat
100

kondisi 19 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan


keadaan 0010 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7
segment 0111101 dengan membentuk angka d. Saat kondisi 20

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0010 dan


SW 0 dengan keadaan 1 maka menghasilkan keluaran 7 segment 1001110 dengan
membentuk angka C. Saat kondisi 21 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 0010 dan SW 0 dengan keadaan 1 maka


menghasilkan keluaran 7 segment 0011111 dengan membentuk angka b. Saat
kondisi 22 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0010 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7
segment 1111101 dengan membentuk angka a. Saat kondisi 23

BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan keadaan 0010 dan


SW 0 dengan keadaan 1 maka menghasilkan keluaran 7 segment 1111101 dengan
membentuk angka a. Saat kondisi 24 BTN_NORTH; BTN_SOUTH;

BTN_WEST; BTN_EAST dengan keadaan 1000 dan SW 0 dengan keadaan 1 maka


menghasilkan keluaran 7 segment 1000111 dengan membentuk angka F. Saat
kondisi 25 BTN_NORTH; BTN_SOUTH; BTN_WEST; BTN_EAST dengan
keadaan 0100 dan SW 0 dengan keadaan 1 maka menghasilkan keluaran 7
segment 1111110 dengan membentuk angka 0.
Dari analisa di atas sehingga fungsi BTN_NORTH;
Sebagai masukan yang akan mengeluarkan hasil atau nilai
yang terbesar BTN_SOUTH; Sebagai Masukan yang akan
mengeluarkan hasil atau nilai yang terkecil. BTN_WEST;
Sebagai masukan yang akan mengeluarkan hasil atau nilai
awalan yang urut dari kecil hingga besar BTN_EAST; Sebagai
masukan yang akan mengeluarkan hasil atau nilai awalan
yang urut dari besar hingga kecil
101

4.5.2 Analisa Percobaan 2

Gambar 4.53 Hasil Simulasi ISim di Xilinx

Tabel 4. 3 Input Output pada Xilinx


w_in seg_value
3 2 1 0 6 5 4 3 2 1 0
0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1
0 0 1 1 1 1 1 1 0 0 1
0 1 0 0 0 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 1
0 1 1 0 1 0 1 1 1 1 1
0 1 1 1 1 1 1 0 0 0 0
1 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 0 1 1
1 0 1 0 1 1 1 1 1 0 1
1 0 1 1 0 0 1 1 1 1 1
1 1 1 1 1 0 0 0 1 1 1
Pada percoban 2, input berupa w_in dan output berupa seg_value. Input
w_in ada 4 masukan yaitu 3, 2, 1, dan 0. Output terdapat 7 yaitu dari seg_value
6, 5, 4, 3, 2, 1, dan 0. Saat kondisi input 0000 mendapatkan output 1111110, Saat
kondisi input 0001 mendapatkan output 0110000, Saat kondisi input 0010
mendapatkan output 1101101, Saat kondisi input 0011 mendapatkan output
1111001, Saat kondisi input 0100 mendapatkan output 0110011, Saat kondisi
input 0101 mendapatkan output 1011011, Saat kondisi input 0110 mendapatkan
102

output 1011111, Saat kondisi input 0111 mendapatkan output 1110000, Saat
kondisi input 1000 mendapatkan output 1111111, Saat kondisi input 1001
mendapatkan output 1111011, Saat kondisi input 1010 mendapatkan output
1111101, Saat kondisi input 1011 mendapatkan output 0011111, Saat kondisi
input 1111 mendapatkan output 1000111.
103

4.6 Kesimpulan
1. Pemrograman FPGA merupakan salah satu pemrograman untuk
mengimplementasikan rangkaian digital.
2. Dibutuhkan Top module yang digunakan untuk pusat dari desain modul untuk
modul-modul yang lain supaya bisa dihubungkan dan dapat digunakan
3. Modul debouncer digunakan untuk menstabilkan penekanan tombol
BTN_WEST (Down) dan BTN_EAST (Up).
4. Decoder BCD ke 7 segment merupakan rangkaian elektronika yang berfungsi
untuk mengubah kode BCD menjadi karakter tampilan angka desimal yang
dapat dilihat secara visual.
5. BTN_NORTH pada Xilinx berguna untuk mengambil nilai tertinggi. Jika SW0
aktif, maka akan tertampilkan angka 9 untuk bilangan tertinggi. Jika SW0 tidak
aktif, maka akan tertampilkan huruf F sebagai yang tertinggi.
6. Pencacah digunakan di rangkaian aritmatika untuk pencacahan dan melakukan
beberapa fungsi seperti menghitung kejadian dari suatu kejadian (event),
membangkitkan interval waktu untuk mengontrol pekerjaan-pekerjaan (task) di
sistem digital, menghitung waktu mundur antar event, dan rangkaian counter
yang paling sederhana dapat dibuat dengan menggunakan flip-flop T.
7. Rangkaian dapat berupa pencacah naik +1 (incremental) maupun turun -1
(decremental).
BAB V
DESAIN COUNTER

5.1 Tujuan
1. Praktikan mengerti konsep secara menyeluruh dari desain counter
2. Praktikan mengerti konsep rangkaian sekeunsial
3. Praktikan dapat menganalisis hasil dari rangkaian sekuensial
4. Praktikan paham mengerti cara perhitungan counter
5. Praktikan dapat menganalisis keluaran yang berupa perubahan sinyal pada
oskiloskop.
6. Praktikan dapat memahami prinsip kerja Counter.
7. Praktikan dapat merancang rangkaian logika dari Counter sesuai dengan
spesifikasi masukan-keluaran yang telah ditentukan.
8. Praktikan dapat mengimplementasikan desain rangkaian Counter
menggunakan komponen gerbang-gerbang logika serta menganalisis
masukan-keluaran dari rangkaian tersebut.
105

5.2 Alat dan Bahan


5.2.1 Laptop

Gambar 5.1 Laptop


PC merupakan perangkat yang digunakan untuk menginstalasi segala
perangkat lunak (software) yang digunakan saat praktikum, yaitu Xilinx ISE.
5.2.2 Xilinx ISE Webpack 12.2

Gambar 5.2 Xilinx ISE Webpack12.2


Xilinx ISE Webpack 12.2 merupakan perangkat lunak yang digunakan
untuk merancang dan mensimulasikan suatu rangkaian digital ke dalam board
Starter Kit Spartan-3E.
106

5.3 Dasar Teori


5.3.1 Sinyal Clock
Clock merupakan sinyal listrik yang berupa suatu denyutan dan berfungsi
untuk mengkoordinasikan atau mengsinkronisasikan setiap aksi-aksi atau proses-
proses yg dilakukan oleh setiap komponen didalam perangkat elektronika. Oleh
karena itu nilai Clock sangat penting artinya agar perangkat elektronik dapat
berfungsi sebagaimana mestinya. Jika tidak ada sinyal clock maka komponen-
komponen akan berjalan sendiri-sendiri dan tidak terkoordinasi sehingga
menyebabkan kekacauan sistem.

Gambar 5.3 Sinyal Clock


Ada beberapa istilah penting yg berkaitan dengan clock, yaitu :
 Cycle : adalah satuan yang digunakan untuk menandakan selesainya satu siklus
clock, mulai dari denyutan dikeluarkan kemudian naik hingga nilainya
mencapai 1 lalu mulai turun nilainya hingga 0.
 Cycle Time (T) : adalah jumlah waktu yg diperlukan oleh sinyal clock untuk
menyelesaikan satu (1) siklus clock.
 Rise Time : adalah waktu yang dibutuhkan untuk perubahan nilai clock dari 0
ke 1.
 Fall Time : adalah waktu yang dibutuhkan untuk perubahan nilai clock dari 1
ke 0
Clock Frequency (F) : adalah besaran untuk menilai kemampuan suatu sinyal
clock dalam menciptakan satu siklus denyutan setiap detiknya alias berapa
banyak cycle per detik yang dapat di hasilkan oleh sinyal clock. Sesuai standra
internasional, Satuan yang digunakan untuk mengukurnya adalah Hertz = Hz,
dimana 1Hz sama dengan satu cycle per detik.
107

5.3.2 Software Xilinx


Software Xilinx ISE Webpack 12.2 akan digunakan sebagai GUI untuk
merancang problem sistem digital yang diinginkan. Selanjutnya Xilinx ISE
Webpack 12.2 disebut sebagai ISE. ISE telah terinstall di komputer masing-
masing. ISE berisi tool-tool untuk mengembangkan rancangan sistem digital
terprogram. Tool yang akan digunakan dalam praktikum adalah:
3. ISE Project Navigator digunakan untuk membuat proyek baru,
memasukan entry desain (HDL, skematik), kompilasi desain (sintesis),
mengimplementasikan desain dan membangkitkan file programming (konfigurasi
FPGA). Tool lain dari ISE dipanggil dari Project Navigator ini.
4. ISE iMPACT digunakan untuk menuliskan file konfigurasi FPGA ke
board Starter Kit.GUI dari program ISE Project Navigator diperlihatkan dalam
Gambar 2.3 GUI dari program ISE iMPACT diperlihatkan dalam Gambar 2.4.

Gambar 5.4 ISE Project Navigator GUI: Eksplorer, Proses, Entry dan Log

Gambar 5.5 ISE iMPACT: Konfigurasi Boundary Scan (JTAG)


(Sumber : laporan bab 3 praktikum SDL)
108

5.3.3 Simulasi Sinyal Digital


Simulasi Sinyal digital adalah hasil dari perangkat komputasi awal yang
dikenal sebagai "komputer analog listrik.
Simulasi digital dari tekanan operasi mudah dilakukan dengan
perkembangan terbaru dalam teknologi komputer. Paket perangkat lunak
komputer untuk simulasi dinamis dan analisis elemen hingga tersedia secara
komersial. Hasil analisis ini digunakan untuk mengevaluasi umur kelelahan dalam
hubungannya dengan metode estimasi umur kelelahan seperti yang dijelaskan.
Mereka memberikan estimasi umur kelelahan berdasarkan asumsi yang diberikan.
Namun, keakuratan analisis sangat bergantung pada asumsi. Untuk yakin bahwa
mesin akan bertahan cukup lama, perkiraan umur kelelahan yang diharapkan
harus cukup akurat. Sayangnya, evaluasi umur kelelahan dari pemuatan amplitudo
variabel belum tentu cukup akurat. Metode evaluasi itu sendiri mengandung
asumsi, dan ketika benar-benar dibuat struktur dapat mencakup berbagai
ketidakpastian, seperti kondisi batas tidak terbatas, perilaku nonlinier,
ketidakselarasan dalam perakitan, cacat dalam proses fabrikasi yang sebenarnya,
dan sebagainya. Masih ada keinginan untuk mengkonfirmasi umur kelelahan
menggunakan komponen nyata. Oleh karena itu simulasi uji keletihan masih
dilakukan menggunakan spesimen uji, komponen mesin, atau struktur skala
penuh.
Apa yang paling diinginkan, adalah menerapkan riwayat beban operasi
aktual pada mesin skala penuh: tetapi ini biasanya mahal dan memakan waktu.
Oleh karena itu riwayat beban yang disederhanakan sering digunakan. Salah satu
masalah yang paling penting adalah bagaimana mengatur ulang riwayat muatan
nyata dan menentukan riwayat muatan yang disederhanakan.
109

Gambar 5.6 Simulasi sinyal digital

(Sumber : https://www.sciencedirect.com/topics/engineering/digital-simulation)

5.3.4 Test Bench


Selain cara pertama, dikenal pula bentuk simulasi yang lain yaitu testbench.
Testbench adalah proses pengujian suatu rancangan rangkaian. Dalam proses
perancangan rangkaian, testbench akan menguji design rangkaian apakah sudah
sesuai atau belum. Testbench ini dilakukan dengan menggunaan file HDL
(berbentuk kode, baik VHDL maupun Verilog). Sehingga berbeda dengan bentuk
diagram yang menggunakan gambar sebagai tampilannya, testbench
menggunakan kode-kode tulisan sebagai tampilannya. Berikut contoh testbench :

module gates(a,b,q,r);
input a,b;
output q,r;

assign q=a&b; //Sebuah gerbang And


assign r=a|b; //Sebuah gerbang or

endmodule
110

Hasil dari testbench sebagai berikut :

module gates(a,b,q,r);
input a,b;
output q,r;

assign q=a&b; //Sebuah gerbang And


assign r=a|b; //Sebuah gerbang or

endmodule

Testbench biasanya ditulis dengan kode bahasa VHDL maupun Verilog.


Bentuk testbench ini terbilang lebih sukar dibandingkan dengan bentuk timing
diagram. Hal ini disebabkan karena untuk melakukan testbench, diperlukan
kemampuan untuk menulis dan mengerti kode-kode VHDL maupun verilog.
Sehingga bentuk testbench pada umumnya sering dipakai oleh pengguna FPGA
tingkat mahir.

(Sumber : https://ndoware.com/simulasi-fpga.html)
111

5.4 Langkah Kerja


5.4.1 Membuat Projek baru

1. Buka aplikasi Xilinx ISE. Kemudian pilih menu File, New Project. Kotak
dialog New Project Wizard akan muncul. Ketikkan field name dengan nama
“kelompok17_counter”. Lalu klik Next.

Gambar 5.7 Membuat new source


2. Muncul jendela Device Properties. Pilih Family (Spartan3E), device
(XC3S500E), Package (FG320), Speed (-4). Set Preffered Language dengan
Verilog. Klik tombol Next.

Gambar 5.8 Mengatur project


112

3. Pastikan ringkasan pada jendela new project summary sesuai dengan


konfigurasi diawal. Kemudian klik tombol finish.

Gambar 5.9 Jendela Ringkasan Project


5.4.2 Membuat file desain .v dan .ucf (sekuensial)
1. Dalam ISE, klik menu Project, New Source untuk membuat file source baru.
Jendela New Source Wizard akan muncul. Klik Verilog Module sebagai
Source Type. Isikan field File Name dengan sekuensial_top. Location sama
dengan lokasi proyek. Pastikan checkbox Add to project tercentang. Klik
tombol Next

Gambar 5.10 Membuat new source


2. Klik tombol Finish untuk mengakhiri dialog. Sebuah file sekuensial_top.v
yang mendefinisikan satu modul bernama sekuensial_top akan muncul di
workspace editor.
113

Gambar 5.11 Ringkasan source


114

3. Kemudian Masukkan Source untuk Sekuensial_Top.

Gambar 5.12 Listing Code Sekuensial_top


4. Dalam ISE, klik menu Project, New Source untuk membuat file source baru.
Jendela New Source Wizard akan muncul. Klik Verilog Module sebagai
Source Type. Isikan field File Name dengan debouncer. Location sama
dengan lokasi proyek. Pastikan checkbox Add to project tercentang. Klik
tombol Next.

Gambar 5.13 Membuat new source


115

5. Klik Finish

Gambar 5.14 Jendela ringkasan source debouncer


6. Kemudian Masukkan Codingan untuk Debouncer.

Gambar 5.15 Listing Code


7. Dalam ISE, klik menu Project, New Source untuk membuat file source baru.
Jendela New Source Wizard akan muncul. Klik Verilog Module sebagai
Source Type. Isikan field File Name dengan rot_enc. Location sama dengan
lokasi proyek. Pastikan checkbox Add to project tercentang. Klik tombol Next.
116

Gambar 5.16 Membuat new source


8. Klik Finish

Gambar 5.17 Jendela ringkasan source


117

9. Kemudian Masukkan Source Code untuk Rot_Enc

Gambar 5.18 Listing Code


10. Dalam ISE, klik menu Project, New Source untuk membuat file source baru.
Jendela New Source Wizard akan muncul. Klik Verilog Module sebagai
Source Type. Isikan field File Name dengan count_3b. Location sama dengan
lokasi proyek. Pastikan checkbox Add to project tercentang. Klik tombol
Next.

Gambar 5.19 Membuat new source


118

11. Klik Finish

Gambar 5.20 Jendela ringkasan source


12. Kemudian Masukkan Source Code untuk Count_3B

Gambar 5.21 Listing Code


13. Dalam ISE, klik menu Project, New Source untuk membuat file source baru.
Jendela New Source Wizard akan muncul. Klik Verilog Module sebagai
Source Type. Isikan field File Name dengan clock_div. Location sama dengan
lokasi proyek. Pastikan checkbox Add to project tercentang. Klik tombol
Next.
119

Gambar 5.22 Membuat new source


14. Klik Finish

Gambar 5.23 Jendela ringkasan source


15. Kemudian Masukkan Source Code untuk Clock_Div

Gambar 5.24 Listing Code


16. Dalam ISE, klik menu Project, New Source untuk membuat file source baru.
Jendela New Source Wizard akan muncul. Klik Verilog Module sebagai
Source Type. Isikan field File Name dengan clock_stat. Location sama dengan
120

lokasi proyek. Pastikan checkbox Add to project tercentang. Klik tombol


Next.

Gambar 5.25 Membuat new source


17. Klik tombol Finish

Gambar 5.26 Jendela ringkasan source


121

18. Kemudian Masukkan Source Code untuk Clock_Stat

Gambar 5.27 Listing Code


19. Dalam ISE, klik menu Project, New Source untuk membuat file source baru.
Jendela New Source Wizard akan muncul. Klik Verilog Test Fixture sebagai
Source Type. Isikan field File Name dengan tb. Location sama dengan lokasi
proyek. Pastikan checkbox Add to project tercentang. Klik tombol Next.

Gambar 5.28 Membuat new source


20. Kemudian pilih Modul Count_3B sebagai Associate Source. Dan klik tombol
Next
122

Gambar 5.29 Associate Source


21. Kemudian klik Finish

Gambar 5.30 Jendela ringkasan source


22. Kemudian Masukkan Source untuk TB

Gambar 5.31 Listing Code


5.4.3 Mengkompilasi dan Pembangkitan File Programming
Desain siap untuk disintesis dan dibangkitkan file programmingnya.
1. Klik Top Module (Modul Sekuensial_top).
123

Gambar 5.32 Set as Top Module


2. Klik kanan proses Implement Design dan klik Re-run dari pop-up menu.
Sintesis dan implementasi akan dijalankan ISE.

Gambar 5.33 Implement Design


124

5.4.4 Bangkitkan file konfigurasi sekuensial_top.


1. Klik Ganda Proses Generate Programming File atau klik kanan proses dan
pilih Run.

Gambar 5.34 Generate Programming File


5.4.5 Membangkitkan dan Melihat Skematik RTL
1. Klik kanan pada vier RTL Schematic dan pilih Rerun/Rerun All

Gambar 5.35 Rerun All


2. Setelah itu akan muncul jendela baru untuk membuat RTL schematic.
Masukkan semua element yang ada dikolom kiri dengan cara memilih
element tersebut dan klik add -> untuk memindahkan ke kolom kanan.
Element yang dipilih adalah CLOCK_DIV_1, CLOCK_STAT_1,
COUNT_3B, DEBOUNCER_DOWN, DEBOUNCER_UP dan ROT_ENC_1.
Setelah semua element dimasukkan, create schematic untuk melihat hasil
rangkaian.
125

Gambar 5.36 create schematic


126

5.5 Hasil Pengamatan Dan Analisa Perilaku Sistem


5.5.1 Hasil Percobaan
Hasil dari percobaan bab 5 adalah berupa gelombang perwaktuan yang
diatmpilkan pada ISim Simulator di Xilinx dan juga RTL Schematic dari desain
counter itu sendiri. Berikut adalah hasil percobaan dari praktikum.

Gambar 5.37 RTL Schematic desain counter (zoom in)

Gambar 5.38 Waveform desain counter

Gambar 5.39 Waveform desain counter


127

5.5.2 Analisa
Pada nilai awal rlrot = 0, set = 1, dan reset = 1. Saat nilai reset = 1
nilai cur_state=Max_count yang dimana nilai Max_count ini sudah ditentukan
yaitu 111. Lalu pada 100ns nilai rlrot berubah menjadi 11 yaitu artinya
rot_right. Tetapi saat 100ns nilai y_out tidak berubah karena harus
menunggu nilai positive edge clock selanjutnya. Saat positive edge clock nilai
y_out akan berubah nilai yang dimana akan dikurang 1 tiap perubahan positive
edge clock.
Saat 200ns rlrot berubah menjadi 10 yang artinya rot_left. Lalu nilai
reset dan set pada rot_left tidak berubah atau tetap menjadi 0. Namun
y_out tidak berubah karena harus menunggu nilai positive edge clock
selanjutnya. Saat positive edge clock nilai y_out akan berubah nilai yang dimana
akan dikurang 1 tiap perubahan positive edge clock.
module tb;

// Inputs
reg set; // variable set sebagai register
reg reset; // variable reset sebagai register
reg up; // variable up sebagai register
reg down; // variable down sebagai register
reg [1:0] rlrot; // variable rlrot sebagai register dengan 2
bus
reg clk; // variable clk sebagai register

// Outputs
wire [2:0] y_out; // variable y_out sebagai register dengan 3
bus

// Instantiate the Unit Under Test (UUT)


count_3b uut (
.set(set), // set instantiate set
.reset(reset), // reset instantiate reset
.up(up), // up instantiate up
.down(down), // down instantiate down
.rlrot(rlrot), // rlrot instantiate rlrot
.clk(clk), // clk instantiate clk
.y_out(y_out)// y_out instantiate y_out
);

initial begin
set = 1;
reset = 1;
up = 0;
down = 0;
rlrot = 0;
128

clk = 0;

#100 // 1000 ns
set = 0 ;
reset = 0 ;
rlrot = 2'b11; //down sama right dengan 2 bit dengan nilai 11

#100 // 1000 ns
set = 0 ;
reset = 0 ;
rlrot = 2'b10; //up sama left dengan 2 bit dengan nilai 10

end

always
#10 clk = ~clk; //setiap 100 ns clock = ~clock

Endmodule

Saat kondisi ini untuk memasukan nilai inputan untuk membuat sebuah
table waveform, agar menjadi yang kita inginkan.

5.5.3 Enkoder putar (ROT_ENC)


Enkoder putar ROT_ENC berperan untuk menghasilkan output 2-bit yang
menandakan arah putaran. Ketika nilai 0x maka tidak ada putaran, 10 berputar ke
kanan dan 11 berputar ke arah kiri, lainnya tidak ada putaran.
module rot_enc(
input rot_A,
input rot_B,
input clk,
output [1:0] rlrot
);

reg rot_A_in;
reg rot_B_in;
reg [1:0] rot_in;

reg rot_q1;
reg delay_rot_q1;
reg rot_q2;

reg rot_event;
reg rot_left;

/*Rotary filter*/
always @(posedge clk)
begin
rot_A_in <= rot_A;
rot_B_in <= rot_B;
129

rot_in <= {rot_B_in, rot_A_in};


case (rot_in)
2'b00: begin
rot_q1 <= 0; rot_q2 <= rot_q2;
end
2'b01: begin
rot_q1 <= rot_q1; rot_q2 <= 0;
end
2'b10: begin
rot_q1 <= rot_q1; rot_q2 <= 1;
end
2'b11: begin
rot_q1 <= 1; rot_q2 <= rot_q2;
end
default: begin
rot_q1 <= rot_q1; rot_q2 <=
rot_q2;
end
endcase
end

/*Rotary direction*/
always @(posedge clk)
begin
delay_rot_q1 <= rot_q1;
if ((rot_q1 == 1) && (delay_rot_q1 == 0))
begin
rot_event <= 1; rot_left <= rot_q2;
end
else begin
rot_event <= 0; rot_left <= rot_left;
end
end

assign rlrot = {rot_event, rot_left};

endmodule

5.5.4 Pencacah asinkron up-down 3-bit (COUNT_3B)


Pencacah asinkron up-down 3-bit COUNT_3B yang menghasilkan nilai
output 0-7 dari 2 input dari button BTN_* dan encoder putar. Pengoperasian
penghitung semacam ini dikendalikan oleh input kontrol naik-turun, dengan
urutan mana yang akan dihitung sesuai dengan source codel di bawah untuk
urutan penghitungan dari penghitung turun dalam penghitungan dan dengan
keadaan jika maka. cur_state = 3'b111 dan cur_state <= MAX_COUNT maka
frekuensi kecil, cur_state <= 0; maka frekuensi besar, dan saat else
cur_state <= next_state maka frekuensi mengikuti kondisi dibawah.
Module count_3b(
130

input set,
input reset,
input up,
input down,
input [1:0] rlrot,
input clk,
output [2:0] y_out
);

parameter MAX_COUNT = 7;
parameter ROT_RIGHT = 2'b11;
parameter ROT_LEFT = 2'b10;

reg delay_up;
reg delay_down;

reg [2:0] cur_state, next_state;


reg [2:0] out_reg;

initial begin
cur_state = 3'b111; /*The lowest frequency*/
end

/*Current State Logic : Sequential*/


always @(posedge clk)
begin
delay_down <= down;
delay_up <= up;
if (reset==1) cur_state <= MAX_COUNT; /*Reset,
the lowest frequency*/
else if (set==1) cur_state <= 0; /*Set, the
highest frequency*/
else cur_state <= next_state;
end

/*Next state logic: combinational*/


always @*
begin
if (((up==1) && (delay_up==0)) ||
(rlrot==ROT_RIGHT) )
/*increase freq will decrease div*/
next_state = (cur_state==0)?0:cur_state-
1;
else if (((down==1) & (delay_down==0)) ||
(rlrot==ROT_LEFT))
next_state = (cur_state==MAX_COUNT)?
MAX_COUNT:cur_state+1;
else next_state = cur_state;
end

/*Cur State & Output*/


always @*
begin
out_reg <= cur_state;
end
131

assign y_out = out_reg;

endmodule

5.5.5 Clock divider (CLOCK_DIV atau pembagi)


Clock divider CLOCK_DIV berperan untuk membagi frekuensi sinyal
masukan clk (50 Mhz) berdasarkan nilai masukan pembaginya (div) sesuai
dengan nilai CLOCK_DIV 0-7.
Ketika nilai clock pembaginya semakin besar maka nilai periodenya 2 kali
lebih besar sedangkan nilai frekuensinya akan semakin kecil 2 kali lipat setiap
nilai clock pembagi bertambah.

module clock_div(
input [2:0] div,
input clk,
output clk_out,
output clk_out2 /*is the same as clk_out*/
);

reg [6:0] clk_cnt;


reg clk_out_reg;

always @(posedge clk)


begin
clk_cnt <= clk_cnt + 1;
end

always @(clk_cnt or div)


begin
clk_out_reg <= (div==0)?clk:clk_cnt[div-1];
end

assign clk_out = clk_out_reg;


assign clk_out2 = clk_out_reg;

endmodule

5.5.6 Indikator frekuensi (CLOCK_STAT)


Indikator frekuensi (CLOCK_STAT)berkerja seperti decoder 3 to 8. Tampilan
LED 0-7 dipengaruhi dengan nilai dari data_in seperti yang ada pada module
clock_stat.v.

module clock_stat(
input [2:0] data_in,
output [7:0] data_out
132

);
/* // Procedural
reg [7:0] data_out_reg;
always @(data_in)
begin
case (data_in)
3'b000: data_out_reg <= 8'b00000001;
3'b001: data_out_reg <= 8'b00000010;
3'b010: data_out_reg <= 8'b00000100;
3'b011: data_out_reg <= 8'b00001000;
3'b100: data_out_reg <= 8'b00010000;
3'b101: data_out_reg <= 8'b00100000;
3'b110: data_out_reg <= 8'b01000000;
3'b111: data_out_reg <= 8'b10000000;
endcase
end
assign data_out = data_out_reg
*/
assign data_out = (8'b00000001 << data_in);
/*Structural*/

endmodule

5.5.7 Debouncer
Terdapat 2 debouncer yaitu DEBOUNCER_UP dan DEBOUNCER_DOWN keduanya
memiliki fungsi yang berbeda. DEBOUNCER_UP berfungsi umtuk increment nilai
pada clock div sedangkan DEBOUNCER_DOWN berfungsi untuk decrement nilai pada
clock_div. Dengan adanya perbedaan nilai clock_div maka akan mempengaruhi
nilai frekuensi dan periode yang dihasilkan.
module debouncer(
input clk,
input in_state,
output out_state
);

parameter NBITS = 16;

reg [NBITS-1:0] COUNT;


reg PB_sync_0;
reg PB_sync_1;
reg PB_state;

always @(posedge clk) PB_sync_0 <= ~in_state;


always @(posedge clk) PB_sync_1 <= PB_sync_0;

wire PB_idle = (PB_state==PB_sync_1);


wire max_COUNT = &COUNT;

always @(posedge clk)


begin
133

if (PB_idle) COUNT <= 0;


else begin
COUNT <= COUNT + 1;
if (max_COUNT) PB_state <= ~PB_state;
end
end

assign out_state = PB_state;

endmodule
134

5.6 Kesimpulan

1. Keluaran dari rangkaian sekuensial ditentukan dari masukannya dan masukan


sebelumnya
2. Counter dibedakan menjadi 2 yaitu counter uo dan counter down
3. Clock Divider (CLOCK_DIV) membagi frekuensi sinyal masukan clk (50MHz)
4. Semakin besar nilai clock pembagi maka nilai frekuensi akan semakin kecil 2
kali lipat nilai periode akan semakin besar 2 kali lipat
5. Rotary encoder adalah piranti elektromekanink yang dapat memonitor
gerakan dan posisi
6. Debouncer_up berfungsi untuk increment nilai pada CLOCK_DIV
7. Debouncer_down berfungsi untuk decrement nilai pada CLOCK_DIV
8. Output sistem dilihat dan diamati pada perubahan sinyal yang terjadi pada
osiloskop
BAB VI

LACTH AND FLIP-FLOP

6.1 Tujuan

1. Praktikan memahami perbedaan antara latch dan flip-flop


2. Praktikan memahami jenis-jenis latch dan flip-flop
3. Praktikan memahami cara kerja latch dan flip-flop
4. Praktikan memahami fungsi latch dan flip-flop
5. Praktikan dapat mensimulasi kerja latch dan flip-flop pada Xilinx ISE
136

6.2 Alat dan bahan

3.2.4 Laptop

Gambar 6.1 Laptop

PC merupakan perangkat yang digunakan untuk menginstalasi segala


perangkat lunak (software) yang digunakan saat praktikum, yaitu Xilinx ISE.
3.2.5 Xilinx ISE

Gambar 6.2 Xilinx ISE Webpack 12.2

Xilinx ISE Webpack 12.2 merupakan perangkat lunak yang digunakan


untuk merancang dan mensimulasikan suatu rangkaian digital ke dalam board
Starter Kit Spartan-3E.
137

3.2.6 ISim Simulator

Gambar 6.3 ISim Simulator

ISim menyediakan simulator HDL lengkap yang terintegrasi dalam ISE.


Simulasi HDL sekarang dapat menjadi langkah yang lebih mendasar dalam aliran
desain dengan intgrasi ISim yang ketat dalam lingkungan desain.
138

6.3 Dasar Teori

6.3.1 D Latch
Latch D mempunyai sebuah masukkan data (D). Pada Latch D
tidak akan terjadi kondisi race seperti pada Latch RS. Menyimpan nilai
masukkan dengan kontrol sinyal clock.

Gambar 6.4 D Latch (active high)

Gambar 6.5 D Latch (active low)

Gambar 6.6 Positive Edge Triggered (active low)

Gambar 6.7 Negative Edge Triggered (active high)


139

Tabel 6. 1 Tabel Kebenaran Positive Edge


Clock D Q Qbar
0-1 0 0 1
0-1 1 1 0
1-0 X Q Qbar
(sumber : https://elektronika-dasar.web.id/)

6.3.2 D Flip Flop


Data flip-flop merupakan pengemangan dari RS flip-flop, pada D flip-flop
kondisi output terlarang (tidak tentu) tidak lagi terjadi. Data flip-flop sering juga
disebut dengan istilah D-FF sehingga lebih mudah dalampenyebutannya. Data
flip-flop merupakan dasar dari rangkaian utama sebuah memori penyimpan data
digital. Input atau masukan pada RS flip-flop adalah 2 buah yaitu R (reset) dan S
(set), kedua input tersebut dimodifikasi sehingga pada Data flip-flop menjadi 1
buah input saja yaitu input atau masukan D (data) saja. Model modifikasi RS flip-
flopmenjadi D flip-flop adalah dengan penambahan gerbang NOT (Inverter) dari
input S ke input R pada RS flip-flop seperti telihat pada gambar dasar D flip-flop
berikut.

Gambar 6.8 Gambar Rangkaian Dasar D Flip-Flop

Gambar Rangkaian Dasar D Flip-Flop Pada gambar diatas input Set (S)
dihubungkan ke input Reset (R) pada RS flip-flop menggunakan sebuah inverter
sehingga terbentuk input atau masukan baru yang diberi nama input Data (D).
Dengan kondisi tersebut maka RS flip-flop berubah menjadi Data Flip-Flop (D-
FF).
140

Tabel 6. 2 Tabel Kebenaran D Flip Flop


Clock/Enable D Q Q’ Keterangan
1 0 0 1 Reset Q ke 0
1 1 1 0 Set Q ke 1
0 0 1 0 Menahan kondisi Q terakhir
0 1 1 0 Menahan kondisi Q terakhir
(sumber : https://elektronika-dasar.web.id/)

6.3.3 Perbedaan D Latch dan D Flip Flop


D Latch sama dengan RS flip-flop, tetapu yang membedakan adalah R dan
S dibuat dengan mempunyai nilai yang berlawanan dan sebuat input D. Pada D
latch pulsa clock diganti dengan tambahan gerbang yang merupakan enable gate.
Pada D flip-flop juga intinya sam dengan RS flip-flop, namun sama juga dengan
D latch yang inputnya dibuat dengan mempunyai nilai yang berlawanan. Yang
membdakan D latch dengan D flip-flop adalah D flip-flop memiliki pulsa clock
dalam rangkaiannya. Output yang dihasilkan akan berganti saat terjadi transisi
kondisi clock. Transisi kondisi ini ada dua macam, yaitu positive edge trigerring
yang artinya transisi kondisi clock dari L ke H dan negative edge trigerring yang
artinya transisi kondisi clock dari H ke L.

(sumber : https://elektronika-dasar.web.id/)
141

6.4 Langkah Kerja


1. Persiapkan alat-alat yang dibutuhkan dalam percobaan ini.
2. Membuka Aplikasi Xilinx ISE.

Gambar 6.9 Membuka Aplikasi

3. Membuat Program baru dengan klik New Project. Kemudian memberi


nama Project dengan LFF_Kelompok_17. Memastikan top-level source
typenya adalah HDL – Next.

Gambar 6.10 Memberi nama project

4. Pada jendela Device Properties, pilih kotak Family, isikan dengan


Spartan3E. Kemudian pada Device pilih XC3S500E, dan pada Package
ubah menjadi FG320, dan ubah Speed menjadi -4. Pastikan Simulator
menggunakan ISim(VHDL/Verilog), dan Preferred Language adalah
Verilog.
142

Gambar 6.11 New Project Wizard

5. Klik next hingga muncul Project Summary – Finish.

Gambar 6.12 Project Summary


143

6. Ubah View Design menjadi Simulation – Behavioral

Gambar 6.13 Simulation – Behavioral

7. Klik kanan pada bagian project yang dibuat tadi, pilih New Source, tipe
source yang dipilih adalah Verilog Module, memberi nama file dengan dff,
memastikan checkbox Add to Project dipilih, kemudian klik Next hingga
finish.

Gambar 6.14 Verilog Module dff


144

Gambar 6.15 New Source Wizard

Gambar 6.16 Project Summary

8. Memasukkan kode program untuk modul dff.


module dff(

input d,
input clk,
output reg
q,

output reg qbar


);

9. Membuat source baru dengan klik kanan pada module dff tadi, kemudian
pilih new source. Pilih Verilog Test Fixture pada bagian Select Source
Type, memberi nama file dengan dff_tb. Memastikan associate sourcenya
adalah file dff, Next – Finish.

Gambar 6.17 Verilog Test Fixture dff_tb


145

Gambar 6.18 Associate Source

Gambar 6.19 Project Summary


146

10. Memasukkan kode program untuk dff_tb.

module dff_tb;

reg d;
reg clk;
// Outputs
wire q;
wire qbar;

// Instantiate the Unit Under Test (UUT)


dff uut (
.d(d),
.clk(clk),
.q(q),
.qbar(qbar)
);

initial begin
// Initialize Inputs
d=0;
clk=0;
// Wait 100 ns for global reset to finish
#100;

// Add stimulus here


#100 clk=0; d=0;
#100 clk=1; d=0;
#100 clk=0; d=1;
#100 clk=1; d=1;

#100 clk=0; d=1;


#100 clk=0; d=0;

#100 clk=1; d=1;

#100 clk=1; d=1;


147

11. Pilih file dff_tb , pastikan syntax sudah benar dengan klik Behavioral
Check Syntax. Kemudian, klik Simulate Behavioral Model.

Gambar 6.20 Behavioral Check Syntax

Gambar 6.21 Simulate Behavioral Model

12. Mengamati timing diagram yang muncul pada ISim simulator tulis
hasilnya di Form Data Praktikum. Close ISim Simulator.

13. Kembali ke Xilinx ISE Project Navigator. Menambahkan source baru


dengan klik kanan pada Project yang pertama kali dibuat, Memilih Verilog
module sebagai source typenya, memberi nama file dengan dlatch,
memastikan checkbox Add to Project dipilih, kemudian klik Next hingga
finish.
148

Gambar 6.22 Verilog module dlatch

Gambar 6.23 New Source Wizard

Gambar 6.24 Project Summary


149

14. Memasukkan kode program untuk modul dlatch.

module dlatch(
input d,
input clk,
output reg q,

output reg qbar


);

always @(d or clk) begin


if(clk==1) begin

q = d; qbar = !q;

end
else begin

15. Membuat source baru dengan klik kanan pada module dlatch tadi,
kemudian pilih new source. Pilih Verilog Test Fixture pada bagian Select
Source Type, memberi nama file dengan dlatch_tb. Memastikan associate
sourcenya adalah file dlatch, Next – Finish.

Gambar 6.25 Verilog Test Fixture dlatch_tb


150

Gambar 6.26 Associate Source

Gambar 6.27 Project Summary


151

16. Memasukkan kode program untuk dlatch _tb.

module dlatch_tb;

//Input
s reg d;
reg clk;

// Outputs
wire q;
wire qbar;

// Instantiate the Unit Under Test (UUT)


dlatch uut (

.d(d),

.clk(clk),
.q(q),

.qbar(qbar)

#100;

// Add stimulus here


#100 clk=0; d=0;

#100 clk=0; d=1;


#100 clk=1; d=0;

#100 clk=1; d=1;

#100 clk=0; d=0;

17. Pilih file dlatch _tb , pastikan syntax sudah benar dengan klik Behavioral
Check Syntax. Kemudian, klik Simulate Behavioral Model.
152

Gambar 6.28 Behavioral Check Syntax

Gambar 6.29 Simulate Behavioral Model

18. Mengamati timing diagram yang muncul pada ISim simulator. Catat
hasilnya pada Form Data Praktikum
153

6.5 Hasil Percobaan dan Analisa


6.5.1 D Flip-Flop

Gambar 6.30 Waveform D Flip Flop

Pada percobaan kali ini menggunakan D Flip Flop, diketahui terdapat 2


buah input dan 2 buah output. Yang bertindak sebagai input adalah d dan clk,
sedangkan yang bertindak sebagai output adalah q dan qbar. Adapun nilai awal
masing masing adalah q=1, qbar=0, d=1, dan clk=1. Pada diagram diketahui
bahwa jika nilai clk=1 maka nilai q akan berubah (aktif) dan mengikuti nilai d,
ketika niali clk dari 1 berubah menjadi 0 maka nilai q tidak akan sama dengan d.
kemudian ketika clk dari 0 berubah lagi menjadi 1 maka nilai q akan sama dengan
d yaitu 1.
Maka perubahan nilai q akan terjadi ketika nilai dari 0 (low) menjadi 1
(high) dan perubahan nilai q akan mengikuti atau sama dengan nilai pada d.
Sedangkan bila nilai clk dari 1 (high) menjadi 0 (low) maka nilai q akan
mempertahankan nilai sebelumnya, meskipun nilai d berubah
Nilai q akan berubah mengikuti nilai d hanya saat terjadi transisi nilai clk
dari 0 (low) ke 1 (high), jadi nilai q akan tetap sama meski d berubah nilai saat clk
bernilai 1 (high) atau 0 (low). Hal ini dikarenakan pada program menggunakan
tipe posedge yang mana output q akan sama dengan d ketika clock bernilai 1
(high). Sedangkan nilai qbar merupakan lawan dari nilai q.
154

6.5.2 D Latch

Gambar 6.31 Waveform D Latch

Pada percobaan kali ini menggunakan D Latch diketahui terdapat 2 buat


input dan 2 buah output. Yang bertindak sebagai input adalah d dan clk,
sedangkanyang bertindak sebagai output adalah q dan qbar. Adapun nilai awal
masing masing adalah q=1, qbar=0, d=1, dan clk=0. Jika clk bernilai awal 0 (low)
dan kemudian berubah menjadi 1 (high) maka nilai q sebagai output akan berubah
dari kondisi sebelumnya mengikuti perubahan nilai d. Sedangkan ketika nilai clk
dalam keadaan 0 (low) nilai q tetap tidak akan berubah dengan mempertahankan
nilai sebelumnya meskipun nilai d berubah-ubah.
Maka perubahan nilai q akan terjadi ketika clk bernilai 1 (high) dan ketika
nilai clk terus dalam keadaan 1 (high) maka nilai akan terus berubah nilai
sebelumnya mengikuti nilai d. Sedangkan jika nilai clk dalam keadaam 0 (low)
maka nilai q akan mempertahankan posisinya ata tidak akan berubah meskipun
nilai d berubah, sedangkan nilai qbar merupakan lawan dari nilai yaitu q.
155

6.6 Tugas
Pada tugas praktikum ini membuat Verilog kode dari T Flip Flop.

1. module t
module t(q,q1,t,c);
output q,q1;
input t,c;
reg q,q1;
initial
begin
q=1'b1;
q1=1'b0;
end
always @ (c)
begin
if(c)
begin
if (t==1'b0) begin q=q; q1=q1; end
else begin q=~q; q1=~q1; end
end
end
endmodule
2. t_tb
module t_tb;

// Inputs
reg t;
reg c;

// Outputs
wire q;
wire q1;

// Instantiate the Unit Under Test (UUT)


t uut (
.q(q),
.q1(q1),
.t(t),
.c(c)
);

initial begin
// Initialize Inputs
t = 0;
c = 0;
#100;
t = 0;
c = 1;
#100;
t = 1;
c = 0;
#100;
156

t = 1;
c = 1;
#100;

// Add stimulus here

end

endmodule

Gambar 6.32 Waveform T flip flop

Pada tugas ini membuat rangkaian T Flip Flop. T flip flop akan memiliki
nilai keluaran q dan q1 tetap jika nilai input t=0 pada saat clock bernilai 1. Jika
nilai input t=1 pada saat clock bernilai 1 maka keluaran q dan q1 akan
berkebalikan dari nilai sebelumnya. Jadi pembacaan timing diagram adalah nilai
awal ditentukan terlebih dahulu q=1 dan q1=0, pada 100 ns nilai clock=1 dan
nilai t=0 maka keluaran tetap yaitu q=1 dan q1=0. Kemudian pada 300ns nilai
clock=1 kembali dan nilai t=1 maka keluaran keluaran berubah nilai dari nilai
sebelumnya yaitu q=0 dan q1=1.
157

6.7 Kesimpulan
1. Pada D Flip Flop ketika nilai clk dari 1 berubah menjadi 0 maka nilai q tidak
akan sama dengan nilai d.
2. Pada D Flip Flop ketika nilai dari 0 berubah lagi menjadi 1 maka nilai q akan
sama dengan nilai d.
3. Pada D Flip Flop perubahan nilai q akan terjadi ketika clk berubah menjadi
nilai dari 0 (low) menjadi 1 (high) dan perubahan nilai q akan mengikuti atau
sema dengan nilai pada d.
4. Pada D Flip Flop bila nilai clk dari 1 (high) menjadi 0 (low) maka nilai q akan
mempertahankan nilai sebelumnyam meskipun nilai d berubah.
5. Pada D Latch jika clk bernilai awal 0 (low) dan kemudian berubah menjadi 1
(high) maka nilai q sebagai output akan berubah kondisi sebelumnya
mengikuti nilai d.
6. Pada D Latch perubahan nilai q akan terjadi ketika nilai clk bernilai 1 (high)
dan ketika nilai clk terus dalam keadaan 1 (high) maka nilai q akan terus
berubah dari nilai sebelumnya mengikuti nilai d.
7. Pada D Latch jika nilai clk dalam keadaan 0 (low) maka nilai q akan
mempertahankan posisinya atau tidak akan berubah meskipun nilai d
berubah, sedangkan nilai qbar merupakan lawan dari nilai q.
8. Output T FF akan selalu berbeda setiap satu periode frekuensi pulsa clock.
9. Saat clock berlogika 1, T flip-flop akan dalam kondisi menyimpan/memori.
10. Outputnya akan akan diperoleh pulsa-pulsa kontinyu dengan frekuensi
sebesar setengah dari inputnya
BAB VII
PENUTUP

7.1 Kesimpulan
1. Xilinx ISE merupakan software yang digunakan untuk mensistesis dan
menganalisis desan HDL, membuat developer dapat mensistesis (compile)
desainnya, menganalisis timing diagram dan RTL diagram.
2. Enkoder mengkodean informasi (data) dari masukan 2n kedalam kode
keluaran n-bit.
3. Multiplexer adalah suatu rangkaian yang mempunyai banyak input dan
hanya mempunyai satu output. Output ditentukan dengan menggunakan
selector.
4. Dekoder adalah suatu rangkaian logika yang memiliki sedikit masukan dan
banyak keluaran.
5. Demultiplexer adalah perangkat mengambil sinyal input tunggal dan
memilih salah satu dari banyak output data-baris, yang dihubungkan ke
input tunggal.
6. Dekoder BCD ke seven segment mengkonversi satu digit BCD untuk
mengarahkan tampilan berorientasi digit, yaitu seven segment.
.

7.2 Saran
1. Alat-alat diperbanyak untuk melancarkan praktikum kedepannya.
2. Dalam melakukan percobaan, praktikan lebih focus supaya hasil yang
didapat bisa lebih tepat.

158
Lampiran I Lembar Asistensi
Lampiran II Tugas Pendahuluan dan Form Data Praktikum

Anda mungkin juga menyukai