Sistemi a Microcontrollore. 3. Bus e Mappaggio in Memoria

Documenti analoghi
Sistemi a Microcontrollore. 2. Microcontrollori Atmel AVR

Sistemi a Microcontrollore. 2E. Bus e Mappaggio in Memoria

Sistemi a Microcontrollore. 5. IO Analogico

Sistemi a Microcontrollore. 4E. I/O Analogico

verso espandibili eterogenei tempo di accesso tempo di risposta throughput

CALCOLATORI ELETTRONICI II

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

Architettura e funzionamento del calcolatore

L'architettura del processore MIPS

Embedded and Reconfigurable Systems M 03 Bus protocols

CALCOLATORI ELETTRONICI. I dispositivi di memoria

Interfacciamento di periferiche I/O al μp 8088

verso espandibili eterogenei tempo di accesso tempo di risposta throughput

Componenti principali

Introduzione alle gerarchie di memoria

Richiami sull architettura del processore MIPS a 32 bit

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

cpu CONTROLLORI DI I/O ADDRESS BUS CONTROL BUS DATA BUS D[0:7] dec CS# RD# WR# A0,..An RESET ...?

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

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

Componenti e connessioni. Capitolo 3

Periferiche CPU. Misure e Sistemi Microelettronici Sistemi 6-1 SREG. Data Bus Address Bus Control Bus

Architettura dei sistemi di elaborazione (Input/Output parte 1)

Richiami sull architettura del processore MIPS a 32 bit

static dynamic random access memory

Provolo Sergio, Agosto Francesco

Corso di Fondamenti di Informatica Elementi di Architettura

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo. Classificazione. I microcontrollori

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino

Reti logiche (2) Circuiti sequenziali

Architettura del calcolatore (Seconda parte)

Reti logiche (2) Circuiti sequenziali

Input/Output. bus, interfacce, periferiche

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo

Architettura di un Sistema Informatico

Lezione 22 La Memoria Interna (1)

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Sottosistema d ingresso uscita

Sottosistemi ed Architetture Memorie

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

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

Architettura di una CPU

LA GESTIONE DELLA I/O

Esercitazione 03. Memorie e Registri. Gianluca Brilli 03/05/19 ARCHITETTURA DEI CALCOLATORI 1

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Input/Output (Cap. 7, Stallings)

Input/Output. bus, interfacce, periferiche

Le memorie Cache n-associative

I bus. Sommario. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Architettura del calcolatore. Prima parte

INTERFACCE MEMORY-MAPPED. Grazia Pagano DMI, Seminario di Sistemi dedicati 8 Gennaio 2018

Calcolatori Elettronici

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

CPUSim Laboratorio 14/11/2012.

Elettronica per l informatica. Cosa c è nell unità A. Unità A: Bus di comunicazione. A.1 Architetture di interconnessione A.2 Esempi commerciali

2. Architettura di un calcolatore

Input/Output. bus, interfacce, periferiche

Modello di von Neumann

Architettura di von Neumann

Il Sottosistema di Memoria

La pipeline. Sommario

La comunicazione con l esterno

Linguaggio macchina e register file

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

Architettura e funzionamento del calcolatore

L architettura di riferimento

Corso di Calcolatori Elettronici I

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

cpu CONTROLLORI DI I/O All interno della periferica registri o parole di stato e memoria ADDRESS BUS CONTROL BUS DATA BUS D[0:7] dec CS# RD# WR#

Il Sottosistema di Memoria

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

Corso di Alfabetizzazione Informatica 2001/2002. La CPU. F. Tortorella Università degli Studi. di Cassino

Con riferimento al funzionamento dei bus di un calcolatore: tracciare e illustrare il diagramma di temporizzazione di un

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

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Sistemi di Elaborazione: esercizio con il D12

Fondamenti di Informatica A. A / 1 9

Elementi di informatica

Architettura hardware

SISTEMA DI I/O CALCOLATORI ELETTRONICI I

Elementi di informatica

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

Dispositivi di I/O. Dispositivi di I/O

La CPU a singolo ciclo

Macchina di von Neumann

Il processore: unità di elaborazione

L unità di controllo di CPU a singolo ciclo

Secondo l architettura di Von Neumann il bus rappresenta il punto di interconnessione di tutti i componenti del calcolatore.

Arithmetic Logic Unit

Esame di INFORMATICA Lezione 4

Università degli Studi di Cassino e del Lazio Meridionale

Architettura dell elaboratore

Architettura dell elaboratore

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura del Calcolatore

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Transcript:

Sistemi a Microcontrollore 3. Bus e Mappaggio in Memoria Anno Accademico 2018/2019

Indice Il bus Interfacce di Lettura e Scrittura Indirizzamento Mappaggio in Memoria Indirizzamento Separato Sincronizzazione Sincronizzazione Software Sincronizzazione Hardware I/O Parallelo

Indice Il bus Interfacce di Lettura e Scrittura Indirizzamento Mappaggio in Memoria Indirizzamento Separato Sincronizzazione Sincronizzazione Software Sincronizzazione Hardware I/O Parallelo

Il Bus Il bus è un insieme di connessioni attraverso le quali i dati sono trasmessi da una sorgente ad una destinazione src1 src2 srcn BUS dst1 dst2 dstm

Il Bus Le caratteristiche principali del bus sono profondità del bus (bus width) in bit detemina quanti dati possono essere trasmessi contemporaneamente velocità del clock in MHz determina quanto spesso i dati possono essere trasmessi sul bus

Il Bus Tipicamente i bus consistono di 3 parti o tipologie di segnali data bus trasferisce effettivamente i dati address bus trasferisce l informazione relativa alla destinazione control bus trasferisce segnali di controllo src1 src2 srcn DATA BUS BUS ADDRESS BUS CONTROL BUS dst1 dst2 dstm

Il Bus Tipicamente il processore è connesso alle periferiche, tra cui la memoria, ai dispositivi di input/output (I/O) e altre periferiche on-chip, attraverso il bus CPU memory I/O device timer counter DATA BUS ADDRESS BUS CONTROL BUS

Il Bus Il bus dati tipicamente è bidirezionale e trasmette l informazione (dati e istruzioni in memoria, dati di I/O) dalla e verso la CPU CPU memory I/O device timer counter DATA BUS ADDRESS BUS CONTROL BUS

Il Bus Il bus indirizzi è spesso unidirezionale perché la CPU è l unica sorgente, ovvero l unica entità che deve specificare una destinazione, e quindi un indirizzo CPU memory I/O device timer counter DATA BUS ADDRESS BUS CONTROL BUS

Il Bus Il bus di controllo si compone di tutti quei segnali che servono a controllare l operazione di trasferimento dati CPU memory I/O device timer counter DATA BUS ADDRESS BUS CONTROL BUS

Il Bus In generale, sebbene ci possono essere più sorgenti in un bus, i trasferimenti avvengono sempre da un unica sorgente alla volta src1 src2 srcn BUS dst1 dst2 dstm

Indice Il bus Interfacce di Lettura e Scrittura Indirizzamento Mappaggio in Memoria Indirizzamento Separato Sincronizzazione Sincronizzazione Software Sincronizzazione Hardware I/O Parallelo

L Interfaccia di Lettura L interfaccia di lettura connette al bus dati una sorgente dati che il processore può leggere un dato di una sorgente alla volta pilota il bus Spesso l interfaccia di lettura viene implementata con buffer three-state per il bus dati (bus a sorgenti multiple) en A Y A tristate Y 0 0 Z 0 1 Z en 1 0 0 1 1 1 alta impedenza

L Interfaccia di Scrittura L interfaccia di scrittura tra il bus dati e una destinazione (una periferica) viene tipicamente implementata con un latch il latch viene utilizzato in quanto i due interlocutori potrebbero non essere sincronizzati dallo stesso segnale di clock en D Q data en D latch D Q out 0 0 Q 0 1 Q 1 0 0 1 1 1 stato precedente

Decodifica dell Indirizzo Le interfacce del bus devono essere capaci di selezionare una delle tante sorgenti e destinazioni connesse al bus tale funzionalità è implementata da un decoder di indirizzo addr rd/wr control address decoder en0 en1 en2 en3

Decodifica dell Indirizzo in Lettura addr rd control address decoder en3 en2 en1 en0 din3 din2 din1 din0 tristate tristate tristate tristate data bus

Decodifica dell Indirizzo in Scrittura addr wr control address decoder en1 en0 en3 en2 Q dout3 Q dout2 Q dout1 Q dout0 D latch D D latch D D latch D D latch D data bus

Decodifica dell Indirizzo peripheral source addr address decoder en_wr0 destination wr control rd control en_rd0 tristate D Q latch D data bus

Indice Il bus Interfacce di Lettura e Scrittura Indirizzamento Mappaggio in Memoria Indirizzamento Separato Sincronizzazione Sincronizzazione Software Sincronizzazione Hardware I/O Parallelo

Indirizzamento Se lo stesso bus indirizzi viene utilizzato per accedere a diverse periferiche del microcontrollore, in che modo il sistema distingue la periferica in cui leggere/scrivere? vi sono due approcci principali mappaggio in memoria indirizzamento separato gli AVR implementano entrambi gli approcci

Mappaggio in Memoria Viene utilizzato un unico spazio indirizzi per diverse periferiche Vantaggi l architettura risulta essere più semplice non sono richieste istruzioni speciali per le periferiche Svantaggi le periferiche mappate riducono lo spazio di memoria disponibile per i dati dei programmi il decoder di indirizzo deve decodificare l intero bus di indirizzi per evitare conflitti tra gli indirizzi di memoria

Mappaggio in Memoria nell AVR Gli AVR utilizzano un unico bus indirizzi per registri general purpose 0x00-0x1F registri speciali e di I/O 0x20-0x5F memoria dati 0x60-RAMEND 32 GPR 64 I/O registers Internal SRAM (128 4k byte) External SRAM 0x00 0x1F 0x20 0x5F 0x60 8 bit RAMEND

Mappaggio in Memoria nell AVR address derivator en mem / n( 16) en_wr_mem data memory addr wr rd data address / 16 address Decoder en I/O n en_rd_mem en_wr_io_n Q source destination wr rd en_rd_io_n tristate D latch D peripheral n data bus

Indice Il bus Interfacce di Lettura e Scrittura Indirizzamento Mappaggio in Memoria Indirizzamento Separato Sincronizzazione Sincronizzazione Software Sincronizzazione Hardware I/O Parallelo

Indirizzamento Separato Viene utilizzato uno spazio di indirizzi diverso per ogni periferica Vantaggi i decoder di indirizzo risultano essere meno complessi di quelli necessari per il mappaggio in memoria Svantaggi sono richieste istruzioni specifiche per ogni periferica se il bus dati è condiviso occorre un ulteriore controllo per prevenire scritture simultanee di dati

Indirizzamento Separato nell AVR Nell AVR i 64 registri di I/O possono essere anche indirizzati attraverso uno spazio di indirizzi separato che va da 0x00 a 0x3F la dimensione del bus indirizzi di questo spazio di indirizzi è di 8 byte segnale di prevenzione conflitti in scrittura con la memoria: io_n_mem (I/O not memory) L accesso ai registri di I/O tramite questo spazio indirizzi avviene tramite istruzioni specifiche lettura di un dato: in; scrittura di un dato: out

I/O Separato nell AVR en I/O n en_wr_io_n reduced address wr rd io_n_mem / 6 address decoder en_rd_io_n tristate D Q latch D source destination I/O device data bus

Registri dell AVR address I/O mem name address I/O mem name address I/O mem name address I/O mem name 0x00 0x20 TWBR 0x10 0x30 PIND 0x20 0x40 UBRRC/H 0x30 0x50 SFIOR 0x01 0x21 TWSR 0x11 0x31 DDRD 0x21 0x41 WDTCR 0x31 0x51 OCDR/OSCAL 0x02 0x22 TWAR 0x12 0x32 PORTD 0x22 0x42 ASSR 0x32 0x52 TCNT0 0x03 0x23 TWDR 0x13 0x33 PINC 0x23 0x43 OCR2 0x33 0x53 TCCR0 0x04 0x24 ADCL 0x14 0x34 DDRC 0x24 0x44 TCNT2 0x34 0x54 MCUCSR 0x05 0x25 ADCH 0x15 0x35 PORTC 0x25 0x45 TCCR2 0x35 0x55 MCUCR 0x06 0x26 ADCSRA 0x16 0x36 PINB 0x26 0x46 ICR1L 0x36 0x56 TWCR 0x07 0x27 ADMUX 0x17 0x37 DDRB 0x27 0x47 ICR1H 0x37 0x57 SPMCR 0x08 0x28 ACSR 0x18 0x38 PORTB 0x28 0x48 OCR1BL 0x38 0x58 TIFR 0x09 0x29 UBRRL 0x19 0x39 PINA 0x29 0x49 OCR1BH 0x39 0x59 TIMSK 0x0A 0x2A UCSRB 0x1A 0x3A DDRA 0x2A 0x4A OCR1AL 0x3A 0x5A GIFR 0x0B 0x2B UCSRA 0x1B 0x3B PORTA 0x2B 0x4B OCR1AH 0x3B 0x5B GICR 0x0C 0x2C UDR 0x1C 0x3C EECR 0x2C 0x4C TCNT1L 0x3C 0x5C OCR0 0x0D 0x2D SPOR 0x1D 0x3D EEDR 0x2D 0x4D TCNT1H 0x3D 0x5D SPL 0x0E 0x2E SPSR 0x1E 0x3E EEARL 0x2E 0x4E TCCR1B 0x3E 0x5E SPH 0x0F 0x2F SPDR 0x1F 0x3F EEARH 0x2F 0x4F TCCR1A 0x3F 0x5F SREG

Caricamento di un I/O in un Registro 15 0 1 0 1 1 0 A A d d d d d A A A A IN LOAD AN I/O LOCATION TO REGISTER sintassi in Rd, A operazione Rd I/O(A) operandi 0 d 31, 0 A 63 flag interessati - cicli esecuzione 1 lunghezza istruzione 16 bit

Memorizzazione di un Registro in un I/O 15 0 1 0 1 1 1 A A r r r r r A A A A OUT STORE REGISTER TO I/O LOCATION sintassi out A, Rr operazione I/O(A) Rr operandi 0 r 31, 0 A 63 flag interessati - cicli esecuzione 1 lunghezza istruzione 16 bit

Indice Il bus Interfacce di Lettura e Scrittura Indirizzamento Mappaggio in Memoria Indirizzamento Separato Sincronizzazione Sincronizzazione Software Sincronizzazione Hardware I/O Parallelo

Sincronizzazione Il processore è tipicamente molto più veloce delle periferiche e specialmente dei dispositivi di I/O Viene richiesta dunque una qualche sincronizzazione tra processore e periferiche Esistono principalmente due tipologie di sincronizzazione software hardware

Sincronizzazione Software Esistono due tipologie di sincronizzazione software real-time: utilizza un ritardo software per far combaciare le tempistiche di accesso occorre conoscere nel dettaglio la temporizzazione della periferica dipende dalla frequenza di clock del processore comporta uno spreco del tempo di esecuzione del processore

Sincronizzazione Software Esistono due tipologie di sincronizzazione software polling: la periferica presenta un registro di stato con un bit di data_ready che indica quando il dato richiesto è pronto; il software continua a leggere il registro di stato finché il bit di data_ready non va alto non dipende dalla frequenza di clock del processore comporta sempre uno spreco del tempo di esecuzione del processore ma quest ultimo può eseguire altre operazioni e ciclicamente interrogare il registro di stato della perferica

Indice Il bus Interfacce di Lettura e Scrittura Indirizzamento Mappaggio in Memoria Indirizzamento Separato Sincronizzazione Sincronizzazione Software Sincronizzazione Hardware I/O Parallelo

Sincronizzazione Hardware Può essere previsto un protocollo di handshaking (stretta di mano) tra processore e periferica Tipicamente basato su un segnale di controllo aggiuntivo wait (che va aggiunto al bus di controllo) per una periferica in lettura, quando il processore richiede un dato, se questo non è pronto viene messo alto il segnale di wait che rimane tale finché il dato non è pronto non appena il dato è pronto, il wait va basso ed il processore può leggere il dato

Sincronizzazione Hardware Può essere previsto un protocollo di handshaking (stretta di mano) tra processore e periferica Tipicamente basato su un segnale di controllo aggiuntivo wait (che va aggiunto al bus di controllo) per una periferica in scrittura, quando il processore sta inviando un dato, se la periferica non è pronta a riceverlo manda alto il segnale di wait che rimane tale finché la periferica non è pronta non appena la periferica è pronta, il wait va basso ed il processore può inviare il dato

LETTURA Sincronizzazione Hardware trigger address ADDRESS data DATA read wait trigger address data write wait ADDRESS DATA SCRITTURA

Sincronizzazione Hardware La sincronizzazione hardware richiede logica addizionale per gestire opportunamente l handshaking tra i segnali del bus CPU memory I/O device timer counter bus MASTER interface bus SLAVE interface bus SLAVE interface bus SLAVE interface DATA BUS ADDRESS BUS CONTROL BUS

Indice Il bus Interfacce di Lettura e Scrittura Indirizzamento Mappaggio in Memoria Indirizzamento Separato Sincronizzazione Sincronizzazione Software Sincronizzazione Hardware I/O Parallelo

I/O Parallelo Tipicamente, così come per la memoria, anche per le periferiche del microcontrollore un indirizzo può identificare più di un bit (dimensione del minimo elemento indirizzabile) In caso di dispositivi di input e output, se tramite lo stesso indirizzo è possibile accedere ad un banco di più pin esterni del dispositivo, si parla di I/O parallelo, ovvero dei canali di I/O a più bit

