Anda di halaman 1dari 9

MODUL 3 RANGKAIAN LOGIKA KOMBINASIONAL

Yogi Salomo Mangontang Pratama (13511059) Asisten: Inneke Mayachita / 13209077 Tanggal Percobaan: 9/10/2012 EL2195-Praktikum Sistem Digital

Laboratorium Dasar Teknik Elektro Sekolah Teknik Elektro dan Informatika

Abstrak
Dalam penerapan rangkaian digital ke dalam FPGA pasti akan selalu terdapat waktu tunda pada setiap bagian proses sehingga pada akhirnya akan mempengaruhi waktu tunda dari keseluruhan rangkaian. Pada percobaan kali ini kita hendak mengamati waktu tunda yang terjadi ketika mengimplementasikan rangkaian BCD-to-7-segment ke dalam FPGA. Simulasi yang digunakan terdiri dari dua jenis, yaitu simulasi fungsional dan simulasi timing. Simulasi fungsional lebih bertujuan untuk mengecek nilai kebenaran fungsi yang kita buat sementara simulasi timing lebih ditujukan untuk mengukur waktu tunda dari rangkaian. Kedua percobaan akan selalu menghasilkan nilai waktu tunda, akan tetapi yang lebih mendekati kenyataan adalah simulasi timing, sehingga dari sini kita akan mendapat nilai worst case delay.

1. Mendesain rangkaian sederhana melihat pengaruh waktu tunda

untuk

2. Mendesain rangkaian kombinasional berupa decoder BCD-to-7-segment untuk diimplementasikan di dalam FPGA 3. Menggunakan simulasi fungsional untuk memverifikasi fungsi rangkaian 4. Menggunakan analisis dan simulasi waktu untuk mengidentifikasi worst case delay path 5. Melakukan pengukuran propagasi pada leel rangkaian waktu tunda

6. Mengenal level abstraksi dalam perancangan digital

2. STUDI PUSTAKA 2.1 Implementasi FPGA dan Waktu Tunda


Dalam teknologi Altera Cyclone yang kita gunakan, fungsi logika diuraikan oleh software implementasi ke dalam bentuk subfungsi 4masukan. Setiap subfungsi kemudian diimplementasikan oleh tabel kebenaran yang bekerja seperti multiplexer dan dibuat dengan memprogram SRAM yang mendefinisikan fungsionalitas dari FPGA. Setiap tabel kebenaran memiliki waktu tunda yang berkontribusi ke waktu tunda secara keseluruhan. Estimasi worst case delay ditentukan dengan menambahkan delay perkiraan maksimum ke dalam rangkaian kombinasional termausk logika dan interkoneksi. Karena ketidakpastian ini, worst case delay hanya bisa ditentukan setelah proses implementasi selesai termasuk penguraian menjadi subfungsi dan routing interkoneksi.

Kata kunci : fungsional, 7segment, worst case delay. 1. PENDAHULUAN

timing,

BCD-to-

Dalam penerapan rangkaian digital ke dalam FPGA, akan selalu terdapat perbedaan waktu yang biasa kita sebut dengan waktu tunda. Pada percobaan ini kita akan mencoba untuk mengukur berapa waktu tunda dari rangkaian BCD-to-7-segment yang kita buat dengan menggunakan simulasi. Simulasi itu sendiri terbagi menjadi dua yaitu simulasi fungsional dan simulasi timing. Keduanya dapat menghasilkan nilai waktu tunda, akan tetapi kita berusaha melihat mana yang lebih mendekati kenyataan yang sebenarnya sehingga nantinya akan kita ambil sebagai nilai worst case delay. Adapun tujuan dari praktikum ini antara lain :

2.2 BCD-TO-7-SEGMENT CONVERTER

CODE

Kabel downloader ByteBlaster II dan USB-Blaster.

Rangkaian ini digunakan untuk mengkonversikan suatu nilai decimal terkode biner(BCD) ke pola segmen yang sesuai pada display 7-segmen. Karena BCD adalah angka 4bit pada jangkauan 0-9, bagaimana kita memperlakukan nilai 10-15 akan berpengaruh pada desain kita. 7-segmen biasanya diidentifikasi dalam industry menggunakan huruf a-g seperti pada gambar berikut :

3.1 PERCOBAAN 3A : RANGKAIAN SEDERHANA 3.1.1 Manajemen File

MEMBUAT

Buat direktori baru bernama Modul3 pada direktori praktikum sistem digital, kemudian di dalamnya buatlah dua direktori baru kembali dengan nama sederhana dan bcd

Download file bernama SisDig_pin_assignment_UP2.qsf bagi yang mendapatkan board FPGA UP2 ke direktori Modul3 Anda. File tersebut akan digunakan untuk penempatan pin secara otomatis

3.1.2 Pembuatan Project Sederhana


GAMBAR 2.2.1 Konvensi penomoran 7-segmen. Sumber : www.tpub.com

Buat proyek Quartus baru dengan nama sederhana pada direktori sederhana

GAMBAR 2.2.2 Pola Display 7-segmen. Sumber : machineinformation-systems.com

Download file clockdiv.vhd dan clockdiv.bdf dari web labdasar. Rangkaian ini akan digunkaan untuk memperlambat clock masukan rangkaian sederhana

3. METODOLOGI
Alat-alat yang digunakan dalam percobaan ini antara lain : 1. Komputer yang telah ter-install program Quartus II 2. FPGA development board, tipe DE1 beserta perlengkapannya yang meliputi : Board FPGA tipe UP2, DE1, DE2, atau DE2-70 Catu Daya+ Kabel dan konektor tambahan

Buat file diagram skematik baru bernama sederhana.bdf, kemudian tambahkan ke dalam project dan implementasikan rangkaian pada Gambar yang ada pada modul praktikum. Berikan nama kaki masukan sebagai CLK[0], kaki keluaran yang tersambung dengan gerbang NAND GPIO[15], yang dengan inverter GPIO[16]

3.1.3 Kompilasi Project dan Simulasi

Untuk keperluan I/O pin kita akan menggunakan file yang sudah ada. Klik Assignment -> Import Assignment. Pada jendela baru sorot file name kemudian klik tombol ... pilih file SisDig_pin_assignment_UP2.qsf Coba klik Assignment -> Pin Planner seperti pada modul 2, Anda akan melihat beberapa pin FPGA sudah terhubung dengan suatu nama. dengan mencocokkan nama port input/output pada skematik/VHDL kita dengan nama yang digunakan pada file akan membuat kita tak perlu menghubungkan secara manual Lakukan compile pada project Anda, jika ada error perbaiki skematik Anda kemudian ulangi langkah sebelumnya. Pada tahap ini mungkin akan terdapat banyak warning karena banyak port yang tidak kita gunakan tetapi hal ini tidak akan menjadi masalah pada percobaan ini Pertama kita akan menggunakan simulasi functional seperti pada percobaan 2. Ikuti langkah-langkah seperti yang telah dipelajari pada percobaan sebelumnya dan atur simulasi sehingga sinyal yang dipakai dapat merepresentasikan setiap kemungkinan logika Simpan hasil simulasi Anda untuk laporan, kemudian ulangi kembali simulasi dengan mode timing. Lakukan pengamatan dan analisis perbedaan yang mungkin terjadi

Desainlah rangkaian decoder BCD-to-7segment seperti yang dijelaskan pada modul praktikum, menggunakan persamaan boolean berbentuk SOP dan POS yang telah dikerjakan sebelumnya

Bcd_7seg.bdf : Anda akan mengimplementasikan rangkaian decoder BCD-to-7-segment pada file skematik yang telah dibuat. Gunakan gerbang yang sesuai agar rangkaian sederhana. Setelah selesai pilih File -> Create/Update -> Create Symbol for Current File

Bcd_test.bdf: Dalam skematik ini Anda akan memasukkan rangkaian BCD-to-7segment pada skematik lainnya sebagai blok fungsi dan menghubungkan input kepada switch dan output dengan 7segment-display . Masukkan blok bcd_7seg yang telah dibuat ke dalam file skematik ini

3.2.3 Pembuatan Fungsional

Netlist

dan

Simulasi

3.2 MEMBUAT RANGKAIAN BCD 3.2.1 Membuat project BCD


