Anteprima
Vedrai una selezione di 21 pagine su 97
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 1 Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 2
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 6
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 11
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 16
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 21
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 26
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 31
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 36
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 41
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 46
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 51
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 56
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 61
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 66
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 71
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 76
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 81
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 86
Anteprima di 21 pagg. su 97.
Scarica il documento per vederlo tutto.
Progettazione circuiti digitali: libreria forme d'onda a dente di sega con FPGA e monitor CRT Pag. 91
1 su 97
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi
Lo scopo del mio progetto è stato di programmare un sistema FPGA in grado di visualizzare su un monitor CRT una piccola libreria di forme d’onda a dente di sega a varia frequenza, per le quali fosse possibile modulare fase e ampiezza. A questo scopo ho utilizzato la scheda DE2 della Altera, equipaggiata con un elemento programmabile FPGA chiamato “Cyclone II”, e con una serie di dispositivi periferici. Per realizzare i blocchi della rete logica da programmare in hardware, via canale USB-blaster, sull’elemento programmabile FPGA, ho utilizzato l’ambiente di sviluppo Quartus II, versione 8.1, sempre della Altera.
E. Molinari, Gestione di una libreria di forme d'onda a dente di sega su Altera-DE2 board e visualizzazione VGA
Estratto del documento

PROGETTAZIONE CIRCUITI DIGITALI

AA 2011/2012

Gestione di una libreria di forme d’onda a

dente di sega su Altera-DE2 board e

visualizzazione VGA

Docente: Roberto Saletti

Autore: Enrico Molinari

Indice

--------------------------------------------------------

1) Presentazione del progetto “libreria di forme d’onda a dente di

sega”………………………………………………………………………………………………..Pag. 1

1.1) Obiettivo del progetto e ambiente di lavoro……………………………..Pag. 1

1.2) Breve descrizione dei blocchi e funzionamento del sistema………Pag. 4

2) Selezione della frequenza del dente di sega……………………………….Pag. 7

3) Modulazione della fase delle forme d’onda a dente di sega…….Pag. 17

4) Gestione della memoria SRAM………………………………………………...Pag. 28

4.1) Struttura della SRAM……………………………………………………………….Pag. 28

4.2) Fase di scrittura dati: rappresentazione delle forme d’onda in

memoria.……………………………………………………………………………………….Pag. 30

4.3) Fase di scrittura dati: temporizzazioni dei segnali di controllo della

SRAM……………………………………………………………………………………………..Pag. 32

4.4) Fase di lettura dati: interazione fra VGA_MODULATOR e

memoryMANAGER…………………………………………………………………………Pag. 50

5) Modulazione di ampiezza………………………………………………………….Pag. 59

5.1) Obbiettivo del sistema…………………………………………………………….Pag. 59

5.2) Realizzazione logica…………………………………………………………………Pag. 62

6) Interfacciamento con monitor CRT………………………………………..….Pag. 75

6.1) Standard VGA………………………………………………………………………….Pag. 75

6.2) Componentistica on-board per interfacciamento XGA…………….Pag. 78

6.3) Temporizzazioni di segnali RGB da FPGA per controllo XGA del

monitor………………………………………………………………………………….………Pag. 83

1

1) Presentazione del progetto

“libreria di forme d’onda a dente di sega”

1.1) Obiettivo del progetto e ambiente di lavoro

Lo scopo del mio progetto è stato di programmare un sistema FPGA in grado di visualizzare su un

monitor CRT una piccola libreria di forme d’onda a dente di sega a varia frequenza, per le quali

fosse possibile modulare fase e ampiezza.

Al fine di conseguire tale obiettivo ho utilizzato la scheda DE2 della Altera, equipaggiata con un

elemento programmabile FPGA chiamato “Cyclone II”, modello EP2C35F672C6, e con una serie di

dispositivi periferici (periferici rispetto all’elemento programmabile su cui programmare la rete

logica implementante l’intelligenza del sistema), come memorie, convertitori analogico -> digitale

e digitale -> analogico, tastiere, ecc…

Per realizzare i blocchi della rete logica da programmare in hardware, via canale USB-blaster,

sull’elemento programmabile FPGA, ho utilizzato l’ambiente di sviluppo Quartus II, versione 8.1,

sempre della Altera. Ho descritto le funzioni logiche implementanti i vari blocchi della rete per

mezzo del codice Verilog di descrizione dell’hardware.

Ho usato, oltre chiaramente all’FPGA la cui programmazione realizza l’intelligenza che pilota il

