Satura rādītājs:

Spēle Binārā līdz decimāldaļai: 10 soļi
Spēle Binārā līdz decimāldaļai: 10 soļi

Video: Spēle Binārā līdz decimāldaļai: 10 soļi

Video: Spēle Binārā līdz decimāldaļai: 10 soļi
Video: Lesson 04: Introduction to Base number Binary, Decimal, Hexadecimal and Octal 2024, Jūlijs
Anonim
Image
Image
Pulksteņa dalītāja iestatīšana
Pulksteņa dalītāja iestatīšana

Šajā pamācībā tiks parādīts process un moduļi, kas nepieciešami, lai izveidotu mūsu spēli no bināro līdz decimāldaļai. 60 sekunžu laikā lietotāji tulkos un ievadīs tik daudz nejauši ģenerētu decimālo skaitļu septiņu segmentu displejā, pārslēdzot slēdžus un iesniedzot ar uzminēšanas pogu. Pēc pabeigšanas tiks parādīts gala rezultāts un pēc tam atiestatīts, lai atskaņotu vēlreiz.

Bināro un ātro refleksu izpratne ir izdevīga, lai gūtu labus rezultātus, taču atiestatīšanas poga ir paredzēta gadījumam, ja vēlaties uzreiz mēģināt vēlreiz.

1. darbība: pulksteņa dalītāja iestatīšana

Visa šī projekta mugurkauls nāk no pareizas visu šīs Gizmo detaļu sinhronizācijas. Mūsu galīgā stāvokļa mašīna izmanto iekšējo pulksteni, bet septiņu segmentu displejam un taimerim ir jāizmanto mainīta pulksteņa versija.

Šis "jaunais pulkstenis" rodas, dalot iekšējo pulksteni ar vēlamo periodu, lai sasniegtu noteiktu frekvenci, kas nepieciešama katram konkrētajam komponentam. Tas ir darīts iepriekšējās laboratorijās un no pieredzes mēs zinām, ka taimera cipars "viens" ir iestatīts uz 0,1 Hz, bet "desmitiem" - 1 Hz

Ieejas: ClkIn, dalītājs (32 biti)

Rezultāti: ClkOut

2. darbība: ierobežota stāvokļa mašīnas (FSM) izveide

Galīga stāvokļa mašīnas (FSM) izveide
Galīga stāvokļa mašīnas (FSM) izveide
Galīga stāvokļa mašīnas (FSM) izveide
Galīga stāvokļa mašīnas (FSM) izveide
Galīga stāvokļa mašīnas (FSM) izveide
Galīga stāvokļa mašīnas (FSM) izveide

Mūsu ierobežota stāvokļa mašīnā mēs nolēmām, ka būs nepieciešami pieci stāvokļi (sākums, displejs, pārbaude, rezultāts un beigas) ar piecām ievadēm (sākums, atiestatīšana, minējums, vienāds, taimauts). Vienīgais izvads mūsu valsts mašīnā ir 3 bitu skaitlis, kas norāda, kādā stāvoklī atrodas lietotājs (000, 001, 011, 101, 100) attiecībā uz tālāk norādītajiem stāvokļiem.

Atcerieties, ka ierobežota stāvokļa mašīna faktiski neizpilda tālāk norādītās funkcijas, bet tikai norāda, kādā stāvoklī programma ir ieslēgta un kāda. To, kas patiesībā notiek, nosaka augšējais modulis, kas izskaidrots zemāk.

Sākuma stāvoklis (000)

Sākuma stāvoklis ir vieta, kur lietotājs sāks darbību, līdz sākuma ievade ir augsta, tas ir arī stāvoklis, kas tiks sasniegts ikreiz, kad tiek nospiesta atiestatīšanas poga.

Spēles stāvoklis (001)

Spēles stāvoklis ir spēles sākums, kurā tiek ģenerēts nejaušs skaitlis un lietotājs pārslēdz slēdžus, lai izveidotu ievadi. Pēc minēšanas pogas nospiešanas spēle tiek pārvietota uz pārbaudes stāvokli.

Pārbaudīt valsti (011)

Šajā stāvoklī tiek izmantots salīdzinātājs, kas salīdzinās lietotāja ievadītās vērtības un nejauši ģenerēto skaitli. Ja iesniegums ir pareizs, vienāda vērtība ir augsta un MFV nonāk vērtēšanas stāvoklī; tomēr, ja iesniegums ir nepareizs, MFV atgriežas attēlojuma stāvoklī, līdz iesniegums ir pareizs.

Šis pārbaudes stāvoklis notiek salīdzinoši ātri, salīdzinot ar citiem, jo tas notiek tikai tik ilgi, kamēr ir nospiesta pārbaudes poga

Rezultātu statuss (101)

Tā kā vienāda vērtība ir augsta, iesniegums bija pareizs. Šajā stāvoklī rezultātu vērtība palielināsies par vienu, un lietotājam tiks ģenerēts jauns skaitlis. Šis jaunais numurs atgriež mūs sākuma stāvoklī, kur lietotājs atkal pārslēgs slēdžus.

Beigu stāvoklis (100)

Kad 60 sekunžu taimeris ir beidzies, taimauta ievade būs augsta un lietotājs sasniegs beigu stāvokli, kurā tiek parādīts gala rezultāts. Pēc tam tiks nospiesta atiestatīšanas ievade, un FSM atkal sāksies no sākuma stāvokļa.

Ievadi: Clk, pirmkārt, sākums, minējums, vienāds, taimauts

Izeja: stāvoklis (3 biti)

3. darbība. Septiņu segmentu displeja kartēšana

Septiņu segmentu displeja kartēšana
Septiņu segmentu displeja kartēšana
Septiņu segmentu displeja kartēšana
Septiņu segmentu displeja kartēšana
Septiņu segmentu displeja kartēšana
Septiņu segmentu displeja kartēšana

Septiņu segmentu displejs ir visa projekta galvenā sastāvdaļa, jo pirmie divi cipari ekrānā tiek izmantoti kā nejaušo skaitļu ģeneratora izeja, bet pēdējie divi cipari ir taimeris. Lai gan iepriekšējā laboratorijā mēs esam ieviesuši piemēru tam, ka ekrānā ir cipari, tas tika parādīts heksadecimālā. Lai atrisinātu šo problēmu, mēs izmantojām pārveidotāju un pulksteņa dalītāju, kas sīkāk paskaidrots zemāk.

Displejā tiek rādīti visi 0, līdz MFV nonāk spēles stāvoklī; tomēr gala stāvoklī displejā vajadzētu parādīt tikai lietotāja rezultātu.

Tā kā mēs izmantojam visus četrus septiņu segmentu displeja ciparus, mums ir pietiekami ātri jāapmeklē katrs anods ar 300 Hz frekvenci, lai mūs uztvertu kā vienmēr izgaismotus.

Ievadi: Clk, septiņu segmentu

Izejas: katodi (7 biti), anodi (4 biti)

4. darbība: salīdzinātāja izveide

Salīdzinātāja izveide
Salīdzinātāja izveide

Šis apakšmodulis tiek izmantots pārbaudes stāvoklī, salīdzinot 7 bitu ievadīto minējumu ar faktisko decimālo vērtību.

Mums bija paziņojums, ja tika novērtētas gan ievades, gan divas izejas atkarībā no tā, vai vienāda vērtība bija augsta vai zema. Lai cik svarīgs būtu šis modulis, tā ir viena no vienkāršākajām programmām šajā projektā.

Ieejas: slēdži (8 biti), numurs (8 biti)

Izeja: EQ

5. darbība: taimera iestatīšana

Taimera iestatīšana
Taimera iestatīšana
Taimera iestatīšana
Taimera iestatīšana

Mūsu taimeris būtībā ir divi dažādi skaitītāji, kas pieaug ar dažādu ātrumu. Viens skaitītājs "viena" vērtībā (pirmo septiņu segmentu displejs) un viens skaitītājs "desmit" vērtībai (otrais cipars septiņu segmentu displejā). Katrs cipars ir balstīts uz pulksteņa augošās malas, un, kad skaitītājs sasniedz 60 sekundes, time_out būs augsts, un spēle beigsies un atgriezīsies sākuma stāvoklī.

Ieejas: Clk, stāvoklis (3 biti), sākums

Izejas: strāva (8 biti), taimauts

6. darbība. Pseido nejaušo skaitļu ģeneratora projektēšana

Pseido nejaušo skaitļu ģeneratora projektēšana
Pseido nejaušo skaitļu ģeneratora projektēšana

Vēl viena alternatīva metode skaitļu ģeneratoram, kas īpaši paredzēts šim gadījumam, ir atkārtots skaitītājs no 0 līdz 99 (binārā formātā), kas izvada saskaitīto skaitli, kad ievade ir augsta, jo tas izslēdz nepieciešamību izmantot LFSR.

Skaitlis maina katru iekšējā pulksteņa augošo malu (10 nano sekundes) un vienā mikrosekundē iziet visus 100 skaitļus. Ikreiz, kad lietotājs vēlas jaunu numuru no skaitļu ģeneratora, tas izdala numuru, kurā tas bija, Lai gan šis process nav pilnīgi nejaušs, varbūtība atrast saistītus rezultātus šajā procesā ir pietiekami zema, lai būtu pseido-nejauša.

Ieejas: Clk, changenum, vienāds

Izejas: numurs (8 biti)

7. darbība: pārveidotāja izveide

Pārveidotāja izveide
Pārveidotāja izveide

Nepieciešams komponents ir pārveidotājs, ko mēs izmantojām, lai septiņu segmentu displejā parādītu decimālos ciparus, nevis sākotnējo heksadecimālo skaitli. Lai gan abi skaitļi ir balstīti uz 7 bitu bināro skaitli, mēs izveidojām veselu moduli, kas paredzēts heksadecimālā skaitļa pārvēršanai decimālā.

Piemēram, ja mūsu gala rezultāts bija 0010001 (septiņpadsmit), septiņu segmentu displejā tiktu parādīta heksadecimālā vērtība 11, nevis decimālskaitlis 17.

Ieeja: Numin (8 biti)

Izeja: Numout (8 biti)

8. solis: visu salieciet spēles modulī

Visu apvienojot spēles modulī
Visu apvienojot spēles modulī
Visu saliek kopā spēles modulī
Visu saliek kopā spēles modulī
Visu apvienojot spēles modulī
Visu apvienojot spēles modulī
Visu saliek kopā spēles modulī
Visu saliek kopā spēles modulī

Savām sastāvdaļām mēs izmantojām nepieciešamos slēdžus 0-6, lai lietotājs varētu pārslēgties, un trīs pogas darbojās kā lietotāja ievades sākšanai, atiestatīšanai un uzminēšanai. Septiņu segmentu displeja un pulksteņa komponenti ir arī komponenti, kurus esam veikuši iepriekšējās laboratorijās, taču tie bija jāmaina, lai tie atbilstu šim projektam.

Mēs sadalījām šo projektu sešos iepriekš parādītajos moduļos, lai visu gizmo sadalītu daudzās darba daļās, tomēr to savienošanas veids ir diezgan sarežģīts un parādīts pievienotajā melnās kastes attēlā.

Spēles laikā iedegas 7 gaismas diodes, lai paziņotu lietotājam, kurus slēdžus izmantot, un, kad spēle beidzas, mēs arī ieprogrammējām gaismas diodes mirgot

Ieejas: slēdži (8 biti), Clk, reset, start, guess

Izejas: katodi (7 biti), anodi (4 biti), gaismas diodes (7 biti)

9. darbība: radušās papildu problēmas

Lai gan šajā spēlē tiek izmantoti tikai septiņi slēdži, kodā tas ir iestatīts kā 8 bitu skaitlis. Mēs to darījām, lai būtu ērtāks salīdzinātājs, kas šos 8 bitus salīdzinātu ar 8 bitu skaitli, ko mēs ģenerējām no nejaušo skaitļu ģeneratora.

Rezultāts arī sākumā sagādāja mums mazliet nepatikšanas, jo mēs noteicām, ka tas palielina vienu punktu, kad MFV bija rezultātu stāvoklī; tomēr tā vietā notika tas, ka rādītājs turpināja pieaugt, kamēr valsts darbojās, dodot mums nepamatoti augstu rezultātu, ar kuru mēs nevarējām tikt galā. Mēs to novērsām, pievienojot impulsa signālu, kas tika sinhronizēts ar pulksteņa augošo malu, kā redzams 8. darbības kodā.

Visbeidzot, taimera atkļūdošana aizņēma daudz laika, jo tas izkropļoja mūsu septiņu segmentu displeju, kad tas tika skaitīts atpakaļ, tāpēc mums tas bija jāmaina no atpakaļskaitīšanas no 60 uz skaitīšanu līdz 0.

10. darbība: avota faili un ierobežojumi

Ja jūs labāk izvēlaties no mūsu avota failiem, nevis izveidojat savus, šeit tie ir. Iekļauts arī ierobežojumu fails.

Ieteicams: