Isi kandungan:

L I G H T S: 5 Langkah
L I G H T S: 5 Langkah

Video: L I G H T S: 5 Langkah

Video: L I G H T S: 5 Langkah
Video: Sketchup Vray 5 "Interior: other lighting method" 2024, November
Anonim
L I G H T S
L I G H T S

Tujuan dari projek akhir ini adalah untuk membuat sesuatu yang akan menumpukan pada kelestarian dan menerapkan konsep reka bentuk digital, dan untuk melakukan ini, saya memutuskan untuk merancang sistem penjimatan tenaga yang dapat diskalakan menggunakan vhdl dan dibuat untuk Papan Basys 3 (siri Artix-7 35T). Boleh diskalakan kerana sejumlah sensor dapat dimasukkan ke dalam bilik dan sebilangan besar sistem ini dapat diletakkan di sekitar bangunan atau rumah. Apa yang akan dilakukan oleh sistem ini, secara teorinya menjimatkan ribuan dolar di bangunan komersial dan mengurangkan peratusan penggunaan tenaga yang besar di komuniti kediaman yang lebih kecil dengan menerapkan sistem lampu yang dikendalikan secara aktif dan pasif, pengesan gerakan, pemasa yang dipaparkan pada paparan tujuh segmen, dan suis kawalan. Contoh ini berkaitan dengan sistem tunggal dengan tiga pengesan gerakan, suis induk, suis manual / normal, empat paparan tujuh segmen, dan satu lampu yang dikendalikan oleh sistem.

Contohnya, di ruangan yang dipilih, beberapa alat pengesan gerakan akan diletakkan (reka bentuk contoh ini mempunyai tiga), dan masing-masing akan menghantar isyarat (1) jika mengesan pergerakan, dan (0) jika tidak. Sekiranya sekurang-kurangnya salah satu pengesan gerakan mengesan pergerakan, lampu akan menyala jika belum menyala dan tetap menyala jika sudah menyala. Pada bila-bila masa semua pengesan gerakan tidak mengesan apa-apa, pemasa mula mengira untuk jangka masa yang ditetapkan (boleh disesuaikan dalam kod), dan lampu tetap menyala semasa pemasa turun. Setelah pemasa selesai mengira, pemasa berhenti, dan lampu mati. Sekiranya sekurang-kurangnya satu pengesan gerakan mengesan pergerakan semasa pemasa mengira ke bawah, pemasa berhenti dan diset semula. Dan jika sekurang-kurangnya satu pengesan gerakan mengesan pergerakan semasa lampu padam, lampu akan segera menyala.

Sistem ini mempunyai dua mod, satu dengan pemasa seperti yang dinyatakan di atas, dan yang kedua di mana terdapat suis yang mengawal lampu secara manual (mengabaikan sensor). Terdapat suis induk yang membolehkan pengguna memilih mod mana yang ingin mereka gunakan berdasarkan mana yang mereka rasa akan menjimatkan lebih banyak tenaga secara keseluruhan. Cth. Bilik seperti lorong boleh memanfaatkan mod pemasa pasif - pengguna tidak pasti bila orang akan melewati, tetapi menyalakan dan mematikan lampu setiap kali mereka masuk dan keluar akan menjadi kesulitan, sedangkan bilik seperti itu sebagai bilik tidur dengan satu pengguna akan dikendalikan secara manual dengan lebih baik. Dan suis induk akan berguna dalam kes seperti jika orang yang tinggal di bilik tidur meninggalkannya untuk jangka masa yang lama, maka suis induk dapat dimatikan, dan mod pemasa akan berfungsi untuk menjimatkan tenaga dengan lebih cekap.

Jadi dalam sistem ini, terdapat dua mesin keadaan, satu adalah mesin keadaan utama, dan satu lagi untuk pemasa undur. Mesin keadaan utama mempunyai lima keadaan yang ditentukan seperti itu: 1. "lampu menyala, pergerakan dikesan" (id = 000), 2. "lampu menyala, tidak ada pergerakan yang dikesan" (id = 001), 3. "lampu mati, tidak ada pergerakan dikesan "(id = 010), 4." dihidupkan secara manual "(id = 011), dan 5." dimatikan secara manual "(id = 100). Mesin keadaan utama ini mempunyai empat input: suis induk (ms), suis manual / normal (ns), isyarat yang tinggi apabila sekurang-kurangnya satu suis mengesan pergerakan, dan rendah sebaliknya (orx), dan isyarat yang tinggi setelah pemasa selesai, dan rendah sebaliknya (td). Mesin keadaan utama mempunyai dua output: lampu (lampu) dan isyarat yang menunjukkan bila hendak menghidupkan pemasa undur (pemasa) atau (t) (kedua-duanya digunakan secara bergantian).

Mesin keadaan kedua, pemasa undur, mempunyai 12 keadaan: 10 daripadanya mempunyai id yang dikaitkan dengan nombor yang ditunjukkan oleh tujuh segmen- "seg 10" (id = 1010), "seg 9" (id = 1001), […], "Seg 2" (id = 0010), "seg 1" (id = 0001), dan dua keadaan lain kedua-duanya memaparkan sifar, mewakili pemasa tidak aktif - jadi ada kosong pertama "kosong 1" (id = 1111) dan kosong kedua "kosong 2" (id = 0000). Pemasa undur mempunyai satu input: pemasa (t), dan tiga output: nombor yang ditunjukkan dalam binari dengan empat bit (bin) dan isyarat yang menunjukkan pemasa selesai (td).

Langkah 1: Rajah Kotak Hitam

Rajah Kotak Hitam
Rajah Kotak Hitam

Ini adalah gambaran keseluruhan bagaimana keseluruhan sistem seharusnya beroperasi, dan dijelaskan dengan gambarajah kotak hitam.

  • Jam digunakan untuk jam mesin keadaan utama dan penyahkod tujuh segmen; jam yang lebih perlahan diperlukan untuk kaunter bawah, jadi ada modul pembahagi jam yang mengambil input jam dan mengeluarkan jam yang lebih perlahan untuk kaunter bawah.
  • Pemboleh ubah perantaraan (orx) dalam pembungkus diikat pada sensor gerakan dan akan tinggi jika sekurang-kurangnya salah satu sensor mengesan sesuatu, dan rendah sebaliknya; persamaan boolean untuk itu hanyalah orx = s (2) atau s (1) atau s (0).
  • Fsm utama mengawal keadaan umum sistem berada, bergantung pada input (orx, ms, ns, td) dan output keadaan semasa yang di (sm) ditunjukkan dipermudahkan dengan dua isyarat yang digunakannya (pemasa dan lampu).

    • (pemasa) adalah isyarat pembungkus yang dihantar ke kaunter bawah fsm sebagai inputnya dan dikendalikan oleh keadaan semasa fsm utama. Ini menunjukkan bila hendak menghidupkan pemasa.
    • (lampu) adalah isyarat pembungkus digunakan untuk mengawal led dan dikawal oleh keadaan semasa fsm utama.
  • Penghitung bawah fsm mengawal apa yang dipaparkan oleh tujuh segmen bergantung pada input (pemasa) dan mengeluarkan keadaan semasa yang ditunjukkan dalam (sd) dipermudahkan dengan dua isyarat yang digunakannya (td dan bin).

    • (td) adalah isyarat pembungkus yang dihantar ke fsm utama sebagai inputnya dan dikendalikan oleh keadaan semasa kaunter bawah fsm. Ia berfungsi sebagai isyarat maklum balas yang menunjukkan bila pemasa selesai.
    • (bin) adalah isyarat pembungkus empat bit yang digabungkan dengan empat bit sifar ("0000" & bin) dan lapan bit gabungan dihantar ke (q), isyarat pembungkus lapan bit, yang seterusnya dikirim ke tujuh penyahkod segmen di bawah (ALU_VAL).
  • Modul tujuh segmen adalah sama seperti di Polylearn; input utamanya mengambil nombor 8 bit (bin) hingga (ALU_VAL) untuk dipaparkan pada empat paparan tujuh segmen yang berbeza menggunakan output (SEGMENTS) ke isyarat pembungkus (seg) dan (DISP_EN) ke pembungkus (disp_en).

    • Oleh kerana dua atau lebih tujuh paparan segmen tidak dapat menampilkan digit yang berbeza pada masa yang sama, jam diperlukan untuk menelusuri keempat sseg, memaparkan digit yang sesuai pada satu masa untuk setiap sseg dihidupkan secara individu, dan berbasikal cukup cepat menjadikan ssegs kelihatan serentak.
    • (tanda dan sah) tetap sepanjang program ini, jadi (tanda) tetap rendah dan (sah) kekal tinggi.
    • (ALU_VAL) mengambil isyarat pembungkus (q) sebagai input, yang mewakili nombor yang akan ditampilkan pada paparan tujuh segmen dalam bentuk binari.
    • Output (SEGMENTS) dihantar ke isyarat pembungkus lapan bit (seg) dan (DISP_EN) ke isyarat pembungkus empat bit (disp_en).
  • Terdapat juga modul D flip flop yang tidak ditunjukkan secara jelas dalam rajah tetapi diperlukan untuk mesin dua keadaan sebagai submodul dan membantu transistion keadaan secara serentak.

    • (3) ini diperlukan untuk fsm utama kerana 2 ^ (3) = 8> 5 keadaan untuk pengekodan
    • (4) ini diperlukan untuk kaunter bawah fsm kerana 2 ^ 4 = 16> 12 keadaan untuk pengekodan

Langkah 2: Nyatakan Mesin

Mesin Negeri
Mesin Negeri

Untuk merancang mesin dua keadaan dengan betul, setiap keadaan perlu ditentukan dengan jelas, dengan output dan keadaan peralihan berdasarkan input yang mungkin berbeza.

Fsm utama menyatakan:

"Lampu menyala, pergerakan dikesan" (id = 000)

Lampu menyala, sekurang-kurangnya salah satu pengesan gerakan mengesan pergerakan, jadi orx mesti tinggi dan ms dihidupkan.

  • Keluaran: lampu = 1 dan pemasa = 0
  • Tetap seperti ini apabila ms = 1 dan orx = 1.
  • Menyatakan "lampu menyala, tidak ada pergerakan yang dikesan" jika ms = 1 dan orx = 0.
  • Pergi ke keadaan "dihidupkan secara manual" jika ms = 0 dan ns = 1.
  • Pergi ke keadaan "dimatikan secara manual" jika ms = 0 dan ns = 0.

"Lampu menyala, tidak ada pergerakan yang terdeteksi" (id = 001)

Lampu menyala, tidak ada pergerakan yang dapat dikesan dari pengesan gerakan, jadi orx mesti rendah dan ms dihidupkan. Juga pada awal keadaan ini, pemasa yang ditetapkan tinggi memberitahu mundur fsm untuk mula menghitung mundur, meneruskan penghitungan mundur, dan berhenti menghitung mundur setelah mundur fsm memberitahu fsm ini bahawa ia sudah selesai mengira.

  • Keluaran: lampu = 1 dan pemasa = 1.
  • Tetap seperti ini apabila ms = 1 dan orx = 0 dan td (pemasa selesai) = 0.
  • Menyatakan "lampu menyala, pergerakan dikesan" jika ms = 1 dan orx = 1.
  • Menyatakan "lampu mati, tidak ada pergerakan yang dikesan" jika ms = 1 dan orx = 0 dan td = 1.
  • Pergi ke keadaan "dihidupkan secara manual" jika ms = 0 dan ns = 1.
  • Pergi ke keadaan "dimatikan secara manual" jika ms = 0 dan ns = 0.

"Lampu mati, tidak ada pergerakan yang terdeteksi" (id = 010)

Lampu dimatikan, tidak ada pergerakan yang dikesan dari sensor gerakan apa pun dan pemasa selesai mengira ke bawah, jadi orx mesti rendah, ms dihidupkan, dan td mati.

  • Keluaran: lampu = 0 dan pemasa = 0.
  • Tetap seperti ini apabila ms = 1 dan orx = 0.
  • Menyatakan "lampu menyala, pergerakan dikesan" jika ms = 1 dan orx = 1.
  • Pergi ke keadaan "dihidupkan secara manual" jika ms = 0 dan ns = 1.
  • Pergi ke keadaan "dimatikan secara manual" jika ms = 0 dan ns = 0.

“Dihidupkan secara manual” (id = 011)

Lampu menyala, pengesan gerakan tidak relevan, jadi ms dimatikan, dan ns dihidupkan.

  • Keluaran: lampu = 1 dan pemasa = 0.
  • Tetap seperti ini apabila ms = 0 dan ns = 1.
  • Pergi ke keadaan "dimatikan secara manual" jika ms = 0 dan ns = 0.
  • Menyatakan "lampu mati, tidak ada pergerakan yang dapat dikesan jika ms = 1.

"Dimatikan secara manual" (id = 100)

Lampu mati, pengesan gerakan tidak relevan, jadi ms dimatikan, dan ns dimatikan.

  • Keluaran: lampu = 0 dan pemasa = 0.
  • Tetap seperti ini apabila ms = 0 dan ns = 0.
  • Pergi ke keadaan "dihidupkan secara manual" jika ms = 0 dan ns = 1.
  • Menyatakan "lampu mati, tidak ada pergerakan yang dapat dikesan jika ms = 1.

Kaunter bawah menyatakan:

“Seg 10” (id = 1010)

Paparan tujuh segmen menunjukkan 10.

  • Keluaran: bin = "1010" dan td = 0.
  • Pergi ke keadaan "seg 9" jika pemasa = 1.
  • Menyatakan "kosong 2" jika pemasa = 0.

“Seg 9” (id = 1001)

Paparan tujuh segmen menunjukkan 9.

  • Keluaran: bin = "1001" dan td = 0.
  • Pergi ke keadaan "seg 8" jika pemasa = 1.
  • Menyatakan "kosong 2" jika pemasa = 0.

(Nyatakan "Seg 8" hingga "Seg 2" dihilangkan kerana mengikut corak yang sama seperti "Seg 10" dan "Seg 9" dan tidak diperlukan untuk penjelasan)

“Seg 1” (id = 0001)

Paparan tujuh segmen menunjukkan 1.

  • Keluaran: bin = "0001" dan td = 0.
  • Pergi ke keadaan "kosong 2" pada tepi jam seterusnya (tidak memerlukan input).

"Kosong 2" (id = 1111)

Paparan tujuh segmen menunjukkan 0. Tujuan keadaan kosong kedua adalah supaya terdapat keadaan terpisah ketika td = 1 untuk keselamatan.

  • Keluaran: bin = "1111" dan td = 1.
  • Pergi untuk menyatakan "kosong 1" pada tepi jam yang seterusnya (tidak memerlukan input).

"Kosong 1" (id = 0000)

Paparan tujuh segmen menunjukkan 0. Ini adalah keadaan sistem tetap berada ketika mesin keadaan utama dalam keadaan "mati, tidak ada pergerakan yang dikesan".

  • Keluaran: bin = "0000" dan td = 0.
  • Pergi ke keadaan "seg 10" jika pemasa = 1.

Langkah 3: Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran

Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran
Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran
Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran
Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran
Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran
Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran
Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran
Nyatakan Jadual Kebenaran Mesin, Persamaan Pengujaan, dan Persamaan Keluaran

Langkah seterusnya adalah membuat jadual kebenaran untuk dua mesin keadaan dan persamaan pengujaan dan persamaan output untuk setiap fsm. Untuk setiap persamaan pengujaan fsm, perlu ada persamaan untuk setiap bit keadaan seterusnya yang dikodkan dari segi keadaan semasa dan isyarat inputnya. Untuk setiap persamaan output fsm, perlu ada persamaan untuk setiap isyarat output dari segi keadaan semasa. Keempat-empat set persamaan dapat diambil dari jadual kebenaran yang digambarkan. (qn adalah bit yang dikodkan keadaan seterusnya untuk setiap mesin keadaan, dan q adalah keadaan semasa)

(000) bersamaan dengan q (2) 'q (1)' q (0) ', dan (0000) bersamaan dengan q (3)' q (2) 'q (1)' q (0) '

(mis. (0101) adalah q (3) 'q (2) q (1)' q (0) dan (110) adalah q (2) q (1) q (0) ')

Persamaan pengujaan untuk fsm utama:

  • qn (2) = (ms) '(ns)
  • qn (1) = (ms) '(ns)' + (ms) (orx) '[(td) (001) + (010)] + (ms) [(011) + (100)]
  • qn (0) = (ms) '(ns)' + (ms) (orx) '[(000) + (td)' (001)]

Persamaan output untuk fsm utama:

  • lampu = (000) + (001) + (100)
  • pemasa = (001)

Persamaan pengujaan untuk kaunter bawah fsm:

  • qn (3) = t [(0000) + (1010) + (1001) + (0001)]
  • qn (2) = t [(1000) + (0111) + (0110) + (0101) + (0001)]
  • qn (1) = t [(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
  • qn (0) = t [(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]

Persamaan output untuk kaunter bawah fsm:

  • td = (1111)
  • tong sampah (3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • tong sampah (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
  • tong sampah (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
  • tong sampah (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)

Langkah 4: Pembungkus, Submodul, & Kekangan

Seperti yang telah dijelaskan dalam Langkah 1, modul ini diperlukan untuk projek ini dan semuanya diikat bersama dengan modul pembungkus yang bertajuk "final_proj.vhd". Fail kekangan yang bertajuk "Basys3_Master.xdc" digunakan untuk menghubungkan semua input dan output pembungkus ke suis, tujuh segmen, dan port I / O pada papan Basys 3. Suis induk mestilah suis pada papan yang paling dekat dengan sisi wayar dihidupkan, suis normal / manual adalah yang kedua terdekat, dan tiga suis yang mewakili tiga sensor gerakan adalah tiga suis tepat di sebelah suis normal / manual. Semua kod (persamaan boolean, deklarasi modul, dll) sudah ditulis dalam fail, jadi anda tidak perlu menulis apa-apa lagi untuk membuat ini berfungsi.

Langkah 5: Pelabuhan I / O untuk LED

Pelabuhan I / O untuk LED
Pelabuhan I / O untuk LED
Pelabuhan I / O untuk LED
Pelabuhan I / O untuk LED

Langkah terakhir untuk projek ini adalah menggunakan led untuk menunjukkan sama ada (lampu) benar-benar menyala dan tidak. Pendawaian ditunjukkan dalam dua gambar. Pastikan terdapat perintang bersiri dengan lekapan (sekurang-kurangnya 330 ohm) agar tidak membakar led dan pastikan pin panjang led disambungkan ke header wanita yang sama di papan basys semasa wayar merah ditunjukkan (atas paling kanan) dan pin yang lebih pendek disambungkan ke tanah, header wanita yang sama dengan wayar hitam yang ditunjukkan (atas, kedua dari kiri).

Disyorkan: