Përmbajtje:

Përputhja binare në dhjetore Lojë: 10 hapa
Përputhja binare në dhjetore Lojë: 10 hapa

Video: Përputhja binare në dhjetore Lojë: 10 hapa

Video: Përputhja binare në dhjetore Lojë: 10 hapa
Video: Dëgjimi i drejtpërdrejtë: Koleksioni i plotë #BringYourWorth (Audio zyrtare) 2024, Nëntor
Anonim
Image
Image
Vendosja e ndarësit të orës
Vendosja e ndarësit të orës

Ky udhëzues do të tregojë procesin dhe modulet e kërkuara për të krijuar lojën tonë të përputhjes binare me dhjetore. Brenda 60 sekondave, përdoruesit do të përkthejnë dhe futin sa më shumë numra dhjetorë të gjeneruar në mënyrë të rastësishme në ekranin e shtatë segmenteve në binar duke i kyçur çelsat dhe duke i dorëzuar me një buton me mend. Pasi të përfundojë, një rezultat përfundimtar do të shfaqet dhe më pas do të rivendoset për të luajtur përsëri.

Kuptimi i reflekseve binare dhe të shpejtë është i dobishëm për të bërë mirë, por butoni i rivendosjes sigurohet në rast se dikush dëshiron të provojë përsëri menjëherë.

Hapi 1: Vendosja e ndarësit të orës

Shtylla kurrizore e të gjithë këtij projekti vjen nga sinkronizimi i saktë i të gjitha pjesëve në këtë gizmo. Makina jonë e Gjendjes së Fundit përdor orën e brendshme, por ekrani me shtatë segmente dhe kohëmatësi duhet të përdorin një version të ndryshuar të orës.

Kjo "orë e re" vjen nga ndarja e orës së brendshme me një periudhë të dëshiruar për të arritur një frekuencë të caktuar të nevojshme për secilin komponent specifik. Kjo është bërë në laboratorët e mëparshëm dhe nga përvoja, ne e dimë se kohëmatësi ka shifrën "e dikujt" të vendosur në 0.1 Hz, dhe shifra "dhjetëra" është 1 Hz

Hyrjet: ClkIn, pjesëtues (32 bit)

Rezultatet: ClkOut

Hapi 2: Krijimi i një makine me gjendje të fundme (FSM)

Krijimi i një makine me gjendje të fundme (FSM)
Krijimi i një makine me gjendje të fundme (FSM)
Krijimi i një makine me gjendje të fundme (FSM)
Krijimi i një makine me gjendje të fundme (FSM)
Krijimi i një makine me gjendje të fundme (FSM)
Krijimi i një makine me gjendje të fundme (FSM)

Në makinën tonë të Gjendjes së Fundit, ne vendosëm që pesë gjendje (Fillimi, Shfaqja, Kontrolli, Rezultati dhe Përfundimi) do të ishin të nevojshme me pesë hyrje (fillimi, rivendosja, hamendësimi, barazimi, koha e përfundimit). Dalja e vetme në Makinën tonë Shtetërore është një numër 3 bitësh që përfaqëson gjendjen në të cilën është përdoruesi (000, 001, 011, 101, 100) në lidhje me gjendjet më poshtë.

Mos harroni se një makinë e gjendjes së fundme nuk i paraformon funksionet më poshtë, përkundrazi ajo thjesht tregon se në çfarë gjendje është programi dhe çfarë. Ajo që ndodh në të vërtetë përcaktohet nga moduli kryesor i shpjeguar më poshtë.

Gjendja e fillimit (000)

Gjendja fillestare është vendi ku përdoruesi do të fillojë derisa hyrja e fillimit të jetë e lartë, kjo është gjithashtu gjendja që do të arrihet sa herë që shtypet butoni i rivendosjes.

Gjendja e lojës (001)

Gjendja e lojës është fillimi i lojës, ku krijohet numri i rastësishëm dhe përdoruesi ndryshon çelsin për të krijuar një hyrje. Pasi të shtypet butoni me mend, loja zhvendoset në Gjendjen e Kontrollit.

Gjendja e Kontrollit (011)

Kjo gjendje është vendi ku përdoret krahasuesi, i cili do të krahasojë vlerat e hyrjes së përdoruesit dhe numrin e krijuar rastësisht. Nëse paraqitja është e saktë, vlera e barabartë është e lartë dhe FSM shkon në gjendjen e rezultatit; megjithatë, nëse paraqitja është e pasaktë, FSM kthehet përsëri në Gjendjen e Shfaqjes derisa dorëzimi të jetë i saktë.

Ky Gjendje Kontrolli ndodh relativisht shpejt në krahasim me të tjerat, pasi po ndodh vetëm për aq kohë sa shtypet butoni i kontrollit

