Programmierbare Logik
|
|
- Axel Michel
- vor 8 Jahren
- Abrufe
Transkript
1 Programmierbare Logik Ein Überblick über programmierbare logische Bausteine TU Berlin FG emsp 1
2 Einleitung Verschiedene Realisierungsmöglichkeiten von logischen Zusammenhängen 1. Kombination von einfachen Standard-ICs 2. Verwendung von standardisierten Bauteilen 3. Verwendung von anwenderspezifischer Software (Mikroprozessor) 4. Verwendung von anwenderspezifischer Hardware TU Berlin FG emsp 2
3 Übersicht Übersicht anwenderspezifische Hardware ASIC SEMI CUSTOM IC FULL CUSTOM IC GATE ARRAY STANDARD CELL PLD SPLD CPLD FPGA TU Berlin FG emsp 3
4 Einleitung 1. Einleitung 2. Übersicht anwenderspezifischer Hardware 3. Aufbau programmierbarer Bausteine Simple Programmable Logic Devices (SPLD) Complex Programmable Logic Devices (CPLD) Field Programmable Gate Arrays (FPGA) 4. Technologie der Verbindungselemente 5. Schaltungsentwurf und Programmierung TU Berlin FG emsp 4
5 2. Übersicht anwenderspezifischer Hardware TU Berlin FG emsp 5
6 Übersicht Vollständig kundenspezifische ASICs Schaltungsentwurf, Design und Layout geschieht kundenspezifisch + Kompletter Designprozess in einer Hand + Kleine Chipfläche geringe Kosten pro Chip + Volle Kontrolle über jeden Schaltungsteil Hohe Herstellungskosten (Maske) Hohe Entwicklungskosten Nur für sehr große Stückzahlen (> ) TU Berlin FG emsp 6
7 Standardzellen ASICs Übersicht modulares Design mithilfe von Herstellerbibliotheken + Komplexe Schaltungen realisierbar + Standardisierte Entwurfsverfahren + Geringere Entwicklungskosten Hohe Herstellungskosten (Masken) Einschränkungen bei der Schaltungsoptimierung Nur für größere Stückzahlen (> ) TU Berlin FG emsp 7
8 Übersicht Gate Array vorgefertigter Chip mit Logikelementen; nur die oberste Metallisierungsebene (Verbindungskanäle) muss aufgebracht werden + Komplexe Schaltungen realisierbar + Standardisierte Entwurfsverfahren + Geringere Entwicklungskosten + Geringe Herstellungskosten Weitere Einschränkungen bei der Schaltungsoptimierung Höherer Stromverbrauch TU Berlin FG emsp 8
9 Übersicht Programmierbare Bausteine Vorgefertigte Chips; Funktion direkt durch den Anwender programmierbar + Kurze Entwicklungszeiten + Komplexe Schaltungen realisierbar + Zusätzliche Strukturen verfügbar (z.b. RAM, Schnittstellen, ) + Große Typenauswahl Chips nicht immer vollständig ausnutzbar TU Berlin FG emsp 9
10 Übersicht Vergleich verschiedener ASIC-Lösungen Full-Custom Standardbaustein Semi- Custom Programmierbare Logik Entwicklungszeit - Monate Wochen Tage Entwicklungskosten - Teuer Mittel Günstig Fertigungszeit - Wochen Tage Minuten Maskenkosten - Teuer Mittel - Entwurfsänderungen Ressourcenausnutzung - Sehr aufwendig Aufwendig Einfach Sehr gut Sehr gut Mittel Schlecht Stückkosten Günstig Günstig Mittel Teuer TU Berlin FG emsp 10
11 Übersicht Vorteil anwenderprogrammierbarer Bausteine Integrationsgrad steigt ständig (Moore s Law) Spezielle, umfangreiche Funktionen verhindern universellen Einsatz von Standardbausteinen Geringe Stückzahlen (< ) Immer schnellere Markteinführungen Schnelle Entwicklung von Prototypen TU Berlin FG emsp 11
12 Übersicht Vergleich ASIC und Microcontroller Direkte Hardware-Implementierung Gesteigerte Leistungsfähigkeit, parallele Verarbeitung Gesteigerte Flexibilität und Komplexität SoC Beispiel: Parallele Verarbeitung Umsetzung der folgenden Funktionen in Hardware und Software: E = A+B F = C+D Z = E-F TU Berlin FG emsp 12
13 Übersicht E = A+B F = C+D Z = E-F Hardware: Software: A B C D + + E F - Z load A add B store E load C add D store F load E sub F store Z 2 Takte 9 Takte TU Berlin FG emsp 13
14 3.1 Simple Programmable Logic Devices (SPLD) TU Berlin FG emsp 14
15 SPLD Kombinatorischer Logik ist vollständig durch UND/ODER-Verknüpfungen darstellbar 2-stufige Struktur aus UND- und ODER-Gattern Eingänge Konjunktionstherme UND-Array ODER-Array Ausgänge TU Berlin FG emsp 15
16 SPLD Beispiel Bestimmung der konjunktiven Normalform aus der Wahrheitstabelle A B C Y 1 Y Y = ABC + ABC + ABC + 1 Y = AC + BC + 1 ABC ABC Y = BC + 2 A TU Berlin FG emsp 16
17 SPLD Vereinfachte Darstellung von UND/ODER-Gattern mit vielen Eingängen Jedes Kreuz markiert eine entsprechende Verbindung, von dem Signal zum Gatter Quelle: Tietze Schenk TU Berlin FG emsp 17
18 SPLD PLA - Programmable Logic Array UND- und ODER-Matrix frei programmierbar A B C & & & & & & & & 1 Y 1 1 Y 2 TU Berlin FG emsp 18
19 SPLD Beispiel: Y = AC + BC + 1 Y = BC + 2 A ABC A B C & & & & & & & & 1 Y 1 1 Y 2 TU Berlin FG emsp 19
20 SPLD PAL - Programmable AND Logic Nur UND- Matrix frei programmierbar ODER-Matrix besitzt feste Verbindungen A B C & & & & & & & & 1 Y 1 1 Y 2 TU Berlin FG emsp 20
21 SPLD Beispiel: Y = AC + BC + 1 Y = BC + 2 A ABC A B C & & & & & & & & 1 Y 1 1 Y 2 TU Berlin FG emsp 21
22 SPLD PLE - Programmable Logic Element UND-Matrix besitzt feste Verbindungen ODER-Matrix frei programmierbar A B C & & & & & & & & 1 Y 1 1 Y 2 TU Berlin FG emsp 22
23 SPLD Beispiel: Y = AC + BC + 1 Y = BC + 2 A ABC A B C Y 1 Y A B C & & & & & & & & 1 Y 1 1 Y 2 TU Berlin FG emsp 23
24 SPLD Quelle: Tietze Schenk TU Berlin FG emsp 24
25 SPLD Quelle: Tietze Schenk TU Berlin FG emsp 25
26 SPLD Beispiel PAL16R8 Registerausgänge 8+8=16 Eingänge, 8 Ausgänge Programmierbare UND-Matrix 8 Eingänge pro OR-Gatter Quelle: Datenblatt National Semiconductor TU Berlin FG emsp 26
27 CPLD TU Berlin FG emsp 27
28 3.2 Complex Programmable Logic Device (CPLD) TU Berlin FG emsp 28
29 CPLD PAL-ähnliche logische Blöcke werden mit Makrozellen zu LAB (Logic Array Block) vereint Programmierbare zentrale Verbindungsmatrix LAB LAB Macro- zelle Macro- zelle I/O- Block Macrozelle Macrozelle PAL Konfigurierbare Verbindungsmatrix PAL Macrozelle Macrozelle I/O- Block Macrozelle Macrozelle TU Berlin FG emsp 29
30 CPLD Vorteile: Wesentlich größere, komplexere Schaltungen implementierbar Sequentielle Logik möglich Regelmäßig angeordnete Struktur führt zu voraussehbarem Zeitverhalten Nachteile: Ressourcenverschwendung TU Berlin FG emsp 30
31 CPLD Quelle: Datenblatt Altera MAX 7000 Programmable Logic Device Family TU Berlin FG emsp 31
32 CPLD Macrocell Quelle: Datenblatt Altera MAX 7000 Programmable Logic Device Family TU Berlin FG emsp 32
33 3.3 Field Programmable Gate Array (FPGA) TU Berlin FG emsp 33
34 FPGA Field Progammable Gate Array (FPGA) im Feld programmierbares Gate Array Matrixförmige Anordnung von logischen Einheiten, den sogenannten configurable logic blocks (CLBs) CLBs können logische Operationen wie AND, OR, Multiplexer, realisieren Verbindungsleitungen programmierbar TU Berlin FG emsp 34
35 FPGA Anordnung TU Berlin FG emsp 35
36 FPGA Configurable Logic Blocks (CLBs) Input Look-Up-Table (LUT) für den logischen Zusammenhang FlipFlop zur Speicherung Output TU Berlin FG emsp 36
37 FPGA CLB des XC4000 Quelle: Datenblatt Xilinx TU Berlin FG emsp 37
38 Verbindungsmatrizen FPGA XC4000 Quelle: Datenblatt Xilinx Singles verbinden benachbarte Kreuzpunkte (switch matrix) Double-/Quad-/Long-Leitungen verbinden jeden zweiten/vierten/weiter entfernte Kreuzpunkte TU Berlin FG emsp 38
39 FPGA I/O-Block CLB des XC4000 Quelle: Datenblatt Xilinx TU Berlin FG emsp 39
40 FPGA Beispiel Architektur Spartan-3 TU Berlin FG emsp 40
41 FPGA Hauptunterschiede zu CPLD: Anordnung der logischen Einheiten Zeitverhalten Anzahl der Logikelemente Schematischer Aufbau CPLD Schematischer Aufbau FPGA TU Berlin FG emsp 41
42 FPGA Vorteile: Höhere Komplexität, Flexibilität Größere Anzahl an FlipFlops Sehr hohe Anzahl Ein-/Ausgänge Nachteile: Geschwindigkeit vom Design abhängig Meist in SRAM-Technik (flüchtiger Speicher) ausgeführt, dadurch externer Programmspeicher erforderlich TU Berlin FG emsp 42
43 FPGA Übersicht verschiedener FPGA/CPLD-Typen Hersteller/Device Anzahl logic elements Anzahl user-i/o Altera CycloneIII auf 8 Bänken insgesamt 534 Altera StratixIII Auf 24 Bänken insgesamt Altera MAXII (CPLD) (LUTs) Altera MAX7000 (CPLD) (Makrozellen) Xilinx Virtex Xilinx Spartan Xilinx CoolRunner XPLA3 (CPLD) (Makrozellen) Lattice LatticeSC/M Lattice LatticeXP Lattice MachXO (CPLD) (LUTs) TU Berlin FG emsp 43
44 4. Technologie der Verbindungselemente TU Berlin FG emsp 44
45 Verbindungselemente Verbindungselemente Reversibel Konfigurierbar Irreversibel Speicherzelle Antifuse Fusible Link SRAM EPROM PLICE ViaLink TU Berlin FG emsp 45
46 Verbindungen Antifuse Herstellung einer leitenden Verbindung; Programmierspannung durchbrennt die Isolierschicht Viel weniger zu programmierende Knoten als bei der Fused-Link- Technologie (nur ca. 2-4%) Anwendung in FPGAs One Time Programmable (OTP) Plice-Antifuse-Element ViaLink-Antifuse-Element TU Berlin FG emsp 46
47 Verbindungen SRAM (static random access memory): Speicherinhalt steuert Zustand der Verbindung Die Informationen werden in FlipFlops gespeichert Flüchtiger Speicher Sehr schnell, verbraucht aber viel Platz und Strom SRAM Pass Gate SRAM-Speicherzelle TU Berlin FG emsp 47
48 Verbindungen EPROM (erasable programmable read-only memory) MOSFET mit Floating Gate, Programmierung schaltet dauerhaft aus Nicht flüchtiger Speicher UV-Bestrahlung macht Programmierung rückgängig G S D Floating Gate P-Substrat TU Berlin FG emsp 48
49 Verbindungen Offene, unprogrammierte Verbindung: D V DD Getrennte, programmierte Verbindung: D V DD D 1 EEPROM (electrically EPROM) und Flash-Speicher Ähnlich wie EPROM, allerdings elektrisch löschbar TU Berlin FG emsp 49
50 Verbindungen Übersicht S-RAM (E)EPROM Antifuse Reprogrammierbar Ja Ja Nein Flüchtig Ja Nein Nein Bedarf an Chipfläche Hoch Mittel Klein Programmiergeschwindigkeit Schnell Mittel Schnell Typ Dauer Programmier- /Löschvorgang (OT)PROM min / - 0 Max. Anzahl Löschvorgänge Verwendung EPROM ms / 30min 100 Kundenspezifische Produkte EEPROM ms / ms FPGAs Flash µs /100ms pro Sektor Speicherkarten, µc Antifuse µs / - 0 Satteliten, Sicherheit TU Berlin FG emsp 50
51 5. Schaltungsentwurf und Programmierung TU Berlin FG emsp 51
52 Entwurfsmethoden VHDL-Eingabe Texteditor Grafischer Editor VHDL VHDL- Simulation (funktional) Synthese Vorgaben Netzliste Bitsteamgenerierung Pre-Layout- Simulation (funktional oder timing) Herstellerbibliotheken FPGA Place 6 Routing Vorgaben Netzliste mit Timing- Annotation Post-Layout- Simulation (timing) TU Berlin FG emsp 52
53 Entwicklungsmethoden Textuelle Programmierung in einer Hardware- Beschreibungssprache (High Level Design) HDL Modulare grafische Programmierung (MGP) Entwicklungsumgebungen dienen der Umwandlung in Schaltung, dem Testen und Simulieren TU Berlin FG emsp 53
54 VHDL VHDL Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (HDL) Synthetisierbares VHDL: Code kann durch Entwicklungswerkzeuge in eine digitale Schaltung umgesetzt werden Nicht synthetisierbares VHDL: Für Simulationsanweisungen TU Berlin FG emsp 54
55 VHDL entity Spezifiziert die Ein- und Ausgabe-Schnittstelle eines Moduls entity <Entityname> is [generic(<deklaration von Parametern>);] port(<deklaration der Ein- und Ausgänge>); [<Entitydeklarationen>;] end <Entityname>; TU Berlin FG emsp 55
56 VHDL architecture Spezifiziert das funktionale Verhalten eines Moduls Jeder entity muss (mindestens) eine architecture zugeodnet werden Nebenläufige Abarbeitung der Anweisungen architecture <Architecturename> of <Entityname> is [<Achitecturedeklarationen>;] begin {<VHDL-Anweisungen>}; end < Architecturename >; TU Berlin FG emsp 56
57 VHDL Beispiel Und-Gatter entity ANDGATE is port( IN1: in bit; IN2: OUTPUT: end ANDGATE ; in bit; out bit); IN1 IN2 & OUTPUT architecture BEHAVIOUR of ANDGATE is begin OUTPUT <= IN1 and IN2; end BEHAVIOUR; TU Berlin FG emsp 57
58 VHDL process Sequentielle Abarbeitung innerhalb eines Prozesses Änderungen von Signalen in der Empfindlichkeitsliste starten den Prozess Mehrere Prozesse arbeiten parallel zueinander [<Prozessname>:] process [(<Empfindlichkeitsliste>)] [<Deklarationsteil>] begin {<sequentielle Anwendungen>} end process [<Prozessname>:]; TU Berlin FG emsp 58
59 VHDL Beispiel D-FlipFlop D 1D OUTPUT entity D_FLIPFLOP is CLK C1 port( CLK: in bit; D: in bit; OUTPUT: out bit); end D_FLIPFLOP ; architecture BEHAVIOUR of D_FLIPFLOP is begin FF: process (CLK) --Steigende Taktflanke if CLK'event and CLK = '1' then OUTPUT <= D; end if; end process FF; end BEHAVIOUR; TU Berlin FG emsp 59
60 VHDL signal Beschreiben physikalische Leitungen bzw. Busse --Declaration interner Signale signal <Signalname>{,<Signalname>}: <Datentyp> [Wertebereich] [:=Wert]; --Zuweisung <Signalname> <= <Wert> <Signalname>; TU Berlin FG emsp 60
61 VHDL variable Zwischenspeichern in Prozessen oder Unterprogrammen variable <Variablenname> [:=Wert]; --Zuweisung <Variablenname> := <Wert>; constante Konstanter Wert, zu Beginn initialisiert constant <Konstantenname> :=Wert; TU Berlin FG emsp 61
62 Signaldatentypen bit VHDL std_logic/std_ulogic boolean integer real time... TU Berlin FG emsp 62
63 oder als Vektoren VHDL std_logic_vector(0 to 8) bit_vector(8 downto 0)... TU Berlin FG emsp 63
64 VHDL Configuration Bekanntmachen von Komponenten in der architecture component <Entityname> [generic(<deklaration von Parametern>);] port(<deklaration der Ein- und Ausgänge>); end component; Einbindung einer Komponente in das System <Marke> : <Entityname> [generic map(<parameterzuordnung>);] port map(<schnittstellenzuordnung>); TU Berlin FG emsp 64
65 Beispiel Volladdierer VHDL library ieee; use ieee.std_logic_1164.all; entity HALB_ADD is port( A,B: in std_logic; S,C: out std_logic); end HALB_ADD; A B C S TU Berlin FG emsp 65
66 Beispiel Volladdierer VHDL architecture BEHAVIOUR of HALB_ADD is begin process(a,b) variable TEMP_IN, TEMP_OUT: std_logic_vector(1 downto 0); begin TEMP_IN := A & B; case TEMP_IN is when "00" => TEMP_OUT := "00"; when "11" => TEMP_OUT := "10"; when others => TEMP_OUT := "01"; end case; S <= TEMP_OUT(0); C <= TEMP_OUT(1); end process; end BEHAVIOUR; TU Berlin FG emsp 66
67 Beispiel Volladdierer VHDL library ieee; use ieee.std_logic_1164.all; entity VOLL_ADD is port( INPUT: in std_logic_vector(1 downto 0); CIN: in std_logic; SOUT,COUT: out std_logic); end VOLL_ADD; TU Berlin FG emsp 67
68 Beispiel Volladdierer VHDL architecture BEHAVIOUR of VOLL_ADD is signal INT_A, INT_B, INT_C: std_logic; component HALB_ADD port( A,B: in std_logic S,C: out std_logic); end component ; begin H_ADD_A: HALB_ADD port map( A => INPUT(1), B => INPUT(0), S => INT_B, C => INT_A); H_ADD_B: HALB_ADD port map( A => INT_B, B => CIN, S => SOUT, C => INT_C); COUT <= INT_A or INT_C; end BEHAVIOUR; TU Berlin FG emsp 68
69 VHDL Testbench Zur Simulation der Funktionen Generiert alle Eingangssignale (Testvektoren) für das zu testende Modul Verwendung von nicht synthetisierbarem VHDL TU Berlin FG emsp 69
70 Beispiel Volladdierer VHDL library ieee; use ieee.std_logic_1164.all; entity TEST_ADD is end TEST_ADD; architecture BEHAVIOUR of TEST_ADD is signal INPUT: std_logic_vector(1 downto 0) := "00"; signal IN_C: std_logic := '0'; signal OUTPUT: std_logic; signal OUT_C: std_logic; TU Berlin FG emsp 70
71 Beispiel Volladdierer VHDL component VOLL_ADD port( INPUT: in std_logic_vector(1 downto 0); CIN: in std_logic; SOUT,COUT: out std_logic); end component; begin ADD: VOLL_ADD port map( INPUT => INPUT, CIN => IN_C, SOUT => OUTPUT, COUT => OUT_C); TU Berlin FG emsp 71
72 Beispiel Volladdierer VHDL STIMULUS : process begin wait for 50 ns; INPUT <= "01"; wait for 50 ns; INPUT <= "10"; wait for 50 ns; INPUT <= "11"; wait for 50 ns; INPUT <= "00"; IN_C <= '1'; wait for 50 ns; INPUT <= "01"; wait for 50 ns; INPUT <= "10"; wait for 50 ns; INPUT <= "11"; end process STIMULUS; end BEHAVIOUR; TU Berlin FG emsp 72
73 VHDL Simulation TU Berlin FG emsp 73
74 VHDL-Übung Entwurf eines nicht-rekursiven FIR-Filters Paralleler Dateneingang x[n] und -ausgang y[n] y[ n] = N k = 0 a k x[ n k] Beschränkung: Gleitender Mittelwert Filter 3. Ordnung Koeffizienten gegeben mit a 0 = a 1 = a 2 = a 3 = 0,25 [ x[ n] + x[ n 1] + x[ n 2] + x[ 3] ] y[ n] = 0,25 n TU Berlin FG emsp 74
75 VHDL-Übung clk x[n] x[n-1] x[n-2] x[n-3] Register Register Register a 0 a 1 a 2 a 3 y[n] TU Berlin FG emsp 75
76 VHDL-Übung Verwendung von Dezimalzahlen für die Koeffizienten Koeffizienten a ersetzen durch a x = 1/2 Ax Division durch 2 x entspricht dem Schieben um x Bit nach rechts a x = ¼ A x = 2 TU Berlin FG emsp 76
77 VHDL-Übung library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity FIR_FILTER is generic(width: positive := 8); port( CLK: in bit; X: in std_logic_vector(width-1 downto 0); Y: out std_logic_vector(width-1 downto 0)); end FIR_FILTER; TU Berlin FG emsp 77
78 VHDL-Übung architecture BEHAVE of FIR_FILTER is begin REG: process(clk) variable X3, X2, X1 : std_logic_vector(width-1 downto 0); variable TEMP_Y : std_logic_vector(width-1+2 downto 0); begin if CLK='1' and CLK'event then TEMP_Y := ("00"&X)+("00"&X1)+("00"&X2)+("00"&X3); Y <= TEMP_Y(WIDTH-1+2 downto 2); X3 := X2; X2 := X1; X1 := X; end if; end process REG; end; TU Berlin FG emsp 78
79 library ieee; use ieee.std_logic_1164.all; VHDL-Übung entity FIR_TEST is end FIR_TEST; architecture BEHAVE of FIR_TEST is component FIR_FILTER port( CLK: in bit; X: in std_logic_vector(7 downto 0); Y: out std_logic_vector(7 downto 0)); end component; constant PERIOD: time := 10 ns; TU Berlin FG emsp 79
80 signal CLOCK: bit := '0'; VHDL-Übung signal SPRUNG, OUTPUT : std_logic_vector(7 downto 0); begin CLK_SIM: process begin wait for (PERIOD/2); CLOCK <= not CLOCK; end process CLK_SIM; SPRUNG_SIM: process begin SPRUNG <= " "; wait for (16*PERIOD); SPRUNG <= " "; wait for (16*PERIOD); end process SPRUNG_SIM; TU Berlin FG emsp 80
81 VHDL Übung FILTER: FIR_FILTER port map(clk => CLOCK, X => SPRUNG, Y => OUTPUT); end; TU Berlin FG emsp 81
82 Hersteller Wichtigsten Hersteller von CPLD und FPGA: Xilinx: CoolRunner (low-power CPLD), XC9500 (CPLD), Spartan (FPGA), Virtex (FPGA) Altera: MAX (CPLD), Cyclone (low-cost FPGA), Stratix (FPGA), ArriaGX (FPGA) Lattice: ispxpga (FPGA), ispxpld (CPLD), ispmach (low-power CPLD), ispgal (CPLD), LatticeSC/XP (FPGA) Actel: Igloo (low-power FPGA), ProASIC3 (low-power FPGA), RTAX (space-systems FPGA), Fusion (mixed-signal PSC) Cypress: PSoC (µc + analoge und digitale Komponenten), Delta39K (CPLD), Ultra (CPLD) Quicklogic: Eclipse (FPGA), PolarPro (low-power FPGA), ArcticLink Atmel: AT40 (FPGA), AT6000 (FPGA), FPSLIC (FPGA + µc + SRAM) Anadigm: AN120E04 (FPAA ) TU Berlin FG emsp 82