+ All Categories
Home > Documents > Caso di studio 1: Progetto di un sistema su un...

Caso di studio 1: Progetto di un sistema su un...

Date post: 27-Jul-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
23
Caso di studio 1: Progetto di un sistema su un chip 1 Caso di studio 1: Progetto di un sistema su un chip In questo caso di studio Progettazione di un sistema per la realizzazione su un chip FPGA Come usare strumenti CAD Come usare moduli parametrici Cosa considerare tipicamente nella progettazione Nel Capitolo 10 si ` e discusso l’uso di microcontrollori nei sistemi embed- ded. In un’applicazione embedded, ` e desiderabile usare quanti meno chip sia possibile. Idealmente, un singolo chip potrebbe realizzare l’intero sistema. Il termine sistema su un singolo chip (SOC) ` e in uso per designare questa tecnologia. In applicazioni semplici, alcuni dei microcontrollori disponibi- li in commercio possono realizzare tutte le funzioni necessarie. Questo ` e improbabile per applicazioni pi ` u complesse. La progettazione di un microcontrollore per un’applicazione embedded complessa e la sua realizzazione sotto forma di un singolo chip specifico ` e un obiettivo ambizioso e costoso. ` E anche molto dispendioso in termini di tempo. Eppure, il tempo di sviluppo per la maggior parte dei prodotti di con- sumo deve essere breve. Un chip che realizzi un intero sistema per una certa applicazione si pu` o sviluppare in un tempo molto pi` u breve se il progettista ha accesso a moduli con circuiti predefiniti che siano disponibili in una forma facile da usare. Il circuito di un processore ` e uno dei moduli necessari. Tali circuiti sono detti nuclei-processore (processor core) nella letteratura tecni- ca. Si pu` o ottenere una variet` a di nuclei-processore, mediante accordi per le licenze, da un certo numero di aziende. Si possono ottenere altri moduli per realizzare memoria, interfacce di ingresso/uscita, circuiti di conversione A/D e D/A, o circuiti di elaborazione digitale di segnale, DSP (Digital Signal Processing). Lo sviluppatore di un sistema completa quindi il progetto uti- lizzando i moduli disponibili e progettando il resto dei circuiti specifici per l’applicazione. I fornitori di nuclei-processore e di altri moduli vendono i progetti piut- tosto che i chip. Essi forniscono la propriet` a intellettuale, IP (Intellectual Property) che altri possono usare per progettare i loro chip. Per facilitare lo sviluppo di prodotti basati su IP, sono disponibili una variet` a di strumenti di assistenza alla progettazione, CAD (Computer-Aided Design). Il costo di realizzazione di un chip progettato in modo personalizzato ` e un fattore importante. La fabbricazione di tali chip ` e costosa e, sebbene offrano prestazioni migliori e consumi ridotti, il loro costo pu ` o essere giustificato solo Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.
Transcript
Page 1: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 1

Caso di studio 1: Progetto di un sistema su un chipIn questo caso di studio• Progettazione di un sistema per la realizzazione su un chip FPGA• Come usare strumenti CAD• Come usare moduli parametrici• Cosa considerare tipicamente nella progettazione

Nel Capitolo 10 si e discusso l’uso di microcontrollori nei sistemi embed-ded. In un’applicazione embedded, e desiderabile usare quanti meno chip siapossibile. Idealmente, un singolo chip potrebbe realizzare l’intero sistema.Il termine sistema su un singolo chip (SOC) e in uso per designare questatecnologia. In applicazioni semplici, alcuni dei microcontrollori disponibi-li in commercio possono realizzare tutte le funzioni necessarie. Questo eimprobabile per applicazioni piu complesse.

La progettazione di un microcontrollore per un’applicazione embeddedcomplessa e la sua realizzazione sotto forma di un singolo chip specifico eun obiettivo ambizioso e costoso. E anche molto dispendioso in termini ditempo. Eppure, il tempo di sviluppo per la maggior parte dei prodotti di con-sumo deve essere breve. Un chip che realizzi un intero sistema per una certaapplicazione si puo sviluppare in un tempo molto piu breve se il progettistaha accesso a moduli con circuiti predefiniti che siano disponibili in una formafacile da usare. Il circuito di un processore e uno dei moduli necessari. Talicircuiti sono detti nuclei-processore (processor core) nella letteratura tecni-ca. Si puo ottenere una varieta di nuclei-processore, mediante accordi perle licenze, da un certo numero di aziende. Si possono ottenere altri moduliper realizzare memoria, interfacce di ingresso/uscita, circuiti di conversioneA/D e D/A, o circuiti di elaborazione digitale di segnale, DSP (Digital SignalProcessing). Lo sviluppatore di un sistema completa quindi il progetto uti-lizzando i moduli disponibili e progettando il resto dei circuiti specifici perl’applicazione.

I fornitori di nuclei-processore e di altri moduli vendono i progetti piut-tosto che i chip. Essi forniscono la proprieta intellettuale, IP (IntellectualProperty) che altri possono usare per progettare i loro chip. Per facilitare losviluppo di prodotti basati su IP, sono disponibili una varieta di strumenti diassistenza alla progettazione, CAD (Computer-Aided Design).

Il costo di realizzazione di un chip progettato in modo personalizzato e unfattore importante. La fabbricazione di tali chip e costosa e, sebbene offranoprestazioni migliori e consumi ridotti, il loro costo puo essere giustificato solo

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 2: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 2

se sono necessari un gran numero di chip per applicazioni specifiche. Unapossibilita alternativa e l’uso di tecnologia FPGA (Field Programmable GateArray), ovvero di matrici di porte logiche programmabili sul campo.

C1.1 Realizzazione FPGALe FPGA forniscono una piattaforma attraente per la realizzazione di sistemisu singolo chip. A differenza dei chip microcontrollori disponibili in com-mercio, che forniscono al progettista una serie di unita funzionali predefinite,i dispositivi FPGA permettono una completa liberta nel processo di proget-tazione. Essi permettono l’inclusione di moduli IP adatti e quindi la gene-razione del resto del sistema come desiderato. Questo si puo realizzare conrelativa facilita. Una volta che il progetto e completato e collaudato, lo si puorealizzare in un dispositivo FPGA immediatamente.

La capacita delle FPGA e drammaticamente cresciuta. Un singolo chipFPGA puo realizzare un sistema che comprende centinaia di migliaia di portelogiche. Tali chip sono sufficientemente grandi da poter realizzare le funzio-nalita tipiche di un microcontrollore e altri circuiti necessari per un’applica-zione embedded complessa.

In questo caso di studio si esaminano le questioni relative all’impiego diFPGA in un ambiente embedded. Per rendere la discussione quanto piu pra-tica possibile, si considera la tecnologia fornita da Altera Corporation, che euno dei principali fornitori di dispositivi FPGA e software CAD di supporto.

C1.1.1 Dispositivi FPGALa struttura di base delle FPGA e spiegata in Appendice A. I dispositivi FPGAcontengono un gran numero di elementi logici e risorse di cablaggio versatiliche si possono usare per interconnetterli. Di solito contengono anche unanotevole quantita di memoria che si puo usare per realizzare le parti di RAMe ROM di un sistema embedded se i requisiti di dimensione della memorianon sono troppo grandi. Molte FPGA includono anche circuiti moltiplicatori,che sono particolarmente utili nelle applicazioni DSP.

Un dispositivo FPGA va programmato per realizzare un particolare pro-getto. Gli elementi logici includono interruttori programmabili da impostareper realizzare le funzioni logiche desiderate. Tipicamente, si puo program-mare un elemento logico per realizzare funzioni logiche di quattro, cinqueo sei variabili. L’elemento logico comprende inoltre un flip-flop per rende-

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 3: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 3

re possibile la realizzazione di registri e macchine a stati finiti. Le linee diinterconnessione contengono anche interruttori programmabili, che si usanoper interconnettere gli elementi logici per realizzare il circuito desiderato. Ilprocesso di programmazione per l’impostazione degli interruttori viene dettoconfigurazione del dispositivo FPGA.

Nella maggior parte dei dispositivi FPGA, lo stato di ogni interruttore pro-grammabile si trova in una cella SRAM del tipo discusso nel Paragrafo 8.2.2.Poiche le celle SRAM mantengono il loro stato solo finche l’FPGA ha l’a-limentazione, tali FPGA sono volatili. Se si toglie l’alimentazione si devericonfigurare il dispositivo quando la si fornisce nuovamente. Per configurarel’FPGA, si devono caricare le informazioni di configurazione nel dispositi-vo. Questo viene fatto tipicamente utilizzando un altro chip, detto dispositi-vo di configurazione, che mantiene le informazioni richieste in una memoriadi tipo Flash. Ogni volta che si fornisce l’alimentazione, il dispositivo diconfigurazione programma automaticamente l’FPGA.

Di solito la memoria Flash del dispositivo di configurazione e abbastanzagrande da contenere non solo i dati di configurazione per i circuiti da realizza-re nell’FPGA, ma anche informazioni aggiuntive che possono includere dati ocodice. Se nell’FPGA si realizza un nucleo-processore, allora nel dispositivodi configurazione si puo memorizzare del codice che il processore eseguira.

C1.1.2 La scelta del processoreLa componente significativa di qualsiasi sistema su chip e il nucleo-processore.Esistono due alternative distinte per i sistemi basati su FPGA. Una riguardaun processore che e definito in software e realizzato in una FPGA allo stessomodo di qualsiasi altro circuito. L’altra comporta un chip FPGA specializzatoche ha un nucleo realizzato sul chip al momento della fabbricazione.

Nucleo-processore softwareLa soluzione piu flessibile e quella di realizzare un modulo software scritto inun linguaggio di descrizione dell’hardware, come Verilog o VHDL, che speci-fica un processore parametrico. Il progettista di un sistema embedded puo im-postare i parametri per ottenere un processore con le caratteristiche adatte perl’applicazione prevista. Per esempio, un parametro riguarda la configurazionedella cache, dove le scelte possono essere:

• nessuna cache;• cache per le istruzioni, ma non per i dati;• cache per le istruzioni e per i dati.

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 4: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 4

Un altro parametro puo riguardare l’inserimento di circuiti moltiplicatori e di-visori nel processore. Le operazioni di moltiplicazione e divisione si possonorealizzare in hardware, tuttavia si possono anche realizzare in software. Rea-lizzarle in hardware fa uso di piu risorse FPGA, ma migliora notevolmente leprestazioni.

Nucleo-processore hardwareUn’alternativa all’approccio software al nucleo-processore e di realizzare ilprocessore direttamente come un modulo hardware sul chip, creando cosı unaFPGA specializzata. Questo produce un sistema con prestazioni piu elevate.Il costo di tali FPGA e superiore al costo dei dispositivi FPGA regolari.

C1.2 Strumenti per la progettazione assistita dalcalcolatore

I produttori di dispositivi FPGA forniscono potenti strumenti CAD che ren-dono il compito di progettare sistemi embedded relativamente facile. Unavarieta di moduli predefiniti sono forniti in forma parametrica. Il progetti-sta crea un sistema inserendo questi moduli e specificando i parametri persoddisfare i requisiti dell’applicazione. Esempi di tali moduli sono:• nuclei-processore,• moduli di memoria e interfacce,• interfacce di I/O parallele,• interfacce di I/O seriali,• circuiti temporizzatori/contatori.Tali moduli possono essere sufficienti per realizzare tutte le funzioni neces-sarie in un sistema embedded desiderato. Se non lo sono, allora si devonoprogettare e includere nel sistema ulteriori circuiti specializzati.

Tipicamente, prima si specifica un sottosistema che comprende un nucleo-processore e altri moduli parametrici. Si usa uno strumento CAD per generareun modulo che realizza il sottosistema. Questo modulo e definito in un lin-guaggio di descrizione dell’hardware. Se ne crea quindi un’istanza nel proget-to complessivo, insieme ad altri eventuali circuiti specifici per l’applicazioneche siano stati creati. Infine, si usa un altro strumento CAD per sintetizzare erealizzare il progetto complessivo in una forma utilizzabile per configurare ildispositivo FPGA.

Oltre al dispositivo FPGA, e necessario includere i componenti esterni ne-cessari per completare il sistema, come interruttori, schermi e chip di memoria

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 5: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 5

aggiuntiva. Tali componenti vanno collegati ai piedini appropriati sulla FP-GA. Si discuteranno questi aspetti nel contesto di un esempio di progettazionenel Paragrafo C.3.

Per dare al lettore un esempio specifico di strumenti CAD e moduli perdispositivi FPGA, si considerano brevemente gli strumenti forniti da AlteraCorporation. Tutte le informazioni sulla sua tecnologia e sugli strumenti sonodisponibili sul sito web di Altera: www.altera.com.

C1.2.1 Strumenti CAD AlteraI principali strumenti CAD Altera sono noti come software Quartus II. Essicomprendono una gamma completa di strumenti necessari per progettare erealizzare un sistema digitale in un dispositivo FPGA. Si puo usare uno diquesti strumenti, il SOPC Builder (generatore SOPC), per progettare sistemiche comprendono un nucleo-processore. Questo strumento fornisce un certonumero di moduli parametrici che si possono usare nel sistema progettato.Per illustrare la loro natura, si considereranno quattro di questi moduli.

Processore Nios IIIl processore Nios II e descritto negli approfondimenti applicativi dei capitoli2 e 3. Per la realizzazione su FPGA, e fornito in tre versioni: economica,standard e veloce. La versione economica e la piu semplice e meno costosada realizzare (in termini di risorse FPGA). Essa ha anche le prestazioni piubasse. Non incorpora alcuna cache, non e in pipeline e non usa predizionidi salto. Si ottengono prestazioni migliori con la versione standard, che edotata di una cache per le istruzioni, e in pipeline e usa la predizione statica disalto. Si ottengono le migliori prestazioni con la versione veloce, che includeentrambe le cache per istruzioni e dati e usa la predizione dinamica di salto.

Vi sono diversi parametri che un progettista puo specificare, compresele dimensioni delle cache per istruzioni e dati. I nuclei-processore Nios IIsono sufficientemente piccoli da occupare solo una piccola parte di un dispo-sitivo FPGA. E possibile realizzare fino a dieci nuclei Nios II su una FPGArelativamente piccola.

MemoriaSi possono usare blocchi di memoria in un dispositivo FPGA per realizzarele cache e una porzione della memoria principale. La porzione della memoriaprincipale realizzata in questo modo viene detta memoria su chip. Si puoconfigurare questa memoria in vari modi: la si puo realizzare come memoria

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 6: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 6

0(n – 1)

0

4

8

Dati

Direzione

Maschera-interruzioni

12 Cattura-fronte

Spiazzamento

dell’indirizzo

(in byte)

Dati di ingresso/uscita

Controllo della direzione di ciascuna linea di ingresso

Abilitazione delle interruzioni di ciascuna linea di ingresso

Direzione del fronte in ciascuna linea di ingresso

Figura C1.1: Registri nell’interfaccia PIO.

di tipo RAM o ROM e se ne possono specificare le dimensioni e la lunghezzadi parola in fase di progettazione.

Se la memoria su chip non e abbastanza grande da contenere il softwarenecessario in un’applicazione embedded, allora occorre fornire memoria ag-giuntiva utilizzando chip di memoria esterni. Il SOPC Builder facilita la gene-razione di controllori e interfacce necessarie per collegare un sistema realizza-to nella FPGA a una varieta di componenti di memoria esterni, quali SRAM,SDRAM e dispositivi Flash.

Interfaccia di I/O parallelaUn’interfaccia parallela, detta PIO, e un modulo parametrico che si puo usaresia per funzioni di ingresso che di uscita. In fase di progettazione si puoselezionare la porta dati per servire come:

• porta di ingresso,• porta di uscita,• porta bidirezionale.

Se si sceglie l’opzione bidirezionale, allora le linee di dati PIO si devonocollegare a piedini di tipo tristate della FPGA.

Il processore accede a una PIO come a un’interfaccia con unificazionedegli spazi di indirizzamento di memoria e I/O e comunica con essa nel mododescritto nel Capitolo 3. I registri della PIO sono mostrati in Figura C1.1. Ladimensione n del registro e un parametro specificato in fase di progettazionenell’intervallo da 1 a 32. I registri vengono utilizzati come segue.

• Il registro Dati contiene n bit di dati che sono trasferiti fra il processore el’interfaccia PIO.

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 7: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 7

• Il registro Direzione determina la direzione di trasferimento (ingresso ouscita) per ciascuna delle n linee di dati quando si realizza una porta bidi-rezionale.

• Il registro Maschera-interruzioni e utilizzato per abilitare le interruzionidalle linee di ingresso collegate alla PIO. Si possono sollevare richieste diinterruzioni individuali su ciascuna delle n linee di ingresso possibili.

• Il registro Cattura-fronte indica variazioni di valori logici rilevate nei se-gnali sulle linee di ingresso collegate alla PIO. Il tipo di fronte (ascendenteo discendente) che viene rilevato e specificato in fase di progettazione.

Le linee che collegano la PIO a un dispositivo I/O si possono configurareindividualmente. Se la PIO serve solo come porta di ingresso, tutte le n lineesono configurate come ingressi in fase di progettazione. Analogamente, peruna porta di uscita, tutte le linee sono configurate come uscite. In questi casi,il registro Direzione non e necessario, e non e realizzato nel circuito generato.Per una porta bidirezionale il registro Direzione e incluso; quando il valoredel suo bit k e uguale a 1 (0), la linea k della porta funziona come uscita al(ingresso dal) dispositivo di I/O collegato.

Quando la PIO e usata come porta di ingresso, il registro Dati contiene ivalori logici attualmente presenti sulle linee di ingresso. Si possono rilevarevariazioni nei valori logici sulle linee di ingresso mediante il registro Cattura-fronte. In fase di progettazione, e possibile specificare che i bit di questoregistro siano impostati a 1 quando si ha un fronte nel segnale di ingresso. Ilfronte si puo specificare come: ascendente, discendente, o qualsiasi dei due.I bit del registro Cattura-fronte sono azzerati da un’istruzione di programmache scrive uno zero nel registro.

Il registro Maschera-interruzioni consente di abilitare e disabilitare le in-terruzioni. Scrivendo 1 nella posizione del bit k del registro si abilitano leinterruzioni causate dall’attivita sulla linea di ingresso k. Le interruzionipossono essere:

• sensibili al livello, nel qual caso viene sollevata una richiesta di interruzionequando il segnale su una qualsiasi linea di ingresso abilitata ha valore 1;

• sensibili al fronte, nel qual caso viene sollevata una richiesta di interruzionequando un qualsiasi bit abilitato nel registro Cattura-fronte e uguale a 1.

Si noti che gli indirizzi dei registri PIO in Figura C1.1 sono distanziati diquattro, indipendentemente dalla lunghezza n. Cosı, gli indirizzi dei registrisono allineati alla parola.

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 8: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 8

Temporizzatore di intervalloIl modulo temporizzatore fornisce una funzionalita simile a quella del crono-metro descritto nel Problema risolto 3.2 dell’Eserciziario. Il suo componenteprincipale e un contatore il cui contenuto e decrementato di uno a ogni ciclodel clock. Si puo specificare che il contatore sia a 32 o 64 bit. In questadiscussione si assumera che il contatore abbia 32 bit. L’interfaccia del tempo-rizzatore di intervallo ha i registri rappresentati in Figura C1.2. Ogni registroha 16 bit. Nel registro di stato si usano solo due bit:

• ESEGUI e uguale a 1 quando il contatore e in esecuzione, altrimenti euguale a 0; questo bit non e interessato se il processore scrive nel registrodi stato;

• TO e il bit di timeout; e impostato a 1 quando il contatore raggiunge lo 0 eresta impostato a 1 fino a quando il processore lo annulla scrivendo uno 0in esso.

Nel registro di controllo, si usano quattro bit:

RUN

CONT

0123415

0

4

Registro di stato

Registro di controllo

Spiazzamento

dell’indirizzo

(in byte)

TO

ITOSTARTSTOP

Valore iniziale del contatore (16 bit inferiori)

Valore iniziale del contatore (16 bit superiori)

8

12

Valore istantaneo del contatore (16 bit inferiori)

Valore istantaneo del contatore (16 bit superiori)

16

20

Figura C1.2: Registri nell’interfaccia del temporizzatore di intervallo.

• ARRESTO e impostato a 1 per fermare il contatore;• AVVIO e impostato a 1 per far sı che il contatore si avvii;• CONT determina il comportamento del contatore quando raggiunge 0: se

CONT=0, il contatore si ferma quando raggiunge 0; se CONT=1, il con-tatore ricarica il valore di conteggio iniziale e continua a contare;

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 9: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 9

• ITO abilita le interruzioni quando e impostato a 1.

Si deve caricare il valore di conteggio iniziale in due operazioni di scrittura a16 bit. Si usano i registri di valore istantaneo del contatore per ottenere un’i-stantanea del contenuto del contatore mentre e in esecuzione. Un’operazionedi scrittura su uno qualsiasi dei due registri fa scattare l’istantanea, il che si-gnifica che il contenuto corrente del contatore e caricato nei registri di valoreistantaneo. Questi registri si possono poi leggere in modo usuale.

Oltre alla possibilita di utilizzare il valore iniziale di conteggio per definireun periodo di timeout, si puo specificare un periodo di timeout predefinito infase di progettazione. Il periodo di tempo predefinito e usato se il valore diconteggio iniziale e zero.

Si genera una richiesta di interruzione quando TO=1 e ITO e impostato a1. Per cancellare questa richiesta, il processore deve scrivere uno 0 in TO.

Nel prossimo paragrafo, si utilizzeranno i moduli di cui sopra in un esem-pio di progettazione completo.

C1.3 Esempio di orologio svegliaIn questo paragrafo si presenta un esempio dettagliato di sistema embedded.Si mostra come si puo realizzare una sveglia utilizzando la tecnologia FPGA.La sveglia, mostrata in Figura C1.3, ha le seguenti caratteristiche:

• vi sono quattro schermi a 7 segmenti che indicano l’orario in ore e minuti,• si usa un interruttore scorrevole on/off per attivare la funzione di allarme,• si usano due interruttori scorrevoli per abilitare l’impostazione dell’orario

attuale e dell’ora di sveglia,• si usano due interruttori a pulsante per impostare le ore e i minuti,• un LED indica che l’allarme e attivato,• due LED, disposti verticalmente, creano i due punti che separano ore e

minuti,• si emette un ronzio quando l’interruttore scorrevole dell’allarme e attivato

e si raggiunge l’ora di sveglia.

C1.3.1 Vista di utente del sistemaLa Figura C1.3 mostra la sveglia come e vista dall’utente. Gli schermi asette segmenti, del tipo illustrato in Figura P3.3a dell’Eserciziario, indica-no l’orario, mostrato nell’intervallo da 00:00 fino a 23:59. Il funzionamentodell’orologio e il seguente:

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 10: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 10

Allarme

ON

Ora Minuto

Imposta

orario

attuale

Imposta

orario

allarme

Allarme

on/off

Figura C1.3: Vista di utente della sveglia.

• quando si fornisce l’alimentazione, l’orario del giorno e l’orario di allarmesono azzerati;

• si imposta l’orario del giorno attivando l’interruttore scorrevole Impostaorario attuale e quindi impostando il tempo mediante i pulsanti Ora eMinuto: ogni volta che si preme un pulsante, l’orario visualizzato vieneincrementato di uno;

• l’orario di sveglia e impostato allo stesso modo quando si attiva l’interrut-tore Imposta orario allarme;

• si attiva l’allarme mediante l’interruttore Allarme on/off ; cio fa sı che ilcorrispondente LED si accenda;

• l’altoparlante emette un ronzio quando si raggiunge l’orario di sveglia conl’interruttore di allarme attivato.

C1.3.2 Definizione del sistema e generazioneL’obiettivo qui e di realizzare la sveglia con un chip FPGA e componentiesterni che comprendono: interruttori scorrevoli, pulsanti, schermi a 7 seg-menti, LED e un altoparlante. La Figura C1.4 illustra il sistema desiderato. Ilprocessore e il Nios II. La memoria su chip e sufficientemente grande per sod-disfare le esigenze della presente applicazione, persino in chip FPGA moltopiccoli. I componenti esterni sono collegati tramite interfacce PIO. Vi so-no due cronometri. Uno e progettato per fornire intervalli di un minuto, dautilizzare per aggiornare l’orario attuale. L’altro serve a generare un’ondaquadra che produce un ronzio. Si realizzano i cronometri usando il moduloTemporizzatore di intervallo descritto nel Paragrafo C1.2.1. Si assume che gliinterruttori scorrevoli generino un segnale logico 1 quando attivati. Gli inter-ruttori a pulsante sono antirimbalzo e generano un segnale logico 0 quandovengono pigiati.

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 11: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 11

Rete di interconnessione

PIO1 PIO2 PIO3 PIO4

Processore Memoria

sul chip

Interruttori

scorrevoli

Interruttori

a pulsante

Schermi

a 7 segmentiLED

Chip

FPGA

PIO5

Altoparlante

Temporizzatore

dei minuti

Temporizzatore

del segnale

acustico

Figura C1.4: Diagramma a blocchi della sveglia.

Il sistema e realizzato nel dispositivo FPGA usando il software QuartusII. Si usa il Generatore SOPC per realizzare i blocchi nella zona ombreggiatadella Figura C1.4. I blocchi PIO sono configurati come segue:

• PIO1 e una porta di ingresso a tre bit; i suoi ingressi sono sensibili al livello;• PIO2 e una porta di ingresso a due bit; i suoi ingressi sono sensibili al fronte

di discesa, in modo che un bit nel registro Cattura-fronte sia impostato a 1quando il pulsante corrispondente viene premuto;

• PIO3 e un porta di uscita a 32 bit; ogni byte sara collegato a uno schermo a7 segmenti, sı che ciascuno dei bit da 0 a 6 di un byte azioni un segmento,mentre non si usa il bit 7; il byte di ordine inferiore sara collegato alla cifrapiu bassa dei minuti, quello di ordine superiore alla cifra piu alta delle ore;

• PIO4 e una porta di uscita a tre bit;• PIO5 e una porta di uscita a un bit.

Usando il Generatore SOPC, questo sistema viene specificato come mo-strato in Figura C1.5. Si noti che le PIO hanno nomi che indicano le lorofunzioni. Il Generatore SOPC assegna gli indirizzi ai vari componenti nelsistema. La memoria su chip occupa l’intervallo da 0 a 0x3FFF, mentre leinterfacce di cronometri e PIO hanno indirizzi a partire da 0x5000. Il pro-gettista, se lo desidera, puo specificare indirizzi diversi. Si noti inoltre che

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 12: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 12

Figura C1.5: Sistema su chip FPGA progettato con SOPC Builder.

i cronometri e gli interruttori a pulsante possono sollevare richieste di inter-ruzioni (IRQ). L’ultima colonna nella figura indica le posizioni dei bit deiregistri di controllo Nios II ctl3 e ctl4 che sono associati con le interruzioniprovenienti da queste sorgenti. Il Generatore SOPC crea il sistema specifi-cato producendo un modulo che descrive il sistema in uno dei linguaggi didescrizione dell’hardware Verilog o VHDL.

C1.3.3 Realizzazione del circuitoIl sistema software Quartus II include un compilatore che accetta una speci-fica di un sistema digitale in un linguaggio di descrizione dell’hardware. Ilcompilatore sintetizza un circuito che realizza il sistema, e determina comequesto circuito deve essere realizzato sul chip FPGA.

Poiche i dispositivi esterni devono essere collegati ai piedini della FPGA,il progettista deve specificare le connessioni desiderate. Questa operazione edetta assegnazione dei piedini. Il compilatore genera la realizzazione finalesotto forma di un file di configurazione usato per scaricare le informazioni diconfigurazione nel dispositivo FPGA.

La Figura C1.4 non mostra tutti i componenti necessari per realizzare l’o-rologio sveglia completo. Mancano l’alimentazione, il generatore di segnaledi clock e il dispositivo di configurazione necessario a programmare la FPGA.

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 13: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 13

Si assume che sia fornito un segnale di clock esterno a 100 MHz. I piedini del-la FPGA in genere non si possono collegare direttamente a dispositivi esterniquali interruttori, schermi a sette segmenti e LED. Ciascun dispositivo ha leproprie caratteristiche elettriche, il che significa che solitamente si devonousare componenti quali resistori, come in Figura 10.13.

Nel nostro progetto, i pulsanti per l’impostazione di ore e minuti sono con-nessi ai corrispondenti bit b1 e b0 della PIO, rispettivamente. Gli interruttoriscorrevoli imposta orario attuale, imposta orario allarme, e allarme on/offsono rispettivamente collegati ai corrispondenti bit b2, b1, e b0. Il cronometrodei minuti ha un periodo di timeout di 60 secondi. Il cronometro del segnaleacustico ha un periodo di timeout di 1 ms.

C1.3.4 Software applicativoOccorre realizzare un programma da eseguire sull’hardware progettato perrealizzare le funzioni dell’orologio sveglia. Realizzeremo due programmi,uno in linguaggio C e un altro nel linguaggio assemblativo Nios II, per illu-strare come si possono scrivere questi programmi. Il programma sviluppa-to deve essere compilato in codice macchina Nios II. All’avvio, tale codicesarebbe caricato nella memoria sul chip dal dispositivo di configurazione.

Qui si adotta il seguente approccio per realizzare i programmi. L’orarioattuale e l’orario di sveglia sono mantenuti sotto forma di interi binari a 32 bitche rappresentano il tempo in minuti. L’orario attuale e incrementato di unoogni volta che il cronometro dei minuti raggiunge lo zero, il che e indicato dalvalore 1 del bit TO nel suo registro di stato. Quando l’orario attuale viene in-crementato, occorre verificare se ha raggiunto 1440, che e il numero di minutiin un giorno. In tal caso, si deve azzerare l’orario in modo da corrisponderealla transizione da 23:59 a 00:00. Un controllo analogo e necessario quandosi imposta l’orario premendo i pulsanti.

Per visualizzare l’ora, le quattro cifre decimali che rappresentano ore eminuti sono calcolate dividendo il tempo per 600 per ottenere la cifra di ordinealto delle ore, quindi dividendo il resto per 60 per ottenere la cifra di ordinebasso delle ore, e cosı via. Si usa una tabella per ottenere le corrispondentisequenze binarie che sono inviate agli schermi a 7 segmenti.

Si usa il cronometro del segnale acustico per creare un segnale a onda qua-dra di 500 Hz, che produce un ronzio quando e collegato a un altoparlante.Questo cronometro e eseguito in modalita continua. Dal momento che ha unperiodo predefinito di timeout di 1 ms, si potrebbe generare direttamente il se-gnale a 500 Hz invertendo il valore logico del segnale alla fine di ogni periodo

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 14: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 14

del cronometro. Tuttavia, per illustrare come si puo definire un periodo diver-so in un programma, si usera il registro del valore iniziale del contatore perspecificare il periodo desiderato. In questo caso, occorre il valore 0x30D40per il segnale a 500 Hz se il contatore e pilotato da un clock a 100 MHz.

Quando si usa la scansione per il segnale di timeout di un cronometro, enecessario controllare il bit TO nel suo registro di stato. Poiche il bit RUNe sempre uguale a 1 quando il contatore gira, si puo effettuare la scansionecontrollando se il contenuto del registro di stato e uguale a 3. Il bit TO si puoportare a 0 semplicemente scrivendo uno zero nel registro di stato, perche lostato del bit RUN non e influenzato da un’operazione di scrittura.

Programma CLa Figura C1.6 mostra un possibile programma in linguaggio C. La presenteapplicazione non e impegnativa in termini di prestazioni, quindi si usa il me-todo della scansione per accedere a tutte le PIO e ai cronometri. I commentinel programma spiegano il significato delle varie istruzioni. Si osservi che lamacro AGGIUSTA definisce un’espressione che incrementa l’orario in modoopportuno in diverse situazioni.

Programma in linguaggio assemblativoLa Figura C1.7 presenta un programma Nios II. Per illustrare l’uso delle inter-ruzioni, il programma usa le interruzioni per gestire il cronometro dei minuti.Si usa la scansione per il cronometro del segnale acustico.

In fase di progettazione, il Generatore SOPC ha assegnato 0x20 qualeindirizzo dove inizia il gestore delle interruzioni quando il processore accettauna richiesta di interruzione. Il gestore di interruzioni verifica che vi sia un’in-terruzione causata da un dispositivo esterno al processore Nios II e aggiustadi conseguenza l’indirizzo di rientro (si veda l’Approfondimento applicativo3.2 per una spiegazione dettagliata del meccanismo delle interruzioni del NiosII); quindi azzera il bit TO nel cronometro dei minuti e chiama la routine diservizio delle interruzioni. Si noti che il gestore delle interruzioni salva, e poiripristina, il contenuto dei registri r2 e ra. Salva il contenuto di ra, che e il re-gistro di collegamento che contiene l’indirizzo di rientro da sottoprogramma,poiche un’interruzione da cronometro puo aversi durante l’esecuzione di unsottoprogramma; anche il gestore delle interruzioni usa il registro ra per unachiamata alla routine di servizio delle interruzioni, AGGIORNA ORA, cheincrementa l’orario attuale (e a mezzanotte lo azzera).

Il programma principale inizia impostando la pila del processore e az-zerando le locazioni di memoria che contengono l’orario. Come parte del

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 15: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 15

processo di inizializzazione, imposta il periodo di timeout per il cronome-tro del segnale acustico; quindi fa partire entrambi i cronometri e abilita leinterruzioni dal cronometro dei minuti.

Il ciclo principale, CICLO, controlla lo stato degli interruttori scorrevoli eprende i provvedimenti necessari. Il sottoprogramma DISP visualizza l’ora-rio attuale o l’orario di sveglia, mantenuti alle locazioni di memoria 0x1000o 0x1010, sugli schermi a sette segmenti. Si usa il sottoprogramma SE-TSUB per impostare i valori di minuti e ore quando si pigiano i corrispondentipulsanti. Ogni volta che si pigia un pulsante si incrementa il valore di uno.

Si usa la tabella alla fine del programma per convertire una cifra decimalenella corrispondente sequenza di sette bit per visualizzarla.

I commenti nel programma spiegano il significato delle varie istruzio-ni. I registri di controllo e ctl3 ctl4 si possono anche indicare mediantei nomi ienable e ipending, rispettivamente. Questi sono i nomi usati nelprogramma.

# d e f i n e t e m p m i n u t i ( v o l a t i l e i n t * ) 0 x5000# d e f i n e t e m p t o n o ( v o l a t i l e i n t * ) 0 x5020# d e f i n e c u r s o r i ( v o l a t i l e i n t * ) 0 x5040# d e f i n e p u l s a n t i ( v o l a t i l e i n t * ) 0 x5050# d e f i n e d i s p l a y ( i n t * ) 0 x5060# d e f i n e LED ( i n t * ) 0 x5070# d e f i n e a l t o p a r l a n t e ( i n t * ) 0 x5080# d e f i n e AGGIUSTA( t , x ) ( ( t +x ) >=1440)?( t +x−1440) : ( t +x )i n t o r a a t t u a l e , o r a s v e g l i a , s v e g l i a a t t i v a , o r a r i o ;

/ * T a b e l l a d i c o n v e r s i o n e da e s a d e c i m a l e a 7 s e g m e n t i * /u n s i g n e d c h a r t a b e l l a [ 1 6 ] = {0x40 , 0x79 , 0x24 , 0x30 , 0x19 , 0x12 , 0x02 , 0x78 ,

0x00 , 0x18 , 0x3F , 0x3F , 0x3F , 0x3F , 0x3F , 0x3F } ;vo id i m p o s t a T e m p o r i z z a t o r e T o n o ( ){

*( t e m p t o n o + 2) = 0x0D40 ; / * Impos t a i l p e r i o d o d i t i m e o u t * /* ( t e m p t o n o + 3) = 0x03 ; / * p e r f u n z i o n a m e n t o c o n t i n u o . * /* ( t e m p t o n o + 1) = 0x6 ; / * Avvia i n m o d a l i t a ' c o n t i n u a . * /

}vo id DISP ( o r a r i o ) / * O t t i e n i l a s e q u e n z a d e i 7 s e g m e n t i . * /{

* d i s p l a y = t a b e l l a [ o r a r i o / 600] << 24 |t a b e l l a [ ( o r a r i o % 600) / 60] << 16 |t a b e l l a [ ( o r a r i o % 60) / 10] << 8 |t a b e l l a [ ( o r a r i o % 1 0 ) ] ;

}

. . . continua nella Parte b

Figura C1.6: Programma C per la sveglia (Parte a).

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 16: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 16

main ( ){

o r a a t t u a l e = o r a s v e g l i a = s v e g l i a a t t i v a = 0 ;i m p o s t a T e m p o r i z z a t o r e T o n o ( ) ;* ( t e m p m i n u t i + 1 ) = 0x6 ; / * Es eg u i i n m o d a l i t a ' c o n t i n u a . * /w h i l e ( 1 ){

i f (* t e m p m i n u t i == 3) / * Un minuto e ' t r a s c o r s o . * /{

* t e m p m i n u t i = 0 ; / * Azzera i l b i t TO . * /o r a a t t u a l e = AGGIUSTA( o r a a t t u a l e , 1 ) ;

}i f ( ( * c u r s o r i & 1) != 0) / * C o n t r o l l a se l ' i n t e r r u t t o r e * /{ / * s v e g l i a e ' a t t i v o . * /

*LED = 7 ; / * Accendi i l LED s v e g l i a . * /i f ( o r a a t t u a l e == o r a s v e g l i a )

s v e g l i a a t t i v a = 1 ; / * Avvia i l suono d e l l a s v e g l i a . * /e l s e

s v e g l i a a t t i v a = s v e g l i a a t t i v a & (* c u r s o r i & 1 ) ;i f (* t e m p t o n o == 3) / * Genera l ' onda qu a d r a . * /{

* a l t o p a r l a n t e = (* a l t o p a r l a n t e ˆ 1 ) & s v e g l i a a t t i v a ;* t e m p t o n o = 0 ; / * Azzera i l b i t TO . * /

}}e l s e{

*LED = 6 ; / * Spegn i i l LED s v e g l i a . * /s v e g l i a a t t i v a = 0 ;

}i f ( ( * c u r s o r i & 4) != 0) / * C o n t r o l l a l ' i n t e r r u t t o r e i m p o s t a o r a r i o . * /{

DISP ( o r a a t t u a l e ) ; / * Most ra l ' o r a r i o d e l g i o r n o . * /i f ( ( * ( p u l s a n t i + 3 ) & 1) != 0) / * Impos t a i m i n u t i ? * /

o r a a t t u a l e = AGGIUSTA( o r a a t t u a l e , 1 ) ;e l s e i f ( ( * ( p u l s a n t i + 3 ) & 2) != 0) / * Impos t a l e o r e ? * /

o r a a t t u a l e = AGGIUSTA( o r a a t t u a l e , 6 0 ) ;* ( p u l s a n t i + 3 ) = 0 ; / * Azzera i l r e g i s t r o C a t t u r a−f r o n t e . * /

}e l s ei f ( ( * c u r s o r i & 2) != 0) / * C o n t r o l l a l ' i n t e r r u t t o r e i m p o s t a s v e g l i a . * /{

DISP ( o r a s v e g l i a ) ; / * Most ra l ' o r a r i o d i s v e g l i a . * /i f ( ( * ( p u l s a n t i + 3 ) & 1) != 0) / * Impos t a i m i n u t i ? * /

o r a s v e g l i a = AGGIUSTA( o r a s v e g l i a , 1 ) ;e l s e i f ( ( * ( p u l s a n t i + 3 ) & 2) != 0) / * Impos t a l e o r e ? * /

o r a s v e g l i a = AGGIUSTA( o r a s v e g l i a , 6 0 ) ;* ( p u l s a n t i + 3 ) = 0 ; / * Azzera i l r e g i s t r o C a t t u r a−f r o n t e . * /

}e l s e

DISP ( o r a a t t u a l e ) ; / * Most ra l ' o r a r i o d e l g i o r n o . * /}

}

Figura C1.6: Programma C per la sveglia (Parte b).

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 17: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 17

.equ temp minuti, 0x05000

.equ temp tono, 0x5020

.equ cursori, 0x5040

.equ pulsanti, 0x5050

.equ display, 0x5060

.equ LED, 0x5070

.equ altoparlante, 0x5080

.equ ORA ATTUALE, 0x1000

.equ ORA SVEGLIA, 0x1010

.equ PILA, 0x2000start: br MAIN

/* Gestore interruzione */.org 0x20subi sp, sp, 8 /* Salva registri. */stw r2, 0(sp)stw ra, 4(sp)rdctl et, ipendingbeq et, r0, MAIN /* Errore se non e un’interruzione */

/* esterna, trattarlo come riavvio. */subi ea, ea, 4 /* Decrementa ea per eseguire */

/* l’istruzione interrotta quando *//* ritorna al programma principale. */

movia r2, temp minuti /* Azzera il bit TO nel */sthio r0, (r2) /* temporizzatore dei minuti. */call AGGIORNA ORA /* Chiama routine di servizio */

/* dell’interruzione. */ldw r2, 0(sp) /* Ripristina i registri. */ldw ra, 4(sp)addi sp, sp, 8eret

/* Programma principale */MAIN: movia sp, PILA /* Inizializza puntatore alla pila. */

movia r2, ORA SVEGLIA /* Azzera buffer dell’orario sveglia. */stw r0, (r2)movia r2, ORA ATTUALE /* Azzera buffer dell’orario attuale. */stw r0, (r2)movia r2, cursori /* Indirizzo interruttori a cursore. */movia r3, LED /* Indirizzo dei LED. */movia r4, display /* Indirizzo schermi a 7 segmenti. */movia r5, pulsanti /* Indirizzo dei pulsanti. */

. . . continua nella Parte b

Figura C1.7: Programma Nios II per la sveglia (Parte a).

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 18: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 18

movi r6, 6 /* Accendi i due LED */stbio r6, (r3) /* verticali. */movia r6, temp tonoori r7, r0, 0x0D40 /* Inizializza il periodo */sthio r7, 8(r6) /* del temporizzatore del tono. */ori r7, r0, 0x03sthio r7, 12(r6)movi r7, 6 /* Avvia temporizzatore del tono. */sthio r7, 4(r6)movia r6, temp minuti /* Indirizzo temporizzatore minuti. */addi r7, r0, 7 /* Avvia il temporizzatore. */sthio r7, 4(r6)movi r7, 1wrctl ienable, r7 /* Abilita interruzioni */

/* dal temporizzatore. */wrctl status, r7 /* Abilita interruzioni esterne. */

CICLO: movia r10, ORA ATTUALE /* Visualizza orario del giorno. */call DISPldbio r7, (r2)andi r11, r7, 1 /* Interruttore sveglia attivo? */beq r11, r0, PROSSIMOmovi r11, 7 /* Se sı, allora accendi il */stbio r11, (r3) /* LED sveglia. */movia r9, ORA SVEGLIAldw r11, (r9) /* Confronta l’orario di sveglia */ldw r12, (r10) /* con l’orario attuale. */bne r11, r12, PROSSIMO /* La sveglia dovrebbe suonare? */movia r8, temp tonomovi r12, 1

CICLO SVEGLIA:call DISPldbio r7, (r2)andi r13, r7, 1 /* Interruttore sveglia attivo? */beq r13, r0, PROSSIMOldhio r9, (r8) /* Leggi stato temporizzatore tono. */sthio r0, (r8) /* Azzera il bit TO. */andi r9, r9, 1 /* Controlla se il contatore e a 0. */xor r12, r9, r12 /* Genera successivo semiciclo */movia r11, altoparlante /* dell’onda quadra; invia */stbio r12, (r11) /* il segnale all’altoparlante. */br CICLO SVEGLIA

. . . continua nella Parte c

Figura C1.7: Programma Nios II per la sveglia (Parte b).

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 19: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 19

PROSSIMO:movi r11, 6 /* Spegni LED che indica che la */stbio r11, (r3) /* sveglia e attiva. */

TEST CURSORI:ldbio r7, (r2)andi r11, r7, 2 /* Interruttore imposta sveglia attivo? */beq r11, r0, ATTIVA /* Se no, controlla orario corrente. */movia r10, ORA SVEGLIA /* Va impostata l’ora di sveglia. */br ORARIO

ATTIVA:andi r11, r7, 4 /* Interruttore imposta orario attivo? */beq r11, r0, CICLO /* Tutti i cursori sono disattivati. */movia r10, ORA ATTUALE

ORARIO:call DISPcall SETSUBbr TEST CURSORI

/* Visualizza l’orario sugli schermi a 7 segmenti. */DISP: subi sp, sp, 24 /* Salva registri. */

stw r11, 0(sp)stw r12, 4(sp)stw r13, 8(sp)stw r14, 12(sp)stw r15, 16(sp)stw r16, 20(sp)ldw r11, (r10) /* Carica l’orario da mostrare. */movi r12, 600 /* Per determinare la prima cifra */divu r13, r11, r12 /* delle ore, dividi per 600. */ldb r15, TABELLA(r13) /* Ottieni serie dei 7 segmenti. */slli r15, r15, 8 /* Fai spazio alla prossima cifra. */mul r14, r13, r12 /* Calcola il resto della */sub r11, r11, r14 /* divisione. */movi r12, 60 /* Dividi il resto per 60 per avere */divu r13, r11, r12 /* la seconda cifra delle ore. */ldb r16, TABELLA(r13) /* Ottieni serie dei 7 segmenti, */or r15, r15, r16 /* concatenala alla prima cifra */slli r15, r15, 8 /* e falla scorrere. */mul r14, r13, r12 /* Determina i minuti che */sub r11, r11, r14 /* devono essere mostrati. */

. . . continua nella Parte d

Figura C1.7: Programma Nios II per la sveglia (Parte c).

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 20: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 20

movi r12, 10 /* Per determinare la prima cifra dei */divu r13, r11, r12 /* minuti, dividi per 10. */ldb r16, TABELLA(r13) /* Ottieni la serie dei 7 segmenti, */or r15, r15, r16 /* concatenala alle prime due cifre */slli r15, r15, 8 /* e falla scorrere. */mul r14, r13, r12 /* Calcola il resto, che */sub r11, r11, r14 /* e l’ultima cifra. */ldb r16, TABELLA(r11) /* Concatena l’ultima cifra alle */or r15, r15, r16 /* 3 cifre precedenti. */movia r11, displaystw r15, (r11) /* Visualizza la serie ottenuta. */ldw r11, 0(sp) /* Ripristina registri. */ldw r12, 4(sp)ldw r13, 8(sp)ldw r14, 12(sp)ldw r15, 16(sp)ldw r16, 20(sp)addi sp, sp, 24ret

/* Imposta l’orario desiderato. */SETSUB:

subi sp, sp, 16 /* Salva registri. */stw r11, 0(sp)stw r12, 4(sp)stw r13, 8(sp)stw r14, 12(sp)ldbio r12, 12(r5) /* Controlla i pulsanti. */stbio r0, 12(r5) /* Azzera registro Cattura-fronte. */andi r13, r12, 1 /* Il pulsante dei minuti e pigiato? */beq r13, r0, ORE /* Se no, controlla le ore. */ldw r11, (r10) /* Carica l’orario corrente. */movi r12, 60 /* Dividi per 60 per determinare */divu r13, r11, r12 /* il numero di ore. */mul r14, r13, r12 /* Il resto della divisione */sub r11, r11, r14 /* e il numero di minuti. */addi r11, r11, 1 /* Incrementa i minuti. */blt r11, r12, SALVAM /* Salva se minore di 60, */mov r11, r0 /* altrimenti poni i minuti a 00. */

. . . continua nella Parte e

Figura C1.7: Programma Nios II per la sveglia (Parte d).

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 21: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 21

SALVAM: add r11, r14, r11 /* (ore x 60) + (minuti aggiornati). */stw r11, (r10) /* Salva il nuovo orario. */br FATTO

ORE: andi r13, r12, 2 /* Il pulsante delle ore e pigiato? */beq r13, r0, FATTO /* Se no, allora rientra. */ldw r11, (r10) /* Carica l’orario corrente in minuti. */addi r12, r11, 60 /* Aggiungi 60 minuti. */movi r13, 1440 /* Controlla se l’orario aggiornato */blt r12, r13, SALVAO /* e minore di 24:00. */sub r12, r12, r13 /* Reimposta l’orario a 00:00. */

SALVAO: stw r12, (r10) /* Salva il nuovo orario. */FATTO:

ldw r11, 0(sp) /* Ripristina registri. */ldw r12, 4(sp)ldw r13, 8(sp)ldw r14, 12(sp)addi sp, sp, 16ret

/* Routine di servizio interruzioni che aggiorna orario corrente */AGGIORNA ORA:

subi sp, sp, 12 /* Salva registri. */stw r2, 0(sp)stw r3, 4(sp)stw r4, 8(sp)movia r2, ORA ATTUALEldw r3, (r2) /* Carica l’orario attuale del giorno. */addi r3, r3, 1 /* Incrementa di uno i minuti. */movi r4, 1440 /* Fatto se l’orario aggiornato e */blt r3, r4, SALVAT /* minore di 24:00. */mov r3, r0 /* Altrimenti, ponilo a 00:00. */

SALVAT: stw r3, (r2) /* Salva l’orario aggiornato. */ldw r2, 0(sp) /* Ripristina registri. */ldw r3, 4(sp)ldw r4, 8(sp)addi sp, sp, 12ret

/* Tabella di conversione da cifre esadecimali a 7 segmenti */.org 0x1050

TABELLA: .byte 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78.byte 0x00, 0x18, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F.end

Figura C1.7: Programma Nios II per la sveglia (Parte e).

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 22: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 22

C1.4 Osservazioni conclusiveIl progettista di un sistema embedded cerca inevitabilmente l’approccio piusemplice e piu conveniente. Un chip microcontrollore che possiede le risorseper realizzare un intero sistema puo essere la scelta migliore. La situazionee diversa se sono necessari chip aggiuntivi per realizzare il sistema. In talcaso le soluzioni FPGA sono molto interessanti poiche hanno probabilmentebisogno di un minor numero di chip per realizzare il sistema.

Un’altra considerazione e la disponibilita di moduli predefiniti. Un chipmicrocontrollore contiene un certo numero di moduli differenti. Qualsiasicaratteristica che non si possa realizzare usando questi moduli deve essererealizzata utilizzando chip aggiuntivi. Un dispositivo FPGA consente al pro-gettista di progettare qualsiasi tipo di circuito digitale. Si possono realizzarecircuiti molto grandi e complessi nei dispositivi FPGA moderni.

Progetti pratici spesso coinvolgono circuiti che eseguono operazioni diuso comune. Tali circuiti sono di solito disponibili come moduli di libreria,come illustrato dalle interfacce di I/O e dai circuiti dei cronometri utilizzati nelparagrafo precedente. Per le applicazioni di elaborazione di segnali, la libreriacomprende tipici circuiti di filtraggio. Se un sistema si deve collegare a unaltro calcolatore utilizzando uno schema standard di interconnessione, comeper esempio PCI Express, il compito del progettista e molto piu semplice se edisponibile un’interfaccia PCI Express come modulo predefinito.

C1.5 ProblemiC1.1 [F] Nel Paragrafo C1.3.4, si e detto che il segnale a 500 Hz a ondaquadra si puo generare semplicemente invertendo il valore logico del segnaleal termine di ciascun periodo di timeout del cronometro del segnale acusti-co, progettato per aver luogo ogni millisecondo. Modificare il programma inFigura C1.6 per sfruttare questo fatto.

C1.2 [F] Ripetere il Problema C1.1 per il programma in Figura C1.7.

C1.3 [M] Si consideri il formato di visualizzazione per la sveglia nel Paragra-fo C1.3. Invece di visualizzare l’orario da 00:00 a 23:59, si desidera visua-lizzarlo come da 12:00 a 11:59 AM o PM. Si supponga che un quarto LEDsia disponibile e collegato al bit b3 di una PIO larga quattro bit invece dellaPIO larga tre bit usata nel Paragrafo C1.3. Questo LED indica PM quando e

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.

Page 23: Caso di studio 1: Progetto di un sistema su un chipitaly-s3-mhe-prod.s3-website-eu-west-1.amazonaws.com/OLCS-DEFI… · Un dispositivo FPGA va programmato per realizzare un particolare

Caso di studio 1: Progetto di un sistema su un chip 23

acceso. Modificare il programma in Figura C1.6 per visualizzare l’orario inquesto modo.

C1.4 [M] Ripetere il Problema C1.3 per il programma in Figura C1.7.

C1.5 [F] Si supponga che un solo cronometro, con un periodo predefinito di ti-meout di 1 ms, sia usato nella sveglia del Paragrafo C1.3. Apportare le appro-priate modifiche al programma in Figura C1.6 per fornire il comportamentorichiesto.

C1.6 [F] Ripetere il Problema C1.5 per il programma in Figura C1.7.

C1.7 [F] In Figura C1.7 si sono usate le interruzioni per gestire il cronometrodei minuti e la scansione per il cronometro del segnale acustico. Modificareil programma per usare le interruzioni per entrambi i cronometri.

C1.8 [M] Nella sveglia del Paragrafo C1.3, si imposta l’orario incrementandoil valore corrente ogni volta che si preme un pulsante. Questo potrebbe esserenoioso se si deve premere molte volte un pulsante. Un’alternativa miglioresarebbe quella di incrementare l’ora automaticamente ogni 0,5 secondi men-tre un pulsante viene tenuto premuto. Quali cambiamenti si dovrebbero fareall’hardware per fornire questa funzionalita, se e il caso di farne? Modificareil programma in Figura C1.6 per realizzare la funzionalita.

C1.9 [M] Ripetere il Problema C1.8 per il programma in Figura C1.7.

C1.10 [M] Si desidera rendere intermittenti a intervalli di un secondo i dueLED disposti verticalmente nella sveglia quando si fornisce l’alimentazione.Essi dovrebbero cessare di lampeggiare non appena l’utente inizia a impo-stare l’orario. Modificare il programma in Figura C1.6 per realizzare questocomportamento.

C1.11 [M] Ripetere il Problema C1.10 per il programma in Figura C1.7.

Hamacher, Vranesic, Zaky, Manjikian, Introduzione all’architettura dei calcolatori 3e © 2013 McGraw-Hill Education Italy S.r.l.


Recommended