Gjendja e pikëve (101)

Meqenëse vlera e barabartë është e lartë, parashtrimi ishte i saktë. Në këtë gjendje, vlera e rezultatit do të rritet me një dhe një numër i ri do të gjenerohet që përdoruesi të futë. Ky numër i ri na kthen në gjendjen fillestare, ku përdoruesi do të kalojë përsëri ndërprerësit.

Gjendja përfundimtare (100)

Pasi të mbarojë kohëmatësi prej 60 sekondash, hyrja e afatit do të jetë e lartë dhe përdoruesi arrin në gjendjen përfundimtare ku shfaqet rezultati përfundimtar. Hyrja e rivendosjes më pas do të shtypet dhe FSM fillon përsëri në gjendjen e fillimit.

Hyrjet: Clk, së pari, filloni, mendoni, të barabartë, timeout

Dalja: gjendje (3 bit)

Hapi 3: Hartëzimi i ekranit të shtatë segmenteve

Hartimi i ekranit të shtatë segmenteve
Hartimi i ekranit të shtatë segmenteve
Hartimi i ekranit të shtatë segmenteve
Hartimi i ekranit të shtatë segmenteve
Hartimi i ekranit të shtatë segmenteve
Hartimi i ekranit të shtatë segmenteve

Shfaqja e Shtatë Segmenteve është një pjesë kryesore e të gjithë projektit pasi dy shifrat e para në ekran përdoren si dalje e gjeneratorit të numrave të rastit, ndërsa dy shifrat e fundit janë kohëmatësi. Megjithëse ne kemi zbatuar një shembull të kësaj në laboratorin e fundit në aspektin e të pasurit shifra në ekran, ai u shfaq në formë heksadecimal. Për të rregulluar këtë çështje, ne përdorëm një konvertues dhe ndarës të orës që shpjegohet më poshtë më poshtë.

Ekrani tregon të gjitha 0 -të derisa FSM -ja të hyjë në gjendjen e lojës; megjithatë, në gjendjen përfundimtare, ekrani duhet të tregojë vetëm rezultatin e përdoruesit.

Meqenëse ne po përdorim të katër shifrat e ekranit të shtatë segmenteve, ne duhet të kalojmë nëpër secilën anodë mjaft shpejt në 300 Hz në mënyrë që të perceptohemi si gjithmonë të ndezur.

Hyrjet: Clk, shtatë segmente

Rezultatet: katodat (7 bit), anodat (4 bit)

Hapi 4: Krijimi i Krahasuesit

Krijimi i Krahasuesit
Krijimi i Krahasuesit

Ky nënmodul përdoret në Gjendjen e Kontrollit për sa i përket krahasimit të supozimit binar 7 -bit të futur kundrejt vlerës dhjetore aktuale.

Ne kishim një deklaratë if që vlerësonte të dy hyrjet dhe dy daljet në varësi të faktit nëse vlera e barabartë ishte apo jo e lartë ose e ulët. Sado i rëndësishëm të jetë ky modul, ai është deri tani një nga programet më të thjeshtë për tu hartuar në këtë projekt.

Hyrjet: ndërprerës (8 bit), numër (8 bit)

Rezultati: EQ

Hapi 5: Vendosja e një kohëmatësi

Vendosja e një kohëmatësi
Vendosja e një kohëmatësi
Vendosja e një kohëmatësi
Vendosja e një kohëmatësi

Kohëmatësi ynë është në thelb dy sportele të ndryshëm që po rriten me ritme të ndryshme. Një numërues në vlerën "e dikujt", (ekrani i parë me shtatë segmente) dhe një numërues për vlerën "dhjetë" (shifra e dytë në ekranin me shtatë segmente). Çdo shifër bazohet në skajin në rritje të orës dhe sapo numëruesi të arrijë 60 sekonda, koha e përfundimit do të jetë e lartë dhe loja do të përfundojë dhe do të kthehet në gjendjen e fillimit.

Hyrjet: Clk, gjendja (3 bit), fillimi

Rezultatet: Aktual (8 bit), timeout

Hapi 6: Hartimi i Gjeneratorit të Numrave Pseudo të Rastit

Projektimi i Gjeneratorit të Numrave Pseudo të Rastit
Projektimi i Gjeneratorit të Numrave Pseudo të Rastit

Një metodë tjetër alternative për një gjenerator numrash veçanërisht për këtë rast është që të ketë një numërues përsëritës nga 0-99 (në binar) që nxjerr numrin e numëruar kur hyrja është e lartë, pasi kjo do të hiqte nevojën për përdorimin e një LFSR.

Numri ndryshon çdo skaj në rritje të orës së brendshme (10 nano-sekonda) dhe kalon nëpër të gjithë 100 numrat në një mikrosekondë. Sa herë që përdoruesi dëshiron një numër të ri nga gjeneruesi i numrave, ai nxjerr numrin në të cilin ishte, Edhe pse ky proces nuk është krejt i rastësishëm, probabiliteti për të gjetur rezultate të lidhura me këtë proces është mjaft i ulët për të qenë pseudo-rastësor.

Hyrjet: Clk, changenum, të barabarta

Rezultatet: numri (8 bit)

Hapi 7: Krijimi i një konvertuesi

Krijimi i një konvertuesi
Krijimi i një konvertuesi

Një komponent i domosdoshëm është Konvertuesi, të cilin e përdorëm për të shfaqur numrat dhjetorë në ekranin me shtatë segmente në vend të heksadecimalit origjinal. Edhe pse të dy numrat bazohen në një numër binar 7 bit, ne krijuam një modul të tërë të caktuar për shndërrimin e heksadecimal në decimal.

Për shembull, nëse prodhimi ynë përfundimtar për rezultatin ishte 0010001 (shtatëmbëdhjetë), ekrani me shtatë segmente do të tregonte vlerën heksadecimale të 11, në vend të numrit dhjetor të 17.

Hyrja: Numin (8 bit)

Dalja: Numout (8 bit)

Hapi 8: Vendosja e gjithçkaje së bashku në modulin e lojës

Vendosja e gjithçkaje së bashku në modulin e lojës
Vendosja e gjithçkaje së bashku në modulin e lojës
Vendosja e gjithçkaje së bashku në modulin e lojës
Vendosja e gjithçkaje së bashku në modulin e lojës
Vendosja e gjithçkaje së bashku në modulin e lojës
Vendosja e gjithçkaje së bashku në modulin e lojës
Vendosja e gjithçkaje së bashku në modulin e lojës
Vendosja e gjithçkaje së bashku në modulin e lojës

Për komponentët tanë, ne përdorëm çelsat e nevojshëm 0-6 që përdoruesi të kalonte, me tre butona për të vepruar si hyrje të përdoruesit për fillimin, rivendosjen dhe supozimin. Komponentët e ekranit me shtatë segmente dhe orën janë gjithashtu komponentë që kemi bërë nga laboratorët e mëparshëm, por duhej të ndryshonim në mënyrë që t'i përshtatej këtij projekti.

Ne e ndajmë këtë projekt në gjashtë modulet e treguar më sipër për të zbërthyer të gjithë gizmën në shumë pjesë pune, megjithatë, mënyra e lidhjes së tyre është mjaft e ndërlikuar dhe tregohet nga fotografia e kutisë së zezë të bashkangjitur.

Ndërsa loja po ndodh, 7 LED janë ndezur për të njoftuar përdoruesin se cili ndërron të përdorë, dhe kur loja të përfundojë, ne gjithashtu programuam LED që të ndizen

Hyrjet: ndërron (8 bit), Clk, rivendos, fillo, merre me mend

Rezultatet: katodat (7 bit), anodat (4 bit), LED (7 bit)

Hapi 9: Probleme shtesë të hasura

Edhe pse vetëm shtatë ndërprerës janë përdorur në këtë lojë, kodi e ka vendosur atë si një numër 8 bitësh. Ne e bëmë këtë në mënyrë që të kemi një krahasues më të përshtatshëm që do t'i krahasojë këto 8 bit me numrin 8 bit që krijuam nga gjeneruesi i numrave të rastit.

Rezultati gjithashtu na dha pak telashe në fillim sepse e vendosëm atë të rrisë një pikë kur FSM ishte në gjendjen e rezultatit; megjithatë ajo që ndodhi në vend ishte që rezultati vazhdonte të rritej për sa kohë që gjendja ishte në gjendje, duke na dhënë një rezultat të paarsyeshëm të lartë me të cilin nuk mund të përballonim. Ne e rregulluam këtë duke shtuar një sinjal pulsi që u sinkronizua me skajin në rritje të orës, siç shihet në kodin në hapin 8.

Më në fund, kohëmatësi mori shumë kohë për të korrigjuar pasi do të shtrembërojë ekranin tonë me shtatë segmente kur ishte duke numëruar mbrapsht, kështu që na u desh ta ndryshonim atë nga numërimi nga 60 në numërimin nga 0.

Hapi 10: Skedarët dhe kufizimet e burimit

Nëse preferoni të tërhiqeni nga skedarët tanë burim në vend që të krijoni tuajat, këtu janë. Gjithashtu, skedari i kufizimit është i përfshirë.

Recommended: