Minimig

Da Wikipedia, l'enciclopedia libera.
Circuito stampato da 120x120mm del Minimig (Nano-ITX size)[1]

Il Minimig (abbreviazione di Mini Amiga) è una reimplementazione open source di un Amiga 500 tramite FPGA.

La progettazione del Minimig fu iniziata segretamente nel gennaio 2005 come proof-of-concept dall'ingegnere olandese Dennis van Weeren. Con il Minimig intendeva rispondere alle numerose discussioni della comunità Amiga sull'implementazione del chipset Amiga mediante FPGA. Il codice sorgente e lo schema elettrico vennero rilasciati su licenza GPL versione 3 il 25 luglio 2007.

Il 23 dicembre 2007 ACube Systems ha annunciato che avrebbe venduto le schede assemblate del Minimig v1.1[2].

Il prototipo iniziale[modifica | modifica sorgente]

Il primo prototipo del Minimig è basato sullo Spartan-3 Starter Kit della Xilinx; nell'FPGA è sintetizzato l'intero chipset Amiga OCS. Due circuiti stampati sono collegati alle porte di espansione del kit FPGA: il primo contiene una versione a 3,3V della CPU MC68000, mentre il secondo contiene uno slot MMC con un microcontrollore PIC con funzione di disc controller', in grado di supportare il filesystem FAT e di effettuare la decodifica al volo di file ADF (Amiga Disk Format).


     VGA-+-PS2  (joystick, ecc.)
         |
CPU <-> FPGA <-> Microcontroller <-> Flashmemory
         |
        RAM

Il prototipo venne mostrato[3] ad un meeting Amiga; nonostante qualche bug, è in grado di caricare la maggior parte dei programmi per Amiga. Van Weeren ha preferito il verilog al VHDL ed ha usato un PC con il software Webpack della Xilinx per lo sviluppo.

Qualche utente aveva suggerito la realizzazione di un modello di Minimig a forma di joystick che, analogamente al C64 D2TV, permettesse di giocare ai vecchi giochi e di eseguire software per Amiga. Ad ogni modo ne è stata progettata una versione in un singolo circuito stampato, che non necessita dello Starter Kit della Xilinx.

Scopi e caratteristiche[modifica | modifica sorgente]

  • Eseguire software specifico per Amiga, per convertire file verso formati e piattaforme più recenti.
  • Eseguire software disponibile soltanto su Amiga.
  • Eseguire videogiochi per Amiga.
  • Acquisire esperienza di sviluppo su FPGA usando il Verilog.
  • Creare qualcosa per la comunità Amiga.
  • Dimostrarne la fattibilità.
  • Permettere la creazione di nuovi giochi che utilizzino le nuove caratteristiche del Minimig (memoria più veloce, più sprite, più colori, ecc.), pur mantenendo la piena compatibilità con gli Amiga .

Hardware[modifica | modifica sorgente]

Piattaforma[modifica | modifica sorgente]

Alla rev1.0 del Minimig:

  • Xilinx Spartan-3 FPGA (XC3S400-4PQ208C) da 400k porte, usato all'82%.
  • Freescale MC68SEC000, 3,3V, a 7,09379 MHz. Tra le incompatibilità: non c'è il clock 'E', l'istruzione MOVE sr,<EA> è privilegiata e manca una vera istruzione che la sostituisca. Comunque, questo non sembra avere impatti su nessun programma.
  • I bus ChipRAM e FastRAM di Amiga sono riuniti in un unico bus sincrono cloccato a 7,09379 MHz.
  • 2 MB[4] di SRAM asincrona da 70 ns, organizzata come 2 banchi di 524288 parole di 16 bit.
  • MCU PIC 18LF252-I/SP[5] (Un'alternativa sarebbe l'Atmel AVR), che implementa un filesystem FAT16 e gestisce il caricamento della configurazione dell'FPGA e del kickstart. Simula un floppy per l'Amiga, codificando al volo da file .ADF.
  • Schede di memoria flash di tipo MMC per il caricamento della configurazione dell'FPGA, del kickstart e del software per il computer emulato.
  • LED per visualizzare l'attività del disco, l'alimentazione principale e l'accensione dell'Amiga. Come su un vero Amiga, quest'ultimo LED cambia intensità per mostrare lo stato del filtro audio, che però non è implementato.
  • Il convertitore digitale-analogico è costituito da 4 resistenze per ognuno dei colori rosso, verde, blu (4 bit/colore) e uscita sul connettore VGA.[6]
  • Audio ottenuto da un convertitore dithering sigma-delta a 8 bit con filtro di 2º ordine.
  • Alimentazione principale di +5V DC (~200 mA).

Porte[modifica | modifica sorgente]

  • 4 GPIO (General Purpose Input/Output) dall'FPGA
  • JTAG per la programmazione dei chip (TMS, TDI, TDO, TCK)
  • Una porta seriale RS232
  • 2 Joystick di tipo Atari 2600 DE9M.
  • Una porta DE15F VGA (può emettere segnali compatibili PAL per la connessione ad una SCART).
  • Uno slot MMC per schede di memoria flash.
  • Connettori PS/2 per Tastiera + Mouse
  • Porta audio jack da 3,5 mm
  • Porta d'alimentazione plug da 2,1mm, +5V DC.

Implementazione[modifica | modifica sorgente]

Problemi[modifica | modifica sorgente]

  • Per ragioni di copyright, è necessaria una copia del kickstart di un vero Amiga 500. Ne esiste anche una versione libera, la cui compatibilità non è però totale.[senza fonte]
  • Il motore degli sprite soffre ancora di bug.
  • Il firmware attuale gestisce solo una directory e nomi di file 8.3.

Tool di sviluppo usati[modifica | modifica sorgente]

  • Computer: Shuttle barebone, Prescott Pentium 4 3 GHz, 1 GiB RAM,
  • Software: Xilinx Webpack versione 6.3.03i (2007-07-22 9.1).

Futuro[modifica | modifica sorgente]

  • Gli sviluppi possibili includono una CPU più veloce, il chipset ECS, così come quello AGA, il supporto per gli hard disk, per ethernet, un mini core RISC per le funzioni avanzate di AROS, eccetera.
  • L'uso di un kickstart libero (e.g. AROS).[9]
  • Una versione dotata di interfaccia di rete eliminerebbe la necessità di usare più memorie flash.

Aggiornamenti[modifica | modifica sorgente]

Supporto Read/Write[modifica | modifica sorgente]

Il 3 marzo 2008 un nuovo core FPGA ha reso disponibile il supporto read/write, così come alcune migliorie grafiche.[10]

Scheda con controller ARM[modifica | modifica sorgente]

Il 22 dicembre 2008 è stata annunciata una scheda sostitutiva che si installa nello zoccolo del controller PIC (MCU). Questa scheda implementa un harddrive, 4 floppy disk e il supporto alla scrittura.[11] Il core FPGA è lo stesso per il firmware del nuovo ARM e del PIC, ma solo l'ARM è dotato di risorse sufficienti per supportare quattro drive; il PIC ne supporta solo due. L'aggiornamento consente anche di incrementare il clock della CPU da 7,09 a 49,63 MHz con una cache da zero waitstate di 4KB, ma richiede un core FPGA per l'implementazione effettiva (che funziona con i chip 68SEC000 da 16 MHz).[12]

Il supporto per l'harddrive è implementato come interfaccia parallel ATA GAYLE virtuale in stile A600/A1200. Con una piccola modifica hardware è possibile ottenere fino a 551 KB/s[12], altrimenti la velocità massima è di ~300 KB/s.[13]

2 MB di RAM aggiuntiva[modifica | modifica sorgente]

Saldando un altro gruppo di chip SRAM sul dorso quelli esistenti è possibile ottenere 4 MB di RAM complessivi[11].

Supporto AGA[modifica | modifica sorgente]

Il core del Minimig è stato aggiornato con il supporto AGA ed esteso per supportare almeno 50 MB di memoria Chip sul prototipo Replay progettato da Mike Johnson all'FPGA Arcade.[14][15][16]

Progetti simili[modifica | modifica sorgente]

Illuwatar, un progettista hardware privato in Svezia, ha implementato una versione Mini-ITX del Minimig su licenza Open Source design License. In questa versione, di dimensioni 17 cm x 17 cm, le porte di connessione sono state spostate sul retro della scheda conformemente alle specifiche Mini-ITX.

L'11-10-2006 Jens Schönfeld della Individual Computers ha rivelato che quest'ultima stava lavorando già da un anno ad un progetto commerciale di Amiga in un FPGA, chiamato "Clone A", simile al Minimig. A differenza del Minimig, il Clone-A è stato sviluppato da un team di tre persone, dotato di un potente analizzatore logico. Il sistema farà uso di cloni dei chip di Amiga (CIA, Paula, Gary, Agnus e Denise), mentre la CPU sarà l'originale di Motorola. I chip finali implementeranno anche l'architettura AGA ed una porta parallela, utilizzabile per i giochi a quattro giocatori.[17]

NatAmi è un progetto simile, avente l'obiettivo di creare un Amiga di fascia alta, ma più orientato alla compatibilità con l'architettura AGA e alle caratteristiche aggiuntive del successore dell'A4000. Le caratteristiche del NatAmi includono chipram veloce, design a 32 bit con velocità del bus più alte, PCI, Floppy, ATA MC68030 (nel prototipo) ed espansione RAM[18].

Note[modifica | modifica sorgente]

  1. ^ Minimig rev 1.0 PCB. 2006-06-11 amiga.org
  2. ^ Acube Systems Minimig
  3. ^ HCC Commodore GG meet. 060218 amigaroxx.zuurkool.com
  4. ^ 1 MB = 1024 kB; 1 KB = 1024 B
  5. ^ PIC18F252. 070715 microchip.com
  6. ^ Minimig schematics v1 Page3
  7. ^ 1 KB = 1024 B
  8. ^ Amiga.org - Photo Album. 070902 amiga.org
  9. ^ AROS Kickstart ROM Replacement bounty (Phase II)
  10. ^ Amiga.org - News. 090629 amiga.org
  11. ^ a b Amiga.org - Forum. 090629 amiga.org
  12. ^ a b youtube.com. 090629 youtube.com
  13. ^ Amiga.org - Forum. 090629 amiga.org
  14. ^ youtube.com. 100221 youtube.com
  15. ^ www.fpgaarcade.com.
  16. ^ Amiga.org - Forum. 100221 amiga.org
  17. ^ Individual Computers at CeBit, Clone-A presentation on 2007-03-31 2007-03-09 amigaworld.net
  18. ^ Natami.

Collegamenti esterni[modifica | modifica sorgente]