Vous êtes sur la page 1sur 18

!

Domande
- Descrivere l'architettura di base di un'FPGA Field Programmable Gate Array una matrice di gate che possono essere programmati sul campo, blocchi logici con interconnessioni programmabili via software. I compiti di questa vengono svolti in parallelo non in modo sequenziale. E formato da tanti blocchi logici

2-Cos'e' ed a cosa serve una Look-Up Table? Esempio di circuito di 3-input LUT . (istant access pdf) Una LUT una componente di ciascun blocco logico, vinene utilizzata per calcolare anticipatamente i risultati delle operazioni cos poi da richiamare il risultato richiesto senza la necessit di ricalcolarlo rallentando il programma. La LUT creata in modo che la cella di memoria puntata da ciascuna combinazione di valori, contiene il valore desiderato; o meglio: Un gruppo di segnali di ingresso utilizzato come un indice (puntatore) ad una tabella di ricerca (LUT). Il contenuto di questa tabella sono disposte in modo tale che la cella puntata da ogni combinazione di input contiene il valore desiderato. 3-input -> 2^3=8 out

Quali sono i componenti base di un Logic Block di un FPGA?

La parte principale di un blocco logico composta da una LUT a 4 input (congurabile alternativamente come una RAM 16x1 o come uno shift register a 16bit), un mutiplexar e un registro (ip-op)

- Quali tipi di interconnessioni sono presenti in una FPGA? Come sono organizzati gli interruttori che le collegano?

Interconnect.pdf Single; Double;

- Quali sono le fasi di progetto (design ow) della programmazione di una FPGA? Sinthesizer (gate-level o anche boolean) e/o Simulatore (per verica) // .v in Mapping sceglie i componenti Place (istanze mappate) & Route (collega le istanze mappate) //.sdf Bitstream di programmazione

Programmatore - Quali sono i livelli di astrazione possibili di un codice Verilog? COMPORTAMENTALI (behavioural) tipo black box: non vediamo co dentro, ma solo la funzione che svolge; posso contenere loop come for //non sintetizzato FUNZIONALE visione interna del modello matematico-logico 1-RTL register transfert level 2-booleana //sintetizzato STRUTTURALE //sintetizzato! -Gate level (schematico con porte logiche, registri etc..) ! ! ! ! ! -Transistor (o switch) level // livello pi basso - Differenza tra wire e reg? Qual'e' il tipo di default? reg ! ! si assegna nei blocchi procedurali si connette agli input delle istanze (no uscite)

wire! si assegna con assign al di fuori dellalways ! si connette a qualsiasi porta di un istanza ! reg sia per logica combinatoria che sequenziale in quanto pu mantenere un valore come un registro, wire per farlo ha bisogno di essere guidato. 1. wire elements are used to connect input and output ports of a module instantiation

together with some other element in your design.


2. 3. wire elements are used as inputs and outputs within an actual module declaration. wire elements must be driven by something, and cannot store a value without being

driven.
4. wire elements cannot be used as the left-hand side of an = or <= sign in an always@

block.
5. 6. 7. wire elements are the only legal type on the left-hand side of an assign statement. wire elements are a stateless way of connecting two peices in a Verilog-based design. wire elements can only be used to model combinational logic.

1. reg elements can be connected to the input port of a module instantiation.

2. reg elements cannot be connected to the output port of a module instantiation. 3. reg elements can be used as outputs within an actual module declaration. 4. reg elements cannot be used as inputs within an actual module declaration. 5. reg is the only legal type on the left-hand side of an always@ block = or <= sign

6. reg is the only legal type on the left-hand side of an initial block = sign (used in Test Benches).
7. reg cannot be used on the left-hand side of an assign statement.

8. reg can be used to create registers when used in conjunction with always@(posedge Clock) blocks. 9. reg can, therefore, be used to create both combinational and sequential logic.
Posso essere usati entrambi nei casi: 1- Alla destra di un assign e blocco always@ = o <= 2-Connessi come input di porte di moduli istanziati il tipo di default wire.

- A cosa serve la direttiva `timescale in una simulazione? Qual'e' la sua sintassi?

In una simulazione il timescale compiler directive usato per specicare lunit di tempo di ciascuna operazione la direttiva timescale viene usata per determinare lunit di tempo usata nelle simulazioni. timescale <unit di tempo, unit con cui sono espressi i tempi> / <precisione con cui vengono approssimati i tempi inseriti>

We may want to specify the clock period with real time units. The timescale com- piler directive is used to specify the time units of any delay operator (#), and the preci- sion to which time calculations will be rounded. If the compiler directive `timescale 1ns / 100ps time units for the delay values have not been specied. The `timescale compiler directive is used to make these specications. The form of the compiler directive is: `timescale <time_unit> / <time_precision> This directive sets the time units and precision for the modules that follow it. Multi- ple

`timescale directives may be included in a description.


The <time_unit> and <time_precision> entries are an integer followed by a unit of time measure. The integer may be one of 1, 10, or 100. Thus a module following a `timescale directive of: `timescale 10 ns / 1 ns

maintains time to the precision of 1 nanosecond. The values specied in delays though are multiples of 10 nanoseconds. That is, #27 means delay 270 nanoseconds.
- Cos'e' una sensitivity list? una sensitivity list una lista di segnali (ingressi della funzione logica) che deve variare afnch venga eseguito un blocco always always @ (<sensitivity list>) i nomi dei segnali vengono separati da or lalways viene eseguito solo se uno dei segnali presenti varia. Generalmente il contenuto della sensitivit list sono gli ingressi alla funzione combinatoria (perci reg) o al variare del clk. si pu anche inserire un * al posto della sensitivity list afnch il programma riconosca in automatico quali valori inserire, ovvero i valori che cambiano. - Quali istruzioni e blocchi compongono un codice Verilog? Corpo di Programma verilog: -Assign Statement -always statement (procedure) -Instanze di moduli - Perche' si divide un codice Verilog in testbench (test xture) e unit under test (uut) ? Il testbench come fosse un ambiente in cui avvengono le simulazioni, contiene una parte di codice che pu essere non sintetizzabile per provare le varie possibilit di ingressi; questa parte da la possibilit di provare i moduli istanziandoli come con uut. il testbench viene usato per la simulazione, ha al suo interno listanza del modulo da testare (che lUUT), la generazione degli stimoli, eventuali strumenti di visualizzazione dei risultati. testbench non ha n ingressi n uscite. Gli ingressi del UUT, allinterno del modulo testbech sono deniti come reg perch devono essere imposti dal testbench stesso (a meno che non vengano generati da moduli istanziati nel testbench, nel qual caso sono wire) Le uscite del UUT, dentro il testbench sono sicuramente wire perch devono essere imposte dal UUT e NON dal testbench

After code is developed, it can be simulated in a host computer to verify the correctness of the circuit operation and can be s-vnthesized to a physical device. Simulation is usually performed within the same HDL framework. We create a special program, known as a testbench, to mimic a physical lab bench. The uut block is the unit under test, the t e s t vector generator block generates testing input patterns, and the monitor block examines the output responses.
- Quali sono le tecnologie utilizzate per la memorizzazione della congurazione delle FPGA? Vantaggi/svantaggi? ele B Le vecchie FPGA utilizzavano la Fusibile-link Technology, interconnessioni programmabili organizzate nel seguente modo: ciascun input presente nella sua forma true e inverted con potenziali connessioni da attivare per far passare una delle 2 forme dellingresso. Il dispositivo prodotto con tutti i collegamenti fatti da fusibili, in fase di programmazione

vengono surriscaldati (e quindi bruciati portando ad avere un circuito aperto) le connessioni desiderate al ne di creare la forma desiderata; in questo modo per il device diventa one-time programmable poich una volta fusi non possono essere ripristinati.Tutti gli ingressi sono connessi attraverso una rete di resistenze di pull-up alla quale collegato il valore logico 1.

oggi si utilizza le tecnologie: Antifuse che utilizza una colonna di silicio amorfo isolante che pu essere trasformata in una Polisilicon via. sempre OTP; SRAM-Based (la pi utilizzata) la SRAM dominata da un transistor che on o off in base al contenuto della ram (0 o 1); FLASH-Based (nuova) utilizza EPROM. Si programmano con il metodo CHE: Channel Hot Elecron, si impone una forte tensione Vgs e Vds di modo che gli elettroni saltino nel oating gate, per cancellare uso UV (tunneling) E-PROM si programmano col metodo CHE (Channel Hot-Electron). Vds alta e Vgs alta, gli elettroni saltano caldi nel Floating Gate, cos da togliere luso degli UV. ha il vantaggio di essere Autoregolante, la carica immagazzinata ha un massimo deltaV che p dato da Vcanale e Vfg E^2-PROM si programma sempre con il CHE, per la cancellazione si usa il tunneling in quanto queste sono caratterizzate da uno strato molto sottile tra oating gate e drain. Processo non autoregolante FLASH presente un transistor che controlla la cancellazione (che comunque avviene per tunneling)

SRAM: va a sostituire la Flash, pi veolce ma meno sicura

- Cosa e' una PLA? Programmable Logic Array (matrice logica programmabile) un dispositivo logico programmabile che si basa sul fatto che qualsiasi funzione logica pu essere descritta tramite somme di prodotti logici. Inizialmente implementavano solo circuiti combinatori, successivamente furono crate anche PLA sequenziali

- Cosa e' una PAL? le PAL, Programmable Array Logic sono PLA in cui la serie di porte OR non programmabile. - Cosa e' un CPLD? Complex Programmable Logic Device un dispositivo programmabile e cancellabile con un numero di pin maggiore di 48. A differenza di molte FPGA queste mantengono la programmazione anche quando non sono alimentate perch contengono delle memorie non volatili. Come le FPGA hanno un grande numero di gate disponibili.

- Cosa si intende per ASIC e quali sono i suoi vantaggi/svantaggi rispetto ad una FPGA? e rispetto ad un microprocessore?

Application Integrated Circuit circuiti intergrati misura per usi. Hanno un pi di progettazione alle FPGA e non riprogrammabili. ottimizzate per specica applicazione perci hanno un minor consumo di potenza rispetto alle FPGA, hanno un minor costo di produzione e una maggiore velocit. Per la produzione in grandi quantit sono perci meglio le ASIC in quanto i costi di progettazione vengono ammortizzati, mentre per le piccole quantit il contrario. Un microprocessore avendo genericit assoluta (maggiore di FPGA) ha un maggior consumo di potenza, un maggior costo e minore velocit. I Microprocessori hanno genericit assoluta, riprogrammabili, meno veloci, pi consumo.111 Specic sono creati su particolari alto costo rispetto sono Sono quella

- Spiegare il concetto di granularita' di un'FPGA. Le fpga sono composte da LB e inteconnessioni tra di essi. Si parla di Fine-grained architecture quando ciascun blocco logico implementa solo una funzione logica molto semplice, come una a 3-input (AND OR) o un elemento di memoria (ip-op, latch). Richiede un largo numero di connessioni aumentando il ritardo Coarse-grained se invece ciascun blocco contiene una grande quantit di logica come vari ip-op, vari mux etc.. Richiede meno blocchi logici, ma spesso nellesecuzione ci sono risorse LUT inutilizzate. ne-grain! perdono area in interconnessioni coarse-grain ! isorse LUT inutilizzate r

- Quali sono i blocchi procedurali Verilog? Initial !! eseguiti 1 sola volta iniziano al tempo 0 Always ! eseguito in loop nch la sensitivity list true/varia - Qual'e' la differenza tra blocking e non-blocking assignment in Verilog? E rispetto ad un assign statement? Normalmente per la logica combinatoria viene usata la blocking = assignments; per la sequenziale si usa la non-blocking <= con unit di ritardo. Se una serie di istruzioni devono essere eseguite una dopo laltra, dobbiamo usare il blocking assignment. Non-blocking assignments senza ritardi sono eseguiti simultaneamente. Un Assing Statement usato solo per logica combinatoria ed eseguito continuamente, per questo chiamato continuous assignment statement dal momento che non c nessuna sensitivity list - Differenza tra logica combinatoria e sequenziale? Un blocco di logica puramente combinatoria un blocco con N variabili di ingresso e M variabili di uscita che sono funzione (booleana) degli ingressi in un certo istante. Perci non avremo n ip-op n latch Un blocco di logica sequenziale un blocco logico le cui uscite dipendono non solo dagli ingressi attuali ma anche dagli ingressi in istanti precedenti (oppure dallo stato che il sistema aveva assunto nellistante precedente) cio sono circuiti dotati di memoria.

- Cos'e' un mask-programmed gate array (MPGA, anche detto Sea-Of-Gates) e come si programma? Sono circuiti stampati con gate e rete di pull-up e pull-down, con una grande quantit di connettori pronti, ma tra i quali mancano i collegamenti, baster collegarli con un metallo per fare i collegamenti desiderati per creare la propria funzione logica. In questo modo si pu produrre su larga scala, deve poi essere completato dal programmatore. Pi grandi, veloci e che consentono di realizzare funzionalit a granulit ne ma che richiedono di attraversare una parte del processo di fabbricazione. - Qual'e' la differenza tra ip-op e latch? ip-op sensibile ai fronti (lo stato cambia durante la crescita o il crollo del segnale, generalemnte clk) latch sensibile ai livelli ; non ha necessariamente bisogno del clk ; generalmente pi veloci ; generalmente pi facili da implementare - Da cosa dipende il tempo di propagazione di un gate CMOS? (pag 213 ele B) il tempo di propagazione direttamente proporzionale alla capacit C_L, mentre inversamente proporzionale al fattore di forma (W/L) e a V_DD. t_PHL = C_L / [ (W/L) K_n V_DSATn perci per ridurre il tempo di propagazione possiamo: -ridurre C_L, buona norma mantenere larea di diffusione di drain pi piccola possibile -aumentare il fattore di forma W/L, ma aumentare le dimensioni dei transistor comporta laumento delle capacit parassite. -Aumentare V_DD, trovando il giusto compromesso tra prestazioni e consumo di potenza. - Qual'e' la potenza dissipata da un gate CMOS dati frequenza, carico e tensione di alimentazione? P_d = f C_L V_DD ^2 - Cosa si intende per clock skew e quali effetti ha sul timing di un circuito logico? Questo avviene quando pi blocchi devono essere sincronizzati sullo stesso segnale di clock ed il ritardo fra un blocco e laltro risulta essere superiore alla durata del segnale attivo. Si intuisce dunque, che pi breve il segnale attivo (frequenze di funzionamento pi elevate) e pi tale problematica si fa sentire. In aggiunta, visto che il clock skew ha i suoi maggiori effetti sulle memorie, pi alto il numero dei moduli in parallelo da sincronizzare e pi importante gestirlo al meglio. - Quali sono i due vincoli di timing fondamentali di un ip-op? 1) il peggior tempo di propagazione della logica combinatoria (t_pc) deve essere minore del periodo (T) meno il tempo di set up (tempo necessario al Flip Flop per memorizzare il dato, tempo in cui il segnale deve essere valido prima del fronte di clk) t_pc < T - t_setup ! il mio periodo lento se faccio funzioni troppo complesse 2) t_pc > t_hold

! t_hold (tempo in cui i dato deve restare valido prima del fonte di clk) ! il dato deve togliersi prima che luscita sia pronta ! se non viene rispettata il dato memorizzato nei FF non valido posso inserire il tempo di skew t_pc < T - t_setup + t_skw t_pc > t_hod - t_skw

- Come si indicano valori di input/output indifferenti (don't care) nelle istruzioni if e case in Verilog? per il dont care viene usato x es: case (var[2:0]) ! 3b000: out= 1b1; ! 3b001: out= 1bx; ! ... ! end case - Cosa indicano i valori x e z in Verilog? i valori x e z vengono usati nei case e negli if come x = dont care z= alta imedenza z viene usato nei buffer tri-state - Come si istanzia un buffer tristate in Verilog? always @* ! if (T) Y= 1bz ; ! ! else Y=A ; altrimenti da primitiva: buf if 0 mytri (Y,A,T) // un buffer se T 0 buf1 ... // un buffer se T 1

- Si tracci un esempio di circuito per implementazione di shift-register e RAM in blocchi logici di una FPGA Se shift enable= 1 => shift register se shift enable= 0 => RAM

- Quale il codice verilog per la sintesi di una RAM in Verilog? module ram (input[3:0] ADDR, input [7:0] DIN, output reg [7:0] DOUT, input CK, WE) ! reg [7:0] num[15:0] //registro da 8 bit (pero ne ho 16) ! always@ (posedge CK) begin ! ! if (WE) num [ADDR] <= DIN; ! ! DOUT <= num [ADDR]; ! // essendo non blocking in uscita ho il valore ! ! ! ! ! ! //precedente che era in memoria ! ! end

endmodule //memoria sincrona

always@ (WE, ADDR, DIN) ! if (WE) num[ADDR] =DIN; ! always@(ADDR) ! ! DOUT= num[ADDR] //memoria asincrona perch non gestita dal clock - Cosa si intende per retiming di un cricuito sequenziale? Cerchiamo di spostare un po di logica combinatoria da uno stadio allaltro, senza variare la funzione logica, per migliorare il t peggiore; a volte possibile parallelizzare o altro non solo spostare ma creare altri FF Retiming is a term used in the context of physical synthesis and is based on the concept of balancing out positive and negative slacks throughout the design, where positive slack refers to a path with some delay available that youre not using, and negative slack refers to a path that is using more delay than is avail- able to it. Replication is similar to retiming, but focuses on breaking up long interconnect.

Retiming is very common in physi- cally aware FPGA design ows because registers are plentiful in FPGA devices

- Quali sono i componenti specializzati presenti all'interno delle FPGA? (si diano 3 esempi e loro funzione) (LB- LUT interconnessioni I/O ; non specializzati di base) microprocessore moltiplicatori... -libri- Disegnare il circuito semplicato di un blocco di un input/output di una FPGA pag 11/12 appunti - Cosa si intende per serializzazione, parallelizzazione e pipelining? Quali sono i vantaggi delle tre alternative? troughput misura delle prestazioni che tiene conto del tempo vantaggi/svantaggi: prestazioni e area occupata; parallelizzazione veloce calcolo ma tanto spreco di risorse, viceversa per serializzazione pipeline si usa per tanti dati in ingresso senza interesse della latenza, ma per avere un troughput alto ; svantaggio come per seriale tanta latenza e vasto consumo di area come parallelo - Citare almeno 3 delle 4 regole fondamentali per scrivere codice sintetizzabile di un blocco always per logica combinatoria in Verilog.

devo prendere tutti i casi possibili se hai la stessa uscita su pi always non sintetizzabile

Rules for Synthesizing Combinational Circuits


To be sure that your synthesized circuit will be combinational: Check that all inputs to your combinational function are listed in the control events sensitivity list (the comma-separated list of names). That way, if one of them changes, the output is re-evaluated. Section 2.3 discusses the use of the @(*) constructto automatically specify all of the inputs. The need for this requirement stems from the denition of a purely combinational circuit. The output of a combinational circuit is a function of the current inputs; if one changes, the output should be re-evaluated. Following these two rules will help you in writing behavioral descriptions of combinational circuits that can be used equivalently for either simulation or synthesis.

- Citare almeno 3 regole fondamentali per scrivere codice sintetizzabile di un blocco always per logica sequenziale in Verilog.

1.3.2 RulesforSynthesizingSequentialSystems
In addition to the rules listed in Section 1.2.2 for combinational circuits, there are rules for sequential systems. The sequential portion of Example 1.6 is the second always block. The rules are: The sensitivity list of the always block includes only the edges for the clock, reset and preset conditions. These are the only inputs that can cause a state change. For instance, if we are describing a D ftip ftop, a change on D will not change the ftip ftop state. So the D input is not included in the sensitivity list. Inside the always block, the reset and preset conditions are specied rst. If a neg- ative edge on reset was specied, then the if statement should be if (~reset) .... If a positive edge on reset was being waited for, the if statement should be if (reset).... A condition on the clock is not specied within the begin...end block. The assign- ment in the last else is assumed by the synthesis tool to be the next state. Any register assigned to in the sequential always block will be implemented using ftip ftops in the resulting synthesized circuit. Thus you cannot describe purely combinational logic in the same always block where you describe sequential logic. You can write a combinational

expression, but the result of that expression will be evaluated at a clock edge and loaded into a register. Look ahead to Example 1.7 for an example of this. Non-blocking assignments (<=) are the assignment operator of choice when specifying the edge-sensitive behavior of a circuit. The <= states that all the transfers in the whole system that are specied to occur on the edge in the sensitivity list should occur concurrently. Although descriptions using the regular = will synthesize properly, they may not simulate properly. Since both simulation and synthesis are generally of importance, use <= in this situation.

- Cosa si intende per analisi statica del timing, come si effettua e su quali dati si basa? static timing analisis, verica che siano rispettate le 2 condizioni base in tutta la logica, controlla tutti i percorsi e ne trova il peggiore. STA o SSTA ne fa un calcolo delle probabilit pag 15 appunti - Da cosa e' determinato il periodo minimo di clock (cioe' la frequenza massima) di un circuito logico CMOS? T>= t_p + t_setup - Illustrare larchitettura per limplementazione di ripple carry adders all'interno di FPGA ALGORITMI RICORSIVI!!!!!!!!!!!!!!! DEMORGAN!! PROPRIET BOOLEANE

Vous aimerez peut-être aussi