Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Selamat datang di instruksi tentang cara membuat stopwatch menggunakan papan VHDL dan Basys 3 dasar. Kami sangat senang untuk berbagi proyek kami dengan Anda! Ini adalah tugas akhir untuk kursus CPE 133 (Desain Digital) di Cal Poly, SLO pada Musim Gugur 2016. Proyek yang kami buat adalah stopwatch sederhana yang memulai, mengatur ulang, dan menjeda waktu. Dibutuhkan tiga tombol tekan pada papan Basys3 sebagai input, dan waktu ditampilkan pada layar tujuh segmen empat digit papan. Waktu yang telah berlalu ditampilkan dalam format detik: centiseconds. Ini menggunakan jam sistem papan sebagai input untuk melacak waktu yang telah berlalu dan mengeluarkan waktu ke empat digit dari tampilan tujuh segmen.
Langkah 1: Bahan
Bahan yang Anda perlukan untuk proyek ini:
- 1 komputer dengan Vivado Design Suite WebPack diinstal dari Xilinx (lebih suka versi 2016.2)
- 1 papan Digilent Basys3 Xilinx Artix-7 FPGA
- 1 kabel port USB
Langkah 2: Mengatur Input dan Output
Gambar di atas menunjukkan diagram blok tingkat atas dari modul stopwatch utama. Stopwatch menerima input "CLK" (jam), "S1" (tombol mulai), "S2" (tombol jeda), dan "RST" (reset) dan memiliki output 4-bit "Anoda", 7-bit keluaran "segmen", dan keluaran bit tunggal "DP" (titik desimal). Ketika input "S1" tinggi, stopwatch mulai menghitung waktu. Saat "S2" rendah, stopwatch menjeda waktu. Ketika "RST" tinggi, stopwatch berhenti dan mengatur ulang waktu. Ada empat submodul dalam rangkaian: pembagi jam, penghitung angka, driver tampilan tujuh segmen, dan enkoder tampilan tujuh segmen. Modul utama stopwatch menghubungkan semua submodul bersama-sama dan ke input dan output.
Langkah 3: Membuat Jam
Modul pembagi jam mengambil jam sistem dan menggunakan input pembagi untuk membuat jam dengan kecepatan apa pun yang tidak lebih besar dari jam sistem. Stopwatch menggunakan dua modul jam yang berbeda, satu yang menghasilkan jam 500 Hz dan yang lainnya menghasilkan jam 100 Hz. Skema untuk jam pembagi ditunjukkan pada gambar di atas. Pembagi jam menerima input bit tunggal "CLK", dan input 32-bit "Pembagi" dan output bit tunggal "CLKOUT". "CLK" adalah jam sistem dan "CLKOUT" adalah jam yang dihasilkan. Modul ini juga menyertakan gerbang NOT, yang mengaktifkan sinyal "CLKTOG" ketika hitungan mencapai nilai pembagi.
Langkah 4: Menghitung sampai Sepuluh
Penghitung digit menghitung setiap digit dari 0 hingga 10 dan membuat jam lain untuk digit berikutnya agar berfungsi dari yang berosilasi ketika hitungan mencapai 10. Modul menerima 3 input bit tunggal "S", "RST", dan "CLK " dan menghasilkan keluaran bit tunggal "N" dan keluaran 4 bit "D". Input "S" adalah aktifkan input. Jam menyala saat "S" tinggi dan mati saat "S" rendah. "RST" adalah input reset sehingga jam disetel ulang ketika "RST" tinggi. "CLK" adalah input jam untuk penghitung angka. "N" adalah output jam yang menjadi jam input untuk digit berikutnya. Output "D" menyajikan nilai biner dari digit penghitung.
Langkah 5: Menampilkan Angka
Encoder tampilan tujuh segmen akan mengkodekan angka biner yang diterima dari modul driver tampilan tujuh segmen dan mengubahnya menjadi aliran bit yang akan ditafsirkan sebagai nilai '1' atau '0' untuk setiap segmen tampilan. Angka biner diterima oleh modul sebagai "digit" input 4-bit dan menghasilkan "segmen" output 7-bit. Modul ini terdiri dari blok proses kasus tunggal yang menetapkan aliran 7-bit spesifik untuk setiap nilai input yang mungkin dari 0 hingga 9. Setiap bit dalam aliran tujuh-bit mewakili salah satu dari tujuh segmen digit pada tampilan. Urutan segmen dalam aliran adalah "abcdefg" dengan '0 mewakili segmen yang menyala untuk nomor yang diberikan.
Langkah 6: Cara Menampilkan Stopwatch
Dalam modul driver tampilan tujuh segmen, ada empat input 4-bit "D0", "D1", "D2", dan "D3", masing-masing mewakili empat digit yang akan ditampilkan. Input "CLK" adalah input jam dari sistem. Output bit tunggal "DP" mewakili titik desimal pada tampilan tujuh segmen. Output 4-bit "Anoda" menentukan digit mana pada tampilan tujuh segmen yang ditampilkan dan "temp" output 4-bit tergantung pada status input kontrol 2-bit "SEL". Modul ini menggunakan 4 multiplexer untuk input kontrol "SEL" dan tiga output; "Anoda", "suhu", dan "DP".
Langkah 7: Menyatukan Semuanya
Blok proses 'jika' yang berjalan pada jam 500Hz digunakan untuk membuat tombol mulai dan jeda. Kemudian hubungkan semua submodul bersama-sama dalam modul utama stopwatch dengan mendeklarasikan komponen masing-masing submodul dan menggunakan berbagai sinyal. Submodul digit mengambil output jam dari submodul digit sebelumnya dengan yang pertama mengambil jam 100Hz. Output "D" dari submodul digit kemudian menjadi input "D" dari modul driver tampilan tujuh segmen. Dan terakhir output "temp" dari modul driver tampilan tujuh segmen menjadi input "temp" dari modul encoder tujuh segmen.
Langkah 8: Kendala
Gunakan 3 tombol push (W19, T17, dan U18) untuk input "RST", "S1", dan "S2". W19 adalah tombol reset, T17 adalah tombol start (S1), dan U18 adalah tombol pause (S2). Batasan untuk input input clock juga diperlukan menggunakan port W5. Juga, ingatlah untuk menambahkan baris ini ke batasan jam:
create_clock -tambahkan -nama sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK}]
Juga hubungkan Anoda dan segmen ke papan sehingga stopwatch ditampilkan pada tampilan tujuh segmen seperti yang terlihat pada file kendala.
Langkah 9: Pengujian
Pastikan perangkat Anda berfungsi dengan memainkan tiga tombol: menekan dan menahannya dalam setiap urutan yang memungkinkan untuk menemukan kemungkinan masalah dengan kode Anda.