resto del sistema, alcuni dispositivi periferici, utilizzati appunto dal Cyclone II, una volta

programmato, durante il suo funzionamento. I dispositivi, montati sulla DE2, che ho utilizzato

sono:

 7 commutatori switch (SW[6]…SW[0]) e i 4 pushbuttons (KEY[3]…KEY[0]) in qualità di

primo stadio per l’acquisizione di dati provenienti dall’esterno, ossia per l’acquisizione

delle impostazioni settate dall’utente della scheda ai fini della modulazione di frequenza,

fase e ampiezza del dente di sega da visualizzare

 L’oscillatore quarzato a 50 MHz come sorgente dalla quale trarre il segnale di clock per la

sincronizzazione di tutti i blocchi del sistema programmato

 La memoria SRAM IS61LV25616 della ISSI a 512 Mbytes, organizzati secondo una struttura

a 256 K locazioni, ciascuna di 16 bits (2 bytes), per l’immagazzinamento dei dati portatori

dell’informazione relativa alle varie forme d’onda visualizzabili

 Il convertitore video digitale->analogico a 10 bits, a 3 canali paralleli (3 DACs a 10 bits),

modello ADV7123 della Analog Devices, per il pilotaggio di un monitor a raggi catodici

secondo lo standard analogico XGA 1024x768@60Hz

 Il connettore VGA D-SUB a 16 PINs, pilotato sia dai 3 DACs di cui sopra (i 3 colori primari)

che direttamente dall’FPGA (sincronismo orizzontale e verticale), da collegare al monitor

CRT

 Il canale USB-blaster attraverso il quale i programming files (la “mappa dei fusibili”, solo

per rendere l’idea) generati dall’ambiente di sviluppo dopo il compilamento del codice

2

sorgente verilog ed il successivo “placing & routing” del codice oggetto, vengono

programmati sul Cyclone II

Riporto qui di seguito una figura descrittiva dell’ambiente complessivo nel quale mi sono trovato

ad operare. Fig. 1

L’ambiente complessivo nel quale mi sono trovato ad operare: personal computer host sul quale

gira il software Altera-Quartus II di sviluppo per FPGA, la scheda DE2 della Altera, un monitor CRT

per la visualizzazione delle forme d’onda richieste dall’utente

3

Qui in basso invece riporto lo schematic rappresentativo del top-level file

“DENTE_SEGA_system.bdf” (Block Diagram File), raffigurante i blocchi logici e le interconnessioni

implementanti la rete logica, puramente combinatoria, da programmare sull’FPGA. Il

funzionamento di questa rete e la sua interazione con le periferiche montate sulla scheda DE2,

oltre che con il terminale video, determinano la visualizzazione delle forme d’onda a dente di sega

della libreria. 4

Fig. 2

Schematic rappresentativo del top-level file “DENTE_SEGA_system.bdf” raffigurante i blocchi logici

e le interconnessioni implementanti l’intelligenza da programmare sull’FPGA, che piloterà i

dispositivi periferici (sia il terminale video che i dispositivi a bordo della scheda) ai fini della

visualizzazione del dente di sega richiesto dall’utente

1.2) Breve descrizione dei blocchi e funzionamento del sistema

L’utente, premendo un qualunque pushbutton (KEY[3]…KEY[0]), può richiedere la visualizzazione

di una particolare frequenza del dente di sega. Premendo KEY[0] si richiede la visualizzazione del

dente di sega “f0_4” avente un periodo pari a circa un quarto della larghezza dello schermo,

premendo invece KEY[1] si richiede la visualizzazione del dente di sega “f0_2” avente un periodo

pari a circa metà della larghezza dello schermo, premendo KEY[2] si richiede la visualizzazione del

dente di sega “f0_half” avente semi-periodo pari alla larghezza dello schermo, mentre premendo

KEY[3] si richiede la visualizzazione del dente di sega “f0_quarter” avente un quarto di periodo pari

alla larghezza dello schermo (di fatto una rampa). Se l’utente non preme alcun pushbutton oppure

imposta una combinazione qualunque diversa da quelle descritte sopra, viene visualizzato il dente

di sega di default “f0”, avente periodo pari alla larghezza dello schermo. Il blocco C serve al

sistema ad acquisire l’informazione circa la frequenza richiesta dall’utente e ad imporre ai blocchi

A e B, per mezzo dell’accensione del corretto segnale di enable, fra i 5 disponibili in uscita (gli altri

4 rimarranno spenti), il giusto comportamento da seguire, al fine della corretta visualizzazione su

