DE60213601T2 - Programmierbare hardwarelogik, welche ein programmierbares interface und eine zentrale recheneinheit beinhaltet - Google Patents

Programmierbare hardwarelogik, welche ein programmierbares interface und eine zentrale recheneinheit beinhaltet Download PDF

Info

Publication number
DE60213601T2
DE60213601T2 DE60213601T DE60213601T DE60213601T2 DE 60213601 T2 DE60213601 T2 DE 60213601T2 DE 60213601 T DE60213601 T DE 60213601T DE 60213601 T DE60213601 T DE 60213601T DE 60213601 T2 DE60213601 T2 DE 60213601T2
Authority
DE
Germany
Prior art keywords
data
slave
master
address
signal
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 - Lifetime
Application number
DE60213601T
Other languages
English (en)
Other versions
DE60213601D1 (de
Inventor
Kim Khang San Jose DAO
A. Glenn Los Gatos BAXTER
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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Application granted granted Critical
Publication of DE60213601D1 publication Critical patent/DE60213601D1/de
Publication of DE60213601T2 publication Critical patent/DE60213601T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft eine programmierbare Logikvorrichtung und insbesondere eine programmierbare Logikvorrichtung mit einem Schnittstellenkern und einer zentralen Verarbeitungseinheit.
  • BESCHREIBUNG DER VERWANDTEN TECHNIK
  • Ein Mikroprozessor ist eine allgemein bekannte integrierte Schaltung, die einen Computer steuert. Die Art und Weise, auf die der Mikroprozessor den Computer steuert, bestimmt die Geschwindigkeit und Leistungsfähigkeit des Computers. Um den Computer steuern zu können, verarbeitet der Mikroprozessor eine Unmenge von Anweisungen, die ihn jeweils dazu auffordern, eine bestimmte Operation durchzuführen. Ein typischer Mikroprozessor enthält eine zentrale Verarbeitungseinheit (CPU), die die gewünschten arithmetischen und logischen Funktionen ausführt, sowie eine Eingabe/Ausgabeeinheit, die es der CPU ermöglicht, Eingangswerte von den restlichen Bestandteilen des Computers zu empfangen, um diese Funktionen ausführen zu können, und/oder ihre Ergebnisse den restlichen Bestandteilen des Computers mitzuteilen.
  • 1A stellt einen bekannten Mikroprozessor 100 dar, der eine CPU 101 und zwei Erweiterungsbusse 102 und 103 enthält. Mit Hilfe der Erweiterungsbusse kann die CPU 101 mit anderen Vorrichtungen kommunizieren, wodurch sich der Arbeitsbereich des Mikroprozessors ausweitet. Der Erweiterungsbus 102, der auch als Prozessor-Local-Bus (PLB) bezeichnet wird, verbindet die CPU 101 mit Hochgeschwindigkeitsvorrichtungen 104. Zu diesen Hochgeschwindigkeitsvorrichtungen 104 könnten Speicher- und Hochleistungsperipheriegeräte gehören. Eine Vorrichtung, die die Steuerung des PLB 102 übernimmt und für ihren eigenen Transfer sorgt, wird als „Master" bezeichnet, während eine Vorrichtung, die vom Master Befehle zum Senden von Daten empfängt, als „Slave" bezeichnet wird.
  • Der Erweiterungsbus 103, der auch als chipintegrierter peripherer Bus (On-chip Peripheral Bus = OPB) bezeichnet wird, sorgt für den Zugang der CPU 101 zu langsamen Vorrichtungen 105. Zu diesen langsamen Vorrichtungen 105 könnten UART-Chips und Ethernet-Verbindungen gehören. Es sei angemerkt, daß zu langsamen Vorrichtungen 105 genauso wie zu Hochgeschwindigkeitsvorrichtungen 104 sowohl Master als auch Slaves gehören können. Um jedoch zu verhindern, daß diese langsamen Vorrichtungen 105 die Leistung der CPU 101 beeinflussen, ist der OPB 103 nicht direkt mit der CPU 101 verbunden. Stattdessen wird der OPB 103 über eine OPB-Brücke 106 an den PLB 102 gekoppelt. Es sei angemerkt, daß die meisten Systeme davon ausgehen, daß die Segmentierung von Bussen erfolgt, damit langsame Vorrichtungen keine wertvolle Bandbreite auf dem Hauptbus verbrauchen. Es ist jedoch häufig von Vorteil, die Segmentierung als Bus parallel zum Hauptbus zu behandeln, die den vorteilhaften Betrieb von Peripheriegeräten mit höherer Geschwindigkeit bei geringer Auswirkung auf den Hauptbus ermöglicht. Bei der OPB-Brücke 106 handelt es sich um ein Systembauelement, das für den Transport von Daten von einem Bus zum anderen ausgelegt ist. Die OPB-Brücke 106 kann Datenformate und Protokolle automatisch umwandeln und erleichtert dadurch die Übertragung von Informationen zwischen OPB 103 und PLB 102.
  • Anwendungsspezifische integrierte Schaltungen (ASICs) sind im Fachbereich der integrierten Schaltungen ebenfalls allgemein bekannt. Bei einem ASIC handelt es sich um einen Chip, der für eine vorgegebene Anwendung bestimmt ist. Zum Bau eines ASIC werden mehrere Grundschaltungszellen miteinander verbunden. Diese Schaltungszellen sind in der Regel in einer vom ASIC-Hersteller gelieferten Bibliothek zu finden. Einige Hersteller liefern derzeit Mikroprozessorzellen zum Integrieren in den ASIC. Diese Mikroprozessorarten werden „integrierte" Mikroprozessoren genannt.
  • Programmierbare Logikvorrichtungen (Programmable Logic Devices = PLDs) sind im Fachbereich der integrierten Schaltungen ebenfalls allgemein bekannt. Eine PLD kann vom Anwender vor Ort programmiert werden, um logische Strukturen zu implementieren. Eine PLD-Art ist das anwenderprogrammierbare Gate-Array (Field-Programmable Gate Array = FPGA). Bei einer typischen Architektur enthält ein FPGA ein Array aus konfigurierbaren Logikbausteinen (Configurable Logic Blocks = CLBs), das von programmierbaren Eingabe/Ausgabebausteinen (Input/Output Blocks = IOBs) umgeben ist. Die IOBs sorgen für die Schnittstelle zwischen den Anschlußstiften und den CLBs, während die CLBs die Funktionselemente für die Konstruktion von Logik auf dem FPGA bereitstellen. Die CLBs und die IOBs sind durch eine Hierarchie von programmierbaren Leitwegressourcen miteinander verbunden. Diese CLBs, IOBs und programmierbaren Leitwegressourcen werden durch das Laden eines Konfigurationsbitstroms in das FPGA individuell angepaßt. Dieser Konfigurationsbitstrom wird mit Hilfe von Software-Tools erzeugt.
  • 2 stellt ein vereinfachtes Blockdiagramm eines CLB 200 bei dem von Xilinx, Inc. vertriebenen FPGA VirtexTM dar. Der CLB 200 enthält zwei „Scheiben" 201A und 201B. Jede Scheibe 201 enthält einen ersten LUT 202 für das Empfangen mehrerer erster Eingangssignale G1–G4 von der programmierbaren Leiterbahn und einen zweiten LUT 203 für das Empfangen mehrerer zweiter Eingangssignale F1–F4, die ebenfalls von der programmierbaren Leiterbahn kommen. Jede Scheibe 201 enthält des weiteren ein Flip-Flop 204 für das Empfangen eines Ausgangssignals Y (an seinem Anschluß D) von dem LUT 202 und für das Ausgeben eines Signals YQ (an seinem Anschluß Q). Auf ähnliche Weise enthält jede Scheibe 201 des weiteren ein Flip-Flop 205 für das Empfangen eines Ausgangssignals X (an seinem Anschluß D) von dem LUT 203 und für das Ausgeben eines Signals XQ (an seinem Anschluß Q). Weitere Einzelheiten zu dem FPGA VirtexTM werden auf den Seiten 3–7 bis 3–17 und den Seiten 3–76 bis 3–87 in dem von Xilinx, Inc. veröffentlichten Dokument "The Programmable Logic Data Book 2000" offengelegt.
  • Einige FPGAs wie das FPGA Virtex können so programmiert werden, daß sie Bausteine mit einer vorgegebenen Funktionalität enthalten, die als „Kern" bezeichnet werden. Bei einer Ausführungsform kann der Kern einen vorgegebenen Satz Konfigurationsbits enthalten, die das FPGA so programmieren, dass es eine oder mehrere Funktionen ausführt. Bei einer weiteren Ausführungsform kann ein Kern Quellcode oder Schemata enthalten, die die Logik und Konnektivität einer Struktur beschreiben. Typische Kerne können unter anderem digitale Signalverarbeitungsfunktionen (Digital Signal Processing = DSP), Speicher, Speicherelemente und mathematische Funktionen bereitstellen. Kerne können für bestimmte FPGAs mit einem optimal geplanten Layout versehen werden. Kerne können auch parametrisierbar sein, d.h. sie können es dem Anwender ermöglichen, Parameter einzugeben, um eine bestimmte Kernfunktionalität zu aktivieren oder zu ändern.
  • 3 stellt einen IP-Prozeßaufbau 300 für die Verwendung eines oder mehrerer Kerne in einem FPGA dar. Es sei angemerkt, daß sich IP hier auf allgemeines geistiges Eigentum (Intellectual Property) wie beispielsweise Logikstrukturen für ein FPGA bezieht. Sowohl vom Anwender bereitgestellte Logikstrukturen als auch von der Inhaberin der vorliegenden Erfindung oder anderen entwickelte Kerne werden als IP angesehen. Bei dem Aufbau 300 kann ein Kerngenerator 304, der von Tools 301 auf Systemebene aktiviert wird, einen oder mehrere Steckkerne von Drittanbietern aufnehmen. Alternativ dazu kann der Kerngenerator 304 einen Kern verwenden, der innerhalb eines Satzes Bibliotheken 303 bereitgestellt wird, wobei diese Bibliotheken 303 Bestandteile des Kerngenerators 304 sind. Wenn der Kern ausgewählt worden ist, kann er einem FPGA-Software-Tool 306 zugeführt werden. Zu beispielhafter FPGA-Software könnte die Software AllianceTM, FoundationTM oder Foundation ISETM gehören, die alle von der Inhaberin der vorliegenden Erfindung lizenziert werden. Diese Software kann ebenso von einem Anwender eine Struktur 305 auf oberster Ebene erhalten. Diese Struktur auf oberster Ebene bestimmt die Logikstruktur, die zusätzlich zu dem/den Kernen auf dem FPGA implementiert wird. Bei einer Ausführungsform kann das FPGA-Software-Tool 306 Strukturen 305 auf oberster Ebene in VHDL, Verflog oder standardmäßiger schematischer Form erhalten. Das FPGA-Software-Tool 306 erzeugt den Konfigurationsbitstrom, der ein FPGA 307 so programmiert, dass die von dem/den Kernen und der Struktur auf oberster Ebene bestimmten Funktionen bereitgestellt werden.
  • Im Zuge technologischer Verbesserungen tauchen FPGAs zunehmend in bisher ASIC-typischen Anwendungen auf. Bei einem FPGA bestehen jedoch größere Einschränkungen hinsichtlich der physischen Ressourcen als bei einem ASIC. Aus diesem Grunde ist das Bereitstellen von Mikroprozessor-Bestandteilen auf einem FPGA keine einfache Aufgabe und erfordert spezielle Überlegungen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß der vorliegenden Erfindung enthält eine programmierbare Logikvorrichtung (PLD) eine zentrale Verarbeitungseinheit (CPU) und eine mit der CPU gekoppelte programmierbare Schnittstelle. Die PLD enthält des weiteren mindestens eine Vorrichtung, die entweder über die programmierbare Schnittstelle Informationen an die CPU liefert, über die programmierbare Schnittstelle Informationen von der CPU empfängt oder über die programmierbare Schnittstelle mit einer anderen Vorrichtung kommuniziert. Die programmierbare Schnittstelle enthält einen Koppelpunkt-Schalter zum Koppeln der mehreren Vorrichtungen. Der Koppelpunkt-Schalter enthält sowohl Adreß/Steuerwege als auch Datenwege.
  • Bei einer Ausführungsform können die Adreß/Steuerwege von einem ersten Satz programmierbarer Ressourcen auf der PLD und die Datenwege von einem zweiten Satz programmierbarer Ressourcen auf der PLD gebildet werden. Der erste und der zweite Satz programmierbarer Ressourcen können sich unterscheiden oder sich auf der PLD überlappen.
  • Bei einer Ausführungsform enthält die PLD des weiteren einen chipinternen peripheren Bus (On-chip Peripheral Bus = OPB), der mit der programmierbaren Schnittstelle gekoppelt ist. Ein Brückenmodul koppelt den OPB mit der programmierbaren Schnittstelle. Eine erste Gruppe von Vorrichtungen auf der PLD (einschließlich Masters und Slaves) kann mit dem OPB gekoppelt sein. Somit kann diese erste Gruppe von Masters und Slaves mit Hilfe des Brückenmoduls mit der programmierbaren Schnittstelle kommunizieren. Zu der ersten Gruppe von Masters und Slaves können Peripheriegeräte gehören, die sich in der Regel als langsame Vorrichtungen bezeichnen lassen. Bei einer Ausfuhrungsform wird mindestens einer dieser Masters und Slaves mit Hilfe eines Kerns auf der PLD erzeugt. Bei einer anderen Ausführungsform befindet sich mindestens einer dieser Masters und Slaves nicht auf dem Chip. Bei noch einer weiteren Ausführungsform kann ein Kern dafür benutzt werden, eine Vorrichtung (der ersten Gruppe) zu erzeugen, die sowohl Master- als auch Slave-Funktionalität aufweist. Die erste Gruppe von Vorrichtungen kann sich auf der PLD oder außerhalb des Chips befinden.
  • Eine zweite Gruppe von Vorrichtungen auf der PLD, zu der auch Masters und Slaves gehören, kann mit der programmierbaren Schnittstelle gekoppelt werden. Zu der zweiten Gruppe von Vorrichtungen können Hochgeschwindigkeitsvorrichtungen wie Speichervorrichtungen oder Vorrichtungen mit doppelter Datenrate gehören. Die zweite Gruppe von Vorrichtungen kann sich auf der PLD oder nicht auf dem Chip befinden. Bei einer Ausführungsform enthält einer der Masters in der zweiten Gruppe von Vorrichtungen eine Hochgeschwindigkeits-Busschnittstelle, die mit der programmierbaren Schnittstelle und dem OPB gekoppelt ist, wobei die Hochgeschwindigkeits-Busschnittstelle für die Kommunikation mit einer chipexternen Vorrichtung sorgt. Die PLD der vorliegenden Erfindung lässt sich problemlos in ein System integrieren, das andere Bestandteile enthält, wobei die programmierbare Schnittstelle und die Hochgeschwindigkeits-Busschnittstelle vorteilhafterweise für den effizienten Zugang dieser Bestandteile zu den die CPU betreffenden Funktionen sorgen.
  • Bei einer Ausführungsform der vorliegenden Erfindung enthält die programmierbare Schnittstelle einen Koppelpunkt-Schalter. Bei der Adreß/Steuerlogik kann der Koppelpunkt-Schalter mehrere Adreßdecodierer für das Empfangen von Adressen aus den Masters und mehrere Zugriffsarbiter für das Empfangen decodierter Adressen aus den Adreßdecodierern und das Arbitrieren von Transaktionen zwischen den Masters und den Slaves enthalten. Der Koppelpunkt-Schalter kann für eine vollständige oder unvollständige Konnektivität zwischen den Adreßdecodierern und den Zugriffsarbitern sorgen.
  • Bei der Datenlogik kann der Koppelpunkt-Schalter mehrere Schreibmultiplexer für das Empfangen von Schreibdaten aus den Masters enthalten, wobei jeder Schreibmultiplexer die Schreibdaten gezielt einem Slave zur Verfügung stellt, und mehrere Lesemultiplexer für das Empfangen von Lesedaten aus den Slaves, wobei jeder Lesemultiplexer die Lesedaten gezielt einem Master zur Verfügung stellt. Die Schreib- und die Lesemultiplexer können von den mehreren Zugriffsarbitern gesteuert werden. Der Koppelpunkt-Schalter kann für eine vollständige oder unvollständige Konnektivität zwischen jedem Schreibmultiplexer und den mehreren Master-Vorrichtungen sorgen. Der Koppelpunkt-Schalter kann ebenso für eine vollständige oder unvollständige Konnektivität zwischen jedem Lesemultiplexer und den mehreren Slave-Vorrichtungen sorgen. Bei einer Ausführungsform enthält die Adreß/Steuer- und/oder die Datenlogik des weiteren Register für das Pipelining von Transaktionen zwischen den Masters und den Slaves.
  • Gemäß einer anderen Ausführungsform der vorliegenden Erfindung enthält ein anwenderprogrammierbares Gate-Array (FPGA) mit einer integrierten zentralen Verarbeitungseinheit (CPU) einen von einem Kern erzeugten Hybridschalter, wobei der Hybridschalter für die Kommunikation zwischen der CPU und der auf dem FPGA implementierten Anwenderlogik sorgt. Bei dieser Ausführungsform enthält die CPU eine Master-Vorrichtung, und die Logik weist mehrere Slave-Vorrichtungen und mehrere Master-Vorrichtungen auf. Dieser Hybridschalter enthält sowohl Koppelpunkt-Konfigurationen als auch Konfigurationen mit gemeinsam genutztem Bus, die Wege zwischen den Master-Vorrichtungen und den Slave-Vorrichtungen bereitstellen.
  • Insbesondere enthält der Hybridschalter mehrere Adreßdecodierer für das Empfangen von Adressen aus den Masters und mehrere Zugriffsarbiter für das Empfangen decodierter Andressen aus den Adreßdecodierern und das Arbitrieren von Transaktionen zwischen den Masters und den Slaves. Minde stens ein Zugriffsarbiter sorgt für die Arbitrierung von mehr als einem Slave, und mindestens ein Zugriffsarbiter sorgt für die Arbitrierung von nur einem Slave. Der Koppelpunkt-Schalter kann ebenso mehrere Schreibmultiplexer für das Empfangen von Schreibdaten aus den Masters und für das Zuführen von Schreibdaten zu dem Slave enthalten. Bei einer Ausführungsform führt mindestens ein Schreibmultiplexer seine Schreibdaten mehr als einem Slave zu, und mindestens ein Schreibmultiplexer führt seine Schreibdaten nur einem Slave zu. Der Koppelpunkt-Schalter kann ebenso mehrere Lesemultiplexer für das Empfangen von Lesedaten aus den Slaves und für das gezielte Zuführen der Lesedaten zu den Masters enthalten. Bei einer Ausführungsform führt mindestens ein Lesemultiplexer seine Lesedaten mehr als einem Master zu, und mindestens ein Lesemultiplexer führt seine Lesedaten nur einem Master zu. Die Schreib- und die Lesemultiplexer können von den mehreren Zugriffsarbitern gesteuert werden. Der Hybridschalter kann wie der Koppelpunkt-Schalter der vorliegenden Erfindung Pipelining für Transaktionen zwischen den Masters und den Slaves enthalten.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung enthält ein anwenderprogrammierbares Gate-Array (FPGA) mehrere Master-Vorrichtungen, wobei ein integrierter Mikroprozessor mindestens aus einer solchen Master-Vorrichtung, mehreren Slave-Vorrichtungen und einem Mittel für das gezielte Bereitstellen von Konnektivität zwischen den mehreren Master-Vorrichtungen und den mehreren Slave-Vorrichtungen besteht. Das Mittel für das gezielte Bereitstellen von Konnektivität kann durch einen Kern erzeugt werden.
  • Bei der Adreß/Steuerlogik kann das Mittel für das gezielte Bereitstellen von vollständiger Konnektivität ein Mittel für das Decodieren von Adressen aus den Master-Vorrichtungen und ein Mittel für die Arbitrierung von Transaktionen zwischen den mehreren Master-Vorrichtungen und den mehreren Slave-Vorrichtungen auf der Grundlage der decodierten Adressen enthalten. Bei einer Ausführungsform sorgt das Mittel für das gezielte Bereitstellen von Konnektivität für vollständige Konnektivität zwischen dem Mittel für das Decodieren und dem Mittel für die Arbitrierung, während das Mittel für das gezielte Bereitstellen von Konnektivität bei anderen Ausführungsformen für eine unvollständige Konnektivität zwischen dem Mittel für das Decodieren und dem Mittel für die Arbitrierung sorgt.
  • Bei der Datenlogik kann das Mittel für das gezielte Bereitstellen von Konnektivität ein Mittel für das Empfangen von Schreibdaten aus den mehreren Master-Vorrichtungen und das gezielte Zuführen der Schreibdaten zu vorgesehenen Slave-Vorrichtungen enthalten und ein Mittel für das Empfangen von Lesedaten aus den mehreren Slave-Vorrichtungen und das gezielte Zuführen der Lesedaten zu vorgesehenen Master-Vorrichtungen. Bei einer Ausführungsform werden das Mittel für das Empfangen der Schreibdaten und das Mittel für das Empfangen der Lesedaten von dem Mittel für die Arbitrierung gesteuert.
  • Das Mittel für das gezielte Bereitstellen von Konnektivität kann für eine vollständige oder unvollständige Konnektivität zwischen dem Mittel für das Empfangen von Schreibdaten und den mehreren Master-Vorrichtungen sorgen. Außerdem kann das Mittel für das gezielte Bereitstellen von Konnektivität für eine vollständige oder unvollständige Konnektivität zwischen dem Mittel für das Empfangen von Lesedaten und den mehreren Slave-Vorrichtungen sorgen.
  • Die vorliegende Erfindung kann vorteilhafterweise in bekannten PLD-Software-Tools enthalten sein. Bei einer Ausführungsform kann ein Kerngenerator, der durch Tools auf Systemebene aktiviert wird, einen von Dritten bereitgestellten programmierbaren Schnittstellenkern der vorliegenden Erfindung aufnehmen. Alternativ dazu kann der Kerngenerator einen programmierbaren Schnittstellenkern verwenden, der in einem Satz Bibliotheken bereitgestellt wird, die Bestandteil des Kerngenerators sind. Wenn der programmierbare Schnittstellenkern ausgewählt worden ist, kann er einem PLD-Software-Tool zur Verfügung gestellt werden. Diese Software kann ebenfalls von einem Anwender eine Struktur auf oberster Ebene erhalten. Dieses PLD-Software-Tool erzeugt den Konfigurationsbitstrom, der eine PLD so programmiert, dass sie die von dem programmierbaren Schnittstellenkern und der Struktur auf oberster Ebene vorgesehenen Funktionen bereitstellt.
  • Es ist wichtig, dass der programmierbare Schnittstellenkern der vorliegenden Erfindung mehrere Compliance-Ebenen aufweisen kann. Ein Kern kann beispielsweise nur eine bestimmte Funktionalität bei der PLD zulassen. Bei einer Ausführungsform ist beispielsweise eine Teilmenge der Funktionen des Prozessor-Local-Busses (PLB) zugelassen. Bei anderen Ausführungsformen, wie den Ausführungsformen, die bestehendes IP oder nicht parametrisiertes IP enthalten, könnte die vorliegende Erfindung die Teilmenge auf die Funktionalität zurechtschneiden, die von diesem IP gefordert wird (oder auf eine vorgegebene Compliance-Ebene auf der Grundlage dieses IP).
  • Gemäß der vorliegenden Erfindung wird ein Verfahren für das Bereitstellen einer Schnittstelle zwischen einer zentralen Verarbeitungseinheit (CPU) auf einer programmierbaren Logikvorrichtung (PLD) und vom Anwender implementierter Logik auf der PLD angegeben. Das Verfahren umfaßt das gezielte Bereitstellen von Konnektivität zwischen mehreren von der Logik bereitgestellten Master-Vorrichtungen und mehreren von der Logik bereitgestellten Slave-Vorrichtungen, wobei zur CPU mindestens eine Master-Vorrichtung gehört. Zu dem Schritt des gezielten Bereitstellens von Konnektivität im Verlauf der Adreß/Steuerlogik gehört das Decodieren von Adressen aus den Master-Vorrichtungen mit Hilfe von Adreßdecodierern und das Arbitrieren von Transaktionen zwischen den mehreren Master-Vorrichtungen und den mehreren Slave-Vorrichtungen mit Hilfe von Zugriffsarbitern und der decodierten Adressen. Bei einer Ausführungsform sorgt der Schritt des gezielten Bereitstellens von Konnektivität für vollständige Konnektivität zwischen den Adreßdecodierern und den Zugriffsarbitern. Bei einer weiteren Ausführungsform sorgt der Schritt des gezielten Bereitstellens von Konnektivität für eine unvollständige Konnektivität zwischen den Adreßdecodierern und den Zugriffsarbitern.
  • Bei dem Verfahren der vorliegenden Erfindung gehört zu dem Schritt des gezielten Bereitstellens von Konnektivität in der Datenlogik das Empfangen von Schreibdaten aus den mehreren Master-Vorrichtungen und das gezielte Zuführen der Schreibdaten zu vorgesehenen Slave-Vorrichtungen unter Verwendung eines ersten Satzes Multiplexer sowie das Empfangen von Lesedaten aus den mehreren Slave-Vorrichtungen und das gezielte Zuführen der Lesedaten zu vorgesehenen Master-Vorrichtungen unter Verwendung eines zweiten Satzes Multiplexer. Der Schritt des gezielten Bereitstellens von Konnektivität kann für eine vollständige oder unvollständige Konnektivität zwischen dem ersten Satz Multiplexer und den mehreren Master-Vorrichtungen sorgen. Der Schritt des gezielten Bereitstellens von Konnektivität kann ebenso für eine vollständige oder unvollständige Konnektivität zwischen dem zweiten Satz Multiplexer und den mehreren Slave-Vorrichtungen sorgen.
  • Bei dem Verfahren der vorliegenden Erfindung gehört zu dem Schnitt des gezielten Bereitstellens von Konnektivität das Pipelining von Transaktionen zwischen den mehreren Master-Vorrichtungen und den mehreren Slave-Vorrichtungen. Dieses Pipelining kann vorteilhafterweise in der Adreß/Steuerlogik sowie der Datenlogik bereitgestellt werden, wodurch sich bei beiden die Leistung verbessert.
  • Gemäß der vorliegenden Erfindung wird ein Verfahren für das Bereitstellen einer Schnittstelle zwischen einer zentralen Verarbeitungseinheit (CPU) auf einer programmierbaren Logikvorrichtung (PLD) und vom Anwender implementierter Logik auf der PLD angegeben. Das Verfahren umfaßt das Auswählen eines Kerns aus einer Bibliothek, wobei der Kern gezielt für Konnektivität zwischen mehreren von der Logik bereitgestellten Master-Vorrichtungen und mehreren von der Logik bereitgestellten Slave-Vorrichtungen sorgt, wobei zur CPU mindestens eine Master-Vorrichtung gehört. Zu dem Verfahren gehört des weiteren das Einstellen mindestens eines Parameters in dem Kern, was die Konnektivität beeinflußt.
  • Bei einer weiteren Ausführungsform wird der Informationsgehalt jedes Kerns, der für den Aufbau des Systems benötigt wird, zur Analyse der Daten in einer zentralen Einrichtung gesammelt. Diese Daten stehen dem Anwender zur Verfügung, damit er bei der Instanziierung von Kernen oder der Parametrisierung Alternativen wählen kann. Eine bestimmte Wahl bei der Parametrisierung des Kerns kann beispielsweise zu einer unterschiedlichen Leistung des Gesamtsystems führen.
  • Die vorliegende Erfindung bietet im Vergleich zu den üblichen integrierten CPUs in der ASIC-Umgebung eine Anzahl wesentlicher Vorteile. Die vorliegende Erfindung sorgt erstens für beträchtliche Flexibilität, indem sie Funktionen bereitstellt, die auf der Grundlage der Bedürfnisse des Anwenders und/ oder der zugehörigen Struktur parametrisiert werden können. Diese parametrisierten Funktionen können in programmierbaren Ressourcen auf der PLD implementiert werden, wodurch sie jederzeit modifiziert werden können. Zweitens können aufgrund dieser programmierbaren Ressourcen nur die Ressourcen implementiert werden, die tatsächlich für die programmierbare Schnittstelle benötigt werden, wodurch es dem Anwender möglich wird, die Verwendung der restlichen PLD zu optimieren. So können beispielsweise sowohl die Adreß/Steuerlogik als auch die Datenlogik „getrimmt" werden. Anders ausgedrückt können Wege (und die mit ihnen verbundene Logik), die von der Struktur des Anwenders nicht benötigt werden, eliminiert werden, wodurch sich die Signalgeschwindigkeit erhöht und die Siliziumfläche verringert. Bei einem weiteren Beispiel kann die Anzahl der Master- oder Slave-Vorrichtungen erhöht werden, da zusätzliche Fläche zur Verfügung steht. Drittens kann die vorliegende Erfindung auf effiziente Weise die Funktionen des Prozessor-Local-Busses einschränken, wodurch die PLD dem Leistungsniveau eines ASIC nahekommen beziehungsweise dieses sogar übersteigen kann.
  • KURZE BESCHREIBUNG DER FIGUREN
  • 1 zeigt eine vereinfachte schematische Darstellung eines Mikroprozessors mit einer zentralen Verarbeitungseinheit, einem Prozessor-Local-Bus und einem chipinternen peripheren Bus.
  • 2 stellt ein vereinfachtes Blockdiagramm eines konfigurierbaren Logikbausteins bei dem von der Inhaberin der vorliegenden Erfindung vertriebenen FPGA Virtex dar.
  • 3 stellt einen IP-Prozeßaufbau für die Verwendung eines oder mehrerer Kerne in einem FPGA dar.
  • 4 stellt ein FPGA-Grundsystem mit integriertem Prozessor gemäß der vorliegenden Erfindung dar.
  • 5A zeigt eine vereinfachte schematische Darstellung eines 4×4-Koppelpunkt-Schalters gemäß der vorliegenden Erfindung.
  • 5B zeigt eine ausführlichere schematische Darstellung einer Implementierung des Koppelpunkt-Schalters aus 5A in der Adreßlogik.
  • 5C zeigt eine ausführlichere schematische Darstellung einer Implementierung des Koppelpunkt-Schalters aus 5A in der Datenlogik.
  • 5D stellt eine Ausführungsform des Koppelpunkt-Schalters aus 5B dar, bei der die Adreß/Steuerlogik getrimmt ist.
  • 5E stellt eine Ausführungsform des Koppelpunkt-Schalters aus 5C dar, bei der die Datenlogik getrimmt ist.
  • 6 stellt eine Übersicht über die für eine Master-Vorrichtung und den programmierbaren Schnittstellenkern der vorliegenden Erfindung bereitgestellten Anschlüsse dar und die Signale, die zwischen diesen Anschlüssen übertragen werden könnten.
  • 7 stellt ein Zeitdiagramm eines Masters während einer 8-Datenwörter-Schreiboperation dar, der eine 8-Datenwörter-Leseoperation folgt.
  • 8 stellt eine Übersicht über die für eine Slave-Vorrichtung und den programmierbaren Schnittstellenkern der vorliegenden Erfindung bereitgestellten Ports dar und die Signale, die zwischen diesen Ports übertragen werden könnten.
  • 9 stellt ein Zeitdiagramm eines Slaves während einer 8-Datenwörter-Schreiboperation dar.
  • 10 stellt ein Zeitdiagramm eines Slaves während einer 8-Datenwörter-Leseoperation dar.
  • Die 11A und 11B stellen eine Ausführungsform der Adreß/Steuerlogik in einem programmierbaren Schnittstellenkern gemäß der vorliegenden Erfindung dar, wobei der Weg verschiedene mit dem Kern verbundene Adreß/Steuersignale enthält.
  • Die 12A und 12B stellen eine Ausführungsform der mit der Schreibdatenlogik gemäß der vorliegenden Erfindung verbundenen Schaltungen dar, wobei die Logik verschiedene mit dem Kern verbundene Schreibsignale enthält.
  • Die 13A und 13B stellen eine Ausfuhrungsform der mit der Lesedatenlogik gemäß der vorliegenden Erfindung verbundenen Schaltungen dar, wobei die Logik verschiedene mit dem Kern verbundene Lesesignale enthält.
  • 14 stellt eine Ausführungsform der Schnittstelle der Daten-Cache-Speichereinheit oder der Befehls-Cache-Speichereinheit zum Prozessor-Local-Bus dar.
  • 15 stellt die Schnittstelle eines Block-RAM (BRAM) mit Dual-Port-Funktionalität zu dem programmierbaren Schnittstellenkern der vorliegenden Erfindung dar.
  • 16 zeigt eine schematische Darstellung einer Ausführungsform eines Bridge-out-Moduls auf hoher Ebene in dem programmierbaren Schnittstellenkern gemäß der vorliegenden Erfindung.
  • 17 zeigt eine schematische Darstellung einer Ausführungsform eines Bridge-in-Moduls auf hoher Ebene in dem programmierbaren Schnittstellenkern gemäß der vorliegenden Erfindung.
  • Die 18A und 18B stellen die Adreß/Steuerlogik be-ziehungsweise die Datenlogik einer Architektur mit gemeinsam genutztem Bus dar.
  • Die 19A und 19B stellen die Adreß/Steuerlogik beziehungsweise die Datenlogik einer Architektur mit Hybridkoppelpunkt/gemeinsam genutztem Bus gemäß einer Ausführungsform der vorliegenden Erfindung dar.
  • AUSFÜHRLICHE BESCHREIBUNG DER FIGUREN
  • Das folgende Inhaltsverzeichnis soll dem Leser einen Überblick über die Strukturierung des Themas bieten.
  • INHALTSVERZEICHNIS
    • I. Terminologie und Richtlinien
    • A. Definitionen
    • B. Signalbezeichnungs- und Nummerierungsrichtlinien
    • C. Timing-Richtlinien
    • II. Erkennen der Unterschiede zwischen Ressourcen
    • III. Eingrenzen von Bus-Funktionen
    • A. PLB-Teilmengenfunktionen
    • 1. Arbitrierungssteuerfunktionen
    • 2. Datentransferfunktionen
    • B. PLB-Obermengenfunktionen
    • C. Signale: Abbilden (Mapping) von PLB auf PIC
    • IV. FPGA-Implementierung: Allgemeines
    • A. Zentrale Verarbeitungseinheit
    • B. Programmierbarer Schnittstellenkern (Programmable Interface Core = PIC)
    • C. Master- & Slave-Vorrichtungen
    • D. Chipinterner peripherer Bus (On-chip Peripheral Bus = OPB)
    • E. Hochgeschwindigkeits-Busschnittstelle
    • V. FPGA-Implementierung: Einzelheiten
    • A. Master-/Slave-Vorrichtungen: Ports & Timing
    • 1. Kommunikation zwischen Master-Vorrichtung und PIC
    • a. Adreß-Ports für Masters
    • b. Schreib-Ports für Masters
    • c. Lese-Ports für Masters
    • 2. Timing der Master-Vorrichtung
    • 3. Kommunikation zwischen Slave-Vorrichtung und PIC
    • a. Adreß-Ports für Slaves
    • b. Schreib-Ports für Slaves
    • c. Lese-Ports für Slaves
    • 4. Timing der Slave-Vorrichtung
    • B. Programmierbarer Schnittstellenkern
    • C. DCU/ICU: Schnittstelle zum PLB
    • D. BRAM: Schnittstelle zum PLB
    • E. OPB-Brückenmodule
    • 1. Bridge-Out-Modul
    • 2. Bridge-In-Modul
    • F. Programmierbarer Hybrid-Schnittstellenkern
    • G. Software-Tools
  • I. TERMINOLOGIE UND RICHTLINIEN
  • Die vorliegende Erfindung wird unter Verwendung bestimmter Terminologie und Richtlinien beschrieben, mit denen Fachleute vertraut sein mögen oder auch nicht. Aus diesem Grund werden die nachfolgenden Definitionen, Signal- und Nummerierungsrichtlinien sowie Timing-Richtlinien genauer beschrieben, um dem Leser die vorliegende Erfindung besser verständlich zu machen.
  • A. DEFINITIONEN
  • Die in dieser Beschreibung verwendeten Akronyme, Abkürzungen und Fachbegriffe werden im Anschluß an diesen Abschnitt in alphabetischer Reihenfolge definiert. Es sei darauf hingewiesen, daß einige Akronyme, Abkürzungen und Fachbegriffe eventuell in der ausführlichen Beschreibung definiert werden.
  • BEAR:
    Busfehler-Adreßregister (Bus Error Address Register)
    BESR:
    Busfehler-Syndromregister (Bus Error Syndrome Register)
    BRAM:
    Block-RAM (Block Random Access Memory (RAM)) auf einer programmierbaren Logikvorrichtung
    Burst:
    eine Transaktion, bei der mehr als eine Dateneinheit übertragen und die in der Regel für das schnelle Bewegen eines Datenblocks zwischen einem Master und einem Slave verwendet wird
    Cache-Speicher:
    kleiner, schneller Speicher in der CPU zum Speichern von Dateninhalt einschließlich Befehle und/oder Daten, auf den in der letzten Zeit zugegriffen wurde
    Kern:
    vorstrukturierter Abschnitt einer programmierbaren Logikvorrichtung, der eine bestimmte Funktion bereitstellt und in der Regel mit Hilfe einer vorgegebenen Anzahl physischer Ressourcen auf der programmierbaren Logikvorrichtung implementiert wird
    CPU:
    zentrale Verarbeitungseinheit, die in der Regel eine Steuereinheit und eine Rechen- und Logikeinheit (Arithmetic and Logic Unit = ALU) enthält
    DCU:
    Daten-Cache-Speichereinheit (Data Cache Unit)
    DDR:
    doppelte Datenrate (Double Data Rate)
    HSBI:
    Hochgeschwindigkeits-Busschnittstelle, bei der hier allgemein eine Vorrichtung mit Hochgeschwindigkeits-Master-Port auf dem PIC gemeint ist
    ICU:
    Befehls-Cache-Speichereinheit (Instruction Cache Unit)
    IP:
    Struktur für die Integration in eine integrierte Schaltung, insbesondere ein FPGA
    Little
    Endian: Architektur, bei der, wenn man von einem 16- oder 32-Bit-Datenwort ausgeht, Byte an niedrigeren Adressen geringerwertig sind
    ISA:
    Befehlssatzarchitektur (Instruction Set Architecture)
    OPB:
    chipinterner peripherer Bus (On-chip Peripheral Bus)
    PIC:
    programmierbarer Schnittstellenkern (Programmable Interface Core), der zwischen einer CPU und programmierbaren Logikvorrichtungsressourcen gemäß der vorliegenden Erfindung bereitgestellt wird
    Pipelining:
    Prozeß, in dem eine Master-Vorrichtung mit der Ausführung eines zweiten Buszyklus beginnen kann, bevor der erste Buszyklus abgeschlossen worden ist, d.h. gleichzeitiges Verarbeiten mehrerer Buszyklen, die sich in unterschiedlichen Stadien befinden
    PLB:
    Prozessor-Local-Bus
    PowerPC:
    RISC-Mikroprozessor, der einer Norm entspricht, die von IBM, Motorola und Apple Computer gemeinsam entworfen wurde und eine gemeinsame Befehlssatzarchitektur (Instructions Set Architecture = ISA) festlegt
    Register:
    Hochgeschwindigkeits-Speicherbereich auf dem FPGA
    SDRAM:
    synchroner dynamischer RAM (DRAM) der mit höheren Taktgeschwindigkeiten laufen kann als herkömmlicher Speicher und sich selbst mit dem Bus einiger CPUs synchronisieren kann
    Single
    Data Beat: nicht burstartiger Transfer, d.h. ein einziges Datenelement in einem Taktzyklus über den Bus
    Datenwort:
    steht für eine Datenmenge von 32 Bit
  • B. SIGNALBEZEICHNUNGS- UND NUMMERIERUNGSRICHTLINIEN
  • Zur Beschreibung von Merkmalen der vorliegenden Erfindung wird auf verschiedene Signale verwiesen. Gemäß der hier verwendeten Richtlinie beginnen die Signalbezeichnungen in den 6 und 8 mit einem Präfix, der die Richtung des Signalflusses angibt sowie die übertragende Vorrichtung und die Vorrichtung, die das Signal empfängt. Die Signalbezeichnungen in anderen Figuren können mit einem Präfix beginnen, der nur die übertragende Vorrichtung angibt. Die Bezeichnungen der Vorrichtungen werden der Einfachheit und Übersichtlichkeit halber abgekürzt. Auf den Präfix folgt ein Unterstrich (_) und dann die Bezeichnung des Signals selbst. Der Suffix „_n" bezeichnet ein Active-Low-Signal. Die Signalbezeichnung PIC2M_foo beschreibt beispielsweise das Signal „foo", das von dem programmierbaren Schnittstellenkern (PIC) gesteuert und von einer Master-Vorrichtung empfangen wird.
  • N-Bit-Busbits sind von rechts (0) nach links (N-1) nummeriert. Es sei angemerkt, daß diese Nummerierungsrichtlinie unabhängig von Kompatibilitätsproblemen bei verschiedenen proprietären CPUs nicht die PIC-ISA ändert oder die Software-Kompatibilität der CPU beeinflußt.
  • C. TIMING-RICHTLINIEN
  • Um eine hohe Leistung erzielen zu können, muß das Timing berücksichtigt werden. Fachleute wissen, dass es für eine bestimmte Implementierung einer Struktur häufig ein spezifisches Timing gibt. Daher unterstützen die hier im Sinne von Beispielen angeführten Timing-Bezugswerte zwar das Pipelining der vorliegenden Erfindung, sie betreffen jedoch nicht das Timing aller Strukturen.
  • Als Timing-Informationen können die Begriffe „frühes", „mittleres" und „spätes" verwendet werden. Bei der hier verwendeten Richtlinie eignet sich frühes Timing am besten und spätes Timing am wenigsten.
  • Wenn ein Eingangssignal frühes Timing aufweist, dann steht dem Anwender für das Verarbeiten der Daten ein ganzer Taktzyklus zur Verfügung, bevor er sie zwischenspeichert. Ein frühes Timing für Eingangssignale bedeutet, daß das Signal von einem Registerausgang angesteuert wird. Wenn ein Ausgangssignal frühes Timing aufweist, dann kann der Anwender den ganzen Taktryklus nutzen, bevor er die Daten absendet. Ein frühes Timing für Ausgangssignale bedeutet, daß das Signal den Eingang eines Registers ansteuert.
  • Wenn ein Eingangssignal mittleres Timing aufweist, dann steht dem Anwender für das Verarbeiten der Daten ungefähr ein halber Taktryklus zur Verfügung, bevor er sie zwischenspeichert. Ein mittleres Timing für Eingangssignale bedeutet, daß das Signal von einem Registerausgang durch eine geringe Menge Logik oder Leitwege (Routing) zum Anwender angesteuert wird. Wenn ein Ausgangssignal mittleres Timing aufweist, dann kann der Anwender ungefähr den halben Taktzyklus nutzen, bevor er die Daten absendet. Ein mittleres Timing für Ausgangssignale bedeutet, daß das Signal eine geringe Menge Logik oder Leitwege ansteuert, bevor es am Eingang eines Registers eintrifft.
  • Wenn ein Eingangssignal spätes Timing aufweist, dann steht dem Anwender für das Verarbeiten der Daten ein geringer Bruchteil des Taktryklus zu Verfügung, bevor er sie zwischenspeichert. Ein spätes Timing für Eingangssignale be-deutet, daß das Signal von einem Registerausgang über eine wesentliche Menge Logik und Leitwege angesteuert wird. Somit steht dem Anwender ein kleines Fenster zur Verfügung, in dem er die Daten vor ihrer Benutzung zwischenspeichern kann. Wenn ein Ausgangssignal spätes Timing aufweist, dann kann der Anwender einen geringen Bruchteil des Taktzyklus nutzen, bevor er die Daten absendet. Ein spätes Timing für Ausgangssignale bedeutet, daß das Signal den Eingang eines Registers über eine wesentliche Menge Logik oder Leitwege ansteuert. Somit sollte der Anwender diesen Ausgangswert direkt von einem Register aus ansteuern.
  • Angesichts der oben genannten Probleme kann die spezielle Implementierung die Mittel, die jedes Signal bereitstellt, erklären. Einige Signale benötigen mehr Zeit (z.B. späte Signale), und dies kann nachteilige Auswirkungen auf die Schalthäufigkeit des Systems haben. Um diese Probleme anzugehen, kann Pipelining implementiert werden, das das Timing von Signalen abschwächt. Diese Pipeline-Register bieten die Möglichkeit, das Signal neu zu synchronisieren, so daß es, wenn auch mit einer Latenz, früher in der Taktperiode vorkommt.
  • II. ERKENNEN DER UNTERSCHIEDE ZWISCHEN RESSOURCEN
  • Wenn man eine zentrale Verarbeitungseinheit (CPU) statt in einen ASIC in eine programmierbare Logikvorrichtung (z.B. ein FPGA) integrieren will, muß man die Unterschiede zwischen diesen beiden Vorrichtungsarten kennen.
  • Ein Hauptunterschied zwischen einem FPGA und einem ASIC, der die Leistung beinflussen kann, sind die Logikressourcen. Insbesondere werden die Logikgeneratoren in einem FPGA wie oben beschrieben in der Regel mit Hilfe von Nachschlagetabellen in den CLBs aufgebaut. Somit erfordern eine hohe Eingangsauffächerung oder komplexe kombinatorische logische Funktionen in der Regel mehrere Ebenen von Nachschlagetabellen, wodurch beträchtliche Verzögerungen entstehen. Im Gegensatz dazu kann ein ASIC speziell angepaßte Strukturen für das Ausführen bestimmter logischer Funktionen bieten, wodurch die mehreren Logikebenen eliminiert werden.
  • Ein weiterer Hauptunterschied zwischen einem FPGA und einem ASIC, der die Leistung beinflussen kann, sind die Leitwegressourcen. Und zwar leitet ein FPGA Signale sowohl über programmierbare als auch über fest zugeordnete (beispielsweise Übertragungskettenlogik) Signalflußkanäle. Im Gegensatz dazu bietet ein ASIC speziell angepaßte Signalwege und eliminiert dadurch die Unkosten für die Programmierbarkeit. Um an Geschwindigkeiten heranzukommen, die einem ASIC entsprechen, bräuchte ein FPGA somit dickere Spuren und größere Puffer als die, die in der Regel in einem FPGA bereitgestellt werden. Ein Vergrößern dieser Leitwegressourcen könnte eine Vergrößerung der Siliziumfläche des FPGA erforderlich machen und dadurch dessen Herstellungskosten auf unerwünschte Weise erhöhen.
  • Angesichts der oben beschriebenen Unterschiede können FPGA-Ressourcen, die an eine CPU angekoppelt sind, im Hinblick auf das Erzielen von Leistung und Bandbreite bei einer Hochgeschwindigkeitsstruktur beträchtliche Hindernisse darstellen. Gemäß der vorliegenden Erfindung, und wie nachfolgend ausführlich beschrieben wird, kann der Aufbau des FPGA auf vorteilhafte Weise wirksam eingesetzt werden, um sowohl standardmäßige als auch erweiterte Transaktionen, an denen die CPU beteiligt ist, bereitstellen zu können. Das sich so ergebende System kann derzeitigen ASIC-Systemen nahekommen und sogar über diese hinausgehen, da es statt IC-Technologie Architektur benutzt, um das Problem anzugehen.
  • III. EINGRENZEN VON PLB-FUNKTIONEN
  • Eine typische CPU arbeitet mit einem Satz PLB-Protokolle, wenn sie mit anderen Vorrichtungen kommunizieren will. Ein FPGA mit einem ganzen Satz PLB-Protokolle auszustatten, würde beträchtlich viel Logik erforderlich machen, wodurch sowohl Leistung als auch Fläche negativ beeinflußt werden würden. Deshalb können gemäß eines Merkmals der vorliegenden Erfindung einige der standardmäßigen PLB-Protokolle vorteilhafterweise eliminiert werden, ohne daß die Leistung des FPGA wesentlich beeinflußt wird.
  • Allgemein gesagt eliminiert die vorliegende Erfindung die PLB-Protokolle, die eine komplexe Datenwegmanipulation erfordern. Eine komplexe Datenwegmanipulation verwendet eine beträchtliche Menge an Logik, die über breite Busse und weite Entfernungen verteilt ist. Somit kann eine komplexe Datenwegmanipulation in einem FPGA beträchtliche Ressourcen für sich beanspruchen, während sie nur eine begrenzte Funktionalität für den IP-Anwender hinzufügt.
  • Die vorliegende Erfindung eliminiert auch die PLB-Protokolle, die ein asynchrones Handshaking erfordern. Bei einem asynchronen Handshaking legt ein Signal in der Regel große Entfernungen zurück (d.h. Wege vom Master zum Slave und zurück zum Master) und durchläuft eine beträchtliche Menge Logik, und das alles in einem einzigen Taktzyklus. Somit muß das asynchrone Handshaking, wie auch die komplexe Datenwegmanipulation, beträchtliche Ressourcen für sich in Anspruch nehmen, damit es diese Timing-Aufgabe erfüllen kann.
  • Durch das fehlende Unterstützen diverser standardmäßiger PLB-Protokolle lassen sich verschiedene Vorteile erzielen. Zum ersten kann die vorliegende Erfindung kritische Wege in der Datenlogik wesentlich vereinfachen. Die Vereinfachung der Datenweglogik ist wichtig, da diese breiten Busse im FPGA weite Entfernungen zurücklegen. Anders ausgedrückt läßt sich durch das Verringern der Logik im Datenweg vorteilhafterweise die Signalgeschwindigkeit erhöhen. Zum zweiten kann die vorliegende Erfindung kritische Wege in der Steuerlogik wesentlich vereinfachen, wodurch die Signalgeschwindigkeit weiter erhöht wird. Zum dritten können Transaktionen durch das Entfernen dieser PLB-Protokolle deterministischer werden. Beispielsweise kann Logik in der Regel vereinfacht werden, wenn ein Master für eine bestimmte Transaktion einen kleineren Satz möglicher Antworten von einem Slave erwarten kann. Es ist klar, daß die Logik, je mehr unterschiedliche Antworten oder Aktionen ein Master oder ein Slave aufweisen kann, umso komplexer sein muß, damit sie diese Antworten oder Aktionen unterbringen kann.
  • Es sei angemerkt, daß das Eliminieren von PLB-Protokollen eine direkte Auswirkung auf die Anzahl der PLB-Funktionen hat, die mit der CPU ausgeführt werden können. Die vorliegende Erfindung behandelt dieses Problem jedoch, wie nachfolgend ausführlich beschrieben wird.
  • A. PLB-TEILMENGENFUNKTIONEN
  • Gemäß der vorliegenden Erfindung konzentriert sich eine Teilmenge der in dem FPGA implementierten PLB-Funktionen auf die Arten der Transaktionen, die die CPU in der Regel durchführt, wodurch die Leistung dieses kritischen Bestandteils optimiert wird. Insbesondere erfolgen die meisten Datentransfers auf dem PLB von Vorrichtung zu Speicher oder von Speicher zu Vorrichtung und nicht von Vorrichtung zu Vorrichtung. Somit ist Speicherleistung am PLB sehr gefragt. Es ist wichtig, daß die meisten FPGA-Anwenderspeicherschnittstellen ähnliche Transaktionen ausführen wie die CPU. Folglich kann eine Teilmenge der PLB-Funktionen vorteilhafterweise die unterschiedlichen Transaktionsarten unterstützen, die am wahrscheinlichsten auf dem FPGA auftreten. Eine Analyse hinsichtlich der Integration verschiedener PLB-Funktionen in ein FPGA folgt anschließend.
  • 1. ARBITRIERUNGSSTEUERFUNKTIONEN
  • Adreßdecodier-Funktion: Das Implementieren einer Adreßdecodierung in Slaves bei einem standardmäßigen PLB erfolgt derzeit über einen gemeinsam genutzten Bus (Shared Bus). Bei einem gemeinsam genutzten Bus wird die von einem Master angeforderte Adresse allen Slaves auf dem Bus zugeführt. Die Slaves decodieren die Adresse, und der ausgewählte Slave leitet dann eine Adreßbestätigung zurück an den anfordernden Master. Dieser Prozeß erzeugt leider eine beträchtliche Verzögerung. Daher wird gemäß der vorliegenden Erfindung das Adreßdecodieren verteilt und in einem programmierbaren Schnittstellenkern (Programmable Interface Core = PIC) durchgeführt (Beschreibung siehe 5A5E). Aufgrund des die Transaktion weiterleitenden Charakters dieses Kerns ist dem Slave ein Adreßtreffer (Hit) sicher, wenn ihm eine Transaktion präsentiert wird. Auf diese Weise verringert die vorliegende Erfindung die derzeit in den Slaves bereitgestellte Adreßdecodierlogik beträchtlich, was das Entwickeln und Bauen von Slaves vereinfacht. Es sei angemerkt, daß bei einem Hybridsystem ein zusätzlicher Adreßdecodierer in einem Slave bereitgestellt werden kann, wenn mehrere Slaves einen Bus gemeinsam nutzen. Bei diesem Hybridsystem ist die Anzahl der Slaves, die einen Bus gemeinsam nutzen, relativ gering, wodurch die Adreßdecodierlogik vereinfacht wird.
  • Busfehler- (Adreß- oder Datenfehler-)Funktion: Die Busfehler-Funktion wird sowohl vom standardmäßigen PLB als auch vom PIC der vorliegenden Erfindung unterstützt.
  • Abbruch-Funktion: Die Unterstützung einer Abbruch-Funktion bei einem Transaktionen weiterleitenden System ist schwierig, weil die Transaktion zu einem Slave weitergeleitet werden kann, bevor es überhaupt dazu kommt, daß ein Abbruchsignal überprüft wird. Es sei angemerkt, daß bei einem standardmäßigen PLB eine Transaktion nicht mehr abgebrochen werden kann, wenn ein Slave die Anforderung erst einmal bestätigt hat. Darüber hinaus wäre für das Leiten eines Abbruchbefehls in den PIC zusätzliche Logik notwendig, was negative Auswirkungen auf das Timing des Systems hätte. Daher erzeugen Masters bei der vorliegenden Erfindung in der Regel keine Abbruchsignale.
  • Wenn ein Master ein Abbruchsignal erzeugt, kann er ein Schnittstellenmodul benutzen, das die Anforderung sofort erkennt, sie bestätigt und direkt an den entsprechenden Slave weiterleitet. Dieses Schnittstellenmodul befindet sich auf dem Weg zwischen dem Master und dem Port zum PIC. Somit bleibt die allgemeine Regel, daß Masters keine Abbruchsignale erzeugen, erhalten.
  • Es sei angemerkt, daß das Unterstützen von Abbruchsignalen bei einem System mit Pipelining zu einer gewissen Leistungssteigerung führen kann, wenn sich der Code des Anwenders verzweigt oder unterbrochen wird. Insbesondere können, wenn Abbrüche unterstützt werden und Masters Zeit zum Überprüfen von Abbrüchen bekommen, unnötige Transaktionen frühzeitig abgebrochen werden, wodurch die Ausnutzung der Datenlogik auf vorteilhafte Weise reduziert wird. Sich verzweigender oder unterbrochener Code beseitigt den Informationsbedarf, der vom Master derzeit eingefordert wird. Wenn der Master Transaktionen abbrechen kann, nachdem er festgestellt hat, daß die Daten nicht gebraucht werden, dann erhöht sich die Leistung. Dieser Nutzen kann jedoch durch die Komplexität und die niedrigere Taktfrequenz für den Rest des Systems wieder aufgehoben werden.
  • Priorisierte Arbitrierungsfunktion: Der Aufbau kombinatorischer Logik, die auf der Grundlage einer dynamischen Priorität zwischen Masters arbitriert, würde zahlreiche logische Ebenen erfordern, die die Leistung bei einem FPGA beträchtlich verlangsamen könnten. Daher ist bei einer Ausführungsform der vorliegenden Erfindung eine Arbitrierung im Rundlauf (Round-Robin) oder mit fester Priorität vorgesehen. Bei anderen Ausführungsformen kann eine vom Anwender auszuwählende Arbitrierung bereitgestellt werden.
  • Wiederholungsfunktion: Bei einer Shared-Bus-Architektur wird in der Regel eine Wiederholungsfunktion (manchmal auch als Rearbitrierungsfunktion bezeichnet) benötigt, um zu verhindern, daß sich mehrere Masters gegenseitig blockieren. Gemäß dem PIC der vorliegenden Erfindung können jedoch mehrere Transaktionen gleichzeitig ablaufen, wodurch die Notwendigkeit von Wiederholungen wesentlich verringert oder sogar ganz beseitigt wird. Es sei angemerkt, daß die Implementierung einer Wiederholungsfunktion in einem Transaktionen weiterleitenden System das Leiten von Signalen vom Slave zum Master erforderlich machen würde, was die Komplexität von Logik in dem Arbiter auf unerwünschte Weise erhöht.
  • Es sei angemerkt, daß eine Wiederholungsfunktion in einem Hybridsystem mit einem gemeinsam genutzten Bus bereitgestellt werden kann. Bei einem Hybridsystem könnte der Zugriffsarbiter so modifiziert werden, daß er eine Wiederholungsfunktion aktiviert, wodurch es nicht mehr notwendig wäre, das Wiederholungssignal zum Master zurückzuleiten.
  • Busspen-Funktion: Eine Busspen-Funktion stellt sicher, daß nur ein Master auf einen bestimmten Slave zugreifen kann. Eine Busspen-Funktion kann jedoch die Arbitrierungslogik in dem PIC beeinflussen, die sich auf dem kritischen Timing-Weg befindet. Somit kann die Busspen-Funktion aktiviert werden, wenngleich dies wahrscheinlich auch mit einem gewissen Leistungsverlust einhergeht.
  • Adressen-Pipelining-Funktion: Eine Adressen-Pipelining-Funktion wird sowohl beim standardmäßigen PLB als auch beim PIC der vorliegenden Erfindung unterstützt. Pipelining kann die Systemleistung beträchtlich verbessern, da es den gleichzeitigen Ablauf mehrerer Transaktionen ermöglicht. Es sei darauf hingewiesen, daß eine Code-Verzweigung die Vorteile des Pipelining untergraben kann.
  • Transfersart-Funktion: Zu einer Transferart-Funktion bei einem standardmäßigen PLB kann beispielsweise direkter Speicherzugriff (Direct Memory Access = DMA) und Simultanbetrieb gehören. Im allgemeinen erfordert jede Transferart eine Kombination aus verschiedenen Protokollen. Daher kann das Bereitstellen mehrerer Transferarten ein FPGA-System wesentlich komplexer machen. Gemäß der vorliegenden Erfindung sind Übertragungen auf einfache Speichertransfers (Umspeicherungen) beschränkt, was die Logik und die Komplexität des FPGA vereinfacht.
  • 2. DATENTRANSFERFUNKTIONEN
  • Einzeldatenimpulstransferfunktion: Eine Einzeldatenimpulstransferfunktion, d.h. die Übertragung einer einzelnen Dateneinheit, ist eine Grundoperation der CPU und wird daher von der vorliegenden Erfindung unterstützt. Es sei angemerkt, daß es sich bei dieser Transferfunktion um entweder eine Schreib- oder eine Leseoperation handeln und diese ein beliebiges Bytefreigabemuster enthalten kann. Jede Transaktion wird maximal eine Datenmenge übertragen, die der Größe der Busbreite entspricht. Es sei darauf hingewiesen, daß sich diese Funktion vom Burst-Modus unterscheidet.
  • Burst-von-unbestimmter-Länge-Funktion: Durch das Bereitstellen einer Burst-von-unbestimmter-Länge-Funktion auf Adreß- und Datenwegen mit Pipelining, wie dies bei der vorliegenden Erfindung geschieht, entstehen beträchtliche Leistungsprobleme. Der Master würde beispielsweise einen oder mehrere Zyklen benötigen, um das Ende eines Burst an den angeforderten Slave zu übermitteln. Im Verlauf dieser Zeit könnte der Slave jedoch zu viele Daten senden. Darüber hinaus kann es sich für die Adreßdecodierlogik als schwierig erweisen, rechnerisch zu bestimmen, ob ein Burst von unbestimmter Länge eine Adreßgrenze in dem zugeordneten Zeitraum überschreitet. Deshalb werden Bursts von unbestimmter Länge von der vorliegenden Erfindung nicht unterstützt.
  • Burst-Beenden-Funktion: Ein standardmäßiger PLB erlaubt dem Slave jederzeit, einen Burst von festgelegter Länge abzubrechen. Der Master kann jedoch wieder einen oder mehrere Zyklen benötigen, um dem Slave ein Beenden-Signal zu übermitteln. Im Verlauf dieses Zeitraums könnte der Slave jedoch zu viele Daten senden. Deshalb unterstützt die vorliegende Erfindung die Burst-Beenden-Funktion bei einer Ausführungsform nicht. Stattdessen erfordert die vorliegende Erfindung deterministisches Verhalten, d.h. der Slave schickt die richtige Anzahl Lesebestätigungs- (RdAck) und Schreibbestätigungssignale (WrAck) zurück. Bei einer weiteren Ausführungsform kann der Slave, wenn ein Burst-Beenden-Signal für die Steuerung des Datenflusses verwendet wird, Wartezustände zwischen RdAck- und WrAck-Signale einfügen, um mehr Zeit zur Verfügung zu stellen. Alternativ dazu kann der Slave Lesefehler markieren oder Interrupts erzeugen, wenn ein Problem auftritt.
  • Burst-von-bestimmter-Länge-Funktion: Durch das Bereitstellen eines Burst von bestimmter Länge, d.h. zwischen 2 und 16 Transfers, vereinfacht sich zwar die Struktur des Masters, es ist aber wiederum zusätzliche Logik für den Slave notwendig, damit eine Überschreitung der Adreßgrenze oder Seitengrenze erfaßt werden kann. Deshalb wird diese Funktion bei der vorliegenden Erfindung bei einer Aus führungsform nicht unterstützt, und stattdessen wird für eine Cache-Line-Ausrichtung gesorgt. Bei dieser Ausfuhrungsform kann der PIC Bursts mit festgelegter Länge in Zweierpotenzen durchführen, die auf diese Größe ausgerichtet sind (d.h. einen Cache-Line-Transfer). Bei einer weiteren Ausführungsform wird die Burst-von-bestimmter-Länge-Funktion unterstützt, wobei der Anwender die Adreßkennzeichner definiert und das Master/Slave-IP konstruiert, das diese Kennzeichner unterstützt. Bei einer weiteren Ausführungsform wird die Burst-von-bestimmter-Länge-Funktion forciert als zur Burstlänge ausgerichtete Transfers implementiert, wodurch keine Adreßgrenzenüberprüfungen mehr ausgeführt werden müssen.
  • Burst-Größe-Funktion: Ein Verändern der Burst-Größe erhöht die Komplexität von Datenwegen im Slave. Der Slave müßte insbesondere Datenwege implementieren, um mit jeder beliebigen Anzahl von Datenbreiten umgehen zu können. Bei einer Ausführungsform kann die Burst-Größe auf die Datenwegbreite eingestellt werden.
  • Cache-Line-Transfer-Funktion: Cache-Line-Transfers, d.h. atomare Daten-Bursts von bestimmter Länge und Ausrichtung, vereinfachen die Struktur der Slaves im Hinblick auf Adreß- oder Seitengrenzenausrichtung. Cache-Line-Transfers werden gemäß der vorliegenden Erfindung unterstützt. Bei einer Ausführungsform der vorliegenden Erfindung werden Cache-Line-Transfers von 2, 4, 8, 16 und 32 Datenwörtern bereitgestellt. Es sei darauf hingewiesen, daß diese Größen vorteilhafterweise DDR SDRAM unterstützen.
  • Dynamische Busabmessungsfunktion: Die dynamische Busabmessungsfunktion erfordert Datenspiegelungs- und -lenkungslogik, was die Komplexität des FPGA beträchtlich erhöhen kann. Darüber hinaus müssen sowohl Masters als auch Slaves die Transferbreiten kennen, damit sie ihre interne Logik für die richtige Anzahl Datentransferzyklen einstellen können. Deshalb unterstützt der PIC gemäß der vorliegenden Erfindung keine Masters und Slaves mit unterschiedlichen Breiten. Stattdessen sind die Transferbreiten über das gesamte System hinweg festgelegt, wodurch sich die Komplexität beim FPGA verringert. Bei einer Ausführungsform kann parametrisiertes IP auf 32- oder 64-Bit-Transfers eingestellt werden. Der Auswirkung der dynamischen Busabmessung läßt sich mit Hilfe von Bytefreigabesignalen und Software-Steuerung Rechnung tragen.
  • B. PLB-OBERMENGENFUNKTIONEN
  • Gemäß der vorliegenden Erfindung stellen eine Anzahl implementierter Funktionen Obermengen der standardmäßigen PLB-Funktionen dar. Die vorliegende Erfindung unterstützt beispielsweise Datenwege mit doppelter Datenrate (DDR), wobei der Datenweg mit der doppelten Taktfrequenz des Adreßweges laufen kann. Zusätzlich dazu enthält die vorliegende Erfindung einen dynamischen Schreib-Bytefreigabemechanismus, damit Schreibtransaktionen in der gesamten Verbindungsstruktur optimiert werden können. Insbesondere kann die vorliegende Erfindung für jedes Byte übertragener Schreibdaten ein zusätzliches Bit bereitstellen, so daß jedes Datenbyte selektiv übersprungen werden kann. So kann der dynamische Schreib-Bytefreigabemechanismus auf effiziente Weise Byte-Muster schreiben, wodurch die Systemleistung bei nicht zusammenhängenden Speicherschreiboperationen verbessert wird. Dies ist besonders vorteilhaft bei Systemen, die DMA verwenden. Insbesondere würde eine DMA-Maschine keine komplexe Logik mehr benötigen, um schlecht ausgerichtete Daten sequentiell zu durchlaufen. Stattdessen kann die DMA-Maschine einfach das richtige Bytefreigabemuster bereitstellen, um den Inhalt des Transfers unterzubringen. Des weiteren wird die DMA-Maschine nicht mehr so viele Buszyklen für den Transfer ihrer Daten verbrauchen, wodurch dem System mehr verfügbare Leistung zur Verfügung steht. Und schließlich benutzt der PIC der vorliegenden Erfindung eine Transaktionen weiterleitende Architektur, die Pipelining unterstützt und eine höhere Gesamtleistung des Systems ermöglicht. Diese Obermengenfunktionen erhöhen die IP-Leistung bei dem FPGA beträchtlich.
  • C. SIGNALE: ABBILDEN (MAPPING) VON PLB AUF PIC
  • Um die oben beschriebenen PLB-Funktionen bereitstellen zu können, werden verschiedene Signale zwischen dem PLB und den Masters/Slaves des Systems übertragen. Diese PLB-Signale werden nachfolgend aufgeführt, um das Abbilden (Mapping) auf die vorliegende Erfindung zu zeigen. Tabelle 1 führt beispielsweise verschiedene PLB-Signale aus der Perspektive eines Masters auf, und sie gibt an, ob diese Signale bei einer einfachen CPU benötigt werden und bei einem FPGA mit akzeptabler Leistung implementiert werden können.
  • TABELLE 1
    Figure 00190001
  • Tabelle 2 führt verschiedene PLB-Signale aus der Perspektive eines Slave auf, und sie gibt an, ob diese Signale bei einer einfachen CPU benötigt werden und bei einem FPGA mit akzeptabler Leistung implementiert werden können.
  • TABELLE 2
    Figure 00200001
  • IV. FPGA-IMPLEMENTIERUNG
  • Gemäß einer Ausführungsform der vorliegenden Erfindung sorgt ein programmierbarer Schnittstellenkern (PIC) für die Kommunikation zwischen einer zentralen Verarbeitungseinheit (CPU) und anderen FPGA-internen und FPGA-externen Vorrichtungen. Aufgrund der oben beschriebenen, von der vorliegenden Erfindung bestimmten Teilmenge der PLB-Funktionen kann der PIC zum effizienten Implementieren dieser Funktionen vorteilhafterweise standardmäßige FPGA-Ressourcen benutzen, d.h. Nachschlagetabellen, Multiplexer und Flip-Flops. Die vorliegende Erfindung nutzt sowohl das Pipelining als auch logische Funktionen, die sich problemlos in diesen Ressourcen abbilden lassen.
  • A. ZENTRALE VERARBEITUNGSEINHEIT (CPU)
  • 4 stellt ein FPGA 400 mit einer zentralen Verarbeitungseinheit (CPU) 401 dar, die aus nicht programmierbaren Ressourcen auf dem FPGA 400 gebildet ist. Bei einer Ausführungsform enthält die CPU 401 eine IBM PowerPC 405 CPU. Die Erfindung läßt sich jedoch in gleichem Maße auf jede beliebige CPU anwenden. Darüber hinaus kann die Erfindung mit einer beliebigen Anzahl CPUs verwendet werden. Insbesondere kann die in 4 dargestellte Architektur für jede CPU auf dem FPGA repliziert werden.
  • Bei dieser Ausführungsform kann die CPU 401 direkt mit mehreren chipinternen Speichern, wie beispielsweise dem Block-RAM (BRAM) 408A und 408B, kommunizieren. Da jede CPU ihre eigenen Ports und Verbindungen zu solchen chipinternen Speichern definiert, werden diese Einzelheiten hier nicht mit angeführt.
  • Die CPU 401 ist auch an einen Interrupt-Controller (INTC) 409 gekoppelt, der Markierungen abfängt und priorisiert, die von einer beliebigen Anzahl der peripheren Module, d.h. den Master-Modulen 406 oder den Slave-Modulen 404, an die CPU 401 gesendet werden. Somit kann jedes Slave-Modul 404 oder Master-Modul 406 an den Interrupt-Controller 409 gekoppelt werden (Leitungen sind nicht gezeigt). Diese Markierungen stehen für Ereignisse, die mit den peripheren Modulen in Verbindung stehen und die sofortige Aufmerksamkeit der CPU 401 erfordern. Auf diese Weise wird die CPU 401 von der Durchführung ständiger Überprüfungen der peripheren Module befreit, was sicherstellt, dass die CPU 401 so effizient wie möglich arbeiten kann. Eine Markierung von einem peripheren Modul könnte beispielsweise die CPU 401 darüber in Kenntnis setzen, daß ein Anwender die „Eingabe"-Taste auf einer Tastatur gedrückt hat. Fachleuten ist allgemein bekannt, wie diese Markierungen erzeugt werden, und daher wird dies hier nicht ausführlich beschrieben. Für die Reaktion auf die von einem peripheren Modul erzeugten Interrupts benutzt die CPU 401 den PIC 402 und den OPB 403 (die beide nachfolgend ausführlich beschrieben werden).
  • Es sei angemerkt, daß die CPU 401 eine Struktur enthalten kann, die das Koppeln der fest zugeordneten Pinbelegung der CPU 401 mit der FPGA-Struktur erleichtert. Die vorliegende Erfindung kann mit zahlreichen CPUs mit unterschiedlichem Aufbau arbeiten.
  • Das FPGA 400 enthält des weiteren mehrere (nicht gezeigte) Datenwege, die den Transfer von Daten von mehreren Hochgeschwindigkeitsvorrichtungen 410 sowie von Master/Slave-Modulen 404/406 zur CPU 401 ermöglichen. Daher sollen die in 4 gezeigten Wege Transaktionswege gemäß der vorliegenden Erfindung angeben.
  • B. PROGRAMMIERBARER SCHNITTSTELLENKERN (PROGRAMMABLE INTERFACE CORE = PIC)
  • Gemäß der vorliegenden Erfindung benutzt die CPU 401 für das Bereitstellen von Hochleistungskommunikation mit anderen Vorrichtungen (sowohl auf dem FPGA 400 als auch chipextern) einen programmierbaren Schnittstellenkern (PIC) 402. Der programmierbare Schnittstellenkern 402 wird, wie der Name vermuten läßt, mit Hilfe der von einem FPGA-Software-Tool (siehe FPGA-Software-Tool 306 in 3) erzeugten Konfigurationsbits auf dem FPGA 400 implementiert. Bei einer optimierten Ausführungsform enthält der programmierbare Schnittstellenkern 402 einen Koppelpunkt-Schalter, der es jeder Master-Vorrichtung (wie beispielsweise der CPU 401 oder der Hochgeschwindigkeits-Busschnittstelle (HSBI) 407) gezielt ermöglicht, mit einer beliebigen Slave-Vorrichtung 410 zu kommunizieren. Darüber hinaus kann bei einem Koppelpunkt-Schalter eine weitere Master-Vorrichtung gleichzeitig mit einer weiteren Slave-Vorrichtung kommunizieren, während die erste Transaktion abläuft. Auf diese Weise kann die vorliegende Erfindung eine Hochleistungsschnittstelle zwischen Master-Vorrichtungen und Slave-Vorrichtungen sowohl auf dem FPGA 400 als auch chipextern bereitstellen.
  • Bei der in 4 gezeigten Ausführungsform würde der programmierbare Schnittstellenkern 402 einen 4×4-Koppelpunkt-Schalter mit 4 Eingängen (Master) × 4 Ausgängen (Slave) für das Verbinden der Master-Vorrichtungen mit den Slave-Vorrichtungen verwenden. Insbesondere können die Master-Vorrichtungen die Befehls-Cache-Speichereinheit (Instruction Cache Unit = ICU) der CPU 401, die Daten-Cache-Speichereinheit (Data Cache Unit = DCU) der CPU 401, die Hochgeschwindigkeits-Busschnittstelle (High Speed Bus Interface = HSBI) 407 und ein OPB-Bridge-in-Modul (OPB/BI) enthalten, während Slave-Vorrichtungen eine DDR-SDRAM-Controller-Vorrichtung 410A, einen der chipexternen Speicher 410B410D, einen chipinternen Speicher 410E (bei einer Ausfuhrungsform einen BRAM) und ein OPB-Bridge-out-Modul (OPB/BO) enthalten können. Bei anderen Ausführungsformen mit N Master-Vorrichtungen und M Slave-Vorrichtungen kann der programmierbare Schnittstellenkern 402 als N×M-Koppelpunkt-Schalter konfiguriert sein. Es ist jedoch wichtig, daß die Implementierung eines Koppelpunkt-Schalters aufgrund seiner im Vergleich zu anderen Schalterarten erhöhten Konnektivität sorgfältig evaluiert werden muß, damit verfügbare Ressourcen auf dem FPGA 400 optimiert werden. Diese Evaluierung wird nachfolgend ausführlich beschrieben.
  • 5A stellt einen vereinfachten 4×4-Koppelpunkt-Schalter 500 dar, der als Bestandteil eines programmierbaren Schnittstellenkerns bereitgestellt wird, wobei der Koppelpunkt-Schalter 500 vier Master-Vorrichtungen 501A501D und vier Slave-Vorrichtungen 502A502D gezielt verbindet. Bei einer Ausfuhrungsform kann die Größe des Koppelpunkt-Schalters 400 auf einen 16×16-Schalter erweitert werden. Es sei angemerkt, daß die Logikressourcen in der Regel die Größe des Koppelpunkt-Schalters einschränken, wenngleich auch Leitwegressourcen diese Auswirkung haben können. Somit hängt die maximale Größe des Koppelpunkt-Schalters vom FPGA ab. Bei einer Ausfuhrungsform kann die maximale Größe so berechnet werden, daß sie die Größe N×M und die für die Erzeugung des PIC verwendeten Parameter berücksichtigt. Der Koppelpunkt-Schalter 500 enthält zwei separate Strukturen für die Adreßwege und die Datenwege der Transaktion. Bei einem tatsächlichen FPGA können sich diese Strukturen, die unter Bezugnahme auf die 5B (500A) und 5C (500B) beschrieben werden, auf überlappenden programmierbaren Ressourcen befinden. Bei anderen Ausführungsformen werden die bei der Adreßlogik und der Datenlogik der Transaktion verwendeten Strukturen aus sich nicht überlappenden programmierbaren Ressourcen gebildet.
  • 5B zeigt eine ausführlichere schematische Darstellung einer Implementierung des Koppelpunkt-Schalters in der Adreßlogik (nachfolgend: Koppelpunkt-Schalter 500A). Bei dieser Implementierung enthält der Koppelpunkt-Schalter 500A N Adreßdecodierer 511 (wobei N der Anzahl der Master-Vorrichtungen 501 entspricht) und M Zugriffsarbiter 512 (wobei M der Anzahl der Slave-Vorrichtungen 502 entspricht). Zu den Master-Vorrichtungen 501A501D gehören eine Daten-Cache-Speichereinheit (DCU), eine Befehls-Cache-Speichereinheit (ICU), eine Hochgeschwindigkeits-Busschnittstelle (HSBI) und ein Bridge-in-Modul für den chipinternen peripheren Bus (OPB/BI). Zu den Slave-Vorrichtungen 502A502D gehören eine DDR-Vorrichtung, ein statischer RAM (Static Random Access Memory = SRAM), ein Block-RAM (BRAM) und ein OPB-Bridge-out-Master OPB/BO.
  • Hinsichtlich der OPB/BI- und OPB/BO-Module ist anzumerken, daß, wenn die CPU 401 (4) mit einem Slave-Modul 404 oder einem Master/Slave-Modul 405 (nachfolgend erläutert) kommunizieren muß, ein OPB-Bridge-out-Modul OPB/BO in dem programmierbaren Schnittstellenkern (PIC) 402 den Befehl der CPU zum OPB 403 leitet. Aus der Perspektive des PIC 402 fungiert dieses OPB/BO-Modul jedoch als Slave-Vorrichtung. Andererseits wird, wenn ein Master-Modul 406 oder ein Master/Slave-Modul 405 einen Befehl an die Vorrichtung 410 ausgibt, dieser Befehl von einem Bridge-in-Modul OPB/BI im programmierbaren Schnittstellenkern 402 empfangen. Aus der Perspektive des PIC 402 fungiert das OPB/BI daher scheinbar als Master. Deshalb können OPB/BO und OPB/BI als Brückenmodule in dem programmierbaren Schnittstellenkern 502 bezeichnet werden, die sowohl Master- als auch Slave-Funktionalität aufweisen. OPB/BO und OPB/BI werden unter Bezugnahme auf die 16 und 17 ausführlicher erläutert.
  • Bei dem Koppelpunkt-Schalter 500A empfängt ein Adreßdecodierer 511 eine Adresse von seiner entsprechenden Master-Vorrichtung 501 und decodiert dann die Adresse, um zu ermitteln, auf welche Slave-Vorrichtung 502 die Master-Vorrichtung zugreifen möchte. Nach dem Decodieren leitet der Adreßdecodierer 511 die Adresse an den mit der angeforderten Slave-Vorrichtung 502 verbundenen Zugriffsarbiter 512 weiter. Es sei daran erinnert, daß möglicherweise mehrere Master-Vorrichtungen 501 auf eine Slave-Vorrichtung 502 zugreifen möchten. Deshalb wird der Zugriffsarbiter 512 dazu verwendet, unter den anfordernden Master-Vorrichtungen Prioritäten festzulegen. Zu einigen der bekannten Algorithmen, die von den Zugriffsarbitern 512 verwendet werden könnten, gehören der Rundlauf auf einer Ebene (Single-Level Round Robin), der Rundlauf auf mehreren Ebenen (Multi-Level Round Robin), „am längsten nicht verwendet" (Least Recently Used = LRU) und die auf der Priorität basierenden Ansätze (nachfolgend unter Bezugnahme auf den OPB-Busarbiter 503A ausführlicher erläutert). Es sei angemerkt, daß zusätzliche Informationen von der Master-Vorrichtung 501, einschließlich der Information, ob es sich bei der Transaktion um eine Lese- oder eine Schreiboperation handelt, und der Größe des Datentransfers, gemeinsam mit der decodierten Adresse zu der Slave-Vorrichtung 502 übertragen werden.
  • Die Verwendung des Adreßdecodierers 511 und des Zugriffsarbiters 512 bei dem Koppelpunkt-Schalter 500A ermöglicht es den Master-Vorrichtungen 501, mit einer weiteren Transaktion zu beginnen, bevor die vorangehende Transaktion abgeschlossen worden ist. Anders ausgedrückt kann der Adreßdecodierer 511, wenn die decodierte Adresse einem Zugriffsarbiter 512 zugeführt worden ist, mit dem Decodieren der nächsten Adresse beginnen. Diese Art Prozeß wird als „Transaktionsweiterleitung" bezeichnet. Die vorliegende Erfindung verwendet die Transaktionsweiterleitung auf vorteilhafte Weise dazu, die Leistung des Koppelpunkt-Schalters zu erhöhen.
  • Bei einer Ausführungsform der vorliegenden Erfindung kann dieses Transaktionsweiterleitungsmerkmal noch erweitert werden, wenn mehrere Register 513 (zum Zwecke der Übersichtlichkeit ist nur eines beschriftet) in die Adreßlogik aufgenommen werden. In 5B können diese Register vor den Adreßdecodierern 511, hinter den Adreßdecodierern 511 und vor den Zugriffsarbitern 512 und/oder hinter den Zugriffsarbitern 512 und vor den Slave-Vorrichtungen 502 angeordnet werden. Es sei angemerkt, daß sich zusätzliche Register an beliebiger Stelle in der Adreßlogik befinden können (jeder Adreßweg sollte jedoch ein Register an der gleichen Stelle haben, damit ein einheitliches Timing auf den Adreß/Steuerwegen sichergestellt werden kann). Bei der vorliegenden Erfindung können diese Register 513 für das Pipelining für die Adreß- und Steuerinformationen sorgen, was es dem anfordernden Master ermöglicht, eine weitere Transaktion auszulösen, während die andere Transaktion noch verarbeitet wird. Daher kann das Pipelining der vorliegenden Erfindung auf diese Weise die Adreß/Steuer-Gesamtbandbreite des Systems erhöhen, wodurch sich die Geschwin-digkeit der Adreßlogik für mehrfache Transaktionen erhöht.
  • Wenn ein Zugriffsarbiter 512 feststellt, daß eine bestimmte Slave-Vorrichtung 502 für eine Transaktion verfügbar ist, kommuniziert er mit Strukturen in der Datenlogik, damit die entsprechenden Verbindungen hergestellt werden, wie unter Bezugnahme auf 5C beschrieben wird. 5C zeigt eine ausführlichere schematische Darstellung einer Implementierung des Koppelpunkt-Schalters für die Datenlogik (nachfolgend: Koppelpunkt-Schalter 500B). Bei dieser Implementierung enthält der Koppelpunkt-Schalter 500B N Schreibmultiplexer 514 (wobei N der Anzahl der Slave-Vorrichtungen 502 entspricht, in die bei einer Schreiboperation geschrieben werden kann) und M Lesemultiplexer 515 (wobei M der Anzahl der Master-Vorrichtungen 501 entspricht, die bei einer Leseoperation Daten empfangen können). Die Multiplexer 514A514D und 515A515D werden von Zugriffsarbitern 512A512D gesteuert (5B).
  • Ähnlich wie die Adreßlogik kann der Koppelpunkt-Schalter 500B Pipelining aufweisen, für das die Register 513 sorgen. Bei einer Ausführungsform befinden sich diese Register 513 zwischen den Master-Vorrichtungen 501 und den Schreibmultiplexern 514 und zwischen den Slave-Vorrichtungen 502 und den Lesemultiplexern 515. Es sei angemerkt, daß sich zusätzliche Register an beliebiger Stelle in der Datenlogik befinden können. Es sollte jedoch jeder Datenweg an der gleichen Stelle ein Register haben, damit ein einheitliches Timing auf den Datenwegen sichergestellt werden kann. Bei der vorliegenden Erfindung können diese Register 513 für das Pipelining für die übertragenen Daten sorgen, was es entweder dem anfordernden Master oder dem Slave, auf den zugegriffen wird, ermöglicht, eine weitere Lese- oder Schreibtransaktion auszulösen, während die andere Lese- oder Schreibtransaktion noch verarbeitet wird. Daher kann das Pipelining der vorliegenden Erfindung auf diese Weise ebenso die Daten-Gesamtbandbreite des Systems erhöhen, wodurch sich der Durchsatz der Datenlogik für mehrfache Transaktionen erhöht.
  • Die vorliegende Erfindung kann wie oben beschrieben vorteilhafterweise sowohl bei der Adreßals auch bei der Datenlogik Transaktionsweiterleitung verwenden. Pipelining ermöglicht eine Optimierung der Transaktionsweiterleitung. Insbesondere können Pipeline-Register, da eine Master-Vorrichtung nicht direkt mit einer Slave-Vorrichtung kommuniziert, an mehreren Stellen in der Adreß/Datenlogik bereitgestellt werden. Wenn eine Master-Vorrichtung eine Adresse abgesendet und von dem Slave eine Bestätigung empfangen hat, könnte die Master-Vorrichtung somit den Rest der Informationen (sowohl Steuer- als auch Dateninformationen), die mit dieser Transaktion verbunden sind, über eine Leitung leiten (Pipelining). Das Pipelining hilft dadurch, daß der Master, wenn die Datenbestätigungssignale vom Slave erst einmal bei ihm eingegangen sind, die Daten zuführen kann, ohne darauf warten zu müssen, daß der Slave die Daten tatsächlich empfangen hat. Die Master-Vorrichtung kann zu diesem Zeitpunkt eine weitere Transaktion auslösen. Das Ausmaß des Pipelining bestimmt die Anzahl der Transaktionen, die gleichzeitig aktiv sein können.
  • Es sei angemerkt, dass bei der Gesamtleistung des Systems auch die Latenz (d.h. die Verzögerung, die mit diesem Pipelining verbunden ist) mit berücksichtigt werden muß. Bei einer Ausführungsform können die Register beispielsweise mit Hilfe von Flip-Flops implementiert werden, die ein Taktsignal benötigen. Dieses Taktsignal kann auf der Grundlage der Zeit eingestellt werden, die die Adreßdecodierer und die Zugriffsarbiter für das Ausführen ihrer jeweiligen Funktionen benötigen. Es sei angemerkt, daß Pipelining in unmittelbarem Zusammenhang mit der Frequenz steht. Das heißt, je mehr Pipelining, desto höher ist die bereitgestellte Frequenz. Das Erhöhen der Frequenz erhöht allerdings auch auf unerwünschte Weise die Latenz. Wie nachfolgend noch ausführlicher beschrieben wird, findet die vorliegende Erfindung folglich einen Mittelweg zwischen Band-breite (wie sie durch das Pipelining bereitgestellt wird) und Latenz.
  • Ein weiterer Vorteil besteht darin, daß die vorliegende Erfindung die in jeder Slave-Vorrichtung bereitgestellte Logik beträchtlich verringern kann. Insbesondere können Slave-Vorrichtungen, die in Verbindung mit der vorliegenden Erfindung mit Master-Vorrichtungen kommunizieren, die für das Decodieren von Adressen benötigten komplexen Schaltungen eliminieren. Folglich vereinfacht die vorliegende Erfindung die Aufgabe des Konstruierens, Implementierens und Herstellens von Slave-Vorrichtungen.
  • Im Gegensatz dazu würde eine Master-Vorrichtung in einem System mit gemeinsam genutztem Bus eine Adresse an alle Slave-Vorrichtungen senden. Bei diesem System würde somit jede Slave-Vorrichtung die Logik für das Decodieren der Adresse und das Ermitteln, ob die Adresse zu dieser Slave-Vorrichtung gehört, enthalten. Wenn die Adresse decodiert worden ist, würde die entsprechende Slave-Vorrichtung ein Signal an die Master-Vorrichtung zurücksenden, die wiederum den Rest der die Transaktion betreffenden Informationen an die identifizierte Slave-Vorrichtung sendet.
  • Wie sich der obigen Beschreibung entnehmen läßt, kann ein System mit gemeinsam genutztem Bus das Ausmaß des Pipelining, das in diesem System enthalten sein kann, in wesentlichem Maße einschränken. Wenn beispielsweise eine Master-Vorrichtung die Adresse abgesendet hat, müssen alle Slave-Vorrichtungen die Adresse decodieren, was andere, nicht vorgesehene Slave-Vorrichtungen davon abhält, mit anderen Transaktionen mit anderen Master-Vorrichtungen fortzufahren. Das Shared-Bus-System aus dem Stand der Technik stellt daher natürlich eine geringere Leistung zur Verfügung als der Koppelpunkt-Schalter der vorliegenden Erfindung. Es sei angemerkt, daß bei einem (nachfolgend beschriebenen) Hybridsystem die Anzahl der Slaves auf einem gemeinsam genutzten Bus beschränkt sein kann. Auf diese Weise läßt sich die Zeit für das Senden einer Adresse und das Warten auf eine Antwort von den Slaves auf ein Minimum beschränken. Anders ausgedrückt können die Vorrichtungen, die eine große Bandbreite benötigen, durch diejenigen ausgeglichen werden, die die zusätzlichen Latenzen aushalten, die eine Konfiguration mit gemeinsam genutztem Bus mit sich bringt, wodurch ein bestimmtes System optimiert wird.
  • Das Konfigurieren eines Koppelpunkt-Schalters in dem FPGA als Schaltstruktur der vorliegenden Erfindung bietet verschiedene Vorteile. Zum einen sperrt der Koppelpunkt-Schalter nicht, wodurch er für einen Eingabewert einen unverstellten Weg zum Ausgang sicherstellt. Dieser Aspekt ist bei der Pipelining-Architektur der vorliegenden Erfindung besonders vorteilhaft. Zum anderen ermöglicht der mit Hilfe von FPGA-Ressourcen implementierte Koppelpunkt-Schalter ein schnelles gezieltes Ändern einer Verbindung. Es sei angemerkt, daß das Ändern einer solchen Verbindung, und folglich das Ändern eines Weges, die Verbindungen für keinen der anderen Wege beeinflußt. Und drittens kann der Koppelpunkt-Schalter programmierbar getrimmt werden, um die auf dem FPGA verwendeten Ressourcen auf ein Minimum zu reduzieren.
  • 5D stellt beispielsweise eine Ausführungsform des Koppelpunkt-Schalters 500A dar, bei der die Adreß/Steuerlogik getrimmt ist. Bei dieser Ausführungsform hat der Anwender festgelegt, daß ein Teil der Adreß/Steuerlogik nicht benutzt wird. Es sei angemerkt, daß Software dem Anwender dabei helfen kann anzugeben, welche Logik getrimmt werden kann. Der Anwender muß jedoch in der Regel die Grundparameter bereitstellen, damit die Software eine solche Festlegung treffen kann. Die vorliegende Erfindung eliminiert die ungenutzte Logik, so daß die mit dieser Logik verbundenen Ressourcen für andere Bestandteile der Struktur des Anwenders verwendet werden können. Alternativ dazu kann die Struktur des Anwenders selbst dann verkleinert werden, wenn ihre anderen Bestandteile nicht die getrimmte Logik verwenden, wobei eventuell sogar ein kleineres FPGA verwendet werden kann oder bei einem FPGA mit der gleichen Größe mehr Masters beziehungsweise Slaves implementiert werden können. In 5D wird die folgende Adreß/Steuerlogik eliminiert: ICU zu OPB/BO, HSBI zu BRAM, HSBI zu OPB/BO, OPB/BI zu BRAM und OPB/BI zu OPB/BO.
  • 5E stellt als weiteres Beispiel eine Ausführungsform des Koppelpunkt-Schalters 500B dar, bei der die Datenlogik getrimmt ist. Bei dieser Ausführungsform hat der Anwender festgelegt, daß ein Teil der Datenlogik nicht benutzt wird. Die vorliegende Erfindung kann die ungenutzte Logik vorteilhafterweise eliminieren. In 5E wird die folgende Schreibdatenlogik eliminiert: HSBI zu BRAM und OPB/BO, ICU zu jeder Slave-Vorrichtung (d.h. die ICU ist eine schreibgeschützte Vorrichtung) und OPB/BI zu BRAM und OPB/BO. Außerdem wird bei dieser Ausführungsform auch die folgende Leselogik eliminiert: BRAM zu HSBI und OPB/BI sowie OPB/BO zu HSBI und OPB/BI.
  • Gemäß der vorliegenden Erfindung kann das Trimmen von Wegen (und damit verbundener Logik) die restlichen Schaltungen vereinfachen. In 5E haben beispielsweise die Schreibmultiplexer 514C und 514D jeweils nur einen Eingang. Somit könnten diese Multiplexer beispielsweise als einfache Durchgangstransistoren implementiert werden. Andere Multiplexer, wie beispielsweise die Lesemultiplexer 515C und 515D, ließen sich ebenfalls vereinfachen. Das Vereinfachen von Logik kann die Geschwindigkeit und andere Leistungsparameter des Systems verbessern. Folglich kann die Möglichkeit, programmierbare Ressourcen gemäß der vorliegenden Erfindung zu trimmen, zu beträchtlichen Verbesserungen bei der Leistung und der Fläche des FPGA führen.
  • Bei einer Ausführungsform der Erfindung ist der Koppelpunkt-Schalter 500A/500B so ausgelegt, dass die Adreß/Steuerlogik mit CLK und die Datenlogik mit CLK2X läuft. Insbesondere kann ein Zugriffsarbiter 512, wenn er feststellt, daß eine Slave-Vorrichtung 502 für eine Transaktion zur Verfügung steht, die notwendige Logik für diese Transaktion erzeugen, indem er den entsprechenden Schreibmultiplexer 514 oder Lesemultiplexer 515 steuert. Somit kann die Schreib- beziehungsweise die Leseoperation an dieser Stelle ohne weitere Verzögerung stattfinden, da keine zusätzliche Logik oder Wegübergänge nötig sind. Daher kann bei einer Ausführungsform die Adreß/Steuerlogik mit 133 MHz und die Datenlogik mit 266 MHz laufen.
  • Es ist wichtig, daß der Steuerweg bei einem Dual-Clock-System mit der Hälfte der nominalen Datentaktfrequenz arbeitet und so diesem Weg bevorzugt Zeit zur Verfügung gestellt wird, damit er seine Aufgabe erfüllen kann. Des weiteren ist aufgrund des Verhältnisses von 1/2:1 die Datenlatenz beträchtlich reduziert, und die Frequenz der Datenübernagungen kann erhöht werden.
  • Es sei angemerkt, daß der Koppelpunkt-Schalter 500A/500B zusätzliche Leitungen enthalten kann, die der Übertragung eines oder mehrerer bestimmter Signale zu einer Master-Vorrichtung 501 dienen. Diese zusätzlichen Leitungen könnten unter anderem ein Bestätigungssignal übertragen. Bei einer Ausführungsform kann die Transaktionsweiterleitung beispielsweise durch ein Bestätigungssignal ausgelöst werden, das der anfordernden Master-Vorrichtung 501 von einem Zugriffsarbiter 512 zugeführt wird. Das Pipelining der Steuersignale und -daten wird insbesondere ausgelöst, nachdem die anfordernde Master-Vorrichtung 501 das Bestätigungssignal empfangen hat.
  • C. MASTER- & SLAVE-MODULE
  • Gemäß der vorliegenden Erfindung können sowohl Master-Module 406 als auch Slave-Module 404, die bei Systemen des Standes der Technik in der Regel als periphere Vorrichtungen vorliegen, entweder als Teil der Anwenderstruktur auf oberster Ebene oder als Kerne auf dem FPGA angeordnet werden. Bei einer Ausführungsform der vorliegenden Erfindung kann das FPGA 400 ein Hybridmodul 405 enthalten, das sowohl als Master als auch als Slave fungiert. Im speziellen kann das Master/Slave-Hybridmodul 405 Transaktionen auslösen und zu bestimmten Zeiten die Steuerung eines chipinternen peripheren Busses (OPB) 403 übernehmen, und zu anderen Zeiten kann es Transaktionen akzeptieren und dem OPB 403 Daten zuführen. Bei einer Netzwerkanwendung beispielsweise kann das Hybridmodul 405, wenn es als Slave ein Datenpaket empfängt, das Paket mit Hilfe von DMA (Direct Memory Access = direkter Speicherzugriff) als Master in den Speicher weiterleiten. Bei einer weiteren Ausführungsform ist die Master-Funktionalität in das Slave-Modul integriert.
  • Da die vorliegende Erfindung eine Parametrisierung vereinfacht, kann die Anzahl der Master- und der Slave-Module vorteilhafterweise sogar dynamisch geändert werden. Folglich verwendet die vorliegende Erfindung nur die Ressourcen auf dem FPGA, die für die Implementierung der Struktur des Anwenders benötigt werden.
  • D. CHIPINTERNER PERIPHERER BUS (OPB)
  • Gemäß der vorliegenden Erfindung enthält der chipinterne periphere Bus (On-chip Peripheral Bus = OPB) 403 eine Verbindungsinfrastruktur, die die Kommunikation zwischen dem programmierbaren Schnittstellenkern 402 und den Modulen 404/406 vereinfacht. Der OPB 403 benutzt eine Shared-Bus-Architektur, die mehrere periphere Vorrichtungen mit geringerer Leistung unterstützt; d.h. die Module 404/406. Diese Module 404/406 könnten beispielsweise serielle Anschlüsse und Ethernet-Verbindungen verwenden. Bei einer Ausfuhrungsform können die Module 404/406 der OPB-Spezifikation IBM CoreConnectTM entsprechen.
  • Es ist wichtig, daß der OPB 403 aus den programmierbaren Leitwegressourcen gebildet werden kann, die auf dem FPGA 400 bereitgestellt werden. Insbesondere können die Leitungen des Busses aus den programmierbaren Leitwegressourcen gebildet werden, während die Schaltlogik aus den programmierbaren Ressourcen in den CLBs gebildet werden kann. Auf diese Weise kann der OPB 403 überall auf dem FPGA 400 positioniert werden. Darüber hinaus kann der OPB 403 so konfiguriert werden, daß er eine beliebige Anzahl Module 404/406 aufnehmen kann. Anders ausgedrückt stellt die vorliegende Erfindung sicher, daß, wenn der Anwender nur drei Master-Module 406 und ein Slave-Modul 404 auf dem FPGA 400 anordnet, nur Ports für diese vier Module erzeugt werden. Somit ist der OPB 403 gemäß der vorliegenden Erfindung vollständig parametrisierbar.
  • Der OPB 403 enthält Schaltlogik, die es einem einzelnen Master-Modul 406 ermöglicht, mit einem Slave-Modul 404 oder einem Master/Slave 405 zu kommunizieren. Insbesondere müssen aufgrund der Shared-Bus-Architektur andere Master-Module 406 oder der Master/Slave 405 bei jeder aktiven Transaktion warten, bis sie ihre Transaktionen mit ihren entsprechenden Slave-Modulen 404 beginnen können. Ein OPB-Arbiter 403A ordnet diesen Transaktionen Prioritäten zu.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung ist der OPB-Arbiter 403A ein Kern, der so konfiguriert werden kann, daß er eine beliebige Art Arbitrierungsverfahren bereitstellt, und sogar so konfiguriert werden kann, daß er sich dynamisch ändert, wenn sich das FPGA 400 in Betrieb befindet. Es sei angemerkt, daß der OPB-Arbiter 403A wie der OPB 403 vollständig parametrisierbar ist. Daher verwendet der OPB-Arbiter 403A nur die programmierbaren Ressourcen auf dem FPGA 400, die für die Arbitrierung einer vom Anwender bestimmten Anzahl Master-Module 406 benötigt wird. Im allgemeinen verwendet der OPB-Arbiter 403A einen vorgegebenen Algorithmus, um festzulegen, welches Master-Modul 406 die Steuerung des OPB 403 übernehmen kann und für wie lange.
  • Die Arbitrierung muß die konkurrierenden Ziele Fairness und Priorität miteinander vereinen. Fairness erfordert, daß kein Master-Modul 406 den OPB 403 für sich allein beanspruchen darf. Priorität erfordert jedoch, daß unter bestimmten Umständen vorgegebene Master-Module 406 den OPB 403 häufiger benutzen müssen, um zeitkritische Ziele erreichen zu können. Zu einigen typischen Algorithmen, die von dem OPB-Arbiter 403A benutzt werden können, gehören der Rundlauf auf einer Ebene (Single-Level Round Robin), der Rundlauf auf mehreren Ebenen (Multi-Level Round Robin), „am längsten nicht verwendet" (Least Recently Used = LRU) und die auf der Priorität basierenden Ansätze.
  • Beim Rundlauf auf einer Ebene (Single-Level Round Robin) wird eine kleine Zeiteinheit, d.h. ein Quantum, definiert. Alle (mit bestimmten Masters 306 verbundenen) Transaktionen werden in eine zirkuläre Warteschlange gestellt. Der OPB-Arbiter 403A folgt der Warteschlange und vergibt die Verwendung des OPB 403 durch das Master-Modul, damit die Transaktion für einen Zeitraum von einem Quantum erfolgen kann. Eine neue Transaktion würde dann nach der letzten Transaktion in der Warteschlange hinzugefügt werden.
  • Wenn die Transaktion vor dem Ende des Quantums endet, gibt das Master-Modul 406 den OPB 403 frei. Wenn die Transaktion am Ende des Quantums jedoch immer noch läuft, wäre das Master-Modul 406 vorbelegt, und die Transaktion würde zum Ende der Warteschlange hinzugefügt. Es sei angemerkt, daß das Master-Modul 406 bei einer anderen Ausführungsform seine Transaktion vollenden darf. Dann kann ein OPB-Arbiter 403A den OPB 403 der nächsten Transaktion in der Warteschlange zuordnen.
  • Beim Rundlauf auf mehreren Ebenen (Multi-Level Round Robin) werden mindestens zwei zirkuläre Warteschlangen gebildet. Wenn man beispielsweise davon ausgeht, daß eine erste und eine zweite Warteschlange gebildet worden sind, so würden Transaktionen, die den OPB 403 häufig benutzen, in die erste Warteschlange aufgenommen und Transaktionen, die den OPB 403 weniger häufig benutzen, in die zweite Warteschlange. Transaktionen in der zweiten Warteschlange hätten dann, wenn sie sich in der gleichen Warteschlange befinden, gleichberechtigt Zugriff auf den OPB 403. Die Transaktionen in der zweiten Warteschlange hätten jedoch als Gruppe gleichberechtigt Zugriff auf den OPB 403 wie jede Transaktion in der ersten Warteschlange. Anders ausgedrückt bilden die Transaktionen der zweiten Warteschlange effektiv eine „Super-Transaktion", die als den Transaktionen in der ersten Warteschlange gleichwertig betrachtet wird. Somit würde für jede Runde der Transaktionen in der ersten Warteschlange eine Transaktion in der zweiten Warteschlange ausgeführt. Bei dieser Herangehensweise würde das Master-Modul 406, wenn die Transaktion vor dem Ende des Quantums endet, den OPB 403 freigeben. Wenn die Transaktion am Ende des Quantums jedoch immer noch läuft, wäre das Master-Modul 406 vorbelegt, und die Transaktion würde zum Ende der entsprechenden Warteschlange hinzugefügt.
  • Bei dem Least-Recently-Used-Ansatz (LRU; am längsten nicht verwendet) wird eine beliebige Warteschlange gebildet. Der OPB-Arbiter 403A würde zunächst der Warteschlange folgen und jede Transaktion zum Ende kommen lassen, bevor er dem nächsten Master-Modul 406 in der Warteschlange die Steuerung des OPB 403 überläßt. Wenn der OPB-Arbiter 403A jedoch von einem Master-Modul 406 eine Anforderung für die Bussteuerung empfängt, das in der Warteschlange nicht an der nächsten Stelle steht, dann würde er die Steuerung des OPB 403 (nach Beendigung der laufenden Transaktion) an das Master-Modul 406 übergeben, das den OPB 403 am längsten nicht verwendet hat.
  • Bei einem Ansatz auf Prioritätsbasis schließlich würde der OPB-Arbiter 403A die Bussteuerung ausschließlich auf der Grundlage der Priorität der damit verbundenen Transaktion festlegen, die von dem Master-Modul 406 ausgeführt wird. Bei diesem Ansatz würde jede Transaktion mit höherer Priorität abgeschlossen werden, bevor die Transaktionen mit niedrigerer Priorität ausgelöst werden dürften. Bei einer Ausführungsform enthält der Ansatz auf Prioritätsbasis das Erteilen von Priorität für den Master im FPGA mit dem größten Einfluß auf die Leistung.
  • E. HOCHGESCHWINDIGKEITS-BUSSCHNITTSTELLE
  • Gemäß einer Ausführungsform der vorliegenden Erfindung enthält das FPGA 400 eine Hochgeschwindigkeits-Busschnittstelle (HSBI) 407, die über die Busse 407A und 407B große Datenmengen zwischen dem programmierbaren Schnittstellenkern 402 und einer (nicht gezeigten) chipexternen Vorrichtung übertragen kann. Beispielhafte chipexterne Vorrichtungen könnten Gigabit I/O, Rapid I/O, PCI-X oder andere bekannte Hochleistungsprotokolle verwenden, um mit der Schnittstelle 407 zu kommunizieren. Diese Schnittstelle 407 kann in Form eines Kerns bereitgestellt werden. Es sei angemerkt, daß die übertragenen Daten von oder zu chipexternem Speicher (wie beispielsweise einem Flash-Speicher, einem SRAM und/oder einer anderen Art Speicher) oder chipinternem Speicher (wie beispielsweise BRAM) übertragen werden können.
  • Bei einer Ausführungsform kann die HSBI 407 für nicht datenbezogenen Transport von den Bussen 407C angesteuert werden. Diese Busse ermöglichen der CPU 401 oder anderen Bus-Masters einen lokalisierten Zugriff auf den internen Registersatz der HSBI 407. Beispielsweise kann die HSBI 407 einen Interrupt für den INTC 409 erzeugt haben, um anzuzeigen, daß sie ein Datenpaket empfangen und dessen Übertragung an eine externe DDR-Speichervorrichtung beendet hat. Die CPU 401 könnte beim Antworten auf den Interrupt den Bus 407A dazu verwenden, mit der HSBI 407 zu kommunizieren und herauszufinden, worum es bei ihrer Dienstanforderung ging. Der Vorgang der Benutzung von Bus 407A bedeutet jedoch, daß laufende Datentransportoperationen unterbrochen werden müßten. Dementsprechend gibt es bei einer Ausführungsform sowohl für Master- als auch für Slave-Operationen zum OPB 403 einen Satz tertiärer Busse 407C. Mit Hilfe des Busses 407C kann die CPU 401 mit der HSBI 407 kommunizieren, ohne daß sich dies auf den Datentransport auf Bus 407A auswirkt. Des weiteren braucht die HSBI 407, wenn sie Daten zu der Vorrichtung 404C transportieren will, nicht erst auf den PIC 402 zuzugreifen und/oder diese Daten im Speicher zu speichern. Stattdessen könnte die HSBI 407 eine Transaktion auf dem OPB 403 auslösen und die Daten direkt übertragen, wodurch die Daten nicht mehr zweimal zwischengespeichert werden müssen und zu beträchtlichen Leistungsverbesserungen im gesamten System beigetragen wird.
  • V. FPGA-IMPLEMENTIERUNG: EINZELHEITEN
  • A. PIC & VORRICHTUNGEN: PORTS, TIMING & AUSFÜHRUNGSFORM
  • Master-Vorrichtungen und Slave-Vorrichtungen verwenden eine generische Schnittstelle, die einen stärker modular geprägten Aufbau ermöglicht. Insbesondere benutzen diese Module generische Ports (nachfolgend ausführlich erläutert), die in den programmierbaren Schnittstellenkern „eingesteckt" werden können. Bei der hier angeführten Beschreibung gehört zu dem Begriff „Ports" eine Gruppe Signale, die zwischen den Master/Slave-Vorrichtungen und dem programmierbaren Schnittstellenkern bereitgestellt werden. Aufgrund dieser generischen Ports kann eine beliebige Anzahl Master-Vorrichtungen und Slave-Vorrichtungen in beliebiger Kombination in die vorliegende Erfindung einbezogen werden. Bei einer Ausführungsform sind N Master-Vorrichtungen und M Slave-Vorrichtungen an den programmierbaren Schnittstellenkern gekoppelt, wobei N und M ganze Zahlen (in manchen Fällen die gleiche ganze Zahl) gleich oder größer als Eins sind.
  • Es sei darauf hingewiesen, daß sich die vorliegende Erfindung der Bedeutung der Ausgewogenheit zwischen komplexen Protokollen, die mehr Funktionen bereitstellen, und einfachen Protokollen, die schneller laufen können, bewußt ist. Bei der hier ausführlich beschriebenen Ausführungsform wird ein relativ einfaches Protokoll verwendet, wodurch trotzdem die meisten Aufgaben erfüllt werden, das aber auch sehr schnell läuft.
  • 1. KOMMUNIKATION ZWISCHEN MASTER-VORRICHTUNG UND PIC
  • 6 stellt typische Signale dar, die zwischen einer beliebigen Master-Vorrichtung und dem programmierbaren Schnittstellenkern übertragen werden können. Um diesen Transfer zu vereinfachen, enthält die Master-Vorrichtung eine Schnittstelle 600A mit Adreß-Ports 601A, Schreibdaten-Ports 602A und Lesedaten-Ports 603A. Bei einer ähnlichen Konfiguration enthält der programmierbare Schnittstellenkern eine PIC-Schnittstelle 600B mit Adreß-Ports 601B, Schreibdaten-Ports 602B und Lesedaten-Ports 603B. Bei einer Ausfuhrungsform weist jedes zwischen Ports übertragene Signal (oder jede Gruppe von Signalen) eine damit verbundene Leitung/einen damit verbundenen Bus auf, was die effiziente Übertragung dieses Signals erleichtert. Es sei angemerkt, daß sich die Bezeichnung des Signals bei der hier angeführten Beschreibung auch auf die damit verbundene Leitung/den damit verbundenen Bus beziehen kann. Gemäß der nachfolgend beschriebenen Ausführungsform unterliegen standardmäßige PLB-Protokolle zwar Einschränkungen und bieten dadurch weniger Funktionen, das FPGA kann durch sie jedoch wesentlich schneller laufen.
  • a. ADRESS-PORTS FÜR MASTERS
  • Die Adreß-Ports 601A können die folgenden Signale ausgeben.
  • M2PIC_AddrReq
  • Diese Statusmeldung gibt an, daß der Master einen Datentransfer anfordern möchte. Es sei angemerkt, daß andere Signale, insbesondere M2PIC_Addr[31:0], M2PIC_AddrQual und M2PIC_RdWr_n, ebenfalls gelten müssen, wenn M2PIC_AddrReq aktiv ist. Bei einer Ausfuhrungsform der vorliegenden Erfindung gibt ein Logisch-Eins-Signal (1) an, daß eine Anforderung ansteht, während ein Logisch-Null-Signal (0) angibt, daß keine Anforderung ansteht. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • M2PIC_Addr[0:31]
  • Dieses 32-Bit-Signal gibt die Adresse des angeforderten Transfers an, d.h. das spezifische Byte im Speicherraum. Wie oben erläutert muß dieses Signal im gleichen Zyklus gelten, in dem M2PIC_AddrReq gilt. Dieser Bus befindet sich auf dem kritischen Weg, da er die Adreßdecodierer für den programmierbaren Schnittstellenkern versorgt (siehe beispielsweise Adreßdecodierer 511 in 5B). Somit werden bei einer Ausführungsform tatsächlich nur die oberen Bits verglichen, so daß die unteren Bits wie bei mittlerem Timing behandelt werden können. Die oberen Bits geben insbesondere die Adresse des Slave an, während die unteren Bits den beabsichtigten Speicher im Slave angeben. Da das Angeben des Slave bei der vorliegenden Erfindung der Arbitrierung vorausgeht (siehe beispielsweise Zugriffsarbiter 512 in 5B) und zu jeder Zeit nur eine Transaktion in einem Slave aktiv sein kann, sollte das Lesen der oberen Bits als spätes Timing charakterisiert werden, während die tatsächliche Speicherstelle im Slave als mittleres Timing charakterisiert werden kann.
  • Es sei angemerkt, daß der angeforderte Datentransfer vorzugsweise bezüglich der Größe des Transfers adreßausgerichtet ist. Bei einer Übertragung von 8 Datenwörtern sollte sich beispielsweise die Adresse auf einer 8-Datenwörter-Grenze befinden. Anders ausgedrückt könnte eine Übertragung von zwei Datenwörtern bei der logischen Adresse 0, 2, 4 usw. beginnen, während eine Übertragung von 4 Datenwörtern bei einer logischen Adresse 0, 4, 8 usw. und eine Übertragung von 8 Datenwörtern bei einer logischen Adresse 0, 8, 16 beginnen kann. (Als Ausnahme kann beim Spezifizieren eines ersten Transfers des Zieldatenwortes eine nicht ausgerichtete Adresse angegeben werden.) Eine Ausrichtung ist für Vorrichtungen wie den DDR SDRAM notwendig, da diese dafür ausgelegt sind, ausgerichtete Blocks zu übertragen. Dieses Signal besitzt eine Taktdomäne CLK.
  • M2PIC_RdWr_n
  • Dieses Signal stellt eine Lese- oder Schreibmarkierung bereit, die das Adreßanforderungssignal (M2PIC_AddrReq) begleitet. Wie oben beschrieben muß dieses Signal im gleichen Zyklus gelten, in dem M2PIC_AddrReq gilt. Bei einer Ausfuhrungsform gibt ein Logisch-Eins-Signal (1) an, daß eine Leseoperation angefordert wird, während ein Logisch-Null-Signal (0) angibt, daß eine Schreiboperation angefordert wird. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • M2PIC_AddrQual[16:0]
  • Dieses Adreßtransferkennzeichnersignal ist für eine bestimmte CPU typisch, bei der es sich bei einer Ausführungsform um den IBM PowerPC 405 handelt. Wie oben angegeben muß dieses Signal im gleichen Zyklus gelten, in dem M2PIC_AddrReq gilt. Diese Signale werden nicht von dem programmierbaren Schnittstellenkern decodiert oder verarbeitet, sondern lediglich zur entsprechenden Slave-Vorrich-tung geleitet. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK. Die Bit-Definitionen für dieses Signal lauten folgendermaßen:
    Figure 00320001
  • Es sei angemerkt, daß der Anwender bei einem 32-Bit-System möglicherweise den 32-Datenwörter-Burst-Modus nicht unterstützen möchte, da dies Strukturen erfordern könnte, sich nicht effizient in FPGA-Grundelementen abbilden lassen.
  • Bytefreigaben werden für Einzelimpulsübertragungen (d.h. ein oder zwei Datenwörter) bereitgestellt, damit Vorrichtungen wie die CPU Leseoperationen von geringerem Ausmaß, wie beispielsweise von einem Byte oder einem halben Datenwort, durchführen können. Diese Funktion ist beispielsweise bei der OPB-Brücke (unter Bezugnahme auf die 16 und 17 ausführlich erläutert) besonders wichtig, da einige OPB-Vorrichtungen (insbesondere die Slaves) möglicherweise nur Register mit Bytebreite aufweisen. Bei Speichervorrichtungen wie DRAM oder SRAM gibt es kein Problem beim Einlesen eines Datenwortes oder doppelten Datenwortes, selbst wenn nur ein Byte notwendig ist, und daher können diese Vorrichtungen die Einzelimpulstransferbytefreigabe ignorieren. Diese Bytefreigabebits gelten auch für Schreibvorgänge, selbst wenn die Informationen für die Datenwegbytefreigaben redundant sind.
  • Der Adreß-Port 601A kann auch die folgenden Signale empfangen.
  • PIC2M_AddrAck
  • Dieses Strobe-Signal (aus dem progammierbaren Schnittstellenkern) bestätigt die aktuelle Adresse und ruft die nächste Adreßanforderung ab, sofern es eine gibt. In dem Zyklus nach der Überprüfung von PIC2M_AddrAck werden M2PIC_AddrReq, M2PIC_Addr, M2PIC_RdWr_n und M2PIC_AddrQual aktualisiert. Dieses Signal wird nur für einen CLK-Zyklus pro Adreßanforderung überprüft. Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • PIC2M_Busy
  • Dieses Signal teilt dem anfordernden Master mit, daß eine seiner Transaktionen in einem Slave abläuft. Dieses Signal geht auf High, wenn der programmierbare Schnittstellenkern sein PIC2M_AddrAck ausgibt, und zurück auf Low, wenn ein Slave sein Signal S2PIC_RdXferDone oder S2PIC_WrXferDone (nachfolgend ausführlich erläutert) überprüft hat, um anzu-geben, daß der Datentransfer vom Slave abgeschlossen worden ist. Bei einer Ausführungsform werden das Signal PIC2M_Busy und das Signal M2PIC_AddrReq vom Master einem ODER-Gatter zugeführt. Auf diese Weise kann der Master feststellen, wann er all seine Transaktionen über den programmierbaren Schnittstellenkern abgeschlossen hat. Dieses Signal unterstützt den Befehl „Sync" oder „EIEIO" (Enforce Instruction Execution In Order = Befehlsausführung in Reihenfolge durchsetzen) in der CPU. Bei einer Ausführungsform zeigt eine logische 1 an, daß der programmierbare Schnittstellenkern mit einem Datentransfer beschäftigt ist, und eine logische 0 zeigt an, daß es keine laufenden Transaktionen gibt. Es sei angemerkt, daß ein Slave das Signal PIC2M_Busy aktiv lassen kann, nachdem er S2PIC_RdXferDone/S2PIC_WrXferDone überprüft hat, wenn er die Transaktion nicht intern abgeschlossen hat. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • PIC2M_Err
  • Dieses Signal teilt einem Master mit, daß eine seiner laufenden Transaktionen einen Fehler verursacht hat. Bei Lesefehlern wäre dieses Signal mit PIC2M_RdDataAck (nachfolgend erläutert) aktiv. Bei Schreibfehlern kann dieses Signal während oder nach der Transaktion über den programmierbaren Schnittstellenkern überprüft werden. Insbesondere kann das Fehlersignal nur dann überprüft werden, wenn eine Schreibtransaktion über den programmierbaren Schnittstellenkern abgeschlossen worden ist, solange das Signal PIC2M_Busy aktiv ist. Zu diesem Zeitpunkt kann der anfordernde Master die Fehlerregister, d.h. BEAR und BESR, des Slave untersuchen, um festzustellen, worum es sich bei dem Fehler gehandelt hat. Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • b. SCHREIB-PORTS FÜR MASTERS
  • Gemäß der vorliegenden Erfindung muß sich ein Master sicher sein, daß er alle Schreibdaten, die er übertragen will, liefern kann. Es gibt keine Datenflußsteuersignale, so daß ein Master den Fluß der übertragenen Daten nicht verlangsamen oder unterbrechen kann. Eine Slave-Vorrichtung darf jedoch Wartezustände zwischen Datentransfers forcieren, indem sie Datenbestätigungssignale (d.h. PIC2M_WrDataAck) zurückhält. Angesichts dieser Einschränkungen können Master-Schreib-Ports 602A die folgenden Signale ausgeben.
  • M2PIC_Data
  • Dieses Signal liefert die Schreibtransferdaten. Im allgemeinen stehen die ersten zu übertragenden Schreibdaten zu dem Zeitpunkt zur Verfügung, zu dem die entsprechende Adreßanforderung die Möglichkeit hat, den Slave zu erreichen. Bei einer Ausführungsform besteht eine Latenz von zwei CLK-Zyklen (oder vier CLKX2-Zyklen) für Adreßdaten, die über Pipelining durch den programmierbaren Schnittstellenkern geleitet werden. Somit müßten Schreibdaten zwei CLK-Zyklen nach der Ausgabe einer Adreßanforderung bereitstehen. Es sei darauf hingewiesen, daß bei einem speziell angepaßten System, bei dem den Slaves eine vorgegebene Mindestantwortzeit für Schreibvorgänge zur Verfügung steht, die Verfügbarkeit von Schreibdaten um diesen Betrag verzögert sein kann.
  • Bei einer Ausführungsform enthalten die Schreibtransferdaten 64 Bits. Bei anderen Ausführungsformen können jedoch weniger oder mehr Bits verwendet werden. Auf jeden Fall kann der Bus, der die Schreibtransferdaten mit sich führt, auf die entsprechende Breite verkleinert/vergrößert werden. Es sei angemerkt, daß dieser Bus möglicherweise eine lange Strecke über den programmierbaren Schnittstellenkern zurücklegt, und somit ist sein Timing kritisch. Dieses Signal wird daher als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • M2PIC_DataBE[7:0]
  • Dieses Schreibtransferdatenbytefreigabesignal weist das gleiche Timing wie das Signal M2PIC_Data auf und begleitet die Schreibdaten als Bytefreigabekennzeichner. Bei einer Ausführungsform ist ein beliebiges Bytefreigabemuster zugelassen, einschließlich verschachtelter Bits oder „alle Bits aus". So könnte beispielsweise ein Hochgeschwindigkeits-Master den Transfer eines 16-Datenwörter-Bursts auslösen, alle Bytefreigaben im ersten Datentransfer ausschalten und praktisch einen 14-Datenwörter-Burst in einer Operation statt in 3 Operationen durchführen (8-Datenwörter-Burst + 4-Datenwörter-Burst + 1 doppeltes Datenwort). Dieses Signal wäre in einem 32-Bit-PIC-System 4 Bits breit. Dieses Signal wird daher als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • M2PIC_DataQual[N:0]
  • Dieses Signal ermöglicht das Übertragen zusätzlicher Informationen mit den Schreibdaten und/oder Schreibbytefreigaben. Bei einer Ausführungsform könnten beispielsweise Paritäts- oder Fehlerkorrektur-Codebits mit den Schreibdaten übertragen werden. Es sei angemerkt, daß sich jedes Signal M2PIC_DataQual mit den einzelnen Daten ändern kann. Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • PIC2M_WrDataAck[7:0]
  • Dieses Strobe-Signal bestätigt die Schreibdaten und läßt zu, daß der nächste Teil Daten übertragen wird. In dem Zyklus nach der Überprüfung des Signals PIC2M_WrDataAck müssen die eventuell vorhandenen nächsten Daten angesteuert werden. Jedes PIC2M_WrDataAck-Bit (bei dieser Ausführungsform insgesamt 8 Bits) bestätigt die Daten für seine entsprechende Bytespur. Auf diese Weise kann ein Slave mit geringerer Breite oder ein langsamerer Slave ein paar Bytespuren gleichzeitig bestätigen. Es sei jedoch angemerkt, daß die Transaktion für alle Bytespuren bestätigt wird, obwohl das Bytefreigabebit nicht für diese Bytespur eingestellt ist. Auf diese Weise weiß der Master, daß die einzelnen Daten ordnungsgemäß geschrieben worden sind. Das dynamische Wesen des Signals PIC2M_WrDataAck ist vorteilhaft, da es ermöglicht, daß Daten bei Übertragungen nicht zusammenhängend sein müssen. Bei einer Ausführungsform werden die PIC2M_WrDataAck-Bits in der Reihenfolge ansteigender Byteadressen (d.h. von Bit [7] bis [0] oder von [0] bis [7], je nach System) durchlaufen. Dieses Signal wäre in einem 32-Bit-System 4 Bits breit. Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • c. LESE-PORTS FÜR MASTERS
  • Bei einer Leseoperation muß sich eine Master-Vorrichtung sicher sein, daß sie all die Daten, deren Übertragung sie anfordert, auch empfangen kann. Es gibt keine Datenflußsteuersignale, so daß ein Master den Fluß der übertragenen Daten nicht verlangsamen oder unterbrechen kann. Eine Slave-Vorrichtung darf jedoch Wartezustände zwischen Datentransfers forcieren, indem sie Datenbestätigungssignale (d.h. PIC2M_RdDataAck) zurückhält.
  • Der Lese-Port 603A kann die folgenden Signale empfangen.
  • PIC2M_Data
  • Zu diesem Signal gehören die zu übertragenden Lesedaten. Bei einer Ausführungsform gehören 64 Datenbits dazu. Bei anderen Ausführungsformen können weniger oder mehr Bits übertragen werden. Auf jeden Fall kann der diesen Signalbus übertragende Bus auf die entsprechende Größe verkleinert/vergrößert werden. Da dieser Bus möglicherweise eine lange Strecke über den programmierbaren Schnittstellenkern zurücklegt, ist sein Timing kritisch. Dieses Signal wird deshalb als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • PIC2M_DataQual
  • Dieses Signal betrifft Lesedatentransferkennzeichner. Bei einer Ausfuhrungsform lauten die Bit- Definitionen folgendermaßen:
    Figure 00350001
  • Es sei angemerkt, daß die CPU bei einer Ausführungsform Transfers mit einer Größe von bis zu 32 Datenwörtern anfordern kann. Somit sind 5 Bits „Lesedatenwortadresse" notwendig, um die CPU zu unterstützen (logisch gesehen kann dieses Signal keine Transfers definieren, die größer als 32 Datenwörter sind). Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • PIC2M_RdDataAck[7:0]
  • Dieses Lese-Strobe-Signal qualifiziert die Lesedaten, die empfangen werden. Jedes PIC2M_RdDataAck-Bit bestätigt einzeln die Daten für seine entsprechende Bytespur, wodurch ein Slave mit geringerer Breite oder ein langsamerer Slave ein paar Bytespuren gleichzeitig bestätigen kann. Der Slave stellt sicher, daß alle Bytespuren bestätigt werden, selbst wenn das Bytefreigabebit nicht für diese Bytespur eingestellt ist. Zusätzlich dazu kann der Slave die PIC2M_RdDataAck-Bits in der Reihenfolge ansteigender Byteadressen (dies könnte von Bit [7] bis [0] oder von [0] bis [7] erfolgen, je nachdem, ob es sich um ein Big-Endian- oder ein Little-Endian-System handelt) durchlaufen. Dieses Signal wäre demzufolge in einem 32-Bit-PIC-System 4 Bits breit. Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • 2. TIMING DER MASTER-VORRICHTUNG
  • 7 stellt ein Zeitdiagramm für eine Master-Vorrichtung dar, die eine 8-Datenwörter-Schreiboperation erzeugt und dann eine 8-Datenwörter-Leseoperation. Bei der Schreiboperation überprüft der Master eine Adreßanforderung (m_addr_req) zum Zeitpunkt t1. Zur gleichen Zeit gibt der Master an, daß es sich bei der Transaktion um eine Schreiboperation handelt (m_addr_r_wn geht auf Low über), und sendet die Schreibadresse (m_addr[31:0]) sowie die Größe des Transfers und sämtliche anderen Kennzeichner (m_addr_qual[]).
  • Nach einer Latenz von einem Taktryklus (clk) (Latenz kann bei anderen Ausführungsformen verschieden sein) empfängt der Master zum Zeitpunkt t3 eine Adreßbestätigung (m_addr_ack) von dem programmierbaren Schnittstellenkern, die es dem Master ermöglicht, zum Zeitpunkt t5 mit einer weiteren Transaktion zu beginnen. Es sei angemerkt, daß der Master zum Zeitpunkt t1 ebenfalls die Schreibdaten (D1w) sendet, aber mit dem Senden der restlichen Schreibdaten (D2w, D3w und D4w) zu den Zeitpunkten t3, t4 und t5 (Latenz von einem DDR-Taktzyklus (clk2x)) wartet, bis er zum Zeitpunkt t3 die Adreßbestätigung (m_addr_ack) empfangen hat. (Bei dieser Ausführungsform entspricht ein Datenwort 32 Bits. Somit werden bei einem 64-Bit-Datenweg nur 4 64-Bit-Transfers benötigt.)
  • In 7 folgt auf die Schreiboperation sofort die Leseoperation. Deshalb bleibt die Adreßanforderung (m_addr_req) bei logisch 1. Der Master muß jedoch angeben, daß es sich bei der Transaktion um eine Leseoperation handelt. Somit geht m_addr_r_wn zum Zeitpunkt t5 auf High über. Entsprechend dem Pipelining bei einer Ausführungsform der vorliegenden Erfindung kann der Master die Leseadresse (m_addr[31:0]) und den Adreßkennzeichner (m_addr_qual[]) zum Zeitpunkt t5 senden, d.h. bevor die Schreiboperation zum Zeitpunkt t7 abgeschlossen worden ist. Die Master-Vorrichtung empfängt die Lesedaten (D1r, D2r, D3r und D4r) und die Lesekennzeichner (Q1r, Q2r, Q3r und Q4r), was zum Zeitpunkt t8 beginnt und zum Zeitpunkt t12 beendet wird.
  • 3. KOMMUNIKATION ZWISCHEN SLAVE-VORRICHTUNG UND PIC
  • Eine Slave-Vorrichtung empfängt Befehle zum Datenübertragen und führt die von den Master-Vorrichtungen angeforderte Lese- oder Schreiboperation durch. 5 stellt typische Signale dar, die zwischen einer Slave-Vorrichtung und dem programmierbaren Schnittstellenkern übertragen werden können. Um diesen Transfer zu erleichtern, enthält die Slave-Vorrichtung eine Schnittstelle 800A mit den Adreß-Ports 801A, den Schreibdaten-Ports 802A und den Lesedaten-Ports 803A. Bei einer ähnlichen Konfiguration enthält der programmierbare Schnittstellenkern eine PIC-Schnittstelle 800B mit den Adreß-Ports 801B, den Schreibdaten-Ports 802B und den Lesedaten-Ports 803B. Es sei angemerkt, daß einige Signale denen für die Master-Ports (6) gleichen, wobei nur ihre Richtungen umgekehrt sind.
  • a. ADRESS-PORTS FÜR SLAVES
  • Die Adreß-Ports 801A können die folgenden Signale empfangen.
  • PIC2S_AddrReq
  • Diese Statusmeldung gibt an, ob eine Adreßanforderung vom Master ansteht. Die Adresse (PIC2S_Addr) und Adreßkennzeichner (PIC2S_AddrQual, PIC2S_RdWr_n) müssen ebenso gelten, wenn PIC2S_AddrReq aktiv ist. Bei einer Ausführungsform gibt eine logische 1 an, daß eine Anforderung ansteht, und eine logische 0 gibt an, daß keine Anforderung ansteht. Dieses Signal wird als Signal mit frühem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • PIC2S_RdWr_n
  • Dieses Signal, das das Adreßanforderungssignal begleitet, gibt an, ob es sich bei der Anforderung um eine Lese- oder eine Schreiboperation handelt. Dieses Signal muß im gleichen Zyklus gelten wie PIC2S_AddrReq. Bei einer Ausführungsform steht eine logische 1 für eine Leseoperation (READ) und eine logische 0 für eine Schreiboperation (WRITE). Dieses Signal wird als Signal mit frühem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • PIC2S_Addr[31:0]
  • Dieses Signal liefert die Adressen für den angeforderten Transfer. Insbesondere weist der Adreßwert auf ein bestimmtes Byte im Speicherraum hin, und er muß im gleichen Zyklus gelten wie PIC2S_AddrReq. Es sei angemerkt, daß die Master Adreßwerte liefern, die hinsichtlich der Größe des Datentransfers ausgerichtet sind. Dieses Signal wird als Signal mit frühem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • PIC2S_AddrQual[20:0]
  • Dieses Adreßtransferkennzeichnersignal ist für die bestimmte CPU typisch, bei der es sich bei einer Ausführungsform um den IBM PowerPC 405 handelt. Wie oben angegeben müssen diese Adreßkennzeichnerinformationen im gleichen Zyklus gelten wie das Signal PIC2S_AddrReq. Dieses Signal wird als Signal mit frühem Timing bezeichnet und besitzt eine Taktdomäne CLK. Die Bit-Definitionen lauten folgendermaßen:
    Figure 00380001
  • Bytefreigaben werden für Einzelimpulstransfers bereitgestellt, damit Vorrichtungen wie die CPU Lesevorgänge von geringerer Größe, wie von Bytes und halben Datenwörtern, durchführen können. Dies ist beispielsweise besonders bei der OPB-Brücke wichtig, da einige OPB-Vorrichtungen möglicherweise nur Register mit Bytebreite aufweisen. Für Speichervorrichtungen wie DRAM oder SRAM gibt es kein Problem beim Einlesen eines Datenwortes oder doppelten Datenwortes, selbst wenn nur ein Byte notwendig ist, so daß diese Vorrichtungen die Einzelimpulstransferbytefreigabe ignorieren können. Diese Bytefreigabebits gelten ebenso für Schreibvorgänge, obwohl die Informationen für die Datenwegbytefreigaben redundant sind.
  • Die Adreß-Ports 801A können ebenso die folgenden Signale ausgeben.
  • S2PIC_AddrAck
  • Dieses Strobe-Signal bestätigt die Adresse und ruft die nächste Adreßanforderung ab, sofern es eine gibt. In dem Zyklus nach der Überprüfung des Signals S2PIC_AddrAck werden die Signale PIC2S_AddrReq, PIC2S_Addr, PIC2S_RdWr_n und PIC2S_AddrQual auf die nächste Adreßanforderung aktualisiert, sofern es eine gibt. Dieses Strobe-Signal wird nur für einen CLK-Zyklus pro Adreßanforderung überprüft. Dieses Signal wird als Signal mit frühem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • Ein Slave, der Adreß-Pipelining unterstützen möchte, kann die Adreßinformationen umgehend bestätigen, so daß der Kern gemäß der vorliegenden Erfindung die nächste Adresse abrufen kann. Ein Slave kann eine zweite Adreßanforderung erst dann bestätigen, wenn er den mit der ersten Anforderung verbundenen Datentransfer abgeschlossen hat. Anders ausgedrückt kann der Slave die Pipeline-Adreßanforderung für das Vorbereiten des nächsten Transfers verwenden, darf jedoch die zweite Adresse nicht vorzeitig bestätigen.
  • Eine Ausnahme von dieser allgemeinen Regel besteht darin, daß ein Slave umgehend eine zweite Anforderung bestätigen darf, wenn diese einen anderen Daten-Port verwendet. Ein Slave kann beispielsweise einen Lesetransfer bestätigen, dann einen Schreibtransfer bestätigen und sich dann eine dritte Adresse ansehen.
  • S2PIC_Busy[15:0]
  • Dieses Signal teilt dem Master mit, daß eine seiner Transaktionen in einem Slave abläuft. Der Slave ist insbesondere dafür verantwortlich, das Belegt-Signal (Busy) zu dem entsprechenden Master zurückzuleiten, der die Transaktion ausgelöst hat. Der Verbindungskern der vorliegenden Erfindung kann dieses Belegt-Signal automatisch für den Master überprüfen, bis der Slave ein Signal S2PIC_RXferDone oder S2PIC_WrXferDone ausgibt (nachfolgend erläutert). Alternativ dazu kann der Slave weiterhin das Belegt-Signal nach dem Signal S2PIC_Wr/RdXferDone senden, um dem Master mitzuteilen, daß die Transaktion im Slave noch nicht abgeschlossen ist (d.h. die Transaktion steht bei einem anderen Bus noch an oder befindet sich noch in einer Warteschlange im Slave). Dieses Signal unterstützt den Befehl „Sync" oder „EIEIO" (Enforce Instruction Execution In Order = Befehlsausführung in Reihenfolge durchsetzen) in der CPU. Bei einer Ausführungsform zeigt eine logische 1 an, daß der Slave noch mit einem Datentransfer beschäftigt ist, und eine logische 0 zeigt an, daß bei dem Slave keine laufenden Transaktionen anliegen. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • S2PIC_Err[15:0]
  • Dieses Signal teilt dem Master mit, daß eine seiner laufenden Transaktionen einen Fehler verursacht hat. Der Slave ist insbesondere dafür verantwortlich, das Fehler-Signal (Err) zu dem entsprechenden Master zurückzuleiten, der die Transaktion ausgelöst hat. Bei Lesefehlern wäre dieses Signal zusammen mit dem Signal S2PIC_RdDataAck aktiv. Bei Schreibfehlern kann dieses Signal (wenn das Signal S2PIC_Busy aktiv bleibt) während oder nach der Transaktion über den Kern jederzeit überprüft werden. Slaves, die Fehler erzeugen können, können Fehlerregister (wie beispielsweise BEAR und BESR) enthalten, die es dem Master ermöglichen, die Ursache des Fehlers zu finden. Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • b. SCHREIB-PORTS FÜR SLAVES
  • Die Schreibdaten-Ports 802A können die folgenden Signale empfangen.
  • PIC2S_WrDataReq
  • Der Slave wartet darauf, daß dieses Signal in den aktiven Zustand übergeht, bevor er beginnt anzufordern, daß die Schreibdaten vom Master übertragen werden. Da ein Master sicherstellen muß, daß er alle Daten liefern kann, die er schreiben will, ändert sich dieses Signal nicht mitten in einem Datentransfer. Wenn dieses Signal in den aktiven Zustand übergegangen ist, bleibt es auf High, bis der Slave das Signal S2PIC_WrXferDone überprüft. Ein Slave kann das Signal S2PIC_WrDataAck überprüfen und in dem gleichen Zyklus mit dem Übertragen von Daten beginnen, in dem das Signal PIC2S_WrDataReq in den aktiven Zustand übergeht. Dieses Signal wird als Signal mit frühem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • PIC2S_Data[63:0]
  • Zu diesem Signal gehören die Schreibtransferdaten. Es sei darauf hingewiesen, daß zwar 64 Bits angegeben sind, dieser Bus jedoch auf eine Breite von 32 Bit verkleinert werden kann, die in einem 32-Bit-System verwendet werden soll. Dieser Bus legt möglicherweise eine lange Strecke über den Kern zurück, und daher ist sein Timing kritisch. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • PIC2S_DataBE[7:0]
  • Dieses Signal weist das gleiche Timing wie das Signal PIC2S_Data auf und begleitet die Schreibdaten als Bytefreigabekennzeichner. Es sind alle Bytefreigabemuster zugelassen, einschließlich „verschachtelter" Bits oder „alle Bits aus". Es sei angemerkt, daß dieser Bus bei einem 32-Bit-System auf eine Breite von 4 Bits verkleiner werden kann. Dieser Bus legt wie die Schreibdaten möglicherweise auch eine lange Strecke über den Kern zurück, und daher ist sein Timing ebenfalls kritisch. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • PIC2S_DataQual[N:0]
  • Dieses Signal wird zwar in der Regel von der CPU nicht benötigt, kann jedoch für den PIC bereitgestellt werden. Eine andere CPU oder ein anderes System könnte beispielsweise von zusätzlichen Informationen profitieren, die zusammen mit den Schreibdaten und/oder Schreibbytefreigabesignalen übertragen werden. Bei einer Ausführungsform könnten zu diesen zusätzlichen Informationen Paritätsbits oder Fehlerkonekturcodes gehören. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • Die Schreibdaten-Ports 802A können auch die folgenden Signale ausgeben.
  • Output: S2PIC_WrDataAck[7:0]
  • Dieses Strobe-Signal bestätigt die Schreibdaten und läßt zu, daß der nächste Teil Daten übertragen wird. Die Latenz zwischen dem Signal S2PIC_WrDataAck und dem nächsten verfügbaren Datenwort im Signal PIC2S_Data ist systemabhängig. Bei einer Ausführungsform könnte die Standardeinstellung eine Verzögerung von drei CLK2X-Zyklen zwischen dem Signal S2PIC_WrDataAck und den nächsten zu überprüfenden Daten sein. Jedes Bit des S2PIC_WrDataAck-Signals bestätigt einzeln die Daten für seine entsprechende Bytespur, wodurch ein Slave mit geringerer Breite oder ein langsamerer Slave ein paar Bytespuren gleichzeitig bestätigen kann. Es sei darauf hingewiesen, daß der Slave alle Bytespuren bestätigen muß, selbst wenn das Bytefreigabebit nicht für diese Bytespur eingestellt ist. Zusätzlich dazu muß der Slave die S2PIC_WrDataAck-Bits in der Reihenfolge ansteigender Byteadressen überprüfen (dies könnte von Bit [7] bis [0] oder von [0] bis [7] erfolgen, je nachdem, ob es sich um ein Big-Endian- oder ein Little-Endian-System handelt). Eine langsame Slave-Vorrichtung darf auch zwischen Überprüfungen des Signals S2PIC_WrDataAck Lücken einfügen, um die Geschwindigkeit zu steuern, mit der sie Daten überträgt. Dieses Signal wäre demzufolge in einem 32-Bit-System 4 Bits breit. Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • S2PIC_WrXferDone
  • Der Slave überprüft dieses Signal, um anzuzeigen, daß er den Schreibdatenbus nicht mehr benutzt und alle Daten übertragen hat. Dieses Signal kann im letzten Zyklus des Signals S2PIC_WrDataAck, das der Slave senden muß, überprüft werden. Es sei darauf hingewiesen, daß das Signal S2PIC_WrXferDone überprüft werden kann, bevor die entsprechenden Schreibdaten über die Signale PIC2S_Data und PIC2S_DataBE eingetroffen sind. Dieses Signal wird als Sigal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • c. LESE-PORTS FÜR SLAVES
  • Die Lese-Ports 803A können die folgenden Signale empfangen.
  • PIC2S_RdDataReq
  • Der Slave muß darauf warten, daß dieses Signal in den aktiven Zustand übergeht, bevor er mit dem Übertragen der vom Master angeforderten Lesedaten beginnen kann. Da ein Master sicherstellen muß, daß er alle Daten empfangen kann, die er lesen will, ändert sich dieses Signal nicht mitten in einem Datentransfer. Wenn dieses Signal in den aktiven Zustand übergegangen ist, bleibt es auf High, bis der Slave das Signal S2PIC_RXferDone überprüft. Ein Slave darf das Signal S2PIC_RdDataAck überprüfen und in dem gleichen Zyklus mit dem Übertragen von Daten beginnen, in dem das Signal PIC2S_RdDataReq in den aktiven Zustand übergeht. Dieses Signal wird als Signal mit frühem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • Die Lesedaten-Ports 803A können auch die folgenden Signale ausgeben.
  • S2PIC_Data[63:0] (CLK2X, mittel)
  • Zu diesem Signal gehören die übertragenen Lesedaten. Dieses Signal kann in einem 32-Bit-System auf 32 Bits verkleinert werden. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • S2PIC_DataQual[2:0]
  • Zu diesem Signal gehören die Lesedatentransferkennzeichner. Bei einer Ausführungsform lauten die Bit-Definitionen folgendermaßen:
    Figure 00410001
  • Bei einer Ausfuhrungsform kann die CPU Transfers mit einer Größe von bis zu 32 Datenwörtern anfordern. Somit werden für die Unterstützung dieser CPU 5 Bits der „Lesedatenwortadresse" benötigt. Daraus folgt logischerweise, daß das Feld „Lesedatenwortadresse" für Transfers mit einer Größe von mehr als 32 Datenwörtern daher nicht definiert ist. Slaves, die keine ersten Transfers des Zieldatenwortes (d.h. die Möglichkeit, Datenwörter in jeder beliebigen Reihenfolge zu übertragen) unterstützen, können die Daten einfach in normaler Reihenfolge übertragen und die „Lesedatenwortadresse"-Bits entsprechend einstellen. Dieses Signal wird als Signal mit mittlerem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • S2PIC_RdDataAck[7:0]
  • Dieses Lese-Strobe-Signal qualifiziert die Lesedaten, die empfangen werden. Jedes S2PIC_RdDataAck-Bit bestätigt die Daten für seine entsprechende Bytespur, wodurch ein Slave mit geringerer Breite oder ein langsamerer Slave ein paar Bytespuren gleichzeitig bestätigen kann. Der Slave muß alle Bytespuren bestätigen, selbst wenn das Bytefreigabebit nicht für diese Bytespur eingestellt ist. Zusätzlich dazu muß der Slave die S2PIC_RdDataAck-Bits in der Reihenfolge ansteigender Byteadressen überprüfen (dies könnte von Bit [7] bis [0] oder von [0] bis (0] erfolgen, je nachdem, ob es sich um ein Big-Endian- oder ein Little-Endian-System handelt). Dieses Signal wäre demzufolge in einem 32-Bit-System 4 Bits breit. Dieses Signal wird als Signal mit spätem Timing bezeichnet und besitzt eine Taktdomäne CLK2X.
  • S2PIC_RdXferDone (CLK, mittel)
  • Dieses Signal wird vom Slave überprüft, um anzuzeigen, daß er den Schreibdatenbus nicht mehr benutzt und alle angeforderten Daten übertragen hat. Dieses Signal wird als Signal mit frühem Timing bezeichnet und besitzt eine Taktdomäne CLK.
  • 4. TIMING DER SLAVE-VORRICHTUNG
  • 9 stellt ein Zeitdiagramm eines Slave während einer 8-Datenwörter-Schreiboperation dar. Zum Zeitpunkt t1 empfängt der Slave die Adreßanforderung (s_addr_req), die Adresse (s_addr[31:0]) und den Adreßkennzeichner (s_addr_qual[]). Zum Zeitpunkt t3 erzeugt der Slave die Adreßbestätigung (s_addr_ack), die es dem Master ermöglicht, mit einer weiteren Transaktion fortzufahren, und beginnt mit der Datenschreiboperation D1w. Es sei angemerkt, daß bei dieser Ausführungsform eine Latenz von 2 Taktzyklen (clk) vorgesehen ist, bevor der Slave zum Zeitpunkt t7 Daten D2w schreibt. Diese Latenz basiert auf dem Pipelining und kann bei anderen Ausführungsformen unterschiedlich sein.
  • Wenn der Slave zum Zeitpunkt t3 mit der Schreiboperation beginnt, überprüft er eine Schreibbestätigung (s_wdata_ack[0]) für den für das Schreiben der Daten benötigten Zeitraum (d.h. zwei Taktzyklen (clk)). Anders ausgedrückt fordert der Slave alle Daten an und bestätigt die Größe der Schreibtransaktion, bevor er die Daten überhaupt empfangen hat. Auf diese Weise kann der Slave, wenn die restlichen Daten (d.h. D2w-D4w) eingetroffen sind, diese Daten in drei DDR-Zyklen, d.h. zum Zeitpunkt t7–t9, schreiben. Wenn der Slave bestätigt hat, daß die Daten für die Transaktion zum Zeitpunkt t9 bei ihm eingetroffen sind (eine Latenz von einem Taktzyklus (clk)), schickt er ein Signal „Schreibtransfer beendet" (s_wxfer_done) an den Master zurück. Es sei darauf hingewiesen, daß der PIC zu den Zeitpunkten t3-t1 1 eine Schreibdatenanforderung überprüft, was dem Slave den aktiven Schreibzeitraum anzeigt.
  • 10 stellt ein Zeitdiagramm eines Slave während einer 8-Datenwörter-Leseoperation dar. Zum Zeitpunkt t1 empfängt der Slave die Adreßanforderung (s_addr_req), die Adresse (s_addr[31:0]) und den Adreßkennzeichner (s_addr_qual[]). Zum Zeitpunkt t3 erzeugt der Slave die Adreßbestätigung (s_addr_ack), die es dem Master ermöglicht, mit einer wieteren Transaktion fortzufahren. Es sei darauf hingewiesen, daß der Slave, da er nicht auf Schreibdaten von einem Master wartet, nach einer Latenz von 1 Taktzyklus (clk) zum Zeitpunkt t5 umgehend mit seiner Leseoperation beginnen kann.
  • Wenn der Slave zum Zeitpunkt t5 mit der Leseoperation beginnt, überprüft er eine Lesebestätigung (s_rdata_ack[0]) für den für das Lesen der Daten benötigten Zeitraum (d.h. zwei Taktzyklen (clk)). Nach einer Latenz von einem Taktryklus (clk) sendet der Slave ein Signal „Lesetransfer beendet" (s_rxfer_done) zum Master zurück. Es sei darauf hingewiesen, daß der Slave zu den Zeitpunkten t3–t9 eine Lesedatenanforderung überprüft, was für den Slave den aktiven Lesezeitraum anzeigt.
  • B. PROGRAMMIERBARER SCHNITTSTELLENKERN
  • Die 11A und 11B stellen eine Ausführungsform eines Adreß/Steuerweges bei einem programmierbaren Schnittstellenkern (PIC) einschließlich verschiedener, mit dem PIC verbundener Adreß/Steuersignale dar. In den 11A und 11B sind vier Master-Vorrichtungen gezeigt: eine DCU 1101A (die Daten-Cache-Speichereinheit der CPU), eine ICU 1101B (die Befehls-Cache-Speichereinheit der CPU), ein OPB-Slave (Bridge-in) 1101C und eine Hochgeschwindigkeits-Busschnitt-stelle (HSBI) 1101D. Bei dieser Ausführungsform liefert jeder Master 1101 seine Anforderungen an ein FIFO-Register 1104 (First In First Out = FIFO). Somit werden Anforderungen vom Master 1101 in die Warteschlange im FIFO 1104 eingereiht.
  • Schaltungen für das Aktivieren und das Schreiben in Register 1102, die in der Master-Vorrichtung 1101A gezeigt sind, können für die Master-Vorrichtungen 1101B1101D übernommen werden. Insbesondere kann jede Master-Vorrichtung 1101 ein Logikgatter 1102, beispielsweise ein UND-Gatter, für das Aktivieren mehrerer Flip-Flops 1103 (die der Übersichtlichkeit halber als ein Flip-Flop gezeigt sind) enthalten. Auf der Grundlage der vom Logikgatter 1102 empfangenen Steuersignale wird dem WEN-Anschluß (Write ENable = Schreibfreigabe) des Registers 1104 das entsprechende Steuersignal zugeführt. Wenn das Register 1104 voll ist, überprüft es an seinem FULL-Anschluß (VOLL) das entsprechende logische Signal, das wiederum dem Logikgatter 1102 zugeführt wird, um den WEN des Registers 1104 zu deaktivieren.
  • Der Flip-Flop 1103 empfängt ebenfalls die Adresse und die Adreßkennzeichner für die Transaktion. Es sei angemerkt, daß der Flip-Flop 1103 diese Informationen mit DDR, d.h. clk2x, empfangen kann, während das FIFO 1104 diese Informationen in dem normalen FPGA-Takt, d.h. clk, empfängt. Die FIFOs 1104A1104D liefern ihre jeweiligen Adressen an mehrere Adreßvergleicher 1105A1105D im PIC 1100. Jeder Adreßvergleicher 1105 decodiert seine eintreffende Adresse und vergleicht die decodierte Adresse mit seinen gespeicherten Adressen von Slave-Vorrichtungen in dem FPGA.
  • Wie bereits beschrieben wurde, identifizieren bei einer Ausführungsform nur die oberen Bits der Adresse die Slave-Vorrichtung, während die unteren Bits die Speicheradresse in der Slave-Vorrichtung angeben. Auf diese Weise können die Adreßvergleicher 1105 schnell feststellen, welche Slave-Vorrichtung angefordert wird. Wurde ein „Hit" festgestellt, d.h. der angeforderte Slave für die Transaktion identifiziert, werden die Slave-Identifizierungsinformationen mehreren Registern 1106 zugeführt, die die Informationen wiederum zur Arbitrierlogik 1108 übertragen. Es sei angemerkt, daß die mit den Adressen verbundenen Adreßkennzeichner nicht codiert sind und deshalb nicht die Adreßvergleicher 1105 durchlaufen. Bei einer Ausführungsform werden die Adreßkennzeichner von den FIFOs 1104 direkt zu den Registern 1106 übertragen und dann zu einem Multiplexer 1107.
  • Der Multiplexer 1107 wählt gezielt aus, welcher Adreßkennzeichner an einen anderen Satz Register 1109 ausgegeben wird. Es sei darauf hingewiesen, daß die Register 1109 wie die Register 1106 für das Pipelining der vorliegenden Erfindung sorgen können. Andere Ausführungsformen der vorliegenden Erfindung können weniger oder mehr Register enthalten. Der Multiplexer 1107 wird von einem Automaten 1110 gesteuert, der wiederum Eingabewerte von der zirkulären Arbitrierlogik 1108 und vom Multiplexer 1107 empfängt. (Es sei angemerkt, daß der Automat 1110, wenn er den entsprechenden Master ausgewählt hat, erfahren muß, ob der gewählte Master eine Lese- oder eine Schreiboperation anfordert.) Der Automat 1110 befindet sich ursprünglich im Ruhezustand (IDLE), in dem er den Slave-Vorrichtungen (über die Register 1109) mitteilt, daß keine Anforderungen anstehen. Wenn er von der Arbitrierlogik 1108 die Anforderung für die ausgewählte Adresse empfangen hat, tritt der Automat 1110 in den Adreßsendezustand ein, in dem der „Kanal" eingestellt wird. Anders ausgedrückt bestätigt der Automat 1110 die gewählte Master-Vorrichtung für die Transaktion und fährt mit dem Senden der Adreßanforderung und der Adreßkennzeichner an die entsprechende Slave-Vorrichtung fort. Wenn die Slave-Vorrichtung die Adreßanforderung empfangen hat, kann sie den Empfang bestätigen, wodurch der Automat 1110 wieder in den Ruhezustand versetzt wird. Auf diese Weise kann der Automat 1110 sich die nächste Transaktion ansehen. Es sei darauf hingewiesen, daß, wenn die nächste Transaktion den Slave betrifft, der derzeit an der aktuellen Transaktion beteiligt ist, der Slave seine Bestätigung erst nach Abschluß der derzeitigen Transaktion sendet.
  • Die 12A und 12B stellen eine Ausführungsform der mit einem Schreibdatenweg gemäß der vorliegenden Erfindung verbundenen Schaltungen dar. In 12A sind die gleichen vier Master-Vorrichtungen gezeigt wie in 11A: DCU 1101A, ICU 1101B, OPB-Slave 1101C und Hochgeschwindigkeits-Busschnittstelle (HSBI) 1101D. Bei dieser Ausführungsform liefert jeder Master 1101 seine Daten an ein FIFO-Register 1204 (First In First Out = FIFO). Somit werden Anforderungen vom Master 1101 in die Warteschlange im FIFO 1204 eingereiht.
  • Schaltungen für das Übertragen von Daten an FIFOs 1204, die in der Master-Vorrichtung 1101A gezeigt sind, können für die Master-Vorrichtungen 1101B1101D übernommen werden. Insbesondere kann jede Master-Vorrichtung 1101 ein Logikgatter 1202, beispielsweise ein UND-Gatter, für das Aktivieren mehrerer Flip-Flops 1203 (die der Übersichtlichkeit halber als ein Flip-Flop gezeigt sind) enthalten. Auf der Grundlage der vom Logikgatter 1202 empfangenen Steuersignale wird dem WEN-Anschluß (Write ENable = Schreibfreigabe) des FIFO 1204 das entsprechende Steuersignal zugeführt.
  • Der Flip-Flop 1203 empfängt ebenfalls die Daten für die Transaktion. Es sei angemerkt, daß der Flip-Flop 1203 diese Informationen mit DDR, d.h. clk2x, empfangen kann, während das FIFO 1204 diese Informationen in dem normalen FPGA-Takt, d.h. clk, empfängt. Die FIFOs 1204A1204D liefern ihre jeweiligen Daten an mehrere Register 1205 für das Pipelining und dann an einen Multiplexer 1206. Es sei angemerkt, daß die Implementierung von Flip-Flops im Vergleich zu FIFOs von der Anwendung abhängig sein kann. Wenn der Master beispielsweise mit der doppelten Datenrate von Schreibdaten vollständig mithalten kann, dann können Flip-Flops verwendet werden. Wenn der Master jedoch nicht vollständig mit der doppelten Datenrate mithalten kann, dann können die Schreibdaten zu einem FIFO gesendet werden, wodurch es dem Master ermöglicht wird, die Schreibdaten in seinem eigenen Tempo zu verarbeiten.
  • Der Multiplexer 1206 wählt gezielt aus, welche Daten an ein anderes Pipeline-Register 1210 auf dem Datenweg ausgegeben werden. Es sei angemerkt, daß bei einer vollständigen Koppelpunktimplementierung des PIC 1200 für jede Slave-Vorrichtung ein Automat 1208, ein Multiplexer 1206 und ein Pipeline-Register 1210 repliziert werden können. Der Multiplexer 1206 wird von dem Automaten 1208 (über den Flip-Flop 1209) gesteuert, der wiederum Eingangswerte von den Slaves empfängt, die angeben, ob dieser Datenweg derzeit benutzt wird. Wenn der Weg benutzt wird (in diesem Fall ein aktives Signal von logisch 1 besteht), dann ist der Datenweg „belegt", und der Automat 1208 gestattet keinem anderen Master, auf dem gleichen Datenweg mit einer Schreiboperation zu beginnen.
  • Der Automat 1208 befindet sich ursprünglich im Ruhezustand, in dem er den Slave-Vorrichtungen mitteilt, daß keine Schreibanforderungen anstehen. Es sei angemerkt, daß der Automat 1208, wenn die Schreibdatenressource belegt ist, weil sie von einem anderen Slave benutzt wird, im Ruhezustand (IDLE) bleiben muß. Nach dem Empfang einer Schreibanforderung tritt der Automat 1208 in einen Übertragungszustand ein, wodurch der Multiplexer 1206 (der zu dem Datenweg zu einer Slave-Vorrichtung gehört) aktiviert wird und Daten sendet. Wenn die Slave-Vorrichtung die Daten empfangen hat, kann sie den Empfang bestätigen, indem sie dem Logikgatter (UND-Gatter) 1211 ein entsprechendes logisches Signal zuführt. Es sei darauf hingewiesen, daß das Logikgatter 1211 und das Pipeline-Register 1212 in der Anzahl der Slave-Vorrichtungen repliziert werden. Das Logikgatter 1211 empfängt auch ein Multiplexerauswahlsignal. Anders ausgedrückt empfängt nur eines der Logikgatter 1211 aktive Signale für sowohl das Multiplexerauswahlsignal als auch die Schreibbestätigung. Die Ausgangswerte der Register 1212 werden dann dem ODER-Gatter 1213 zugeführt, das wiederum das Schreibbestätigungssignal einem der Master 1101 (in diesem Falle der Master-Vorrichtung 1101A) zuführt. Wenn die Schreibtransaktion abgeschlossen ist, sendet der Slave ein Signal „Schreibtransfer beendet" an den Automaten 1208, das diesem ermöglicht, wieder in seinen Ruhezustand einzutreten.
  • Die 13A und 13B stellen eine Ausführungsform der mit einem Lesedatenweg gemäß der vorliegenden Erfindung verbundenen Schaltungen dar. In 13A sind die gleichen vier Master-Vorrichtungen gezeigt wie in 11A: DCU 1101A, ICU 1101B, OPB-Slave 1101C und Hochgeschwindigkeits-Busschnittstelle (HSBI) 1101D. Bei dieser Ausführungsform enthalten die Master-Vorrichtungen 1101A und 1101B die Flip-Flops 1301A beziehungsweise 1301B, die ihre Lesedaten empfangen, während die Master-Vorrichtungen 1101C und 1101D die FIFO-Register 1302C beziehungsweise 1302D enthalten, die ihre Lesedaten empfangen. Es sei angemerkt, daß die Implementierung von Flip-Flops im Vergleich zu FIFOs von der Anwendung abhängig sein kann. Wenn der Master beispielsweise mit der doppelten Datenrate von Lesedaten vollständig mithalten kann, dann können Flip-Flops verwendet werden. Wenn der Master jedoch nicht vollständig mit der doppelten Datenrate mithalten kann, dann können die Daten zu einem FIFO gesendet werden, wodurch es dem Master ermöglicht wird, die Lesedaten in seinem eigenen Tempo zu verarbeiten.
  • Der Automat 1303 befindet sich ursprünglich im Ruhezustand, in dem er den Slave-Vorrichtungen mitteilt, daß keine Leseanforderungen anstehen. Dieser Zustand wird von mehreren Lesemultiplexerauswahlsignalen bestimmt, die einem ODER-Gatter 1304 zugeführt werden. Handelt es sich bei einem dieser Multiplexerauswahlsignale um ein aktives H-Signal, wodurch angezeigt wird, daß der Datenweg aktiv ist, dann bleibt der Automat 1303 im Ruhezustand (IDLE). Nach dem Empfang einer Leseanforderung und der Bestätigung, daß der Datenweg nicht aktiv ist, tritt der Automat 1303 in einen Übertragungszustand ein, wodurch der Multiplexer 1307 (der zu dem Datenweg zu einer Master-Vorrichtung gehört) aktiviert wird und Daten sendet. Es sei angemerkt, daß der Flip-Flop 1306 für das Pipelining in dem Lesedatenweg sorgt. Um zwischen der Slave-Vorrichtung (nicht gezeigt) und dem Flip-Flop 1306 sowie zwischen dem Automaten 1303 und dem Flip-Flop 1306 eine im wesentlichen gleiche Verzögerung sicherzustellen, wird ein Flip-Flop 1305 in den Steuerweg zum Flip-Flop 1306 eingefügt.
  • Wenn die Slave-Vorrichtung die Anforderung empfangen hat, kann sie diese Anforderung bestätigen, indem sie dem Logikgatter (UND-Gatter) 1308 ein entsprechendes logisches Signal zuführt. Es sei darauf hingewiesen, daß das Logikgatter 1308 und das Pipeline-Register 1309 in der Anzahl der Slave-Vorrichtungen repliziert werden. Das Logikgatter 1308 empfängt auch ein Multiplexerauswahlsignal. Anders ausgedrückt empfängt nur eines der Logikgatter 1308 aktive Signale für sowohl das Multiplexerauswahlsignal als auch die Lesebestätigung. Die Ausgangswerte der Register 1309 werden dann dem ODER-Gatter 1310 zugeführt, das wiederum das Lesebestätigungssignal einem der Master 1101 (in diesem Falle der Master-Vorrichtung 1101A) zuführt. Wenn die Schreibtransaktion abgeschlossen ist, sendet der Slave ein Signal „Schreibtransfer beendet" an den Automaten 1208, das diesem ermöglicht, wieder in seinen Ruhezustand einzutreten.
  • Es ist wichtig und wird von den in den 11A/11B, 12A/12B und 13A/13B beispielhaft dargestellt, daß die vorliegende Erfindung die Menge an Logik zwischen Registern mit Pipelining auf ein Minimum reduziert. Auf diese Weise sind sowohl die Adreß/Steuerwege als auch die Datenwege „ausgeglichen". Anders ausgedrückt sind Logik und Register mit Pipelining auf beiden Wegen gleichmäßig verteilt, wodurch sichergestellt wird, daß Verzögerungen zwischen Registern (oder Logik) im wesentlichen gleich sind. Dieses eingestellte Timing kann wiederum die Logik der Wege vereinfachen.
  • C. DCU/ICU: SCHNITTSTELLE ZUM PLB
  • 14 stellt eine Ausführungsform der Schnittstelle der Daten-Cache-Speichereinheit (DCU) (oder der Befehls-Cache-Speichereinheit (ICU)) zum PLB dar. Diese Art Schnittstelle ist im Fachgebiet bekannt und gehört zu der bei der Struktur verwendeten CPU. Es sei darauf hingewiesen, daß die Schnittstelle 1400, da die vorliegende Erfindung auf jede beliebige CPU anwendbar ist, in Abhängigkeit von der CPU variieren wird. In 14 ist eine Schnittstelle 1400 für die Verwendung mit der IBM PowerPC 405 CPU gezeigt.
  • D. BLOCK-RAM: SCHNITTSTELLE ZUM PIC
  • 15 stellt einen Block-RAM (BRAM) 1501 mit zwei Ports A und B dar, wobei jeder Port seine eigene Takterzeugung, Steuerung, Adresse, Schreib/Lesefunktion und Datenbreite aufweist, was unabhängige Lese/Schreibmöglichkeiten schafft. Bei dieser Ausführungsform ist der Port B mit der Anwenderlogik auf dem FPGA gekoppelt und Port A mit einer Schnittstelle 1502. Über einen endlichen Automaten (Finite State Machine = FSM) 1503 empfängt die Schnittstelle 1502 Signale vom PIC und führt diesem verschiedene Signale zu. Der FSM 1503 wiederum steuert die Schreibfreigabe des Ports A im BRAM 1501. Die Schnittstelle 1502 enthält des weiteren einen Zähler 1504, der mehrere Adressen von dem PIC empfängt und auf der Grundlage ihres Zählers eine bestimmte Adresse bereitstellt. Es sei darauf hingewiesen, daß die Lade- und Freigabeeigenschaften dieses Zählers ebenfalls vom FSM 1503 gesteuert werden. Auf diese Weise bestimmt der FSM 1503, obwohl verschiedene Adressen geladen werden können, wann diese dem BRAM 1501 zugeführt werden. Die Schreib- und Lesedatenanschlüsse von Port A sind an den PIC gekoppelt.
  • Der BRAM 1501 ermöglicht sowohl von Port A als auch von Port B aus einen gleichzeitigen Zugriff auf die gleiche Speicherzelle. Wenn also ein Port in eine gegebene Speicherzelle schreibt, kann der andere Port im Verlauf dieser Schreiboperation nicht die gleiche Speicherzelle anwählen. Es sei angemerkt, daß der Anwender zum Zwecke der Konfliktlösung Anwenderlogik und Software entwerfen könnte, die sich mit Problemen von Datenkohärenz und Synchronisation beschäftigt.
  • E. OPB-BRÜCKENMODULE
  • 1. OPB-BRIDGE-OUT-MODUL
  • Das OPB/BO ist ein Bridge-out-Modul, das als Slave-Vorrichtung für den programmierbaren Schnittstellenkern (PIC) und als Master-Vorrichtung für den OPB fungiert. 16 zeigt eine schematische Darstellung einer Ausfuhrungsform eines Bridge-out-Moduls 1600 auf hoher Ebene, das eine Architektur mit Pipelining verwendet, damit es bei hohen Taktfrequenzen an der OPB-Master-Schnittstelle arbeiten kann. Bei einer Ausführungsform unterstützt das OPB/BO 64-Bit-DDR-Datenwege auf der PIC-Seite und 32-Bit-Bytefreigabetransfers auf der OPB-Seite. Das Bridge-out-Modul 1600 enthält Logik 1601 zum Decodieren von PIC-Übernagungsanforderungen und FIFOs 1602 und 1603 zum Einreihen von Transaktionen in Warteschlangen. Es können insbesondere Schreibtransaktionen mit dynamischen Bytefreigaben in den FIFOs 1602 und 1603 in Warteschlangen eingereiht werden, um die Daten aus dem PIC-Master (nicht gezeigt) zu laden, ohne daß auf den Abschluß von OPB-Transfers gewartet werden muß. Das Bridge-out-Modul 1600 enthält als Bestandteil der Steuer- und Datenweglogik des OPB-Masters 1605 auch mehrere Statusregister. Diese Statusregister können alle OPB-Fehler aufzeichnen, die aufgrund von Transaktionen entstehen, die von den PIC-Masters ausgelöst worden sind. Der OPB-Master 1605 enthält des weiteren die Logik zum ordnungsgemäßen Erzeugen von Fehler- und Belegt-Signalen, die an jeden PIC-Master zurückgehen.
  • Bei einer Schreiboperation mit dem Bridge-out-Modul 1600 gibt der programmierbare Schnittstellenkern (PIC) einen Schreibbefehl (eines der Slave-Steuersignale 1606) aus, der von der Logik 1601 decodiert wird. Wenn die Decodierlogik 1601 feststellt, daß das Bridge-out-Modul 1600 nicht mit der Durchführung einer anderen Transaktion beschäftigt ist, beginnt sie mit dem Übertragen der Daten in das Schreibdaten-FIFO 1603. Die Decodierlogik 1601 lädt auch die Adreß- und Transferkennzeichner in das Adreß-FIFO 1602. Das Bridge-out-Modul 1600 blockiert eventuelle weitere Datentransfers, wenn die FIFOs 1602/1603 voll werden. Bei einer Ausführungsform ist das Schreibdaten-FIFO 1603 64 Bits breit, kann aber in Abhängigkeit von der Größe des Transfers mit einer 32 Bit oder 64 Bit breiten Datenmenge beschrieben werden.
  • Eine separate Logikgruppe, die mit einem Port des OPB-Masters 1605 verbunden ist, fragt das Adreß-FIFO 1602 nach anstehenden Transaktionen ab. Wenn das Adreß-FIFO 1602 nicht leer ist, wird eine Transaktionsanforderung aus ihm ausgelesen. Die Adresse, Transfergröße und Lese/Schreibinformationen werden zu einem Automaten im OPB-Master 1605 gesendet, der den OPB-Datentransferprozeß beginnt. Die OPB-Transferlogik im OPB-Master 1605 bittet um Buszugriff zum OPB und beginnt mit dem Schreibtransfer, wenn dem OPB-Master 1605 der OPB zugesprochen wird. Wenn es sich bei dem Transfer um einen Burst (d.h. mehr als ein Vollwort) handelt, werden die entsprechenden Signale (wie beispielsweise Bussperr- und sequentielle Adreßsignale) überprüft, damit ein OPB-Schreib-Burst durchgeführt werden kann. Schreibdaten werden aus dem Schreibdaten-FIFO 1603 übertragen, um dem OPB Daten zuzuführen. Wenn die Übertragung abgeschlossen worden ist, wird das Adreß-FIFO 1602 wieder nach zusätzlichen Transferanforderungen abgefragt. Bestätigungen oder Zeitüberschreitungen werden dem entsprechenden PIC-Master mit dem aktualisierten BEAR/BESR (nicht gezeigt) zurückgemeldet.
  • Bei einer Leseoperation mit dem Bridge-out-Modul 1600 wird die Lesetransferanforderung von der Logik 1601 decodiert und dann im Adreß-FIFO 1602 in eine Warteschlange eingereiht (wobei davon ausgegangen wird, daß dieser nicht voll ist). Logik im OPB-Master 1605, die das Adreß-FIFO 1602 abfragt, erkennt die anstehende Leseanforderung und führt den Lesetransfer über den OPB aus. Soll mehr als ein Vollwort gelesen werden, dann wird eine Burst-Leseoperation durchgeführt. Die Lesedaten werden über den Flip-Flop 1604 zum PIC-Master zurückgesendet. Bestätigungen oder Zeitüberschreitungen werden wieder dem entsprechenden PIC-Master mit dem aktualisierten BEAR/BESR zurückgemeldet.
  • Die Logik im OPB-Master 1605 mit der Schnittstelle zum OPB ist vorzugsweise so ausgelegt, daß sie den OPB-Leistungszielen der Struktur gerecht wird. Da der OPB Einzelgang-Handshaking-Protokolle verwendet, ist es insbesondere wichtig, daß Ausgangswerte des OPB-Masters 1605 direkt aus einem Flip-Flop angesteuert werden. Anders ausgedrückt sollte bei der Analyse des ungünstigsten Falls davon ausgegangen werden, daß alle Signale spätes Timing aufweisen und somit vom Register angesteuert werden sollten, um für eine maximale Laufzeit über den OPB zu sorgen. Zusätzlich dazu durchqueren bei einer Ausführungsform die von dem OPB-Master 1605 empfangenen Signale nicht mehr als eine Logikebene, bevor sie wieder registriert werden, wodurch sich die Menge der Zeit auf ein Maximum erhöht, die den Signalen zur Verfügung steht, wenn sie sich über den OPB zu einem Slave-Modul und dann zurück zum Bridge-out-Modul 1600 ausbreiten.
  • Bei dem Bridge-out-Modul 1600 können das Adreß- und das Schreibdaten-FIFO 1602/1603 so ausgelegt sein, daß sie bei hohen Taktfrequenzen arbeiten. Bei einer Ausführungsform beruhen die FIFO-Strukturen auf Schieberegister-Nachschlagetabellen-FPGA-Grundelementen (Schieberegister-Nachschlagetabelle = Shift Register Look-up Table = SRL) und erfordern eine synchrone Beziehung zwischen den Lese- und den Schreib-Ports. Es sei darauf hingewiesen, daß zur Implementierung eines auf SRL beruhenden FIFO in der Regel ein Vorwärts/Rückwärtszähler gehört, der steuert, auf welchen Schieberegisteranschluß zugegriffen wird. Der Zähler zählt vorwärts, wenn in das FIFO geschrieben, aber nicht in ihm gelesen wird, und wenn in dem FIFO gelesen, aber nicht geschrieben wird, zählt er rückwärts. Anderenfalls wird der Zähler nicht verändert. Da sie einfach sind, unterstützen auf SRL beruhende FIFOs in der Regel keine Schutzmechanismen. Wenn der FIFO im leeren Zustand (EMPTY) gelesen oder im vollen Zustand (FULL) beschrieben wird, kann deshalb ein nicht zu behebender Fehler entstehen. Damit dies nicht geschieht, sollte die Logik 1601 so aufgebaut sein, daß sie sicherstellt, daß die FIFOs 1602/1603 ordnungsgemäß benutzt werden.
  • Das Bridge-out-Modul 1600 kann wie oben beschrieben Vollwort-Bytefreigabetransfers verwenden. Um eine höhere Leistung und geringere Fläche bereitstellen zu können, kann das Bridge-out-Modul 1600 die Funktion der „dynamischen Busabmessung" bei älteren OPB-Vorrichtungen eliminieren. Deshalb würden die mit dem Bridge-out-Modul 1600 verbundenen OPB-Module bei dieser Ausführungsform das Vollwort-Bytefreigabetransferprotokoll verwenden.
  • Angesichts der FPGA-Struktur kann das Bridge-out-Modul 1600 jedoch ohne weiteres individuell angepaßt werden, so daß es verschiedene Kompromisse zwischen Leistung und Logikausnutzung bietet. So kann beispielsweise das Adreß-FIFO 1602 entfernt und das Schreibdaten-FIFO 1603 vereinfacht werden, wenn abgesendete Schreiboperationen nicht unterstützt werden. Eine weitere Reduzierung der Logik kann erfolgen, indem die Logik im OPB-Master 1605, die Fehler- und Belegt-Signale bearbeitet, vereinfacht wird. Es sei darauf hingewiesen, daß sich durch diese Modifikationen zwar möglicherweise die Leistung verringert, da Transaktionen nicht innerhalb des Bridge-out-Moduls 1600 in eine Warteschlange eingereiht werden können, sich aber dafür die Fläche wesentlich verkleinert.
  • Gemäß einer weiteren Ausführungsform der Erfindung werden das Adreß-FIFO 1602 und das Schreibdaten-FIFO 1603 nicht mit SRL-FIFOs konstruiert, sondern in auf Block-RAM (BRAM) beruhende FIFOs umgewandelt, um die Logikausnutzung zu verringern. Darüber hinaus weisen BRAM-FIFOs eine größere Takt-zu-Ausgangsverzögerung auf, wodurch sich potentiell die maximal erreichbare OPB-Taktfrequenz verringert. BRAM-FIFOs können auch für die Implementierung von asynchronen FIFOs verwendet werden, wodurch der OPB-Takt vorteilhafterweise vom Takt des Bridge-out-Moduls 1600 abgekoppelt werden kann.
  • Ist eine Abkopplung gewünscht, dann kann die Logik im OPB-Master 1605 auf einfache, unkomplizierte Weise aufgebaut werden, wenn man davon ausgehen kann, daß nicht die höchste Leistung gefragt ist. Bei langsameren OPB-Taktfrequenzen (wie beispielsweise der Hälfte der Taktfrequenz des Bridge-out-Moduls 1600) kann insbesondere ein großer Teil der Logik so ausgelegt werden, daß er „Multi-Cycle Paths" (mehrere Taktschritte für eine Operation) enthält oder die Nutzung von mehr Logikebenen gestattet, wodurch die Logikausnutzung der Struktur beträchtlich verringert wird.
  • 2. OPB-BRIDGE-IN-MODUL
  • Das OPB/BI-Modul empfängt OPB-Transaktionsanforderungen als Slave und wandelt diese Anforderungen als Master in PIC-Transfers um. 17 zeigt eine schematische Darstellung einer Ausführungsform eines Bridge-in-Moduls 1700 auf hoher Ebene gemäß der vorliegenden Erfindung. Bei dem Bridge-in-Modul 1700 werden OPB-Schreibdaten in einem Schreibdaten-FIFO 1704 gespeichert, der die Daten zwischenspeichert, um den OPB von den Transaktionen zu entlasten. Bei einer Ausführungsform, bei der Bursts mit unterschiedlicher Länge von den PIC-Slave-Modulen nicht unterstützt werden, können die OPB-Burst-Schreibvorgänge in eine Reihe von Einzelimpuls- oder Cache-Line-Übertragungen über den PIC umgewandelt werden. Der OPB liest das Ergebnis in abgerufenen Daten, die an das PIC-Slave-Modul ausgegeben werden. Burst-Leseanforderungen führen dazu, daß das Bridge-in-Modul 1700 Datenvorabrufe von bis zu 8 Datenwörtern durchführt. Das Bridge-in-Modul 1700 kann ebenfalls die notwendigen Taktdomänen- und Busbreitenumwandlungen durchführen, um Daten zwischen den 64-Bit-DDR-Lese/Schreibdatenwegen des PIC und dem gemeinsam genutzten 32-Bit-Datenweg (keine DDR) des OPB zu transportieren.
  • Bei einer Schreiboperation werden Transaktionen über den OPB, die vom OPB-Bridge-in-Modul 1700 empfangen werden, in einem Schreibdaten-FIFO 1704 zwischengespeichert. Das Schreibdaten-FIFO 1704 unterstützt das Absenden von Schreibvorgängen, um zu verhindern, daß der OPB beschäftigt ist, während die Transaktion über den PIC durchgeführt wird. Die Zieladresse der Schreibtransaktionen sowie die Länge von Schreib-Bursts wird in einem separaten Schreib-anforderungs-FIFO 1705 gespeichert. Wenn die Schreibanforderung vollständig in die Warteschlange in dem Bridge-in-Modul 1700 eingereiht worden ist, ist die OPB-Transaktion abgeschlossen, und der OPB steht für weitere Transaktionen zur Verfügung. Wenn das Schreibdaten-FIFO 1703 oder das Schreibanforderungs-FIFO 1705 voll ist, lösen alle zusätzlichen Schreibanforderungen ein Wiederholungssignal aus, das von der Logik 1701 überprüft werden muß.
  • Ein Automat in der Adreß-Port-Steuerlogik 1706 fragt das Schreibanforderungs-FIFO 1705 ständig nach anstehenden Schreibtransaktionen ab. Wenn die Steuerlogik 1706 erkennt, daß das Schreibanforderungs-FIFO 1705 nicht leer ist, wird die Schreibtransaktion aus der Warteschlange genommen und verarbeitet. Schreibtransaktionen aus dem OPB können an einer beliebigen Datenwortgrenze beginnen und bis zu 32 Datenwörter lang sein. Somit kann eine Schreibtransaktion in eine Reihe von datenwort- oder cache-line-ausgerichteten Übertragungen umgewandelt werden, die von dem PIC unterstützt werden. Diese Umwandlung erfolgt mit Hilfe von Anforderungsausrichtlogik, die ebenfalls in der Steuerlogik 1706 bereitgestellt wird, sich die Startadresse und Länge eines Burst ansieht und die größte PIC-Transfergröße berechnet, die verwendet werden kann. Der PIC-Transfer kommt in ein Adreß-FIFO 1710, in dem die Transaktion dann an dem PIC-(Master)-Port vorgelegt werden kann. Eventuell verbleibende Bestandteile des ursprünglichen Schreib-Burst werden schrittweise durch die Steuerlogik 1706 geschickt, bis die ganze Transaktionsreihe in das Adreß-FIFO 1710 geladen worden ist. Es sei angemerkt, daß an diesem Punkt die Schreibdaten in eine Warteschlange eingereiht sind und dem PIC zur Verfügung stehen.
  • Lesetransaktionen werden über einen separaten Automaten in der Steuerlogik 1706 bearbeitet, der Leseabrufe aus einem PIC-Slave steuert und die Daten über den OPB zurücksendet. Handelt es sich bei der OPB-Leseanforderung nicht um einen Burst, dann wird eine Leseanforderung für ein einzelnes Datenwort in das Adreß-FIFO 1710 geladen. Handelt es sich bei der OPB-Leseanforderung um eine Burst-Operation, dann ruft das Bridge-in-Modul 1700 bis zur nächsten 8-Datenwörter-Cache-Line-Grenze Daten ab, indem es eine Leseanforderung mit der kleinstmöglichen Größe in das Adreß-FIFO 1710 lädt.
  • Die von der Leseanforderung zurückkommenden Daten werden in einem Schieberegister 1709 gespeichert, das den 64-Bit-DDR-Lesedatenweg des PIC unterstützt. Die Daten in dem Schieberegister 1709 werden dann für den entsprechenden 32-Bit-OPB-Datenweg (oben ausführlich erläutert) multiplexiert, und es wird ein entsprechendes Transferbestätigungssignal überprüft. Bei einem Lese-Burst, der über die 8-Datenwörter-Grenze hinausgeht, erfolgt über den PIC eine neue 8-Datenwörter-Cache-Line-Anforderung an die nächstgelegene Speicherstelle, damit der Burst fortgesetzt werden kann. Bei einer Ausführungsform, bei der das Bridge-in-Modul 1700 keine Daten zwischenspeichert, macht jeder Lesevorgang eine neue PIC-Transaktionsanforderung erforderlich, selbst wenn die Daten von einer vorhergehenden Transaktion stammen. Es sei angemerkt, daß Lesefehler von dem PIC dazu führen können, daß das OPB-Fehlerbestätigungssignal überprüft wird (nicht gezeigt, aber von der Logik des Schieberegisters 1709 aufgefangen). Bei einer Ausführungsform kann die Logik 1701 eine Zeitüberschreitungs-Unterdrückung überprüfen, während sie darauf wartet, daß die Lesedaten zurückgesendet werden. Diese Eigenschaft ist sinnvoll, da es eine unbestimmte Zeit dauern kann, bis die PIC-Transaktion abgeschlossen ist.
  • Die Adreßdecodierlogik, die Bestandteil der Schreibsteuerlogik 1703 und 1707 ist, wird vom PIC dupliziert, so daß das Bridge-in-Modul 1700 nur Transaktionen für Adressen akzeptiert, von denen bekannt ist, daß sie auf der Seite des PIC existieren. Auf diese Weise wird verhindert, daß das Bridge-in-Modul 1700 Adreßfehler erzeugt und mit dem Bridge-out-Modul Rückkopplungsschleifen verursacht (siehe 16). Darüber hinaus kann durch diese Duplizierung auch der PIC-Verbindungsweg zwischen Bridge-in-Modul und Bridge-out-Modul entfernt werden, wodurch wertvolle Logikressourcen eingespart werden.
  • Das Adreß-, das Schreibanforderungs- und das Schreibdaten-FIFO 1710/1705/1704 können so ausgelegt sein, daß sie bei hohen Taktfrequenzen arbeiten. Bei einer Ausführungsform können diese FIFOs insbesondere auf Schieberegister-Nachschlagetabellen-FPGA-Grundelementen (Schieberegister-Nachschlagetabelle = Shift Register Look-up Table = SRL) beruhen, die eine synchrone Beziehung zwischen den Lese- und den Schreib-Ports erfordern. Da sie einfach sind, unterstützen auf SRL beruhende FIFOs wie oben beschrieben in der Regel keine Schutzmechanismen. Wenn der FIFO im leeren Zustand (EMPTY) gelesen oder im vollen Zustand (FULL) beschrieben wird, kann deshalb ein nicht zu behebender Fehler entstehen. Damit dies nicht geschieht, sollte die Logik 1706/1703/1707 so aufgebaut sein, daß sie sicherstellt, daß die FIFOs 1710/1705/1704 ordnungsgemäß benutzt werden.
  • Durch die hohe Taktfrequenz des PIC-Master-Ports im Bridge-in-Modul 1700 kann es schwierig werden, die Timing-Anforderungen der Struktur einzuhalten. Deshalb muß Logik, die in der 2X-Taktdomäne operiert oder auf den Weg mit dem einfachen Takt reagiert, sorgfältig strukturiert werden, damit maximal eine Logikebene zwischen Flip-Flops liegt. Diese strukturelle Einschränkung regt zum Einsatz effizienter Logikstrukturen und/oder bestimmter FPGA-Grundelemente an, die bei der Verbesserung des Timings helfen können.
  • Bei einer Ausfuhrungsform der vorliegenden Erfindung wird die Lesevorabrufgröße von 8 Datenwörtern auf 16 (oder 32) Datenwörter erhöht, wodurch die Effizienz des Bridge-in-Moduls 1700 verbessert wird, wenn lange OPB-Lese-Bursts üblich sind. Es sei angemerkt, daß es bei kurzen OPB-Burst-Lesevorgängen zu einer größeren Latenz kommen kann. Somit muß der Konstrukteur entscheiden, was die optimale Vorabrufgröße ist. Vorteilhafterweise kann die vorliegende Erfindung mit nur wenig zusätzlicher Logik so geändert werden, daß sie 16- oder 32-Datenwörter-Vorabrufe nutzen kann. Wie oben beschrieben können insbesondere die Lesedaten aus dem PIC in einem 64 Bit breiten SRL-Array gespeichert werden. Da das SRL-Array an sich 16 Register tief ist, besteht bereits genug Speicher für 32 Datenwörter der Lesedaten. In diesem Fall könnte der Anwender somit die Lesedatenmultiplexierlogik ändern und die Leseautomatenlogik so modifizieren, daß längere Leseanforderungen in das Adreß-FIFO 1710 geladen werden.
  • Bei einer weiteren Ausfuhrungsform der vorliegenden Erfindung kann das Schreibanforderungs-FIFO 1705 entfernt werden, um die Menge der in der Konstruktion verwendeten Logik zu reduzieren. Das Entfernen dieses FIFO würde jedoch die Schreibabsendefunktion deaktivieren. Ein Deaktivieren der Schreibabsendefunktion könnte aufgrund von Schreibtransaktionen, die von anstehenden Transaktionen über den PIC blockiert werden, potentiell die OPB-Leistung verringern.
  • Die Steuerlogik in dem Schreibdaten-FIFO 1704 benutzt eine große Menge redundanter Logik. Diese Redundanz reduziert Verzweigung und ermöglicht es somit dem FIFO 1704, bis zur gewünschten DDR-Taktfrequenz zu laufen. Bei geringeren Taktfrequenzen kann ein großer Teil dieser redundanten Steuerlogik entfernt werden. Hinzu kommt, daß einige Lesedatenweg-Pipeline-Register, wie beispielsweise die Register 1711, 1702 und 1708 in 17, ebenfalls herausgenommen werden könnten, um die Latenz und die Ressourcennutzung zu reduzieren, wenn die zeitlichen Einschränkungen verringert werden.
  • F. PROGRAMMIERBARE HYBRID-SCHNITTSTELLENKERNE
  • Bei einer weiteren Ausführungsform der vorliegenden Erfindung enthält der programmierbare Schnittstellenkern (PIC) zusätzlich zu dem oben ausführlich beschriebenen Koppelpunkt-Schalter Elemente eines gemeinsam genutzten Busses. Die 18A und 18B stellen zur Veranschaulichung für den Leser die Adreß/Steuerwege beziehungsweise die Datenwege einer Architektur mit gemeinsam genutztem Bus dar. Wie in 18A gezeigt ist, könnte ein gemeinsam genutzter Bus 1800A für den Adreß/Steuerweg durch Bereitstellen eines Arbiters 1803 implementiert werden, der die Adreß/Steuersignale von Master-Vorrichtungen 1801 empfängt. Wenn der Zugriffsarbiter 1803 festgelegt hat, welche Master-Vorrichtung 1801 dazu ausgewählt werden sollte, ihre Transaktion fortzusetzen, dann wird die Anforderung an alle Slave-Vorrichtungen 1802 weitergeleitet. Jede Slave-Vorrichtung 1802 decodiert die Adreß/Steuerinformationen und ermittelt, ob sie der für diese Transaktion angeforderte Slave ist. Der gemeinsam genutzte Bus 1800B für den Datenweg könnte in 18B durch Bereitstellen eines einzigen Schreibmultiplexers 1804 implementiert werden, der die Schreibdaten von den Master-Vorrichtungen 1801 empfängt. Bei einem gemeinsam genutzten Bus empfangen alle Slave-Vorrichtungen 1802 die ausgewählten Schreibdaten, nur eine Slave-Vorrichtung 1802 schreibt die Daten jedoch tatsächlich. Bei einer Leseoperation kann eine Slave-Vorrichtung 1802 ein Logisch-Null-Signal ausgeben, es sei denn, diese Slave-Vorrichtung ist bei der Lesetransaktion aktiv. Auf diese Weise überträgt das ODER-Gatter 1805 die Leseinformationen zu den Lesemultiplexern 1806. Nicht gezeigte Steuerschaltungen legen fest, welche Schreibdaten von dem Schreibmultiplexer 1804 ausgewählt werden, um die Schreiboperation abzuschließen, sowie welcher Lesemultiplexer 1806 ausgewählt wird, um die Leseoperation abzuschließen.
  • Die 19A und 19B stellen die Adreß/Steuerwege beziehungsweise die Datenwege einer Architektur mit Hybridkoppelpunkt/gemeinsam genutztem Bus gemäß einer weiteren Ausführungsform der vorliegenden Erfindung dar. Wie in 19A gezeigt enthält ein Hybridschalter 1900A für den Adreß/Steuerweg mehrere Adreßdecodierer 1911A1911D, die jeweils Adreß/Steuerinformationen von den Master-Vorrichtungen 1901A1901D empfangen. Bei dem Hybridschalter 1900A können drei Zugriffsarbiter 1912A1912C von Adreßdecodierern 1911A1911D decodierte Adressen empfangen. Der Zugriffsarbiter 1912C legt die Arbitrierung für zwei Slave-Vorrichtungen 1922A und 1922B fest. Bei dieser Ausführungsform kann aufgrund des mit dem Zugriffsarbiter 1912C gekoppelten, gemeinsam genutzten Busses bei einer Transaktion nur eine der Slave-Vorrichtungen 1922A und 1922B aktiv sein. Anders als bei den Slave-Vorrichtungen 1902A und 1902B müssen die Slave-Vorrichtungen 1922A und 1922B Decodierlogik enthalten, um feststellen zu können, welche von ihnen für die Transaktion ausgewählt worden ist. Es sei angemerkt, daß die Pipelining-Register im Shared-Bus-Abschnitt des Hybridschalters 1900A entfernt worden sind.
  • Wie in 19B gezeigt enthält ein Hybridschalter 1900B für den Datenweg mehrere Lesemultiplexer 1919, und zwar einen für jede Master-Vorrichtung 1901. Es sei angemerkt, daß die Slave-Vorrichtungen 1902C und 1902D die Ausgangswerte nicht wie bei einem Koppelpunkt-Schalter (siehe 5C) direkt den Lesemultiplexern 1901 zuführen, sondern einem Logikgatter (ODER-Gatter) 1930. Somit kann bei dem Hybridschalter 1900B zu jeder Zeit nur eine Slave-Vorrichtung 1902C oder 1902D den Master-Vorrichtungen 1901 Leseinformationen zuführen. Bei dieser Ausführungsform würde/n die inaktive/n Slave-Vorrichtung/en unter den Slave-Vorrichtungen 1902C und 1902D eine logische Null ausgeben. Der Hybridschalter 1900B enthält ebenfalls mehrere Schreibmultiplexer 1914A1914C, d.h. minus die Anzahl der Slave-Vorrichtungen 1902. Somit empfangen die Slave-Vorrichtungen 1902C und 1902D beide die vom Schreibmultiplexer 1914C bereitgestellten Schreibdaten. Die ausgewählte Slave- Vorrichtung 1902 (die durch die vom Zugriffsarbiter 1912C bereitgestellte Adresse festgelegt wird, siehe 19A) schreibt die Daten, während die nicht ausgewählte Slave-Vorrichtung 1902 die Daten ignoriert.
  • Es ist wichtig, daß sowohl die Master- als auch die Slave-Protokolle im Hybridschalter 1900A/1900B so bleiben können, wie sie oben ausführlich für den Koppelpunkt-Schalter 500A/500B beschrieben worden sind. Bei einer Ausführungsform kann jedoch ein Rearbitrierungs-Port hinzugefügt werden, um zu verhindern, daß der Shared-Bus-Abschnitt des Hybridschalters blockiert wird. Es sei darauf hingewiesen, daß der Hybridschalter 1900A/1900B wie der Koppelpunkt-Schalter getrimmt werden kann, um unnötige Wege zu eliminieren. Somit könnte beispielsweise der mit der Master-Vorrichtung 1901B (d.h. einer ICU) verbundene Schreibweg getrimmt werden.
  • Der Hybridschalter 1900A/1900B kann die Anzahl der benutzten Ressourcen im Vergleich zu einem vollständigen Koppelpunkt-Schalter reduzieren. Insbesondere die Logikgatter, die bei dem Hybridschalter verwendet werden, benutzen weniger Ressourcen als die Multiplexer des Koppelpunkt-Schalters. Dieser Vorteil muß jedoch gegen die potentielle Verringerung der Leistung abgewogen werden. Bei einer Ausführungsform könnte die vorliegende Erfindung festlegen, daß ein erster Satz Slave-Vorrichtungen, der langsamer ist als ein zweiter Satz Slave-Vorrichtungen, so konfiguriert sein könnte, daß er den Shared-Bus-Abschnitt oder den Hybridschalter verwendet, während der zweite Satz Slave-Vorrichtungen so konfiguriert sein könnte, daß er den Koppelpunktabschnitt des Hybridschalters verwendet. Bei einer FPGA-Umgebung können Systemkonstrukteure ohne weiteres die entsprechende Mischung aus Shared-Bus-/Koppelpunkt-Schalter-Ressourcen festlegen, um die Leistung auf ein Maximum zu steigern und die Fläche auf ein Minimum zu verringern.
  • G. SOFTWARE-TOOLS
  • Gemäß der vorliegenden Erfindung wird ein Verfahren zum Erzeugen eines Konfigurationsbitstroms für eine programmierbare Logikvorrichtung (Programmable Logic Device = PLD) angegeben. Dieses Verfahren kann ohne weiteres in das unter Bezugnahme auf 3 beschriebene System integriert werden. Zu dem Verfahren der vorliegenden Erfindung gehört insbesondere das Aktivieren eines Kerngenerators, das Auswählen eines programmierbaren Schnittstellenkerns mit Hilfe des Kerngenerators und das Bereitstellen des programmierbaren Schnittstellenkerns für ein PLD-Software-Tool, das den Konfigurationsbitstrom erzeugt. Die PLD-Software erhält nicht nur den programmierbaren Schnittstellenkern der vorliegenden Erfindung, sondern kann auch eine Struktur auf oberster Ebene erhalten, die von einem Anwender bereitgestellt wird. Es ist wichtig, dass der programmierbare Schnittstellenkern gezielt mehrere Compliance-Ebenen bereitstellen kann. Der programmierbare Schnittstellenkern kann beispielsweise eine Teilmenge der Funktionen des PLB (Prozessor-Local-Bus) bereitstellen, wie weiter oben ausführlich beschrieben wird. Bei einer Ausführungsform kann der programmierbare Schnittstellenkern die Teilmenge auf die Funktionalität zurechtschneiden, die von der Struktur auf oberster Ebene benötigt wird.
  • Die hier erfolgten Beschreibungen der vorliegenden Erfindung dienen nur der Veranschaulichung und nicht der Eingrenzung. Verschiedene Ausführungsformen der vorliegenden Erfindung sind insbesondere weiter oben ausführlich beschrieben worden. Modifikationen an diesen Ausführungsformen werden für Fachleute offensichtlich sein. Aus diesem Grund kann der Schutzumfang der vorliegenden Erfindung nur durch die beiliegenden Ansprüche definiert werden.

Claims (13)

  1. Programmierbare Logikvorrichtung mit: einer zentralen Verarbeitungseinheit (401); einer mit der zentralen Verarbeitungseinheit (401) gekoppelten programmierbaren Schnittstelle (402), wobei die programmierbare Schnittstelle (402) einen Koppelpunkt-Schalter (500) zum Koppeln einer Vielzahl von Vorrichtungen (404, 406, 410) einschließt, wobei der Koppelpunkt-Schalter (500) Adreß/Steuerwege und Datenwege einschließt; und einer ersten Vorrichtung (404, 406, 410) entweder zum Liefern von Informationen an die zentrale Verarbeitungseinheit (401) oder zum Empfangen von Informationen von dieser über die programmierbare Schnittstelle (402).
  2. Programmierbare Logikvorrichtung nach Anspruch 1, wobei jede Vorrichtung aus der Vielzahl von Vorrichtungen (404, 406, 410) eines von folgendem ermöglicht: Liefern von Informationen an die zentrale Verarbeitungseinheit (401) über die programmierbare Schnittstelle (402), Empfangen von Informationen von der zentralen Verarbeitungseinheit (401) über die programmierbare Schnittstelle (402) und Kommunizieren mit einer anderen Vorrichtung (404, 406, 410) über die programmierbare Schnittstelle (402).
  3. Programmierbare Logikvorrichtung nach Anspruch 1, wobei die Adreß/Steuerwege von einem ersten Satz von programmierbaren Ressourcen gebildet werden und die Datenwege von einem zweiten Satz von programmierbaren Ressourcen gebildet werden.
  4. Programmierbare Logikvorrichtung nach Anspruch 1, wobei die Adreß/Steuerwege und die Datenwege anpaßbar sind.
  5. Programmierbare Logikvorrichtung nach Anspruch 1, wobei der Koppelpunkt-Schalter (500) parametrisierbar ist.
  6. Programmierbare Logikvorrichtung nach Anspruch 2, ferner mit einem peripheren Bus (403), der mit der programmierbaren Schnittstelle (402) gekoppelt ist; wobei ein Brückenmodul den peripheren Bus (403) mit der programmierbaren Schnittstelle koppelt.
  7. Programmierbare Logikvorrichtung nach Anspruch 6, wobei eine erste Gruppe von Vorrichtungen (404, 406) aus der Vielzahl von Vorrichtungen mit dem peripheren Bus (403) gekoppelt ist und mit der programmierbaren Schnittstelle (402) über das Brückenmodul gekoppelt ist.
  8. Programmierbare Logikvorrichtung nach Anspruch 7, wobei eine zweite Gruppe von Vorrichtungen (410) aus der Vielzahl von Vorrichtungen nicht über das Brückenmodul mit der programmierbaren Schnittstelle (402) gekoppelt ist.
  9. Programmierbare Logikvorrichtung nach Anspruch 7, wobei die erste Gruppe von Vorrichtungen (404, 406) eine Vielzahl von vom Anwender vorgesehenen Kernen einschließt.
  10. Programmierbare Logikvorrichtung nach Anspruch 9, wobei mindestens ein Kern eine Master/Slave- oder eine Master- oder eine Slave-Funktionalität ermöglicht.
  11. Programmierbare Logikvorrichtung nach Anspruch 8, ferner mit mindestens einer Speichervorrichtung, wobei die mindestens eine Speichervorrichtung Teil der zweiten Gruppe von Vorrichtungen (410) ist.
  12. Programmierbare Logikvorrichtung nach Anspruch 8, ferner mit einer chipexternen Vorrichtung (410), wobei die chipexterne Vorrichtung Teil der zweiten Gruppe von Vorrichtungen ist; wobei die chipexterne Vorrichtung (410) eine Vorrichtung mit doppelter Datenrate oder eine Speichervorrichtung einschließt.
  13. Programmierbare Logikvorrichtung nach Anspruch 6, ferner mit einer Hochgeschwindigkeits-Busschnittstelle (407), die mit der programmierbaren Schnittstelle (402) und dem peripheren Bus (403) gekoppelt ist, wobei die Hochgeschwindigkeits-Busschnittstelle (407) Kommunikation mit einem chipexternen Vorrichtung ermöglicht.
DE60213601T 2001-05-18 2002-04-17 Programmierbare hardwarelogik, welche ein programmierbares interface und eine zentrale recheneinheit beinhaltet Expired - Lifetime DE60213601T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/861,112 US7076595B1 (en) 2001-05-18 2001-05-18 Programmable logic device including programmable interface core and central processing unit
US861112 2001-05-18
PCT/US2002/012234 WO2002095598A2 (en) 2001-05-18 2002-04-17 Programmable logic device including programmable interface core and central processing unit

Publications (2)

Publication Number Publication Date
DE60213601D1 DE60213601D1 (de) 2006-09-14
DE60213601T2 true DE60213601T2 (de) 2007-08-09

Family

ID=25334909

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60213601T Expired - Lifetime DE60213601T2 (de) 2001-05-18 2002-04-17 Programmierbare hardwarelogik, welche ein programmierbares interface und eine zentrale recheneinheit beinhaltet

Country Status (6)

Country Link
US (3) US7076595B1 (de)
EP (1) EP1402395B1 (de)
JP (1) JP3935847B2 (de)
CA (1) CA2446983C (de)
DE (1) DE60213601T2 (de)
WO (1) WO2002095598A2 (de)

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US7076595B1 (en) * 2001-05-18 2006-07-11 Xilinx, Inc. Programmable logic device including programmable interface core and central processing unit
US6976239B1 (en) 2001-06-12 2005-12-13 Altera Corporation Methods and apparatus for implementing parameterizable processors and peripherals
US20030033374A1 (en) * 2001-07-24 2003-02-13 Condor Engineering, Inc. Method and system for implementing a communications core on a single programmable device
US7145903B2 (en) * 2001-09-06 2006-12-05 Meshnetworks, Inc. Multi-master bus architecture for system-on-chip designs
US6857035B1 (en) 2001-09-13 2005-02-15 Altera Corporation Methods and apparatus for bus mastering and arbitration
US7420392B2 (en) * 2001-09-28 2008-09-02 Xilinx, Inc. Programmable gate array and embedded circuitry initialization and processing
US7676588B2 (en) * 2001-10-05 2010-03-09 International Business Machines Corporation Programmable network protocol handler architecture
US6886092B1 (en) 2001-11-19 2005-04-26 Xilinx, Inc. Custom code processing in PGA by providing instructions from fixed logic processor portion to programmable dedicated processor portion
US6941538B2 (en) * 2002-02-22 2005-09-06 Xilinx, Inc. Method and system for integrating cores in FPGA-based system-on-chip (SoC)
US7085973B1 (en) 2002-07-09 2006-08-01 Xilinx, Inc. Testing address lines of a memory controller
US7755641B2 (en) * 2002-08-13 2010-07-13 Broadcom Corporation Method and system for decimating an indexed set of data elements
US7061485B2 (en) * 2002-10-31 2006-06-13 Hewlett-Packard Development Company, Lp. Method and system for producing a model from optical images
US6920627B2 (en) * 2002-12-13 2005-07-19 Xilinx, Inc. Reconfiguration of a programmable logic device using internal control
US7512103B1 (en) * 2003-06-19 2009-03-31 Rockwell Collins, In.C Virtual channel communications system
US7421014B2 (en) * 2003-09-11 2008-09-02 Xilinx, Inc. Channel bonding of a plurality of multi-gigabit transceivers
US7885320B1 (en) 2003-09-11 2011-02-08 Xilinx, Inc. MGT/FPGA clock management system
JP3966873B2 (ja) * 2003-10-08 2007-08-29 株式会社東芝 論理回路装置、動作電圧変更方法
US20050097291A1 (en) * 2003-10-31 2005-05-05 Infineon Technologies North America Corp. Multiple data rate bus using return clock
US7340548B2 (en) * 2003-12-17 2008-03-04 Microsoft Corporation On-chip bus
US7209998B2 (en) * 2004-02-04 2007-04-24 Qualcomm Incorporated Scalable bus structure
JP2005250833A (ja) * 2004-03-04 2005-09-15 Nec Electronics Corp バスシステム及びアクセス制御方法
JP2006048530A (ja) * 2004-08-06 2006-02-16 Fujitsu Ltd バススイッチ回路及びバススイッチシステム
US7225285B1 (en) * 2004-09-07 2007-05-29 Altera Corporation Assigning interrupts in multi-master systems
US7363473B2 (en) * 2004-09-10 2008-04-22 Intel Corporation System for dynamic service provisioning
US7284229B1 (en) 2004-10-01 2007-10-16 Xilinx, Inc. Multiple bitstreams enabling the use of partially defective programmable integrated circuits while avoiding localized defects therein
US7424655B1 (en) 2004-10-01 2008-09-09 Xilinx, Inc. Utilizing multiple test bitstreams to avoid localized defects in partially defective programmable integrated circuits
WO2006039711A1 (en) * 2004-10-01 2006-04-13 Lockheed Martin Corporation Service layer architecture for memory access system and method
US7353317B2 (en) * 2004-12-28 2008-04-01 Intel Corporation Method and apparatus for implementing heterogeneous interconnects
US7676782B2 (en) * 2004-12-29 2010-03-09 Dhabalendu Samanta Efficient method for mapping a logic design on field programmable gate arrays
JP4457025B2 (ja) * 2005-02-17 2010-04-28 Okiセミコンダクタ株式会社 無線集積回路
CN101133597A (zh) * 2005-03-04 2008-02-27 皇家飞利浦电子股份有限公司 用于仲裁共享资源的电子设备和方法
US7856026B1 (en) * 2005-06-28 2010-12-21 Altera Corporation Configurable central memory buffered packet switch module for use in a PLD
US7426709B1 (en) * 2005-08-05 2008-09-16 Xilinx, Inc. Auto-generation and placement of arbitration logic in a multi-master multi-slave embedded system
WO2007029053A1 (en) * 2005-09-09 2007-03-15 Freescale Semiconductor, Inc. Interconnect and a method for designing an interconnect
US7412680B1 (en) * 2005-09-15 2008-08-12 Altera Corporation Method and apparatus for performing integrated global routing and buffer insertion
US7382154B2 (en) * 2005-10-03 2008-06-03 Honeywell International Inc. Reconfigurable network on a chip
JP2007122410A (ja) * 2005-10-28 2007-05-17 Nec Electronics Corp バス調停回路及びバス調停方法
US7392032B2 (en) * 2005-12-30 2008-06-24 L3 Communications Corporation Modular ASIC with crosspoint switch
US7536669B1 (en) * 2006-08-30 2009-05-19 Xilinx, Inc. Generic DMA IP core interface for FPGA platform design
US7594207B2 (en) * 2006-09-13 2009-09-22 Cadence Design Systems, Inc. Computationally efficient design rule checking for circuit interconnect routing design
US8289966B1 (en) 2006-12-01 2012-10-16 Synopsys, Inc. Packet ingress/egress block and system and method for receiving, transmitting, and managing packetized data
US8706987B1 (en) 2006-12-01 2014-04-22 Synopsys, Inc. Structured block transfer module, system architecture, and method for transferring
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US7734846B2 (en) * 2006-12-20 2010-06-08 L3 Communications Integrated Systems, L.P. Datapipe CPU register array
US7685332B2 (en) * 2006-12-20 2010-03-23 L3 Communications Integrated Systems, L.P. Datapipe CPU register array and methods of use
US8065356B2 (en) * 2006-12-20 2011-11-22 L3 Communications Integrated Systems, L.P. Datapipe synchronization device
US7655278B2 (en) * 2007-01-30 2010-02-02 Sabic Innovative Plastics Ip B.V. Composite-forming method, composites formed thereby, and printed circuit boards incorporating them
US8407658B2 (en) 2007-02-01 2013-03-26 International Business Machines Corporation Methods, systems, and computer program products for using direct memory access to initialize a programmable logic device
US7913022B1 (en) 2007-02-14 2011-03-22 Xilinx, Inc. Port interface modules (PIMs) in a multi-port memory controller (MPMC)
US7720636B1 (en) 2007-02-14 2010-05-18 Xilinx, Inc. Performance monitors (PMs) for measuring performance in a system and providing a record of transactions performed
US7711907B1 (en) * 2007-02-14 2010-05-04 Xilinx, Inc. Self aligning state machine
US8479124B1 (en) 2007-02-14 2013-07-02 Xilinx, Inc. Graphical user interface (GUI) including input files with information that determines representation of subsequent content displayed by the GUI
US7865695B2 (en) * 2007-04-19 2011-01-04 L3 Communications Integrated Systems, L.P. Reading and writing a memory element within a programmable processing element in a plurality of modes
US20080263322A1 (en) * 2007-04-19 2008-10-23 L3 Communications Integrated Systems, L.P. Mac architecture for pipelined accumulations
US7673274B2 (en) * 2007-04-19 2010-03-02 L3 Communications Integrated Systems, LP Datapipe interpolation device
US7394287B1 (en) * 2007-05-21 2008-07-01 Altera Corporation Programmable logic device having complex logic blocks with improved logic cell functionality
US8468287B2 (en) * 2007-08-22 2013-06-18 Nec Corporation Information processor and information processing method
US7830172B1 (en) * 2007-09-13 2010-11-09 Xilinx, Inc. Accessing user registers in an integrated circuit
US7810059B1 (en) 2007-10-11 2010-10-05 Xilinx, Inc. Methods of enabling the validation of an integrated circuit adapted to receive one of a plurality of configuration bitstreams
US7853916B1 (en) * 2007-10-11 2010-12-14 Xilinx, Inc. Methods of using one of a plurality of configuration bitstreams for an integrated circuit
US7865644B2 (en) * 2007-10-30 2011-01-04 International Business Machines Corporation Method and apparatus for attaching multiple slave devices to a single bus controller interface while supporting command pipelining
WO2009116171A1 (ja) * 2008-03-21 2009-09-24 富士通株式会社 情報処理装置、データ転送回路および情報処理装置の制御方法
US8006021B1 (en) * 2008-03-27 2011-08-23 Xilinx, Inc. Processor local bus bridge for an embedded processor block core in an integrated circuit
US8441298B1 (en) 2008-07-01 2013-05-14 Cypress Semiconductor Corporation Analog bus sharing using transmission gates
US7934046B2 (en) * 2008-07-02 2011-04-26 International Business Machines Corporation Access table lookup for bus bridge
DE102008037431B4 (de) 2008-10-10 2013-06-06 Lear Corporation Gmbh Verfahren zur dynamischen Konfiguration eines Signalaufbereiters
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8135884B1 (en) 2009-05-04 2012-03-13 Cypress Semiconductor Corporation Programmable interrupt routing system
US8179161B1 (en) 2009-05-05 2012-05-15 Cypress Semiconductor Corporation Programmable input/output circuit
US8487655B1 (en) 2009-05-05 2013-07-16 Cypress Semiconductor Corporation Combined analog architecture and functionality in a mixed-signal array
US9612987B2 (en) * 2009-05-09 2017-04-04 Cypress Semiconductor Corporation Dynamically reconfigurable analog routing circuits and methods for system on a chip
EP2282268B1 (de) * 2009-07-23 2012-11-21 STMicroelectronics Srl Schnittstellenvorrichtung und -verfahren, beispielsweise für System-on-Chip
US8285912B2 (en) * 2009-08-07 2012-10-09 Arm Limited Communication infrastructure for a data processing apparatus and a method of operation of such a communication infrastructure
US20120210028A1 (en) * 2009-11-11 2012-08-16 Zte Corporation Service scheduling system and method, and control device
US20110179395A1 (en) * 2010-01-20 2011-07-21 Maxim Smirnov Distributed Pipeline Synthesis for High Level Electronic Design
US8656081B2 (en) * 2010-03-12 2014-02-18 The United States Of America As Represented By The Secretary Of The Navy System and method for coordinating control of an output device by multiple control consoles
US8667206B2 (en) * 2010-03-12 2014-03-04 The United States Of America As Represented By The Secretary Of The Navy Interface device for coordinating control of an output device by multiple control consoles
US8718967B2 (en) * 2010-05-28 2014-05-06 Advantest Corporation Flexible storage interface tester with variable parallelism and firmware upgradeability
JP2012128627A (ja) * 2010-12-15 2012-07-05 Toshiba Corp データ転送システム
US9762246B2 (en) 2011-05-20 2017-09-12 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device with a storage circuit having an oxide semiconductor
US8583844B2 (en) * 2011-05-31 2013-11-12 Lsi Corporation System and method for optimizing slave transaction ID width based on sparse connection in multilayer multilevel interconnect system-on-chip architecture
US8793421B2 (en) 2011-10-31 2014-07-29 Apple Inc. Queue arbitration using non-stalling request indication
CN103136163B (zh) * 2011-11-29 2015-06-24 中国航空工业集团公司第六三一研究所 可配置实现fc-ae-asm和fc-av协议的协议处理器芯片
JP5975811B2 (ja) * 2012-09-12 2016-08-23 レノボ・エンタープライズ・ソリューションズ(シンガポール)プライベート・リミテッド 計測した信号トレースデータのインテグリティ・チェック
US9153292B2 (en) * 2013-03-07 2015-10-06 Xilinx, Inc. Integrated circuit devices having memory and methods of implementing memory in an integrated circuit device
US9665670B1 (en) * 2013-06-28 2017-05-30 Altera Corporation Emulation of synchronous pipeline registers in integrated circuits with asynchronous interconnection resources
US9674118B2 (en) * 2014-03-19 2017-06-06 xCelor LLC System and method for low-latency network data switching
JP6452719B2 (ja) * 2014-04-03 2019-01-16 ホアウェイ・テクノロジーズ・カンパニー・リミテッド フィールドプログラマブルゲートアレイ及び通信方法
US9558129B2 (en) 2014-06-10 2017-01-31 Xilinx, Inc. Circuits for and methods of enabling the access to data
US9846661B2 (en) * 2014-07-17 2017-12-19 Empire Technology Development Llc Utilization of solid state memory devices
US10365947B2 (en) 2014-07-28 2019-07-30 Hemett Packard Enterprise Development Lp Multi-core processor including a master core performing tasks involving operating system kernel-related features on behalf of slave cores
US9806885B1 (en) * 2014-09-26 2017-10-31 Rockwell Collins, Inc. Dual use cryptographic system and method
US9798686B2 (en) * 2014-11-19 2017-10-24 Silicon Laboratories Inc. Slave side bus arbitration
US9880966B1 (en) * 2015-09-03 2018-01-30 Xilinx, Inc. Encapsulating metadata of a platform for application-specific tailoring and reuse of the platform in an integrated circuit
US10042692B1 (en) * 2015-09-29 2018-08-07 Xilinx, Inc. Circuit arrangement with transaction timeout detection
US9979693B2 (en) * 2016-01-28 2018-05-22 Fiber Logic Communications, Inc. IP allocation method for use in telecommunication network automatic construction
US10120831B1 (en) * 2016-12-02 2018-11-06 Xilinx, Inc. Circuit and method for handling write and read requests between a master circuit and a slave circuit in different clock domains
US10936597B2 (en) 2017-11-21 2021-03-02 Gto Llc Systems and methods for generating customized filtered-and-partitioned market-data feeds
US10852800B1 (en) * 2019-01-25 2020-12-01 Cadence Design Systems, Inc. Multi-modal power control
KR20210025403A (ko) * 2019-08-27 2021-03-09 삼성전자주식회사 무선 통신 시스템에서 다중 fpga를 운영하기 위한 장치 및 방법
CN113227917A (zh) * 2019-12-05 2021-08-06 Mzta科技中心有限公司 模块化plc自动配置系统
WO2021112708A1 (ru) * 2019-12-05 2021-06-10 Общество С Ограниченной Ответственностью "Научно-Технический Центр Мзта" Контроллер с процессорным субмодулем
CN111766807A (zh) * 2020-06-23 2020-10-13 济南浪潮高新科技投资发展有限公司 一种医院病房夜班巡视机器人控制系统
WO2023229616A1 (en) * 2022-05-25 2023-11-30 Rakuten Symphony Uk Ltd Distributed firmware interfacing processors and intergrated circuits

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE34363E (en) 1984-03-12 1993-08-31 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US4706216A (en) 1985-02-27 1987-11-10 Xilinx, Inc. Configurable logic element
US5142625A (en) 1985-06-12 1992-08-25 Minolta Camera Kabushiki Kaisha One-chip microcomputer including a programmable logic array for interrupt control
US5072418A (en) 1989-05-04 1991-12-10 Texas Instruments Incorporated Series maxium/minimum function computing devices, systems and methods
US4855669A (en) 1987-10-07 1989-08-08 Xilinx, Inc. System for scan testing of logic circuit networks
US4878174A (en) 1987-11-03 1989-10-31 Lsi Logic Corporation Flexible ASIC microcomputer permitting the modular modification of dedicated functions and macroinstructions
US5111423A (en) * 1988-07-21 1992-05-05 Altera Corporation Programmable interface for computer system peripheral circuit card
JPH02235156A (ja) 1989-03-08 1990-09-18 Canon Inc 情報処理装置
US5274570A (en) 1989-05-22 1993-12-28 Mazda Motor Corporation Integrated circuit having metal substrate
US5109503A (en) * 1989-05-22 1992-04-28 Ge Fanuc Automation North America, Inc. Apparatus with reconfigurable counter includes memory for storing plurality of counter configuration files which respectively define plurality of predetermined counters
JPH03210649A (ja) 1990-01-12 1991-09-13 Fujitsu Ltd マイクロコンピュータおよびそのバスサイクル制御方法
US5550782A (en) 1991-09-03 1996-08-27 Altera Corporation Programmable logic array integrated circuits
US5347181A (en) 1992-04-29 1994-09-13 Motorola, Inc. Interface control logic for embedding a microprocessor in a gate array
WO1993025968A1 (en) 1992-06-10 1993-12-23 Furtek Frederick C A modular computer based on reconfigurable logic
US5671355A (en) 1992-06-26 1997-09-23 Predacomm, Inc. Reconfigurable network interface apparatus and method
US5339262A (en) 1992-07-10 1994-08-16 Lsi Logic Corporation Method and apparatus for interim, in-situ testing of an electronic system with an inchoate ASIC
US5311114A (en) 1992-10-27 1994-05-10 Seeq Technology, Incorporated Apparatus and method for full-duplex ethernet communications
GB9223226D0 (en) 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
GB9303084D0 (en) 1993-02-16 1993-03-31 Inmos Ltd Programmable logic circuit
JPH0736858A (ja) 1993-07-21 1995-02-07 Hitachi Ltd 信号処理プロセッサ
US5457410A (en) 1993-08-03 1995-10-10 Btr, Inc. Architecture and interconnect scheme for programmable logic circuits
WO1995004402A1 (en) 1993-08-03 1995-02-09 Xilinx, Inc. Microprocessor-based fpga
US5740404A (en) 1993-09-27 1998-04-14 Hitachi America Limited Digital signal processor with on-chip select decoder and wait state generator
US5500943A (en) 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion
EP0734573B1 (de) 1993-12-13 2002-04-03 Lattice Semiconductor Corporation Anwendungsspezifische module in einem programmierbaren logikbaustein
US5742179A (en) 1994-01-27 1998-04-21 Dyna Logic Corporation High speed programmable logic architecture
US5574942A (en) 1994-02-28 1996-11-12 Intel Corporation Hybrid execution unit for complex microprocessor
US5543640A (en) 1994-03-15 1996-08-06 National Semiconductor Corporation Logical three dimensional interconnections between integrated circuit chips using a two dimensional multi-chip module
US5572717A (en) * 1994-04-06 1996-11-05 Altera Corporation Method and apparatus for assigning and analyzing timing specifications in a computer aided engineering program
US5600845A (en) 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5574930A (en) 1994-08-12 1996-11-12 University Of Hawaii Computer system and method using functional memory
US5732250A (en) 1994-09-15 1998-03-24 Intel Corporation Multi-function microprocessor wait state mechanism using external control line
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US5892961A (en) 1995-02-17 1999-04-06 Xilinx, Inc. Field programmable gate array having programming instructions in the configuration bitstream
US5737631A (en) 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
US5748979A (en) 1995-04-05 1998-05-05 Xilinx Inc Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
WO1996034346A1 (en) 1995-04-28 1996-10-31 Xilinx, Inc. Microprocessor with distributed registers accessible by programmable logic device
GB9508931D0 (en) 1995-05-02 1995-06-21 Xilinx Inc Programmable switch for FPGA input/output signals
EP0780017A1 (de) 1995-07-10 1997-06-25 Xilinx, Inc. System mit feldprogrammierbarem gatterfeld und intelligentem speicher
US6175952B1 (en) 1997-05-27 2001-01-16 Altera Corporation Technique of fabricating integrated circuits having interfaces compatible with different operating voltage conditions
US5933023A (en) 1996-09-03 1999-08-03 Xilinx, Inc. FPGA architecture having RAM blocks with programmable word length and width and dedicated address and data lines
KR19990071991A (ko) 1996-10-10 1999-09-27 파레 호세 마리아 인센서 혼합-신호응용의프로토타이핑을위한공정및상기공정의응용을위한칩상에필드프로그램할수있는시스템
US6102964A (en) 1996-10-28 2000-08-15 Altera Corporation Fitting for incremental compilation of electronic designs
US5889788A (en) 1997-02-03 1999-03-30 Motorola, Inc. Wrapper cell architecture for path delay testing of embedded core microprocessors and method of operation
US6172990B1 (en) 1997-06-19 2001-01-09 Xaqti Corporation Media access control micro-RISC stream processor and method for implementing the same
US5874834A (en) 1997-03-04 1999-02-23 Xilinx, Inc. Field programmable gate array with distributed gate-array functionality
US6060903A (en) * 1997-05-06 2000-05-09 Altera Corporation Programmable logic device architecture incorporating a dedicated cross-bar switch
US5943490A (en) * 1997-05-30 1999-08-24 Quickturn Design Systems, Inc. Distributed logic analyzer for use in a hardware logic emulation system
US6011407A (en) 1997-06-13 2000-01-04 Xilinx, Inc. Field programmable gate array with dedicated computer bus interface and method for configuring both
US5970254A (en) 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US5995424A (en) 1997-07-16 1999-11-30 Tanisys Technology, Inc. Synchronous memory test system
US6020755A (en) 1997-09-26 2000-02-01 Lucent Technologies Inc. Hybrid programmable gate arrays
US6034542A (en) * 1997-10-14 2000-03-07 Xilinx, Inc. Bus structure for modularized chip with FPGA modules
US6279045B1 (en) 1997-12-29 2001-08-21 Kawasaki Steel Corporation Multimedia interface having a multimedia processor and a field programmable gate array
US6147890A (en) * 1997-12-30 2000-11-14 Kawasaki Steel Corporation FPGA with embedded content-addressable memory
US6096091A (en) 1998-02-24 2000-08-01 Advanced Micro Devices, Inc. Dynamically reconfigurable logic networks interconnected by fall-through FIFOs for flexible pipeline processing in a system-on-a-chip
US6178541B1 (en) 1998-03-30 2001-01-23 Lsi Logic Corporation PLD/ASIC hybrid integrated circuit
US6163166A (en) 1998-05-27 2000-12-19 Altera Corporation Programmable logic device with selectable schmitt-triggered and threshold-triggered buffers
US6282627B1 (en) 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6480989B2 (en) 1998-06-29 2002-11-12 Lsi Logic Corporation Integrated circuit design incorporating a power mesh
US6467009B1 (en) 1998-10-14 2002-10-15 Triscend Corporation Configurable processor system unit
US6343207B1 (en) 1998-11-03 2002-01-29 Harris Corporation Field programmable radio frequency communications equipment including a configurable if circuit, and method therefor
US6154051A (en) 1998-11-05 2000-11-28 Vantis Corporation Tileable and compact layout for super variable grain blocks within FPGA device
US6181163B1 (en) 1999-01-21 2001-01-30 Vantis Corporation FPGA integrated circuit having embedded SRAM memory blocks and interconnect channel for broadcasting address and control signals
US6356987B1 (en) 1999-03-10 2002-03-12 Atmel Corporation Microprocessing device having programmable wait states
US6301696B1 (en) 1999-03-30 2001-10-09 Actel Corporation Final design method of a programmable logic device that is based on an initial design that consists of a partial underlying physical template
US6211697B1 (en) 1999-05-25 2001-04-03 Actel Integrated circuit that includes a field-programmable gate array and a hard gate array having the same underlying structure
US6272451B1 (en) 1999-07-16 2001-08-07 Atmel Corporation Software tool to allow field programmable system level devices
GB2352548B (en) * 1999-07-26 2001-06-06 Sun Microsystems Inc Method and apparatus for executing standard functions in a computer system
JP3512166B2 (ja) 1999-11-26 2004-03-29 松下電器産業株式会社 プログラマブルロジックデバイスの設定方法
US6519753B1 (en) 1999-11-30 2003-02-11 Quicklogic Corporation Programmable device with an embedded portion for receiving a standard circuit design
US6588006B1 (en) 1999-12-16 2003-07-01 Lsi Logic Corporation Programmable ASIC
US6434735B1 (en) 1999-12-16 2002-08-13 Lsi Logic Corporation Method for programming an FPGA and implementing an FPGA interconnect
US6539508B1 (en) 2000-03-15 2003-03-25 Xilinx, Inc. Methods and circuits for testing programmable logic
US6587995B1 (en) 2000-04-19 2003-07-01 Koninklijke Philips Electronics N.V. Enhanced programmable core model with integrated graphical debugging functionality
US6535043B2 (en) * 2000-05-26 2003-03-18 Lattice Semiconductor Corp Clock signal selection system, method of generating a clock signal and programmable clock manager including same
EP1307820B1 (de) * 2000-06-06 2014-07-23 Vitesse Semiconductor Corporation Koppelpunktvermittlung mit koppelmatrixmodul
US6353331B1 (en) 2000-07-10 2002-03-05 Xilinx, Inc. Complex programmable logic device with lookup table
US6507942B1 (en) 2000-07-11 2003-01-14 Xilinx , Inc. Methods and circuits for testing a circuit fabrication process for device uniformity
US6693456B2 (en) * 2000-08-04 2004-02-17 Leopard Logic Inc. Interconnection network for a field programmable gate array
US6518787B1 (en) 2000-09-21 2003-02-11 Triscend Corporation Input/output architecture for efficient configuration of programmable input/output cells
US6611951B1 (en) 2000-11-30 2003-08-26 Lsi Logic Corporation Method for estimating cell porosity of hardmacs
US6522167B1 (en) 2001-01-09 2003-02-18 Xilinx, Inc. User configurable on-chip memory system
US6662285B1 (en) * 2001-01-09 2003-12-09 Xilinx, Inc. User configurable memory system having local and global memory blocks
US6532572B1 (en) 2001-03-14 2003-03-11 Lsi Logic Corporation Method for estimating porosity of hardmacs
US6675272B2 (en) * 2001-04-24 2004-01-06 Rambus Inc. Method and apparatus for coordinating memory operations among diversely-located memory components
US6541991B1 (en) 2001-05-04 2003-04-01 Xilinx Inc. Interface apparatus and method for testing different sized ball grid array integrated circuits
US7076595B1 (en) * 2001-05-18 2006-07-11 Xilinx, Inc. Programmable logic device including programmable interface core and central processing unit
US6601227B1 (en) * 2001-06-27 2003-07-29 Xilinx, Inc. Method for making large-scale ASIC using pre-engineered long distance routing structure
US6510548B1 (en) * 2001-08-03 2003-01-21 Xilinx, Inc. Method for providing pre-designed modules for programmable logic devices
US6781407B2 (en) * 2002-01-09 2004-08-24 Xilinx, Inc. FPGA and embedded circuitry initialization and processing
US6798239B2 (en) * 2001-09-28 2004-09-28 Xilinx, Inc. Programmable gate array having interconnecting logic to support embedded fixed logic circuitry
US6886092B1 (en) * 2001-11-19 2005-04-26 Xilinx, Inc. Custom code processing in PGA by providing instructions from fixed logic processor portion to programmable dedicated processor portion
US6686769B1 (en) * 2001-12-14 2004-02-03 Altera Corporation Programmable I/O element circuit for high speed logic devices

Also Published As

Publication number Publication date
US20060236018A1 (en) 2006-10-19
JP2004529581A (ja) 2004-09-24
EP1402395B1 (de) 2006-08-02
EP1402395A2 (de) 2004-03-31
WO2002095598A3 (en) 2003-12-31
US20070255886A1 (en) 2007-11-01
US7406557B2 (en) 2008-07-29
US7266632B2 (en) 2007-09-04
JP3935847B2 (ja) 2007-06-27
CA2446983A1 (en) 2002-11-28
CA2446983C (en) 2010-08-10
DE60213601D1 (de) 2006-09-14
WO2002095598A2 (en) 2002-11-28
US7076595B1 (en) 2006-07-11

Similar Documents

Publication Publication Date Title
DE60213601T2 (de) Programmierbare hardwarelogik, welche ein programmierbares interface und eine zentrale recheneinheit beinhaltet
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
EP0951682B1 (de) IO- UND SPEICHERBUSSYSTEM FÜR DFPs SOWIE BAUSTEINE MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN
EP0948842B1 (de) VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
US9047440B2 (en) Logical cell array and bus system
EP0961980B1 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
US6483342B2 (en) Multi-master multi-slave system bus in a field programmable gate array (FPGA)
EP1057117B1 (de) VERFAHREN ZUM HIERARCHISCHEN CACHEN VON KONFIGURATIONSDATEN VON DATENFLUSSPROZESSOREN UND BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALER PROGRAMMIERBARER ZELLSTRUKTUR (FPGAs, DPGAs, o.dgl.)
EP1222739B1 (de) Rekonfigurierbares gate-array
DE60027748T2 (de) Busarchitektur und verteiltes busarbitrierungsverfahren für einen kommunikationsprozessor
DE112011103208T5 (de) Hochgeschwindigkeits-Speichersystem
DE102005009021A1 (de) Vereinheitliche USB OTG-Steuerungseinheit
CN109416674A (zh) 用于暂存器使能的多核处理器的元组编码感知直接存储器访问引擎
WO2004021176A2 (de) Verfahren und vorrichtung zur datenverarbeitung
DE10028397A1 (de) Registrierverfahren
DE60132424T2 (de) Taktschutz für gemeinsame Komponenten einer Multiprozessor-DSP Vorrichtung
DE102004062442A1 (de) AMBA-System und Betriebsverfahren
JPH1049510A (ja) 集積回路プロセッサ
DE69828890T2 (de) Konfigurierbare speichersteuerungsvorrichtung und verfahren hierfür
DE102017200456A1 (de) Recheneinheit und Betriebsverfahren hierfür
DE112017006207T5 (de) Verbindungsnetz, das mehrere konsistenzmechanismen, mehrere protokolle und mehrere vermittlungsmechanismen unterstützt
US20180300278A1 (en) Array Processor Having a Segmented Bus System
EP1348257B1 (de) Zellenanordnung mit segmentierter zwischenzellstruktur
US20160154758A1 (en) Array Processor Having a Segmented Bus System
JPH11212906A (ja) 周辺機器のための優先順位調整機能を有する接続システム

Legal Events

Date Code Title Description
8364 No opposition during term of opposition