Vai al contenuto
LF Lomazzi Federico

Home/Appunti/Il Laboratorio? In un cassetto.../Elettronica

Elettronica

Un laboratorio nel cassetto: tutto quello che serve, dentro un solo chip

Lomazzi Federico 9 min di lettura

Voglio costruire una scheda didattica che si possa tirare fuori dal cassetto ed usare subito, senza moduli sovrapposti e senza ogni volta ricostruire il banco. Il punto di partenza è il Sophgo SG2002, un SiP da 9 x 9 mm con 256 MB di DRAM integrata, core RISC-V ed ARM, Linux, periferiche complete ed un acceleratore AI da 1 TOPS INT8.

Un laboratorio nel cassetto, progetto didattico basato sul Sophgo SG2002 con memoria SiP ed Edge AI

Il progetto nasce da un problema molto meno tecnico di quanto sembri

Se avete mai provato ad imparare elettronica da autodidatti saprete certamente che ad un certo punto il problema non è più capire il circuito ma trovare il tempo per rimetterlo in piedi. Hai un'ora libera la sera, però devi recuperare l'alimentatore, ricollegare la scheda, ritrovare il convertitore seriale, capire quale cavetto avevi usato e magari ricordarti perché l'ultima volta avevi lasciato un filo volante in una certa posizione, quando finalmente tutto riparte l'ora è già quasi finita ed alla sessione successiva ricominci da capo. È da questa banalissima seccatura che nasce questa rubrica: voglio progettare da zero una scheda didattica che si possa aprire, usare e richiudere come fosse davvero UN LABORATORIO NEL CASSETTO.

L'idea è avere un solo PCB con il processore, la memoria, le alimentazioni, i connettori ed una basetta sperimentale SK-10 già montata a bordo, così da poter costruire sopra il circuito del momento e poi rimettere via tutto senza smontare niente. Userò soltanto strumenti liberi e pubblicherò schematici, sbroglio e file di produzione mentre il progetto cresce, non perché penso che tutti debbano rifarlo identico ma perché il bello, almeno per me, è che ogni scelta possa essere controllata e contestata alla fonte.

Un debito che abbiamo con i nanocomputer

Questa idea non è nuova. Se avete avuto fra le mani la documentazione dei vecchi sistemi didattici a Z80 saprete certamente che quarant'anni fa esistevano già delle schede costruite apposta per imparare, con il microprocessore, la memoria, i display, i pulsanti ed una zona nella quale sperimentare. Si procedeva praticamente un registro alla volta ed oggi può sembrare un mondo remoto, ma la parte interessante non è la nostalgia. Il punto è che LA CONOSCENZA RICHIEDE LE BASI.

Oggi possiamo comprare per pochi euro una scheda che avvia Python, Linux oppure un ambiente Arduino e cominciare immediatamente a scrivere codice, cosa meravigliosa e che non rimpiango affatto. Ma quando qualche cosa non funziona il rischio è di trovarsi davanti ad una scatola nera, mentre chi ha imparato partendo dai piedini, dalle alimentazioni e dai registri tende ad avere un'altra reazione: la scatola la apre. Quello che è cambiato in quarant'anni non è la pedagogia, è il silicio, ed è proprio questo che vorrei sfruttare.

Il problema delle schede moderne è spesso nascosto nel modulino

Provate a guardare una qualsiasi scheda a processore abbastanza potente degli ultimi anni e noterete spesso la stessa soluzione, ovvero un piccolo modulo molto fitto montato sopra una scheda più grande. Non è necessariamente una scelta sbagliata, anzi funziona benissimo, ma nasce da un problema concreto: un processore capace di eseguire un sistema operativo moderno ha normalmente bisogno di memoria veloce ed instradare una DRAM esterna non è una passeggiata.

Le linee della memoria lavorano a frequenze elevate, devono rispettare vincoli di lunghezza, integrità del segnale ed impedenza e su una scheda reale questo può significare stackup multistrato, regole di layout molto più severe ed una fabbricazione meno indulgente. Per un prodotto hobbistico oppure didattico la soluzione più semplice è comprare quella parte già risolta dentro un modulo e progettare soltanto la carrier board. È ragionevole. Ma a me toglie proprio la parte che voglio studiare, perché mi ritrovo nuovamente con una scheda sopra un'altra scheda ed il pezzo più interessante rimane chiuso nel modulo.

