Vai al contenuto
LF Lomazzi Federico
Novità

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

Elettronica

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

Lomazzi Federico 10 min di lettura

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

Cimentandovi nell'elettronica o nella prototipazione, sia per lavoro che per passione, 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? Bene, 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 quel filo volante rosso con segno nero in una certa posizione, e quando finalmente tutto riparte l'ora è già quasi finita ed alla sessione successiva ricominci da capo. E' (anche) da questa banalissima seccatura che nasce questa rubrica: 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 poterci costruire sopra il circuito del momento e poi rimettere via tutto senza dover smontare niente. Questa scheda didattica 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 generazionale che abbiamo con i nanocomputer

Questa idea non è nuova. Chi ha potuto avere fra le mani la documentazione dei vecchi sistemi didattici a Z80, saprà 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, certo, ma la parte interessante non è la nostalgia ma che LA CONOSCENZA INIZIA DALLE BASI. Oggi possiamo comprare per pochi euro una scheda che avvia Python, Linux oppure un ambiente Arduino e iniziare da subito 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: quella scatola la apre, in qualche modo la apre. Quello che è cambiato in quarant'anni non è la pedagogia, è il silicio, ed è proprio questo che vorrei sfruttare.

Il "problema" delle schede moderne è il "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, ossia che un processore capace di eseguire un sistema operativo moderno ha normalmente bisogno di memoria veloce ed instradare una DRAM esterna non è una passeggiata, perchè a certe frequenze (e le linee della memoria lavorano a frequenze molto elevate) iniziamo problemi di Signal-skew e si 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 mi 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, perchè non devo instradare un bus DDR esterno né occuparmi del matching di tutte quelle linee sul circuito stampato; devo naturalmente progettare bene alimentazioni, disaccoppiamenti, i clock, il circuito di reset, di boot e poi la varia componentistica per le periferiche ed interfacce, quindi non è affatto un progetto banale anzi è molto più che divertente, 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 mentre 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 per chi ce l'ha; io ad esempio uso una piastra preriscaldante da 550W (molto economica) e già solo con quella ed un minimo di attenzione ho saldato tranquillamente vari qfn senza problemi. 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.

Tre in uno: RISC-V, ARM e pure un piccolo 8051!

Il SG2002 è ha una architettura parecchio curiosa, in quanto 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; una chicca che arriva dagli anni 80. 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. Ma noi ce la caveremo brillantemente con un pezzo preso dall'orbita di Arduino, ovvero l'omnipresente HR911105A prodotta da HanRun, o ENC28J60/W5100 che dir si voglia; in questo modo basta connettere i pin quasi direttamente allo scheld da pcb ed il connettore LAN è bello che pronto.

Linux, RTOS e la possibilità di boot in millisecondi

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, così se qualche cosa và storto o sbaglio una configurazione, riscrivere la scheda di memoria dall'immagine e ricominciare senza trasformare ogni esperimento in una procedura di recupero. Ma non voglio fermarmi lì, perchè questo mostriciattolo è molto di più, e 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 collegata 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: collegarci una telecamera, caricarci un modello compatibile ed eseguire l'inferenza LOCALMENTE trasformando 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è.

Non un accessorio ma una ambizione: La basetta SK-10

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, aggiungerci un sensore, un transistor, un display o qualche altro componente 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 (3.3, 5V, 12V), 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, ma nella prossima puntata cominceremo la parte nella quale un progetto del genere diventa interessante, cioè alimentazioni, domini di tensione, sequenza di accensione, clock, reset e boot. Un processore moderno non si alimenta mettendo semplicemente i volt su un pin sperando che sia contento, pretende tensioni stabili 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 EDGE AI.

64 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

In funzione adesso

Il mio server AI

Dashboard Dell PowerEdge R930 in-house-AI. Temperature, carico, memoria, stato degli alimentatori, aggiornati in diretta!

Ti verranno chieste queste

Utente federico
Password Telesio40

Vengono richieste per accedere.

Cosa c’è dentro

Macchina
Dell PowerEdge R930
Processori
4 × Intel Xeon E7-8890 v3
72 core, 144 thread
Memoria
512 GB ECC DDR4
16 moduli da 32 GB su 16 canali
Archiviazione
2 × Samsung PM1643a
1,92 TB ciascuno
Alimentazione
2 × Dell 9TMRF 1100 W
in hot spare
Continuità
APC Smart-UPS SMT3000I
Raffreddamento
Kit ventole Nidec
V12C12BS1M3-57A11
Apri la dashboard ↗