Indice degli argomenti

Introduzione
1. Un nodo storico    2
2. I sistemi elettronici cambiano tecnologia e filosofia 3

Capitolo 1: Generalità
1. Definizioni base 5
2. Vantaggi rispetto ad una soluzione tradizionale 6
3. Analisi dei costi per soluzioni concorrenti 6
4. Svantaggi rispetto ad una soluzione ASIC 8
5. Tipi di logiche 8
    5.1 Tipologie di PLD 12
    5.2 Tipologie di FPGA 12
    5.3 Strutture complesse 12
6. Criteri di scelta 13
7. Flusso di progetto 14
8. L’architettura influenza il software di compilazione 16
9. Benchmark 16

Capitolo 2: PLD
1. I precursori delle PLD 17
2. ISP (In-System Programming) 18
3. Tipi di operazioni possibili 20
4. Programmazione mediante interfaccia ISP 20
5. Boundary Scan 21
    5.1 Storia dello standard 1149.1 22
    5.2 Elementi della logica di test 22
    5.3 Tap Controller 24
            5.3.1 JTAG Tap Controller State 24
            5.3.2 Evoluzione del Tap Controller 25
            5.3.3 Latch dell’istruzione 26
    5.4 Tipi di istruzioni 26
    5.5 Esecuzione del test 29
    5.6 Una tecnologia di collaudo accessibile 29
6. Scenario ISP 31
7. JAM 31
    7.1 STAPL (Standard Test and Programming Language) 31
    7.2 Considerazioni sulla programmazione in-system 32
    7.3 Necessità di uno standard 32
    7.4 Introduzione al linguaggio Jam 33
    7.5 Jam Player 34
    7.6 Struttura del file Jam 35
    7.7 Formato dei dati 36
    7.8 Il linguaggio Jam per la programmazione embedded 37
    7.9 Jam nell’industria 37
8. ISP Virtual Machine 38
9. Simple PLD 39
    9.1 Architettura delle PAL 39
    9.2 GAL 41
    9.3 Altre denominazioni delle PAL 43
    9.4 Considerazioni architetturali 43
    9.5 Metodologia di progettazione delle Simple PLD 43
10. Analisi delle principali architetture di PLD 44
11. Architettura XC9500 (Xilinx) 44
12. Architettura CoolRunner (Philips-Xilinx) 47
13. Architettura ispLSI 1000,2000,3000,5000,6000 (Lattice) 48
14. Architettura Mach (Vantis-Lattice) 51
15. Architettura ad interconnessione biplanare 53
16. La migrazione dell’architettura di PLD Altera 54
17. Architettura FlashLogic (Altera) 58
18. Architettura Ultralogic e Flash370i (Cypress) 59
19. Architettura Delta39k (Cypress) 60

Capitolo 3 : FPGA
1. Scenario 63
2. Metrica 64
3. FPGA non static RAM 64
4. FPGA static RAM 65
5. FPGA in soluzioni alternative 65
    5.1 LPGA (Laser Programmable Gate Array) 65
    5.2 FPGA mascherati 66
    5.3 LPLD (Laser Processed Logic Device) 66
6. FPGA misti 67
    6.1 ASIC con FPGA embedded 67
    6.2 FPSOC (Field Programmable System On Chip) 67
7. Architettura di un FPGA row-based 68
8. Architettura di un FPGA fine-grain 69
9. Architettura di un FPGA static RAM 71
10. FastTrack interconnect 73
11. Routing segmentato 76
12. FastTrack e segmented routing a confronto 79
13. Configurazione 81
14. Sequenza di programmazione 82

Capitolo 4: Il Sistema di Sviluppo
1. Iter di progetto 85
2. Design Entry 85
3. Design Verification 86
4. Design Implementation 87
5. Il sistema di sviluppo di una PLD 88
6. Il sistema di sviluppo di un FPGA 89
7. Metodologie avanzate: Floorplanner 95
8. Metodologie avanzate: RPM 97
9. Software di sviluppo integrati 98
    9.1 MENTOR 99
    9.2 VERIBEST 100

Capitolo 5: Regole e tecniche di progetto
1. Definizione di progetto portabile 101
2. Regole di progetto portabile 101
3. Problemi comuni della progettazione 103
    3.1 Scelte preliminari 103
    3.2 Fase di Progettazione 103
    3.3 Fase di Simulazione 103
    3.4 Fase di Sintesi 104
    3.5 Fase di Compilazione Tecnologica 104
    3.6 I vincoli 104
4. Progettare con le PLD 105
5. Progettare con gli FPGA 106
6. Library of Parameterized Modules (LPM) 111
7. Core 112

Capitolo 6: Regole di codifica VHDL
1. Concetti base sulla sintesi 114
2. Inference e Instantiation di un contatore 115
3. Resource Sharing 117
4. Structure e Flatten 118
5. Segnali e Variabili 118
6. If e Case 119
7. Implementazione di un latch 120
8. Evitare i gated clocks 120
9. Inserimento di buffer globali 121
10. Implementazione di un mux con buffer tri-state 125
11. Istanziazione di un unbonded I/O 126
12. Istanziazione di una memoria 127
13. Progetto di macchine a stati 129
14. LFSR counter 136
15. Watchdog compatto in FPGA 137
16. Istanziazione di DLL e SelectShift 139
17. Decomposizione di un’istruzione VHDL 143
18. Considerazioni sulla sintesi di un FPGA 145
    18.1 Interazione tra Sintesi e Place & Route 145
    18.2 Tipi di sintetizzatori 146
    18.3 Uso delle DesignWARE 146
    18.4 Strategie di compilazione 147
    18.5 Scelte di gerarchia e di partizionamento 147
    18.6 Tipi di script 148

Capitolo 7: Regole e considerazioni hardware
1. Analisi dei disturbi elettrici 149
    1.1 EMI 149
    1.2 Diafonia 149
    1.3 Ground Bounce 149
2. Regole di Layout 151
3. Pin locking factors 152
4. Soluzioni embedded per ridurre il rumore 152
5. Stima di potenza 152
6. Riduzione dei consumi 152
7. Part Number 153
8. Migrazione tecnologica 153
9. Analisi dell’integrità dei segnali 156

Capitolo 8: Il ruolo degli FPGA nei sistemi riprogrammabili
1. Introduzione 157
2. Sistemi Multimodo 157
3. Applicazioni riprogrammabili 158
4. Calcolo riconfigurabile 158
5. Sistemi misti 160
6. Sistemi di emulazione logica 161
7. Architettura dei sistemi riprogrammabili 161
8. Esempi di macchine di calcolo riconfigurabili 165
9. Esempi di sistemi di prototipazione 169

Capitolo 9: Dispositivi Analogici Riprogrammabili
1. Field Programmable Analog Array (FPAA) 171
2. Electrically Programmable Analog Circuit (EPAC) 172
3. MPAA Motorola - Pilkington 173
4. Totally Reconfigurable Analog Circuit (TRAC) 174
    4.1 Funzionalità di cella 176
    4.2 Filtro analogico programmabile 178
    4.3 Le soluzioni TRAC 179
5. In-system Programmable Analog Circuit (ispPAC) 179
    5.1 Descrizione di un PAC Block 180
    5.2 Le soluzioni PAC 180
6. Field Programmable Mixed Array (FPMA) 182

Capitolo 10: Esempi di progetto
1. Analisi statica dei segnali 183
2. Interfaccia di I/O per microprocessore 186
    2.1 Multiplexer con buffer tri-state 186
    2.2 Interfaccia per microprocessore in FPGA 186
    2.3 Interfaccia micro in PLD 196
    2.4 Conclusioni 196
3. PLL digitale per riduzione del jitter in PLD 197
    3.1 Introduzione 197
    3.2 Evoluzione tecnica 197
    3.3 PLL con filtro di anello di tipo sequenziale 198
4. SDRAM adapter in PLD 208
5. Progetto incrementale in FPGA 220
    5.1 Sintesi e Fitter pilota 220
    5.2 Creazione del file di guida 221
    5.3 Compilazione finale 222
    5.4 Conclusioni 222
6. Esempio di script di sintesi per FPGA 224
7. Serializzatore di dati letti da una memoria parallela 228
8. FPGA Compiler II e script TCL 233

Appendice A: Note
1. Date storiche 235
2. Elenco dei principali componenti 238
3. Analisi delle vendite 239

Appendice B: Conversione VHDL – Equazioni
1.1 Divisore per 16 241
1.2 Divisore per N 242
1.3 Divisore per N con enable 242
1.4 Divisore per N con enable e reset sincrono 243
1.5 Divisore per N con enable e load diverso da 0 244
1.6 Divisore per N con reset sincrono, enable e load diverso da 0 245
1.7 Divisore per N con reset sincrono, enable e parallel load ad M 246
1.8 Down counter 247
1.9 Up-down counter 247
1.10 Esempio di progetto ad equazioni: decoder HDB3 248

Appendice C: Tecnologie costruttive
1. Technical Overview 251
2. Laser fuse 253
3. Antifuse 253
4. EPROM 256
5. EEPROM 257
6. Flash 258
7. Static RAM 260

Glossario 261

Riferimenti Bibliografici 267