Un micro FPGA. skills. come il core ABC. il core ABC sia la suite di sviluppo di AC-



Documenti analoghi
LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Invio SMS. DM Board ICS Invio SMS

FPf per Windows 3.1. Guida all uso

Autoware Ladder Tool (per Arduino ) Basic Tutorial

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Architettura hardware

Laboratorio di Informatica

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Powered by: Relators:

Gestione della memoria centrale

Calcolatori Elettronici A a.a. 2008/2009

Struttura del calcolatore

CATALOGO E-COMMERCE E NEGOZIO A GRIGLIA

30 giorni di prova gratuiti, entra nel sito scarica e installa subito mypckey

MANUALE PARCELLA FACILE PLUS INDICE

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

CHIUSURE di MAGAZZINO di FINE ANNO

Fasi di creazione di un programma

File, Modifica, Visualizza, Strumenti, Messaggio

LABORATORIO DI SISTEMI

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Google Apps for Education F.A.Q. a cura di Luigi Parisi Servizio Marconi T.S.I. - USR Emilia-Romagna. aggiornata al 18 maggio 2015.

Aggiornare applicazioni virtualizzate con App-V

1) GESTIONE DELLE POSTAZIONI REMOTE

Arduino: Programmazione

Office 2007 Lezione 08

Product Shipping Cost Guida d'installazione ed Utilizzo

Come masterizzare dischi con Nero 11

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

CPU. Maurizio Palesi

Vittorio Veneto,

AD HOC Servizi alla Persona

Architettura di un calcolatore

Programmare in Java. Olga Scotti

GUIDA AL SOCIAL CARE

Come creare il test di Yasso tramite l applicazione Training Center

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Creare una nuova spedizione personalizzata.

CamiGas-Digigas: Manuale Referente

Guida all utilizzo del CRM

Valutazione delle Prestazioni

Premessa Le indicazioni seguenti sono parzialmente tratte da Wikipedia ( e da un tutorial di Pierlauro Sciarelli su comefare.

Con accesso remoto s'intende la possibilità di accedere ad uno o più Personal Computer con un modem ed una linea telefonica.

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Dispensa di Informatica I.1

Guida alla registrazione on-line di un DataLogger

FIRESHOP.NET. Gestione completa delle fidelity card & raccolta punti. Rev

DATA BASE ON LINE (BANCA DATI MODULI SPERIMENTALI)

Personalizzazione documenti Word

Mac Application Manager 1.3 (SOLO PER TIGER)

System Center Virtual Machine Manager Library Management

Come creare il test di Conconi tramite l applicazione Training Center

C. P. U. MEMORIA CENTRALE

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Esame di INFORMATICA

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

File Server Resource Manager (FSRM)

Manuale Servizio NEWSLETTER

Procedure di ripristino del sistema.

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

GESGOLF SMS ONLINE. Manuale per l utente

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Laboratorio di Informatica

Introduzione a Dev-C++

I file di dati. Unità didattica D1 1

ColorSplitter. La separazione automatica dei colori di Colibri.. Perché ColorSplitter? Come opera ColorSplitter?

MANUALE UTENTE Fiscali Free

SUAP. Per gli operatori SUAP/amministratori. Per il richiedente

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

Registratori di Cassa

FIRESHOP.NET. Gestione del taglia e colore.

Ing. Paolo Domenici PREFAZIONE

Dispositivo Firma Digitale

Olga Scotti. Basi di Informatica. File e cartelle

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Tale attività non è descritta in questa dispensa

Esercizio data base "Biblioteca"

Gestione Rapporti (Calcolo Aree)

ZFIDELITY - ZSE Software & Engineering Pag.1 / 11

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

TEST: Hardware e Software

INSERIMENTO DATI BASILARI

MOCA. Modulo Candidatura. [Manuale versione 1.0 marzo 2013]

Come modificare la propria Home Page e gli elementi correlati

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

Database 1 biblioteca universitaria. Testo del quesito

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

CONTENUTO DELL AGGIORNAMENTO

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

= 0, 098 ms. Da cui si ricava t 2 medio

ELENCO CLIENTI FORNITORI Patch1

L interfaccia utente di Office 2010

Argo DidUp. Vi troverete nel portale Argo da dove potete lanciare l applicativo <Argo DidUp>

Transcript:

skills di Un micro FPGA che parte dall ABC Quando in molti progetti è necessario unire alla logica programmabile la funzionalità di un piccolo microprocessore le soluzioni semplici come il core ABC possono essere la risposta Ci sia concesso il gioco di parole, ma è un modo per introdurre questa soluzione di progetto basata su FPGA proposta da ACTEL, il cui nome è proprio ABC. Il nome non è casuale perché il core in oggetto è un semplice microprocessore, che in un numero di gate veramente contenuto, sviluppa e supporta le istruzioni basilari richieste ad un qualsiasi micro sia su silicio oppure, come in questo caso, su FPGA. Insomma l ABC dei microprocessori. Prima di affrontare la sua presentazione è importante sottolineare che stiamo parlando di un oggetto completamente gratuito e sviluppabile a sua volta usando tools gratuiti. Infatti sia il core ABC sia la suite di sviluppo di AC- TEL Libero 8.5 sono completamente gratuiti e scaricabili dal sito www.actel.com, oppure è possibile richiedere una copia su DVD ai riferimenti riportati al fondo dell articolo. Inoltre per le prove HW fisiche sono disponibili Starter Kit a basso costo, per le FPGA della Famiglia Proasic3 e IGLOO programmatore incluso, con prezzi a partire da 45 euro. Per i più esigenti è disponibile una scheda con zoccolo ZIF per poter usare la board con i diversi tagli di FPGA (ricordiamo che esiste, a parità di package, la possibilità di spostare la densità della FPGA da 60 K a 1M di Gate). Va sottolineato che le dimensioni del- Figura 1: il wizard per la creazione del progetto. 28

Figura 2: la pagina di configurazione del micro. l oggetto generato sono tali da poterlo integrare anche nel taglio da 30K Gate A3P030, per esempio potremmo crearci un microprocessore del costo di circa 1 euro con 72 I/O usando totalmente il package a 100 pin. Ambiente di sviluppo Come anticipato, per lavorare su questo progetto necessitiamo esclusivamente della suite Tools Libero 8.5 licenze gratuite richiedibili su http://register.actel.com, utilizzando esclusivamente il VOL del disco C dove eseguire l installazione. Lanciando Libero e seguendo semplicemente il Wizard, per un nuovo progetto dovrete soltanto definire il nome del progetto stesso selezionando come linguaggio il VHDL (step1), scegliere il componente desiderato, che per le nostre prove era un A3P250-FGG256 (step2) e concludere senza nulla altro aggiungere. Il risultato sarà come in figura 1. Da questo punto selezionando l icona Smart-design, successivamente la sotto voce Smart-design-component e dando un nome al componente, attivate l ambiente per poter utilizzare tutte le periferiche e le macro riportate a destra della figura 1. Cliccando su core ABC vi verrà chiesto il nome che desiderate attribuire al core e conseguentemente si aprirà la pagina principale relativa alla configurazione del micro (figura 2). Struttura del microprocessore ABC Approfondiamo la conoscenza del core ABC: essendo un micro sviluppato su FPGA, permette ovviamente la scelta della dimensione del Bus dati fra 8 e 32 bit. Lo stesso vale per il BUS Indirizzi, che può essere configurato come dimensione da 8 a 16 bit, permettendo una ottimizzazione in termini di gate consumati (non dimentichiamo che stiamo parlando di un micro fatto su FPGA, per cui è inutile costruire una macchina superiore alle nostre esigenze). Gli APB (Advanced Peripheral Bus) sono le varie periferiche, che decidiamo di gestire con il nostro core ABC; esse potrebbero essere sia periferiche sviluppate da noi, oppure una delle tante periferiche fornite gratuitamente da ACTEL nell ambiente stesso. Volendo proporre un esempio potremmo, in modalità del tutto gratuita, collegare a questo sistema una UART, una SPI e un generatore di PWM, come macro (FREE) fornite da ACTEL e nel contempo un controller VGA da noi sviluppato. In ogni caso potremmo utilizzare fino a sedici periferiche collegate al micro ABC attraverso il controller APB. Nel nostro esempio di progetto abbiamo fatto uso del core PWM, fornito gratuitamente e selezionato dalla lista Periferiche (figura 1 a destra in alto). La voce Z register size ci permette di attivare il registro specifico per le operazioni di loop counter e di indirizzamento indiretto; si noti che la sua dimensione deve essere compatibile con il Bus dati selezionato. Punti importanti della configurazione sono anche la scelta di quanti INPUT e OUTPUT si vogliono usare direttamente (da 1 a 32, ma ricordatevi che la scelta deve essere congrua con la dimensione del BUS dati definito) e quante periferiche (APB slot) ver- 29

skills Listato del Programma di Prova DEF COREPWM 0 DEF PWM_PRESC 0x00 DEF PWM_PERIOD 0x04 DEF PWM_ENAB1 0x08 DEF PWM_ENAB2 0x0C DEF PWM1_POSEDGE 0x10 DEF PWM1_NEGEDGE 0x14 DEF PWM2_POSEDGE 0x18 DEF PWM2_NEGEDGE 0x1C DEF PWM3_POSEDGE 0x20 DEF PWM3_NEGEDGE 0x24 DEF PWM4_POSEDGE 0x28 DEF PWM4_NEGEDGE 0x2C JUMP $Main $Main APBWRT DAT16 COREPWM PWM_PRESC 1 APBWRT DAT16 COREPWM PWM_PERIOD 500 // 20uS 50kHZ DI PERIODO PER TUTTI E 4 I PWM APBWRT DAT16 COREPWM PWM1_POSEDGE 0 APBWRT DAT16 COREPWM PWM1_NEGEDGE 16 APBWRT DAT16 COREPWM PWM2_POSEDGE 16 APBWRT DAT16 COREPWM PWM2_NEGEDGE 32 APBWRT DAT16 COREPWM PWM3_POSEDGE 32 APBWRT DAT16 COREPWM PWM3_NEGEDGE 48 APBWRT DAT16 COREPWM PWM4_NEGEDGE 64 APBWRT DAT16 COREPWM PWM_ENAB1 0x0F $Start load 0x01 RAMWRT 0x10 ACC shl0 RAMWRT 0x11 ACC shl0 RAMWRT 0x12 ACC shl0 RAMWRT 0x13 ACC NOP RAMREAD 0x10 RAMREAD 0x11 RAMREAD 0x12 RAMREAD 0x13 JUMP $Start $Wait10ms // 5ms con CLK 50Mhz LOADZ 41666 $Wait10msInner DECZ JUMP IFNOT ZZERO $Wait10msInner RETURN ranno usate nel sistema. Una volta effettuate queste scelte dovrete definire se il codice sorgente che scriverete sarà residente su RAM, modalità soft mode (in questo caso verranno usati i blocchi DP RAM interni della A3P250) oppure sarà diffuso nella FPGA stessa, utilizzando i gate interni (HW FPGA TILE). E importante indicare che questa soluzione per codici contenuti (meno di 256 / 512 istruzioni) è persino consigliabile, considerato il numero limitato di gate che la soluzione HW consuma. Per fornire dei valori relativi a una FPGA A3P250, si segnala che un micro ABC con un codice da 256 istruzioni caricato in HW mode (usando quindi i gate della FPGA) il consumo, in termini di TILE circa il 12% della FPGA stessa. Si tenga conto che in questa modalità è 30 anche possibile considerare l utilizzo di due micro ABC in parallelo, semplificandoli e tagliandoli sulla specifica, in tal caso il loro consumo in termini di gate consumati è ancor più contenuto. Conclude la nostra fase di configurazione la scelta di avere o meno alcune istruzioni di tipo avanzato, qualora aveste scelto la modalità di esecuzione in DP RAM, ad esempio la possibilità di avere istruzioni di moltiplicazione, indirizzamento indiretto alle periferiche APB e dimensione del Bus della porta utilizzata per il caricamento del codice. Dato che il core può eseguire fetch solo da DP RAM, prima di lanciare l esecuzione è necessario caricare il codice nella DP RAM stessa. Per questa operazione il core ABC dispone di una porta specifica e di segnali di controllo, per cui al power up un unità aggiuntiva (per esempio un piccolo modulo scritto in VHDL) deve provvedere al caricamento, leggendo da una memoria EEPROM seriale esterna e copiandola nella DP RAM stessa. E importante evidenziare che per un codice inferiore ai 128 byte è possibile usare la FROM interna della A3P250, che è a tutti gli effetti una EEPROM disponibile a costo zero. Istruzioni e codice macchina per il core ABC Definite queste opzioni possiamo procedere alla scrittura del codice. Come ogni micro la maggior parte delle istruzioni lavorano intorno all accumulatore. Sono previste e supportate istruzioni aritmetiche

e logiche sia su accumulatore sia fra accumulatore e variabile in Ram La Ram di sistema prevede le sue istruzioni di scrittura e lettura, mentre per i loop di controllo esiste uno specifico registro (registro Z) su cui è possibile operare. Le operazioni dirette alle periferiche APB hanno un loro set di istruzioni e si noti che in questo caso è possibile l indirizzamento indiretto da registro Z. Concludono il set delle istruzioni le operazioni condizionate e di controllo del flusso (Jump, Call e Return), mentre per la gestione della porta di I / O esistono le istruzioni dirette e IO- READ. Il supporto interrupt è dato da un PIN specifico, pertanto in fase di configurazione dovrete definire l indirizzo a cui salterà il flusso, in risposta alla richiesta di interrupt esterna. La configurazione dello stato attivo del pin INTRQ è sempre possibile nella fase iniziale delle impostazioni. Le istruzioni condizionate possono usare sia lo stato dell accumulatore sia quello del registro Z, oppure lo stato della porta INPUT. Va ricordato che è supportata anche la moltiplicazione con estensione a 16 bit. Il micro ABC richiede per quasi tutte le sue istruzioni tre colpi di clock, per cui, supponendo di fornire un clock base di 60Mhz, avremo una macchina di 20 MIPS. Descrizione programma di prova Premesso che attualmente il linguaggio disponibile è ancora l Assembler, la casa madre ha annunciato che sarà fornito a breve un piccolo compilatore C. Si noti comunque che per questo tipo di macchina l uso del linguaggio Assembler, seppur non trasportabile, è molto semplice e immediato. Il nostro programma di test provvede alla copia in RAM del valore HEX 01 e allo shiftdel medesimo, per accendere in maniera sequenziale dei LED collegati sulla porta di OUTPUT, mentre subito allo start viene programmato il modulo PWM, che è stato istanziato durante la costruzione del progetto nella suite Core Console. Nel dettaglio questo modulo dispone di vari registri di programmazione per l abilitazione del canale PWM, prescaler della frequenza base, definizione del periodo PWM e della durata parte alta e parte bassa del canale stesso. Si tenga conto che questo modulo codice MIP

skills Figura 3: simulazione del progetto. Figura 4: simulazione del progetto. 32

è configurabile come numero di canali fino ad un massimo di 16. Anche i registri stessi possono essere dimensionati come larghezza, sempre per permettere la maggior ottimizzazione in termini di gate consumati. Prima di effettuare queste operazioni abbiamo inserito le DEFINE dei registri del core PWM, dopo la prima istruzione che salta al Main, troviamo le istruzioni che effettuano la init del modulo PWM stesso, usando l istruzione APBWR, che ci permette di scrivere su uno qualsiasi dei 16 slot periferici disponibili (nel nostro caso lo slot 0). Conclude il semplice programma l operazione di scorrimento di un bit a 1 sui primi 4 pin della porta di OUTPUT e la memorizzazione in RAM del valore medesimo Questa memorizzazione è stata inserita per semplice prova, infatti nella parte finale del programma tali valori vengono riletti dalla RAM e riportati sulla porta di OUT- PUT. Per permettere una visualizzazio- RIFERIMENTI A3P Family Hand Book http://www.actel.com/products/pa3/docs.aspx Core ABC Hand Book http://www.actel.com/ipdocs/coreabc_hb.pdf Core PWM Data sheet Libero 8.5 suite http://www.actel.com/ipdocs/corepwm_hb.pdf http://www.actel.com/download/software/libero/default.aspx Richiesta Progetto completo CoreABC_Semplice / Libero 8.5 su DVD marketing@latecnikadue.com ne su oscilloscopio di questo scorrimento, abbiamo fatto uso di una chiamata ad una routine di ritardo di 10ms. Conclusioni I test eseguiti in laboratorio su una scheda prova, hanno evidenziato una velocità ottenibile di 40MIPS senza particolari ottimizzazioni, ad eccezione dell accorgimento di piazzare tutto il blocco microprocessore a ridosso della zona RAM (per la A3P250 in alto) per mantenere i tempi di propagazione contenuti. La figura 3 riporta la simulazione dove è possibile notare i quattro segnali PWM generati come da programma mentre gli Output effettuano lo shift dei bit; la base tempi è stata accorciata per permettere una visualizzazione maggiore dei segnali in uso Il core ABC si dimostra interessante soprattutto per la sua adattabilità e flessibilità. Infatti grazie alla scelta dinamica del BUS, alla possibilità di inserire anche istruzioni attualmente non supportate e al basso consumo di gate, è possibile il suo utilizzo su FPGA di taglio piccolo a basso costo oppure il suo utilizzo multiplo su FPGA di taglio maggiore. Codice MIP codice MIP 33