Estratto del documento

Università di Modena e Reggio Emilia

Corso di laurea in ingegneria elettronica

Appunti di Calcolatori Elettronici

Approfondimento di ADE8

Mattia Valiante

Ripasso (Componenti sequenziali)

Flip flop tipo D (con uscita Q e #Q) permette di memorizzare un singolo bit al fronte di salita del clock.

Automa stati finiti

Registri

  • Dm.bit ➔ Registri ➔ Qm.bit
  • MB ➔ AM
  • IEOE
  1. MD ➔ MEM
  2. QM.sub>A ➔ (2M.sub>A)

C'è il clock rispetto alle RLCRLCHAABCINCOUTSII1OS1S0CON2

Progettazione del datapath di ADE8

Memprocessore, ACC, MAR, bus interno, HDR, ALU, AREGOE = 1

ALU OUT, REGOEIEIE(CONZ), FLAGS1S0

Data path control unit

ISA = Istruction Set Architecture

Microoperazioni: avvengono a ogni ciclo di clk. Programma: PC ➔ CAFFE ➔ IR

  • Latte
  • Caffe
  • Caffe Deca

Tabella di codifica delle istruzioni

  • 00 Latte
  • 01 Caffe
  • 02 Caffe Deca

Registri da aggiungere a ADE8

PC = Program Counter = Contatore delle istruzioni, indica l'indirizzo della prossima istruz. da eseguire

IR = Istruction Register = Contiene le istruzioni da eseguire. Istruzione corrente: 8 bit non bastano per questo registro quindi si sdoppia in 2 registri da 8 bit

  • IRO = Op Code(Codice Operativo)
  • IRP = Parametro

COME FACCIO AD AUMENTARE PC? PC → ALU + (CIN =1) = PC + 1 PERÒ A = 0

COSA? METTO MUX TRA ALUA E ALUZA (FILO DI CONTROLLO) ZA=0 → A =0 ZA=1 → A = ALUA PC → MAR →TRIEN → MDR → IR + PC → ALU → PC+1 = PCCON IL REGISTRO SPIL DATAPATH IN ABC 8 E COMPLETO

Stack pointer

LA NOSTRA ISA È DI TIPO JET DI ISTRUZIONI RIDOTTO

DATA PATH: 7 registri a 8bit

Entrata e uscita di dati sono controllati con ENABLE :

  • ACCIE
  • ACCOE
  • MARIE
  • MAROE
  • (24 segnali di controllo)

Unità di controllo

Unico che si interessa dell'IR0FLAG C.O.N.Z.

"MAR ← PC" = Micro operazione fatta tramite segnali di controllo

PCoe = 1

MARie = 1

"MDR ← M[MAR]" ⇒ MDRbus ie = 1

"M[MAR] ← MDR" ⇒ MDRbus oe = 1

Istruzione

label: COD OPRIS, OP1, OP2 AL MAX 1 ESPRESSO

Quando QUALCOSA non è ESPRESSO va a FINIRE NELL'ACCUMULATORE

Ogni istruz. è formata da 2 parti: cod operaz. e argomenti

Architettura load store

2 operaz. principali fa riferimento solo all'accumulatore

"ACC ← M[O6]"

O6 è l'indirizzo LOAD O6

IRo IRp

Microoperazioni

MAR ← IRp MDR ← M[MAR] ACC ← MDR LOAD

Tutte le istruzioni sono lunghe 16 bit (IR) e a campi fissi:

  • 8 bit COD. OP. (IRo)
  • 8 bit parametro (IRp)

Uno o più param. da esp. durante operaz. ST param "M[param] ⇐ Acc" Acc

MAR ⇐ IRp MDR ⇐ Acc M[MAR] ⇐ MDR STORE

Unità di controllo dovrà sempre fare fetch ⇔ execute

MAR ⇐ PC MDR ⇐ M[MAR] IRp ⇐ MDR ALUout ⇐ 0 + PC + 1 PC ⇐ ALUout

Tutti i registri quando accendo sono a 00 Non posso posizionare dati lì dentro

10 micro operazioni sempre uguali che vanno a recuperare dalla memoria l'istruzione corrente

ADD (40) PARAM

MAR ⇐ IRP MDR ⇐ [MAR] ALUA ⇐ ACC "ACC ⇐ ACC + M[PARAM]" ALUOUT ⇐ ALUA + MDR + 0: SA SB 10(+), GN=0

MEM

  • 00 ∞ (LD)
  • 01 06
  • 02 40 (ADD)
  • 03 07
  • 04 10 (ST)
  • 05 08
  • 06 22
  • 07 04
  • 08 00
  • 09 00
  • 0A 00

PC → MAR → [MAR] → MDR → IRo PC + 1 → PC → MAR → [MAR] → MDR → IRP PC + 1 → PC

IRo scopre a cosa equivale ∞

IRP → MAR; M[MAR] → MDR → ACC

Rifaccio fetch → IRo = 40: ADD PARAM: JMP PARAM

"PC ⇐ PARAM" PC ⇐ IRP

Permette di modificare l'ordine delle istruzioni

1 microperazione

QUANDO IL PROCESSORE FINISCE LE ISTRUZIONI CONTINUA A FARE FETCH - EXECUTE

JMP = Salto incondizionato

Permette di modificare la sequenza di esec. delle istruzioni; va a cambiare PC SI PUÒ TERMINARE CONFINE: JMP FINE

ADD

MAR ← IRp MDR ← M[MAR] ALUa ← ACC ALUout ← ALUa + MDR + 0 ACC ← ALUout

Microoperazioni

Tipi di microoperazioni

  1. Chi coinvolge solo i registri, [TAR ← PC]
  2. Registri - Memoria [MDR ← M[MAR]] M[MAR] ← MDR
  3. Registri - ALU ALUOUT ← ALUA ZEROS1, S0 KDRCIN5 componenti da specificare sempre

Possibili microoperazioni di ALU (Orale)

Unità di controllo

Operazione SISOZOCIN

Operazione 00000 AND B = 0 (PER AZZERARE ACC)

011-ALUA AND B (AND LOGICO)

010-0 OR B = B (^x CALCOLARE I FLAG N, E, Z)

0110 ALUA OR B (OR LOGICO)

00010 + B = B

00110 + B + 1 (INCREMENTO DI UNO) INC0000 ALUA + B (ADD)

0011 ALUA + B + 1 ?111-0 + B' + 0 (NOT LOGICO)

11010 + B' + 1 (COMPLEMENTO A 2 = CAMBIO DI SEGNO: NEG)

1000 ALUA + B' = ALUA - (B + 1) ?1111 ALUA - B = SOTTRAZIONE SUB

ISA

ADD MAR ← IRp MDR ← M[MAR] ALUA ← ACC ALUout ← MDR + ALUA + 0 ACC ← ALUout 5 microoperazioni

AND MAR ← IRp MDR ← M[MAR] ALUA ← ACC ALUout ← ALUA and MDR ACC ← ALUout

(0 0 1 0) FLAGC1=1 5 micro.OR ALUout ← ALUA or MDR (0 1 0) FLAGC1=1

SUB ALUout ← ALUA + (MDR+1) (1 1 1) FLAGC1=1 ALUA ← ACC NOT ACC ← "ACC ALUout ← 0 + ACC (1 1 0) FLAGC1=1 NEG ALUA ← -ACC ALUout ← 0 + ACC + 1 (1 1 0) FLAGC1=1

Avvengono entrambe con un unico parametro che è presente nell'ACC

DOTT. ISA DI ADE 8 PROCESS. A 8 BIT LE SUE ISTRUZ.: LOAD, STORE, ADD, OR, .....

C'È UN ACC FLAG ASSEMBLATORE FA 2 PASSATE PROGRAMMA IN ASSEMBLY È REVERSIBILE SOLO SE SI HA UNA TABELLA DEI SIMBOLI, SENNÒ SI PERDONO LE ETICHETTE

Modalità di indirizzamento

LOAD MAR <= IRP MDR <= M[MAR] ACC <= MDR MOD. INDIRIZZAMENTO DIRETTA

NEL PARAMETRO HO L'INDIRIZZO IN LETTURA DOVE ACCEDERE DIRETTAMENTE MOD. INDIRIZ. IMMEDIATO NEL PARAMETRO C'È GIÀ IL DATO → NON C'È ACCESSO IN MEMORIA

LDv PARAM.

ACC <= IRP DIRETTA LD ST AND OR ADD SUB IMMEDIATA LDv ANDv ORv ADDv SUBv LDi STi ANDi ORi ADDi SUBi

Prog: Somma più elementi di un vettore

Assembiatore a 2 passate Somma V1: 3 V2: 7 V3: 10 V4: 2 V5: 0 Somma: 0

LDv0 V1 ADD V2 ADD V3 ADD V4 ADD V5 ST Somma JMP VETT: 371020 Somma: 0 LD VETT. INIZIO: CICLO ADDP: VETT ST Somma LD PADDv 1 ST PLD Somma JUMP CICLO NEGA DA ORALE Soluz. con Puntatore JMP VETT: 371020 N: 5 Somma: 0 PTR: 0 INIZIO: LDv VETT. ST PTR LD Somma ADDα PTR ST Somma JMP INIZIO 07 0308 0709 44 ACC LDv 08 LD 08 LDi 08080703 VALORE NELL'INDIRIZZO 07, CONTENUTO IN 08 LDi PARAM ACC ← M[M[MAR]] MAR ← IRP MDR ← M[MAR] MAR ← MDR MDR ← M[MAR] ACC ← MDR STORE STPARAM MDR ← ACC MAR ← IRP M[MAR] ← MDR STv PARAM STi PARAM MAR ← IRP MDR ← M[MAR] MAR ← MDR MDR ← M[MAR] M[MAR] ← MDR

Istruzioni

LD ST AND OR ADD SUB JMP LABEL

PC ← IRP SALTO INCONDIZIONATO FLAG JC JO JN JZ SALTA SE C,O,N,Z=1 SEMANTICI JLU JLS JE LA MICROOPERAZIONE È LA STESSA PER TUTTE E 7, CIOÈ PC ← IRP

FINE: JMP FINE CMP Fa la stessa cosa nella SUB, i FLAG si modificano però il risultato non viene salvato nell' ACC CMP CMPV CMPLD VAR SUB 7 ← FLAG Z=1 → VAR = 7 N=1 → VAR < 7 ACC = VAR - 7 ACC = VAR ACC: 11111111 ? < 7 Sì JE BIT con segno No JE BIT senza segno Dipende dalla convenzione che si usa Per questo si usano istr. cond. setantici JLU = Confronto UNSIGNED (salta se è MINORE senza segno di CMP) JLS = Confronto SIGNED (MINORE di CMP con segno) JE = Salta se sono UGUALI = JZ (UGUALE a CMP) CMP e SALTO CONDIZIONATO sono sempre ACCOPPIATI

Come collegare un dispositivo input/output?

Es. Tastiera: arriva per ogni tasto il valore 0 o 1 se è premuto o meno. Non riconosco le doppie Non posso creare un registro interno per ogni dispositivo Per farlo c’è bisogno di un meccanismo chiamato polling. - Leggo registro di dato, porto nell’accumulatore, mi accorgo che c’è un tasto premuto e cambio registro di stato, se c’è 0 (non c’è tasto premuto) continuo ad interrogare il registro di stato finché non c’è 1 Polling funziona per qualsiasi dispositivo di input/output. Ora dobbiamo spostare registro di dato/stato fuori dal processore, ci sono 2 casi Isolato Mappato in memoria ISOLATO MET PORTA REGISTER DATA REGISTER IN PARAM ACC ← I/O [PARAM] OUT PARAM I/O [PARAM] ← ACC MAPPATO IN MEMORIA NEI INDIRIZZI DI MEMORIA SONO DEFINITI A PRIORI QUELLI PER I/O. AL PROCESSORE NON CAMBIA NULLA, NON SI ACCORGE SE L’INDIRIZZO È DI MEMORIA O I/O QUESTO VIENE USATO IN ADE 8 MEMORIA CHIP SELECT SCHEDA MADRE DATA BUS ADDRESS BUS CONTROL BUS In ADC8 la parte di memoria dedicata a I/O è da 00 a DF, si possono avere al max 16 registri I/O

Stack

Serve per ricordare qualcosa, può ricordare anche più cose contemporaneamente Stack si riempie dal basso verso l’alto

PUSH Prima decremento e poi metto il valore nell’acc nella cella decrementata POP Prelevo il dato puntato dal registro e incremento di uno così da avere uno spazio libero SP contiene l’indirizzo dell’ultima cella riempita

Memory map

  • 00 - Codice + Dati
  • 80 - I/O
  • DF - Stack
  • FF CALL SP ← SP - 1 M[SP] ← PC PC ← IR[Para]...
  • SP ← Allout MAR ← SP MDR ← PC M[MAR] = MDR
  • RET PC ← M[SP] SP ← SP + 1...
  • MAR ← SP MDR ← M[MAR] PC ← MDR Allout ← O1 + P1 SP ← Allout

Block diagram

DataPath Control Unit IREAC, ACoe, PC, PCoe Z, Zcoe, SI, So Control CRete Logica Seq. CLK MEM Δ ← AA ← Δ Microprocessore - ADE8 CONTROL UNIT ASF → CABLATA SE VUOI CAMBIARE/AGGIUNGERE UN ISTRUZ. DEVI RIFARE TUTTO IL PROCESSORE INDIRIZZI DA 00 A FF, 256 MICRO OPERAZIONI POSSIBILI OGNI ISTRUZIONE HA LE PROPRIE RIGHE (MICRO OPERAZ.) POSSO AGGIORNARE IL FIRMWARE SENZA DIFFICOLTÀ (PER ELIMINARE BUG) OLTRE LE 24 COLONNE SE NE AGGIUNGONO 2: UNA DI S0 e UNA DI S1. PER IL MULTIPLEXER MC0 MC1 : 00 → SALTO AL FETCH 01 → USA L’IR 010 → USA PROSS. ISTRUZ. VERSIONE SENZA FLAG E QUINDI SENZA SALTI CONDIZIONATI

Anteprima
Vedrai una selezione di 6 pagine su 24
Approfondimento su ADE8 Pag. 1 Approfondimento su ADE8 Pag. 2
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Approfondimento su ADE8 Pag. 6
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Approfondimento su ADE8 Pag. 11
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Approfondimento su ADE8 Pag. 16
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Approfondimento su ADE8 Pag. 21
1 su 24
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Leep25 di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Modena e Reggio Emilia o del prof Vezzani Roberto.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community