I/O Parallelo nell AVR L AVR supporta I/O paralleli attraverso le porte Le porte sono un insieme di I/O paralleli dell AVR che possono essere configurate per ricevere o trasmettere dati da o verso l esterno a seconda del dispositivo specifico vi è un numero diverso di porte nel microcontrollore AVR

I/O Parallelo nell AVR Ad ogni porta dell AVR sono associati tre indirizzi di memoria PORT: registro dei dati (indirizzo utilizzato solo quando la porta è in modalità output) DDR: registro di direzione dei dati (indirizzo utilizzato sia quando la porta è in modalità input che in output; va impostato prima dell accesso ad uno degli altri indirizzi) un bit a 1 indica che il pin corrispondente è un output un bit a 0 indica che il pin corrispondente è un input PIN: pin di input della porta (indirizzo utilizzato solo quando la porta è in modalità input)

Decodifica dell Indirizzo peripheral source addr address decoder en_wr0 destination wr control rd control en_rd0 tristate D Q latch D data bus

I/O Parallelo nell AVR 7 6 5 4 DDR flip-flop wrddr 3 2 1 0 DDR[3] = 1 b1 pin is output DDR[3] = 1 b0 pin is input 7 6 5 4 3 2 1 0 PIN flip-flop I/O PIN 3 tristate p i n wrpin 7 6 5 4 3 2 1 0 PORT latch tristate tristate rdddr rdpin rdport tristate wrport data bus

I/O Parallelo nell AVR 7 6 5 4 DDR flip-flop wrddr 3 2 1 0 DDR[3] = 1 b1 pin is output DDR[3] = 1 b0 pin is input 7 6 5 4 3 2 1 0 PIN flip-flop I/O PIN 3 tristate p i n wrpin 7 6 5 4 3 2 1 0 PORT latch tristate tristate rdddr rdpin rdport tristate wrport data bus DDR PIN PORT

Esempio: Utilizzo I/O Parallelo Utilizzo della porta A come output per scrivere in un primo momento un byte tutto a 0 e in un secondo momento un byte tutto a 1 ldi r16, 0 ; r16 0 ldi r17, 0xFF ; r17 0xFF out DDRA, r17 ; configure port A as ; output out PORTA, r16 ; write zeros to port A nop ; do nothing out PORTA, r17 ; write ones to port A

Esempio: Utilizzo I/O Parallelo Utilizzo della porta A come input per leggere un byte e sfruttarlo per effettuare un controllo di flusso sul programma in esecuzione ldi r16, 0 ; r16 0 out DDRA, r16 ; configure port A as ; input in r17, PINA ; read byte from port A ; to r17 cpi r17, 4 ; compare read data with 4 breq EXIT ; if equal, branch to EXIT

Esercizi: Indirizzamento Si implementino tramite l assembly dell AVR gli esempi di utilizzo dell I/O parallelo utilizzando al posto delle istruzioni in e out per l I/O separato le corrispondenti istruzioni memory mapped (lds, sts) address I/O mem name address I/O mem name address I/O mem name address I/O mem name 0x19 0x39 PINA 0x16 0x36 PINB 0x13 0x33 PINC 0x10 0x30 PIND 0x1A 0x3A DDRA 0x17 0x37 DDRB 0x14 0x34 DDRC 0x11 0x31 DDRD 0x1B 0x3B PORTA 0x18 0x38 PORTB 0x15 0x35 PORTC 0x12 0x32 PORTD

Esercizi: I/O Parallelo Si implementi attraverso l assembly AVR un semplice sistema di controllo per un insieme di 8 led connessi alla porta A in modo che si abbia il seguente comportamento

Esercizi: I/O Parallelo Si faccia in modo che il motivo visualizzato negli 8 led dell esercizio precedente sia mantenuto per 1 solo secondo (si assuma una frequenza di clock del sistema pari a 1 khz)

Esercizi: I/O Parallelo Si faccia in modo che il motivo visualizzato negli 8 led dell esercizio precedente sia fisso ma specificato dall utente attraverso la porta B ogni secondo (frequenza di clock pari a 1 khz) port B 7 6 5 4 3 2 1 0 port A

Esercizi: Sincronizzazione Si faccia in modo che la sincronizzazione nell esercizio precedente avvenga con polling ogni 0.1 s sul bit 0 della porta C (se a 1 si aggiorna il valore della porta A con quello sulla porta B) port B 7 6 5 4 3 2 1 0 0 port C (ready) port A