====== Hardware ====== ===== Speichertechnologien ===== * Fuse * Antifuse * EPROM * Floating gate * Programmieren: hot-electron-injection * Löschen: UV-Licht (ionisierung des dielektrikums) * EEPROM * Floating gate * Programmieren: Fowler-Nordheim tunneling * Löschen: Fowler-Nordheim tunneling (Wortweise) * Flash * Floating gate * Programmieren: Unterschiedliche tunneleffekte * Löschen: Unterschiedliche tunneleffekte (Block-/Chipweise => Schnell => "Flash") * SRAM * "static" = Keine periodische Auffrischung * Flip Flop (2xPNP und 2x NPN Transistor) * Leitungen * ''WL'' = word line = Zelle zum schreiben auswählen * ''PRE'' = precharge = Schreibt treiber dazuschalten (sonst lesen) * ''BL'' = Ausgang * Arten * **6-Zell SRAM**: Invertierten und nicht invertierten FF Anschluss nutzen * **5-Zell SRAM**: Nur einen FF anschluss nutzen * **4-Zell SRAM**: Anderer FF mit 2 Wiederständen und 2 Transistoren + beide Seiten nutzen ===== Geschichte der Logik Bausteine ===== * **ASIC** \\ (Application Specific Integrated Circuit) * **PLD** \\ (Programmable Logic Device) * **PROM** \\ (Programmable Read Only Memory) * **SPLD** \\ (Simple Programmable Logic Dvice) * **PLA** \\ (Programmable Logic Device) - Inputs => Input + invertierter Input - Programmierbares AND-Array - Programmierbares OR-Array * **PAL** \\ (Programmable Array Logic) - Inputs => Input + invertierter Input - Programmierbares AND-Array - Fixes OR-Array => Schneller/Billiger * **CPLD** \\ (Complex Programmable Logic Device) * Komplexere Funktionen => Größere SPLDs => splitten * Geringerer Strom verbrauch * Kleinere Arrays => Schneller * Günstiger * SPLDs, Flip Flops und I/O über zentrale switching matrix verschaltbar => geeignet für controll flow * Konfigurationsspeicher: Flash * **FPGA** \\ (Field Programmable Gate Array) * switching matrix gesplittet (Vertikal/Horizontal Channels, wiederum gesplittet) * Vorgefertigte Komponeten (Multiplyer, ...) * //Flexibler// * Teurer * Mehr Strom verbrauch * Konfigurationsspeicher: SRAM ===== FPGA ===== ==== Komponenten ==== * interconnect tile * switch matrix (können auch mehrer sein, z.B. bei BRAM) * S-Boxes \\ (switch box) \\ an kreuzung der H- und V-Stränge (6 PIPs) * C-Boxes \\ (connection box) \\ Schalten CLB auf H- und V-Stränge (1 PIP) * **CLB** = Basic logic cell \\ (Configurable Logic Block) * 2 x SLICEM und 2 x SLICEM * G-LUT (Look up Table) / FFY (FlipFlop Y) * F-LUT (Look up Table) / FFX (FlipFlop X) * **IOB** \\ (I/O Block) * **BRAM** \\ (Block RAM) * **DCM** \\ Digital Clock Manager * Multiplier * Slices werden von links untern nach rechts oben, beginnend bei 0, durchnummeriert. * **SLICEL** (Linke Seite von CLB) \\ (Slice Memory) * Logic * Distributed RAM * Shift Register * **SLICEL** (Rechte Seite von CLB) \\ (Slice Logic) * Logic Optimale Werte (Xilinx's choose) * LUT Inputs 4-6 (4) => $n^2$ Inputkombinationen * LUT/FFs pro CLB 3-10 (8 = 4 Slices * 2 LUT/FFs) * LUT mit n inputs, kann $n^{2^2} = n^{2*2} = n^4$ Funktionen * LUTs kombinierbare und teilbar * **PIP** \\ (Programmable Interconnect Point) * Transistor * Konfigurationsspeicher * SRAM * Flash * Fuse/Antifuse ==== Leitungen ==== ^ ^ Direction ^ Paralel ^ Länge ^ Alle ^ ^ Long Line | Bidirectional | 24 | voll | 6 | ^ Hex Line | Unidirectional | 8 | 6 | 3 | ^ Double Line | Unidirectional | 8 | 2 | 1 | ^ Direct Connections | Unidirectional | Zu den Nachbarn ||| Kompromiss aus * Kurzem delay * Hoher flexibilität ==== Konfiguration ==== * SRAM * Verteilt zwischen den CLB * Flüchtig * bitstream von * extern * intern * flash * fuse/antifuse ==== BRAM ==== * In Spalten * => Variable data width * => Variable data depths 2 Spalten à 10 BRAMs Verwendung * RAM * ROM * Shift Register * FIFO Features * 18Kbit * 16Kbit Daten * 2Kbit Parität * 2 unabhängige r/w Ports * dual- single-port betrieb möglich * Keine combinatorial pathes * 100e GB/s * Kann mit 0 inizialisiert werden ==== Multiplyer ==== * 18-Bit x 18-Bit = 36-Bit * 2er Kompliment * //Kann// FFs an den ein und Ausgängen haben * 2 Spalten à 10 Multiplyer * In Spalten mit //BRAMs//, da meistens //effizienter//. * Kann //barrel shifters// realisieren (shift register der in einem schritt weiter rotieren kann) * Längerer Addierer: * Kette über //BCIN// und //BCOUT// * Erster: //A// & //B// als Eingang * Weitere: //A// als Eingang * Alle: //P// als Ausgang ==== Digital Clock Manager (DCM) ==== 4 DCMs Funktionen * **DLL** \\ Delay-Locked Loop * Digitales Pendant zu Phase-Locked Loop * Synchronisation auf eine //Global Clock Input (GCLK)// * Feedback um clock skews (Verzug über das die) zu verhindern * Eine "Probe Leitung" führt clock von wichtiger Komponente zum Messen * **DFS** \\ Digital Frequency Synthesizer - Multipliziert clock - Dividiert clock * //CLKFX// und //CLKFX180// output * **PS** \\ Phase Shift * Anwendung: //Double Data Rate (DDR)// * **Status logic** * Is Locked? * Reset