Per il terzo anno, quando Hackaday ospiterà la prossima conferenza, segue una buona tradizione: distribuisce badge ai partecipanti, che sono allo stesso tempo sistemi di elaborazione abbastanza potenti. I dispositivi sono inclusi nel prezzo del biglietto. Sono prodotti in piccole serie industriali, ma sono hardware aperti, il che significa che tutti coloro che non possono accedere alla conferenza possono, se hanno il desiderio e la capacità di farsi lo stesso badge di fatto in casa fallo da solo. Questa volta il team di sviluppo è piuttosto numeroso: sono autori con i soprannomi 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 e Sean Cross. E sì, Voya Antonich è di nuovo lo stesso, lo sviluppatore dell'ormai vintage e un tempo nuovo computer di casa Galaksija.
Se in passato il badge era stato realizzato con un fattore di forma simile a quello di Cybiko o di un telefono con tastiera QWERTY come Nokia Asha 200, e poteva eseguire l'emulatore Z80, il sistema operativo CP / M e l'interprete del linguaggio Basic, ora sembra più uno tascabile una console di gioco come Game Boy. E ti consente persino di collegare cartucce a 40 pin. E questa volta è stato realizzato con il FPGA Lattice LFE5U-45F.
La ripetizione del dispositivo dovrebbe iniziare con l'hardware. La prima cosa da fare è scaricare tutti i file da qui e installa il software necessario, prima di tutto - KiCad. Apri il diagramma in esso (file hadbadge2019.sch) e acquista tutti i componenti inclusi, avendo precedentemente letto le note (file hadbadge2019-bom-notes.txt). Apri il disegno del circuito (file hadbadge2019.kicad_pcb) ed esporta in formato Gerber. Ordinare la fabbricazione di una tavola in una società con il profilo appropriato. Anche se sei fluente in LUT, in questo caso non ti sarà d'aiuto. Nell'officina per la riparazione di smartphone, ordinare il montaggio su una scheda componente in custodie BGA. Puoi facilmente saldare da solo tutti gli altri componenti, concentrandoti sulla foto sotto, ricordando che alcuni componenti, ad esempio i LED, sono polari.
Nell'FPGA, è necessario riempire il bootloader con il programmatore scaricando tutti i file necessari per questo da qui. Successivamente, tutte le ulteriori interazioni del PC con la scheda avverranno tramite USB. Per "ravvivare" completamente l'FPGA, è necessario scaricare il toolkit da quie il codice per l'implementazione sull'FPGA del processore RISC-V e l'interazione con i dispositivi periferici è da qui. Compila e compila il codice.
Dopodiché, la scheda verrà definita come una normale unità flash e sarà possibile inserire file con i programmi a essa destinati. Le schede dei programmi memorizzate nella memoria possono essere selezionate mediante i pulsanti tramite il menu su schermo.
La cartuccia è opzionale. Questa è una tavola molto semplice che può essere eseguita da LUT o anche su perfboard. Di seguito è riportato un diagramma della cartuccia e un'immagine della sua scheda:
È possibile installare un chip di memoria flash sulla cartuccia e, una volta installato, il caricamento da esso inizierà automaticamente all'accensione. Ci sono anche piattaforme per il collegamento di varie periferiche sulla scheda della cartuccia. I file necessari per ripetere la cartuccia sono quie KiCad, se hai ripetuto il badge stesso, lo hai già.
Se non sei un programmatore, sei pronto. Puoi fare esempi qui e qui ed esperimento. Se decidi di scrivere tu stesso un software badge, gli sviluppatori presentano a tutti i metodi per contattare i loro programmi utente alla periferia.
I nomi dei pulsanti sono composti dalla parola PULSANTE, da un carattere di sottolineatura e da una delle seguenti parole: SU, GIÙ, SINISTRA, DESTRA, A, B, SELEZIONA, AVVIO.
Codice di esempio per il polling di un pulsante:
if ((MISC_REG (MISC_BTN_REG) & BUTTON_RIGHT)) {
// Fai qualcosa quando viene premuto il pulsante destro.
}
Codice di esempio per la lettura di un timer che legge ad una frequenza di 60 Hz:
uint32_t counter60hz (vuoto) {
return GFX_REG (GFX_VBLCTR_REG);
}
Codice di esempio per la lettura di un numero da un generatore di numeri casuali hardware:
MISC_REG (MISC_RNG_REG)
Codice di esempio per controllo LED:
MISC_REG (MISC_LED_REG) = 0xF;
Vengono fornite le informazioni più complete sul motore grafico del dispositivo in questo file. Grafica: tessera e sprite (come su NES). L'immagine sullo schermo è composta da quattro livelli (elencati dall'alto verso il basso): uno strato sprite, uno strato B, uno strato A e uno sfondo. Set di tessere, ognuna delle quali ha una risoluzione totale di 256x512 pixel, sono costituite da tessere quadrate con un lato di 16 pixel. La tavolozza è a 16 bit.
Il livello contiene tessere 64x64, ma sullo schermo è visibile una finestra di tessere 30x20. Quando viene selezionato un livello, tutte le modifiche in esso diventano immediatamente visibili. La finestra può essere spostata senza problemi rispetto al livello.
I livelli con riquadri possono essere ridimensionati e distorti, gli esempi attuali sono riportati nel file main.c. Il lavoro con il livello sprite non è ancora stato implementato, sarà reso più vicino alla conferenza. Gli esempi verranno quindi inseriti nello stesso file.
Ecco un team di sviluppatori ha un design interessante. Qualcuno dirà che in passato con una tastiera QWERTY e BASIC era più interessante, ma i retrocomputer ricordano entrambi i mondi - e casa computer e console. E probabilmente è giusto.