-
AutorePost
-
3 Febbraio 2022 alle 11:35 #18204
Just4Fun
PartecipanteDopo avere realizzato alcune schede basate sull’accoppiata retro-CPU + MCU come lo Z80-MBC2, il V20-MBC e il 68k-MBC, ho voluto provare a cambiare completamente l’approccio utilizzando l’accoppiata FPGA + retro-CPU.
Ovviamente questa scelta si porta dietro il completo abbandono di componentistica THT e una maggiore complessità di realizzazione e di utilizzo (es. necessario conoscere linguaggi HDL come il VHDL o Verilog). Di contro consente un livello di flessibilità molto elevato e una totale riconfigurabilità dello HW.
La scheda Studio 68 permette di poter giocherellare con una CPU 68000 (68SEC000) onboard con un approccio FPGA-centrico in modo da poter sviluppare ogni logica di controllo o I/O all’interno della FPGA. E’ presente un connettore (GPIO) per poter collegare degli “adattatori” esterni di I/O (es. interfaccia VGA e PS/2).
Inoltre ho aggiunto anche una MCU (uno STM32F030R8T6) come “utility” per alcune operazioni (ad esempio per la fase di boot) o per poter sperimentare approcci “misti” (parte della logica sviluppata nella FPGA e parte nella MCU).
E’ anche presente una SDRAM da 16MW (words da 16 bit) gestita dalla FPGA.La scheda Studio 68 permette anche di utilizzare un bus per schede di espansione esterne con logica a 5V, avendo onboard i necessari traslatori di livello 3.3V/5V.
Ponendo il 68000 in 3-state è anche possibile utilizzare delle “Application Board” esterne con altre CPU e configurare la scheda Studio 68 come “slave”. A tal proposito ho già realizzato un prima bozza di “Application Board” per una CPU sovietica “clone” del famoso PDP11.
Di seguito lo schema a blocchi:
< Continua nel post successivo…>
-
Questo topic è stato modificato 1 anno, 7 mesi fa da
Just4Fun.
-
Questo topic è stato modificato 1 anno, 7 mesi fa da
Just4Fun.
-
Questo topic è stato modificato 1 anno, 7 mesi fa da
Just4Fun.
-
Questo topic è stato modificato 1 anno, 7 mesi fa da
Just4Fun.
-
Questo topic è stato modificato 1 anno, 7 mesi fa da
Just4Fun.
3 Febbraio 2022 alle 11:47 #18208Just4Fun
PartecipanteLa scheda richiede un PCB 4-layer e componenti SMD fino alla dimensione 0402 su entrambi i lati del PCB.
Lo “stack” del PCB è il seguente:
Layer 1: segnali (preferibilmente segnali “high speed”);
Layer 2: massa;
Layer 3: alimentazioni + eventuali segnali (preferibilmente segnali “low speed” e solo se assolutamente necessario);
Layer 4: segnali (preferibilmente segnali “low speed”).Attualmente sono nella fase di primo tentativo di piazzamento dei componenti senza routing, per cercare di ottimizzare al massimo il “ratnest”:
Di seguito il rendering della scheda allo stato attuale:
La strada da percorrere è ancora lunga e perigliosa…
6 Febbraio 2022 alle 10:47 #18870Picmicro675
PartecipanteAuguri, Ingegnere!!!
21 Febbraio 2022 alle 14:33 #23067Just4Fun
PartecipanteGli auguri di @Picmicro675 hanno funzionato e il routing ora è completo e questo è il risultato finale:
Ora è il tempo di alcuni check/ottimizzazioni finali prima di mandare il tutto in fabbricazione.
Uno dei check è quello che chiamo il “controllo gruviera” 🙂 :
Nell’immagine precedente si vede una porzione del solo layer di massa in cui ho evidenziato in rosso alcuni gruppi di fori che a causa dei necessari margini di “clearance” formano degli “slot” nel piano di massa. Questa situazione è da evitare perché può ostacolare le correnti di ritorno sul layer di massa stesso, per cui occorre distanziare i fori ove possibile per permettere il “flooding” del piano di massa nell’area circostante (come per gli altri fori in figura).
23 Marzo 2022 alle 14:48 #23368Just4Fun
PartecipanteFinalmente mi sono arrivati i PCB:
Ora inizia la (lunga) fase di assemblaggio e testing…
10 Maggio 2022 alle 19:18 #23684Just4Fun
PartecipanteAd oggi sono arrivato a montare circa l’80% del PCB:
Questo include l’alimentatore, la porta USB e relativa circuiteria, la FPGA e relativa circuiteria di programmazione, la MCU STM32 completa di SD (lato inferiore) e relativa circuiteria di programmazione da USB e la DRAM (di tipo SDR). Questa ultima è una delle parti più rognose da testare perché richiede di disporre di un opportuno controller nella FPGA, oltre ad una interfaccia che permetta allo STM32 di poter accedere in lettura ed in scrittura nella SDRAM in maniera asincrona attraverso il bus locale LCB2 (vedi schema a blocchi nel primo post), ed infine un SW da fare girare nello STM32 come RAM tester.
Per velocizzare ho utilizzato come controller un “core” open source in VHDL che ho trovato “in giro”, mentre necessariamente ho realizzato l’interfaccia di accesso asincrono alla DRAM da parte dello STM32 (in VHDL) ed il relativo SW di testing in quanto specifici di questa scheda.
La sezione relativa allo STM32 dello scheda Studio 68 è compatibile con la scheda di sviluppo Discovery di ST ed inoltre è presente una opportuna circuiteria che permette di usare il bootloader seriale interno dello STM32 “comandato” da Arduino IDE (dopo avere caricato il “core” ufficiale di ST):In questo modo è possibile usare Arduino IDE per realizzare e caricare velocemente dei SW di test (ovviamente ciò non impedisce di usare un qualsiasi sistema di sviluppo per STM32 attraverso la porta di programmazione/debugging SWD che è comunque presente).
Attualmente sto testando la DRAM e se il risultato sarà positivo potrò passare allo step successivo che sarà l’assemblaggio e test della CPU 68SEC000…
18 Maggio 2022 alle 16:53 #23693Picmicro675
PartecipanteCerco che per me un tal progetto sarebbe come andare sulla luna. Io rimango a bocca aperta per la grande capacità che hai.
18 Luglio 2022 alle 15:40 #23915Just4Fun
Partecipante@Picmicro675: Grazie troppo buono… 🙂
Ho aggiunto la CPU 68SEC000 ed iniziato i primi semplici programmi di test scritti in assembler 68000 e utilizzando la RAM interna della FPGA (blocchi M4K) che permette di precaricare l’immagine di un file binario all’interno del “bitstream” inviato con la JTAG:
Per eseguire i test sto usando 3 toolchain in “parallelo”. La prima serve per i sorgenti 68000 in assembler e la produzione di un file binario in formato .mif.
La seconda è l’IDE di Quartus per la sintesi del VHDL e la predisposizione della RAM precaricata con il file binario in codice macchina 68000.
La terza è l’IDE di Arduino con il “core” per gli STM32 per poter programmare la MCU STM32 che funge da “bridge” tra la FPGA e la USB.
A questo punto devo iniziare a pensare a come testare il bus esterno, e probabilmente mi servirà una opportuna ulteriore scheda…
-
Questo topic è stato modificato 1 anno, 7 mesi fa da
-
AutorePost
- Devi essere connesso per rispondere a questo topic.