Lezione 4 Hardware di un microprocessore

Documenti analoghi
Lezione 6 L'hardware dedicato.

All interno di un ATmega16 troviamo moltissimi dispositivi trai quali, timer, gestori delle interupt personalizzabili, convertitori A/D, multiplexer

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Davide Gennaretti, Matteo Nicolini

Provolo Sergio, Agosto Francesco

A.S. 2017/2018 PIANO DI LAVORO PREVENTIVO CLASSE 4Be

Architettura di un elaboratore

Architettura di un elaboratore

Architettura di un elaboratore

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S Microprocessori - Microcontrollori.

Struttura di un elaboratore

Costruire memorie ancora più grandi

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN

Lezione 22 La Memoria Interna (1)

Corso di programmazione Arduino DI MALVEZZI DAVIDE

ARCHITETTURA DI UN ELABORATORE. Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Architettura del. Calcolatori (1) Calcolatori (2) L architettura di Von Neumann. CPU RAM Memoria I/O. secondaria. bus

Esame di INFORMATICA Lezione 4

Sistemi a microprocessore

Architettura del Calcolatore

Lezione 15. L elaboratore Elettronico

Architetture dei sistemi elettronici 14. Il microcontrollore

Alimentatore master. Introduzione

ARCHITETTURA DI UN ELABORATORE

Architettura dei Calcolatori Elettronici

Il modello di Von Neumann

Elettronica e Telecomunicazioni

Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche

Cenni sull architettura del calcolatore

ARCHITETTURA DI UN ELABORATORE

Nel microprocessore 8086 abbiamo una gran quantità di registri

MICROCONTROLLORE PIC16F84A

Architettura del calcolatore (Seconda parte)

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Struttura di un sistema di elaborazione. SDE: basi. Descrizione dei componenti (2) Descrizione delle componenti

ARCHITETTURA DEL CALCOLATORE

Applicazioni dei microcontrollori PIC

ARCHITETTURA DI UN ELABORATORE

Componenti e connessioni. Capitolo 3

Laboratorio di Informatica L-A 1

Architettura hardware

ISA Input / Output (I/O) Data register Controller

6: Macchina di Von Neumann

Livello logico digitale bus e memorie

Elementi di informatica

CALCOLATORI ELETTRONICI. I dispositivi di memoria

Sistemi di Elaborazione delle Informazioni

Verso Arduino... E oltre!

Componenti principali

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Architettura dei calcolatori

Struttura hw del computer

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Architettura dell elaboratore

Architettura dell elaboratore

Criteri di caratterizzazione di una memoria

La memoria secondaria

Memorie e Microprocessori

Il Processore: l unità di controllo

Introduzione al PICmicro 16F877 PIC16F877

Macchina di Von Neumann

Giancarlo Rini (rini) FPGA. 29 September 2011

Gestione Degli INTERRUPT

Elementi di informatica

INFORMATICA INDUSTRIALE

Lezione 8. Figura 1. Configurazione del registro INTCON

Memorie a semiconduttore

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

I.P.S.I.A. Di BOCCHIGLIERO. ----Memorie a semiconduttore---- Materia: Elettronica, Telecomunicazioni ed applicazioni. prof. Ing.

LEZIONE 2 Il processore e la memoria centrale

Sistemi di Elaborazione: esercizio con il D12

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Memorie Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella

Linguaggio macchina e register file

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Componenti di un processore

Elementi di base del calcolatore

Organizzata secondo il modello della macchina di von Neumann definita nei tardi anni 40 all Institute for Advanced Study di Princeton.

Come è fatto un computer

La memoria principale

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Il Processore. Informatica di Base -- R.Gaeta 27

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Architettura di un Sistema Informatico

L'architettura del processore MIPS

A.S. 2015/16 CLASSE 5 AEE MATERIA: LABORATORIO DI T.P.S.E.

Secondo biennio Articolazione Informatica Sistemi e Reti Prova Terza

Prefazione...IX. Capitolo 1 - La famiglia di Arduino...1

Reti logiche (2) Circuiti sequenziali

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Reti logiche (2) Circuiti sequenziali

Centralina controllo pompa

Capitolo 2. Elaborazione dei dati. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore

Transcript:

Lezione 4 Hardware di un microprocessore Abbiamo visto nella lezione precedente l'utilità di un sistema a logica programmata e quali siano i vantaggi evidenti rispetto ad un sistema in cui le funzioni siano realizzate mediante componenti logici discreti e cioè a logica cablata. In un passato piuttosto recente però un sistema programmabile a microprocessore rimaneva sempre piuttosto complesso. Per un sistema anche solo minimo infatti occorrevano comunque almeno i seguenti componenti: Un core di calcolo, o microprocessore Una memoria ROM dove memorizzare i programmi in maniera permanente Una memoria RAM per immagazzinare le variabili di funzionamento porte di ingresso uscita digitali La minima richiesta di funzionalità supplettive complicava ulteriormente il sistema con ulteriori dispositivi: Convertitori analogico digitali o digitali analogici Contatori veloci hardware Interfacce seriali Ognuno di questi dispositivi richiedeva 10 14 linee di cablaggio nella migliore delle ipotesi, per non parlare delle memorie RAM ROM che tipicamente chiedevano 20 connessioni ciascuna! Poi occorreva una logica di controllo e sincronizzazione: Linee di strobe lettura/scrittura Linee di selezione memoria o porte di I/O Linee di interrupt Aggiungiamo qualche integrato per la decodifica degli indirizzi... si comprende che anche un sistema minimo occupava almeno 150x150 mm! Giusto a titolo di cuiriosità si riporta nella pagina seguente lo schema di un sistema basato su un popolarissimo chip tanto in voga negli anni 80 l'8085:

Come potete vedere ci sono un sacco di chip e di connessioni! Tutto questo pe poter leggere quattro sonde di temperatura, 9 pulsanti, un misero display da 6 cifre e pilotare quattro relè! Curiosità: non disprezzate l'8085! Ricordate la sonda Mars Pathfinder lanciata pochi anni fa dalla Nasa su Marte? Ebbene usava un'8085! Perché? Affidabilità assoluta maturata in 20 anni di esperienza nell' hardware e nel software.

L'aumento della densità di integrazione nei microchip ha portato però a incorporare buona parte degli elementi prima citati in un unico dispositivo più specializzato. Nel 1982 l'intel presentava al mondo il primo microprocessore single chip, l' 8051. Dopo una prima fase di incertezza, il mercato dei microprocessori single chip è letteralmente esploso, 68H05, AVR, COP, sono tutte famiglie di piccoli micro che in un singolo componente a 20 40 piedini incorporano tutte le funzioni e l'hardware necessario a portare un po di intelligenza in dispositivi elettronici di largo uso. Televisori, lavatrici, HI FI, walkman, radio ma anche automobili apparecchi medicali o strumenti musicali, tutti ormai portano al loro interno un qualche microprocessore single chip. E per ultimi i PIC. Questi infatti sono praticamente gli ultimi arrivati in termini di età, ma hanno ben presto invaso il mercato per alcune indovinate caratteristiche hardware: Porte di I/O molto flessibili Versioni riprogrammabili più volte Estrema flessibilità dell'hardware Programmazione della Rom in seriale, che consente la costruzione di semplicissimi programmatori di device a bassissimo costo La riprogrammabilità è probabilmente la caratteristica più gettonata. La memoria programmi è cioè di tipo Eerom o Flash rom, vale a dire che con semplici strumenti è possibile cambiare il programma da noi scritto senza dover sostituire il chip. Oggigiorno questo puo sembrare scontato, ma fino a una decina di anni fa era assolutamente normale utilizzare microprocessori single chip cosiddetti OTP cioè one time programmable. Per gli esperimenti si utilizzava una versione speciale del chip in cui la memoria programmi era costituita da una Eprom che come ben sappiamo va cancellata con raggi ultravioletti, ma questa versione di chip costava mediamente 20 30 volte quanto un chip OTP. Inoltre per immagazzinare il programma dentro al dispositivo occorreva trasferire i dati in modo parallelo rendendo necessario l'uso di molto hardware con conseguenti costi elevati. La famiglia PIC La microchip, costruttrice dei pic, hasuddiviso la produzione dei pripri chip in tre famiglie: Low end device, siglati 12C... Medium end device, siglati 16C/F... High end device, siglati 17/18C/F... Il costo e la complessità ovviamente crescono spostandosi dalla famiglia low alla high. Agli sperimentatori come noi interessano però esclusivamente i dispositivi delle prime due famiglie, anzi della seconda! Si accennerà brevemente al fatto che la serie 12 ha caratteristiche hardware veramente minime, al massimo 512 byte di memoria programma e assenza di interrupt. Se ne pensi all'uso ad esempio in un piccolo radiocomando. La famiglia 17/18 è estremamente complessa, ma il target d'uso è per sistemi di medie dimensioni, mancano infatti periferiche integrate come ADC o porte seriali. Questi microprocessori vanno infatti attorniati da periferiche esterne e possono conseguentemente lavorare con quantità medie di memoria, tipicamente 64 o 128 Kbyte.

L'uso di questi chip può essere ad esempio in un grosso strumento da laboratorio con molte funzioni. Arriviamo finalmente alla serie che a noi interessa, la 16C/F... Il 16F84 è l'esempio più famoso, e proprio di questo inizieremo ad analizzarne la struttura interna. NON VI SPAVENTATE! L'apparente complessità del sistema vi sarà presto chiarita! Cominciamo analizzando i singoli blocchi di cui il sistema è composto. Partendo dallo spigolo superiore sinistro troviamo la Flash Program Memory. Come indica chiaramente il nome anglofono si tratta della memoria in cui immagazzineremo le istruzioni dei nostri programmi. Flash indica la tipologia costruttiva che ne permette la facile riprogrammazione innumerevoli volte anche, con qualche limite, a chip montato nel circuito di destinazione finale. E' costituita da una serie sequenziale di locazioni di 14 bit ciascuna.

Procedendo verso destra troviamo il Program Counter. Si tratta di un contatore che serve ad indirizzare la memoria programmi appena descritta per poterne estrarre il contenuto in maniera più o meno sequenziale. In pratica questo dispositivo è responsabile dell'ordine in cui le nostre istruzioni verranno eseguite. Se il programma non contenesse alcun salto, questo contatore si comporterebbe come qualunque contatore hardware: conterebbe ciclicamente da zero al massimo valore consentito che nel nostro caso è l'estensione della memoria programmi. Appena sotto troviamo lo Stack. E' un tipo di memoria ram specializzata che può memorizzare solamente il contenuto del progra counter ad un dato momento. Ci servirà per poter salvare la posizione di esecuzione corrente del nostro programma in talune situazioni. Per ora accententatevi di sapere che essendo di 8 locazioni, potrete annidare un massimo di 8 subroutine. Segue a destra la memoria RAM contenente svariate locazioni di 8 bit ciascuna e che la Microchip ha fantasiosamente chiamato file register. Questa area di memoria va suddivisa in due gruppi di registri: registri generici registri speciali o SFR i registri generici non sono niente altro che comune ram statica in cui potete immagazzinare qualunque dato vi interessi, mentre gli Sfr sono registri, ampiamente descritti nel datasheet del micro, che servono a settare o interrogare il funzionamento hardware del microprocessore. La descrizione completa la trovate sul datasheet, qualche altra informazione vi verrà fornita più avanti. In alto a destra c'è la Eeprom che potremo utilizzare per memorizzare dati in modo non volatile rispetto all'alimentazione. Per accedere alle celle di questa memoria occorre passare per due registri SFR dato che non e' direttamente visibile come ad esempio la ram. Occorre quindi prima scrivere l'indirizzo della locazione a cui si vuole accedere in un registro chiamato EEADR (Eeprom AddRess) e poi leggere o scrivere i dati tramite un'altro SFR chiamato EEDATA (Eeprom DATA). Scendendo verso il basso incontriamo il Timer0. E' un circuito temporizzatore che può essere configurato in diversi modi per contare impulsi o generare frequenze. E' un contatore ad 8 bit con una capacita' massima di 256, ma puo essere preceduto da un prescaler con un fattore di divisione 2/256. Caratteristica importante di questo prescaler è la massima frequenza in ingresso... fino a 40 Mhz! Questo ne ha permesso l'uso radioamatoriale come frequenzimetro... Sotto ancora ci sono le porte di ingresso uscita. Da appositi SFR sono configurabili con ingressi o uscite in totem pole, e sono in grado di erogare o assorbire fino a 20 ma ciascuna, cosa utile per poter pilotare direttamente dei diodi led. Spostandoci a sinistra dalle porte di I/O troviamo la ALU e il registro W che abbiamo incontrato la lezione scorsa. La ALU (Aritmetic Logic Unit) è responsabile di tutte le operazioni di calcolo matematico o logico, sia una somma che un or a bit, ed il risultato viene sempre riportato nel registro W, così pure come uno dei due operandi di tutte le operazioni proviene sempre dal W stesso. Così per eseguire una somma fra due numeri, occorrerà dapprima caricare in W in primo operando, indicare nell'istruzione aritmetica logica il secondo operando in RAM ed il risultato lo troveremo in W.

A sinistra ancora c'è la circuitazione di clock e controllo dell'intero microprocessore, vi vanno collegati l'oscillatore che temporizza tutte le operazioni sia esso un quarzo o una rete RC (a seconda della precisione richiesta). Vi si trova anche il circuito di reset esterno se impiegato. Per ultimo menzioniamo al centro dello schema un SFR speciale: lo Status Register. Questo SFR riporta lo stato delle operazioni matematiche fatte nella ALU. Bit indicano se il risultato è zero, negativo o c'è stato un riporto. Altri bit sono settabili da software e selezionano banchi diversi di memoria SFR etc... LA MEMORIA Cominciamo analizzando meglio la memoria del nostro processore. Ci sono due blocchi distinti di memoria nel pic16c84. Queste sono la memoria programmi e la memoria dati. Ogni blocco ha il suo bus separato in modo che l'accesso ad entrambi i blocchi sia possibile in un solo ciclo di clock del processore. La memoria dati può essere a sua volta divisa in ram generica e Sfr o registri speciali. Gli Sfr servono per controllare il funzionamento dell'hardware del processore. Le operazioni che ogni SFR compie sono descritte separatamente per ognuno. La memoria dati contiene anche la Eeprom per dati permanenti. Questa memoria NON è direttamente mappata nella memroia dati, ma accessibile indirettamente. Cioè un puntatore apposito specifica l'indirizzo a cui si vuole accedere, mentre tramite un altro registro vi si leggono/scrivono i dati. I 64 byte di cui questa è composta hanno un indirizzo compreso fra 0 e 3fh. Organizzazione della memoria programmi. Il pic16c84 ha un contatore di programma di 13 bit capace di indirizzare uno spazio di 8K x 14 bit. Nel pic16c84 solo il primo 1K x 14 (0000 03ffh) è fisicamente implementato. Accedere ad una locazione sopra questo limite causerà uno salto circolare ad inizio memoria. Ad esempio le locazioni 20h, 420h, 820h, C20h, 1020h, 1420h, 1820h, e 1C20h conterranno la stessa istruzione e si riferiranno alla stessa cella fisica di memoria. Un reset del micro costringerà l'esecuzione del programma alla locazione 0000h, mentre un interrupt porterà alla locazione 0004h.

Organizzazione della memoria dati. La memoria dati è partizionata in due aree. La prima e' l'area SFR, mentre la seconda e' la ram generica. Porzioni della memoria sono in due banchi. Questo vale per entrambe la RAM e gli SFR. I due banchi degli SFR sono per i registri che controllano le funzioni periferiche. La selezione di quale banco utilizzare viene fatta mediante due bit del registro STATUS (che ovviamente è accessibile identicamente da entrambi i banchi!). Istruzioni come MOVWF o MOVF possono muovere valori dal registro W a qualunque locazione di questo file ( F ) register. All'intera memoria dati si può accedere direttamente o indirettamente mediante il File Select Register (FSR). L'indirizzamento indiretto usa sempre e comunque i due bit del registro STATUS per decidere a quale banco accedere. Il banco 0 è selezionato azzerando il bit RP0 (bit 5 del registro STATUS). Settare questo stesso bit causa la selezione del banco 1. Ciascun banco si estende fino a 7Fh (128 byte). RAM: Genericamente parlando di pic occorrerebbe dire che l'uso dei banchi di memoria consente l'accesso di oltre 96 byte di RAM, cosa altrimenti impossibile.

Nel caso del 16C84 però la quantità implementa ammonta a 36 byte, e questa quantità di memoria sta comodamente in un banco solo, con il risultato che per qualunque banco si selezioni, la memoria a cui si accede è la stessa, siate in banco 0 che nell' 1.

Nel pic16f84 la quantità di memoria RAM ammonta a 68 byte secondo la mappa che segue. Anche questa quantità però sta comodamente nel banco 1, quindi vi si accede in modo identico al precedente.

Sommario degli SFR

Registro STATUS Il registro status contiene lo stato aritmetico della ALU, lo stato di reset e i bit di selezione per la memoria dati. Come con qualunque registro, lo STATUS può essere la destinazione di qualunque istruzione, se però l'istruzione che lo sovrascrive comporta un'alterazione dei bit Z, DC o C la scrittura di questi viene disabilitata. Questi bit vengono settati in base allo stato logico del processore. TO e PD inoltre non sono scrivibili. Per questi motivi, scrivere qualcosa su STATUS può avere risultati imprevedibili. Per esempio l'istruzione CLRF STATUS dovrebbe azzerare l'intero registro, mentre in realtà alla fine troveremo 000uu1uu (dove u = non cambiato). Se vogliamo modificare i bit di stato occorre usare BCF, BSF, SWAPF e MOVWF dato che queste istruzioni NON alterano i bit di stato. Che un'istruzione alteri o meno lo stato delle flag lo potete semplicemente controllare nelle specifiche dell'istruzione stessa sul datasheet del processore.

Registro OPTION Il registro OPTION può essere letto/scritto e contiene vari bits per configurare il timer0/watchdog prescaler, il pin di interrupt esterno, Timer0 e i pullup di PORTB. NB il prescaler è unico, se lo si assegna al Watchdog (PSA = 1) il timer se ne trova sprovvisto.

Registro INTCON. Come dice il nome INTCON regola il funzionamento delle sorgenti di interrupt. NB: T0IF, INTF o RBIF saranno settati dall'hardware all'occorrenza delle rispettive condizioni anche se il bit di abilitazione è zero o pure è zero il GIE (abilitazione di tutti gli interrupt).

Demoboard Costruiamoci la nostra schedina di sperimentazione. Seguite questo schema, vi sarà utile per le prove che suggeriremo nelle prossime lezioni!

Per il Pic usate uno zoccolo lamellare a 18 pin, in numerose prove si è dimostrato più affidabile che i tanto decantati zoccoli a tulipano (o torniti che dir si voglia...). Il display lcd è un modello con controller HD44780 o compatibile, praticamente uno standard assoluto! se cercate al prossimo mercatino lo troverete facilmente sotto i 7 euro, in un negozio specializzato difficilmente lo reperirete a meno di 15... ma ai radioamatori in questo campo c'è poco da insegnare... Per ora non montatelo! limitatevi ad un connettore da flat cable a 14poli, il display lo collegheremo in un secondo tempo, e poi ci occorre che sia rimovibile. La piedinatura è pure essa standard, in caso di dubbi guardate il datasheet del modello in vostro possesso, personalmente non ho MAI trovato display con HD44780 che avessero una piedinatura differente dallo standard. Il significato dei segnali è pure unificato. I numeri riportati a fianco del display sono riferiti alla fila di contatti present sul display stesso. Se però lo collegate tramite un flat cable (saldandovi direttamente i fili), la stessa piedinatura vale per il connettore sul circuito principale. I pulsanti sono piu comodi se del tipo da circuito stampato, metteteli direttamente sulla basetta. Il quarzo è del tipo per microprocessori, a basso costo. Tenete tutte le connessioni del quarzo il più corte possibile! stesso discorso vale per i condensatori da 33pf e la relativa massa. Per l'alimentazione usate un comune regolatore 7805 anche senza dissipatore, il consumo di corrente è minimo. Importante la presenza dei due condensatori di disaccoppiamento da 100nF fra i piedini in/out e la massa. Attenzione alle polarità dei condensatori facenti capo al MAX232, alcune sono opposte al normale! Per l'uscita RS232 potete usare un connettore da stampato, che però ha i piedini fuori standard di una basetta millefori, vi consiglio invece di uscire dalla basetta con un cavetto schermato di 1mt circa terminante con un connettore volante femmina, lo collegherete direttamente alla presa del pc. Usate una basetta millefori per costruire il circuito... creare un circuito stampato ad hoc per un circuito sperimentale è una perdita di tempo e non vi consentirà di aggiungere espansioni! Sempre nell'ottica sperimentale tenete le dimensioni della basetta un po abbondanti e non prevedete nessun contenitore. Usate dei morsetti a vite per l'alimentazione, così pure come per l'ingresso del fotoaccoppiatore 4n25 e le uscite dell'uln2004.