Buat project Quartus baru bernama bcd pada direktori bcd Import pin assignment seperti pada percobaan sebelumnya Buatlah dua file diagram skematik, yang satu bernama bcd_test.bdf dan yang satunya lagi bernama bcd_7seg.bdf ( file yang terakhir tidak ditambahkan dalam project

Set skematik bcd_test sebagai Top Level Entity pada hierarki program. Hal ini bisa dilakukan dengan memilih Project -> Set as Top Level Entity

Simulasikan rangkaian untuk setiap kombinasi masukan yang mungkin dengan menggunakan jenis masukan Overwrite Clock seperti yang dilakukan pada percobaan sebelumnya

3.2.2 Pembuatan Skematik

Simpan hasil simulasi Anda untuk dilampirkan pada laporan dan jelaskan apakah decoder Anda sudah berfungsi dengan benar?

3.2.4 Simulasi Timing

Amati nilai masukan apa saja yang Anda dapatkan sebagai nilai set pada poin nomor 2, kemudian laksanankan kembali timing simulation hanya menggunakan nilai input yang mengakibatkan nilai set. Disini kita akan mencari kombinasi input yang mengakibatkan worst case delay

Lakukan simulasi timing pada rangkaian menggunakan bentuk sinyal masukan yang sama seperti pada simulasi fungsional. Pastikan simulasi suda diset sebagai Timing bukan Functional
Buka hasil simulasi pada Simulation report, arahkan mouse pada bagian gambar pulsa, klik kanan dan pilih insert time bar hingga terdapat 2 time bar pada gambar pulsa

Compile dahulu project Anda apabila belum dilakukan

Jalankan simulasi dan lihatlah apakah keluaran identik dengan simulasi secara fungsional

Geserlah time bar hingga yang satunya berada pada posisi ketika input yang dianggap Xj berubah dan yang satunya pada posisi ketika input yang dianggap Yj ikut berubah. Geser-geser menggunakan panah di sebelah kanan tulisan master time bar untuk memposisikan time bar dengan tepat. Amati angka yang terdapat pada time bar dan catat delay dari masing-masing kombinasi nilai set

3.2.6 Memprogram ke dalam FPGA Coba download program BCD-to-7-segment Anda ke dalam board FPGA yang tersedia, lihat modul percobaan sebelumnya apabila lupa langkah-langkahnya Mainkan 4 switch yang kita pakai pada percobaan ini dan lihat apakah program kita sudah berjalan dengan benar Amati dan catat hasil percobaan dalam buka catatan 3.3 MERANCANG BCD 7SEG DENGAN LEVEL ABSTRAKSI BEHAVIORAL

Jangan tutup jendela simulasi Timing karena akan digunakan untuk analisa selanjutnya

3.2.5 Simulasi Worst Case Delay


Periksa bagian Timing Analyzer Summary dan tpd dari Processing -> Compilation Report, kemudian cari pasangan kaki keluaran-masukan yang memiliki delay maksimal. Selanjutnya kita beri nama masukannya dengan MasukanDelay bersimbol Xi dan keluarannya bernama KeluaranDelay bersimbol Yj

Dengan melihat tabel kebenaran dari keluaran Yj, carilah semua nilai set dari Xi dimana ketika Xi berubah dari 0 menjadi 1 atau sebaliknya, akan berubah pula nilainya. Ulangi untuk kombinasi masukan yang lain sehingga Anda mendapatkan seluruh nilai set yang ada

Buatlah folder baru untuk melakukan percobaan pada praktikum ini. Folder ini nantinya digunakan sebagai direktori kerja, untuk menyimpan file-file yang berhubungan dengan praktikum ini

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY sederhana IS PORT ( CLK0 STD_LOGIC; : OUT END sederhana; GPIO BIT_VECTOR (15 TO 16));

: IN

Buatlah file DUT (Device Under Test) dengan cara mengetikkan script pada modul praktikum menggunakan text editor, kemudian simpan file tersebut di folder yang telah dibuat pada langkah sebelumnya

Buatlah file Testbench dengan cara mengetikkan script pada modul praktikum menggunakan text editor, kemudian simpan file tersebut di folder hyang telah dibuat pada langkah sebelumnya

ARCHITECTURE DataFlow OF sederhana IS COMPONENT CLOCKDIV PORT ( CLK : IN STD_LOGIC; DIVOUT : buffer BIT); END COMPONENT; SIGNAL X: BIT; BEGIN Clock: CLOCKDIV PORT MAP (CLK => CLK0, DIVOUT => X); GPIO(16) <= NOT X; GPIO(15) <= X NAND (NOT X); END DataFlow;

Buatlah file sim.do dengan cara mengetikkan script seperti yang telah dilakukan pada percobaan sebelumnya dengan terlebih dahulu melakukan beberapa modifikasi penyesuaian

Dan setelah rangkaian kami jadi, kami melakukan simulasi secara fungsional dan menghasilkan waveform sebagai berikut :

Pada jendela transcript ketikkan "do sim.do" untuk menjalankan simulasi. Ambil gambar sinyal hasil simulasi tersebut, kemudian sertakan dalam laporan

Implementasikan desain ini ke dalam FPGA dengan cara yang telah dijelaskan pada percobaan sebelumnya. Apakah hasilnya menunjukkan behavioral yang sama dengan langkah 3.2? Analisis kelebihan dan kekurangan masing-masing level abstraksi

4. HASIL DAN ANALISIS 4.1 Membuat Rangkaian Sederhana


Pada percobaan ini kami tidak melakukan perancangan seperti yang ada pada modul, tetapi kami merancang rangkaian digital dengan menggunakan VHDL. Adapun skrip yang kami buat untuk rangkaian ini adalah sebagai berikut :
GAMBAR 4.1.1 WAVEFORM SIMULASI FUNGSIONAL

Kami mengamati bahwa pada simulasi ini, nilai XBAR berubah setelah X berulang kali berubah nilai. Atau lebih tepatnya, nilai XBAR berubah saat simulasi memasuki waktu 244,84 ns.

Dengan rangkaian yang sama kami melakukan simulasi dengan menggunakan mode timing. Dan hasil waveform yang kami dapatkan adalah sebagai berikut :
GAMBAR 4.1.2 WAVEFORM SIMULASI TIMING

Kita mengharapkan hasil yang lebih baik daripada simulasi yang kita lakukan. Oleh karena simulasi ini adalah saat kita mencoba dan mendapatkan nilai terburuk yang dapat kita perkirakan, sehingga nantinya dapat melakukan antisipasi. Sesungguhnya kita mengharapkan pada saat penerapannya nanti, rangkaian dapat lebih baik daripada hasil simulasinya.

4.2 Membuat Rangkaian BCD


Pada percobaan kedua ini kami mencoba membuat rangkaian untuk diaplikasikan pada 7segment. Adapun tabel kebenaran dari 7segment itu sendiri antara lain :
NO 0 1 D3 0 0 0 0 0 0 0 0 1 1 D2 0 0 0 0 1 1 1 1 0 0 D1 0 0 1 1 0 0 1 1 0 0 D0 0 1 0 1 0 1 0 1 0 1 A 1 0 1 1 0 1 1 1 1 1 B 1 1 1 1 1 0 0 1 1 1 C 1 1 0 1 1 1 1 1 1 1 D 1 0 1 1 0 1 1 0 1 1 E 1 0 1 0 0 0 1 0 1 0 F 1 0 0 0 1 1 1 0 1 1 G 0 0 1 1 1 1 1 0 1 1

Pada simulasi ini didapatkan hasil waveform yang relatif sama dengan simulasi sebelumnya. Akan tetapi bila diamati dengan lebih teliti, terdapat perbedaan waktu saat nilai XBAR-nya berubah. Pada simulasi kali ini, waktu perubahan nilai XBAR terjadi pada 252,42 ns. Dapat kita lihat bahwa terdapat perbedaan dari nilai perubahan XBAR. Perbedaan ini terjadi oleh karena perbedaan sifat dari kedua jenis simulasi. Pada simulasi fungsional, keadaan dianggap ideal, sehingga simulasi tidak mengindahkan adanya faktorfaktor yang mungkin memperlambat fungsi. Sementara pada simulasi timing, berbagai faktor seperti waktu tunda sudah diperkirakan sehingga waktu yang dibutuhkan juga lebih lama. Berdasarkan data tersebut, dapat kita amati bahwa simulasi yang lebih mendekati kenyataan adalah simulasi timing. Karena pada dasarnya tidak ada kondisi yang ideal pada realisasi sesungguhnya, sehingga hasil yang lebih mendekati kenyataan dari keduanya adalah simulasi timing.

2 3 4 5 6 7 8 9

TABEL 4.2.1 TABEL KEBENARAN 7SEGMENT

Rangkaian dibuat dengan menggunakan bahasa VHDL yang skripnya antara lain sebagai berikut :
ENTITY bcd_7seg IS PORT ( D3, D2, D1, D0 A, B, C, D, E, F, G BIT); END bcd_7seg; : IN BIT; : OUT

ARCHITECTURE DataFlow OF bcd_7seg IS BEGIN A <= ((NOT D0) AND (NOT D2) AND (NOT D3)) OR (D2 AND D0) OR D1 OR D3; B <= (NOT D2) OR ((NOT D0) AND (NOT D1)) OR (D1 AND D0); C <= D2 OR (NOT D1) OR D0; D <= D3 OR ((NOT D0) AND D1) OR (D1 AND (NOT D2)) OR ((NOT D0) AND (NOT D2)) OR (D0 AND (NOT D1) AND D2);

E <= ((NOT D0) AND (NOT D2)) OR (D1 AND (NOT D0)); F <= D3 OR ((NOT D0) AND (NOT D1)) OR (D2 AND (NOT D1)) OR (D2 AND (NOT D0)); G <= D3 OR (D2 AND (NOT D1)) OR (D1 AND (NOT D2)) OR (D1 AND (NOT D0)); END DataFlow;

Analyzer Summary, kami memperoleh tabel sebagai berikut :

Setelah melakukan simulasi secara fungsional kami mendapatkan hasil sebagai berikut :

GAMBAR 4.2.1 WAVEFORM SIMULASI FUNGSIONAL

GAMBAR 4.2.3 TIMING DELAY SIMULATION

Dan kami juga melakukan simulasi secara timing dan diperoleh hasil sebagai berikut :
GAMBAR 4.2.2 WAVEFORM SIMULASI TIMING

Dapat kita amati dari gambar tabel di atas, yang memiliki nilai paling besar adalah dari SW1[1] ke HEX1[3] dengan nilai 12,977 ns. Dan dari data percobaan diketahui bahwa SW1[1] adalah input D1 dan HEX1[3] adalah output D. Kami mengulangi kembali percobaan ini dengan memberikan masukan 0 dan 1 untuk input yang memiliki nilai waktu tunda paling besar dari tabel sebelumnya, dan mendapat hasil sebagai berikut :

Dapat kita amati bahwa hasil simulasi baik yang secara fungsional maupun timing sesuai dengan tabel kebenaran yang telah ditampilkan sebelumnya. Akan tetapi rangkaian ini tidak terlepas dari waktu tunda yang kami analisis menggunakan fitur yang terdapat pada Quartus. Dengan menggunakan Timing
GAMBAR 4.2.4 TIME DELAY HASIL PENGAMATAN

Pada percobaan ini nilai waktu tunda yang didapat adalah sebesar 12,992 ns. Terdapat perbedaan antara nilai yang didapat melalui analisis dari software dengan yang didapat dari pengamatan. Adapun perbedaan ini kemungkinan diperoleh karena ketidaktepatan posisi pointer saat hendak mengamati waktu tunda sehingga didapat nilai yang berbeda. Berikut juga kami lampirkan data gambar dari hasil penerapan rangkaian yang telah kami rancang ke dalam FPGA :

4.3 Merancang BCD 7SEG dengan Level Abstraksi Behavioral


Setelah mencoba membuat rangkaian BCD 7SEG dengan abstraksi Behavioral, dengan mengetikkan skrip :
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; entity bcd is port( SW DOWNTO 0); HEX1 END bcd;

: IN STD_LOGIC_VECTOR (3 : OUT STD_LOGIC_VECTOR (1 TO 7));

ARCHITECTURE behavioral OF bcd IS --Deklarasi perameter konstan CONSTANT NOL : DOWNTO 0) := "0000"; CONSTANT SATU : DOWNTO 0) := "0001"; CONSTANT DUA : DOWNTO 0) := "0010"; CONSTANT TIGA : DOWNTO 0) := "0011"; CONSTANT EMPAT : DOWNTO 0) := "0100"; CONSTANT LIMA : DOWNTO 0) := "0101"; CONSTANT ENAM : DOWNTO 0) := "0110"; CONSTANT TUJUH : DOWNTO 0) := "0111"; CONSTANT DELAPAN : DOWNTO 0) := "1000"; CONSTANT SEMBILAN : DOWNTO 0) := "1001";

STD_LOGIC_VECTOR STD_LOGIC_VECTOR STD_LOGIC_VECTOR STD_LOGIC_VECTOR STD_LOGIC_VECTOR STD_LOGIC_VECTOR STD_LOGIC_VECTOR STD_LOGIC_VECTOR STD_LOGIC_VECTOR STD_LOGIC_VECTOR

(3 (3 (3 (3 (3 (3 (3 (3 (3 (3

BEGIN --Mapping nilai switch ke logika BCD 7Seg PROCESS (SW) BEGIN CASE SW IS WHEN NOL => HEX1 <= "1111110"; WHEN SATU => HEX1 <= "0110000"; WHEN DUA => HEX1 <= "1101101"; WHEN TIGA => HEX1 <= "1111001"; WHEN EMPAT => HEX1 <= "0110011"; WHEN LIMA => HEX1 <= "1011011"; WHEN ENAM => HEX1 <= "1011111"; WHEN TUJUH => HEX1 <= "1110000"; WHEN DELAPAN => HEX1 <= "1111111"; WHEN SEMBILAN => HEX1 <= "1111011"; WHEN OTHERS => HEX1 <= "0000000"; END CASE; END PROCESS; END behavioral;

Dan melakukan simulasinya, mendapatkan hasil sebagai berikut :

kami

GAMBAR 4.2.5 HASIL KELUARAN DARI FPGA

GAMBAR

4.2.6

HASIL

SIMULASI

BEHAVIORAL

6. DAFTAR PUSTAKA Brown, Steven dan Varesnic, Zvonko. 2005. Fundamental Of Digital Logic with VHDL Design.
Hutabarat, Mervin, dkk, Modul Praktikum Sistem Digital, Institut Teknologi Bandung, Bandung, 2010

Didapatkan hasil yang sama dan sesuai dengan tabel kebenaran maupun percobaan sebelumnya. Akan tetapi yang berbeda adalah dalam proses pemasukan datanya. Pada saat membuat rangkaian yang sebelumnya, kita memasukkan nilai fungsi ke dalam variabel, sehingga hasil yang didapat akan lebih jitu dan dapat dengan mudah diubah-ubah nilainya. Apabila dengan menggunakan behavioral, nilai yang diberikan sudah tetap, sehingga lebih mudah dalam memasukkan nilainya, tapi tidak dapat diubah-ubah sesuai dengan keinginan kita. Dapat kita amati bahwa masing-masing level abstraksi dari rangkaian digital tersebut memiliki kelebihan dan kekurangan masingmasing.

5. KESIMPULAN
Terdapat dua jenis simulasi dalam perancangan digital, fungsional dan timing. Yang lebih mendekati kenyataan adalah timing, karena memperkirakan berbagai macam faktor antara lain waktu tunda, sementara pada fungsional kondisinya diasumsikan ideal. Sehingga fungsional lebih berfungsi untuk memverifikasi apakah fungsi yang kita berikan sudah benar atau tidak, sementara untuk mendapatkan worst case delay dari rangkaian dapat diperoleh dari simulasi timing. Untuk level Abstraksi Behavioral lebih mudah pemasukan datanya. Akan tetapi kita tidak dapat memahami serta mengatur logika yang diberikan untuk mendapatkan nilai yang demikian. Sehingga setiap level abstraksi memiliki kelebihan dan kekurangan masingmasing sesuai kebutuhan.