Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Dispositivi logici programmabili, Appunti di Sistemi Digitali

Appunti di lezione di sistemi elettronici digitali del corso di laurea magistrale in ingegneria elettronica del Politecnico di Bari tenuto dalla professoressa Maria Rizzi. Comprende la descrizione dei dispositivi logici programmabili (PLD), dispositivi logici programmabili semplici (SPLD - ROM, PLA, PAL con esercizi di progetto/scelta), complessi (CPLD), FPGA, tecniche di programmazione.

Tipologia: Appunti

2024/2025

In vendita dal 15/04/2025

annunziata-d-aversa
annunziata-d-aversa 🇮🇹

4.5

(2)

23 documenti

1 / 24

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
SED-D_ DISPOSITIVI LOGICI PROGRAMMABILI
La diffusione della tecnologia digitale divenne rapidissima a partire dal 1970. La rivoluzione digitale è stata resa
possibile da due fattori:
- miglioramenti delle tecnologie elettroniche (CMOS) e dei processi microelettronici;
- introduzione di metodi e strumenti di progettazione automatica capaci di supportare il progetto, la verifica ed il
testing di sistemi digitali di elevata complessità.
Implementazione fisica dei circuiti digitali
Esistono svariate tecnologie con cui realizzare un circuito digitale. La scelta di quella più idonea dipende da vari
fattori: il numero di esemplari da realizzare, il tempo necessario per lo sviluppo, i costi di realizzazione e la
richiesta del mercato. A seconda del numero di pezzi da realizzare, il progettista potrà optare per una tecnica di
progettazione con costi iniziali elevati ma con costo per singolo pezzo basso oppure di una tecnica con costi
iniziali bassi e costo per singolo pezzo alto (elevata economia di scala = il prezzo all’aumentare dei pezzi prodotti
diminuisce).
In grandi linee, i tipi di circuito che si possono realizzare sono quelli a componenti discreti o i circuiti integrati.
Circuiti a componenti discreti
Il progettista prende i dispositivi che necessita e li assembla in modo opportuno per creare il prodotto finale
secondo le specifiche di prestazione richieste.
Contro:
- affidabilità delle saldature (la probabilità che qualuna di queste saldature non sia stata realizzata correttamente è
altissima, quindi la probabilità che il dispositivo non funziona sarà molto alta);
- elevate dimensioni dei circuiti (non si possono realizzare miniaturizzazioni spinte)
- ridotta velocità ed elevata dissipazione (per le elevate dimensioni avrà un effetto capacitivo molto alto quindi
dissiperà e non sarà molto veloce inevitabilmente).
- costo elevato del circuito ed economie di scala minime.
Non è mai realizzato a livello aziendale, ma solo a scopo didattico.
Circuiti integrati
- prestazioni più elevate
- elevata affidabilità
- hanno una piccola occupazione d’area (migliore) e minima dissipazione di potenza perchè vengono fatte da
aziende specializzate con un progettista dedicato al progetto che lo realizzerà e testerà.
- l’handicap è che il primo prototipo di un circuito in tecnologia VLSI è molto costoso
- l’ecomomia di scala è elevata (solo il primo prototipo costa così tanto, poi a seconda del numero di pezzi
prodotti e dalla richiesta il prezzo scende).
Uno svantaggio dei circuiti VLSI è il tempo di realizzazione del primo prototipo (circa 6 mesi) ed ogni modifica
richiede alcuni mesi per essere apportata e testata. Il flusso di progetto richiede una formazione dedicata dei
progettosto ed i sistemi di sviluppo hanno elevati costi. Per questa serie di motivi, la progettazione VLSI è
realizzata da grandi aziende che hanno elevati capitali, tali da sostenere le spese iniziali dei prototipi, e progettano
circuiti da produrre in milioni di pezzi.
Abbiamo quindi vantaggi e svantaggi da ambo le parti, per questo motivo sono nati i dispositivi programmabili.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Anteprima parziale del testo

Scarica Dispositivi logici programmabili e più Appunti in PDF di Sistemi Digitali solo su Docsity!

SED-D_ DISPOSITIVI LOGICI PROGRAMMABILI

La diffusione della tecnologia digitale divenne rapidissima a partire dal 1970. La rivoluzione digitale è stata resa possibile da due fattori:

  • miglioramenti delle tecnologie elettroniche (CMOS) e dei processi microelettronici;
  • introduzione di metodi e strumenti di progettazione automatica capaci di supportare il progetto, la verifica ed il testing di sistemi digitali di elevata complessità. Implementazione fisica dei circuiti digitali Esistono svariate tecnologie con cui realizzare un circuito digitale. La scelta di quella più idonea dipende da vari fattori: il numero di esemplari da realizzare, il tempo necessario per lo sviluppo, i costi di realizzazione e la richiesta del mercato. A seconda del numero di pezzi da realizzare, il progettista potrà optare per una tecnica di progettazione con costi iniziali elevati ma con costo per singolo pezzo basso oppure di una tecnica con costi iniziali bassi e costo per singolo pezzo alto (elevata economia di scala = il prezzo all’aumentare dei pezzi prodotti diminuisce). In grandi linee, i tipi di circuito che si possono realizzare sono quelli a componenti discreti o i circuiti integrati. Circuiti a componenti discreti Il progettista prende i dispositivi che necessita e li assembla in modo opportuno per creare il prodotto finale secondo le specifiche di prestazione richieste. Contro :
  • affidabilità delle saldature (la probabilità che qualuna di queste saldature non sia stata realizzata correttamente è altissima, quindi la probabilità che il dispositivo non funziona sarà molto alta);
  • elevate dimensioni dei circuiti (non si possono realizzare miniaturizzazioni spinte)
  • ridotta velocità ed elevata dissipazione (per le elevate dimensioni avrà un effetto capacitivo molto alto quindi dissiperà e non sarà molto veloce inevitabilmente).
  • costo elevato del circuito ed economie di scala minime. Non è mai realizzato a livello aziendale, ma solo a scopo didattico. Circuiti integrati
  • prestazioni più elevate
  • elevata affidabilità
  • hanno una piccola occupazione d’area (migliore) e minima dissipazione di potenza perchè vengono fatte da aziende specializzate con un progettista dedicato al progetto che lo realizzerà e testerà.
  • l’handicap è che il primo prototipo di un circuito in tecnologia VLSI è molto costoso
  • l’ecomomia di scala è elevata (solo il primo prototipo costa così tanto, poi a seconda del numero di pezzi prodotti e dalla richiesta il prezzo scende). Uno svantaggio dei circuiti VLSI è il tempo di realizzazione del primo prototipo (circa 6 mesi) ed ogni modifica richiede alcuni mesi per essere apportata e testata. Il flusso di progetto richiede una formazione dedicata dei progettosto ed i sistemi di sviluppo hanno elevati costi. Per questa serie di motivi, la progettazione VLSI è realizzata da grandi aziende che hanno elevati capitali, tali da sostenere le spese iniziali dei prototipi, e progettano circuiti da produrre in milioni di pezzi. Abbiamo quindi vantaggi e svantaggi da ambo le parti, per questo motivo sono nati i dispositivi programmabili.

Circuiti digitali programmabili (PLD) Sono composti da numerosi componenti digitali interconnessi (matrice molto regolare). Sono a metà strada tra i primi due tipi di circuiti. I vari componenti e le interconnessioni sono realizzate in tecnologia VLSI e, di conseguenza, non presentano problemi di affidabilità. Sono più costosi dei circuiti a componenti discreti, però siccome sono venduti in milioni di esemplari tutti uguali, hanno dei prezzi competitivi. Le prestazioni sono molto superiori di quelle dei circuiti a componenti discreti ma meno di quelle dei VLSI. Il tempo necessario per la realizzazione del primo prototipo è addirittura più basso del prototipo a componenti. Il flusso di progetto è simile a quello della tecnologia VLSI ma è più corto, inoltre eventuali errori possono essere risolti velocemente. Non hanno delle grandi economie di scala, gli unici costi che si riescono a ridurre aumentando la produzione sono i costi di sviluppo sw. Sono molto più semplici e meno costosi anche qualora si dovessero avere dei problemi e molto più versatili. Quando si vanno a comprare ci sono già le interconnessioni, basterà particolareggiarle secondo le specifiche richieste. Realizzazione del progetto Quando si va a realizzare un progetto, il progetto dipende dal “ livello di astrazione ” (il dettaglio) al quale si vuole arrivare. Un livello di astrazione (o vista) rappresenta il livello di dettaglio con cui “si guarda” un sistema. Quanto più alto è il livello di astrazione a cui si descrive un sistema, tanto più i dettagli risultano nascosti. Una descrizione di basso livello di astrazione è più vicina all’implementazione. Esempio Il circuito di controllo del cruscotto di una macchina (un tipico sistema embedded).

  1. a livello di astrazione massimo (livello funzionale) si vede questo circuito come un sistema che a determinati stimoli (uscita del sensore di velocità delle ruote, interruttore dei fari, temperatura del liquido di raffreddamento del motore, ecc) risponde con altri segnali (pilota la lancetta del tachimetro, pilota i led che segnalano lo stato dei fari ecc). A questo livello non interessa come è fatto il sistema, ma cosa fa.
  2. scendendo di livello (livello architetturale) si vede l’architettura del sistema, ovvero si vede che lo stesso sistema è composto da un bus di sistema, a cui è collegato un microprocessore, un insieme di interfacce per i sensori e per gli attuatori, una RAM ecc.
  3. ad un livello di astrazioen più basso (livello gate) non si distonguono i vari componenti ma si vede che il circuito è composto da un insieme di porte logiche (alcune del microprocessore, altre di circuiti integrati dedicati, ecc), collegate opportunamente fra loro.
  4. scendendo ancora (livello layout) si vedono le “maschere” (ovvero delle regioni che hanno caratteristiche elettriche differenti) che permettono di realizzare un circuito integrato.
  5. scendendo ancora è possibile considerare lo stesso circuito come un insieme di elettroni che circolano attraverso le regioni conduttrici, secondo leggi fisiche ben precise. Un qualsiasi sistema digitale, indipendentemente dal suo livello di complessità, puó essere realizzato utilizzando un insieme di pochissimi componenti-base (basic building blocks), che dipendono dal “livello di astrazione” a cui si descrive il sistema.
  • ad esempio ad un livello RTL (Register Transfer Language) questi componenti base sono:

    elementi di memoria: RAM, ROM, flip-flop, shift register, ...

    elementi del data path: mux, demux, reti combinatorie, sommatori, moltiplicatori,...

  • ad un livello gate i componenti base sono le semplici porte logiche (NAND, NOR, NOT).

Top down: Gerarchia tramite Dividi et Impera “Dividi il problema e lo sai comandare” Bottom-up : parti dalla parte bassa per arrivare alla cima. Graficamente è una freccia che parte dal basso e punta verso l’alto. Si analizza il dettaglio e si assemblano i vari dettagli per realizzare il progetto finale. Si verificano le risorse a disposizione, si riorganizzano in modo da vedere le soluzioni parziali, che si assemblano fino a raggiungere l’obiettivo che si vuole ottenere. Processo di astrazione : si va dal livello di astrazione maggiore fino al livello di astrazione inferiore. È un tipo di progettazione meno utilizzata. Ci sono alcuni progetti in cui si mischiano le metodologie: può essere che come metodologia di base si utilizzi la top-down ma alcuni blocchi si vanno a realizzare con metodologia bottom-up. In linea generale quella top-down è quella più utilizzata. La progettazione si avvale anche di programmi software che permettono di effettuare le fasi di simulazione del progetto utilizzando dei linguaggi specifici. Front end: parte dalle specifiche e srriva alla definizione dei componenti logici opportunamente connessi che le implementano. È indipendente dalla tecnologia scelta e non si pccupa delle fasi di implementazione fisica. Back-end: include tutte le fasi di progettazione e verifica che dipendono dalla tecnologia usata.

PLD Programmable logic devices Dispositivi che possono essere programmati o dall’utente finale o a livello di fabbrica. Il dettaglio su che livello puó essere fatta la programmazione dipende dal tipo di dispositivo. Sono costiutiti da due elementi fondamentali, che sono gli elementi logici (blocchi logici o macrocelle) e le interconnessioni, cioè il modo in cui i blocchi sono interconnessi tra loro. Entrambi possono essere programmati. L’insieme di questi elementi definisce la capacità logica del dispositivo, che si misura in numero di porte logiche nand a due ingressi che potrebbero realizzare la stessa funzione. Un dispositivo logico realizzato da una casa costruttrice viene realizzato e messo in commercio “vergine”, ovvero non è configurato per svolgere una determinata funzione logica, ma é il progettista che particolarizza il dispositivo logico programmabile che ha comprato per fargli svolgere la funzione che gli serve. Quindi escono fuori che potrebbero svolgere più di una funzione logica, ovviamente che possa essere realizzata con l’hardware che possiede. Per questo sono molto versatili. Alcune volte particolareggiare un dispositivo programmabile significa cambiare l’hardware e quindi bruciare delle connessioni; questo vuol dire che un dispositivo una volta programmato farà sempre e solo quella cosa. Questi dispositivi sono detti OTP (One Time Programmable). Invece ci sono altri dispositivi programmabili che possono essere programmati anche elettricamente, cambiano i valori di tensione. Questo tipo di dispositivo è detto cancellabile, vuol dire che una volta particolareggiati, se non mi serve più per quella applicazione, posso riutilizzarlo per un’altra applicazione, sempre con i vincoli dell’hardware. Un dispositivo programmabile elettricamente anche non riprogrammabile è molto meglio di un dispositivo non programmabile elettricamente, che potrebbero invece essere programmabili con delle radiazioni e quindi sarebbero indispensabili maschere per poterlo programmare. Un PLD è riproframmabile elettricamente_._ Classificazione Si possono partizionare in SPLD (Simple Programmable Logic Devices), CPLD (Complex Programmable Logic Devices) e FPGA (Field Programmable Gate Array) programmabili sul campo. Tutte le SPLD hanno una caratteristica in comune, quella di essere costiutiti da 2 piani di logica: un piano di AND seguito da un piano di OR, e si differenziano su quale piano è programmabile e quale piano è fisso, cioè dal luogo di intervento sul dispositivo.

PLA (Programmable Logic Array = schiera logica programmabile) Anche questa ha un piano di and seguita da un piano di or, ma questa volta entrambi i piani sono programmabili. Questo è un vantaggio perchè la rende più versatile e aumenta il numero di funzioni che si possono realizzare, ma è anche un piccolo handicap perchè programmare anche il piano delle or comunque introduce dei ritardi, quindi le prestazioni del dispositivo sono leggermente inferiori rispetto alla PAL che ha solo un piano programmabile. Programmazione e Scelta PLA Si consideri una PLA con 3 ingressi 2 uscite e 4 termini prodotto: le and avranno 6 ingressi (variabile+variabile complementata) e le or risultano essere connesse a 4 ingressi (entrano tutte le uscite delle and). Prima di tutto si deve vedere quante sono le funzioni da realizzare, così da scegliere il piano delle uscite. Poi sulla base delle funzioni da realizzare bisogna vedere di quante variabili sono cosi da capire gli ingressi. Dopodichè si deve capire quali sono i termini prodotto (implicanti primi) per realizzare tutte e due le funzioni. Avremo la necessità di minimizzare le funzioni e di trovare la funzione ottima in termini di numero di prodotti logici relativo a tutto l’insieme di funzioni che dobbiamo realizzare. Ci potrebbe, quindi essere un implicante primo che è condiviso tra tutte e due le funzioni, il che mi va bene. In questo caso il costo della funzione è intesa solo come numero di porte perchè del numero di ingressi non ci interessa, poichè ogni porta logica ha tutti gli ingressi possibili di default. Le connessiomi da programmabili sono su entrambi i piani e utilizziamo sempre le crocette.

PAL (Programmable Array Logic = logiche a schiere programmabili) C’è sempre un piano di and seguito da un piano di or, ma in questo caso il piano programmabile è quello delle and e quello fisso è quello delle or. Programmazione e Scelta PAL Si definisce quante sono le funzioni che vogliamo realizzare e poi si sceglie quante or avrà il piano delle uscite. Sulla base delle variabili della funzione scegliamo gli ingressi. Le dimensioni del piano delle and lo scegliamo sulla base del numero massimo di termini prodotto che ha ogni or. Il piano delle or, infatti, non condivide tutte le and: ogni or ha in ingresso solo due porte and. Quindi sono delle schiere programmabili (ogni funzione è una schiera a parte perchè ogni funzione della or entrerà in una and diversa dalle altre). Per scegliere vediamo come è fatta ogni funzione: f1 è la somma di due termini prodotto, f2 di tre termini prodotto. Ci si posiziona su quella che ha più termini prodotto (f2) e si va a scegliere una PAL dove nella or entrano 3 ingressi. Quindi, quando si sceglie, si definisce quante funzioni, quanti ingressi e quant’è il numero massimo di termini prodotto che stanno nelle varie funzioni, per scegliere quante and entrano nelle or. Metodologia di sintesi: va minimizzata e ottimizzata (la minimizzazione impatta solo sul piano delle and). L’agevolazione che si ha con le PAL è che ci sono delle PAL AVANZATE , cioè ottimizzate: il piano delle uscite, oltre ad avere delle or finali, esiste un altro piano che è una xor fatta funzionare come not, quindi un not controllato. Supponiamo che debba studiare 2 funzioni: f1 ed f2, di cui f1 è somma di tre prodotti, f2 è somma di due prodotti. Se non usassi una pal avanzata, dovrei posizionarmi a scegliere un piano delle and che ha tre and che entrano in f1 e f2, tre and che entrano nella nor. Se io invece ho una pal ottimizzata che come ultimo piano ha un not controllato, mi vado a studiare anche la negata di f1 e di f2. Supponiamo che f2 negata è la somma di due implicanti come prima, mentre f1 complementato è la somma di due implicanti invece di tre. Allora scelgo f1 complementata in modo da ridurre il piano delle and perchè prendo due and per ogni or, non più tre and. Realizzo l’hardware di f1 con sole due and, così come l’hardware di f2, peró poi connetto l’invertitore e avrò f1. Questo tipo di pal si chiamano PAL con programmazione riuscita. La programmazione si effettua in questo modo. Si ha una xor a due ingressi: se un ingresso si mette allo 0 logico funziona da buffer e quello che esce fuori è la stessa variabile di ingresso, se si connette ad 1 esce fuori l’ingresso negato. Quindi a seconda di che fusibile si brucia si ottiene la funzione normale o l’ingresso complementato.

Sintesi

  1. Si sintetizzi un convertitore di codice Binario-Gray a 4 bit, utilizzando una ROM opportuna
  1. si sintetizzino le funzioni indicate con un’opportuna PLA
  1. si sintetizzino le funzioni indicate con una opportuna PAL

Se volessimo aumentare la capacità del dispositivo PAL ovviamente significherebbe aumentare il numero di ingressi del piano di and programmabile, e quindi aumentare il Fan-in delle AND con conseguente peggioramento di prestazioni. Se volessimo realizzare circuiti più complessi, in termini di capacità logica, e quindi circuiti che implicano tante porte logiche ed elementi di memoria, senza risentire delle prestazioni sia in termini di velocità che in termini di comsumo di potenza, utilizziamo una struttura costituita da interconnessioni tra più PAL. Quindi avremo PAL che già di per se sono programmabili, ma andiamo a programmare anche le interconnessioni tra le PAL, quindi riusciamo ad ottenere tante funzioni in modo versatile. Su questa metodologia si basano i PLD di tipo complesso in cui si hanno blocchi semplici (pal o pla) interconnessi tra di loro, e sono programmabili sia i vari blocchi, sia le loro interconnessioni. CPLD Quando abbiamo a che fare con circuiti complessi costituiti da tante porte, non è conveniente andare ad aumentare le dimensioni della PAL perchè questo mina alle prestazioni, sia intermini di prestazioni dinamiche sia in termini di fan in e fan out. Per questo motivo si utilizza la struttura dei PLD complessi che sono organizzati con alla base dei blocchi logici che sono in genere delle PAL interconnesse tramite una matrice di interconnessione che risulta essere anch’essa programmabile. Quindi abbiamo una duplice possibilità di programmare (sia i blocchi logici che la matrice). A seconda del tipo di hardware che c’è dentro (blocchi logici) e del tipo di interconnessioni si hanno varie differenziazioni delle cpld a seconda delle case costruttrici. Hanno una capacità maggiore di 10^5 porte equivalenti (numero di porte nand a due ingressi che ci permettono di realizzare la stessa funzione logica). Si differenziano per il tipo di tensione di alimentazione, per il tipo di corrente, il consumo di corrente, ecc (prestaizoni statiche e dinamiche del circuito integrato). Il blocco logico è formato come una PAL da un piano di AND e un piano di OR, e da macrocelle che permettono di allocare i vari termini prodotto. Feedback locale: l’uscita della macrocella è inviata in ingresso al piano di and. Feedback globale: l’uscita della macrocella è inviata in ingresso al piano di and di un’altra macrocella attraverso le interconnesisoni programmabili.

FPGA

Hanno una struttura di tipo gate array, quindi sono caratterizzate dalla presenza di dispositivi già realizzati all’interno della scheda ed è necessario effettuare la programmazione (connettere i dispositivi) per poter realizzare la funzione logica. Le case produttrici sono la Intel, Xilinx, Lattice semiconductor, Microchip Technologiy. Le foga differiscono per la tecnologia di programmazione (tecnologia di tipo OTP che brucia un fusibile, quindi irreversibile che può essere fatta dalla fonderia, oppure di tipo riprogrammabile che puó essere fatta dall’utente), per l’architettura del blocco logico e del routing. I blocchi che costituiscono l’fpga sono fondamentalmente tre: i moduli logici, le risorse routing e i moduli di I/O (di interfaccia). Sul mercato esistono 4 tipi di architettura che si differenziano da come sono intervallati i blocchi logici (quadratini) e le risorse di routing (fili):

  • array simmetrici tipica della Xilinx. Ci sono tanti blocchi logici separati da risorse di routing verticali o orizzontali.
  • modello a riga tipica della Microchip. I blocchi logici sono confinanti tra di loro e tra le righe ci sono le risorse di routing.
  • modello a mare di porte Microchip. Tutta la matrice è occupata dai blocchi logici (in termini di occupazione di area è quella più efficiente) e le risorse di routing risultano essere adagiate sui blocchi logici.
  • modello gerarchico tipica della Intel. Riprende il modello ad array simmetrici ma c’è un doppio livello di gerarchia, poichè la struttura tipo di array simmetrico diventa a sua volta parte di una struttura ad array simmetrico. Risorse di routing : l’fpga al suo interno mette a disposizione 3 tipi di componenti per realizzare i collegamenti tra i vari blocchi logici!
    • wire : i fili veri e propri. Piste metalliche suddivise in
      • segmenti (wire segment) che connettono gli switch;
      • track ovvero sequenze di wire segment;
      • routing channels (canali di routing) che sono gli insieme di track di tipo parallelo.
    • switch module : effettua l’interconnessione tra segmenti di filo orizzontali e verticali
    • connection module : permette la comunicazione tra le uscite e gli ingressi dei blocchi logici e i segmenti. Le interconnessioni sono gli elementi che occupano maggior area all’interno della scheda (70%-90%).

Lo switch è realizzato tramite sei transistor che permettono di connettere tutte le linee di ingresso con le linee di uscita. A seconda delle connessioni tra gli ingressi che si devono effettuare, si attiva il transistor (diventa un corco circuito). Quindi vengono programmati anche gli switch e i moduli di interconnessione, non solo le interconnessioni, in modo che vengano realizzati dei cammini a bassa tensione e permettano di raggiungere l’ingresso con l’uscita selezionata. Moduli logici Ultimamente vengono differenziati sulla base della loro granularità: si parta di granularità fine e granularità grossa. La granularità è una qualificazione del modulo inteso come:

  • fine: è un blocco piccolo con pochi elementi logici dentro (se voglio fare una funzione complessa con tanti elementi logici mi servono tanti moduli a grana fine e maggiori interconnessioni e quindi maggiori ritardi)
  • grossa: è un blocco logico più complesso, ma nelle strutture ci sono meno blocchi logici. Esempio: FPGA Plessey (grana fine) Di base é un blocco nand. Un mux realizza le interconnessioni programmabili e un latch può essere utilizzato come elemento di memorizzazione. Vantaggi: Essendo i blocchi elementari molto semplici saranno sicuramente sfruttati pienamente. Essendo i blocchi elementari di basso livello, i tools di sintesi riescono a sfruttsrli al meglio. Svantaggi: Richiedono un elevato numero di linee di connessione e switch programmabili. Costosi in termini di area e di ritardo. Densità e velocità non così elevate.

Basati su LUT Sono formati da un Flip flop, un mux, che serve solo per far in modo che l’uscita sia la funzione combinatoria o la funzione sequenziale, e poi la LUT. La Look Up Table è una memoria (dei registri) che memorizza il dato che serve per la funzione logica. Supponiamo di avere una funzione di 3 ingressi da realizzare (8 mintermini della funzione) tramite una LUT. Si prende un registro con 8 allocazioni di memoria e un mux 8x1. A seconda della variabile di selezione verrà portato in uscita uno dei mintermini: se viene selezionato tutti 0 passerà un’uscita 0, se viene selezionato 001 passa l’1, ecc: Una LUT implementa una generica rete combinatoria a k ingressi.

  • combinazione di 2^k registri da 1 bit (2^k bit di lut) ed un multiplexer a k ingressi di selezione.
  • i valori caricari neo 2^k registri sono i valori assunti dalla funzione combinatoria. Il caricamento avviene in fase di configurazione della fpga.
  • i k ingressi di selezione sono controllato dalle variabili di ingresso della funzione da realizzare. Una LUT a k ingressi può realizzare 2 alla 2^k funzioni combinatorie diverse a k ingressi. Una LUT a 2^k bit può essere realizzata come:
  • 1 LUT a k ingressi
  • 2 LUT a k-1 ingressi
  • 4 LUT a k-2 ingressi
  • 8 LUT a k-3 ingressi