Мазмуну:

L I G H T S: 5 кадам
L I G H T S: 5 кадам

Video: L I G H T S: 5 кадам

Video: L I G H T S: 5 кадам
Video: Как подключить люстру. Как соединить провода. Установка в Киеве 0974288408 2024, Ноябрь
Anonim
L I G H T S
L I G H T S

Бул акыркы долбоордун максаты-туруктуулукка багытталган жана санариптик дизайн түшүнүктөрүн ишке ашыра турган нерсени түзүү жана муну үчүн мен vhdlди колдонуп, масштабдуу энергияны үнөмдөө системасын иштеп чыгууну чечтим жана Basys 3 Board үчүн жасалган (Artix-7 35T сериясы)). Масштабдуу, анткени сенсорлордун санын бөлмөгө жана бул системалардын каалаган санын имараттын же үйдүн айланасына койсо болот. Бул система эмне кылат, теориялык жактан коммерциялык имаратта миңдеген долларды үнөмдөйт жана активдүү жана пассивдүү башкарылган жарыктардын, кыймыл детекторлорунун, жети сегменттүү дисплейде көрсөтүлгөн таймерлердин туташкан системасын ишке ашыруу менен, кичи турак жайлардагы энергия керектөөнүн чоң пайызын азайтуу. башкаруу өчүргүчтөрү. Бул мисал үч кыймыл детектору, мастер -коммутатор, кол менен/кадимки которгуч, төрт жети сегменттүү дисплейлер жана тутум башкарган бир жарык менен бир системаны камтыйт.

Мисалы, тандалган бөлмөдө, бир нече кыймыл детектору тегерете жайгаштырылмак (бул мисалдын дизайнында үчөө бар), жана ар бири кыймылды аныктаса сигнал (1), эгер андай болбосо (0) жөнөтмөк. Кыймыл детекторлорунун жок дегенде бирөөсү кыймылды байкаса, анда жарыктар күйбөсө күйөт жана күйүк болсо күйүп турат. Качан болбосун бардык кыймыл детекторлору эч нерсени байкабайт, таймер белгиленген убакытка чейин эсептей баштайт (код менен жөнгө салынат) жана таймер саналып жатканда жарыктар өчпөй калат. Таймер саноону бүтүргөндөн кийин таймер токтойт жана жарык өчөт. Эгерде таймер артка санап жатканда жок дегенде бир кыймыл детектору кыймылды аныктаса, таймер токтойт жана баштапкы абалга келет. Ал эми жок дегенде бир кыймыл детектору свет өчүп турганда кыймылды аныктаса, жарыктар дароо күйөт.

Бул системанын эки режими бар, биринде жогоруда айтылгандай таймер, экинчисинде жарыктарды кол менен башкаруучу которгуч бар (сенсорлорду этибарга албайт). Колдонуучуга кайсы режимди колдонууну каалаганын тандап алууга мүмкүнчүлүк берген мастер -коммутатор бар. Мис. Пассивдүү таймер режиминен коридор сыяктуу бөлмө пайда алышы мүмкүн- колдонуучулар адамдар качан өтөөрүн так билишпейт, бирок кирген жана чыккан сайын жарыкты күйгүзүү жана өчүрүү ыңгайсыздык жаратат, ал эми мындай бөлмө бир колдонуучу бар уктоочу бөлмө катары кол менен иштетүү жакшыраак болмок. Жана мастер -коммутатор, мисалы, уктоочу бөлмөдө жашаган адам узак убакытка кете турган болсо, пайдалуу болмок, анда мастер -коммутаторду өчүрүп койсо болот жана таймер режими энергияны үнөмдүү үнөмдөө үчүн иштейт.

Ошентип, бул тутумда эки мамлекеттик машина бар, бири негизги мамлекеттик машина, экинчиси артка саноо таймери үчүн. Негизги мамлекеттик машинада беш абал бар: 1. "жарыктар күйүп турат, кыймыл аныкталды" (id = 000), 2. "жарыктар күйүп турат, эч кандай кыймыл табылган жок" (id = 001), 3. "жарык өчөт, кыймыл жок аныкталды "(id = 010), 4." кол менен күйгүзүлдү "(id = 011) жана 5." кол менен өчүрүлдү "(id = 100). Бул негизги мамлекеттик машинанын төрт кириши бар: башкы которгуч (мс), кол менен/кадимки которгуч (ns), жок дегенде бир которуу кыймылды аныктаганда жогору болгон сигнал, антпесе төмөн (orx) жана сигнал таймер бүткөндөн кийин бийик, антпесе төмөн (td). Негизги мамлекеттик машинанын эки чыгышы бар: жарыктар (жарыктар) жана артка саноо таймерин (таймер) же (t) качан күйгүзүүнү көрсөтүүчү сигнал (экөө тең алмаштырылат).

Экинчи мамлекеттик машина, кайра саноо таймери, 12 штатка ээ: алардын 10унда жети сегмент көрсөткөн номер менен байланышкан идентификаторлор бар- “сег 10” (id = 1010), “сегм 9” (id = 1001), […], "Seg 2" (id = 0010), "seg 1" (id = 0001) жана башка эки абал тең нөлдү көрсөтөт, таймер өчүк экенин билдирет- демек биринчи бош "бош 1" (id = 1111)) жана экинчи бош "бош 2" (id = 0000). Артка эсептөө таймеринин бир кириши бар: таймер (t) жана үч жыйынтык: экилик түрдө төрт бит (бин) менен көрсөтүлгөн убакыт жана таймердин аткарылганын көрсөткөн сигнал (td).

1 -кадам: Кара кутунун диаграммасы

Кара кутунун диаграммасы
Кара кутунун диаграммасы

Бул бүт система кантип иштеши керек экендигине сереп жана кара куту схемасы менен сүрөттөлгөн.

  • Саат негизги мамлекеттик машинаны жана жети сегменттеги декодерди иштетүү үчүн колдонулат; ылдый эсептегич үчүн жайыраак саат керек, андыктан сааттын киришин алып, ылдый эсептегич үчүн жайыраак саатты чыгаруучу саат бөлүүчү модуль бар.
  • Каптамадагы ортоңку өзгөрмө (orx) кыймыл сенсорлоруна байланган жана сенсорлордун жок дегенде бирөөсү бир нерсени байкаса жогору болот, антпесе төмөн; бул логикалык теңдеме жөн гана orx = s (2) же s (1) же s (0).
  • Негизги fsm киргизүүлөргө (orx, ms, ns, td) жараша системанын жалпы абалын көзөмөлдөйт жана учурдагы абалын чыгарат (sm), ал эки сигнал менен жөнөкөйлөштүрүлгөн (таймер жана жарыктар).

    • (таймер) - бул кирүүчү катары fsm ылдыйкы эсептегичке жөнөтүлгөн жана негизги fsmдин учурдагы абалы менен башкарылган ороочу сигнал. Бул таймерди качан күйгүзүү керектигин көрсөтөт.
    • (жарыктар) - бул оролуучу сигнал, жетектөөнү башкаруу үчүн колдонулат жана негизги fsmдин учурдагы абалы менен башкарылат.
  • Төмөнкү эсептегич fsm киргизүүгө (таймерге) жараша жети сегмент эмнени көрсөтөрүн көзөмөлдөйт жана учурдагы абалын (sd) чыгарат, ал (td жана bin) үчүн колдонулган эки сигнал менен жөнөкөйлөштүрүлгөн.

    • (td) - бул негизги fsmге кирүүчү катары жөнөтүлүүчү жана fsm ылдыйкы эсептегичтин учурдагы абалы менен башкарылган ороочу сигнал. Бул таймер качан бүткөнүн көрсөтүүчү кайтарым сигнал катары иштейт.
    • (бин) - бул төрт бит нөл менен бириктирилген төрт бит ороочу сигнал ("0000" & бин) жана бириккен сегиз бит (q) га жөнөтүлөт, сегиз бит ороочу сигнал, ал жетиге жөнөтүлөт (ALU_VAL) астындагы сегменттин декодери.
  • Жети сегмент модулу Polylearnдагыдай эле; анын негизги кириштери 8 ALT_VAL номерине (ALU_VAL) кирет жана төрт түрдүү жети сегменттүү дисплейде чыгаруу үчүн (SEGMENTS) ороп сигналга (seg) жана (DISP_EN) ороого (disp_en) колдонулат.

    • Эки же андан көп жети сегменттин дисплейлери бир эле убакта башка цифраларды көрсөтө албагандыктан, төрт сегс аркылуу айланып өтүү үчүн саат керек, ар бир сегменти жекече күйгүзүү үчүн тийиштүү цифраны көрсөтүү керек жана велосипед тизүү жетишерлик тез кылат. ssegs баары бир убакта көрүнөт.
    • (Белги жана жарактуу) бул программанын ичинде туруктуу, ошондуктан (белги) биротоло төмөн, (жарактуу) биротоло жогору коюлган.
    • (ALU_VAL) бинардык түрдө жети сегменттүү дисплейде көрсөтүлө турган санды көрсөтүүчү (q) оролуучу сигналды кабыл алат.
    • Чыгуу (СЕГМЕНТТЕР) сегиз бит ороочу сигналга (сег) жана (DISP_EN) төрт биттик ороочу сигналга (disp_en) жөнөтүлөт.
  • Диаграммада так көрсөтүлбөгөн, бирок эки мамлекеттик машина үчүн субмодуль катары керектүү болгон D штрих -модулу бар жана синхрондуу түрдө мамлекеттердин транзитине жардам берет.

    • (3) булардын негизги фсм үчүн 2^(3) = 8> 5 абалынан баштап коддоо үчүн керек
    • (4) мунун төмөн эсептегич fsm үчүн керек, анткени коддоо үчүн 2^4 = 16> 12 абал

2 -кадам: Мамлекеттик машиналар

Мамлекеттик машиналар
Мамлекеттик машиналар

Эки мамлекеттик машинаны туура долбоорлоо үчүн, ар бир мүмкүн болгон киргизүүлөрдүн негизинде айрым мамлекеттерди, анын жыйынтыктарын жана өтүүчү абалын так аныктоо керек.

Негизги fsm мамлекеттери:

"Жарык күйдү, кыймыл аныкталды" (id = 000)

Чырактар күйүп турат, жок дегенде кыймыл детекторлорунун бири кыймылды аныктайт, андыктан orx бийик болушу керек жана мс күйгүзүлгөн.

  • Чыгуулар: жарыктар = 1 жана таймер = 0
  • Ms = 1 жана orx = 1 болгондо ушул абалда калат.
  • Ms = 1 жана orx = 0 болсо "чырактар күйөт, эч кандай кыймыл аныкталган эмес" абалына барат.
  • Ms = 0 жана ns = 1 болсо, "кол менен күйгүзүлгөн" абалына өтөт.
  • Ms = 0 жана ns = 0 болсо, "кол менен өчүрүлгөн" абалына өтөт.

"Жарык күйүп турат, эч кандай кыймыл табылган жок" (id = 001)

Жарыктар күйүп турат, кыймыл детекторунан эч кандай кыймыл аныкталган жок, андыктан orx төмөн болушу керек жана мс күйгүзүлгөн. Ошондой эле бул абалдын башталышында, бийик коюлган таймер, артка саноону баштоону fsmге айтат, кайра саноону улантат жана кайра саноо fsm бул фсмге эсептөө бүткөнүн айткандан кийин токтотууну токтотот.

  • Чыгуулар: жарыктар = 1 жана таймер = 1.
  • Ms = 1 жана orx = 0 жана td (таймер бүткөн) = 0 болгондо ушул абалда калат.
  • Ms = 1 жана orx = 1 болсо, "чырактар күйүп, кыймыл аныкталды" абалына барат.
  • Ms = 1 жана orx = 0 жана td = 1 болсо "жарык өчөт, эч кандай кыймыл аныкталган эмес" абалына барат.
  • Ms = 0 жана ns = 1 болсо, "кол менен күйгүзүлгөн" абалына өтөт.
  • Ms = 0 жана ns = 0 болсо, "кол менен өчүрүлгөн" абалына өтөт.

"Жарык өчөт, кыймыл аныкталган жок" (id = 010)

Жарыктар өчүрүлгөн, эч кандай кыймыл сенсорунан эч кандай кыймыл аныкталган эмес жана таймер артка санап бүткөн, андыктан orx төмөн болушу керек, мс күйгүзүлгөн жана td өчүк.

  • Чыгуулар: жарыктар = 0 жана таймер = 0.
  • Ms = 1 жана orx = 0 болгондо ушул абалда калат.
  • Ms = 1 жана orx = 1 болсо, "чырактар күйүп, кыймыл аныкталды" абалына барат.
  • Ms = 0 жана ns = 1 болсо, "кол менен күйгүзүлгөн" абалына өтөт.
  • Ms = 0 жана ns = 0 болсо, "кол менен өчүрүлгөн" абалына өтөт.

"Кол менен күйгүзүлгөн" (id = 011)

Жарыктар күйүп турат, кыймыл детекторлорунун тиешеси жок, ошондуктан мс өчүрүлөт жана ns күйгүзүлөт.

  • Чыгуулар: жарыктар = 1 жана таймер = 0.
  • Ms = 0 жана ns = 1 болгондо ушул абалда калат.
  • Ms = 0 жана ns = 0 болсо, "кол менен өчүрүлгөн" абалына өтөт.
  • "Жарык өчөт, ms = 1 болсо кыймыл аныкталган эмес" абалына барат.

"Кол менен өчүрүлгөн" (id = 100)

Жарыктар өчүрүлгөн, кыймыл детекторлорунун тиешеси жок, ошондуктан мс өчүрүлгөн жана нс өчүрүлгөн.

  • Чыгуулар: жарыктар = 0 жана таймер = 0.
  • Ms = 0 жана ns = 0 болгондо ушул абалда калат.
  • Ms = 0 жана ns = 1 болсо, "кол менен күйгүзүлгөн" абалына өтөт.
  • "Жарык өчөт, ms = 1 болсо кыймыл аныкталган эмес" абалына барат.

Down counter мындай дейт:

"10 -сегмент" (id = 1010)

Жети сегменттин дисплейи 10ду көрсөтөт.

  • Чыгуулар: bin = "1010" жана td = 0.
  • Таймер = 1 болсо, "сег 9" абалына өтөт.
  • Таймер = 0 болсо, "бош 2" абалына өтөт.

"9 -сегмент" (id = 1001)

Жети сегменттин дисплейи 9ду көрсөтөт.

  • Чыгуулар: bin = "1001" жана td = 0.
  • Таймер = 1 болсо, "сег 8" абалына өтөт.
  • Таймер = 0 болсо, "бош 2" абалына өтөт.

("8 -Сегизден" "2 -Сегизге чейин" мамлекеттер жокко чыгарылган, анткени алар "10 -Сегиз" жана "9 -Сегиз" үлгүсүнө ылайык келет жана түшүндүрүү үчүн зарыл эмес)

"1 -бөлүм" (id = 0001)

Жети сегменттин дисплейи 1ди көрсөтөт.

  • Чыгыштар: bin = “0001” жана td = 0.
  • Сааттын кийинки өйдө жагында "бош 2" абалына барат (кирүүнүн кереги жок).

"Бош 2" (id = 1111)

Жети сегменттин дисплейи 0 көрсөтөт. Экинчи бош абалдын максаты - коопсуздук үчүн td = 1 болгондо өзүнчө абал.

  • Чыгыштар: bin = "1111" жана td = 1.
  • Сааттын кийинки өйдө жагында "бош 1" абалына барат (кирүүнүн кереги жок).

"Бош 1" (id = 0000)

Жети сегменттин дисплейинде 0 көрсөтүлөт. Бул негизги мамлекеттик машина "жарык өчүп турат, кыймыл аныкталган эмес" абалында турган системанын абалы.

  • Чыгуулар: bin = “0000” жана td = 0.
  • Таймер = 1 болсо, "сег 10" абалына өтөт.

3 -кадам: Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери

Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери
Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери
Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери
Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери
Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери
Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери
Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери
Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери

Кийинки кадам - эки мамлекеттик машина үчүн чындык таблицаларын жана дүүлүгүү теңдемелерин жана ар бир fsm үчүн чыгаруу теңдемелерин түзүү. Ар бир fsm козгоо теңдемеси үчүн, учурдагы абал жана анын кирүү сигналдары боюнча коддолгон ар бир кийинки абал үчүн теңдемелер болушу керек. Ар бир fsm чыгаруу теңдемеси үчүн, учурдагы абал боюнча ар бир чыгуу сигналы үчүн теңдемелер болушу керек. Теңдемелердин бардык төрт топтому сүрөттөлгөн чындык таблицаларынан алынышы мүмкүн. (qn - ар бир мамлекеттик машина үчүн кийинки мамлекет коддолгон бит, ал эми q - учурдагы абал)

(000) эквиваленти q (2) 'q (1)' q (0) 'жана (0000) эквиваленти q (3)' q (2) 'q (1)' q (0) '

(мис. (0101) q (3) 'q (2) q (1)' q (0) жана (110) q (2) q (1) q (0) ')

Негизги fsm үчүн дүүлүгүү теңдемелери:

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

Негизги fsm үчүн чыгуу теңдемелери:

  • жарыктар = (000) + (001) + (100)
  • таймер = (001)

Төмөнкү эсептегич 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)]

Төмөнкү эсептегич fsm үчүн чыгуу теңдемелери:

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

4 -кадам: Ороочу, субмодулдар жана чектөө

1 -кадамда айтылгандай, бул модулдар бул долбоор үчүн керек жана баары "final_proj.vhd" аттуу ороочу модуль менен бириктирилген. "Basys3_Master.xdc" деп аталган чектөө файлы бардык ороочу кириштерди жана чыгууларды Basys 3 тактасындагы жети сегментке жана I/O портторуна байланыштыруу үчүн колдонулат. Негизги которгуч тактадагы зымдар күйгүзүлүүчүгө жакын болушу керек, кадимки/кол менен алмаштыруу экинчисине жакын жана үч кыймыл сенсорун билдирген үч өчүргүч кадимки/кол которгучтун жанында. Бардык коддор (логикалык теңдемелер, модул декларациялары ж. Б.) Буга чейин файлдарда жазылган, андыктан бул ишти аткаруу үчүн башка эч нерсе жазуунун кажети жок.

5 -кадам: LED үчүн I/O порттору

LED үчүн I/O порттору
LED үчүн I/O порттору
LED үчүн I/O порттору
LED үчүн I/O порттору

Бул долбоордун акыркы кадамы (чырактардын) чындап күйүп -өчпөй турганын көрсөтүү үчүн LEDди колдонуу. Зым эки сүрөттө көрсөтүлгөн. Ледди күйгүзбөө үчүн LED (эң аз дегенде 330 Ом) каршылыгынын бар экенине ишениңиз жана анын узун пини кызыл зым көрсөтүлгөндөй эле басс тактасындагы аялдын башына туташтырылганын текшериңиз (жогору) эң оң жагында) жана кыскараак төөнөгүч жерге туташат, кара зым көрсөтүлгөн аялдын башы (үстү, сол жактан экинчи).

Сунушталууда: