DE10347975B4 - Einrichtung der programmierbaren Logik - Google Patents

Einrichtung der programmierbaren Logik Download PDF

Info

Publication number
DE10347975B4
DE10347975B4 DE10347975A DE10347975A DE10347975B4 DE 10347975 B4 DE10347975 B4 DE 10347975B4 DE 10347975 A DE10347975 A DE 10347975A DE 10347975 A DE10347975 A DE 10347975A DE 10347975 B4 DE10347975 B4 DE 10347975B4
Authority
DE
Germany
Prior art keywords
logic
logic blocks
blocks
reconfigurable
switching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10347975A
Other languages
English (en)
Other versions
DE10347975A1 (de
Inventor
Christian Prof. Dr. Siemers
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Priority to DE10347975A priority Critical patent/DE10347975B4/de
Publication of DE10347975A1 publication Critical patent/DE10347975A1/de
Application granted granted Critical
Publication of DE10347975B4 publication Critical patent/DE10347975B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17752Structural details of configuration resources for hot reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17756Structural details of configuration resources for partial configuration or partial reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/1778Structural details for adapting physical parameters
    • H03K19/17796Structural details for adapting physical parameters for physical disposition of blocks

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Logic Circuits (AREA)

Abstract

Einrichtung der programmierbaren Logik
– mit mehreren Logikblöcken mit konfigurierbaren Eigenschaften, die jeweils mindestens eine Verarbeitungseinheit mit Funktionsprogrammen und Schnittstellen zu den jeweils anderen Logikblöcken umfassen,
– mit mindestens einer den Logikblöcken zugeordneten Ein-/Ausgabeeinheit,
und
– mit Mitteln zum Verknüpfen der Logikblöcke
a) untereinander,
b) mit mindestens einer der Verarbeitungseinheiten eines anderen Logikblocks
und
c) mit der mindestens einen Ein-/Ausgabeeinheit,
gekennzeichnet durch eine Rekonfigurierbarkeit der Logikblöcke (3A bis 3D) während des gesamten Betriebs der Logikeinrichtung (7) dadurch, dass die Verknüpfungsmittel zusätzlich wenigstens einen konfigurierbaren Umschalt-Logikblock (8) aufweisen, mit dem eine Konfiguration wenigstens einiger der rekonfigurierbaren Logikblöcke (3A bis 3D) selbst und/oder ihrer Verbindungen untereinander und/oder ihrer Verbindungen mit der mindestens einen Verarbeitungseinheit (4) und/oder ihrer Verbindungen der mindestens einen Ein-/Ausgabeeinheit (5) erfolgt, wobei der Umschalt-Logikblock (8) in einer Ebene (E2) ausgebildet ist, die von einer Ebene (E1) mit den rekonfigurierbaren...

Description

  • Die Erfindung bezieht sich auf eine Einrichtung der programmierbaren Logik mit mehreren Logikblöcken mit konfigurierbaren Eigenschaften, die jeweils mindestens eine logische Verarbeitungseinheit mit Funktionsprogrammen und Schnittstellen zu den jeweils anderen Logikblöcken umfassen, mit mindestens einer den Logikblöcken zugeordneten Eingabe- und Ausgabeeinheit sowie mit Mitteln zum Verknüpfen der Logikblöcke untereinander, mit der mindestens einen Verarbeitungseinheit eines anderen Logikblocks und mit der mindestens einen Ein-/Ausgabeeinheit. Eine derartige Logikeinrichtung ist der US 4,870,302 A zu entnehmen.
  • Programmierbare logische Bausteine von herkömmlichen Logikeinrichtungen wie insbesondere Prozessoren führen Programme aus, die aus einem Speicher geladen werden. Die auszuführende Software in Form von Befehlswörtern ist dort als Maschinenbefehl abgelegt. Diese Befehlswörter werden geladen, analysiert, interpretiert und in einer Verarbeitungseinheit ausgeführt. Dabei löst die Verarbeitung eines einzigen Befehlswortes eine Vielzahl von Einzelaktionen in der Logikeinrichtung aus.
  • Die Basisstruktur und -organisation bekannter digitaler Logikeinrichtungen, insbesondere von Computern mit Mikroprozessoren, beruht auf der Konzeption des sogenannten „Von-Neumann-Rechners". Dessen Zentraleinheit CPU („Central Processing Unit"), d. h. dessen Computerkern, umfasst in ihrer Minimalkonfiguration als Hauptbestandteile einen Hauptspeicher, eine Steuereinheit und eine Verarbeitungseinheit (bzw. Rechenwerk):
    • – Der Hauptspeicher speichert Befehlswörter (Programmdaten) und Verarbeitungsdaten (Operantenwörter) und stellt diese auf Aufforderung zur Verfügung. Ferner nimmt der Haupt speicher Zwischen- und Endresultate der Verarbeitung auf. Hauptspeicher können durch flüchtige oder nicht-flüchtige Speicher realisiert werden.
    • – Die Steuereinheit organisiert die Reihenfolge, in der Befehlswörter abgearbeitet werden. Sie fordert Befehlswörter aus dem Hauptspeicher an und veranlasst deren Ausführung in der Verarbeitungseinheit. Außerdem analysiert sie die Befehlswörter und veranlasst die Lieferung von Verarbeitungsdaten an die Verarbeitungseinheit.
    • – Die Verarbeitungseinheit führt die Operation an den Verarbeitungsdaten aus und liefert entsprechende Resultatwörter an den Hauptspeicher. Für jede Operation enthält die Verarbeitungseinheit ein Mikroprogramm, das die benötigten Übertragungswege freischaltet. Die Verarbeitungseinheit wird durch die Steuereinheit auf die jeweilige Operationsart, d. h. auf den abzuarbeitenden Befehl, eingestellt. Der Zentraleinheit sind Peripheriegeräte zugeordnet, bei denen es sich um externe Speicher sowie um Ein- und Ausgabegeräte handeln kann. Die angegebenen Hauptkomponenten der Zentraleinheit können physikalisch getrennt sein; zumeist sind sie jedoch auf einem gemeinsamen Prozessorchip mit einem Cache oder beispielsweise einem embedded ROM realisiert.
  • Eine genauere Betrachtung der Programmierung einer solchen programmierbaren Logikeinrichtung PLD („Programmable Logic Device") mit den erwähnten Grundkomponenten des Von-Neumann Rechners zeigt, dass das Programm sowie die Initialisierungsdaten im preiswerten Speicher (mit minimal 1 Transistor pro Speicherzelle) untergebracht sind und erst dann in die CPU zur Ausführung gelangen, wenn sie an der Reihe sind. Die preiswerte Speicherung einerseits und die „Wiederverwendung" der aufwendigeren CPU-Schaltkreise wie ALU („Arithmetic Logic Unit") für alle möglichen Instruktionen andererseits sind die positiven Beiträge zu einer sogenannten „funktionalen Dichte" der Prozessor-basierten Rechner. Hierbei ergibt die zeitliche Sequenz der Bearbeitung natürlich einen negativen Beitrag.
  • Die funktionale Dichte kann dabei als mittlere Anzahl von aktiven Gatteräquivalenten pro Siliziumfläche und Zeit definiert werden.
  • Bei bekannten programmierbaren Logikeinrichtungen (PLDs) mit Rechenkapazität, Speicher und Ein- und Ausgabeeinheit I/O („Input/Output"), wie sie z. B. aus der eingangs genannten US-A-Schrift zu entnehmen ist, wird deren Struktur einmal programmiert, und der Programm-(wie Daten-)Inhalt wird an der Struktur selbst gespeichert. Diese Form der Speicherung ist aufwendig, denn um den Speicher selbst müssen zwecks schneller Umsetzung in geschaltete Datenpfade eine Menge von zusätzlichen Transistoren hinzukommen. Es existieren zwar nur wenige Angaben über die Ausnutzung des Siliziums; man sollte von Faktoren 20 bis 40 im Verhältnis Gesamtzahl/sichtbarer Transistorkapazität (im Sinne der Schaltfunktion) ausgehen. Bei der bekannten Ausführungsform einer Logikeinrichtung bezieht sich die Verknüpfung ihrer Logikblöcke erstens auf die Kopplung von Datenausgängen auf Dateneingänge (Routing-Verknüpfung) und zweitens auf die Verarbeitung der Eingangsdaten zu den Ausgangsdaten in den einzelnen Logikblöcken (Logik-Verknüpfung). Die Routing-Verknüpfung gilt sowohl für Daten, die aus Logikblöcken (Logic Elements) stammen bzw. in diese geführt werden, als auch für solche, die aus I/O-Pads stammen bzw. in diese geleitet werden. Es ist ausschließlich an eine Datenkopplung in diesem System gedacht.
  • Aus der US 6,333,641 B1 geht eine programmierbare Logikeinrichtung mit einem Array von Logikmodulen oder -blöcken hervor. Eine Verbindungseinheit mit vertikalen Routing(Leitweg-)Bahnen, horizontalen Routing-Bahnen und lokalen Routing-Bahnen verknüpft die Logikblöcke. Ein Omni-(universeller)Bus (Datenaustauschsammelschiene) ist über das Array gelegt, der mit dem Array derart verknüpft ist, dass dieser dynamisch selbständige Sub-Arrays der Logikblöcke mit variabler Größe bildet, die ihrerseits mit dem Omni-Bus verbunden sind. Die Verknüpfung ist dabei von vornherein festgelegt. Auch hier handelt es sich wie im Fall der US 4,870,302 A um Datenverbindungen, d. h. um einen Austausch von Daten.
  • Da die Programmierbarkeit in Form eines Speichers mit Umsetzung in geschaltete Datenpfade recht teuer ist, wie im Fall des Rechners aber bislang das komplette Programm im Baustein lagert, erreichen die PLDs trotz Potenzials für hohe funktionale Dichte „nur" den Faktor 10 mehr als Prozessoren. Das bedeutet, dass der Geschwindigkeitsgewinn in PLDs gegenüber Prozessorlösungen teuer erkauft ist.
  • Aufgabe der vorliegenden Erfindung ist es deshalb, die programmierbare Logikeinrichtung mit den eingangs genannten Merkmalen dahingehend auszugestalten, dass bei hoher funktioneller Dichte eine hohe Geschwindigkeit des PLDs mit einfachen Mitteln zu erreichen ist.
  • Diese Aufgabe wird erfindungsgemäß mit den in Anspruch 1 angegebenen Maßnahmen gelöst. Diese Maßnahmen umfassen eine Rekonfigurierbarkeit der Logikblöcke während des gesamten Betriebs der Logikeinrichtung dadurch, dass die Verknüpfungsmittel zusätzlich wenigstens einen konfigurierbaren Umschalt-Logikblock aufweisen, mit dem eine Konfiguration wenigstens einiger der rekonfigurierbaren Logikblöcke selbst und/oder ihrer Verbindungen untereinander und/oder ihrer Verbindungen mit der Verarbeitungseinheit und/oder ihrer Verbindungen mit der Ein-/Ausgabeeinheit erfolgt, wobei der Umschalt-Logikblock in einer Ebene ausgebildet ist, die von einer Ebene mit den rekonfigurierbaren Logikblöcken verschieden ist. Unter einer verschiedenen Ebene des Umschalt-Logikblocks wird dabei jede Ebene verstanden, die nicht gleichzeitig die Ebene der rekonfigurierbaren Logikblöcke ist. D. h., die Ebene des Umschalt-Logikblocks kann über, neben oder unter der Ebene der rekonfigurierbaren Logikblöcke liegen.
  • Die mit einer solchen Architektur verbundenen Vorteile sind insbesondere darin zu sehen, dass bei begrenzter Anzahl von nunmehr rekonfigurierbaren Logikblöcken neben einer Konfiguration der Blöcke selbst auch die Verbindungen zwischen diesen Blöcken und/oder zu externen Bausteinen wie Speichereinheiten oder Mikroprozessoren wie z. B. zu der Verarbeitungseinheit und/oder zu der Ein-/Ausgabeeinheit nicht ein für alle Male fest vorgegeben sind, sondern dass diese Verbindungen mit Hilfe des zusätzlich vorgesehenen Umschalt-Logikblocks während des gesamten Betriebs bedarfsmäßig erstellt, d. h. konfiguriert werden können. Eine derartige Konfiguration mittels des Umschalt-Logikblocks kann als eine Verknüpfungsoperation der erfindungsgemäß ausgestalteten Verknüpfungsmittel angesehen werden.
  • Die Konfiguration kann dabei jederzeit, d. h. während der gesamten, ununterbrochenen Betriebsdauer – also nicht nur während einer Start- oder Boot-Phase – vorgenommen werden. Die erfindungsgemäßen Maßnahmen bedeuten also eine Verbindung von dem Umschalt-Logikblock zu Verknüpfungsbereichen und damit zu einer entsprechenden Konfiguration derselben. Damit wird es ermöglicht, dass von einzelnen Blöcken unterschiedliche Funktionen zu unterschiedlichen Zeitpunkten auszuführen sind; d. h., deren Ausnutzung wird entsprechend erhöht. Damit verbunden ist eine entsprechende Performance-Verbesserung der gesamten Logikeinrichtung, verglichen mit einem Mikroprozessor, bzw. kein Performance-Verlust im Vergleich zu herkömmlichen PLDs.
  • PLDs erhalten – wie von-Neumann-Prozessoren – zwei Arten von Informationen, Code und Daten. Der Code, der grundsätzlich die Aktionsweise bestimmt und bei PLDs Konfiguration bzw. Konfigurationscode genannt wird, wird üblicherweise vor dem eigentlichen Betrieb geladen und ist dann während des Betriebs unveränderlich. Die Konfiguration bestimmt u. a. die im Baustein aktiven Verbindungen.
  • Die Daten können sich während des Betriebs verändern und da- durch auch den aktuellen Verlauf der Operationen beeinflus sen. Während also der Code alle möglichen Wege beinhaltet, wird die tatsächliche Nutzung – dies entspricht dem aktuell durchlaufenden Pfad – (auch) von den Daten bestimmt.
  • Der Umschalt-Logikblock nach der Erfindung erhält ebenfalls Code und Daten. Das Wesentliche der Erfindung besteht nun darin, die übrigen, Nicht-Umschalt-PLDs, zu steuern, und zwar durch Wechseln bzw. Modifizieren des Codes.
  • Bei dem genannten Stand der Technik sowie bei den in der Praxis üblichen PLDs werden konfigurierbare Blöcke dadurch miteinander verbunden, dass die (Laufzeit-variablen) Daten austauschbar sind, also etwa in der Form, dass Datenausgänge des einen Blocks mit Dateneingängen des anderen verbunden sind. Bei dem erfindungsgemäßen Umschalt-Logikblock ist es jedoch so, dass die Ausgänge dieses Logikblocks zumindest partiell an den in anderen Ausführungsformen im Betrieb unzugänglichen Codebereich der konfigurierbaren Logikblöcke angeschlossen sind. Demgegenüber bezieht sich der Stand der Technik auf Ausführungsformen, bei denen die konfigurierbaren Logikblöcke im Datenpfad koppeln, nicht jedoch auf den Code Einfluss haben.
  • Vorteilhafte Ausgestaltungen der erfindungsgemäßen Logikeinrichtung gehen aus den abhängigen Ansprüchen hervor.
  • So kann insbesondere die Konfiguration wenigstens einiger der rekonfigurierbaren Logikblöcke einem vorgegebenen Kontext entsprechend erfolgen.
  • Ferner kann vorteilhaft der Umschalt-Logikblock wenigstens einen Zustandsspeicher aufweisen, der Informationen bezüglich der Funktionen der einzelnen rekonfigurierbaren Logikblöcke enthält, so dass die Konfiguration der ausgewählten rekonfigurierbaren Logikblöcke gemäß den Funktionsinformationen des aktuellen Zustands erfolgt.
  • Die den erfindungsgemäßen Maßnahmen zu Grunde liegenden Überlegungen werden nachfolgend unter Bezugnahme auf die Zeichnung noch weiter erläutert. Dabei zeigen
  • deren 1 die Grundstrukturen von vier einfachen, bekannten Automatentypen,
  • deren 2 die Grundstruktur einer sogenannten „Sequential Finite State Machine",
  • deren 3 den schematischen Aufbau einer partiell rekonfigurierbaren PLD und
  • deren 4 den schematischen Aufbau einer erfindungsgemäßen Logikeinrichtung.
  • Im Folgenden werden aus den Maschinen vom sogenannten „Finite State"-Typ die sogenannten „Sequential Finite State Machines" (SFSM) abgeleitet. Das hierfür aufgezeigte Modell ist dazu geeignet, eine Sequenz von Konfigurationen im PLD zu definieren, und genau diese Sequenz kann ohne Performance-Verlust eine wesentlich höhere funktionale Dichte (gleichbedeutend mit drastisch gesenkten Kosten für Herstellung und Betrieb) eines PLDs erzeugen.
  • Abschnitt I („Sequential Finite State Machines")
  • Eines der „klassischen" Denkmodelle für eine Hardwareentwicklung besteht in den einfachen endlichen Automaten, im Folgenden „Finite State Machines” (FSM) genannt.
  • Dieses eng mit theoretischen Konzepten (insbesondere des sogenannten „Deterministischen endlichen Automaten") verwandte Modell ist exakt wie folgt definiert:
  • Definition 1:
    • Eine FSM besteht aus einem 6-Tupel {A, X, Y, f, g, a0}. A = {a0, a1, ... aM} ist hierbei die endliche Menge der Zustände, wobei a0 den Startzustand bedeutet.
    • X = {X1, .. XK} ist die endliche Menge der Eingangsvektoren mit XI = (x1, .. xL)i, wobei x1 ϵ {0, 1, –}.
    • Y = {Y1, .. YN} ist die endliche Menge der Ausgangsvektoren mit YJ = (y1 .. yH)j, wobei yh ϵ {0, 1, –}.
    • f: A × X → A heißt Transitionsfunktion (Next State Decoder),
    • g: A × X → Y heißt Ausgangsfunktion (Output Decoder),
    • t = Zeiteinheit.
  • Die in dieser Definition genannten Funktionen werden durch Schaltnetze realisiert, die den algorithmischen Zusammenhang zwischen den (im Wesentlichen binären) Eingangs- und Zustandsvektoren darstellen. Hierzu ist allerdings notwendig, dass auch die Zustände binär codiert werden, was in Definition 1 noch nicht der Fall war.
  • Für die Zustandsautomaten werden weiterhin drei wesentliche Untertypen (siehe 1) unterschieden, deren Einfluss auf die Komplexität der Funktionen in der Praxis gegeben ist. Ein Entwickler wird folgende Schritte durchführen:
    • 1. Festlegen der Signale: Das Schaltwerk wird als „Black Box" mit den erforderlichen Eingangs- und Ausgangssignalen skizziert.
    • 2. Entwerfen des Zustandsdiagramms: Dieser Schritt ist der eigentliche Kern der Synthese, da hier das zu lösende Problem formal beschrieben wird. Als Zustandsdiagramm sind Zustandsgraphen, Programmablaufpläne oder auch Schaltwerktabellen möglich.
    • 3. Aufstellen der Schaltwerktabelle als formaler Ausgangspunkt für alle weiteren Operationen.
    • 4. Zustandsminimierung: Die Minimierung der Anzahl der Zustände soll eine Vereinfachung des Designs erreichen.
    • 5. Zustandscodierung: Bei synchronen Schaltwerken mit synchronisierten Eingängen (nicht für Mealy-Automat gemäß 1d) lassen sich beliebige Codierungen für die Zustände aus Z angeben. Beim Medwedjew-Automat gemäß 1b müssen die Codierungen allerdings mit den gewünschten Ausgangssignalen übereinstimmen; beim Moore-Automat gemäß 1c hingegen können die Codierungen so gewählt werden, dass sich vereinfachte Schaltnetze für Next State Decoder (f) und Output Decoder (g) ergeben.
    • 6. Berechnung von Folgezustands- und Ausgangsschaltnetzen: Zur konkreten Berechnung des Folgezustandsschaltnetzes muss ein Register- bzw. Flipfloptyp gewählt werden, da deren Eingänge (T, D, RS oder JK) durch dieses Schaltnetz belegt werden, aber unterschiedliche Funktionalitäten zeigen.
    • 7. Realisierung des Schaltwerks und Test
  • Aus der Praxis weiß man nun, dass die Implementierung als einfache Maschine – man könnte sie auch als „flache Maschine" bezeichnen – nicht unbedingt die beste ist. Ein kooperierender Automat, bestehend aus mehreren einfachen Automaten, die miteinander gekoppelt sind, kann dies häufig wesentlich besser im Sinne von flächeneffizienter. Zudem sollte bedacht werden, dass der vorstehend skizzierte Designfluss nicht unbedingt in der angegebenen Weise durchgeführt werden muss. Gerade mit zunehmender Beschreibung in Hochsprachen wie VHDL ist eine Hinwendung zu mehr algorithmischem Stil zu erkennen.
  • Unabhängig davon soll jedoch die FSM als das grundlegende Modell angenommen werden. Man kann sich nun vorstellen, nicht nur eine FSM zu haben, sondern mehrere, von denen exakt eine zu einem Zeitpunkt aktiv ist. Ein ausgezeichneter Teil (der sogenannte „Sequencer") schaltet dann in Abhängigkeit von Eingangssignalen oder erreichten Resultaten zwischen den einzelnen FSMs um.
  • Ausgehend von dieser FSM wird nachfolgend die Sequential Finite State Machine (SFSM) korrekt definiert und dargestellt:
  • Definition 2:
  • Eine Sequential Finite State Machine (SFSM) besteht aus einem 5-Tupel (B, B0, C, V, h). Hierbei stellt B = (B0, ... BK} eine endliche Menge von Finite State Machines (FSM) dar, B0 ist die Start-FSM. C = {C0, ... CK} beschreibt eine endliche Menge von Zuständen zur Kenntlichmachung der aktuellen FSM. V = {V1, .. VN} ist die endliche Menge der (zusätzlichen) Eingangsvektoren mit VI = (vl, ... vL)i, wobei vl ϵ (0, 1, –). h: B × V → B heißt FSM-Transitionsfunktion (hext FSM Decoder).
  • Der wesentliche Vorteil dieser SFSM (vgl. hierzu auch 2) liegt erst einmal in der Modellierung. Ein Designer hat die Chance, sein Design in kleinere Portionen zu teilen. In der technischen Ausführung wird man dann versuchen, die (weiterhin endliche) Menge der Zustände aus allen FSMs Bk auf eine einheitliche Zustandscodierung abzubilden. Zusätzlich hierzu muss eine Codierung für die Ck der aktuellen FSM Bk mitgeführt werden, um für die Funktion h die Berechnung der nächsten FSM zu ermöglichen.
  • Andererseits zeigt ein Blick auf 2, dass eigentlich nur wenig gewonnen ist. Falls der Takt für alle Register identisch ist, dann wurden in 1a die Register und das Schaltnetz f(u*, x*) (Next State Decoder), * bedeutet Gesamtmenge) in Teilmengen von Registern mit f(u, x, c) und h(u, v, c) eingeteilt, die in der Realisierung wieder zusammengeführt werden. Minimaler wird die Lösung dadurch kaum, denn in einem PLD heutiger Bauart müssen alle Teile, also alle Teil-FSM, auf dem Baustein integriert werden. Hier setzen nun die erfindungsgemäßen Überlegungen an.
  • Es existieren zwar wenige FPGAs („Field-Programmable Gate Arrays"; vgl. z. B. „Spektrum der Wissenschaft", August 1997, Seiten 44 bis 49), die dynamisch rekonfigurierbar sind, jedoch nur partiell. Diese rekonfigurierbare Eigenschaft könnte man ausnutzen, indem in einem permanenten Teil h(u, v, c) und die Register zur FSM-Codierung sowie im nachladbaren Teil die aktuelle FSM geladen und ausgeführt werden. Das Problem hierbei ist der Performanceverlust beim Nachladen. Dies ist aus dem nachfolgenden Beispiel ersichtlich:
  • Beispiel
  • Die gern genommene Straßenverkehrsampel als Beispiel für eine Finite State Machine kann auch sehr gut als Beispiel für eine Sequential FSM genommen werden, wenn man an einen Nachtmodus denkt. Das Wort Modus zeigt schon den Weg: Im Umschalten zwischen einzelnen FSMs sollte so etwas wie ein Moduswechsel liegen, und Tag- und Nachtmodus schließen sich nun einmal gegenseitig aus.
  • FSM1 integriert nun die Tagampel, FSM2 die Nachtampel (z. B. gelbes Blinken für die Nebenstraßen), und im übergeordneten Sequencer wird an Hand eines Zeitsignals entschieden, welche FSM zur Ausführung kommt und welche ruht. Der Sequencer wird als FSMO implementiert.
  • Die Beschreibung für hierfür erforderliche drei FSM (0 .. 2) wird getrennt durchgeführt, dann aber auf einem PLD integriert, so dass im Bereich 0 die FSM0, 1 FSM1 und 2 FSM2 liegen würde. Ein Flächengewinn wäre damit nicht zu verzeichnen.
  • Im nachladbaren Fall müsste FSMO permanent zur Verfügung stehen, außerdem ein Bereich, der das Maximum von {FSM1, FSM2} aufnehmen könnte. In diesen Bereich wäre dann ständig eine von zweien geladen, und das Umschalten würde eine Rekonfiguration nach sich ziehen.
  • Zur Verdeutlichung des Vorteils bei dynamisch rekonfigurierbaren PLDs, wie sie Logikeinrichtungen nach der Erfindung darstellen, wird die Übergangsfunktion f(u, x, c) (vgl. 2) nunmehr als fc(u, x) (Äquivalentes gilt für Funktion g) bezeichnet. Mit dieser Darstellung soll die Unterschiedlichkeit in der Abhängigkeit demonstriert werden: u und x bewirken eine ständige, mit dem Takt verbundene Fortentwicklung des Zustands der Maschine, während c die Abhängigkeit vom wesentlich selteneren Moduswechsel beschreibt.
  • Die Rekonfiguration selbst würde vergleichsweise viel Zeit in Anspruch nehmen; es wurde nun erkannt, dass eine wesentlich günstigere Lösung in einer erweiterten Architektur von PLDs besteht, in denen zugleich mehrere Programme dynamisch umschaltbar gespeichert sind. Eine entsprechende Logikeinrichtung könnte als Multi-Plane-PLD bezeichnet werden; um jedoch dem Aspekt des jeweiligen „Kontext" Rechnung zu tragen und darzustellen, dass auch nur Teilbereiche von Umschaltvorgängen betroffen sind, wird hier der Name „Dynamical Multi-Context PLDs (dMC-PLDs)" gewählt.
  • Abschnitt II ( Erfindungsgemäße Architektur von „Dynamical Multi-Context PLDs")
  • Zunächst sei ein Problem angesprochen, dass sowohl für klassische dynamisch rekonfigurierbare als auch für dMC-PLDs gilt. Wird nämlich lediglich ein Teilbereich umgeschaltet, müssen dessen Schnittstellen nach außen hin, also insbesondere in Richtung der verbleibenden Teile, konstant bleiben. Zugleich sind einige Funktionsprogramme (sogenannte „Routingressourcen") von dem Umschalten mit betroffen, da innerhalb des umzuschaltenden Blocks nicht nur Logik, sondern auch Verbindungen liegen müssen.
  • Konsequenterweise wird im Folgenden für die erfindungsgemäße Logikeinrichtung ein PLD-Block als eine rekonfigurierbare Einheit, bestehend aus logischen Verarbeitungseinheiten mit Routingressourcen und Schnittstellen (sogenanntes „Routing") zu anderen Blöcken definiert; diese Definition stimmt mit den in der Praxis üblichen, partiell rekonfigurierbaren Baustei nen überein. Die Definition dieses Blocks weicht dabei von der üblichen Definition der logischen Blöcke ab.
  • Wenn man sich jetzt einmal einen fiktiven PLD mit solchen Blöcken anschaut, erhält man eine Architektur, wie sie aus 3 hervorgeht. In der Figur sind bezeichnet mit 2 eine partiell rekonfigurierbare PLD-Einrichtung bzw. -Struktur, mit 3A bis 3D vier PLD-Blöcke (= Logikblöcke), mit 4 ein (globales) Routing, das eine Verarbeitungseinheit mit Funktionsprogrammen und Schnittstellen zu den Blöcken bildet, sowie mit 5 ein I/O-Bereich, der Mittel zum Verknüpfen der Logikblöcke mit der Verarbeitungseinheit und einer Ein-/und Ausgabeeinheit darstellt. Man kann sich diese Architektur so vorstellen, dass – einmal abgesehen von den I/O-Ressourcen 5 am Außenrand – jeder PLD-Block 3A bis 3D einem vollwertigen CPLD ("Complex PLD") oder FPGA entspricht. Derartige Architekturen existieren bereits, z. B. von der Firma Cypress unter der Marke „Delta39k", oder von der Firma Lattice-Vantis unter der Marke „Godfather-Architecture". Diese Architekturen sind jedoch nicht im Betriebszustand der PLD-Einrichtung rekonfigurierbar.
  • Bei der in 4 schematisch angedeuteten dMC-PLD-Architektur einer Logikeinrichtung 7 nach der Erfindung wird die PLD-Struktur 2 nach 3 durch einen zusätzlichen PLD überlagert. Dieser als Umschalt-Logikblock 8 bezeichnete Extra-PLD ist bei bekannten Logikeinrichtungen nicht vorhanden und soll die Umschaltfunktion h(u, v, c) (vgl. 2) übernehmen. Er stellt folglich einen Teil von Verknüpfungsmitteln dar, mit denen die Konfiguration wenigstens einiger der Logikblöcke 3A bis 3D untereinander und/oder mit der Verarbeitungseinheit 4 und/oder der Ein-/Ausgabeeinheit 5 erfolgt. Dies bedeutet, dass die Ausgänge in 4 einem gespeicherten Kontext c entsprechen und die Auswahl der aktuellen Funktionen fc(u, x) und gc(u, x) steuern.
  • Für diesen Extra-PLD ergibt sich damit eine Struktur, die aus vielen Eingängen (u, x) wenige, ausschließlich gespeicherte Ausgänge berechnet.
  • Die sich aus diesem Aufbau ergebenden Vorteile sind darin zu sehen, dass die funktionale Dichte und damit die Ausnutzbarkeit gesteigert werden bzw. die Kosten pro Anwendung zu senken sind. Folgende grobe Abschätzung kann dafür gegeben werden:
    Es sei angenommen, dass die Ausnutzung der verwendeten Transistoren 1:20 ist; d. h., von 20 eingesetzten Transistoren ist tatsächlich nur einer in der (programmierbaren) logischen Funktion sichtbar. Für den Extra-PLD 8 lassen sich 20% Overhead veranschlagen, da es sich um einen Logikblock handelt, der nicht zur eigentlichen Funktionalität beiträgt, sondern nur die anderen Blöcke 3A bis 3D umschaltet. Für die Speicherung und Decodierung der zusätzlichen Programme (es werden lediglich 4 gespeicherte Funktionen pro PLD-Block angenommen) werden weitere 6 Transistoren berechnet (4 Transistoren zur Speicherung und 2 zur Auswahl 1 aus 4). Daraus ergibt sich eine neue Ausnutzung von 4:30, mithin eine Steigerung der Dichte gegenüber bekannten Ausführungsformen um 166%.
  • Gegebenenfalls könnte sich eine Schwierigkeit dadurch ergeben, dass sich auf Grund mehrerer Konfigurationen, aus denen eine aktuelle auszuwählen ist, der kritische Pfad innerhalb eines PLD-Blocks um einen Transistor verlängern kann, was mit der Erniedrigung der maximalen Taktfrequenz einhergehen würde. Hierzu muss zwischen sogenannter SRAM-basierten Speicherung einerseits und sogenannter FLASH-EEPROM bzw. Anti-Fuse andererseits unterschieden werden.
  • Für SRAM-basierte Verfahren wird mit der US 6,011,740 A ein Verfahren vorgeschlagen, die Speicherung mehrerer Konfigurationen in einem Schatten-RAM z. B. als Ringspeicher zu realisieren und die aktuell benötigte Information in eine Arbeitszelle zu laden. Dieses Verfahren garantiert eine maximale Arbeitsgeschwindigkeit.
  • Für Flash- und Antifuse-Speicherung könnte als eigentliche Zelle ebenfalls eine nachladbare SRAM-Zelle in Betracht kommen, so dass die obengenannte Lösung zum Tragen kommt; dies bedeutet jedoch einen zusätzlichen Aufwand und möglicherweise eine Verringerung der Geschwindigkeit, bedingt durch den Technologiewechsel bei der Speicherung. Bei diesen Technologien wird tatsächlich ein weiterer Path-Transistor, der den aktuellen Kontext decodiert, im Pfad eingeführt, gegebenenfalls in Form von Dual-Gate-FETs.
  • Die genaue Einteilung, welche Blockgröße und Extra-PLD-Größe für die Vielzahl an Anwendungen von Vorteil sind, kann durch Simulationen an Beispielen ermittelt werden.
  • Zu einer Realisierung einer erfindungsgemäßen Logikeinrichtung nach 4 kann man sich vorstellen, dass die beiden schematisch dargestellten Schichten, nämlich die mit dem Extra-PLD 8 (= Umschalt-Logikblock) und die mit den Logikblöcken 3A bis 3D, jeweils in einer Ebene E2 bzw. E1 zumindest weitgehend äquivalent sind und sich nicht nur gegenseitig umschalten, sondern vielmehr auch die Programmierung des jeweils anderen Teils erzeugen. Umschaltung bedeutet in diesem Fall, dass zwischen vorbestimmten Programmen ausgewählt wird. Gegenseitige Programmierung hingegen kann zur Anpassung (Evolution) an die jeweilige Umgebung genutzt werden. Ein einfaches Beispiel kann eine digitale PLL sein, die eine Frequenz mittels Laufzeiteffekten an einen Mastertakt anpasst.

Claims (4)

  1. Einrichtung der programmierbaren Logik – mit mehreren Logikblöcken mit konfigurierbaren Eigenschaften, die jeweils mindestens eine Verarbeitungseinheit mit Funktionsprogrammen und Schnittstellen zu den jeweils anderen Logikblöcken umfassen, – mit mindestens einer den Logikblöcken zugeordneten Ein-/Ausgabeeinheit, und – mit Mitteln zum Verknüpfen der Logikblöcke a) untereinander, b) mit mindestens einer der Verarbeitungseinheiten eines anderen Logikblocks und c) mit der mindestens einen Ein-/Ausgabeeinheit, gekennzeichnet durch eine Rekonfigurierbarkeit der Logikblöcke (3A bis 3D) während des gesamten Betriebs der Logikeinrichtung (7) dadurch, dass die Verknüpfungsmittel zusätzlich wenigstens einen konfigurierbaren Umschalt-Logikblock (8) aufweisen, mit dem eine Konfiguration wenigstens einiger der rekonfigurierbaren Logikblöcke (3A bis 3D) selbst und/oder ihrer Verbindungen untereinander und/oder ihrer Verbindungen mit der mindestens einen Verarbeitungseinheit (4) und/oder ihrer Verbindungen der mindestens einen Ein-/Ausgabeeinheit (5) erfolgt, wobei der Umschalt-Logikblock (8) in einer Ebene (E2) ausgebildet ist, die von einer Ebene (E1) mit den rekonfigurierbaren Logikblöcken (3A bis 3D) verschieden ist.
  2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Ebenen (E1, E2) zumindest weitgehend äquivalent aufgebaut sind.
  3. Einrichtung nach Anspruch 1, dadurch ge kennzeichnet, dass die Konfiguration wenigstens einiger der rekonfigurierbaren Logikblöcke (3A bis 3D) einem vorgegebenen Kontext (c) entsprechend erfolgt.
  4. Einrichtung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass der Umschalt-Logikblock (8) wenigstens einen Zustandsspeicher aufweist, der Informationen bezüglich der Funktionen der einzelnen rekonfigurierbaren Logikblöcke (3A bis 3D) enthält, und dass die Konfiguration der ausgewählten rekonfigurierbaren Logikblöcke gemäß den Funktionsinformationen des ausgewählten Zustands erfolgt.
DE10347975A 2002-10-24 2003-10-15 Einrichtung der programmierbaren Logik Expired - Fee Related DE10347975B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE10347975A DE10347975B4 (de) 2002-10-24 2003-10-15 Einrichtung der programmierbaren Logik

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10249676.5 2002-10-24
DE10249676 2002-10-24
DE10347975A DE10347975B4 (de) 2002-10-24 2003-10-15 Einrichtung der programmierbaren Logik

Publications (2)

Publication Number Publication Date
DE10347975A1 DE10347975A1 (de) 2004-05-13
DE10347975B4 true DE10347975B4 (de) 2008-10-09

Family

ID=32102969

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10347975A Expired - Fee Related DE10347975B4 (de) 2002-10-24 2003-10-15 Einrichtung der programmierbaren Logik

Country Status (5)

Country Link
US (1) US7161383B2 (de)
EP (1) EP1554805A2 (de)
JP (1) JP4160956B2 (de)
DE (1) DE10347975B4 (de)
WO (1) WO2004040766A2 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101198346B1 (ko) * 2003-04-08 2012-11-06 노보 노르디스크 에이/에스 크로마토그래피 고정상의 재생
DE102005005073B4 (de) 2004-02-13 2009-05-07 Siemens Ag Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen
US8612772B1 (en) 2004-09-10 2013-12-17 Altera Corporation Security core using soft key
US8566616B1 (en) * 2004-09-10 2013-10-22 Altera Corporation Method and apparatus for protecting designs in SRAM-based programmable logic devices and the like
US20090128189A1 (en) * 2007-11-19 2009-05-21 Raminda Udaya Madurawe Three dimensional programmable devices
US8327126B2 (en) * 2008-08-25 2012-12-04 International Business Machines Corporation Multicore processor and method of use that adapts core functions based on workload execution
US9978270B2 (en) 2014-07-28 2018-05-22 Econolite Group, Inc. Self-configuring traffic signal controller

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4870302A (en) * 1984-03-12 1989-09-26 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US6011740A (en) * 1998-03-04 2000-01-04 Xilinx, Inc. Structure and method for providing additional configuration memories on an FPGA
US6333641B1 (en) * 1999-05-07 2001-12-25 Morphics Technology, Inc. Apparatus and methods for dynamically defining variably sized autonomous sub-arrays within a programmable gate array

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212652A (en) * 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
US6346824B1 (en) * 1996-04-09 2002-02-12 Xilinx, Inc. Dedicated function fabric for use in field programmable gate arrays
US6091263A (en) * 1997-12-12 2000-07-18 Xilinx, Inc. Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
US6255848B1 (en) * 1999-04-05 2001-07-03 Xilinx, Inc. Method and structure for reading, modifying and writing selected configuration memory cells of an FPGA
US20020143505A1 (en) * 2001-04-02 2002-10-03 Doron Drusinsky Implementing a finite state machine using concurrent finite state machines with delayed communications and no shared control signals
US20040004239A1 (en) * 2002-07-08 2004-01-08 Madurawe Raminda U. Three dimensional integrated circuits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4870302A (en) * 1984-03-12 1989-09-26 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US6011740A (en) * 1998-03-04 2000-01-04 Xilinx, Inc. Structure and method for providing additional configuration memories on an FPGA
US6333641B1 (en) * 1999-05-07 2001-12-25 Morphics Technology, Inc. Apparatus and methods for dynamically defining variably sized autonomous sub-arrays within a programmable gate array

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Spektrum der Wissenschaft", August 1997, S.44-49 *

Also Published As

Publication number Publication date
WO2004040766A3 (de) 2004-10-28
JP2006504344A (ja) 2006-02-02
DE10347975A1 (de) 2004-05-13
JP4160956B2 (ja) 2008-10-08
WO2004040766A2 (de) 2004-05-13
US20060055421A1 (en) 2006-03-16
US7161383B2 (en) 2007-01-09
EP1554805A2 (de) 2005-07-20

Similar Documents

Publication Publication Date Title
DE69637399T2 (de) Grobkörnig strukturierte integrierte Halbleiterschaltung mit Nachschlagtabellen
EP0948842B1 (de) VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
DE19750662C2 (de) Prozessoreinheit für ein datenverarbeitungsgestütztes elektronisches Steuerungssystem in einem Kraftfahrzeug
EP1222739B1 (de) Rekonfigurierbares gate-array
DE60128960T2 (de) Architektur für ziegelförmig aufbaubares nutzerprogrammierbares gatterfeld
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE69924486T2 (de) Spezielle schnittstellenarchitektur für eine hybride schaltung
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
DE19639629C2 (de) Programmierbare, monolithische, integrierte Logikschaltung und Verfahren zum Implementieren derselben
WO2004021176A2 (de) Verfahren und vorrichtung zur datenverarbeitung
DE102004045527B4 (de) Konfigurierbare Logikschaltungsanordnung
DE4416881A1 (de) Datenverarbeitungseinrichtung
DE102005005073B4 (de) Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen
DE10347975B4 (de) Einrichtung der programmierbaren Logik
WO2004079564A2 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
DE3543471C1 (de) In integrierter Technik hergestellter Baustein zur Erstellung integrierter Schaltungen
WO2006029986A1 (de) Rechnereinrichtung mit rekonfigurierbarer architektur zur aufnahme eines globalen zellularen automaten
EP0244605B1 (de) In integrierter Technik hergestellter Logik-Array-Baustein zur Erstellung integrierter Schaltungen
DE60003847T2 (de) Universelle vorrichtung sowie verfahren und werkzeuge zu ihrer verwendung
EP1116127B1 (de) Programmgesteuerte einheit
DE10238174A1 (de) Verfahren und Vorrichtung zur Datenverarbeitung
DE19533085A1 (de) Speichereinrichtung
DE10243322B4 (de) Analoge rekonfigurierbare Datenverarbeitungseinrichtung
DE4447707B4 (de) Videointerface mit zur Laufzeit rekonfigurierbarer Schaltlogik

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee