Modellazione RTL. Modulo 7

Documenti analoghi
Reti Logiche Combinatorie

LOGICA SEQUENZIALE. Un blocco di logica puramente combinatoria è un. blocco con N variabili di ingresso e M variabili di uscita

Livello logico digitale

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Circuiti Logici

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

senza stato una ed una sola

Reti sequenziali. Nord

PSPICE Circuiti sequenziali principali

I bistabili ed il register file

Circuiti sequenziali e latch

Registri. Registri semplici

Circuiti sequenziali. Circuiti sequenziali e applicazioni

Architettura degli Elaboratori

PSPICE simulazione di circuiti digitali Flip Flop M/S, Moltiplicatore parallelo, Memoria SRAM, sommatore, comparatore

Flip-flop e loro applicazioni

Reti Sequenziali. Reti Sequenziali. Corso di Architetture degli Elaboratori

Lezione 7 Sommatori e Moltiplicatori

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

Convertitori D/A. Convertitori Digitale-Analogico. D/A: Misura Prestazioni. D/A Ideale. Caratteristica. Lucidi del Corso di Microelettronica Parte 7

Calcolatori Elettronici

Esercizi svolti e da svolgere sugli argomenti trattati nella lezione 25

Architettura degli Elaboratori

Moltiplicazione e Divisione tra numeri relativi

Introduzione alle macchine a stati (non definitivo)

Circuiti sincroni Circuiti sequenziali: i bistabili

Componenti e connessioni. Capitolo 3

Esercitazioni di Reti Logiche. Lezione 5

Lezione 7 ALU: Moltiplicazione e divisione

Corso di Calcolatori Elettronici I Elementi di memoria ing. Alessandro Cilardo

algoritmi Fondamenti di informatica

Circuiti sequenziali

AB=AB. Porte logiche elementari. Livello fisico. Universalità delle porte NAND. Elementi di memoria: flip-flop e registri AA= A. Porta NAND.

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

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

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

(competenze digitali) CIRCUITI SEQUENZIALI

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

Macchine Sequenziali

Esercizio 1 (12 punti) Minimizzare il numero di stati dell automa qui rappresentato. Disegnare l automa minimo.

Esercizi Logica Digitale,Circuiti e Bus

Topward electronics TPS ALTERA Max EPM7128SLC84-15

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Esercitazione : REALIZZAZIONE IMPIANTO SEMAFORICO

Circuiti sequenziali

0ROWLSOLFD]LRQHH'LYLVLRQH WUDQXPHULUHODWLYL

Unità Aritmetico-Logica

ESERCIZI DEL CORSO DI INFORMATICA

ESAME DI ARCHITETTURA I COMPITO A

Firmware Division & Floating pointer adder

Per sistema di acquisizione dati, si deve intendere qualsiasi sistema in grado di rilevare e memorizzare grandezze analogiche e/o digitali.

Circuiti Sequenziali & Somma FP

PSPICE simulazione codificatori e decodificatori, MUX - DEMUX

I Bistabili. Maurizio Palesi. Maurizio Palesi 1

Circuiti per l Elaborazione del Segnale: Capacità Commutate

MULTIVIBRATORI NE 555

Circuiti sequenziali e elementi di memoria

COMPITO A. Esercizio 1 (17 punti)

Flip-flop, registri, la macchina a stati finiti

Sistemi Web per il turismo - lezione 3 -

Elettronica dei Sistemi Digitali Registri di memoria CMOS e reti sequenziali

Esame di INFORMATICA Lezione 4

Flip flop: tempificazione latch ed edge-triggered

Esercitazioni di Reti Logiche. Lezione 4

Calcolatori Elettronici

Il livello logico digitale

Esempio di Tema di Esame

CONVERSIONE DA DECIMALE A BINARIO

Contatori Elettronici frequenzimetri

Contatore avanti-indietro Modulo 4

FSM: Macchine a Stati Finiti

Cecina con gamberi rossi al lardo aromatico Ricetta x 4 persone Preparazione: 20 con raffreddamento Cottura: 7 minuti

Elaborazione dell informazione

Esercitazioni di Reti Logiche

Elementi base per la realizzazione dell unità di calcolo

Un semplice multivibratore astabile si può realizzare con le porte logiche, come nel seguente circuito:

Cap. 2 - Rappresentazione in base 2 dei numeri interi

Sistemi di Elaborazione delle Informazioni

Transcript:

Modellazione RTL Modulo 7 Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Microelettronica e Bioingegneria (EOLAB)

Register Transfer Level Esistono molti modi per implementare una determinata funzionalità tramite un dispositivo digitale. Fra questi, l approccio adottato nella grande maggioranza dei casi è quello RTL, grazie al fatto che: E il più semplice da realizzare E il maggiormente supportato da tool automatici Dà maggiori garanzie di arrivare ad un risultato funzionante in breve tempo 2

Struttura RTL Un dispositivo modellato in termini RTL è un oggetto che implementa la sua funzionalità memorizzando i dati su registri in istanti di tempo predeterminati (in corrispondenza dei colpi di clock) e trasferendo tali dati da registro a registro eventualmente elaborandoli e trasformandoli in maniera opportuna secondo una sequenza particolare Gli elementi di memorizzazione sono dunque solo i registri ed i dati vengono elaborati attraverso blocchi di logica combinatoria interposti fra un registro e l altro. Da qui il nome Register Transfer Level 3

Inputs Outputs Struttura RTL REG Logica combinatoria REG Logica combinatoria REG REG Logica combinatoria REG clock 4

Circuiti sincroni Un dispositivo modellato in RTL è un dispositivo sincrono, ossia che memorizza i dati in corrispondenza dei fronti di un segnale di sincronia detto CLOCK Gli elementi di memoria dei registri sono dunque realizzati per mezzo di flip-flop e NON di latch (che hanno il problema della trasparenza) Durante il periodo del clock le uscite dei registri vengono elaborate e trasformate dalla logica combinatoria fino a presentarsi in ingresso al registro successivo dove verranno memorizzati al prossimo colpo di clock 5

Esempio: memorizzazione su latch Y=Y+C C[7:0] + EN Y[7:0] Registro costituito da 8 latch D con enable Finché EN=1 il latch è trasparente e la somma e Y continua ad essere aggiornato (Y=Y+C+C+C+ ). Si crea cioè un percorso diretto ad anello fra ingresso ed uscita e non si può essere certi di quante volte verrà fatta la somma 6

Esempio: memorizzazione su flip-flop C[7:0] + CLK Y[7:0] Registro costituito da 8 flip-flop D Adesso sappiamo che il nuovo valore verrà memorizzato sul registro solo in corrispondenza del fronte del clock, a prescindere del periodo in cui CLK resta alto o basso e possiamo sapere esattamente quante volte viene fatta la somma contando i colpi di clock 7

Struttura di un progetto Il progetto deve essere organizzato con una precisa struttura che ne garantisca il funzionamento In un modello RTL il dispositivo è costituito da: Un insieme di registri (dove vengono memorizzati i dati e gli eventuali risultati parziali) Blocchi di logica combinatoria di elaborazione Logica di controllo che stabilisce in quale modo i dati debbano essere elaborati ed in quale sequenza 8

Datapath e controllo L insieme dei registri e della logica combinatoria costituisce il datapath (percorso dei dati), la logica che determina la sequenza delle operazione è chiamata controllo Il datapath esegue le operazioni e memorizza i dati Il controllo pilota opportunamente il datapath perché implementi le operazioni corrette Per sequenziare opportunamente le operazioni, il controllo deve generare dei segnali di controllo diretti verso il datapath e ricevere in ingresso dal datapath eventuali segnali di stato 9

Datapath e controllo La generica struttura di un blocco digitale è data quindi dallo schema seguente: Inputs Segnali di stato Datapath (registri e logica combinatoria) Segnali di controllo Outputs Controllo (FSM) 10

Esempio: datapath e controllo Proviamo ad identificare il datapath ed il controllo di un sistema per la preparazione di un piatto di spaghetti alla carbonara 11

Esempio La preparazione della pasta alla carbonara deve essere fatta rispettando la seguente ricetta: Riempire un pentola di acqua, salarla e portare ad ebollizione Quando l acqua bolle gettare la pasta, passati 8 minuti scolare Nel frattempo tagliare a dadini la pancetta e mettere a scaldare l olio in una padella Quando l olio è caldo gettare la pancetta nella padella In una ciotola versare tuorlo ed albume di un uovo, aggiungere un pizzico di sale, del latte e del parmigiano Sbattere il composto energicamente Quando la pancetta è diventata croccante spegnere il fuoco sotto la padella Unire la pasta cotta al dente alla pancetta ed all uovo sbattuto Aggiungere parmigiano a gusto 12

Dati: Esempio Spaghetti, acqua, olio, pancetta, uovo, latte, sale, parmigiano Datapath: Pentola, padella, ciotola, fruste, fornelli, mestolo, orologio Controllo: Cuoco Segnali di controllo: Agire sugli interruttori dei fornelli, sullo sbattitore, dosare gli spaghetti e gli altri ingredienti Segnali di stato: Vapore di ebollizione dell acqua, aspetto della pancetta croccante 13

Esempio In questo caso il datapath è costituito da tutti quegli strumenti che sono necessari per trasformare gli ingredienti (pasta, acqua, olio, pancetta, uovo, latte, sale, parmigiano) nel piatto finale Gli ingredienti sono quindi i dati del problema ed il datapath è costituito dall insieme della pentola, la padella, la ciotola, lo sbattitore ed i due fornelli, necessari per trasformare gli ingredienti in una carbonara Il controllo è evidentemente il cuoco che si incarica di applicare le istruzioni della ricetta nell ordine opportuno I segnali di stato che provengono dal datapath dicono al controllo quando è necessario intervenire, ad esempio il vapore che sale dalla pentola avverte che l acqua bolle ed è tempo di gettare la pasta, l aspetto della pancetta avverta che è il momento di spegnere il fuoco sotto la padella I segnali di controllo sono tutte le azioni che il cuoco mette in atto per fare progredire la preparazione al momento e nell ordine giusti 14

Esempio Inputs: Acqua, sale, olio, uova, latte, parmigiano, pancetta, spaghetti Segnali di stato Temperatura dell acqua, temperatura dell olio, conteggio timer, colore pancetta Datapath Pentola, padella, ciotola, frusta, scolapasta, fornelli Segnali di controllo Accensione fornello, spegnimento fornello, buttare la pasta, scolare la pasta Outputs: pasta alla carbonara Controllo Cuoco 15

Modellazione RTL I passaggi da compiere per modellare correttamente un circuito a partire dalle specifiche che ne descrivono il funzionamento sono dunque: Identificare INGRESSI ed USCITE del modulo Definire i REGISTRI di cui si ha bisogno nel datapath Definire la LOGICA COMBINATORIA richiesta nel datapath Identificare la LOGICA DI CONTROLLO per la gestione della operazioni Inoltre, è sempre necessario definire la STRATEGIA DI RESET. Sappiamo infatti che all accensione di un circuito non è possibile sapere in quale stato esso si trovi perché i registri si inizializzano ad un valore casuale. E dunque necessario portarsi in uno stato noto attraverso un opportuno meccanismo di reset 16

Modellazione RTL In pratica il datapath risulta essere costituito da alcuni REGISTRI ed un insieme di blocchi di logica combinatoria come MUX, ADDER, SHIFTER, ALU I segnali di stato che provengono dal datapath sono in genere condizioni logiche (il contenuto di un registro è andato a zero, una somma ha dato overflow, etc.) I segnali di controllo generati dalla macchina a stati sono tipicamente i segnali di abilitazione dei registri (quando il dato è pronto bisogna abilitare il registro perché lo memorizzi al prossimo colpo di clock), i segnali di controllo dei multiplexer, i segnali di selezione delle ALU, etc. 17

Esempio contatore: specifica Modellare un contatore programmabile a 8 bit. Il contatore ha i seguenti ingressi: clk, rst : clock e reset, entrambi a singolo bit load, en_count: caricamento della durata del conteggio ed abilitazione al conteggio, entrambi a singolo bit din[7:0]: durata del conteggio (8 bit) Ha un uscita done che identifica la fine del conteggio Il funzionamento è il seguente: Non appena il segnale load va alto (e fino a che resta alto) il contatore viene inizializzato al valore presente su din e l uscita done va bassa. Dopo che load torna basso il contatore, non appena il segnale en_count va alto, inizia a decrementare il valore memorizzato fino a che non arriva a zero. A tal punto porta alta l uscita done e si mette in attesa 18

Esempio contatore: modellazione Primo passo della modellazione è l identificazione degli ingressi e delle uscite, nel nostro caso è molto semplice perché la specifica di partenza era così dettagliata da elencare uno per uno ciascun ingresso e ciascuna uscita. In generale questo non è scontato, la specifica può essere più generica ed è compito del progettista capire di quali ingressi e quali uscite ha bisogno Ingressi clock rst din load en_count Uscite done 19

Esempio contatore : schema Inputs: din[7:0] load en_count Segnali di stato Datapath Segnali di controllo Outputs: done Controllo 20

Esempio contatore: datapath (registri) Per identificare il datapath è necessario individuare registri e logica combinatoria richiesti per implementare la funzionalità. REGISTRI: Servono: un registro per memorizzare il valore di partenza del conteggio ed un registro dove memorizzare il nuovo valore assunto dal conteggio. Questi due registri possono però essere lo stesso registro perché il valore di partenza ci serve solo all inizio e poi non più. Il nuovo valore assunto dal conteggio può quindi essere memorizzato nel registro su cui inizialmente avevamo messo il valore di partenza. COUNT_REG 21

Esempio contatore: datapath (logica) LOGICA COMBINATORIA: Decrementatore: serve per decrementare il contenuto del registro Multiplexer: serve per decidere cosa scrivere nel registro (il dato in ingresso oppure l uscita del decrementatore o l uscita stessa del registro) Comparatore: per verificare se il contenuto del registro è nullo 22

Esempio contatore: datapath -1 din[7:0] MUX REG ==0? done Segnali di stato Segnali di controllo sel[1:0] clk 23

Esempio contatore : schema Inputs: din[7:0] load en_count Segnali di stato: done MUX -1 REG ==0? Segnali di controllo: sel[1:0] Outputs: done Controllo 24

Esempio contatore: controllo Il controllo è una macchina a stati che prende in ingresso i segnali load, en_count ed il segnale done per decidere come sequenziare le operazioni: Il controllo deve decidere quale segnale fare andare in ingresso al registro a seconda che il conteggio sia finito (done), oppure che sia necessario caricare un nuovo valore (load) Si tratta ovviamente di una macchina a stati così semplice che la si sarebbe potuta implementare in modo implicito 25

Esempio contatore: controllo Se realizziamo la macchina con una struttura Mealy serve un solo stato perché basta guardare gli ingressi per decidere quale sia l azione da compiere: Se LOAD = 1 bisogna memorizzare din sul registro altrimenti Se EN_COUNT = 1 e DONE = 0 bisogna memorizzare sul registro l uscita del decrementatore altrimenti Se DONE = 1 bisogna memorizzare sul registro l uscita del registro stesso 26

Esempio contatore: controllo In pratica questo particolare circuito è così semplice da non avere bisogna di un controllo con memoria (una macchina a stati). Il controllo si riduce quindi a semplice logica combinatoria (ottenuta dalla trascrizione verilog del comportamento voluto, espresso nel lucido precedente da if else) Si tratta di un caso particolare, ovviamente, data la semplicità del circuito che si voleva realizzare (in pratica tutta la memoria necessaria è dentro il datapath). Non esistendo la macchina a stati non è neanche necessaria una strategia di reset 27

Esempio contatore : schema Inputs: din[7:0] load en_count Segnali di stato: done MUX -1 REG ==0? Segnali di controllo: sel[1:0] Outputs: done Logica Combinatoria 28

Input clk, rst : clock e reset go : partenza elaborazione din [3:0] : dati in ingresso Output Esempio: media dout [7:0] : media di 4 ingressi successivi data_valid : dato in uscita valido Funzionamento: Il sistema resta in attesa del segnale go. Non appena go va alto acquisisce sequenze di 4 dati sul bus di ingresso din e ne calcola la media. Quando la media è pronta data_valid va alto. Se go torna basso prima che la media sia pronta si torna in attesa del segnale go interrompendo l elaborazione (data_valid basso). 29

Esempio media: modellazione Primo passo della modellazione è l identificazione degli ingressi e delle uscite, nel nostro caso è molto semplice perché la specifica di partenza era così dettagliata da elencare uno per uno ciascun ingresso e ciascuna uscita. In generale questo non è scontato, la specifica può essere più generica ed è compito del progettista capire di quali ingressi e quali uscite ha bisogno Ingressi clock rst din[3:0] go Uscite dout[7:0] data_valid 30

Esempio media : schema Datapath Inputs: din[3:0] go Segnali di stato Segnali di controllo Outputs: data_valid dout[7:0] Controllo 31

Esempio media: datapath (registri) Per identificare il datapath è necessario individuare registri e logica combinatoria richiesti per implementare la funzionalità. REGISTRI: Servono dei registri dove memorizzare i 4 numeri da sommare ed uno dove memorizzare la loro media. In realtà, però, non è necessario memorizzare i dati ma solo le somme parziali che possono essere memorizzate in un unico registro (i dati in ingresso servono infatti solo al momento del calcolo della somma e poi non più). REG_SUM 32

Esempio media: datapath (logica) LOGICA COMBINATORIA: Sommatore: serve per sommare i dati in arrivano Shifter: serve per effettuare la divisione per 4 (dividere per una potenza di 2 equivale a fare uno shift verso destra di tante posizioni quanto è l esponente della potenza; allo stesso modo la moltiplicazione viene effettuata con uno shift verso sinistra) Multiplexer: il primo dato in arrivo non deve essere sommato al contenuto del registro ma memorizzato direttamente nel registro. Il registro stesso ha dunque due possibili ingressi: din oppure l uscita del sommatore. Ogni volta che ci si trova di fronte alla scelta fra due percorsi è necessario un multiplexer Segnali di controllo La presenza del multiplexer richiede un segnale di selezione (sel) che deve essere ovviamente generato dal controllo Segnali di stato In questo caso non abbiamo segnali di stato perché la sequenza delle operazioni non dipende da qualcosa che possa avvenire nel datapath 33

Esempio media: datapath din[3:0] 0 MUX REG + 1 Shifter dout[7:0] sel_mux clk 34

Esempio media: schema din[3:0] Datapath dout[7:0] Inputs: din[3:0] go Segnali di controllo sel_mux Outputs: data_valid dout[7:0] Controllo 35

Esempio media: controllo Il controllo è una macchina a stati che prende in ingresso il segnale go per decidere come sequenziare le operazioni: Il controllo deve decidere quale segnale fare andare in ingresso al registro a seconda che il numero in ingresso sia il primo di una sequenza di quattro oppure uno degli altri tre. Terminata una sequenza di 4 deve rincominciare da capo Si tratta ovviamente di una macchina a stati con almeno 4 stati (uno per ogni numero da sommare) più uno stato di reset. Le uscite della macchina saranno due: data_valid sel_mux Gli ingressi sono clock, reset ed il segnale go 36

Esempio media: controllo La macchina può essere implementata facilmente con una struttura di Moore perché le uscite corrispondono agli stati: sappiamo infatti che solo al quarto stato (STEP4) il dato sarà valido (data_valid) e che solo all inizio del primo step (START e STEP4) il dato dovrà entrare direttamente nel registro senza essere sommato al contenuto del registro stesso. go go STEP4 data_valid=1 sel_mux=0 go go STEP3 data_valid=0 sel_mux=1 START data_valid=0 sel_mux=0 go go go go go STEP1 data_valid=0 sel_mux=1 STEP2 data_valid=0 sel_mux=1 go 37

Esempio media : schema din[3:0] Datapath dout[7:0] Inputs: din[3:0] go sel_mux Outputs: data_valid dout[7:0] go go go STEP4 data_valid=1 sel_mux=0 START data_valid=0 sel_mux=0 go go STEP1 go data_valid=0 sel_mux=1 go go go STEP3 STEP2 data_valid=0 data_valid=0 sel_mux=1 go sel_mux=1 go data_valid 38