Elettronica dei sistemi programmabili

Iniziamo. È gratuito!
o registrati con il tuo indirizzo email
Elettronica dei sistemi programmabili da Mind Map: Elettronica dei sistemi programmabili

1. Introduzione ai sistemi programmabili

1.1. Circuiti logici

1.1.1. Circuiti logici combinatori (puoi determinare gli stati d'uscita in qualsiasi punto della rete essendo a conoscenze dei soli ingressi.)

1.1.1.1. Porte Logiche

1.1.1.1.1. Funzioni logiche

1.1.1.1.2. Multiplexer

1.1.1.1.3. Demultiplexer

1.1.1.1.4. Decoder

1.1.1.1.5. Encoder

1.1.1.2. Dispositivi programmabili

1.1.1.2.1. PLA – Programmable Logic Arrays

1.1.1.2.2. PAL – Programmable Array Logic

1.1.1.2.3. ROM – Read Only Memory

1.1.2. Circuiti logici sequenziali (l'uscita dipende non solo dallo stato degli ingressi nell'istante considerato ma anche da quello che erano gli ingressi e le uscite negli istanti precedenti quello considerato.)

1.1.2.1. Elementi di memoria

1.1.2.1.1. Latch

1.1.2.1.2. Flip-flop

1.1.2.2. Registri (composto da FF di tipo D)

1.1.2.2.1. PIPO – Parallel Input Parallel Output

1.1.2.2.2. SIPO – Serial Input Parallel Output

1.1.2.2.3. SISO – Serial Input Serial Output

1.1.2.2.4. PISO – Parallel Input Serial Output

1.1.2.3. Contatori

1.1.2.3.1. -insieme di n FLIP-FLOP T che esegue una sequenza prestabilita delle uscite.(in genere un conteggio). -La sequenza può essere una sequenza di bit (uscita seriale, di uno dei FF) o una sequenza di stringhe (uscita parallela, da tutti i FF). Per poter generare il conteggio ho bisogno di una rete combinatoria che ha per ingresso le uscite dei FF e l'uscita collegata con gli ingressi dei FF (o agli ingressi dati o agli ingressi di clock, a seconda del tipo di contatore)

1.1.2.3.2. Classificazione

1.1.2.4. Memorie RAM

1.1.2.4.1. DRAM

1.1.2.4.2. SRAM

1.1.2.4.3. Memoria volatile (per memorizzare bit necessità di corrente)

1.1.2.4.4. Permette la lettura e la scrittura del dato

1.1.2.4.5. Accesso casuale

1.1.2.4.6. Architettura

2. Microcontrollori

2.1. Dispositivo ottimizzato per un campo applicativo

2.1.1. Integrazione componenti

2.1.2. Set istruzioni limitato

2.1.3. Facilità di utilizzo e di programmazione

2.1.4. Bassi consumi

2.1.5. Costi ridotti

2.1.6. Tutte le funzionalità sono presenti in unico chip

2.1.6.1. CPU

2.1.6.1.1. RISC

2.1.6.1.2. Poche istruzioni

2.1.6.2. Memoria

2.1.6.2.1. RAM (~kB)

2.1.6.2.2. Memoria ROM

2.1.6.2.3. No CACHE

2.1.6.3. Interfacce

2.1.6.3.1. General Purpose Input/Output

2.1.6.3.2. Interfacce seriali

2.1.6.4. Circuiti per la temporizzazione

2.1.6.4.1. Contatori

2.1.6.4.2. Timer

2.1.6.4.3. PWM

2.1.6.4.4. Watchdog

2.1.6.5. Convertitori

2.1.6.5.1. ADC

2.1.6.5.2. DAC

2.1.6.5.3. Composto da:

2.1.6.6. Comparatori

2.2. Interfacce

2.2.1. UART Universal Asynchronous Receiver Transmitter

2.2.1.1. Asincroni (non hanno lo stesso CK il Tx e Rx)

2.2.1.2. Full duplex: trasmissione bidirezionale simultanea

2.2.1.2.1. Tx

2.2.1.2.2. Rx

2.2.1.3. converte flussi di bit di dati da un formato parallelo a un formato seriale asincrono o viceversa.

2.2.2. SPI Serial Peripheral Interface

2.2.2.1. Comunicazione seriale

2.2.2.2. Sincrono: Tx e Rx sincronizzati su unico CK

2.2.2.3. Full-duplex: trasmissione bidirezionale simultanea

2.2.2.4. Master/Slave

2.2.2.5. 4 linee dati

2.2.2.5.1. 2 per Tx e Rx dei dati

2.2.2.5.2. 1 per il segnale di CK gestito dal Master

2.2.2.5.3. 1 per la selezione del ricevitore

2.2.2.6. Possibilità di lavorare con multi slave

2.2.2.7. Flusso continuo di dati

2.2.3. I^2C Inter Integrated Circuit

2.2.3.1. Sincrono

2.2.3.2. Multi-slaves

2.2.3.3. Half-Duplex: solo un canale di comunicazione che è bidirezionale

2.2.3.4. SDA (Serial Data Tx/Rx)

2.2.3.5. Seriale CK (Master)

2.3. Temporizzazioni

2.3.1. Generatori di CK

2.3.1.1. Oscillatori a cristallo

2.3.1.1.1. Cristallo tra piatti condensatore

2.3.1.1.2. Effetto piezoelettrico--> deformazione meccanica-campo elettrico

2.3.1.1.3. Stabilità

2.3.1.1.4. Robustezza

2.3.2. Prescaler

2.3.2.1. Generazione forme d'onda a frequenza sottomultipla della frequenza di CK

2.3.2.2. Duty-cycle variabile

2.3.3. Timer

2.3.3.1. Gestiscono gli intervalli temporali del uC

2.3.3.2. La frequenza del conteggio del Timer è determinata dal Prescaler

2.3.3.2.1. I valori del contatore sono confrontati, attraverso un comparatore, con dei valori preimpostati. Se c'è esito positivo il timer innesca un evento

2.3.3.3. I segnali di uscita sono

2.3.3.3.1. Segnale di interrupt, quando in risposta all'evento deve essere eseguita una routine

2.3.3.3.2. Un segnale ad onda quadra di determinata frequenza e duty-cycle, nel caso di eventi periodici

2.3.3.4. I segnali di ingresso sono dei bit di controllo che decidono le varie modalità operative

2.3.3.5. Utilizzo Timer

2.3.3.5.1. Introduzione ritardi (Avvio e interruzione Timer soggette ad eventi)

2.3.3.5.2. Modalità freerun. Esecuzione azioni periodiche (Avvio soggetto ad evento)

2.3.3.5.3. Modalità Capture. Misure di tempo (Avvio e interruzione soggetti ad evento)

2.3.3.5.4. Modalità Compare. Generazione impulsi

2.3.4. PWM Pulse Width Modulation

2.3.4.1. Generazione tensione analogica partendo da segnali digitali

2.3.4.2. Variazione duty cycle--> variazione tensione

2.3.5. Watchdog Timer

2.3.5.1. Timer per evitare blocco del microcontrollore

2.3.5.1.1. Reset

2.3.5.1.2. Interrupt_ routine da effettuare prima del reset

2.3.5.2. Cause

2.3.5.2.1. Loop infiniti

2.3.5.2.2. Blocco

3. ARM (Advanced RISC Microprocessor)

3.1. Generalità

3.1.1. ARM Ltd. non produce il uP ma vende licenze per l`utilizzo della tecnologia

3.1.2. Non si parla di microprocessori ma di famiglie di microprocessori

3.2. Caratteristiche principali

3.2.1. Lunghezza istruzioni fissa, 32 bit

3.2.1.1. Semplicità nell`implementazione della logica di controllo

3.2.2. Architettura LOAD / STORE

3.2.2.1. Ottimizza accessi a memoria e tempi di esecuzione

3.2.3. Formato istruzioni a 3 indirizzi

3.2.3.1. Esplicitare operandi e destinazione semplifica HW

3.2.4. Memoria indirizzata al byte

3.2.4.1. Le cella elementare è un byte

3.2.5. Indirizzamenti tipici di architetture CISC

3.2.5.1. Indirizzamento immediato o base + offset (calcolo dell`indirizzo)

3.2.6. Pipeline

3.2.6.1. Parallelizza istruzioni

3.2.7. Non tutte le istruzioni in un ciclo di CK

3.2.7.1. Nonostante ciò la macchina mantiene una velocità elevata

3.3. CACHE (RAM on Chip)

3.3.1. Nella CACHE vengono copiate istruzioni «vicine» a quelle utilizzate.

3.3.2. Quando si effettua un accesso a memoria, la CPU cerca dati nella CACHE. Solo se dato/istruzione non viene trovato in CACHE, la CPU accede alla RAM. A quel punto si aggiorna la cache con altri dati utili

3.4. Interrupt

3.4.1. Interruzione della normale sequenza delle istruzioni per eseguire elaborazioni che hanno priorità

3.4.2. Segnale asincrono

3.4.3. Interrupt attiva modalità IRQ (Interrupt request)

3.4.3.1. Esecuzione subroutine «di servizio»

3.4.4. Gestione Interrupt

3.4.4.1. LR := PC

3.4.4.2. SPSR := CPSR

3.4.4.3. Set CPSR

3.4.4.3.1. Aggiornato con dati relativi alla nuova modalità operativa

3.4.4.4. Map Register

3.4.4.5. PC := Vector Address

3.4.4.5.1. Aggiorna ed esegui PC con indirizzo della subroutine di servizio opportuna

3.4.4.6. PC := LR

3.4.4.7. CPSR := SPSR

3.4.5. Banco registri

3.4.5.1. 34 registri totali

3.4.5.1.1. 17 utilizzabili (indirizzabili)

3.4.5.1.2. 17 utilizzati dal uP, si attivano in situazioni particolari(Interrupt ecc)

3.5. Indirizzamento

3.5.1. Parole indirizzabili al byte

3.5.2. Ho istruzioni di 32 bit, quindi posso avere 2^32 indirizzi, ossia 2^32 linee di memoria

3.5.3. Dati possibili

3.5.3.1. 32 bit (parola 4 byte)

3.5.3.2. 16 bit (mezza parola 2 byte)

3.5.3.3. 8 bit (1 byte)

3.5.4. Allineamento

3.5.4.1. 1 byte

3.5.4.1.1. Indirizzo qualsiasi

3.5.4.2. 2 byte

3.5.4.2.1. Indirizzo multiplo di 2

3.5.4.3. 4 byte

3.5.4.3.1. Indirizzo multiplo di 4

3.6. Istruzioni

3.6.1. CLASSI di ISTRUZIONE

3.6.1.1. Elaborazione

3.6.1.1.1. Cond || 00 || # || opCode || S || Rn || Rd || operand2

3.6.1.2. Controllo del Flusso

3.6.1.2.1. cond || 101 || L || 24-bit signed word offset ||

3.6.1.3. Spostamento dati

3.6.1.3.1. Trasferimento singolo registro

3.6.1.3.2. Trasferimento gruppo registri

3.6.2. Istruzione di Interrupt

3.6.2.1. cond || 1111 || 24-bit (interpreted) immediate

3.6.2.1.1. LR := mem[SWI+1]

3.6.2.1.2. SPSR_svc := CPSR

3.6.2.1.3. Modo IRQ disabilitato (priorità)

3.6.2.1.4. PC := 0x08 (indirizzo predefinito per modo svc)

3.6.3. Istruzione SWAP

3.6.3.1. cond || 00010 || B || 00 || Rn || Rd || 00001001 || Rm

3.6.3.1.1. Scambia il contenuto di un indirizzo di memoria e di un registro, utilizzando un registro di appoggio

3.7. Pipeline

3.7.1. Pipeline a 3 stadi

3.7.1.1. Fetch

3.7.1.1.1. Accesso a memoria, prelievo istruzione (AR Address Register), incremento PC

3.7.1.2. Decode

3.7.1.2.1. Decodifica bit di controllo, configurazione datapath

3.7.1.3. Execute

3.7.1.3.1. Lettura/scrittura registri, operazioni in ALU (con shift)

3.7.2. Pipeline 4 stadi: Istruzioni multiciclo

3.7.2.1. Istruzioni LOAD/STORE possiedono 4 fasi, l'elaborazione e il calcolo dell'indirizzo a cui si deve accedere per leggere/scrivere il dato. La fase successiva prevede un accesso a memoria

3.7.2.1.1. Non ci possono essere più decode nello stesso momento e più accessi a memoria nello stesso momento

3.7.3. Pipeline a 5 stadi

3.7.3.1. Fetch, decode, execute, buffer/data, write-back

3.8. ARM - Linguaggio C

3.8.1. Il set istruzioni deve essere adatto a rappresentare le strutture astratte del linguaggio ad alto livello utilizzato

3.8.1.1. Esempio

3.8.1.1.1. Rappresentazione numeri INTERI (base 2) da 0 a 4294967295

3.8.1.1.2. Rappresentazione in COMPLEMENTO A 2 Numeri INTERI CON SEGNO (base 2) da -2147483648 a 2147483647

3.8.2. Coprocessore

3.8.2.1. Permette di supportare i numeri in virgola mobile

3.8.2.2. E' un processore che svolge funzioni diverse da quello del processore

3.8.2.3. Architettura ottimizzata per le funzioni che deve svolgere

3.8.2.4. Set istruzioni proprio

3.9. Set istruzioniTHUMB

3.9.1. E' un set d'istruzioni compresso (32bit<-->16 bit)

3.9.2. Maggiore densità di codice

3.9.3. Non c'è condizione nell'istruzione

3.9.4. Pensate per poter essere eseguite in una Pipeline a 3 stadi (devono essere decompresse)

3.9.5. Funzioni di passaggio ARM<--> THUMB

3.9.5.1. ARM-->THUMB

3.9.5.1.1. Branch with exchange + link (Rm/Offset)

3.9.5.2. THUMB-->ARM

3.9.5.2.1. Istruzione di salto

3.9.5.2.2. Eccezioni

3.9.5.2.3. Operazioni non supportate da THUMB

3.9.6. SHIFT: è un'struzione vera e propria

3.9.6.1. Per effettuare un'operazione con shift devo eseguire più istruzioni

3.9.7. Confronto ARM vs THUMB

3.9.7.1. Il codice Thumb occupa il 70% di spazio in più del codice ARM

3.9.7.2. Il codice Thumb impiega il 40% di istruzioni in più del codice ARM

3.9.7.3. Il codice ARM è 40% più veloce con memorie a 32bit

3.9.7.4. Il codice Thumb è più veloce con memorie a 16bit

3.9.7.5. Il codice Thumb utilizza il 30% di potenza in meno del codice ARM

3.9.7.6. Se si cerca prestazione utilizzare ARM, mentre con THUMB si riducono i costi

3.10. Hardware

3.10.1. Sommatore Carry look-ahead

3.10.2. ALU

3.10.3. Barrel shifter

4. Microprocessori

4.1. Caratteristiche generali

4.1.1. Caratteristiche principali

4.1.1.1. Sistema elettronico per elaborazione dati

4.1.1.2. sis. elet. programmabile sia hardware che software

4.1.1.3. Non può operare da solo

4.1.2. Architettura

4.1.2.1. CPU: central processing unit

4.1.2.2. ALU: arithmetic and logic unit

4.1.2.2.1. Esegue operazioni aritmetiche e logiche

4.1.3. Come funziona

4.1.3.1. Qual è il programma che deve eseguire?

4.1.3.1.1. Il programma da eseguire viene caricato in memoria, da dove la CPU può prelevare le istruzioni da eseguire. -memoria ROM (caricamento via hardware) -memoria RAM, (programma caricato da memoria di massa)

4.1.3.2. Quali dati elabora? Come?

4.1.3.2.1. Dati provenienti dall`esterno

4.1.3.2.2. interfacce di ingresso

4.1.3.2.3. Temporizzatore

4.1.3.3. Come fornisce dati?

4.1.3.3.1. Interfacce di uscita

4.1.3.3.2. Buffer a tre stadi

4.1.4. Circuiti di temporizzazione

4.1.4.1. Clock

4.1.4.1.1. Circuito che genera un segnale di clock a tutti i dispositivi

4.1.4.2. Program Counter

4.1.4.2.1. registro che memorizza l’indirizzo di memoria da cui prelevare la prossima istruzione

4.2. Sistemi a Microprocessore

4.2.1. Set Istruzioni

4.2.1.1. IR : Instruction Register

4.2.1.1.1. Memorizza per il tempo necessario l`istruzione che deve essere eseguita

4.2.1.2. Istruzione

4.2.1.2.1. Codice Operativo

4.2.1.2.2. Operando/i

4.2.1.3. Temporizzazione istruzioni

4.2.1.3.1. Fetch

4.2.1.3.2. Execute

4.2.1.4. Sequenza istruzione

4.2.1.4.1. Prelievo <----> Memoria

4.2.1.4.2. Decodifica <----> Circuiti di controllo

4.2.1.4.3. Accesso operandi <----> Memoria/Registri

4.2.1.4.4. Elaborazione <----> ALU

4.2.1.4.5. Accesso a Memoria <----> Memoria

4.2.1.4.6. Scrittura registri <----> Registri

4.2.2. Datapath

4.2.2.1. insieme di tutti i dispositivi, componenti e connessioni che definiscono tutti i possibili percorsi che un dato può effettuare durante l’esecuzione del programma

4.2.3. Classificazione

4.2.3.1. Architettura

4.2.3.1.1. Architettura Von Newmann

4.2.3.1.2. Architettura Harward

4.2.3.2. Tipo Istruzioni

4.2.3.2.1. Complex Instruction Set Computers (CISC)

4.2.3.2.2. Reduced Instruction Set Computers (RISC)

4.2.4. Indirizzamento

4.2.4.1. immediato

4.2.4.1.1. operando è il dato che mi serve

4.2.4.2. assoluto

4.2.4.2.1. l`operando è l`indirizzo di memoria nel quale trovo il dato

4.2.4.3. indiretto

4.2.4.3.1. l`operando è un indirizzo di memoria nel quale trovo l`indirizzo di memoria dove trovo il dato

4.2.4.4. di registro diretto

4.2.4.4.1. l`operando contiene il numero del registro nel quale trovo il dato

4.2.4.5. di registro indiretto

4.2.4.5.1. l`operando contiene il numero del registro nel quale si trova l`indirizzo di memoria con cui trovo il dato

4.2.4.6. base più offset & base più indice

4.2.4.6.1. Si calcola l`indirizzo di memoria con l`ALU al quale accedere per prelevare il dato, una parte di memoria indica un registro che contiene l`indirizzo da cui partire

4.2.5. Pipeline

4.2.5.1. parallelizza l`esecuzione delle istruzioni

4.2.5.1.1. Uso efficiente delle componenti della CPU

4.2.5.2. svantaggi

4.2.5.2.1. READ after WRITE

4.2.5.2.2. Istruzione di Salto

4.2.5.3. Efficienza

4.2.5.3.1. aumenta con il numero di istruzioni nella pipeline (profondità)

4.3. Microprocessore MU0

4.3.1. Caratteristiche generali

4.3.1.1. Macchina a 16bit: le istruzioni sono composte da 16bit

4.3.1.2. Spazio Indirizzi a 12 bit (codice operativo da 4bit)

4.3.1.3. Memoria 8k byte: con 12 bit indirizzo 4096 locazioni da 16 bit ciascuna

4.3.2. Componenti

4.3.2.1. Program Counter

4.3.2.2. Instruction Register

4.3.2.3. ACC: Accumulator

4.3.2.4. ALU

4.3.2.5. Control Logic

4.3.3. Set Istruzioni

4.3.3.1. Istruzione: 16 bit

4.3.3.1.1. Codice Operativo: 4 bit

4.3.3.1.2. Indirizzo: 12 bit

4.3.3.2. solo 8 istruzioni

4.3.3.2.1. LDA S

4.3.3.2.2. STO S

4.3.3.2.3. ADD S

4.3.3.2.4. SUB S

4.3.3.2.5. JMP S

4.3.3.2.6. JGE S

4.3.3.2.7. JNE S

4.3.3.2.8. STP

4.3.3.3. Esecuzione istruzioni

4.3.3.3.1. Lettura operando da IR (non per tutte le istruzioni)

4.3.3.3.2. Operazione con ALU. Risultato in ACC.

4.3.3.3.3. Istruzione STORE: ACC in memoria.

4.3.3.3.4. Fetch da PC. Incremento di PC.

4.3.3.4. Estensione Set Istruzioni

4.3.3.4.1. Il Codice Operativo è di 4 bit, può quindi codificare fino a 16 istruzioni. Ho spazio per poter inserire altre istruzioni, a patto di modificare il datapath.

4.3.3.5. Classificazione

4.3.3.5.1. Formato

4.3.3.5.2. Tipo

4.3.3.6. SUBROUTINES

4.3.3.6.1. è una sequenza di istruzioni che realizza un determinato compito. Questa sequenza viene chiamata all'interno di un generico programma; al termine della esecuzione della subroutine, il Program Counter ritorna al suo valore precedente, per eseguire l'istruzione immediatamente seguente la call.

4.3.3.6.2. Vengono temporaneamente salvate nella STACK

4.3.4. Datapath

4.3.4.1. https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F16601E424DA7DAA308

4.3.4.1.1. Ingressi

4.3.4.1.2. uscite

4.3.5. ALU

4.3.5.1. https://slideplayer.com/slide/14031698/86/images/18/MU0+ALU+Design+ALU+functions%3A+A%2BB%2C+A-B%2C+B%2C+B%2B1%2C+0+%28used+only+when+reset+is+active%29+%3D%3E+4+functions.+Aen+%28enable+operand+A%29.jpg

4.3.5.2. 4 funzioni

4.3.5.2.1. 0 (usato quando RESET è attivo)

4.3.5.2.2. B

4.3.5.2.3. B+1

4.3.5.2.4. A+B

4.3.5.2.5. A-B

4.3.5.3. 2 bit di controllo

4.3.5.3.1. Aen (abilita l`operando A)

4.3.5.3.2. Binv ( inverte l`operando B)