Isi kandungan:

Model Suis Mati Sejagat: 10 Langkah
Model Suis Mati Sejagat: 10 Langkah

Video: Model Suis Mati Sejagat: 10 Langkah

Video: Model Suis Mati Sejagat: 10 Langkah
Video: Bagaimana Bisa Terjadi? Berikut Tempat-tempat Tanpa Gravitasi Di Bumi 2024, Julai
Anonim
Model Suis Mati Sejagat
Model Suis Mati Sejagat

Adakah anda bosan untuk memeriksa bahawa semua lampu di rumah anda sudah mati sebelum anda tidur? Adakah anda mahu anda dapat mematikan setiap cahaya sekaligus tanpa ribut-ribut? Untuk menjimatkan kuasa dan masa, kami memutuskan untuk membuat sistem yang secara teorinya dapat menutup seluruh rumah sekaligus.

Kami memodelkan bukti konsep ini menggunakan beberapa papan litar LED dan basys 3, dan membuat reka bentuk yang akan mematikan semua LED dengan menekan butang. Model ini dapat diterapkan pada sistem pencahayaan rumah yang sebenarnya, walaupun memerlukan pendawaian dan pengubahsuaian yang lebih rumit pada file VHDL yang diberikan.

Langkah 1: Import Fail VHDL yang Diberikan

Agar model kami berfungsi dengan betul, anda perlu memuat turun perisian yang memberi arahan kepada papan Basys 3.

Mula-mula anda perlu memuat turun alat sintesis untuk melaksanakan fail vhdl ke perkakasan. Sekiranya anda ingin memastikan bahawa semua kod akan meniru sepenuhnya reka bentuk kami tanpa memerlukan pengubahsuaian, kami mengesyorkan agar anda menggunakan Vivado 2016.2. Setelah memasang Vivado, anda boleh membuat projek dan memuat turun fail sumber kami. Tambahkan mereka sebagai sumber ke projek anda, jangan lupa untuk menambahkan fail kekangan juga!

Seterusnya kami akan menerangkan apa yang dilakukan oleh setiap fail sumber. Langkau langkah 2 hingga 6 jika anda hanya ingin menuju ke pembinaan fizikal peranti.

Langkah 2: Pecahan Modul Teratas VHDL

Pecahan Modul Teratas VHDL
Pecahan Modul Teratas VHDL
Pecahan Modul Teratas VHDL
Pecahan Modul Teratas VHDL

Modul utama projek adalah yang menghubungkan semua modul komponen individu dengan perkakasan yang digunakan. Seperti yang anda lihat, kita mempunyai modul killSwitch dan buzzerControl yang ditentukan sebagai komponen di bahagian atas.

Bahagian bawah menentukan bagaimana modul ini dihubungkan bersama. Kami telah menghubungkan empat LED ke papan dan mengaitkannya dengan modul killSwitch dev0 hingga dev3. Kami mempunyai empat modul killSwitch yang ditentukan kerana kami memerlukan satu untuk menguruskan keadaan setiap LED yang disambungkan. Setiap modul ini menggunakan isyarat jam dan butang yang kami buat dalam definisi modul teratas serta suis input dan output peranti masing-masing.

Modul kawalan buzzer di bahagian bawah mengaktifkan buzzer apabila butang universal off ditekan. Seperti yang anda lihat, modul kawalan bel diserahkan isyarat jam dan butang sebagai input. Ia juga melewati pin output buzzer fizikal untuk mengawalnya dengan sewajarnya.

Langkah 3: Pecahan Modul Suis Bunuh VHDL

Pecahan Modul VHDL Kill Switch
Pecahan Modul VHDL Kill Switch
Pecahan Modul VHDL Kill Switch
Pecahan Modul VHDL Kill Switch

Kill Switch adalah butang mati sejagat, dan modul berkenaan terutamanya menghubungkannya ke elemen litar lain sehingga apabila ditekan semua lampu akan mati.

Walaupun modul teratas mengendalikan perkakasan fizikal ke perisian, modul killSwitch mengendalikan logik utama setiap peranti. Modul mengambil input untuk isyarat jam, butang mati sejagat, dan suis togol peranti. Sebagai gantinya, ia mengawal keadaan pin peranti yang disambungkannya.

Di bahagian seni bina kod kita melihat bahawa ia bergantung pada modul dFlipFlop untuk menyimpan memori. Anda juga dapat melihat bahawa kami telah menyatakan empat isyarat yang akan digunakan untuk menghubungkan flip flop serta melaksanakan penyataan logik kami. Di bahagian tingkah laku kod, kami telah membuat contoh modul dFlipFlop dan memberikan isyarat I / O kami ke port.

Dari sini bahagian utama logik kita terletak pada nilai isyarat untuk invertState dan isDevOn. Dasar logik kami untuk peranti ini adalah seperti berikut: "Bila-bila masa suis dilemparkan, lampu akan membalikkan keadaan hidup / mati. Setiap kali butang ditekan, dan LED saat ini menyala, LED akan mematikan keadaannya ke mati. " Dari dua pernyataan ini, kita dapat memperkirakan bahawa keadaan LED mestilah XOR suis dan elemen memori kita. Dengan cara itu, perubahan sama ada akan membalikkan LED. Ini dapat dilihat dilaksanakan dalam isyarat isDevOn. LED dengan syarat untuk elemen memori dikendalikan oleh isyarat invertState kami. Sekiranya LED menyala dan butang ditekan, elemen memori kita akan mengemas kini dan membalikkan keadaannya. Ini kemudian membalikkan keadaan LED juga.

Langkah 4: Pecahan Modul Flip Flop VHDL

Pecahan Modul Flip Flop VHDL
Pecahan Modul Flip Flop VHDL

Satu masalah dengan reka bentuk kami adalah hakikat bahawa setelah menggunakan suis mati, lampu yang sebelumnya mungkin perlu dibalik dua kali untuk kembali ke posisi hidup. Ini akan sangat menyusahkan orang dari masa ke masa. Kami berjaya mengelakkan ketidakselesaan ini dengan memasukkan "Flip Flop," elemen litar yang mampu menyimpan maklumat, ke dalam reka bentuk kami. Sekarang, sistem mengingati apakah suis lampu sebelumnya dihidupkan sehingga jika ia dibalik lagi ia akan menyala tanpa mengira kedudukan awalnya.

Kod VHDL menggunakan pernyataan jika dan yang lain untuk membuat Flip Flop sebagai komponen dalam reka bentuk litar kami. Ia memastikan bahawa apabila isyarat jam beralih dari keadaan rendah ke keadaan tinggi, ketika bola lampu menyala, dan ketika suis mati ditekan, output flip flops akan menggantikan inputnya. Apabila input ditimpa, flip flop terbalik.

Langkah 5: Pecahan Modul Buzzer Piezo VHDL

Pecahan Modul Buzzer VHDL Piezo
Pecahan Modul Buzzer VHDL Piezo
Pecahan Modul Buzzer VHDL Piezo
Pecahan Modul Buzzer VHDL Piezo

Fail ini agak berlebihan dari segi reka bentuk perkakasan, tetapi sangat mustahak untuk menjadikan modul teratas dan fail kekangan berjalan dengan lancar. Sekiranya anda memilih untuk tidak menggunakan buzzer Piezo, muat turun fail ini, tetapi jangan pasangkan buzzer ke papan Basys 3.

Bel Piezo akan, apabila menekan butang lumpuhkan, memainkan nada nada dua yang akan memberi pengguna maklum balas pendengaran bahawa butang telah ditekan. Kami melaksanakan ini secara tingkah laku dalam VHDL melalui rangkaian penyataan jika dalam struktur proses. Kami bermula dengan membuat nilai integer untuk mengawasi berapa banyak perubahan jam yang telah berlaku. Setelah proses dimulakan, program menghabiskan separuh pertama sesaat (0 hingga 50 juta jam) mengeluarkan nota A pada 440 hertz. Ini dicapai dengan membalikkan isyarat piezo buzzer setiap gandaan 227272 genap dengan fungsi modulo. Nombor ini adalah hasil membahagikan isyarat jam papan (100 MHz) dengan frekuensi yang diinginkan (400 Hz). Sepanjang separuh masa kedua (50 hingga 100 juta jam berdetak) papan mengeluarkan not F pada 349.2 hertz melalui kaedah yang sama seperti sebelumnya. Selepas satu saat program tidak meningkatkan pemboleh ubah jam lebih jauh dan berhenti mengeluarkan apa-apa dari buzzer piezo. Menekan butang universal mati sekali lagi menetapkan nombor ini menjadi 0, memulakan semula kitaran bunyi.

Langkah 6: Pecahan Fail Kekangan VHDL

