DISUSUN OLEH :
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.
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
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
xiii
ABSTRAK
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
2
BAB I Pendahuluan
Bab ini menjelaskan tentang latar belakang, tujuan, batasan masalah, metode
penulisan dan sistematika penulisan.
Pada bab ini menjelaskan tentang definisi, dan cara membaca sinyal pada
latch dan flip – flop.
4
5
Gambar 2. 2 Laptop
PC merupakan perangkat yang digunakan untuk menginstalasi segala
perangkat lunak (software) yang digunakan saat praktikum, yaitu Xilinx ISE
6
Gambar 2. 3 ISE Project Navigator GUI: Eksplorer, Proses, Entry dan Log
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
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
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
);
mux4_proc_kel17 MUX1(
.w_in ({BTN_WEST,BTN_SOUTH, BTN_EAST,BTN_NORTH}),
.sel (SW[1:0]),
.sel_stat (sel_stat),
.fout(fout)
);
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
);
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
);
mux4_struc_kel17 MUX1(
.w_in ({BTN_WEST,BTN_SOUTH, BTN_EAST,BTN_NORTH}),
.sel (SW[1:0]),
.sel_stat (sel_stat),
.fout(fout)
);
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
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.
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
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
mux4_proc_kel17 MUX1(
.w_in ({BTN_WEST,BTN_SOUTH, BTN_EAST,BTN_NORTH}),
.sel (SW[1:0]),
.sel_stat (sel_stat),
.fout(fout)
);
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
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
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
mux4_struc_kel17 MUX1(
.w_in ({BTN_WEST,BTN_SOUTH, BTN_EAST,BTN_NORTH}),
.sel (SW[1:0]),
.sel_stat (sel_stat),
.fout(fout)
);
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
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
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
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. 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
3. Buat new source kembali, dan pilih Verilog Text Fixture I (*,v). Isikan field
name dengan nama dec3to8_tb
5. Buat new source kembali, dan pilih Verilog module (*,v). Isikan field name
dengan nama demux3to8
7. Buat new source kembali, dan pilih Verilog Text Fixture (*,v). Isikan name
dengan nama demux3to8_tb
9. Buat new source kembali dan pilih Verilog module ((*,v). Isikan field name
dengan nama enc4to2
11. Buat new source kembali, dan pilih Verilog Text Fixture (*,v). Isikan field
name dengan nama enc4to2_tb
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 :
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 :
3.4.3.3 Encoder 4 ke 2
Berikut listing code encoder 4 ke 2 :
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.
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.
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
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
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
endmodule
57
Masukan Keluaran
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
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
3.5.2.2 enc2to4_tb
module enc4to2_tb;
reg [3:0] w_in; //register w_in dengan 4 bus
// Outputs
60
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
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.
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
);
3.5.3.2 demux3to8_tb
module demux3to8_tb;
.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
Masukan Keluaran
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
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
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.
7.
69
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.7 ISE Project Navigator GUI: Explorer, Proses, Entry, dan Log
73
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.
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.
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
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.
2. Klik pada semua nama file yang telah kita buat lalu klik Add. Setelah itu
klik Create Schematic pada tombol disebelah kanan bawah
Tabel 4. 1 Hasil Percobaan BCD to 7-Segment menggunakan FPGA Xilinx (Mode Desimal)
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
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
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
Gambar 5.4 ISE Project Navigator GUI: Eksplorer, Proses, Entry dan Log
(Sumber : https://www.sciencedirect.com/topics/engineering/digital-simulation)
module gates(a,b,q,r);
input a,b;
output q,r;
endmodule
110
module gates(a,b,q,r);
input a,b;
output q,r;
endmodule
(Sumber : https://ndoware.com/simulasi-fpga.html)
111
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.
5. Klik Finish
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
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.
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
/*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
endmodule
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;
initial begin
cur_state = 3'b111; /*The lowest frequency*/
end
endmodule
module clock_div(
input [2:0] div,
input clk,
output clk_out,
output clk_out2 /*is the same as clk_out*/
);
endmodule
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
);
endmodule
134
5.6 Kesimpulan
6.1 Tujuan
3.2.4 Laptop
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 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
(sumber : https://elektronika-dasar.web.id/)
141
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.
input d,
input clk,
output reg
q,
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.
module dff_tb;
reg d;
reg clk;
// Outputs
wire q;
wire qbar;
initial begin
// Initialize Inputs
d=0;
clk=0;
// Wait 100 ns for global reset to finish
#100;
11. Pilih file dff_tb , pastikan syntax sudah benar dengan klik Behavioral
Check Syntax. Kemudian, klik Simulate Behavioral Model.
12. Mengamati timing diagram yang muncul pada ISim simulator tulis
hasilnya di Form Data Praktikum. Close ISim Simulator.
module dlatch(
input d,
input clk,
output reg q,
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.
module dlatch_tb;
//Input
s reg d;
reg clk;
// Outputs
wire q;
wire qbar;
.d(d),
.clk(clk),
.q(q),
.qbar(qbar)
#100;
17. Pilih file dlatch _tb , pastikan syntax sudah benar dengan klik Behavioral
Check Syntax. Kemudian, klik Simulate Behavioral Model.
152
18. Mengamati timing diagram yang muncul pada ISim simulator. Catat
hasilnya pada Form Data Praktikum
153
6.5.2 D Latch
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;
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;
end
endmodule
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