Мазмуну:

Экиликтен ондукка дал келген оюн: 10 кадам
Экиликтен ондукка дал келген оюн: 10 кадам

Video: Экиликтен ондукка дал келген оюн: 10 кадам

Video: Экиликтен ондукка дал келген оюн: 10 кадам
Video: Ну встречай, Иритилл холодной долины ► 7 Прохождение Dark Souls 3 2024, Ноябрь
Anonim
Image
Image
Саат бөлүштүргүчтү орнотуу
Саат бөлүштүргүчтү орнотуу

Бул көрсөтмө экиликтен ондукка дал келген оюнду түзүү үчүн зарыл болгон процессти жана модулдарды көрсөтөт. 60 секунда ичинде колдонуучулар жети сегменттин дисплейинде ондогон сандарды которгучтарды которуштуруу жана болжоо баскычы менен тапшыруу менен экиликке которушат жана киргизишет. Аяктагандан кийин, акыркы упай көрсөтүлөт жана кайра ойнотуу үчүн баштапкы абалга келтирилет.

Экилик жана тез рефлекстерди түшүнүү жакшы жасоо үчүн пайдалуу, бирок эгер кайра аракет кылуу керек болсо, баштапкы абалга келтирүү баскычы берилет.

1 -кадам: Саат бөлүштүргүчтү орнотуу

Бул бүт долбоордун негизи бул гизмодогу бардык бөлүктөрдүн туура синхрондошунан келип чыгат. Биздин чектүү мамлекеттик машинабыз ички саатты колдонот, бирок жети сегменттүү дисплей жана таймер сааттын өзгөртүлгөн версиясын колдонушу керек.

Бул "жаңы саат" ар бир конкреттүү компонент үчүн керектүү белгилүү бир жыштыкка жетүү үчүн ички саатты каалаган мезгилге бөлүүдөн келип чыгат. Бул мурунку лабораторияларда жасалган жана тажрыйбадан улам, биз билебиз, таймердин "биринин" цифрасы 0,1 Гцке, ал эми "ондук" цифрасы 1 Гцке ээ

Киргизүүлөр: ClkIn, бөлүүчү (32 бит)

Чыгуулар: ClkOut

2-кадам: Чектүү абалдагы машинаны (FSM) түзүү

Чектүү абалдагы машинаны (FSM) түзүү
Чектүү абалдагы машинаны (FSM) түзүү
Чектүү абалдагы машинаны (FSM) түзүү
Чектүү абалдагы машинаны (FSM) түзүү
Чектүү абалдагы машинаны (FSM) түзүү
Чектүү абалдагы машинаны (FSM) түзүү

Биздин чектүү абалдагы машинабызда биз беш абалды (баштоо, көрсөтүү, текшерүү, упай жана аяктоо) беш киргизүү менен баштоо керек деп чечтик (баштоо, баштапкы абалга келтирүү, болжоо, барабар, күтүү). Биздин Мамлекеттик Машинабыздагы жалгыз чыгаруу - бул 3 биттик номер, ал колдонуучунун кандай абалда экенин билдирет (000, 001, 011, 101, 100) төмөндөгү мамлекеттерге карата.

Эсиңизде болсун, чектүү мамлекеттик машина чындыгында төмөндөгү функцияларды түзбөйт, анын ордуна программа кандай абалда экенин жана эмне экенин айтат. Чындыгында эмне болорун төмөндө түшүндүрүлгөн жогорку модуль аныктайт.

Баштапкы абал (000)

Старт абалы - бул колдонуучу башталгыч киргизүү жогору болгонго чейин баштала турган жер, ошондой эле бул абалга келтирүү баскычы басылган сайын жетүүчү абал.

Оюн абалы (001)

Оюн абалы - бул оюндун башталышы, анда туш келди сан түзүлөт жана колдонуучу киргизүү үчүн которгучтарды которот. Божомолдоо баскычы басылганда, оюн Текшерүү абалына которулат.

