Professional Documents
Culture Documents
ELEKTRONIKA 2
SEQUENTIAL BCD COUNTER
Nama
NPM
Rekan Kerja
Kelompok
Hari
Tanggal
Modul ke
: Ummaira Fadhilah
: 1406601750
: Iskandar
: 10
: Senin
: 2 Mei 2016
:7
MODUL 7
SEQUENTIAL BCD COUNTER
A. Tujuan
Dalam praktikum kali ini mahasiswa diharapkan dapat merancang sequential BCD
counter.Hal ini akan dicapai dengan menggunakan desain sirkuit sekuensial dan clock
division. Output yang dihasilkan akan ditampilkan pada dua digit display seven segment.
B. Alat
1. ZYBO Zync7000
2. Micro-USB power usb cable
3. Software Vivado
4. PC /Laptop 64 bit
C. Teori Dasar
Counter merupakan salah satu rangkaian elektronika digital yang menggunakan urutan logika
digital dan dipicu oleh pulsa atau clock(rangkaian sekuensial). Counter biasanya mencacah
atau menghitung dalam biner dan dapat dibuat untuk berhenti atau berulang ke hitungan awal
setiap
saat.
berulang,
jumlah
kondisi
biner
yang
berbeda
menunjukkan modulus (MOD) counter. Sebagai contoh, counteryang mencacah dari 0-1-2-34-5-6-7 secara berulang disebut juga modulus8 atau MOD-8. Rangkaian dasar counter adalah
beberapa flip-flop yang jumlahnya bergantung pada modulus yang diperlukan. Secara
umum,counter terbagi menjadi 2 jenis, yaitu asynchronous counter (ripple counter)
dan synchronous counter.
Rangkaian Asynchronous BCD Counter adalah rangkaian digital yang berfungsi melakukan
proses penghitungan data input dan memeberikan output data penghitungan tersebut dalam
format data BCD (Binary Coded Decimal) secara asynchronous (tidak sinkron/tidak
simultan). Teknik penghitungan pada Asynchronous BCD Counter adalah menghitung secara
serial yaitu secara bertahap dimana data output flip-flop pertama sebagai data input flip-flop
kedua dan data output flip-flop kedua sebagai data input flip-flop ketiga dan output data flipflop ketiga sebagai data input flip-flop ke empat dan seterusnya.
Asynchronous BCD Decade Counter adalah rangkaian penghitung data yang dibatasi samapi
10 hitungan saja, proses counter dibatasi maksimal sampai 10 kali penghitungan. Rangkaian
Asynchronous BCD Decade Counter pada artikel ini dibuat menggunakan 4 unit JK-FF (JK
Flip-flop) seperti terlihat pada gambar berikut
Proses counter pada rangkaian Asynchronous BCD Decade Counter adalah menghitung data
clock secara serial dimana data clock adalah input JK-FF pertama kemudian output JK-FF
pertama sebagai clock JK-FF kedua dan output JK-FF kedua sebagai clock JK-FF ketiga dan
output JK-FF ketiga sebagai clock JK-FF kempat kemudian pada hitungan ke sepeuluh
(decade) secara otomatis output conter direset kembali ke NOL (0000) menggunakan gerbang
NAND 3 input yang mendapat input data HIGH dari data BCD 9 (1001) sehingga data output
maksimum adalah BCD 9 (1001). Rangkaian Asynchronous BCD Decade Counter hanya
menghitung sebanyak 10 kali hitungan dengan output data BCD 0 (0000) hingga BCD 9
(1001) sperti pada tabel dan timing diagram berikut.
Dari data pada tabel dan timing diagram diatam terlihat bahwa proses penghitungan data
clock dolakukan secara serial dan dibatasi sampai 10 kali hitungan (decade) saja. Setiap 10
kali hitungan maka rangkaian Asynchronous BCD Decade Counter diatas akan direset atau
dipaksa kembali ke nilai awal lagi BCD 0 (0000). Dimana output rangkaian Asynchronous
BCD Decade Counter dengan JK-FF diatas adalah data BCD 0 (0000) sampai BCD 9 (1001).
Std_logic
(dan
8-nilai diperkenalkan dalam standar
Contoh:
Sebagian besar tingkat std_logic dimaksudkan untuk simulasi saja. Namun, '0 ', '1', dan
'Z' adalah synthesizable tanpa pembatasan. Sehubungan dengan nilai-nilai "weak
Gambar 5.. 10Hz to 2Hz Clock Divider. N is set at 5, the value which the internal variable must
count up to before outputting a 1
Konsep yang sama diterapkan saat mengambil masukan jam 125MHz yang ZYBO dan
membawanya ke frekuensi yang diinginkan.
Alasan kedua kita akan menggunakan pembagi jam di lab ini adalah karena kita
membutuhkan beberapa kecepatan clock yang berbeda. Seperti ditunjukkan dalam
Gambar 1, Lab 3 desain menggunakan Jam Pembagi selama tiga komponen yang
berbeda, masing-masing memerlukan kecepatan clock yang berbeda. Di sinilah obat
generik akan berguna, memungkinkan kita untuk menggunakan komponen jam
pembagi yang sama dan mengatur kecepatan clock output yang berbeda untuk kedua
komponen counter, yang toggler, serta komponen PoV_SS_Driver.
2. Designing the Persistence of Vision Driver
Di lab sebelumnya hanya salah satu digit dari dua digit, 7-Segmen Tampilan digunakan.
Pada lab ini kedua angka akan digunakan. Melihat pin tampilan, Anda akan melihat
bahwa ada hanya cukup masukan untuk menerangi tujuh segmen pada satu saat, jadi
bagaimana kita menyalakan kedua angka dengan angka yang terpisah?
Di lab sebelumnya Anda hanya peduli dengan tujuh pin yang terkait dengan masingmasing segmen pada layar. Input pin kedelapan, katoda, yang tersisa yang belum
ditetapkan. Jika Anda adalah untuk bukannya mengatur pin yang ke tinggi, angka di
sebelah kiri akan menampilkan jumlah bukan digit di sebelah kanan. Hal ini karena
layar dirancang untuk menyalakan satu digit atau yang lain tergantung pada apa nilai
input katoda adalah.
Di sinilah konsep Persistence of Vision datang ke dalam bermain. Kegigihan Visi
mengacu pada teknik di mana cahaya diaktifkan dan off pada frekuensi yang cukup
cepat sehingga terlihat seperti lampu tidak dimatikan sama sekali, karena otak Anda
tidak memiliki cukup waktu untuk memproses bahwa cahaya telah dimatikan sebelum
itu lagi. Ini dapat diterapkan untuk layar 7-Segmen kami. Dengan beralih katoda off
dan pada frekuensi yang cukup cepat, kedua angka akan tampak menyala secara
konsisten pada waktu yang sama.
D. Prosedur Percobaan
1. Designing Clock Divider Modules
1. Jam divider Anda hanya harus memiliki satu input dan satu output, serta
pernyataan generik.
2. Untuk nilai default dari N dalam pernyataan generik Anda, menggunakan apa
yang dibahas di atas untuk menentukan apa N nilai harus membawa jam masukan
dari 125MHz ke 2Hz. Ini akan menjadi kecepatan counter akan kenaikan dan
penurunan di.
3. Di dalam arsitektur clock divider kami akan menjadi proses yang sederhana.
Proses dinyatakan seperti ini: proses (CLK) Bagian dalam kurung disebut daftar
sensitivitas. Ini memberitahu hardware bahwa proses ini tergantung pada
perubahan sinyal yang, dalam hal ini perubahan input CLK.
4. Setelah deklarasi proses, jam divider Anda akan memerlukan variabel yang dapat
bertambah pada setiap jam mogok. Untuk memungkinkan untuk ini, jenis variabel
harus dibuat alami daripada std_logic biasa. Ini akan memberitahu desain Anda
memperlakukan variabel ini seperti integer. Ini akan memungkinkan Anda untuk
menggunakan pernyataan seperti: count: = count + 1; Namun, Anda hanya ingin
variabel Anda untuk kenaikan ketika jam pemogokan. Ada beberapa cara untuk
menyatakan ini, tapi untuk tujuan lab ini, Anda akan menggunakan: jika
(clk'EVENT) dan (CLK = '1') maka Dengan pernyataan ini, sisa blok Jika hanya
akan dimulai ketika perubahan CLK terdeteksi (Clk'EVENT), dan ketika nilai
saat ini adalah 1. 'EVENT adalah atribut dari sinyal. Cara lain untuk melakukan
hal ini akan menggunakan pernyataan sisi kenaikan.
5. Dengan variabel Anda incrementing setiap serangan jam, tujuannya sekarang
adalah untuk memiliki pembagi clock output Anda hanya sebesar '1' ketika
variabel yang telah mencapai nilai N yang ditetapkan, jika tidak maka harus sama
'0'. Hal ini dilakukan dengan yang lain kecil Jika blok.
* Jangan lupa untuk me-reset variabel menghitung Anda setelah mencapai N, jika jam
Anda akan output 1 setelah waktu yang diinginkan, dan kemudian tinggal di satu tanpa
batas.
2. Designing the Persistence of Vision Driver
1.
BCD Counters. Anda juga akan memerlukan sebuah output untuk sinyal tujuh
segmen, serta katoda.
2. Buat sinyal internal untuk memegang nilai katoda selama proses switching. Hal ini
kemudian akan menjadi output untuk output katoda, serta bertindak sebagai pilih
baris untuk multiplexer kecil. Sebuah sinyal internal yang kedua akan digunakan
sebagai output dari yang multiplexer pertama, dan kemudian akan bertindak
sebagai pilih untuk multiplexer kedua.
3. Proses Anda untuk beralih antara dua nilai katoda harus lagi peka terhadap
perubahan input CLK. Dalam proses Anda akan ingin katoda untuk beralih antara
tinggi dan rendah berdasarkan jika CLK baru saja berubah dan jika itu saat nilai
adalah '1'. Ini adalah semua yang diperlukan di blok proses.
4. Nilai yang dihasilkan dari proses switching akan menjadi output melalui sinyal
internal untuk output katoda.
5. Blok akan multiplexer. Menggunakan nilai dari sinyal katoda internal akan
menentukan apakah sinyal internal yang kedua terhubung ke input BCD meja
pertama, atau yang lain.
6. Itu keluaran kemudian akan digunakan sebagai pilih untuk multiplexer yang lebih
besar, yang akan menampilkan nilai 7-segmen yang dibutuhkan untuk
menampilkan mana nilai BCD kontra saat ini.
Misalnya, Jika nilai sekarang dari sinyal katoda internal '0', sinyal internal yang kedua
harus mengambil nilai dari input BCD meja pertama. Tergantung pada nilai itu, 7segmen digit di sebelah kanan layar harus harus yang nilai dalam desimal.
3. Top Level Design
1. Anda telah disediakan counter modul BCD, dan modul beralih. Buat file Lab3.vhd
yang instantiates dan interkoneksi dua BCD counter dan dua matikan, tiga modul
divisi jam, dan PoV 7-Segmen driver.
2. Tulis testbench untuk desain Lab3. Memverifikasi bahwa ia bekerja sebagaimana
dimaksud sebelum melanjutkan. Simulasikan dengan vektor uji ditampilkan di Lab
Kerja bagian 4, pada halaman 2 dari dokumen ini. Simpan gelombang dan tabel
kebenaran yang dihasilkan dan memasukkan mereka dalam laporan laboratorium
Anda.
3. alat Perencanaan I / O Gunakan Vivado untuk merancang berkas kendala Anda.
Papan ZYBO membantu memberikan jam onboard untuk digunakan dalam proyekproyek yang berjalan pada 125MHz. Untuk menggunakan jam ini, sederhana
menetapkan input jam Anda ke PIN L16 dalam file kendala Anda.
4. Sisa kendala Anda harus sesuai dengan tugas yang tercantum dalam Tabel 1.
PMOD
Switches
SW1 = B(3)
SW2 = B(2)
SW3 = B(1)
SW4 = B(0)
Onboard
Switches
SW1 = B(3)
SW1 = B(2)
SW1 = B(1)
SW1 = B(0)
Onboard
Buttons
BTN3 = Enable
BTN1 = Load
BTN0 = Up_Dn
BTN2 = Reset
5. Dua Digit 7-Segmen Tampilan harus dipetakan pada itu di laboratorium 2, namun
kali ini, P5 dari konektor J2 harus ditugaskan sebagai output Katoda.
E. Tugas Pendahuluan
Buatlah kode yang digunakan Sequential BCD Counter! Dan penjelasan kodenya!
Jawaban:
Kode:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use ieee.numeric_std.all;
entity counter is
port(
);
rst
: in STD_LOGIC;
clk
: in STD_LOGIC;
ld
: in STD_LOGIC;
en
: in STD_LOGIC;
up_dn
: in STD_LOGIC;
overflow
: out STD_LOGIC;
end counter;
begin
Q_proc : process(clk, rst) is
begin
if rst = '1' then
Qi <= "0000";
Qi <= std_logic_vector(unsigned(Qi) +
1);
end if;
end if;
end if;
end if;
Q <= Qi;
end Behavioral;
skematik :
Simulasi :
Keterangan:
Input rst: Leading Edge Value = 1; Trailing Edge Value = 0;
Period = 10 ns
Input clk: Leading Edge Value = 1; Trailing Edge Value = 0;
Period = 20 ns
Input ld: Leading Edge Value = 0; Trailing Edge Value = 1;
Period = 40 ns
Input en: Leading Edge Value = 1; Trailing Edge Value = 0;
Period = 80 ns
Input up_dn: Leading Edge Value = 1; Trailing Edge Value = 0;
Period = 30 ns
Input D: Leading Edge Value = 1; Trailing Edge Value = 0;
Period = 50 ns
Specify Time = 600 ns
F. Referensi
http://bit.ly/1O60J9H
http://eng.umb.edu/~cuckov/classes/engin341/Labs/LAB3%20-%20Sequential%20BCD
%20Counter/Lab%203%20%E2%80%93%20Sequential%20BCD%20Counter.pdf
http://elektronika-dasar.web.id/synchronous-counter/
http://elektronika-dasar.web.id/asynchronous-bcd-decade-counter/