Fail kekangan memberitahu Vivado apa peranti pada papan Basys 3 yang kita gunakan. Ini juga memberikan nama Vivado yang kami berikan kepada peranti dalam kod kami. Vivado memerlukan maklumat ini sehingga tahu bagaimana menghubungkan elemen logik kami ke perkakasan fizikal. Fail kekangan merangkumi sebilangan besar kod yang dikomentari (tidak digunakan). Garis kod ini merujuk pada peranti di papan yang tidak kita gunakan.

Peranti yang kami gunakan merangkumi empat suis input berlabel V17, V16, W16, dan W1 di papan. Kami juga menggunakan butang mati universal, berlabel U18. Pin output untuk empat LED yang disambungkan adalah JB4, JB10, JC4, dan JC10. Untuk buzzer piezzo kami menggunakan pin output JA9.

Seperti yang kami nyatakan dalam perincian modul teratas, jika anda ingin menambahkan LED tambahan atau peranti lain ke papan, anda perlu meningkatkan skop isyarat sw dan dev, tambahkan lebih banyak modul killSwitch, dan sambungkannya bersama. Anda kemudian perlu menghubungkan nama pemboleh ubah tersebut ke perkakasan peranti melalui fail kekangan. Ini dapat dilakukan dengan membebaskan (mengaktifkan semula) garis kod yang berkaitan dengan pin yang ingin anda gunakan kemudian menambahkan nama pemboleh ubah yang berkaitan di modul teratas. Sintaks yang betul untuk ini dapat disalin dari peranti yang kita gunakan. Untuk mengetahui nama pin yang ingin anda gunakan di papan rujuk panduan rujukan Baasys 3 di sini.

Langkah 7: Membina Dasar 3

Membina Dasar 3
Membina Dasar 3
Membina Dasar 3
Membina Dasar 3

Anda perlu memasang LED anda ke port I / O yang betul dari Basys 3. Ikuti gambar yang disediakan untuk menentukan apakah port yang betul, kerana jika anda memasang LED ke port yang salah, ia tidak akan menyala. Sekiranya anda memilih untuk memasang buzzer piezo, anda juga perlu menyambungkannya ke port I / O yang betul.

Apabila papan sudah siap, pasangkannya ke komputer anda melalui kabel USB.

Langkah 8: Melaksanakan Fail VHDL ke Basys 3

Melaksanakan Fail VHDL ke Basys 3
Melaksanakan Fail VHDL ke Basys 3
Melaksanakan Fail VHDL ke Basys 3
Melaksanakan Fail VHDL ke Basys 3

Setelah papan anda siap dan kod anda selesai, anda akhirnya dapat menyatukan modelnya.

Setelah projek anda disiapkan di Vivado, anda mesti mengklik butang "Hasilkan Bitstream" untuk menyusun kod sebelum dimuat ke papan kenyataan. Sekiranya anda menerima mesej ralat pada masa ini, anda harus memeriksa semula bahawa kod anda sama dengan kod kami. Apabila saya mengatakan dengan tepat, maksud saya adalah titik koma atau jenis tanda kurung yang digunakan. Setelah aliran bit anda berjaya ditulis, pergi ke pengurus perkakasan di Vivado dan klik pada butang "Open Target", kemudian klik pada "Program Device" sejurus kemudian. Papan Basys 3 anda kini harus berfungsi sepenuhnya.

Langkah 9: Menggunakan Papan Basys 3

Menggunakan Papan Basys 3
Menggunakan Papan Basys 3

Sekarang bahawa Basys 3 Board beroperasi dan telah diprogramkan untuk mewakili model kami, anda harus tahu bagaimana menggunakannya.

Masing-masing dari empat suis paling jauh ke kanan mengendalikan salah satu LED, menjentikkannya akan menyebabkan LED menyala atau mati. Sekiranya LED tidak diaktifkan, periksa untuk memastikan bahawa anda dipasang ke port I / O yang betul, dan bahawa LED anda berfungsi di tempat pertama.

Apabila anda ingin mematikan semua LED sekaligus, anda mesti menekan butang tengah dalam set lima butang yang dipaparkan di atas.

Langkah 10: Pamerkan

Model ini berfungsi sebagai kebaruan kecil yang rapi yang dapat anda tunjukkan di hadapan rakan dan keluarga anda. Secara teorinya ia juga dapat digunakan untuk menerapkan suis mati universal ke sistem elektrik rumah anda, jika anda mengganti LED dengan wayar yang menuju ke lampu anda. Walaupun mungkin, kita masih harus menasihatinya. Terdapat potensi untuk membahayakan diri sendiri atau kediaman anda sekiranya anda cuba melakukan kabel semula tanpa bantuan juruelektrik.

Disyorkan: