La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Le FPGA sono circuiti integrati contenenti molte celle logiche, ciascuna delle quali puo’ comunicare con le altre tramite una fittissima rete di connessioni.

Presentazioni simili


Presentazione sul tema: "Le FPGA sono circuiti integrati contenenti molte celle logiche, ciascuna delle quali puo’ comunicare con le altre tramite una fittissima rete di connessioni."— Transcript della presentazione:

1 Le FPGA sono circuiti integrati contenenti molte celle logiche, ciascuna delle quali puo’ comunicare con le altre tramite una fittissima rete di connessioni. FPGA (Field Programmable Gate Array) Siamo a circa 200,000 elementi Logici equivalenti e a 1200 pin di I/O LC = Logic block CLB = Configurable logic block Matrice di switch

2 Piu’ importanti produttori di FPGA: Altera (SRAM based); Xilinx (SRAM based); Actel (flash and antifuse based FPGA). Tre tipi di FPGA attualmente in commercio: basate su antifuse/SRAM/flash memory. SRAM: L’FPGA basata su SRAM. Antitesi a DRAM  indica che non c’e’ bisogno di refresh del dato; deve essere riprogrammata ad ogni power-on (volatile). Necessita di memoria esterna ( EEPROM/flash), ma e’ riprogrammabile per un numero infinito di volte. Locazioni di memoria scritte/lette in qualsiasi ordine 6 transistor CMOS; 4 per immagazzinare Il dato(M1,M2,M3,M4) + 2 transistor per i processi read/write (M5,M6).

3 Voglio scrivere “1”  (scrivere  WL = 1) BL =1, BL = 0  M6 acceso, Q = 1  M2 spento, M1 acceso  Q = gnd. Quindi M5 spento e M4 acceso  Q = Vdd = 1. Attenzione: M5,M6 dominano sugli altri transistor. Es: Esercizio: lettura di uno stato con Q=0. M3M3 SRAM

4 L’antifuse/fuse e’ una memoria non volatile, OTP (One Time Reprogrammable), Usata cioe’ per FPGA non riprogrammabili ( = programmabili 1 volta) : Fuse: Le linee sono inizialmente tutte connesse, si procede bruciando “fuse” alcune connessioni, tramite tensioni piu’ alte di quelle di funzionamento. Antifuse: linee tutte disconnesse; la programmazione crea le connessioni. Materiale Inizialmente isolante reso conduttivo tramite tensioni elevate. Si puo’ programmare Una sola volta ( rad. tol). Antifuse (dielettrico) Linea 1 Linea 2 Metallo 2 ossido Metallo 1

5

6 La memoria flash e’ simile alla EEPROM vista nella scorsa lezione. Piu’ lenta di una RAM; la cancellazione avviene a blocchi, non a singolo byte. Numero max di riprogrammazione 10 5 -10 6. In genere le EEPROM sono cancellabili in piccoli Blocchi ( byte), mentre le flash sono cancellabili a blocchi piu’ grandi. Inventate nel 1984  flash perche’ il sistema di cancellazione ricordava all’inventore (Masuoka) il flash di una macchina fotografica. Possono essere Di tipo NOR (lente, Rand. Access) o NAND ( veloci, non random access, dati letti a blocchi). Funzionano col solito “floating gate”, dove e’ immagazzinata la carica. Default:  “1”. Per metterla a 0, Vgs e Vds Molto alto  alcuni elettroni “saltano” nel FG. Gate a gnd. Vgd invertito  elettroni fanno tunneling nel drain. FLASH

7 One limitation of flash memory is that although it can be read or programmed a byte or a word at a time in a random access fashion, it must be erased a "block" at a time. This generally sets all bits in the block to 1. Starting with a freshly erased block, any location within that block can be programmed. However, once a bit has been set to 0, only by erasing the entire block can it be changed back to 1. In other words, flash memory (specifically NOR flash) offers random-access read and programming operations, but cannot offer arbitrary random-access rewrite or erase operations. A location can, however, be rewritten as long as the new value's 0 bits are a superset of the over-written value's. For example, a nibble value may be erased to 1111, then written as 1110. Successive writes to that nibble can change it to 1010, then 0010, and finally 0000. In practice few algorithms take advantage of this successive write capability and in general the entire block is erased and rewritten at once.

8

9 Logic element

10

11

12 Es A=1, B=1  X0r di (1,0)  1 Dunque A+ B = A + 1 = 0 ( sul primo bit) B

13 FPGA montata su una scheda Come si arriva a questo punto ?

14 b) rx; Montaggio di una scheda: - Selezione dei chip che fanno al vostro caso sperimentale; - Schematiche; - Master + simulazione; - Produzione PCB; - lamina serigrafica + crema conduttiva; - passaggio in pick & place; - forno con opportuno profilo termico (ROHS); - test di qualita’: a) fotografica (ORBOTEK);

15 FPGA X- RAY Bisogna connettere oltre 1000 piedini. La mancata connessione di un solo piedino Puo’ compromettere il funzionamento di tutta la scheda. Come si fa a stare tranquilli ?

16 In realta’ ci sono metodiche molto piu’ approfondite. Scansione alla BGA (ball grid array) in grado di confrontare scale di “grigio” diverse. Usati X rays di energia diversa. Si va alla ricerca di possibili formazione di aria (gas) dentro la “ball”. Un sw ad hoc stima la frazione di volume  se maggiore di un certo limite (es 20%) Saldatura da rifare.

17 Tecnologie per la programmazione delle FPGA - Volatili : si mette il codice su una memoria RAM in cui si scrive la configurazione; - Non Volatili: si mette il codice su una EEPROM o su una flash memory. Vari nomi di file (.sof,.pof,.rbf) dipende dalla funzione e dalla casa madre. Le 3 principali sono Actel,Altera,Xilinx. Per programmare le Altera si puo’ usare un oggetto chiamata Byte-Blaster. Oppure si puo’ programmare da remoto una EEPROM (flash )tramite il VME. Le memorie flash sono non volatili, veloci ( meno delle RAM). Presentate al Congresso IEEE del 1984 da F. Masuoka. Nel 1988 scatta l’interesse di Intel. Es. La Stratix II EP2S130 ha 37,325,760 bit di configurazione  la memoria Flash Altera EPCS64 con i suoi 67,108,864 bit e’ OK.

18 Per programmare una FPGA l’utente usa un Hardware description language (VHDL,Verilog) oppure un disegno schematico. NETLIST Compilazione funzionale + Sintesi. Viene generata le NETLIST. Assembler File di configurazione Place in route o Device fitting ( si decide la posizione degli elementi sui PLB) ed assegna Le linee di connessione

19

20 ENTITY D_FF is PORT( clock: in std_logic; outp: out std_logic; ); End D_FF; Architecture mine of D_FF signal outp_int : std_logic: = ‘1’; BEGIN process(clock) begin if( clock’event and clock = ’1’) then outp_int <= not (outp_int); end if; end process; outp <= outp_int; end mine;

21

22 Q1 Q3 Q5 Q2 Q4 Q6 MRPC 3 MRPC 2 MRPC 1

23 E’ chiaro che un oggetto del genere si adatta molto bene alle nostre esigenze Di costruire un sistema di trigger. Abbiamo n ingressi e possiamo formare Le combinazioni che vogliamo da VHDL. Esempio Make: process (q1,q2,q3) begin bbb <= q1 & q2 & q3; end process; Make2: process (q4,q5,q6) begin bbb2 <= q4 & q5 & q6; end process; Stud1: process(clk80,sysres2,dltt6sig) begin if (not(sysres2) = '1'or dltt6sig = '1') then trig_std_1 <= '0'; elsif(clk80'event and clk80 = '1') then case bbb is when "111" => trig_std_1<='1'; when others => trig_std_1<='0'; end case; end if; end process; Stud2: process(clk80,sysres2,dltt6sig) begin if (not(sysres2) = '1'or dltt6sig = '1') then trig_std_2 <= '0'; elsif(clk80'event and clk80 = '1') then case bbb2 is when "111" => trig_std_2 <='1'; when others => trig_std_2 <='0'; end case; end if; end process; Final: process(clk80,sysres2,dltt6sig) begin if (not(sysres2) = '1'or dltt6sig = '1') then trig_std <= '0'; elsif(clk80'event and clk80 = '1') then if(trig_std_1 = '1' and trig_std_2 = '1') then trig_std<='1'; else trig_std <= '0'; end if; end process; Spare1 <= trig_std;

24 Segnale di trigger

25 Ma funziona sul serio ?  simulazione Adesso non resta che caricare il file sulla FPGA e provarlo in laboratorio….


Scaricare ppt "Le FPGA sono circuiti integrati contenenti molte celle logiche, ciascuna delle quali puo’ comunicare con le altre tramite una fittissima rete di connessioni."

Presentazioni simili


Annunci Google