For det tredje år, når Hackaday er vært for den næste konference, følger det en god tradition: Det distribuerer badges til deltagerne, som på samme tid er ret kraftige computersystemer. Enheder er inkluderet i billetprisen. De er produceret i små industrielle serier, men de er åben hardware, hvilket betyder, at alle, der ikke kan komme til konferencen, kan, hvis de har lyst og evnen til at gøre sig til samme badge som hjemmelavet gør det selv. Denne gang er udviklingsteamet ret stort: Disse er forfattere under kaldenavnene Lutetium, Aleksandar Bradic, Mike Szczys, Sophi Kravitz, Mike Walters, Sprite_tm, Elliot Williams, de∫hipu, Kumar Abhishek, Piotr Esden-Tempski, Voja Antonic, Zapp, Roger, Hyr0n, Sylvain Munaut og Sean Cross. Og ja, Voya Antonich er igen den samme, udvikleren af den nu vintage, og den engang nye Galaksija-hjemmecomputer.
Hvis badge i tidligere tider blev lavet i en formfaktor, der ligner Cybiko eller en QWERTY-tastaturstelefon som Nokia Asha 200, og den kunne køre Z80-emulator, CP / M-operativsystem og grundlæggende sprogtolk, ser det nu mere ud som en lomme en spilkonsol som Game Boy. Og giver dig endda mulighed for at tilslutte 40-pin-patroner. Og denne gang blev den lavet på FPGA Lattice LFE5U-45F.
Gentagelse af enheden skal begynde med hardware. Den første ting at gøre er at downloade alle filerne herfra og installer den nødvendige software, først og fremmest - KiCad. Åbn diagrammet i den (hadbadge2019.sch-fil), og køb alle de komponenter, der er inkluderet i den, efter at have læst noterne tidligere (hadbadge2019-bom-notes.txt-fil). Åbn printkortet (hadbadge2019.kicad_pcb-fil) og eksporter til Gerber-format. Bestil fremstilling af et bord i et firma med den relevante profil. Selv hvis du er flydende i LUT, hjælper det i dette tilfælde ikke. Bestil montering på et komponentkort i BGA-sager i værkstedet til reparation af smartphones. Du lodder let alle andre komponenter selv ved at fokusere på nedenstående foto og huske, at nogle komponenter, for eksempel LED'er, er polære.
I FPGA skal du udfylde bootloader med programmereren ved at downloade alle de nødvendige filer til dette herfra. Derefter vil al yderligere interaktion mellem din pc og brættet ske via USB. For at "genoplive" FPGA'en fuldt ud, skal du downloade værktøjssættet herfra, og koden til implementering på FPGA af RISC-V-processoren og interaktion med perifere enheder er herfra. Kompilér og udfyld koden.
Derefter defineres brættet som et almindeligt flashdrev, og det vil være muligt at placere filer med de programmer, der er beregnet til det på det. De programkort, der er gemt i hukommelsen, kan vælges ved hjælp af knapperne i skærmmenuen.
Patronen er valgfri. Dette er et meget simpelt tavle, der kan udføres af LUT eller endda på perfboard. Nedenfor er et diagram over patronen og et billede af dens kort:
Du kan installere en flashhukommelseschip på patronen, og når den installeres, starter indlæsningen fra den automatisk, når den er tændt. Der er også platforme til tilslutning af forskellige perifere enheder på patronkortet. De filer, der er nødvendige for at gentage patronen, er herog KiCad, hvis du gentog selve skiltet, har du det allerede.
Hvis du ikke er programmør, er du klar. Du kan tage eksempler her og her og eksperimentere. Hvis du beslutter at skrive nogen badgesoftware selv, introducerer udviklerne alle til metoderne til at kontakte deres brugerprogrammer til periferien.
Knappenavne består af ordet KNAPP, en understregning og et af følgende ord: OP, NED, VENSTRE, HØJRE, A, B, VÆLG, START.
Eksempel kode til polling af en knap:
hvis ((MISC_REG (MISC_BTN_REG) & BUTTON_RIGHT)) {
// Gør noget, når der trykkes på højre knap.
}
Eksempelkode til læsning af en timeraflæsning med en frekvens på 60 Hz:
uint32_t counter60hz (tom) {
returner GFX_REG (GFX_VBLCTR_REG);
}
Eksempel kode til læsning af et nummer fra en hardware-tilfældig nummergenerator:
MISC_REG (MISC_RNG_REG)
Eksempel kode til LED-kontrol:
MISC_REG (MISC_LED_REG) = 0xF;
De mest komplette oplysninger om enhedens grafikmotor gives i denne fil. Grafik - flise og sprite (som på NES). Billedet på skærmen består af fire lag (listet fra top til bund): et sprittlag, lag B, lag A og baggrundslag. Sæt af fliser, der hver har en samlet opløsning på 256x512 pixels, består af firkantede fliser med en side på 16 pixels. Paletten er 16-bit.
Laget indeholder 64x64 fliser, men et vindue med 30x20 fliser er synligt på skærmen. Når der vælges et lag, bliver alle ændringer i det øjeblikkeligt synlige. Vinduet kan flyttes jævnt i forhold til laget.
Lag med fliser kan skaleres og forvrænges, de aktuelle eksempler er angivet i filen main.c. Arbejde med sprite-laget er endnu ikke implementeret, det vil blive gjort tættere på konferencen. Eksemplerne placeres derefter i den samme fil.
Her har et team af udviklere fået et interessant design. Nogen vil sige, at det i tidligere tider med et QWERTY-tastatur og BASIC var mere interessant, men retrocomputere husker begge verdener - og hjem computere og konsoller. Og det er sandsynligvis rigtigt.