Il Commodore 65 è un prototipo di personal computer che Commodore avrebbe dovuto mettere in commercio quale successore del Commodore 64. Purtroppo la sua realizzazione si fermò appunto allo stadio prototipale. Racconterò l'affascinante storia del suo sviluppo ed il perchè della soppressione del progetto ormai ad un passo dalla immissione in commercio.
This is a basic implementation of the famous game Arkanoid running on a FPGA that I've developed for the final project of Electronic II FPGA course at the University of Trieste.
The development board I've used is TERASIC DE1 with Cyclone II FPGA by Altera.
Features:
- 6 different angles of impact for the sphere.
- The ball striking a brick causes the brick to disappear.
- When all the bricks are gone, the player has won.
- Some bricks are indestructible.
- The Player has 3 lives to win the game.
- Start/Pause and restart game button.
For More Informations and for the english version look at this: http://www.vuolsavest.net/t3o/arkanoidFpga/
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...Daniele Ferla
L’obiettivo di questa tesi (a cura di Daniele Ferla) è la realizzazione di una componente ad alto livello in grado di gestire la visualizzazione a video di ambienti 3D esterni. Si è quindi dovuto ricorrere alla creazione di quello che in gergo viene definito “motore grafico” e cioè una serie di classi, funzioni e quant’altro possa essere utile ad un programmatore che voglia avvicinarsi allo sviluppo di un videogioco e di una applicazione grafica in generale, senza essere a conoscenza di tutte le regole e le formule che ne derivano. Il motore quindi si occupa di tutte le metodologie inerenti il rendering della scena e la sua gestione.
Il progetto del motore grafico denominato Desdinova Engine risale a qualche hanno fa, precisamente nel maggio del 2000 quando venne iniziato il suo sviluppo in Visual C++ tramite le librerie OpenGL, in quel periodo molto in auge e utilizzate da parecchi produttori di grafica 3D. Con il passare del tempo però queste librerie hanno perduto il loro “fascino” anche perché poco aggiornate e utilizzate solo in ambiti specifici (rimangono comunque le librerie cross-platform più usate) e quindi la realizzazione del motore grafico si è diretta verso l’utilizzo delle più performanti, documentate e semplici Microsoft DirectX nella versione attuale 9.0c
Seppur a livello molto alto, le librerie della multinazionale di Redmond, non offrono tutto il necessario per la realizzazione di un prodotto finito semplice ed intuitivo ma, anzi, risultano essere “aperte” a nuove ottimizzazioni e utilizzi. Per questo, dunque, in questa tesi è stata sviluppata una libreria ancora più ad alto livello, avente come base le DirectX, ma finalizzate all’utilizzo più intuitivo e semplice del programmatore quale utente finale.
La seguente tesi (in bozza) non è mai stata pubblicata e non è un documento valido a fini pubblici in quanto non è mai stata discussa e valutata dalla commissione accademica.
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Ionela
I dispositivi JS16 sono compatibili con il software della famiglia JM, che fornisce un percorso di migrazione (migration path) diretto verso sistemi a prestazioni più alte, inclusi gli USB OTG e prestazione a 32-bit con ColdFire.
In queste slide spiegherò cos'è una scheda video e illustrerò tutte le tipologie analizzandone le caratteristiche in maniera semplice e concisa.
Consiglio di guardare il video su YouTube nella quale spiego usando le slide.
Retroprogramming - Programmare oggi il C64, by Giovanni SimottiCodemotion
Come sviluppare oggi software per i vecchi computer e console a 8 bit. Panoramica del linguaggio assembler e del funzionamento della CPU. Differenze tra Z80 e 6502. L'importanza del timing video. Gli sprite. Dettaglio dell'hardware del C64 e tecniche di programmazione a esso relative.
1. SCHEDA VIDEO
In informatica ed elettronica una scheda video[1] è un componente hardware del computer, sotto
forma di scheda elettronica, che ha lo scopo di elaborazione del segnale video ovvero generare, a
partire da un segnale elettrico in input dal processore, un determinato segnale elettrico in output che
possa essere poi inviato in input a video (display o monitor) per essere trasdotto da quest'ultimo in
segnale ottico visivo e mostrato all'utente.
A seconda del tipo di computer questo dispositivo può essere più o meno potente: i primi modelli di
scheda video potevano visualizzare solo testo; successivamente si sono diffuse anche schede video
in grado di mostrare output grafici (immagini non testuali) e, recentemente, anche modelli
tridimensionali texturizzati in movimento e in tempo reale. Questi ultimi tipi di scheda provvedono
anche ad elaborare e modificare l'immagine nella propria memoria interna, mentre le schede 2D
possono mostrare immagini 3D solo con l'aiuto della CPU che deve eseguire da sola tutti i calcoli
necessari.
Immagine di una scheda video ATI Radeon HD 4890.
Tipologia e architettura delle schede video:
Una tipica scheda video contiene un integrato grafico (o più di uno) che gestisce una certa quantità
di RAM dedicata a memorizzare i dati grafici da visualizzare e che risiede fisicamente sulla scheda
stessa. Le schede video costruite per i PC IBM e compatibili contengono anche una ROM con un
driver molto semplice (chiamato firmware che è aggiornabile nelle moderne schede video), usato
dal BIOS per il bootstrap.
Il funzionamento di una scheda video è, in linea di massima, molto semplice: ogni locazione di
RAM grafica contiene il colore di un pixel dello schermo, o di un carattere se la scheda sta
visualizzando solo testo; il chip grafico si limita a leggere in sequenza le locazioni necessarie (se sta
lavorando in modo testo, ogni locazione viene elaborata da un generatore di caratteri) e a pilotare un
convertitore digitale-analogico, detto RAMDAC, che genera il segnale video che sarà visualizzato
dal monitor. Dalla quantità di RAM grafica equipaggiata nella scheda e dalla velocità (frequenza)
massima del suo RAMDAC dipendono la risoluzione massima raggiungibile e il numero di colori
contemporaneamente visibili.
Tutte le schede video possono visualizzare anche grafica tridimensionale (al limite anche quelle con
sola modalità testo, se si accetta una rappresentazione ASCII art), ma senza funzioni apposite di
accelerazione. L'intero lavoro di calcolo deve essere svolto, pixel per pixel, dalla CPU principale
del computer, che viene spesso completamente assorbita da questo compito: una scheda grafica non
tridimensionale si limita in pratica a visualizzare una serie di immagini bidimensionali che le
vengono inviate dal sistema.
2. Modo testo:
Tutte le schede video dispongono almeno del modo di funzionamento detto modalità testo o a
caratteri: in questa modalità lo schermo del computer è organizzato come una griglia di caselle
rettangolari in ciascuna delle quali viene scritto un carattere tipografico, di stile prefissato da un
generatore di caratteri interno alla scheda (generalmente una sezione del chip video che si occupa di
leggere la descrizione dei vari caratteri richiesti dalla ROM o da una parte della RAM video). Per
esempio, nei PC IBM originali il modo testo era di 80 colonne per 25 righe. Una parte della RAM
della scheda viene poi usata per memorizzare il codice (in genere in codice ASCII) di un carattere
tipografico.
In questa modalità, per far comparire sullo schermo la scritta "scheda video" è sufficiente che il
calcolatore scriva i dodici codici ASCII delle lettere componenti (115, 99, 104, 101, 100, 97, 32,
118, 105, 100, 101, 111) in dodici locazioni della memoria RAM della scheda video: sarà poi il
generatore di caratteri del chip grafico a tradurre i codici in serie di pixel e fare tutto il resto.
Modalità grafica:
Quasi tutte le schede video (con pochissime eccezioni) possono poi operare anche in modalità
grafica, vale a dire senza avvalersi del generatore di caratteri interno ma specificando l'immagine
pixel per pixel. In questa modalità il colore di ogni pixel è specificato singolarmente, in genere
usando una o più locazioni di memoria video. Questa modalità ha bisogno di molta più memoria
RAM del modo testo: una schermata in modo testo occupa generalmente da 2 a 6 KB di RAM
video, mentre in modalità grafica, a seconda della risoluzione in pixel e della quantità di colori usati
contemporaneamente serve da 10 a 10000 volte tanto. Il modo di rappresentare del singolo pixel in
memoria video varia molto a seconda del tipo di approccio usato dal costruttore e dalla particolare
modalità grafica: in genere però si adotta una corrispondenza di tipo bitmap, cioè a mappa di bit.
Schede video con accelerazione 2D:
Già da un po' di tempo il chip grafico è in grado di eseguire alcune funzioni grafiche in modo
autonomo, senza che il processore principale debba intervenire: le schede grafiche con questi chip
sono dette 2D accelerate, perché possono svolgere da sole una parte del lavoro di disegno che
altrimenti spetterebbe al processore. Le operazioni più comuni da implementare in hardware sono il
tracciamento di linee, di archi e di forme geometriche semplici (rettangoli, poligoni, cerchi, ellissi) e
il bit blitting, cioè lo spostamento da una parte all'altra dell'immagine di blocchi di pixel. È in
genere presente anche un generatore di caratteri evoluto, capace di funzionare anche in modalità
grafica e di visualizzare contemporaneamente caratteri di molti font e grandezze diverse
Schede video con accelerazione 3D
Le schede video con capacità grafiche tridimensionali (o 3D accelerate) hanno le stesse capacità
bidimensionali delle precedenti, e in più ne hanno una completamente nuova, la modalità 3D
appunto, in cui i pixel dell'immagine da visualizzare vengono calcolati dalla GPU (Graphics
3. Processing Unit), fotogramma per fotogramma, partendo da una serie di dati geometrici forniti dalla
CPU..
In questa modalità, la RAM video contiene una serie di sottoimmagini, le texture. Ciascuna di
queste viene associata ad una particolare superficie bidimensionale di un modello tridimensionale di
cui ne costituisce la "pelle": volendo, si possono considerare le varie texture come delle carte da
parati elettroniche. Per ogni fotogramma (frame) da visualizzare in modalità 3D, la scheda video
riceve dal processore una serie di punti geometrici (vertici) che specificano delle superfici in uno
spazio tridimensionale con l'indicazione di quali texture applicare alle varie superfici: la GPU si
occupa di calcolare, a partire dai dati ricevuti, se la particolare superficie sia visibile o no, e, se
visibile, la sua forma in due dimensioni (coordinate schermo); poi si occupa di applicare la (o le)
texture indicate. Il valore di ogni pixel viene quindi calcolato a partire da quali e quanti texel (i
pixel delle texture) sono contenuti in esso.
Per fare tutto questo, le schede video 3D accelerate sono equipaggiate con una grande quantità di
RAM, e ricorrono in modo massiccio al calcolo parallelo: l'integrato principale è un vero e proprio
processore e viene detto GPU (anche programmabile a piacere, a partire dalla serie 6800GT di
Nvidia), composto internamente di una serie di unità identiche (dette pipeline) operanti in parallelo,
ciascuna su una diversa serie di pixel alla volta; poiché in grafica non vale il principio di località
non è possibile usare una memoria cache come nella CPU principale, e la comunicazione con la
RAM grafica deve essere estremamente veloce: questo rende necessario adottare sia una frequenza
di lavoro della RAM grafica molto più alta di quella della memoria principale, sia l'adozione di bus
RAM-GPU molto ampi (128, 256 bit o anche 512 bit). Per lo stesso motivo, far funzionare la GPU
a frequenze molto più elevate della RAM grafica, adottando un moltiplicatore di frequenza come
per la CPU principale, non porterebbe nessun beneficio prestazionale.
Ulteriori funzioni di accelerazione, utili per aumentare il livello di realismo delle immagini
calcolate, sono il calcolo in hardware delle luci incidenti (Transform and Lighting o T&L), i pixel
shader, il vertex shader e il rendering (rasterizzazione), il filtro anisotropico e il filtro antialiasing.
Con questa nuova architettura le schede video 3D accelerate sollevano la CPU da tutti i calcoli
necessari alla visualizzazione, lasciandole solo il compito di aggiornare la geometria dell'immagine
(calcolo di spigoli e vertici, di rotazioni, intersezioni, animazioni ecc.).
Le prime schede video accelerate 3D destinate al grande pubblico (prima di allora erano molto
costose e riservate a professionisti) sono state le famose Voodoo della 3dfx, la prima industria a
produrre schede video con capacità 3D a prezzi popolari, assorbita nel 2001 dalla concorrente
Nvidia.
Uscite video
Le connessioni più diffuse tra la scheda video e il monitor (o televisore) sono:
Video Graphics Array (VGA): standard analogico introdotto nel 1987 e progettato per monitor
CRT, ma utilizzato, per compatibilità, anche da diversi monitor LCD, assieme all'interfaccia DVI;
ha diversi problemi, come il rumore elettrico, la distorsione dell'immagine e alcuni errori nella
4. valutazione dei pixel.
Digital Visual Interface (DVI): introdotto nei monitor LCD, viene usato anche da TV al plasma e
videoproiettori. Risolve i problemi del SVGA facendo corrispondere a ogni pixel dell'output un
pixel dello schermo, in quanto ne riconosce la risoluzione nativa.
S-Video: utilizzato per la connessione a TV, lettori DVD, proiettori e videoregistratori.
High-Definition Multimedia Interface (HDMI): rilasciato nel 2003, questo standard, che supporta
le risoluzioni ad alta definizione, ha come obiettivo la sostituzione di tutti gli altri standard.
DisplayPort: rilasciato nel 2006, si presenta come concorrente dell HDMI. È usato sia per
connessioni con monitor che con sistemi home theatre.
Altre uscite video (ormai obsolete) sono:
Video composito: uscita analogica con risoluzione molto bassa, che fa uso di un connettore RCA
Video a componenti: ha tre cavi, ognuno con un connettore RCA, utilizzato per i proiettori.
Interfaccia di connessione con la scheda madre
In ordine cronologico, i sistemi di connessione con la scheda madre sono stati:
ISA: rilasciata nel 1981 da IBM ed utilizzata negli anni '80
MCA: rilasciata, sempre da IBM nel 1987, incompatibile con le schede madri precedenti
EISA: rilasciata nel 1988 per competere con IBM, retrocompatibile
VESA: estensione dell'ISA
PCI: questo standard ha sostituito le altre interfacce nel 1993. Il PCI permette una connettività
dinamica delle periferiche e non richiede l'utilizzo di jumper per la configurazione.
AGP: prima interfaccia dedicata esclusivamente alle schede grafiche, introdotta nel 1997 in
seguito alla crescita del mercato di schede video con accelerazione 3D. È diventata l'interfaccia
standard per le schede video per i numerosi vantaggi che presentava ed è stata più volte migliorata
(AGP 2x, 4x, 8x)
PCI Express: evoluzione del bus PCI rilasciata nel 2004, ha sostituito l'AGP come interfaccia di
connessione delle schede grafiche in quanto offre una larghezza di banda maggiore e maggiore
potenza erogata.
Sono state rilasciate[2], nel gennaio 2007, le specifiche PCI Express 2.0, che incrementa le
prestazioni del PCI Express in termini di larghezza di banda e potenza erogata, per sopperire alle
richieste sempre maggiori delle schede video. Il primo chipset a supportarle fu l'X38 di Intel,
rilasciato nel 2007.