monitor.

L’utente, commutando SW[6], impone se la fase della forma d’onda da visualizzare deve

incrementare oppure decrementare lungo l’asse, mentre commutando SW[5], ad ogni switching

DOWN -> UP (allontanamento della levetta del commutatore dal bordo della scheda), l’utente

imposta l’entità, il modulo, in termini di numero di pixels, di tale sfasamento. Lo stato DOWN

oppure UP di SW[6] impone al blocco E, che è un contatore, il senso del conteggio, ovvero se deve

eseguire un up-counting oppure un down-counting, mentre le commutazioni DOWN -> UP di

SW[5] costituiscono gli eventi contati da E, di volta in volta incrementanti oppure decrementanti il

numero memorizzato, all’uscita del contatore E, in corrispondenza dell’evento precedente. Il

blocco E eroga un numero, un valore, il quale attraversando il “macro” flip-flop D positive edge

triggered, ossia il blocco F, per essere sincronizzato con il clock di sistema, va in ingresso al blocco

A, così che questo possa visualizzare lo sfasamento, in termini di pixels, rappresentato proprio da

quel valore “contato” da E.

L’utente, commutando opportunamente i 5 commutatori SW[4]…SW[0], può richiedere il

progressivo incremento oppure il decremento dell’ampiezza del dente di sega f0_4. Il dato

rappresentativo dell’informazione circa l’entità dello “stiramento”, lungo l’asse delle ordinate,

richiesto dall’utente, viene erogato dal blocco D, che funge appunto da selezionatore (abilitatore)

di ampiezza, e inviato in ingresso al blocco A per la visualizzazione.

5

Il blocco B serve alla scrittura in memoria SRAM, montata sulla scheda DE2, dell’informazione

relativa alle forme d’onda delle 5 frequenze di dente di sega che devono costituire la libreria. B

accede (indirizzandole) alle locazioni della SRAM, scrive, attraverso il buffer/bus tri-state G, reso

logicamente trasparente, gli opportuni dati della forma d’onda appena selezionata dall’utente

mediante i 4 pushbuttons, dopodiché alla fine della scrittura dei dati della forma d’onda richiesta

manda in alta impedenza G. Su sollecitazione del blocco A, B accede alle locazioni, prima accedute

per la scrittura, anche in fase di lettura, per consentire al blocco A di poter valutare in

corrispondenza di ciascun fronte positivo del clock di sistema, su uno dei suoi ingressi, il dato

memorizzato di volta in volta nella giusta locazione, al fine della visualizzazione della forma d’onda

alla quale quei dati, puntati in SRAM da B, si riferiscono.

Il blocco A implementa la funzionalità responsabile del corretto pilotaggio del convertitore digitale

-> analogico e del connettore D-SUB VGA. A, per mezzo di 2 suoi segnali di uscita, entranti nel

blocco B, impone a quest’ultimo l’indirizzamento, di volta in volta, cioè ad ogni fronte in salita del

clock di sistema, della giusta locazione SRAM, oltre al senso, crescente o decrescente, con il quale

B, che gestisce direttamente la memoria, deve scorrere le locazioni di quest’ultima. Questo duplice

verso di scorrimento della SRAM, da parte di B, richiedibile da A in fase di lettura dei dati, ossia in

fase di stampa su monitor, è utile per la visualizzazione di semionde positive e negative,

risparmiando metà del numero di locazioni SRAM che altrimenti sarebbero state necessarie se non

avessi previsto tale sistema di indirizzamento. In tal modo B punta sempre la corretta locazione

SRAM, pertanto A, su uno dei suoi ingresso, quello cioè che lo mette in comunicazione con la

SRAM, trova sempre, ad ogni fronte positivo del clock di sistema, il giusto dato. Questo dato viene

elaborato da A, così da visualizzare correttamente il dente di sega richiesto dall’utente. A pertanto

deve generare ad ogni colpo di clock le 3 parole digitali che, una volta decodificate in analogico dai

3 DACs della Analog Devices, costituiranno i segnali in corrente relativi ai 3 colori primari RGB

necessari alla corretta colorazione di ciascun pixel dello schermo. Inoltre A impone, direttamente

sul connettore VGA, ossia direttamente sul monitor CRT, i segnali di sincronizzazione responsabili

della deflessione orizzontale e verticale del pennello elettronico all’interno del tubo a raggi

catodici.

