Eingebettete Systeme Modellierung und Zielarchitekturen Vorlesungsbegleitende Unterlagen WS 2003/2004 Klaus Waldschmidt Teil 9 Field Programmable Gate Arrays - FPGA Literatur: 1. M. Wannemacher, Das FPGA-Kochbuch, Internat. Thomson Publishing, 1998 2. A. Sikora, Programmierbare Logikbauelemente, Carl Hanser Verlag, 2001 3. A. Hertwig/R. Brück, Entwurf digitaler Systeme, Carl Hanser Verlag, 2000 Seite 1
Makimoto s *) wave Spezialisierung Standardisierung 1957 1967 1977 1987 1997 2007 standardisierte diskrete Bauelemente Spezifische Schaltungen für TV & Rechner standardisierte Speicher und Mikroprozessoren ASCI FPGA Prozessoren (µp, µc, DSP) *) Tsugio Makimoto, FPL 2000, Springer Verlag, Berlin, Heidelberg Seite 2
Kombinatorische Logik D Q Q Kombinatorische Logik D Q Q Kombinatorische Logik clock t Stufe t Logik t FF Seite 3
Eingang kombinatorische Logik nächster Zustand clock Ausgang Register-Stufe Eingang kombinatorische Logik nächster Zustand clock Register-Stufe Kombinat. Logik Ausgang aktueller Zustand Modell von Mealy einer FSM aktueller Zustand Modell von Moore einer FSM Seite 4
Algorithmus X = A - B Y = C + D Z = X * Y strukturierbare Hardware A B C D - + X Y T L * Z Mikroprozessor load A load B sub store X load C load D add store Y load X load Y mul store Z 12 Zyklen Seite 5
Kundenspezifische ICs (ASICs) Programmierbare Logikbauelemente (PLD) Festverdrahtete Logikbauelemente SPLD- Bauelemente CPLD- Bauelemente FPGA- Bauelemente Semi-Custom- Bauelement Full-Custom- Bauelement Maskenprogrammierte Bauelemente Zellorientierte Bauelemente Festwert- Speicher Gate-Array- Bauelemente Embedded-Array- Bauelemente Standardzellen- Bauelemente Seite 6
Programmierbare Logik Programmable Logic Devices (PLD) SPL (Simple PLD) Komplexe programmierbare Logik Field Programmable Gate Arrays (FPGA) CPLD (Complex PLD) Seite 7
Programmierbare Logikbausteine Man unterscheidet grundsätzlich zwischen PLD = Programmable Logic Array FPGA = FIeld Programmable Gate Array PLDs Bestehen aus einer programmierbaren UND/ODER-Matrix. Über die UND-Matrix werden Produktterme gebildet, die in der nachfolgenden ODER-Matrix disjunktiv verknüpft werden. Die UND/ODER-Matrix werid als Field Programmable Logic Array (FPLA oder PLA) bezeichnet. Meist sind dieser Matrix Ausgangs-Makrozellen nachgeschaltet. Hierbei handelt es sich um Flipflops, programmierbare Ausgangsinverter oder Output-Enable Logik. Seite 8
Je nach Programmierbarkeit unterscheidet man verschiedene Bausteine: Baustein PLA, FPLA PAL PROM UND-Matrix programmierbar programmierbar fest ODER-Matrix programmierbar fest programmierbar Seite 9
PAL Bei einem PAL ist die UND-Matrix personalisierbar und die ODER-Matrix festgelegt. x 1 x 2 1 1 x n 1 y 1 y 2 Seite 10 y m
Grundstruktur eines PAL/GAL Verbindungen -programmierbar- Eingänge & & & & & & & & Disjunktive Verknüpfung 1 FF mux Tristate 1 out 1 in 1 1 1 1 1 mux in 2 in n 1 1 1 1 Literale Seite 11
0 3 4 7 8 11 12 15 16 19 20 23 24 27 28 31 CLK/l 0 1 1 1 1 0 0 0 0 1 0 7 1 1 0 X 1 0 1 0 1 1 0 X 8 15 Seite 12
Seite 13
Bündelfunktion Eine Bündelfunktion ist eine Zusammenfassung mehrerer Einzelfunktionen. f : {0,1} n {0,1} m X 0 f 0 X 0 f 0 f 1 gemeinsame Logik f 1 X n-1 f m-1 X n-1 f m-1 m Einzelfunktionen Bündelfunktion Seite 14
CPLDs und FPGAs Bei CPLDs handelt es sich um eine Weiterentwicklung von PLDs. Da die Anzahl der Gatter in einem PLD stark durch die quadratisch angewachsene UND/ODER Matrix eingeschränkt wird (ca. 1000), wurde eine neue Architektur eingeführt, die CPLDs. Diese besteht im wesentlichen aus mehreren PALähnlichen Logikblöcken und mit einer Schaltmatrix. Im Gegensatz hierzu sind FPGAs von der Struktur her den Gate Arrays sehr ähnlich. Viele Logikzellen sind in einem Array angeordnet und können über ein Netzwerk von Verbindungsleitungen miteinander verschaltet werden. D D PLD CPLD FPGA Seite 15
CLPDs CLPDs bestehen aus mehreren Instanzen von logischen Feldern, die die Abbildung komplexer logischer Gleichungen in Produkttermdarstellung ermöglichen und die oft im Grundaufbau den PALs ähneln. Die Basiszellen von CPLDs weisen dementsprechend eine vergleichsweise hohe Komplexität auf. Seite 16
IOC IOC IOC IOC IOC IOC IOC Logic Array Block (LAB) Fast Track Interconnect IOC IOC IOC IOC IOC Macrocell LAB Local Array IOC IOC IOC IOC Seite 17
FPGA Unter FPGAs (Field Programmable Gate Arrays) fasst man komplexe programmierbare Logikbauelemente zusammen, deren Architektur auf einer vergleichsweise kleinen Basiszelle beruht. Bei FPGAs wird die Implementierung der logischen Funktionalität im Wesentlichen durch die Programmierung der Verbindungsleitungen zwischen diesen Basiszellen erreicht. Die Verbindungsarchitektur weist ein entsprechend hohes Maß an Segmentierung auf. Seite 18
Verdrahtung in CPLDs und FPGAs Schaltmatrix CPLD FPGA: viele CLBs LAB I/O LAB I/O Rückkopplungen Schaltmatrix-Verdrahtung Verdrahtung aus Segmenten Seite 19
Verzögerungszeiten in FPGAs und PLDs FPGA: IOB CLB CLB FF IOB PLD: t PD = const. Seite 20
Gegenüberstellung von CPLDs und FPGAs Eigenschaft Geschwindigkeit abhängig von der Schaltung Art der Logikblöcke Stromverbrauch Programmierung erreichbare Ausnutzung Geschwindigkeit Preis pro Gatter CPLD nein UND/ODER-Matrix hoch bis sehr hoch EPROM, EEPROM, Flash 40 % bis 60 % sehr hoch mittel bis hoch FPGA ja feinkörnig gering bis mittel SRAM, Antifuse, Flash 50 % bis 95 % mittel bis hoch gering bis hoch Seite 21
FPGA-Struktur von Xilinx I/O Block Configurable Logic Block Interconnect Area Seite 22
FPGA-Entwurf mit VHDL mit Texteditor VHDL-Eingabe graphischer Editor FSM zu VHDL Konverter Bitstreamgenerierung Hersteller- Bibliotheken VHDL Synthese VHDL- Simulation (funktional) Vorgaben Netzliste Pre-Layout- Simulation (timing) FPGA Place & Route Vorgaben FPGA Netzliste mit Timing- Annotation Post-Layout- Simulation (timing) Seite 23
Konfigurationsmodi für FPGAs (1) Adresse Takt Paralleler Speicher Enable FPGA Serieller Speicher Enable FPGA Daten Daten Master Mode parallel Master Mode seriell Seite 24
Konfigurationsmodi für FPGAs (2) Ready Adresse µp oder µc Write Select FPGA µp oder µc Write Select FPGA µp oder µc Rd/Wr Select FPGA Daten Daten Daten Peripheral Mode parallel Peripheral Mode seriell Peripheral Mode Register Seite 25
Konfigurationsmodi für FPGAs (3) Paralleler Speicher Adresse Enable Daten FPGA #1 Master Mode Parallel Daten Takt FPGA #2 Slave Mode Daten Takt FPGA #3 Slave Mode Slave Mode für Kaskade-Schaltung (daisy chain) Seite 26
Konfigurationsmodi für FPGAs Aktiv Modus (Master Mode) FPGA erzeugt selbstständig die nötigen Adress- und Steuersignale, um die Konfigurationsdaten aus einem nichtflüchtigen Speicher (ROM, EPROM, EEPROM) zu lesen. Passiv-Modus (Slave Mode) Die Konfigurationsdaten werden mittels eines externen Taktsignals in den Baustein geschrieben. Die dazu notwendigen Steuersignale können durch Ausgabeports eines Mikroprozessor-Systems generiert werden. Im Slave-Modus können auch mehrere FPGAs, welche in einer Kaskade angeordnet sind, hintereinander konfiguriert werden. Peripherie-Modus Das FPGA wird wie andere Peripheriebausteine an den Steuerbus eines Mikrorechnersystems angeschlossen. Beim XC6200 sind die SRAM-Zellen als Register organisiert. Diese Register sind in den Adressraum des Mirkorechners eingeblendet. Man unterschiedet weiterhin parallele und serielle Konfigurationsmodi. Seite 27
Programmierelemente mit Speicherzelle Das Ausgabesignal der Speicherzelle kann verschiedene Verbindungselemente (Programmable Interconnect Point PIP) ansteuern: ein Durchgangsgatter (Pass Transistor) Leitungen werden hoch- bzw. niederohmig geschaltet. ein Multiplexer Speicherinhalt bestimmt, welche Eingangsleitung auf die Ausgangsleitung geschaltet wird. eine Lookup Table (LUT) bilden LUT bilden Funktionsgeneratoren, mit Ihnen können beliebige boolesche Funktionen realisiert werden. Seite 28
S = Speicherzelle S S S S S S S S S S Seite 29
Realisierung eines XOR-Gatters durch eine LUT LUT als 4x1 RAM 1-aus-4 Decoder 00 01 10 11 0 1 1 0 Wired-Or y = a xor b Vorteile: Konstante Laufzeit Eingänge sind frei permutierbar wichtig für die Verdrahtung LUT sind oft auch als RAM konfigurierbar Seite 30
Übersicht über die Programmtechnologien Programmiertechnologien Speicherzelle (reversible) Antifuse (irreversible) SRAM EPROM PLICE ViaLink MicroVia MicroFuse Seite 31
Programmiertechnologien Unter Programmierung (Konfigurierung, Personalisierung) versteht man die Strukturierung eines FPGAs, so dass eine bestimmte, vom Anwender vorgegebene Funktion, realisiert wird. Die programmierbaren Verbindungen und Funktionen in einem FPGA werden als Programmierelemente bezeichnet. Programmiertechnologie wird die Art und Weise bezeichnen, wie diese Programmierelemente physikalisch realisiert werden. Man unterscheidet generell zwischen: 1. irreversiblen Programmiertechnologien 2. reversiblen Programmiertechnologien Konfiguration wird einmalig unveränderbar Konfiguration wird in Speicherzellen abin den Baustein gebrannt (OTB = One Time gelegt, wie z.b. SRAM, EPROM, Programmable). Programmiert wird hier EEPROM oder Flash-PROM. eine Antifuse, die wie eine normale Schmelzsicherung funktioniert. Durch Anlegen einer Spannung wird eine Isolierschicht aufgeschmolzen und eine leitende Verbindung hergestellt. Seite 32
Übersicht über die Programmtechnologien verschiedener Hersteller Technologie SRAM SRAM SRAM SRAM SRAM SRAM SRAM SRAM SRAM Flash-EEPROM MicroFuse Micro Via PLICE ViaLink ViaLink Bausteinfamilien ES (Embedded SPGA) FLEX6000, FLEX 8000 AT6000 DL5000 IBM 10016 ATT 3000 MPA1000 CLAy XC2000, XC3000, XC4000 GF100K, GF250F CP20K XC8100 ACT1, ACT2, ACT3 pasic380 pasic1, pasic2 Seite 33 Hersteller Actel Actel Atmel DnyChip IBM Lucent Technologies Motorola National Semiconductor Xilinx GateFild Crosspoint Solutions Xilinx Actel Cypress QuickLogic
Wortleitung U DD Bitleitung 1 T B T B Bitleitung 0 Q Seite 34
P-Kanal-EPROM-Zelle a) Aufbau des FAMOS-Transistors b) Eingangskennlinie vor und nach dem Programmieren c) Speicherzelle mit FAMOS-Transistor und Auswahltransistor Im programmierten Zustand leitet die FAMOS-Zelle BL = L Seite 35
Seite 36
Antifuse-Technologien Antifuses arbeiten invers zu normalen Schmelzsicherungen. Im unprogrammierten Zustand hat die Antifuse einen hohe Innenwiderstand. Durch das Anlegen einer Programmierspannung wird die Isolationsschicht der Antifuse durchgebrannt und es entsteht eine niederohmige Verbindung. Von den vorhandenen Fuses eines FPGAs müssen in der Regel lediglich 2-4 % wirklich programmiert werden. Die zur Programmierung notwendigen hohen Spannungen und Ströme werden durch zusätzliche Schaltungen erzeugt. Die Ströme selbst werden durch spezielle Schalttransistoren zu den gewünschten Fuses geleitet. Diese Transistoren besitzen eine relativ große Fläche, was sich nachteilig auf die Gesamtfläche auswirkt. Demgegenüber steht der sehr kleine Flächenbedarf der Antifuse selbst. Seite 37
Übersicht der existierenden Antifuse-Technologien Name Hersteller Programmierung Aufbau PLICE Actel 16 V, 3..13 ma, 5 ms 100 M 200 Dielektrium aus Oxygen-Nitrogen- Oxygen (ONO) zwischen einem N+ Diffusionsgebiet und einem N+ Polysilizium Gate ViaLink QuickLogic, (Cypress) 12 V, 15 ma >50M 20..50 Amorphes Silizium zwischen zwei Metallisierungsebenen MicroFuse (Crosspoint Solutions) >100M <100 Amorphes Silizium zwischen einer Metallisierungsebene und Polysilizium MicroVia (Xilinx) > 1 M 50 Amorphes Silizium zwischen zwei Metallisierungsebenen. Seite 38
PLICE-Antifuse Die PLICE-Antifuse (programmable low-impedance circuit element) wurde erstmalig 1988 von Actel in einem FPGA verwendet. Die PLICE-Antifuse war damit die erste Antifuse überhaupt. Die Programmierung der Bausteine erfolgt unter ständiger Kontrolle des Durchlasswiderstandes. Die Dauer der Programmierung wird erhöht, wenn der gewünschte Durchlasswiderstand noch nicht erreicht ist. Die Zahl der Antifuses pro Chip beläuft sich auf 112.000 1.250.000. Die Lebenserwartung eines PLICE-basierten FPGAs beträgt etwa 40 Jahre. Dann beginnen die Dielektrika der Antifuses zusammen zu brechen. <1µm Polysilizium Diffusionsgebiet Dielektrikum Seite 39
ViaLink Antifuse Entwickelt von der Firma QuickLogic. Zwei Titan-Wolfram Metallisierungsebenen sind durch eine Schicht von amorphen Silizium der Dicke 0,1 um getrennt. Bei der Programmierung schmilzt diese Schicht und es entsteht eine leitfähige Verbindung zwischen den beiden Metallisieurngebenen. Durch den relativ großen Abstand der beiden Metallebenen besitzt die ViaLink Antifuse eine geringe Kapazität und ermöglicht damit geringe Schaltkreise. Seite 40
Vergleich der Technologien SRAM Flash-EPROM PLICE ViaLink Konfigurierung flüchtig ja nein nein nein rekonfigurierbar ja ja nein nein im System programmierbar ja bedingt nein nein Zellengröße groß mittel klein sehr klein Schalttransistoren - - groß groß On-Widerstand 0,6 1 k 0,6 1 k 200 20..50 Off-Kapazität 10-20 ff 10-20 ff 5 ff 1 ff zus. Prozessschritte 0 3-5 3 3 Seite 41
Zusammenfassung der Vor- und Nachteile 1. Antifuse Vorteile guter Kopierschutz keine Konfigurationsspeicher erforderlich nach Neustart sofort betriebsbereit unempfindlich gegen radioaktive Strahlung Antifuse ist klein und schnell Nachteile Programmiergerät erforderlich aufwendigere Handhabung der Bausteine spezielle Lagerhaltung notwendig keine Testkonfiguration möglich Entwurfsänderungen nicht so schnell möglich keine Rekonfiguration, kein ISP Bausteine nicht 100 % beim Hersteller testbar Seite 42
2. SRAM Vorteile kein Programmiergerät einfache Handhabung und Lagerhaltung Rekonfiguration, ISP schnelle Entwurfsänderung möglich Nachteile schlechter oder umständlicher Kopierschutz Konfigurationsspeicher erforderlich sorgfältige Planung des Neustarts erforderlich empfindlicher gegen radioaktive Strahlung Seite 43
3. EPROM Vorteile Konfigurationsspeicher nicht flüchtig Rekonfiguration möglich guter Kopierschutz kein Konfigurationsspeicher erforderlich Testkonfiguration möglich Nachteile Programmiergerät erforderlich aufwendigere Handhabung der Bausteine spezielle Lagerhaltung notwendig Rekonfigurierung und ISP nur bedingt möglich Seite 44