SiP: spostare il problema difficile dentro il package

Qui entra in gioco il SiP (System in Package), cioè un package nel quale più elementi del sistema convivono nello stesso contenitore. Nel nostro caso la caratteristica decisiva è che il SG2002 integra nello stesso package anche 256 MB di DRAM, quindi le connessioni critiche fra processore e memoria non devono attraversare il PCB che progetterò io. Questa differenza cambia completamente il livello di difficoltà della scheda.

Non devo instradare un bus DDR esterno né occuparmi del matching di tutte quelle linee sul circuito stampato. Devo naturalmente progettare bene alimentazioni, disaccoppiamenti, clock, reset, boot, periferiche ed interfacce, quindi non è affatto un progetto banale, ma il muro che normalmente separa una scheda didattica da una vera scheda Linux diventa molto più basso. Senza il SiP avrei probabilmente finito per usare un modulo già pronto sopra una base costruita da me. Con il SiP posso invece progettare UN'UNICA SCHEDA, ed è esattamente ciò che volevo.

Perché ho scelto il Sophgo SG2002

Il protagonista della rubrica sarà il Sophgo SG2002, un QFN da 9 x 9 millimetri con 88 pin ed una memoria SiP da 256 MB. Il package è interessante anche dal punto di vista didattico perché i terminali sono sul perimetro e non nascosti sotto una matrice BGA, quindi rimane un componente impegnativo ma molto più affrontabile in un piccolo laboratorio con stencil, pasta saldante, lente ed un forno da reflow da banco.

La cosa che mi interessa ancora di più è la documentazione. Il datasheet preliminare pubblico ed il TRM (Technical Reference Manual) sono disponibili senza dover firmare NDA, ed esiste un ecosistema software pubblico attorno al chip e alle schede Milk-V che lo utilizzano. Per questa rubrica è fondamentale, perché non voglio limitarmi a dire che una certa resistenza va messa lì perché l'ho vista nello schema di qualcun altro, voglio poter aprire il documento tecnico, trovare il motivo e mostrarlo. Se poi qualcuno arriva ad una conclusione diversa dalla mia tanto meglio, perché significa che il progetto è realmente verificabile.

Dentro convivono RISC-V, ARM ed un piccolo 8051

Il SG2002 è parecchio curioso anche come architettura. Integra un core RISC-V T-Head C906 da 1 GHz, un secondo C906 da 700 MHz, un core ARM Cortex-A53 da 1 GHz ed un sottosistema MCU basato su 8051 con la propria SRAM. Sul core principale posso scegliere il percorso RISC-V oppure quello ARM e questo, dentro una scheda nata per studiare, vale parecchio perché con lo stesso hardware posso mettere le mani su due architetture completamente diverse.

Attorno ai core c'è poi il resto di un sistema embedded vero: interfaccia Ethernet 10/100 con MAC e PHY integrati, USB 2.0 DRD, interfacce MIPI per camera e display, codifica e decodifica H.264 ed H.265 fino a 5 megapixel a 30 fotogrammi al secondo, codec audio a 16 bit, I2S, microfono digitale, UART, SPI, I2C, PWM, ADC e GPIO. Non significa che porterò fuori ogni singolo segnale sulla nostra scheda, sarebbe probabilmente inutile ed ingestibile, ma significa avere abbastanza periferiche da poter decidere nelle puntate successive quali meritino davvero un connettore e quali invece possano restare interne al progetto.

Una precisazione importante riguarda la rete cablata. Il SG2002 integra MAC e PHY Ethernet 10/100, ma questo NON significa che il trasformatore Ethernet sia magicamente sparito e che un RJ45 possa essere collegato senza magnetics esterni. È proprio il genere di dettaglio che voglio affrontare leggendo lo schema di riferimento ed il datasheet invece di trasformare una frase commerciale in uno schema elettrico.

Linux, RTOS e la possibilità di scendere fino al ferro

Il SG2002 può eseguire Linux ed il mondo Milk-V Duo 256M dimostra già un ecosistema funzionante basato proprio su questo chip. Per il nostro laboratorio partirò da Linux su microSD perché è la strada più pratica, posso rompere il filesystem, sbagliare una configurazione, riscrivere la scheda di memoria e ricominciare senza trasformare ogni esperimento in una procedura di recupero.

Ma non voglio fermarmi lì. L'architettura permette di lavorare anche con un sistema in tempo reale e con i core secondari, ed è qui che la rubrica potrà tornare gradualmente verso quella sensazione dei vecchi nanocomputer, quando invece di chiedere ad una libreria di fare qualche cosa si finisce a leggere un registro e capire quale bit debba realmente cambiare. La differenza è che questa volta, sullo stesso pezzo di silicio, avremo anche Linux, rete, video ed accelerazione AI.

L'Edge AI diventa qualche cosa che si può collegare ad un LED

Sul SG2002 è integrata anche una TPU, cioè un acceleratore dedicato alle reti neurali, accreditata di 1 TOPS con calcolo INT8. Un TOPS significa teoricamente mille miliardi di operazioni al secondo, numero che scritto così fa una certa impressione ma insegna poco. Quello che mi interessa è tradurlo in una cosa fisica: collegare una telecamera, caricare un modello compatibile, eseguire l'inferenza LOCALMENTE e trasformare il risultato in qualche cosa che esce da un GPIO.

È questa la parte di Edge AI che mi piace. Nessuna immagine deve per forza lasciare la scrivania, nessun servizio cloud è necessario per ottenere il risultato dell'inferenza ed il modello può vivere sulla memoria locale del sistema. Non voglio costruire un dimostratore nel quale premo un pulsante e compare una scritta senza sapere cosa è successo sotto, voglio seguire la catena dall'acquisizione dell'immagine al preprocessing, dal modello alla TPU ed infine alla decisione che farà accendere un LED oppure comandare un relè.

La basetta SK-10 non è un accessorio, è il motivo del progetto

La basetta sperimentale SK-10 montata direttamente sulla scheda può sembrare la parte meno sofisticata di tutto il progetto, invece per me è praticamente il suo centro. Voglio poter prendere il laboratorio dal cassetto, aggiungere un sensore, un transistor, un piccolo display oppure qualche componente passivo e cominciare senza preparare ogni volta un banco nuovo. Quando finisco non devo scollegare il prototipo dalla scheda principale, perché il prototipo È sulla scheda principale.

Questa scelta naturalmente ci costringerà a ragionare molto bene su cosa portare verso la zona sperimentale, quali tensioni mettere a disposizione, quali GPIO proteggere, come evitare che un errore sulla breadboard possa distruggere il processore e quanto spazio sacrificare sul PCB. Sono problemi che affronteremo strada facendo ed è proprio per questo che non voglio partire da una scheda già fatta, perché altrimenti tutte queste decisioni sarebbero già state prese da qualcun altro.

Nella prossima puntata apriamo davvero il chip

Adesso abbiamo il perché ed abbiamo scelto il componente. Nella prossima puntata cominceremo la parte nella quale un progetto del genere può diventare interessante oppure morire molto velocemente, cioè alimentazioni, domini di tensione, sequenza di accensione, clock, reset e boot. Un processore moderno non si alimenta mettendo semplicemente cinque volt su un pin e sperando che sia contento, pretende più tensioni e pretende che vengano gestite nel modo previsto.

Scaricheremo quindi il manuale tecnico e lo useremo come primo vero strumento di progetto. Prima di KiCad, prima dello schematico e prima di scegliere un regolatore bisogna capire CHE COSA CHIEDE IL CHIP, perché la differenza fra una scheda che parte al primo colpo ed un quadratino da nove millimetri trasformato in decorazione comincia quasi sempre molto prima di premere il pulsante di accensione. Ed è da lì che inizieremo, leggendo i documenti, progettando e controllando ogni scelta, USANDO IL SILICIO MODERNO PER RITROVARE IL PIACERE DI CAPIRE COME FUNZIONA DAVVERO UN COMPUTER!

2 visite

Fonti

  1. Milk-V - SG2002, caratteristiche hardware e documentazione milkv.io
  2. Milk-V - Duo 256M basata su SG2002 milkv.io
  3. Milk-V - panoramica della piattaforma Duo e supporto Linux/RTOS milkv.io
  4. Sophgo - SDK Compilation and Usage Guide doc.sophgo.com
  5. System in Package - definizione generale en.wikipedia.org
  6. Wikimedia Commons - Zilog Z80 commons.wikimedia.org
  7. Wikimedia Commons - kit didattico Z80 commons.wikimedia.org

Commenti

Nessun commento, per ora.

Per commentare serve un accesso. Qui siamo tutti tecnici e colleghi!

Accedi per commentare

Scarica