Il blocco H è un PLL che accetta in ingresso il clock a 50 MHz proveniente da uno dei 2 oscillatori al

quarzo montati sulla scheda DE2 e genera, in uscita, un clock alla frequenza desiderata (non tutti i

rapporti di conversione sono possibili), che nel mio caso è di 65 MHz (rapporto 13/10 realizzabile),

essendo tale frequenza di clock necessaria in ingresso al convertitore digitale -> analogico: ho

pertanto piegato tutta la tempistica di sincronismo dell’intero sistema programmato a questa

necessità del DAC video.

Qui di seguito riporto un diagramma di flusso descrivente il livello fondamentale di funzionamento

della rete logica che ho programmato sul Cyclone II, ovvero quella parte di logica che gestisce la

visualizzazione della frequenza di dente di sega selezionata dall’utente.

6

7

Fig. 3

Diagramma di flusso descrivente il livello fondamentale di funzionamento della rete logica, ovvero

quella parte di logica che gestisce la visualizzazione della frequenza di dente di sega selezionata

dall’utente

2) Selezione della frequenza del dente di sega

La scheda DE2 dispone di una tastiera formata da 4 tasti di tipo “pushbutton”, che io ho utilizzato

per consentire all’utente la scelta della frequenza di dente di sega che desidera visualizzare sul

monitor CRT. 8

Fig. 4

Componentistica costituente il primo stadio di acquisizione dati per il selezionatore di frequenze di

dente di sega

La pressione di ciascun pushbutton da parte dell’utente provoca la cortocircuitazione fra la lamella

metallica equipotenziale 1-2 collegata a massa e l’altra lamella equipotenziale 3-4 collegata,

tramite una resistenza di pull-up di valore molto elevato (100KΩ), all’alimentazione Vcc = 3,3 V.

Infatti prima della pressione del tasto di fatto non scorre corrente lungo la resistenza di pull-up,

quindi non vi è caduta di tensione ai suoi terminali, quindi la lamella collegata al circuito di

debouncing è di fatto cortocircuitata a Vcc. In seguito alla pressione del tasto, si crea il corto fra le

2 lamelle, la corrente può attraversare il corto Vcc -> GND appena resosi disponibile, si viene a

creare una forte caduta di tensione ai terminali della resistenza di pull-up (il suo valore elevato

sventa il pericolo di conflitto logico 1 vs 0 sulla lamella 3-4 all’atto della pressione del tasto),

pertanto sulla lamella 3-4 va ad insistere il valore logico basso (0 V). Il segnale in tensione

costituente il potenziale della lamella 3-4 passa attraverso una squadra RC e successivamente

attraverso uno dei 4 canali utilizzati (sugli 8 disponibili) di bufferaggio tri-state messi a disposizione

dal tranceiver 74HC245, della Philips Semiconductors, così da ricevere un’azione di filtraggio

passa-basso e dunque di debouncing, cioè di stabilizzazione del proprio transitorio 1 -> 0, affetto

(come del resto il transitorio 0 -> 1 di rilascio del tasto) dal noto problema del ringing. Ciascuno

9

dei 4 canali di acquisizione dati da tastiera di pushbuttons va poi ad insistere direttamente sul

corrispondente PIN del Cyclone II. Fig. 5

Segnale in ingresso al circuito di debouncing e corrispondente segnale debounced in ingresso

all’elemento programmabile FPGA

Dallo schematic del file “DENTE_SEGA_system.bdf” estraiamo la parte coinvolta nell’acquisizione e

successiva gestione dei comandi di selezione delle frequenze di dente di sega.

10

Fig. 6

Porzione dello schematic del file “DENTE_SEGA_system.bdf” coinvolta nell’acquisizione e

successiva gestione dei comandi di selezione delle frequenze di dente di sega

La situazione di default è quella che vede i 4 PINs di ingresso al blocco abilitatoreFreq, cioè il

blocco adibito alla selezione della frequenza da visualizzare, tirati su a Vcc (pulled-up), situazione

che si verifica quando l’utente non tiene premuto alcun tasto. La forma d’onda che viene

visualizzata su monitor è quella di default f0, avente periodo pari all’intera larghezza dello

schermo. L’utente può arbitrariamente premere uno qualunque dei 4 pushbuttons per richiedere

la visualizzazione della frequenza corrispondente. Tale pressione è ovviamente asincrona, cioè non

allineata temporalmente con il fronte positivo del clock di sistema, il q

Dettagli
Publisher
97 pagine