Текшерүү абалы (011)

Бул абал салыштыруучунун колдонулуп жаткан жери, анда колдонуучунун киргизүү мааниси менен туш келди түзүлгөн сан салыштырылат. Эгерде тапшыруу туура болсо, бирдей мааниси жогору жана FSM Упай абалына барат; бирок, эгерде тапшыруу туура эмес болсо, FSM тапшыруу туура болгонго чейин Дисплей абалына кайтат.

Бул Текшерүү абалы башкаларга салыштырмалуу тезирээк болот, анткени бул текшерүү баскычы басылганда гана болуп жатат

Упай абалы (101)

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

Акыркы абалын (100)

60 секунддун таймери бүткөндөн кийин, күтүү убактысы жогору болот жана колдонуучу акыркы упай көрсөтүлүүчү Акыркы абалына жетет. Баштапкы абалга келтирүү басылат жана FSM кайрадан Старт абалында башталат.

Киргизүүлөр: Clk, биринчи, баштоо, болжоо, барабар, күтүү

Чыгуу: абал (3 бит)

3 -кадам: Жети сегментти көрсөтүү

Жети сегменттин дисплейин картага түшүрүү
Жети сегменттин дисплейин картага түшүрүү
Жети сегменттин дисплейин картага түшүрүү
Жети сегменттин дисплейин картага түшүрүү
Жети сегменттин дисплейин картага түшүрүү
Жети сегменттин дисплейин картага түшүрүү

Жети сегменттин дисплейи бүт долбоордун негизги бөлүгү болуп саналат, анткени экрандын алгачкы эки цифрасы кокус сандар генераторунун чыгышы катары колдонулат, ал эми акыркы эки цифр таймер болуп саналат. Биз акыркы мисалда экранда цифралар бар экенин мисал кылганыбыз менен, ал он алтылыкта көрсөтүлдү. Бул маселени чечүү үчүн, биз конвертер менен саат бөлүштүргүчтү колдондук, ал дагы төмөндө түшүндүрүлөт.

FSM оюн абалына киргенге чейин дисплей бардык 0лерди көрсөтөт; бирок, акыркы абалда, дисплей жөн гана колдонуучунун упайын көрсөтүшү керек.

Биз жети сегменттин дисплейинин бардык төрт цифрасын колдонуп жаткандыктан, биз ар дайым күйүп тургандай кабылданышыбыз үчүн, ар бир анод аркылуу 300 Гцте жетишерлик ылдам өтүшүбүз керек.

Киргизүүлөр: Clk, жети сегмент

Чыгуу: катоддор (7 бит), аноддор (4 бит)

4 -кадам: Салыштыргычты түзүү

Салыштыргычты түзүү
Салыштыргычты түзүү

Бул субмодуль Текшерүү абалында 7 биттик бинардык киргизилген божомолду чыныгы ондук мааниге салыштыруу жагынан колдонулат.

Бизде бирдей маани жогору же төмөн экендигине жараша кириштерди да, эки чыгууну да баалаган if билдирүүсү бар болчу. Бул модуль канчалык маанилүү болсо дагы, бул долбоордо эң жөнөкөй программалардын бири.

Киргизүүлөр: которгучтар (8 бит), сан (8 бит)

Чыгуу: EQ

5 -кадам: Таймерди орнотуу

Таймерди орнотуу
Таймерди орнотуу
Таймерди орнотуу
Таймерди орнотуу

Биздин таймер негизинен эки башка эсептегич болуп саналат, алар ар кандай ылдамдыкта көбөйүүдө. "Биринин" маанисиндеги бир эсептегич, (биринчи жети сегменттин дисплейи) жана "ондун" мааниси үчүн бир эсептегич (жети сегменттин дисплейиндеги экинчи цифра). Ар бир сан сааттын өсүп бараткан четине негизделген жана эсептегич 60 секундга жеткенде, time_out жогору болот жана оюн аяктап, баштапкы абалына кайтат.

Кириштер: Clk, абалы (3 бит), баштоо

Чыгуулар: Учурдагы (8 бит), күтүү убактысы

6 -кадам: Pseudo Random Number Generator долбоорлоо

Pseudo Random Number Generator долбоорлоо
Pseudo Random Number Generator долбоорлоо

Бул учурда атайын сандар генераторунун дагы бир альтернативалуу ыкмасы-бул 0-99 (бинардык) санынын кайталануучу болушу, бул кирүү көп болгондо санды чыгарат, анткени бул LFSR колдонуу зарылчылыгын алып салат.

Сан ички сааттын ар бир өйдө жагын өзгөртөт (10 нано-секунда) жана бир 100 микросекундда 100 циклди айланат. Колдонуучу качан сан генераторунан жаңы номер алгысы келсе, ал болгон номерин чыгарат, Бул процесс толугу менен кокустук болбосо да, бул процесстен байланыштуу жыйынтыктарды табуу ыктымалдыгы псевдо-кокустук үчүн жетишерлик төмөн.

Киргизүүлөр: Clk, changenum, тең

Чыгыштар: саны (8 бит)

7 -кадам: Converter түзүү

Конвертер түзүү
Конвертер түзүү

Керектүү компонент - бул ондук сандарды баштапкы он алтылыктын ордуна жети сегменттүү дисплейде көрсөтүү үчүн колдонулган Converter. Эки сан тең 7 биттик бинардык санга негизделгенине карабай, биз он алтылыкты ондукка которууга арналган бүтүндөй модулду түздүк.

Мисалы, биздин акыркы жыйынтык 0010001 (он жети) болсо, жети сегменттин дисплейи ондук санынын ордуна 17нин он алтылык маанисин көрсөтөт.

Киргизүү: Numin (8 бит)

Чыгуу: Сандар (8 бит)

8 -кадам: Оюн модулуна баарын бириктирүү

Оюн модулуна баарын бириктирүү
Оюн модулуна баарын бириктирүү
Оюн модулуна баарын бириктирүү
Оюн модулуна баарын бириктирүү
Оюн модулуна баарын бириктирүү
Оюн модулуна баарын бириктирүү
Оюн модулуна баарын бириктирүү
Оюн модулуна баарын бириктирүү

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

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

Оюн болуп жаткан учурда, колдонууга өтүүнү колдонуучуга билдирүү үчүн 7 LED күйгүзүлөт, жана оюн бүткөндө, биз дагы жаркыраган LEDди программаладык.

Киргизүүлөр: которгучтар (8 бит), Clk, баштапкы абалга келтирүү, баштоо, болжоо

Чыгуу: катоддор (7 бит), аноддор (4 бит), LED (7 бит)

9 -кадам: Кошумча көйгөйлөр

Бул оюнда жети гана алмаштыргыч колдонулганы менен, коддо 8 бит номери коюлган. Биз бул 8 битти кокус сандар генераторунан өндүрүлгөн 8 биттик санга салыштыра турган ыңгайлуу салыштыргычка ээ болуу үчүн жасадык.

Эсеп бизге биринчи кезекте бир аз кыйынчылык алып келди, анткени биз FSM балл абалында турганда бир упайга көбөйтүү үчүн койдук; Бирок, анын ордуна эмне болду, штат мамлекет иштеп турганда, биз көтөрө албаган негизсиз жогорку баллды берип турду. Биз муну 8 -кадамдагы коддон көрүнүп тургандай, сааттын учу менен синхрондоштурулган импульстук сигналды кошуу менен чечтик.

Акырында, таймер мүчүлүштүктөрдү оңдоого көп убакытты талап кылды, анткени ал биздин жети сегменттүү дисплейибизди бурмалайт, андыктан биз аны 60тан саноодон 0гө чейин алмаштырууга туура келди.

10 -кадам: Булак файлдары жана чектөөлөр

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

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