cip060 ha scritto:Ragazzi un 68000 e' un 68000 CHIP fisico
FPGA e' un chip fisico
se alla fine della programmazione ha a tutti gli effetti tutte le funzioni di un 68000 come lo conosciamo noi non sara' MAI un 68k e pur sempre un chip che lo emula anche se ha al 100% tutte le funzioni dai non prendiamoci in giro!!
In parole povere
fai fare a fpga un 68k non lo fa' FISICAMENTE MA LO FA EMULANDOLO NEL MIGLIORE DEI MODI!
Alla fine e' quello che fa winuae usa un x86 per emulare un 68 k solo che
winuae e' un programma/emulatore e tina/fpga ha l'emulatore programmato dentro fpga!!
non giriamoci tanto intorno e non prendeci tanto in giro
In ogni caso non vedo l'ora di vedere qualcosa di pronto da provare eventualmente
complimenti
Claudio ha spiegato benissimo tutto, ma approfitto del tuo messaggio perché, a mio avviso, è risolutivo per la questione espressa: hai fatto un esempio che dimostrerà che proprio di emulazione NON si può parlare. Grazie!

Quando parliamo di emulazione vuol dire che c'è un sistema X che ha una sua precisa identità (detto in altri termini: "funziona in un certo modo") che viene usato per emulare un sistema Y che ha sua, specifica, identità ("funziona in un ALTRO modo").
Con WinUAE abbiamo un sistema X = x86 che emula un sistema Y = 68000. X e Y hanno una loro precisa, assolutamente diversa, identità.
Ce diciamo che l'FPGA "emula" un qualunque sistema Y (nello specifico, un Amiga), vuol dire che ha una sua identità X. Quale sarebbe allora? In realtà in questo caso non c'è nessuna identità. X non esiste.
L'FPGA è soltanto un insieme di transistor che devono essere collegati opportunamente per FUNZIONARE COME un sistema che vogliamo. Nello specifico: Y = Amiga.
Come funziona l'FPGA? Esattamente come un 68000, se vogliamo. Spiccicato.
Che significa questo? Che per farlo funzionare come un 68000 noi dobbiamo fare ESATTAMENTE lo stesso lavoro dei progettisti del 68000.
Quindi prendere un po' di transistor e usarli per implementare i suoi registri D0-D7, A0-A7, SR. Prendere un po' di transistor per implementare il decoder del istruzioni. Prendere dei transistor per realizzare l'ALU che fa i calcoli. Prendere dei transistor per realizzare il bus verso la memoria. Ecc. ecc. ecc.
Qual è la differenza rispetto al passato? Perché gli ingegneri che hanno realizzato il 68000 non hanno lavorato come si fa con gli FPGA. E in effetti all'epoca non esistevano né VHDL né Verilog, che sono i linguaggi più usati per programmare gli FPGA, ma non solo: vengono usati nel campo della microelettronica per progettare di tutto, comprese le CPU moderne.
Pensare di sviluppare CPU alla vecchia maniera sarebbe stupido perché bisognerebbe impiegare una quantità di tempo abnorme. Oggi, poi, le CPU sono MOLTO più complicate, e arrivano a integrare anche MILIARDI di transistor. Quindi quella strada non è più fattibile, e si usano VHDL e Verilog.
Qual è la differenza fra una CPU disegnata esattamente così e una realizzata per un'FPGA? Che, come già detto, nel primo caso il VHDL o il Verilog hanno prodotto un design estremamente ottimizzato, dove i transistor vengono impiegati esattamente per uno e un solo scopo preciso. Una volta passato da VHDL/Verilog al silicio, non si torna indietro.
Con un FPGA, invece, parecchi transistor sono impiegati per consentire la realizzazione di blocchi logici che consentono di definire in fase esecuzione una certa logica che va soddisfatta. I registri vanno implementati sempre con transistor, ma se ne sprecano parecchi rispetto a una CPU con design ormai "fisso". Se devo realizzare un decoder, userò tanti transistor in più rispetto a una CPU con design "fisso", che ha lo schema di codifica ottimizzato, ecc.
Ma in ogni caso io progettista di CPU devo fare lo STESSO lavoro, sia che la mia CPU la devo "fissare" in silicio sia che debba funzionare su un FPGA. E funzionerà allo STESSO modo in entrambi i casi.
Infatti se poteste vedere un diagramma dei segnali della CPU, vedreste ciclo di clock per ciclo di clock lo stesso spettacolo "di massima". Ovviamente internamente la CPU "fissa" avrebbe meno segnali e meno porte logiche/transistor per fare le stesse cose, mentre l'FPGA ne impiegherebbe di più, ma di "vedrebbero" sostanzialmente le stesse operazioni.
Spero sia chiaro una volta per tutte, e perché parlare di emulazione non si può, visto che non c'è niente di emulato.