Мазмуну:
- 1 -кадам: Кара кутунун диаграммасы
- 2 -кадам: Мамлекеттик машиналар
- 3 -кадам: Мамлекеттик машина чындыктын таблицалары, козгоо теңдемелери жана чыгаруу теңдемелери
- 4 -кадам: Ороочу, субмодулдар жана чектөө
- 5 -кадам: LED үчүн I/O порттору
Video: L I G H T S: 5 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул акыркы долбоордун максаты-туруктуулукка багытталган жана санариптик дизайн түшүнүктөрүн ишке ашыра турган нерсени түзүү жана муну үчүн мен 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ди колдонуу. Зым эки сүрөттө көрсөтүлгөн. Ледди күйгүзбөө үчүн LED (эң аз дегенде 330 Ом) каршылыгынын бар экенине ишениңиз жана анын узун пини кызыл зым көрсөтүлгөндөй эле басс тактасындагы аялдын башына туташтырылганын текшериңиз (жогору) эң оң жагында) жана кыскараак төөнөгүч жерге туташат, кара зым көрсөтүлгөн аялдын башы (үстү, сол жактан экинчи).
Сунушталууда:
Кантип кадам эсептегич жасоо керек?: 3 кадам (сүрөттөр менен)
Step Counter кантип жасалат ?: Мен көптөгөн спортто жакшы аткарчумун: жөө басуу, чуркоо, велосипед тебүү, бадминтон ойноо ж.б. Мейли, менин ичимди карачы ……. Ооба, баары бир мен машыгуу үчүн кайра баштоону чечтим. Мен кандай жабдыктарды даярдашым керек?
IPodдо Doomду 5 жеңил кадам менен ойноңуз !: 5 кадам
Doom'ду IPodдо 5 жеңил кадам менен ойноңуз!: Doom жана башка ондогон оюндарды ойноо үчүн iPod'уңузда Rockboxту кантип кош жүктөө керектиги боюнча этап-этабы менен көрсөтмө. Бул чындыгында оңой нерсе, бирок менин iPodдо кыйроо ойноп жатканымды көргөндөрдүн көбү дагы эле таң калышат жана көрсөтмө менен чаташып кетишет
WordPressке плагиндерди 3 кадам менен кантип орнотсо болот: 3 кадам
WordPressке плагиндерди 3 этапта кантип орнотуу керек: Бул үйрөткүчтө мен сизге веб -сайтыңызга WordPress плагинин орнотуу үчүн эң маанилүү кадамдарды көрсөтөм. Негизи плагиндерди эки башка жол менен орнотсоңуз болот. Биринчи ыкма ftp же cpanel аркылуу болот. Бирок мен аны тизмектебейм, анткени бул чындыгында нааразы
Кадам моторун айдоо үчүн 556 таймерди колдонуу: 5 кадам
Step моторун айдоо үчүн 556 таймерди колдонуу: Бул инструкция 556 таймердин кантип тепкичтүү моторду айдай аларын түшүндүрүп берет
Акустикалык левитация Arduino Uno менен кадам-кадам (8-кадам): 8 кадам
Акустикалык левитация менен Arduino Uno Step-by-Step (8-кадам): ультрадыбыштуу үн өткөргүчтөр L298N Dc аял адаптеринин электр энергиясы менен камсыздоосу эркек токту Arduino UNOBreadboard Бул кантип иштейт: Биринчиден, сиз Arduino Uno кодун жүктөп бересиз (бул санарип менен жабдылган микроконтроллер) жана аналогдук порттор кодду айландыруу үчүн (C ++)