Mundarija:

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

Video: L I G H T S: 5 qadam

Video: L I G H T S: 5 qadam
Video: KADAM Light's 2024, Noyabr
Anonim
L I G H T S
L I G H T S

Ushbu yakuniy loyihaning maqsadi barqarorlikka e'tibor qaratadigan va raqamli dizayn kontseptsiyalarini amalga oshiradigan narsalarni yaratish edi va buning uchun men vhdl yordamida quvvatni tejash tizimini loyihalashga qaror qildim va Basys 3 Board (Artix-7 35T seriyali) uchun ishlab chiqdim.). Kengaytirilishi mumkin, chunki xonaga istalgan sonli sensorlar qo'yilishi mumkin va bu tizimlarning istalgan sonini bino yoki uy atrofida joylashtirish mumkin. Bu tizim nima qilsa, nazariy jihatdan tijorat binosida minglab dollarlarni tejash va faol va passiv boshqariladigan chiroqlar, harakat detektorlari, etti segmentli displeyda ko'rsatiladigan taymerlar tizimini ishga tushirish orqali kichik turar -joy binolarida energiya sarflanishining katta foizini kamaytirish mumkin. boshqaruv kalitlari. Bu misolda uchta harakat detektori, asosiy kalit, qo'lda/oddiy kalit, to'rtta etti segmentli displey va tizim boshqaradigan bitta chiroqli bitta tizim bor.

Masalan, tanlangan xonada bir nechta harakat detektorlari joylashtiriladi (bu dizaynda uchta) va ularning har biri signalni yuboradi (1), agar u harakatni aniqlasa (0). Agar harakat detektorlaridan hech bo'lmaganda bittasi harakatni aniqlasa, chiroqlar hali yoqilmagan bo'lsa yonadi va yoqilgan bo'lsa ham yonadi. Har qanday vaqtda, barcha harakat detektori hech narsani sezmaydi, taymer belgilangan vaqtni hisoblay boshlaydi (kodda sozlanishi) va taymer hisoblaguncha chiroqlar yonadi. Taymer hisoblashni tugatgandan so'ng, taymer to'xtaydi va chiroqlar o'chadi. Agar taymer hisoblaganda hech bo'lmaganda bitta harakat detektori harakatni aniqlasa, taymer to'xtaydi va qaytadan o'rnatiladi. Va agar hech bo'lmaganda bitta harakat detektori chiroqlar o'chirilgan paytda harakatni aniqlasa, chiroqlar darhol yonadi.

Bu tizim ikkita rejimga ega, biri taymer bilan, yuqorida aytilganidek, ikkinchisi - chiroqlar qo'lda boshqariladigan kalit (sensorlarga e'tibor bermaslik). Asosiy kalit mavjud bo'lib, u foydalanuvchiga qaysi rejimni ishlatishni xohlashiga qarab tanlashga imkon beradi, bu esa umuman energiya tejash imkonini beradi. Masalan. Yo'lak kabi xona passiv taymer rejimidan foyda ko'rishi mumkin- foydalanuvchilar qachon o'tishi kerakligini aniq bilishmaydi, lekin har safar kirgan va ketganida chiroqni yoqish va o'chirish noqulaylik tug'diradi. bitta foydalanuvchiga ega bo'lgan yotoqxonani qo'lda boshqarish yaxshiroqdir. Usta kalit, masalan, yotoqxonada yashovchi odam uzoq vaqt ketishi kerak bo'lsa, uskuna o'chirilishi mumkin va taymer rejimi energiyani tejash uchun ishlaydi.

Shunday qilib, bu tizimda ikkita shtat mashinasi mavjud, biri asosiy davlat mashinasi, ikkinchisi hisoblagich taymeri uchun. Asosiy shtat mashinasida beshta holat bor: 1. "chiroqlar yonadi, harakat aniqlandi" (id = 000), 2. "chiroqlar yonadi, hech qanday harakat aniqlanmaydi" (id = 001), 3. "chiroqlar o'chadi, harakat yo'q aniqlandi "(id = 010), 4." qo'lda yoqilgan "(id = 011) va 5." qo'lda o'chirilgan "(id = 100). Bu asosiy holat mashinasi to'rtta kirishga ega: asosiy kalit (ms), qo'lda/normal kalit (ns), hech bo'lmaganda bitta kalit harakatni aniqlaganda yuqori bo'lgan signal, aks holda past (orx) va signal. taymer tugagandan so'ng yuqori, aks holda past (td). Asosiy shtat mashinasida ikkita chiqish bor: chiroqlar (chiroqlar) va hisoblagich (taymer) yoki (t) qachon yoqilishini ko'rsatuvchi signal (ikkalasi bir -birining o'rnida ishlatiladi).

Ikkinchi davlat mashinasi, sanash taymeri, 12 ta holatga ega: ulardan 10 tasida etti segment ko'rsatadigan raqamlar bilan bog'liq identifikatorlar mavjud- "seg 10" (id = 1010), "seg 9" (id = 1001), […], "Seg 2" (id = 0010), "seg 1" (id = 0001) va boshqa ikkita holat nolni ko'rsatadi, bu taymer o'chirilganligini bildiradi- shuning uchun birinchi bo'sh "bo'sh 1" (id = 1111)) va ikkinchi bo'sh "bo'sh 2" (id = 0000). Qayta hisoblash taymerida bitta kirish bor: taymer (t) va uchta chiqish: ikkilikda to'rt bitli (bin) va taymer bajarilganligini bildiruvchi signal bilan ko'rsatilgan raqam (td).

1 -qadam: qora quti diagrammasi

Qora quti diagrammasi
Qora quti diagrammasi

Bu butun tizim qanday ishlashi kerakligi haqida umumiy ma'lumot va qora quti diagrammasi bilan tasvirlangan.

  • Soat asosiy davlat mashinasini va etti segmentli dekoderni soatlash uchun ishlatiladi; pastga taymer uchun sekinroq soat kerak, shuning uchun soatni ajratuvchi modul mavjud bo'lib, u soat kiritilishini oladi va pastga taymer uchun sekinroq soatni chiqaradi.
  • Qoplamadagi oraliq o'zgaruvchi (orx) harakat sensorlar bilan bog'langan va agar sensorlardan kamida bittasi biror narsani aniqlasa yuqori bo'ladi, aks holda past bo'ladi; buning uchun mantiqiy tenglama faqat orx = s (2) yoki s (1) yoki s (0) dir.
  • Asosiy fsm, kirishlar (orx, ms, ns, td) ga qarab, tizim qaysi umumiy holatda ekanligini nazorat qiladi va hozirgi holatini (sm) ko'rsatilgan ikkita signal yordamida (taymer va chiroqlar) soddalashtirilgan tarzda chiqaradi.

    • (taymer) - bu fsm pastga hisoblagichga kirish sifatida yuboriladigan va asosiy fsmning hozirgi holati tomonidan boshqariladigan o'rash signalidir. Bu taymerni qachon yoqish kerakligini ko'rsatadi.
    • (chiroqlar) - bu o'rash signalini boshqarish uchun ishlatiladi va asosiy fsmning hozirgi holati bilan boshqariladi.
  • Pastki hisoblagich fsm kirish (taymer) ga qarab etti segment nimani ko'rsatishini boshqaradi va (td va bin) ikkita signal yordamida soddalashtirilgan (sd) hozirgi holatini chiqaradi.

    • (td) - bu asosiy fsmga kirish sifatida yuboriladigan va pastga qaraydigan fsmning hozirgi holati tomonidan boshqariladigan o'rash signalidir. Bu taymer qachon tugaganligini ko'rsatuvchi teskari aloqa signali vazifasini bajaradi.
    • (bin) - bu to'rt bitli nol ("0000" va bin) bilan birlashtirilgan to'rt bitli o'rash signalidir va birlashtirilgan sakkiz bit (q) ga yuboriladi, sakkiz bitli o'rash signalidir, bu esa o'z navbatida ettitaga yuboriladi. segment dekoderi (ALU_VAL) ostida.
  • Etti segmentli modul Polylearn moduli bilan bir xil; uning asosiy kirishlari 8 -bitli (ALU_VAL) raqamli (ALU_VAL) gacha bo'lib, to'rt xil etti segmentli displeyda ko'rsatiladi (SEGMENTS) o'rash uchun signal (seg) va (DISP_EN) o'rash uchun (disp_en).

    • Ikki yoki undan ortiq etti segmentli displeylar bir vaqtning o'zida turli xil raqamlarni namoyish qila olmasligi sababli, to'rtta segsni aylanib o'tish uchun bir vaqtning o'zida mos keladigan raqamni ko'rsatib, har bir ssegni alohida -alohida yoqish uchun soat kerak bo'ladi. ssegs birdaniga yoqilgan ko'rinadi.
    • (belgisi va amal qilish) bu dastur davomida doimiydir, shuning uchun (belgisi) doimiy ravishda past, (haqiqiy) esa doimiy ravishda yuqori bo'ladi.
    • (ALU_VAL) o'rash signalini (q) qabul qilib oladi, bu raqam ikkitomonlama etti segmentli displeyda ko'rsatiladi.
    • Chiqish (SEGMENTS) sakkiz bitli o'rash signaliga (seg) va (DISP_EN) to'rt bitli o'rash signaliga (disp_en) yuboriladi.
  • Diagrammada aniq ko'rsatilmagan, lekin ikkita modul uchun submodullar sifatida zarur bo'lgan D -flip -flop moduli ham mavjud va bir vaqtda sinxron holatga o'tishga yordam beradi.

    • (3) asosiy fsm uchun kerak, chunki kodlash uchun 2^(3) = 8> 5 holat.
    • (4) shundan pastga taymer fsm uchun kerak, chunki kodlash uchun 2^4 = 16> 12 holat

2 -qadam: davlat mashinalari

Davlat mashinalari
Davlat mashinalari

Ikkala davlat mashinasini to'g'ri loyihalashtirish uchun, har xil mumkin bo'lgan kirishlar asosida alohida davlatlar, ularning chiqishlari va o'tish holati aniq belgilanishi kerak.

Asosiy fsm shtatlari:

"Chiroqlar yondi, harakat aniqlandi" (id = 000)

Chiroqlar yonadi, harakat detektorlaridan kamida bittasi harakatni aniqlaydi, shuning uchun orx baland bo'lishi kerak va ms yoqilgan.

  • Chiqish: chiroqlar = 1 va taymer = 0
  • Ms = 1 va orx = 1 bo'lganda ham shunday holatda qoladi.
  • Agar ms = 1 va orx = 0 bo'lsa, "chiroqlar yonadi, harakat aniqlanmaydi" holatiga o'tadi.
  • Ms = 0 va ns = 1 bo'lsa, "qo'lda yoqilgan" holatiga o'tadi.
  • Ms = 0 va ns = 0 bo'lsa, "qo'lda o'chirilgan" holatiga o'tadi.

"Chiroqlar yonadi, harakat aniqlanmaydi" (id = 001)

Chiroqlar yonadi, hech qanday harakat detektoridan hech qanday harakat aniqlanmaydi, shuning uchun orx past bo'lishi va ms yoqilgan bo'lishi kerak. Shuningdek, bu holatning boshida, yuqori darajadagi taymer fsmga sanashni boshlashni, orqaga hisoblashni davom ettirishni va fsm hisoblagichi bu sanash tugaganligini aytgandan so'ng, hisoblashni to'xtatishni bildiradi.

  • Chiqish: chiroqlar = 1 va taymer = 1.
  • Ms = 1 va orx = 0 va td (taymer tugadi) = 0 bo'lsa, bu holatda qoladi.
  • Agar ms = 1 va orx = 1 bo'lsa, "chiroqlar yonadi, harakat aniqlanadi" holatiga o'tadi.
  • Ms = 1 va orx = 0 va td = 1 bo'lsa, "chiroqlar o'chadi, hech qanday harakat aniqlanmaydi" holatiga o'tadi.
  • Ms = 0 va ns = 1 bo'lsa, "qo'lda yoqilgan" holatiga o'tadi.
  • Ms = 0 va ns = 0 bo'lsa, "qo'lda o'chirilgan" holatiga o'tadi.

"Chiroq o'chadi, hech qanday harakat aniqlanmadi" (id = 010)

Chiroqlar o'chirilgan, hech qanday harakat sensori orqali harakat aniqlanmagan va taymer hisoblashni tugatgan, shuning uchun orx past bo'lishi kerak, ms yoqilgan va td o'chirilgan.

  • Chiqish: chiroqlar = 0 va taymer = 0.
  • Ms = 1 va orx = 0 bo'lganda ham shunday holatda qoladi.
  • Ms = 1 va orx = 1 bo'lsa, "chiroqlar yonadi, harakat aniqlanadi" holatiga o'tadi.
  • Ms = 0 va ns = 1 bo'lsa, "qo'lda yoqilgan" holatiga o'tadi.
  • Ms = 0 va ns = 0 bo'lsa, "qo'lda o'chirilgan" holatiga o'tadi.

"Qo'lda yoqilgan" (id = 011)

Chiroqlar yoqilgan, harakat detektorlari ahamiyatsiz, shuning uchun ms o'chirilgan va ns yoqilgan.

  • Chiqish: chiroqlar = 1 va taymer = 0.
  • Ms = 0 va ns = 1 bo'lganda ham shunday holatda qoladi.
  • Ms = 0 va ns = 0 bo'lsa, "qo'lda o'chirilgan" holatiga o'tadi.
  • "Chiroqlar o'chadi, agar ms = 1 bo'lsa, harakat aniqlanmaydi" holatiga o'tadi.

"Qo'lda o'chirilgan" (id = 100)

Chiroqlar o'chirilgan, harakat detektorlari ahamiyatsiz, shuning uchun ms o'chirilgan va ns o'chirilgan.

  • Chiqish: chiroqlar = 0 va taymer = 0.
  • Ms = 0 va ns = 0 bo'lganda ham shunday holatda qoladi.
  • Ms = 0 va ns = 1 bo'lsa, "qo'lda yoqilgan" holatiga o'tadi.
  • "Chiroqlar o'chadi, agar ms = 1 bo'lsa, harakat aniqlanmaydi" holatiga o'tadi.

Pastki hisoblagichda shunday deyilgan:

"10 -bo'lim" (id = 1010)

Etti segmentli displeyda 10 ko'rsatilgan.

  • Chiqish: bin = "1010" va td = 0.
  • Taymer = 1 bo'lsa, "seg 9" holatiga o'tadi.
  • Taymer = 0 bo'lsa, "bo'sh 2" holatiga o'tadi.

"9 -sinf" (id = 1001)

Etti segmentli displeyda 9 ko'rsatilgan.

  • Chiqish: bin = "1001" va td = 0.
  • Taymer = 1 bo'lsa, "seg 8" holatiga o'tadi.
  • Taymer = 0 bo'lsa, "bo'sh 2" holatiga o'tadi.

("Seg 8" dan "Seg 2" gacha bo'lgan davlatlar olib tashlangan, chunki ular "10 -segment" va "9 -sinf" bilan bir xil modelga amal qilishadi va tushuntirish uchun zarur emas)

"1 -bo'lim" (id = 0001)

Etti segmentli displeyda 1 ko'rsatilgan.

  • Chiqish: bin = “0001” va td = 0.
  • Soatning keyingi ko'tarilgan qismida "bo'sh 2" holatiga o'tadi (kiritish shart emas).

"Bo'sh 2" (id = 1111)

Etti segmentli displeyda 0 ko'rsatiladi. Ikkinchi bo'sh holatning maqsadi - xavfsizlik uchun td = 1 bo'lganda alohida holat.

  • Chiqish: bin = "1111" va td = 1.
  • Soatning keyingi ko'tarilish burchagida "bo'sh 1" holatiga o'tadi (kiritish shart emas).

"Bo'sh 1" (id = 0000)

Etti segmentli displeyda 0 ko'rsatiladi. Bu asosiy davlat mashinasi "chiroqlar o'chadi, hech qanday harakat aniqlanmaydi" holatida bo'lgan tizimning holatidir.

  • Chiqish: bin = "0000" va td = 0.
  • Taymer = 1 bo'lsa, "seg 10" holatiga o'tadi.

3 -qadam: Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari

Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari
Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari
Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari
Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari
Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari
Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari
Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari
Davlat mashinasi haqiqat jadvallari, qo'zg'alish tenglamalari va chiqish tenglamalari

Keyingi qadam, har ikki fsm uchun ikkita holat mashinasi uchun haqiqat jadvallari va qo'zg'alish tenglamalari va chiqish tenglamalarini yaratishdir. Har bir fsm qo'zg'alish tenglamasi uchun joriy holat va uning kirish signallari nuqtai nazaridan har bir keyingi holat uchun kodlangan bit uchun tenglamalar bo'lishi kerak. Har bir fsm chiqish tenglamasi uchun har bir chiqish signali uchun joriy holat bo'yicha tenglamalar bo'lishi kerak. Hamma to'rtta tenglamalar to'plamini tasvirlangan haqiqat jadvallaridan olish mumkin. (qn - har bir davlat mashinasi uchun keyingi holat kodlangan bit va q - joriy holat)

(000) q (2) 'q (1)' q (0) 'ga teng va (0000) q (3)' q (2) 'q (1)' q (0) 'ga teng

(masalan (0101) q (3) 'q (2) q (1)' q (0) va (110) q (2) q (1) q (0) ')

Asosiy fsm uchun qo'zg'alish tenglamalari:

  • 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)]

Asosiy fsm uchun chiqish tenglamalari:

  • chiroqlar = (000) + (001) + (100)
  • taymer = (001)

Pastki taymer fsm uchun qo'zg'alish tenglamalari:

  • 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)]

Pastki hisoblagich fsm uchun chiqish tenglamalari:

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

4 -qadam: o'rash, submodullar va cheklash

1 -qadamda aytib o'tilganidek, ushbu modullar ushbu loyiha uchun zarur va ular "final_proj.vhd" sarlavhali modul bilan bog'langan. "Basys3_Master.xdc" nomli cheklov fayli barcha o'rash kirish va chiqishlarini kalitlarga, etti segmentga va Basys 3 bortidagi kirish -chiqish portlariga ulash uchun ishlatiladi. Asosiy kalit - bu simlar yoqilgan tomonga eng yaqin bo'lgan taxtadagi kalit bo'lishi kerak, odatiy/qo'lda - ikkinchi eng yaqin, va uchta harakat sensori - uchta kalit - bu oddiy/qo'lda kalitning yonidagi uchta kalit.. Barcha kodlar (mantiqiy tenglamalar, modulli deklaratsiyalar va boshqalar) allaqachon fayllarda yozilgan, shuning uchun bu ishni bajarish uchun boshqa hech narsa yozishning hojati yo'q.

5 -qadam: LED uchun kirish/chiqish portlari

LED uchun kirish/chiqish portlari
LED uchun kirish/chiqish portlari
LED uchun kirish/chiqish portlari
LED uchun kirish/chiqish portlari

Loyihaning oxirgi bosqichi - chiroqni yoqish yoki o'chirishni ko'rsatish uchun LEDni ishlatish. Ulanish ikkita rasmda ko'rsatilgan. Ledni yoqib yubormaslik uchun (kamida 330 ohm) sig'imli rezistor borligiga ishonch hosil qiling va qizil sim ko'rsatilgandek, svetodiodning uzun pimi taglik taxtasidagi bir xil ayol boshiga ulanganligiga ishonch hosil qiling (tepada) eng o'ngda) va qisqaroq pin erga ulangan, xuddi qora sim ko'rsatilgandek ayol sarlavha (yuqoridan, chapdan ikkinchi).

Tavsiya: