Programmierbare Logik

Größe: px
Ab Seite anzeigen:

Download "Programmierbare Logik"

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