-
Technisches Gebiet der
Erfindung
-
Die Erfindung betrifft den Entwurf
und die Prüfung
von Schaltkreisen und die Architektur von Bauelementen.
-
Technischer Hintergrund
der Erfindung
-
Bekannte Entwurfs- und Fertigungsverfahren
von integrierten Schaltkreisen (ICs) und Bausteinen, die ICs enthalten,
einschließlich
der Implementierung von digitalen Signalprozessoren (DSP) oder anwendungsspezifischen
integrierten Schaltkreisen (ASIC) erfordern langwierige Entwicklungszyklen
und sind kostenaufwendig. Insbesondere ist wegen der Länge der
Entwicklungsperiode, die langwierige Entwurfs-, Verifikations- und Testarbeiten
erfordert, eine lange Zeit bis zur Markteinführung integrierter Schaltkreise
erforderlich. Während
der Verifikation und Prüfung
des Produkts können
Entwurfsfehler erkannt werden, die korrigiert und behoben werden
müssen,
wodurch die Entwicklungskosten und die Entwicklungszeit stark erhöht werden,
besonders wenn Entwurfsfehler am Ende des Prozesses erkannt werden,
zum Beispiel nach der Produktauslieferung.
-
Hardwareprodukte sind teuer, da die
bis zum Vertrieb erforderliche Zeit die ingenieurtechnischen Kosten,
den Marktverlust und so weiter beeinflußt. Kosten müssen auch
die indirekten Kosten von Testgeräten, die während der Entwicklung eingesetzt
werden, den Aufwand für
bei der Fertigung eingesetzte Testgeräte, die Größe der Lagerbestände und
die Kosten in Verbindung mit der Einstellung von Fachingenieuren
beinhalten.
-
Die Simulationsgenauigkeit ist schlecht.
Eine Simulation ist erforderlich, um die gewünschte Funktionstüchtigkeit
der Anwendung zu simulieren, während
eine weitere zur Simulation der Laufzeitfunktion der Implementierung
erforderlich ist. Wenn eine Simulation von hochauflösenden Verzögerungen
erforderlich ist, wird die Simulation umständlich. Außerdem sind Simulationen sehr
langsam, oft mehrere hundert- oder tausendmal langsamer als der
Echtzeitbetrieb.
-
Ein weiterer Nachteil bekannter Entwurfs-
und Entwicklungsverfahren ist, daß die Größe von Prototypen und elektronischen
Nicht-ASIC-Karten praktisch anwendbare Dimensionen übersteigen
kann. Die Fähigkeit
zum Testen von High-End-Systemen
auf Chip-Produkten ist wegen der sehr hohen Dichte integrierter Schaltkreise
begrenzt, was die Sondierung von interessierenden Punkten im Schaltkreis
sehr schwierig macht. Ebenso schwierig sind Tests von fertigen Produkten,
die hochintegrierte Schaltkreise enthalten, und die Verifikation
der kompletten Funktionsfähigkeit
komplexer Schaltkreise.
-
Bereits konstruierte Produkte lassen
sich schlecht an moderne Chipfertigungstechnologien anpassen, um
die Kompatibilität
von Anwendungen mit neueren Technologien sicherzustellen. Dies hat
Auswirkungen nicht nur auf den Anwendungsentwickler, sondern macht
es auch für
den Chiphersteller schwierig, neue Geometrien zu verwenden und dabei
die Entwickler in die Lage zu versetzen, ihre bereits existierenden
Anwendungen zu verwenden.
-
ASICs werden eingesetzt, um eine
Anwendung unter Verwendung einer kleineren Fläche zu implementieren, wobei
die Anwendung in ausreichender Menge vertrieben wird, um die Kundenanpassung
zu rechtfertigen. Typischerweise wird die Anwendung zunächst mit
Hilfe herkömmlicher
Entwurfsverfahren entwickelt, und nach Feststellung der Integrität des Entwurfs
wird sie in einen anwendungsspezifischen integrierten Schaltkreis
(ASIC) umgewandelt. Dies ist ein zeitraubender und kostenaufwendiger
Prozeß.
-
Typischerweise wird die Anwendungsgeschwindigkeit
durch Implementieren der Anwendung in Hardware auf Kosten der funktionellen
Flexibilität
verbessert, da die meisten Hardware-Implementierungen einer spezifischen
Anwendung zugeordnet und nicht erweiterungs- oder änderungsfähig sind.
-
Ein weiterer, mit der Industrie verbundener
Nachteil sind der relative Mangel an qualifiziertem Personal und
die Schwierigkeit, den Entwurf und die Entwicklung zu untergliedern,
damit diese unter mehreren Ingenieuren aufgeteilt werden können, um
den Entwicklungszyklus verkürzen
zu können.
-
Alle diese Beschränkungen bewirken zusammen eine
längere
Dauer und höhere
Kosten des Entwicklungs- und Fertigungszyklus. Um die Komplexität und die
Mühe zu
demonstrieren, die mit den herkömmlichen Entwurfs-
und Fertigungsverfahren zur Implementierung von logischen integrierten
Schaltkreisen oder diese enthaltenden Bausteinen verbunden sind,
werden nachstehend verschiedene Implementierungsmethoden beschrieben.
-
1 zeigt
ein Ablaufdiagramm, das den herkömmlichen
Prozeß für die Hardware-Implementierung von
integrierten Schaltkreis-Chips (IC-Chips) auf Elektronikkarten darstellt.
Während
des Kartenentwicklungsprozesses 7 wird eine Karte zur Ausführung einer
benötigten
Anwendung entwickelt. Nach diesem Prozeß ist die Karte bereit für Produktionstätigkeiten.
Die Idee und die Konzeption bezüglich
der Anwendung werden während
der Anwendungsdefinition 10 definiert, an die sich die
Schnittstellendefinition 12 anschließt. Manchmal wird die Schnittstelle
durch die Systemumgebung bestimmt, zum Beispiel in einer PC-Anwendungskarte. Manchmal
kann die Herstellerfirma der Karte die Schnittstelle auswählen; zum
Beispiel werden in einem Einschubrahmen voller Karten die meisten
Karten die gleiche Schnittstelle aufweisen. Manchmal ist die Schnittstelle
einzigartig und muß im
gleichen Prozeß wie
die übrige
Karte entworfen werden.
-
Die Technologieauswahl 16 wird
durch Echtzeiterfordernisse, Flexibilität, Größe und Anzahl der Aufgaben
beeinflußt.
Die Hardware-Implementierung wird wegen ihrer besseren Echtzeitleistung
für eine
Anwendung gewählt.
Die Hardware-Implementierung
ist die schnellste (Echtzeit-) Lösung,
kann aber nur eine begrenzte Anzahl von Aufgaben ausführen, ist
nicht flexibel und ist groß.
Die bis zur Vermarktung erforderliche Zeit ist sehr lang. Der Prozeß von der
Entwicklung bis zur Fertigung kann Monate bis zu mehr als einem
Jahr dauern, wobei neun Monate als ein sehr gutes Ergebnis angesehen
werden. Die Entwicklungs- und Fertigungsprozesse sind kostspielig.
-
Der für die Anwendung verfügbare Raum
ist ein wichtiger Parameter für
den Technologieauswahlprozeß.
Normalerweise gilt, je kleiner, desto besser. Wenn die Größe entscheidend
ist, kann die Karte in einen ASIC umgewandelt werden, in welchem
Fall sich die Entwicklungszeit wegen der Notwendigkeit der ASIC-Umwandlung
um mehrere Monate verlängert.
Neun Monate sind eine normale Verlängerungszeit. In der Praxis leidet
die ASIC-Umwandlung an allen obenerwähnten Problemen.
-
In den meisten Fällen, besonders für den Entwurf
von komplexer digitaler Hochgeschwindigkeits-Hardware, ist eine
Simulation 18 der Anwendung erforderlich. Manchmal wird
die Simulation als Teil des Anwendungsdefinitionsprozesses angesehen
und nicht als Teil der Dauer des Hardwareentwicklungsprozesses gezählt. Der
Simulationsprozeß kann
Tage bis zu mehreren Monaten dauern, je nach der Komplexität der Anwendung.
Der Zweck der Simulation besteht darin, nachzuweisen, daß die Idee
und die erwogene Implementierung ausführbar sind. Wenn zum Beispiel
eine Idee zur Sprachkompression über
Nachrichtenverbindungen existiert, wird der Kompressionsalgorithmus
unter Verwendung einer höheren
Programmiersprache, wie z. B. "C++", und anderer Software-Werkzeuge,
wie z.B. "Matlab" (von Mathworks,
Natick, Massachusetts), erstellt. Es gibt keine einfache Verknüpfung zwischen
Simulation und Implementierung. Manchmal werden mehr als eine Simulation
ausgeführt,
und zur Erhöhung
der Simulationsgeschwindigkeit werden unter Umständen Workstations benötigt.
-
Dann ist der Schnittstellenentwurf 20 erforderlich.
Im Fall einer Standardschnittstelle, zum Beispiel einer PCI-Schnittstelle in
einer PC-Karte, braucht diese in den meisten Fällen nicht neu entworfen zu
werden, und bei der Implementierung kann ein serienmäßiger, vorgefertigter
Chipsatz verwendet werden. Im Falle einer anwendereigenen Schnittstelle
könnte
der Hardware-Entwickler bevorzugen, die Entwicklung der Schnittstelle von
der Entwicklung der Anwendung zu trennen, um die Schnittstelle auch
für andere
Anwendungen einsetzen zu können,
wie z. B. die Schnittstelle für
einige Karten im gleichen Gestell. In einem solchen Fall würde die
Zeit bis zur Markteinführung
nicht durch die für
die Entwicklung und Imple mentierung der Schnittstelle benötigte Zeit
beeinflußt
werden. Nur wenn die Schnittstelle außergewöhnlich ist, wird sie Teil der
gesamten Implementierungsentwicklung.
-
Der Elektronikentwurf 22 ist
das Verfahren, das die Lösung
in einen Satz von elektronischen integrierten Schaltkreiselementen
umsetzt. Der Entwickler denkt an eine Bibliothek solcher Bauelemente,
die bestimmte Funktionen ausführen
können,
und wählt
die benötigten
ICs aus, die zur Implementierung der Anwendung zusammenzuschalten
sind. Der Elektronikentwurfsprozeß ist kompliziert, da sich
der Ingenieur an eine Menge unterschiedlicher Komponenten und die
Art und Weise ihrer Verwendung erinnern muß. Mit Verbesserung der Technologie
kommen neue Komponenten mit komplizierten Funktionen hinzu. Manchmal
bleibt der Elektroniker zurück.
Höhere
Entwurfssprachen sind implementiert worden, aber der größte Teil
der Entwurfsarbeit muß immer
noch auf modulare Weise ausgeführt
werden. Je komplizierter die Anwendung, desto mehr Zeit wird für den Entwurf
benötigt.
-
Zeichnungen sind die Schnittstelle
zwischen dem Anwendungstechniker und den computerisierten Werkzeugen,
die zur Fertigung der Karte eingesetzt werden. Dies ist die "Sprache", die der Ingenieur
zum "Niederschreiben" seiner Implementierungsideen
benutzt. Der Zeichnungsprozeß 24 setzt
den Entwurf in Schemazeichnungen um. Je komplizierter die Anwendung,
desto mehr Zeit wird für
die Zeichnungen benötigt.
Bei Verwendung eines programmierbaren Bauelements kann eine höhere Entwurfssprache
(HDL) benutzt werden, um einen Teil der Zeichnungen zu ersetzen.
-
Wenn die Implementierung nicht trivial
ist, erfolgt eine Simulation 25 des Entwurfs, und die Zeitsteuerung
wird überprüft. Der
Entwickler versucht eine Korrelation zwischen dem Ergebnis der Anwendungssimulation 18 und
der gegenwärtigen
Simulation herzustellen. Wird irgendein Fehler gefunden, dann wird
der Entwurf modifiziert, und die Schritte 22 und 24 müssen wiederholt
werden.
-
Nach Fertigstellung des Entwurfs
erhält
man die Komponenten 26. Manchmal ist zur Beschaffung eines
bestimmten Bauelements eine ziemlich lange Zeit erforderlich, wodurch
sich die Herstellung des Prototyps verzögert. Je komplexer die Anwendung,
desto mehr Komponenten werden verwendet, desto länger ist die zur Produktion
erforderliche Zeit und desto größer ist
der Lagerbestand an Komponenten.
-
Das Layout 28 ist der Prozeß, der den
gezeichneten Entwurf in eine gefertigte Baugruppe umsetzt. Je komplexer
die Anwendung, desto mehr Komponenten werden eingesetzt und desto
länger
ist die Layout-Zeit.
-
Es folgt die Leiterplattenfertigung 30.
Für jede
Anwendung muß eine
andere Leiterplatte bzw. Platine hergestellt werden, wodurch sich
die Menge der eingesetzten Arbeitskräfte und der Bedarf an kostspieligen Ausrüstungen
für die Überprüfung und
Fertigung von Karten vergrößern.
-
Die Komponenten werden auf der gefertigten
Karte installiert. Layoutfehler können Probleme bei der Installation
verursachen. Zum Beispiel unterscheiden sich die Werkzeuge für die Installation
der Prototypen gewöhnlich
von denen, die für
die Fertigung eingesetzt werden. Konkret wird bei der Installation
in der Entwicklungsphase eine geringere Automatisierung angewandt,
und die Wahrscheinlichkeit einer defekten Karte ist größer. Um
die Installationsdauer zu verkürzen,
werden kostspielige Spezialausrüstungen
eingesetzt, beispielsweise Chipeinbaugeräte mit hohem Rastermaß.
-
Test und Fehlerbeseitigung 34 sind
die längsten
Perioden im Gesamtentwicklungsprozeß. Fünfzig bis fünfundsiebzig Prozent der für einen
komplexen Entwurf aufgewandten Zeit entfällt auf die Überprüfung. Die Überprüfung bzw.
Verifikation wird schnell zum größten Technologiehindernis.
-
Fehler können bei jeder der obigen Aufgaben
gemacht werden. Zum Beispiel kann ein enger Abstand zwischen Leiterbahnen
einer gedruckten Schaltung zu einem Kurzschluß führen. Schlimmer ist es, wenn
diese Fehlerart nicht im Fehlersuchprozeß entdeckt wird, da sie unter
Umständen
später
gefunden wird, wenn ihre Reparatur kostspieliger ist. Fehler können auch
bei der Kartendefinition gemacht werden, und so weiter. Dies bedeutet,
daß sich
wiederholende Prozesse auftreten. Normalerweise werden vor der ersten
Produktionscharge drei Versionen des Prototyps hergestellt. Zum
Testen der Elektronik karte werden kostenaufwendige Testeinrichtungen
benötigt,
zum Beispiel: Signalgeneratoren, Rauschgeneratoren, Logikanalysatoren,
Oszilloskope, dB-Meßgeräte, Addierer,
Leitungssimulatoren und andere.
-
Im Abschnitt 36 von der
Forschung und Entwicklung bis zum Produktionsprozeß wird die
Dokumentation mit allen für
die Fertigung der Karte benötigten
Details erstellt. Obwohl dieser Prozeß beginnen kann, bevor die
letzte Version des Prototyps fertig ist, verlängert der Prozeß die Zeit
bis zur Markteinführung.
Automatische Geräte
zur Kartenüberprüfung (wie
z. B. eine Nagelbett-Testanordnung) und zur Funktionsüberprüfung werden
erzeugt. Maschinen zum automatischen Einbau von Komponenten werden
programmiert, und so weiter.
-
Der obige Prozeß führt zu einem langen Entwicklungsund
Fertigungszyklus. Je später
ein Fehler gefunden wird, desto schwieriger und teurer ist die Reparatur.
Wenn daher ein ASIC benötigt
wird, werden beträchtliche
Anstrengungen unternommen, um fehlerfreie Ergebnisse sicherzustellen.
Normalerweise werden einige Chargen hergestellt, bevor die Elektronik
in einen ASIC umgewandelt wird.
-
Sobald die Kartendokumentation fertiggestellt
ist, alle Komponenten beschafft, die Chipeinbaumaschinen programmiert
worden sind und so weiter, kann der Kartenproduktionsprozeß 37 beginnen.
Dort schließt sich
dann die Überprüfung 38 der
Produzierten Karten an, wobei die Karte mit oder ohne ihre Elektronik
getestet wird. Die Funktionsprüfung 40 ist
der Prozeß zur Überprüfung der
Karte für
die vorgesehene Anwendung. Es ist recht kompliziert und zeitraubend,
automatische Geräte
zur Prüfung
jeder Funktion der Anwendung herzustellen. Wenn das Ergebnis befriedigend
ist, kann die Kartenauslieferung 42 an den Kunden erfolgen.
-
Wenn am Ende des Prozesses ein Fehler
gefunden oder eine Aktualisierung benötigt wird, sind Reparaturen
und Aktualisierungen 44 sehr schwierig, teuer und zeitraubend.
Im schlimmsten Fall muß der
größte Teil
des Prozesses wiederholt werden.
-
Wie oben erwähnt, beeinflussen Echtzeitbedürfnisse,
Flexibilität,
Größe und Anzahl
der Aufgaben die Auswahl der Technologie. Ein Schaltkreis kann als
Prozessor für
digitale Signalverarbeitung implementiert werden, wenn Flexibilität benötigt wird
und/oder eine große
Anzahl von Aufgaben auszuführen
sind, aber nicht gleichzeitig. Diese Lösung ist in Echtzeit langsamer
als eine äquivalente
Hardware-Implementierung. Die DSP-Implementierung hat etwa die gleiche
Größe wie die
Hardware-Implementierung, aber im allgemeinen lassen DSP-Implementierungen
nicht die Option der Umwandlung in einen ASIC zu.
-
Obwohl der oben beschriebene Hardware-Entwicklungsprozeß auch für die DSP-Karte
implementiert werden muß,
beeinflußt
er aus verschiedenen Gründen
selten die Zeit bis zur Markteinführung. Erstens ist die Hardware-Implementierung
einfach, da die DSP-Anbieter Lösungen
für den
Hardware-Entwurf vorschlagen. Nur eine nichtstandardisierte Schnittstelle
muß entworfen
werden. Zweitens kann, sobald eine Karte fertig und die Schnittstelle
festgelegt ist, eine vorgefertigte Karte für die neue Anwendung verwendet
werden. Normalerweise erfordert der Entwicklungsprozeß des Programmierungscodes
mehr Zeit als der Entwicklungsprozeß der DSP-Karte. Nichtsdestoweniger
muß die
Karte mindestens einmal entwickelt werden. Außerdem sind andere Probleme
in Angriff zu nehmen als diejenigen, die sich auf die Hardware-Implementierung
beziehen, wie z. B., welche Art der digitalen Signalverarbeitung
(DSP) auszuwählen
ist, ob die DSP die Bedürfnisse
der Anwendungen der nächsten
Generation erfüllen
wird, und so weiter.
-
Da sich die Industrie an das Gordon-Mooresche
Gesetz hält
und die Anzahl der Transistoren auf einer Chipfläche alle 18 Monate durch Verkleinerung
der Merkmalsgröße (Transistoren
und Zwischenverbindungen) verdoppelt, veralten Produkte mit jeder
neuen Halbleitergeneration. Daher wird häufig eine neue DSP/CPU-Entwicklung
benötigt.
Im allgemeinen tun Anbieter ihr Bestes, um die Kompatibilität der Software
zu ermöglichen,
aber in der Praxis wird Umsetzungszeit benötigt. Dieser Umsetzungsprozeß beeinflußt die Kosten
ebenso wie die Zeit bis zur Markteinführung.
-
Die DSP-Implementierung hat Vorteile
gegenüber
der Hardware-Implementierung im Simulationsstadium, da sowohl die Simulation
als auch die Implementierung in einer höheren Programmiersprache geschrieben
werden können,
wie z. B. in "C". In der Praxis gibt
es kein effizientes Konvertierungsmittel von der Simulation in den
DSP-Code. Mit anderen Worten, die Simulation simuliert nicht die
exakte Implementierung, besonders wenn bei der DSP-Codierung die
Assemblersprache verwendet wird. Außerdem sind die Forschungs- und
Entwicklungskosten hoch. Die Kostenkalkulation muß die Entwicklung
der Karte und die Entwicklung der Software berücksichtigen. Auf dem Markt
herrscht ein Mangel an DSP-Experten; daher sind die Lohnkosten hoch.
-
In der Produktion ist die automatische
Funktionsprüfung
immer noch schwer ausführbar;
wenn aber nach der Auslieferung ein Fehler oder eine Aktualisierung
festgestellt wird, kann dies immer noch durch Änderung der Software am Kundenstandort
behoben werden, obwohl dies in der Praxis bei weitem nicht trivial
ist. Der einfache Teil ist das Laden des überarbeiteten Codes in die
Implementierung.
-
Manchmal wird eine kombinierte Implementierung
bevorzugt. Wenn z. B. in einer DSP-Implementierung ein Filter benötigt wird,
kann das Filter in der Hardware implementiert werden, und der Rest
der Anwendung wird in dem DSP implementiert. Die Vorteile und Nachteile
jedes Teils bleiben erhalten.
-
Programmierbare Logikbausteine (PLD)
ermöglichen
eine flexible Implementierung, sind aber in der Anwendungsfähigkeit
für eine
gegebene Chipfläche
begrenzt. Eine Simulationssprache ist in eine höhere Entwurfssprache (HDL/VHDL)
konvertiert worden, um den Entwickler zu befähigen, Implementierungen zu
erzeugen. Nichtsdestoweniger befähigen
diese Softwaresprachen den Nutzer, die Hardware in modularer Form
zu erzeugen: daher bleiben sie weit hinter Sprachen wie C++ zurück. Die
Simulation ist nicht genau, die Fehlersuche ist kompliziert, und
das Produkt ist kostspielig. Wenn die Größe ein kritischer Faktor ist,
wird die Anwendung sehr häufig
unter Verwendung einiger PLDs der oberen Leistungsklasse als "schneller Prototyp" implementiert und
dann in ASIC umgesetzt. In diesem Fall erfolgt die ASIC-Entwicklung üblicherweise
in mehreren Iterations schritten, wodurch der Preis erhöht und die
Zeit bis zur Markteinführung
verlängert
wird.
-
Der ASIC-Entwicklungsprozeß wird z.
B. von Texas Instruments Incorporated (Dallas, Texas, USA, 75380-9066)
beschrieben, deren WEB-Adresse lautet: http://www.ti.com/sc/docs/asic/cad/cad.htm.
-
Außerdem wird auf http://www.verisity.com/html/spechased.html
verwiesen, die zu Verisity Design, Inc., Mountain View, CA, USA,
gehört.
Ebenso sind weitere Informationen zur Automatisierung des Elektronikentwurfs
unter der Adresse http://www.wsdmag.com/library/penton/archives/wsd/January1998/261.htm
zu finden, wo bestätigt
wird, daß die
Technologie der Automatisierung des Elektronikentwurfs (EDA) hinter
der Entwicklungsgeschwindigkeit der Halbleiterfertigung zurückgeblieben
ist.
-
In der Patentliteratur sind einige
von den Nachteilen angesprochen worden, die mit dem Entwurfs-, Fertigungs-
und Prüfungsprozeß verbunden
sind. US-A-5 815 726 (Cliff, Richard G.) mit dem Titel "Coarse-grained look-up
table architecture" (Grobe
Nachschlagetabellen-Architektur), veröffentlicht am 29. Sept. 1998,
abgetreten an die Altera Corporation, offenbart eine programmierbare
Logikbaustein-Architektur. Zur Verbindung von Signalen zu und von
den Logikmatrixblöcken
weisen die globalen Verbindungsmittel Schaltkästen, Langleitungen, Doppelleitungen,
Einzelleitungen und halb und teilweise besetzte Multiplexerbereiche auf.
Der Logikmatrixblock weist zwei Funktionsblockebenen auf. Auf einer
ersten Ebene sind acht Funktionsblöcke mit vier Eingängen vorhanden.
Auf einer zweiten Ebene sind zwei Funktionsblöcke mit vier Eingängen und
vier sekundäre
Funktionsblöcke
mit zwei Eingängen
vorhanden. In einer Ausführungsform
werden diese Funktionsblöcke
unter Verwenung von Nachschlagetabellen (LUT) implementiert. Der
Logikmatrixblock weist kombinatorische und Registerausgänge auf
und enthält
außerdem
Speicherblöcke
zur Implementierung von sequentiellen oder Register-Logikfunktionen.
Der Logikmatrixblock weist eine Übertragskette
zur Implementierung von Logikfunktionen auf, die Übertragsbits
erfordern, und kann auch so kon figuriert werden, daß er einen Direktzugriffsspeicher
implementiert.
-
US-A-5 909 450 (Wright, Adam) mit
dem Titel "Tool
to reconfigure pin connections between a DUT and a tester" (Werkzeug zur Rekonfiguration
von Anschlußbelegungen
zwischen einem zu prüfenden
Bauelement (DUT) und einem Prüfgerät), veröffentlicht
am 1. Juni 1999, abgetreten an die Altera Corporation, offenbart
ein Verfahren zur Prüfung
von integrierten Schaltkreisen. Auf eine Datenbank von erwünschten
Verbindungen zwischen einem Prüfgerät und einem
zu prüfenden
Bauelement (DUT) für
verschiedene Abwärts-Bondstellen
wird von einem Multiplexer zugegriffen, der die gewünschten
Verbindungen aufbaut. Das System stellt ohne manuellen Eingriff
des Benutzers, der in herkömmlichen
Simulatorsystemen erforderlich war, automatisch die richtige Verbindung
für jede
Abwärtsbondstelle
her.
-
US-A-S 821 773 (Norman, Kevin A.
et al.) mit dem Titel "Look-up
table based logic element with complete permutability of the Inputs
to the secondary signals" (Nachschlagetabellengestützter Logikbaustein
mit vollständiger
Permutierbarkeit der Eingangssignale zu den Sekundärsignalen),
veröffentlicht
am 13. Oktober 1998, abgetreten an die Altera Corporation, offenbart
ein Logikelement für
einen programmierbaren Logikbaustein. Das Logikelement weist eine
Nachschlagetabelle zur Implementierung von logischen Funktionen,
einen programmierbaren Verzögerungsblock,
einen als Halteschaltung oder Flipflop konfigurierbaren Speicherblock und
einen diagnostischen Schattenspeicher auf. Durch Steuerung der Sekundärfunktionen
des Speicherblocks sind mehrere Eingänge zum Logikelement und Komplemente
dieser Eingänge
verfügbar.
-
US-A-6 018 490 (Cliff, Richard G.
et al.) mit dem Titel "Programmable
logic array integrated circuits" (Integrierte
Schaltkreise mit programmierbarer Logikmatrix), veröffentlicht
am 25. Januar 2000, abgetreten an die Altera Corporation, offenbart
einen integrierten Schaltkreis mit programmierbarer Logikmatrix,
der eine Anzahl von programmierbaren Logikbausteinen aufweist, die
in mehreren Logikmatrixblöcken
zu Gruppen zusammengefaßt
sind. Die Logikmatrixblöcke
sind in einer zweidimensionalen Matrix auf dem Schaltkreis angeordnet.
Ein Leiternetzwerk ist für
die Verbindung jedes Logikbausteins mit jedem anderen Logikbaustein
vorgesehen. Außerdem
können
aneinander angrenzende oder nahe gelegene Logikbausteine für Spezialzwecke miteinander
verbunden werden, wie z. B. zur Herstellung einer Übertragskette
zwischen Logikbausteinen und/oder zum Zusammenschalten von zwei
oder mehreren Bausteinen, um komplexere Logikfunktionen bereitzustellen,
ohne von dem allgemeinen Verbindungsnetzwerk Gebrauch machen zu
müssen.
Ein weiteres Netzwerk von sogenannten schnellen oder universellen
Leitern ist für
die Verteilung von allgemein verwendeten Logiksignalen, wie z. B.
Takt- und Löschsignalen, über den
gesamten Schaltkreis vorgesehen. Multiplexer können auf verschiedene Arten
verwendet werden, um die Anzahl der zwischen Signalleitern erforderlichen programmierbaren
Verbindungen zu verringern.
-
US-A-6 058 492 (Sample, Stephen P.
et al.) mit dem Titel "Method
and apparatus for design verification using emulation and Simulation" (Verfahren und Vorrichtung
zur Entwurfsprüfung
unter Anwendung von Simulation und Emulation), veröffentlicht
am 2. Mai 2000, abgetreten an Quickturn Design Systems, Inc., offenbart ein
Verfahren und eine Vorrichtung zur Kombination von Emulation und
Simulation eines Logikentwurfs. Das Verfahren und die Vorrichtung
können
bei einem Logikentwurf angewandt werden, der Beschreibungen der Gate-Ebene,
Verhaltensbeschreibungen, Strukturbeschreibungen oder eine Kombination
daraus aufweist. Die Emulations- und Simulationsabschnitte werden
so kombiniert, daß die
Datenübertragungszeit
zwischen den beiden Abschnitten minimiert wird. Die Simulation wird
durch einen oder mehrere Mikroprozessoren ausgeführt, während die Emulation in rekonfigurierbarer
Hardware ausgeführt
wird, wie z. B. in frei programmierbaren Verknüpfungsfeldern. Wenn Mehrfachmikroprozessoren
verwendet werden, dann werden unabhängige Teile des Logikentwurfs
für die
Ausführung
in den multiplen synchronisierten Mikroprozessoren ausgewählt. Rekonfigurierbare
Hardware führt
auch Ereigniserkennungs- und Ablaufplanungsoperationen zur Unterstützung der
Simulation und zur Verkürzung
der Verarbeitungszeit aus.
-
US-A-5 815 715 (Ku.cedilla.uk et
al.) mit dem Titel "Method
for designing a product having hardware and software components
and product therefor" (Entwurfsverfahren
für ein
Produkt mit Software- und Hardwarekomponenten und Produkt dafür), veröffentlicht
am 29. September 1998, abgetreten an Motorola, Inc., offenbart ein
Computersystem und ein Verfahren zum Entwurf des Computersystems
unter Verwendung von Hardware- und
Softwarekomponenten. Das Computersystem weist programmierbare Coprozessoren
mit dem gleichen Architekturstil auf. Jeder Coprozessor weist eine
Ablaufsteuerungseinheit und ein programmierbares Verbindungsnetzwerk
sowie eine unterschiedliche Anzahl von Funktionseinheiten und Speicherelementen
auf. Das Computersystem wird unter Verwendung eines Compilers entworfen,
um aus einem Teil eines Anwendersoftware-Codes einen Hauptmikroprozessor-Code
und einen Coprozessor-Code zu erzeugen. Der Compiler benutzt den
Hauptmikroprozessor-Code zur Bestimmung der Arbeitsgeschwindigkeit
des Hauptmikroprozessors und den Coprozessor-Code zur Bestimmung
der Arbeitsgeschwindigkeit des Coprozessors und wählt entweder
den Hauptmikroprozessor oder den Coprozessor zur Abarbeitung des
Teils des Anwendersoftware-Codes aus. Dann erzeugt der Compiler
einen Code, der als Software-Programm dient.
-
US-A-6 058 452 (Rangasayee, Krishna)
mit dem Titel "Memory
cells configurable as CAM or RAM in programmable logic devices" (Als CAM oder RAM
konfigurierbare Speicherzellen in programmierbaren Logikbausteinen),
veröffentlicht
am 2. Mai 2000, abgetreten an die Altera Corporation, offenbart
einen programmierbaren Logikbaustein mit Assoziativspeicher. Der
programmierbare Logikbaustein kann einen rekonfigurierbaren Speicher
mit zwei Betriebsarten aufweisen, der sich für den Betrieb als Assoziativspeicher
in einer ersten Betriebsart und als Direktzugriffsspeicher in einer
zweiten Betriebsart eignet. Um einen Benutzer selektiv zu befähigen, den
Speicher mit zwei Betriebsarten entweder als Assoziativspeicher
oder als Direktzugriffsspeicher zu konfigurieren, können Betriebsartensteuerschaltungen
vorgesehen werden.
-
US-A-6 078 736 (Guccione, Steven
A.) mit dem Titel "Method
of designing FPGAs for dynamically reconfigurable compu ting" (Entwurfsverfahren
für frei
programmierbare Verknüpfungsfelder
(FPGA) für
dynamisch rekonfigurierbare Computer), veröffentlicht am 20. Juni 2000,
abgetreten an Xilinx, Inc., offenbart ein Verfahren zum Entwurf
von frei programmierbaren Verknüpfungsfeldern
für rekonfigurierbare
Computer mit einer Software-Umgebung für rekonfigurierbare Coprozessor-Anwendungen. Diese
Umgebung weist einen Standardcompiler für höhere Programmiersprachen (d.
h. Java) und eine Gruppe von Bibliotheken auf. Das FPGA wird direkt
von einem Hauptprozessor aus konfiguriert, wobei Konfiguration,
Rekonfiguration und der Laufzeitbetrieb des Wirtes in einem einzigen
Codeabschnitt unterstützt
werden. Entwurfskompilierungszeiten in der Größenordnung von Sekunden und
eingebaute Unterstützung
für parametrierte
Zellen sind wesentliche Merkmale des erfindungsgemäßen Verfahrens.
-
US-A-6 031 391 und US-A-6 097 211
(Couts-Martin, Chris et al.) beide mit dem Titel "Configuration memory
integrated circuit" (Integrierter
Schaltkreis mit Konfigurationsspeicher), veröffentlicht am 29. Februar 2000
bzw. am 1. August 2000 und abgetreten an die Altera Corporation,
offenbaren einen Konfigurationsspeicher zur Informationsspeicherung,
der systemintern programmierbar ist. Die Programmierung des Konfigurationsspeichers
kann unter Verwendung von JTAG-Anweisungen (IEEE-Standard 1149.1)
ausgeführt
werden. Ferner kann die Konfiguration eines programmierbaren Logikbausteins,
der die Konfigurationsdaten im Konfigurationsspeicher benutzt, mit
einer JTAG-Anweisung ausgelöst
werden. In das Konfigurationsspeicherpaket sind Pull-up-Widerstände eingebaut.
-
US-A-S 894 228 (Reddy, Srinivas et
al.) mit dem Titel "Tristate
structures for programmable logic devices" (Dreizustandsstrukturen für programmierbare
Logikbausteine), veröffentlicht
am 13. April 1999 und abgetreten an die Altera Corporation, offenbart
eine programmierbare Logikbausteinarchitektur, die Dreizustandsstrukturen
aufweist. Die programmierbare Logikbausteinarchitektur stellt Dreizustandsstrukturen
bereit, die logisch oder programmierbar gesteuert werden können, oder
beides. Über
diese Dreizustandsstrukturen können
die Logikelemente mit der programmierbaren Zwischenverbindung ge koppelt
werden, wo sie mit anderen Logikelementen des programmierbaren Logikbausteins
gekoppelt werden können.
Unter Verwendung dieser Dreizustandsstrukturen können die Signalwege der Architektur
dynamisch rekonfiguriert werden.
-
US-A-6 026 230 (Lin, Sharon Sheau-Pyng
et al.) mit dem Titel "Memory
Simulation System and method" (Speichersimulationssystem
und -verfahren), veröffentlicht
am 15. Februar 2000 und abgetreten an Axis Systems, Inc., offenbart
ein System mit vier Betriebsarten: (1) Software-Simulation, (2)
Simulation mittels Hardware-Beschleunigung, (3) Schaltkreisemulation
(ICE) und (4) Analyse nach der Simulation. Auf einer hohen Ebene
kann das System in jeder der obigen vier Betriebsarten oder in verschiedenen
Kombinationen dieser Betriebsarten realisiert werden. Im Kern dieser
Betriebsarten ist ein Softwarekern enthalten, der den Gesamtbetrieb
dieses Systems steuert. Die Hauptsteuerschleife des Kerns führt die
folgenden Schritte aus: System initialisieren, aktive Prüfstandprozesse/-komponenten
auswerten, Taktkomponenten auswerten, Taktflanke erkennen, Register
und Speicher aktualisieren, kombinatorische Komponenten weiterleiten,
Simulationszeit weiterzählen
und die Schleife so lange fortführen,
wie aktive Prüfstandprozesse
vorhanden sind. Der Speicherbereichszuordnungs-Aspekt der Erfindung
liefert eine Struktur und ein Schema, wo die zahlreichen Speicherblöcke, die
mit dem Entwurf des Benutzers verbunden sind, in die SRAM-Speicherbausteine
im Simulationssystem abgebildet werden, statt innerhalb der Logikbausteine,
die zum Konfigurieren und Modellieren des Nutzerentwurfs verwendet
werden. Das Speicherbereichszuordnungs- oder Speichersimulationssystem
enthält
eine Speicherzustandsmaschine, eine Beurteilungszustandsmaschine
und deren zugeordnete Logik zur Steuerung und Kopplung mit: (1)
dem Hauptcomputersystem und seinem zugeordneten Speichersystem,
(2) den mit den FPGA-Bussen im Simulationssystem gekoppelten SRAM-Speicherbausteinen
und (3) den FPGA-Logikbausteinen, die den gerade auszutestenden
konfigurierten und programmierten Nutzerentwurf enthalten.
-
US-A-6 020 759 (Heile, Francis B.)
mit dem Titel "Programmable
logic array device with random access memory configurable as product
terms" (Programmierbarer
Logikmatrixbau stein mit RAM-Speicher, der in Form von Produkttermen
konfigurierbar ist), veröffentlicht
am 1. Februar 2000 und abgetreten an die Altera Corporation, offenbart
einen nachschlagetabbellengestützten
programmierbaren Logikbaustein, der mit Speicherschaltungen ausgestattet
ist, die entweder als Direktzugriffsspeicher ("RAM")
oder zur Ausführung
einer Produktterm-Logik (p-Term-Logik) betrieben werden kann. Jede
einzelne Zeile des Speichers ist getrennt adressierbar, um Daten
in den Speicher einzuschreiben oder im RAM-Betrieb Daten aus dem
Speicher auszulesen. Als Alternative sind mehrere Zeilen des Speichers
parallel adressierbar, um p-Terme parallel aus dem Speicher auszulesen.
Die erfindungsgemäßen Speicherschaltungen
sind besonders gut als Ergänzung
zu programmierbaren Logikbausteinen zum Nachschlagetabellentyp verwendbar,
da die p-Term-Fähigkeit
der Speicherschaltungen eine rationelle Methode zur Ausführung von
Logikfunktionen mit breiter Eingangsfächerung bietet, die sonst Bäume von
multiplen Nachschlagetabellen erfordern würden.
-
US-A-6 028 809 (Schleicher, James)
mit dem Titel "Programmable
logic device incorporating a tri-stateable logic array block" (Programmierbarer
Logikbaustein mit Dreizustands-Logikmatrixblock),
veröffentlicht am
22. Februar 2000 und abgetreten an die Altera Corporation, offenbart
eine programmierbare Logik, die einen Multifunktionsblock mit mehreren
integral verbundenen Funktionseinheiten enthält, wobei mindestens eine der
Funktionseinheiten innerhalb des Multifunktionsblocks eine Logikeinheit
mit drei Zuständen
ist. Der programmierbare Logikbaustein enthält außerdem einen Dreizustandsbus,
der funktionsfähig
mit der Dreizustands-Logikeinheit
verbunden ist, die Logiksignale mit drei Zuständen zu dem Dreizustandsbus
senden sowie Logiksignale mit drei Zuständen vom Dreizustandsbus empfangen
kann. Der Dreizustandsbus transportiert Dreizustands-Datensignale
und Adreßwählsignale,
die eine gewünschte
Einheit von den Dreizustands-Logikeinheiten
innerhalb des programmierbaren Logikbausteins anwählen.
-
US-A-6 085 317 (Smith, Stephen J.)
mit dem Titel "Reconfigurable
Computer architecture using programmable logic devices" (Rekonfigurierbare
Computerarchitektur mit Verwendung programmierbarer Logikbauelemente),
veröffentlicht
am 4. Juli 2000 und abgetreten an die Altera Corporation, offenbart
eine rekonfigurierbare Computerarchitektur mit Verwendung von Logikbausteinen.
Die Computerfunktion kann durch Konfigurieren einer ersten programmierbaren
Logikeinheit als Systemsteuergerät
realisiert werden. Das Systemsteuergerät lenkt bzw. steuert die Implementierung
eines Algorithmus in einer zweiten programmierbaren Logikeinheit
gleichzeitig mit dem Rekonfigurieren einer dritten programmierbaren
Logikeinheit. Nach einem anderen Aspekt kann das Computersystem
ein Paar unabhängige
Zweiwegbusse aufweisen, die jeweils so eingerichtet sind, daß sie das
Systemsteuergerät
und die mehreren programmierbaren Logikbausteine elektrisch miteinander
verbinden. Bei dieser Anordnung kann ein erster Bus zum Rekonfigurieren
eines ausgewählten programmierbaren
Logikbausteins nach Anweisung vom Systemsteuergerät verwendet
werden, während
der zweite Bus durch einen funktionsfähigen programmierbaren Logikbaustein
genutzt wird.
-
US-A-6 034 536 und US-A-6 091 258
(McClintock, Cameron et al.), beide mit dem Titel "Redundancy circuitry
for logic circuits" (Redundanzschaltungen
für Logikschaltkreise),
veröffentlicht
am 7. März
2000 bzw. am 18. Juli 2000 und abgetreten an die Altera Corporation,
offenbaren redundante Schaltungen für einen Logikschaltkreis, wie
z. B. einen programmierbaren Logikbaustein. Die redundanten Schaltungen
ermöglichen die
Reparatur des Logikschaltkreises durch Austausch eines defekten
Logikbereichs auf dem Schaltkreis durch einen redundanten Logikschaltkreis.
Zeilen und Spalten von Logikbereichen können durch Umspeichern von
Zeilen und Spalten logisch umdefiniert werden. Der Logikschaltkreis
enthält
dynamische Steuerschaltungen, um Programmierungsdaten in einer durch
Redundanzkonfigurationsdaten definierten Reihenfolge zu verschiedenen
Logikbereichen zu lenken. Die Redundanz kann unter Verwendung von
vollständig
oder teilweise redundanten Logikbereichen implementiert werden.
Logikbereiche können
umgespeichert werden, um einen teilweise redundanten Logikbereich
auf einen Logikbereich umzudefinieren, der einen Defekt enthält. Der
Defekt kann dann durch Umspeichern oder Verschieben von Zeilen oder
Spalten repariert werden. Ein Logikschaltkreis, der gefaltete Zeilen
von Logikbereichen enthält,
kann repariert werden, indem eine defekte Halbzeile durch eine redundante
Halbzeile ersetzt wird.
-
US-A-6 069 489 (Iwanczuk, Roman et
al.) mit dem Titel "FPGA
having fast configuration memory data readback" (FPGA mit Schnellwiedergabe von Konfigurationsspeicherdaten),
veröffentlicht
am 30. Mai 2000 und abgetreten an Xilinx, Inc., offenbart einen
FPGA-Konfigurationsspeicher, der in Spaltenrahmen unterteilt ist,
die jeweils eine eindeutige Adresse aufweisen. Konfigurationsdaten
werden in ein Konfigurationsregister geladen, das die Konfigurationsdaten
rahmenweise parallel überträgt. In einer
bevorzugten Ausführungsform ermöglichen
ein Eingaberegister, ein Schatteneingaberegister und eine Multiplexer-Anordnung
die effiziente Übertragung
von Konfigurationsdaten unter Verwendung einer größeren Anzahl
von Eingabebits als bei herkömmlichen
FPGAs. Eine flexible äußere Schnittstelle
ermöglicht
die Verbindung mit Busgrößen, die
von einer vorgegebenen maximalen Breite bis zu einem ausgewählten Bruchteil
dieser Breite variieren. Die Übertragung von
Konfigurationsdaten wird durch Verwendung von Schattenregistern
zur rahmenweisen Steuerung solcher Daten in Speicherzellen mit minimaler
Verzögerung
und durch Verwendung einer Multiplexer-Anordnung zur Ausnutzung eines breiteren
Konfigurationsdatenübertragungsbusses
effizienter gemacht. Die Geschwindigkeit der Konfigurationswiedergabe
wird im wesentlichen an die Geschwindigkeit der Konfigurationsdateneingabe
angeglichen, indem eine Konfigurationsregisterlogik verwendet wird,
die eine bidirektionale Datenübertragung
unterstützt.
Unter Verwendung des vorgeschlagenen FPGA-Konfigurationsspeichers
kann ein Bitstrom, der für
einen alten Baustein ausgelegt ist, für einen neuen Baustein mit
zusätzlichen
Konfigurationsspeicherzellen verwendet werden.
-
US-A-5 477 475 (Sample, Stephen P.)
mit dem Titel "Method
for emulating a circuit design using an electrically reconfigurable
hardware emulation apparatus" (Verfahren
zur Emulation eines Schaltkreisentwurfs unter Verwendung einer elek trisch
rekonfigurierbaren Hardware-Emulationsvorrichtung), veröffentlicht
am 19. Dezember 1995 und abgetreten an Quickturn Design Systems,
Inc., offenbart ein System zur physikalischen Emulation von elektronischen
Schaltkreisen oder Systemen mit einem Dateneingabeplatz, wo ein
Benutzer Daten eingeben kann, welche die Schaltkreis- oder Systemkonfiguration
repräsentieren.
Diese Daten werden in eine Form umgewandelt, die sich für die Programmierung
einer Matrix von programmierbaren Gate-Elementen eignet, die mit
einer reich verschalteten Architektur ausgestattet sind. Es werden
Vorkehrungen für
den äußeren Anschluß von Bauelementen
mit VLSI-Schaltkreisen oder anderen Abschnitten eines Nutzerschaltkreises
oder Nutzersystems getroffen. Durch Verwendung von unbenutzten Leiterbahnen
in den programmierbaren Gate-Arrays wird ein Netzwerk von internen
Sondierungsverbindungen zur Verfügung
gestellt.
-
US-A-5 821 773 (Norman et al.) mit
dem Titel "Look-up
table based logic element with complete permutability of the Inputs
to the secondary signals" (Nachschlagetabellengestütztes Logikelement
mit vollständiger
Permutierbarkeit der Eingangssignale mit den Sekundärsignalen),
veröffentlicht
am 13. Oktober 1998 und abgetreten an die Altera Corporation, offenbart
ein Logikelement für
einen programmierbaren Logikbaustein. Das Logikelement weist eine
Nachschlagetabelle zur Implementierung von Logikfunktionen, einen
programmierbaren Verzögerungsblock,
einen als Halteschaltung oder Flipflop konfigurierbaren Speicherblock
und einen diagnostischen Schattenspeicher auf. Es sind mehrere Eingänge zu dem
Logikelement und Komplemente dieser Eingänge verfügbar, um die Sekundärfunktionen
des Speicherblocks zu steuern.
-
US-A-4 984 192 (Flynn) mit dem Titel "Programmable state
machines connectable in a reconfiguration switching network for
performing real-time data processing" (Programmierbare, in einem Schaltnetz
durchschaltbare Ablaufsteuereinheiten zur Ausführung einer Echtzeit-Datenverarbeitung),
veröffentlicht
am B. Januar 1991 und abgetreten an Ultrasystems Defense Inc., offenbart
ein programmierbares Element (PE) zur Implementierung von programmierbaren
Logikschaltkreisen. Das programmierbare Element weist ein Ablaufadressenregister,
ein Ladeadres senregister und einen Direktzugriffsspeicher (RAM)
auf. Der RAM wird unter Verwendung des Ladeadressenregisters mit
einer Zustandsübergangstabelle
initialisiert. Nach der RAM-Initialisierung
und bei jedem Taktübergang
wird das Ablaufadressenregister mit externen Eingaben und einem
aktuellen Zustand geladen. Der aktuelle Zustand wird als Ausgabe
des nächsten
RAM-Zustands von internen Rückkopplungsleitungen
vom RAM-Ausgang
zu den Eingängen
des Ablaufadressenregisters empfangen. Die RAM-Ausgabe wird in einen
nächsten
Zustand, der in den internen Rückkopplungsleitungen
gespeichert wird, und Elementdaten-Ausgaben zu einem Ziel außerhalb
des programmierbaren Elements unterteilt. Ein Zustandsprozessor
(SP) zur Implementierung komplexer programmierbarer Logikschaltkreise
weist mehrere programmierbare Elemente und einen Matrixschalter
auf. Der Matrixschalter liefert eine externe Rückkopplung für programmierbare
Elemente. Außerdem
kann jede programmierbare Ausgabe zu irgendeinem Eingang eines programmierbaren
Elements übertragen
werden. Ein hierarchisches Netzwerk von Zustandsprozessoren zur Implementierung
von programmierbaren Logiksystemen weist mehrere Zustandsprozessoren
und mehrere Matrixschalter auf. Innerhalb des hierarchischen Netzwerks
kann jeder Zustandsprozessoreingang jede Zustandsprozessorausgabe
empfangen.
-
Es wird besonders auf 13 verwiesen, wo eine oder
mehrere Matrizen mit entsprechenden Zustandsprozessoren verbunden
sind und selbst untereinander durch eine Zentralmatrix verbunden
sind.
-
Außerdem wird auf 20.1 auf den Seiten 491
und 492 von U. Tietze, Ch. Schenk, "Halbleiter-Schaltungstechnik", Springer-Verlag,
1980, verwiesen, die ein Bauelement zeigt, das dem Oberbegriff des
Hauptanspruchs entspricht.
-
In keiner dieser Literaturstellen
wird eine Bauelementarchitektur gelehrt, die ein Zusammenschalten von
Zellen durch eine programmierbare Matrix auf eine solche Weise ermöglicht,
daß Zellen
innerhalb ähnlicher
Zellen konfiguriert werden können,
wodurch auf rekursive Weise eine Selbstähnlichkeit zwischen einem programmierbaren
Logikbaustein und seinen Logikkomponenten eingeführt wird.
-
Zusammenfassung
der Erfindung
-
Eine Aufgabe der Erfindung besteht
darin, eine verbesserte Bauelementarchitektur bereitzustellen, die sich
besonders für
den Entwurf von digitalen Schaltkreisen eignet und eine hohe Flexibilität zuläßt und die
Zeit vom Entwurf bis zum fertigen Produkt verkürzt.
-
Zu diesem Zweck wird nach einem allgemeinen
Aspekt der Erfindung ein universeller Hardwarebaustein bereitgestellt,
der aufweist:
eine erste Gruppe von mehreren Zellen zur Datenspeicherung;
und
eine erste programmierbare Matrix, die mit Eingängen und
Ausgängen
der mindestens einen Zellengruppe verbunden ist, wodurch mehrere
Hardwareanwendungen implementiert werden können, indem selektiv Daten in
den Zellen gespeichert und die Matrix selektiv so programmiert wird,
daß mindestens
eine der Zellen mit mindestens einer (anderen) von den Zellen verbunden
wird;
dadurch gekennzeichnet, daß
mindestens eine der
Zellen eine zweite Gruppe von mehreren Zellen zum Speichern von
Daten aufweist; und
eine zweite programmierbare Matrix, die
mit Eingängen
und Ausgängen
der zweiten Zellengruppe verbunden ist, wobei jede Zelle der ersten
Zellengruppe und der zweiten Zellengruppe eine ähnliche Architektur wie der gesamte
universelle Hardwarebaustein aufweisen kann, und
daß auf mindestens
eine Zelle, die nicht Teil der ersten Zellengruppe ist, über einen
Anschluß bzw.
Port der mindestens einen Zelle direkt zugegriffen werden kann.
-
Eine derartige Bauelementarchitektur
ermöglicht
die Kombination von Zellen zu größeren Zellen,
die selbst zu größeren Zellen
kombiniert werden können,
wobei dieser Prozeß nach
Bedarf wiederholt wird; sowie die Konfiguration der kombinierten
Zellen als Hardwareanwendung durch Herunterladen von Daten zu den Teilzellen.
Vorzugsweise sind die Zellen als Nachschlagetabellen mit adressierbaren
Speicherplätzen
konfigurierbar, in denen die gespeicherten Daten eine durch die
Nachschlagetabelle implementierte Funktion definieren. Die Funktion
kann selbst unter Verwendung einer höheren Programmiersprache programmiert
werden und kann zusammen mit dem Code zur Implementierung einer
gewünschten
Konnektivität
der Zellen formatiert werden. Die formatierten Daten werden dann
zu den Zellen im Baustein herunter geladen. Nach dem Herunterladen
führt der
Baustein die vorprogrammierte Funktionsfähigkeit auf eine Weise aus,
die nicht mehr von dem höheren
Programmcode abhängig
ist, der bei der Implementierung der gewünschten Funktion verwendet wurde.
Als Ergebnis ist der Betrieb des Bausteins von der Leistungsfähigkeit
des höheren
Programmcodes unabhängig.
Zur Simulation des Bausteins kann ein identischer Code benutzt werden,
wodurch Entwurf und Simulation des Bausteins stark erleichtert werden
und die Zeit vom Entwurf bis zum Vertrieb stark verkürzt wird.
-
Die Erfindung bietet außerdem Werkzeuge
für Entwurf,
Simulation und Fehlersuche des Hardwarebausteins. Die Werkzeuge
können
auch die Umwandlung des gesamten oder eines Teils des Bausteins
in einen ASIC unterstützen,
nachdem festgestellt wurde, daß der
fertige Baustein anforderungsgemäß funktioniert, obwohl
der Wert einer solchen Umwandlung abnimmt, da die Lebenserwartung
des Produkts sinkt.
-
Kurze Beschreibung
der Zeichnungen
-
Um die Erfindung zu verstehen und
zu erkennen, wie sie in der Praxis ausgeführt werden kann, wird nachstehend – lediglich
anhand eines nicht als Einschränkung
gedachten Beispiels – eine
bevorzugte Ausführungsform
unter Bezugnahme auf die beigefügten
Zeichnungen beschrieben. Dabei zeigen:
-
1 ein
Ablaufdiagramm, das ein herkömmliches
Verfahren zur Hardware-Implementierung von IC-Chips auf Elektronikkarten
darstellt;
-
2 schematisch
die erfindungsgemäße Bauelementarchitektur;
die 3 und 4 zeigen schematisch alternative
Konfigurationen von Zellen zur Verwendung in dem in 2 dargestellten Baustein;
-
5 zeigt
schematisch ein Detail der in 4 dargestellten
Zelle einschließlich
der Hilfsschaltungen;
-
6 zeigt
schematisch die Konnektivität,
die zur Erzeugung einer Zelle erforderlich ist, die aus zwei Zellen
gebildet wird, um einen größeren Adressenbus
zu erhalten;
-
7 zeigt
schematisch eine Matrix, die Ausgänge der Zelle D mit Eingängen der
Zelle A verbindet;
-
8 zeigt
schematisch eine gesättigte
Matrix, die in der Schaltung von 7 verwendet
werden kann;
-
9 zeigt
schematisch eine ungesättigte
Matrix, die in der Schaltung von 7 verwendet
werden kann;
-
10 zeigt
schematisch einen Zähler
mit Verwendung einer in 3 dargestellten
Zelle;
-
11 zeigt
schematisch einen Vorwärts-Rückwärts-Zähler, der eine in 3 dargestellte Zelle verwendet;
-
12 zeigt
schematisch ein Schieberegister mit Verwendung von drei zusammengeschalteten
Zellen, wie sie in 3 dargestellt
sind;
-
13 zeigt
schematisch eine mögliche
Topologie eines einzelligen Schieberegisters, das in dem in 12 dargestellten Schieberegister
verwendet wird;
-
14 zeigt
schematisch, wie zwei Zellen der in 5 darstellten
Art zu einem Dreizustandselement zusammengeschaltet werden können;
-
15 zeigt
schematisch einen RAM-Server nach einer ersten Ausführungsform
unter Verwendung von zwei Zellen des in 5 dargestellten Typs;
-
16 zeigt
ein mögliches
Impuls- bzw. Taktdiagramm für
den in 15 dargestellten
RAM-Server;
-
17 zeigt
schematisch einen RAM-Server nach einer zweiten Ausführungsform
mit Verwendung von zwei Zellen des in 5 dargestellten Typs;
-
18 zeigt
ein mögliches
Impuls- bzw. Taktdiagramm für
den in 17 dargestellten
RAM-Server;
-
19 zeigt
schematisch ein Schieberegister, das im Zeitschachtelungs-Anwendungsmodus
arbeitet;
-
20 zeigt
ein Impuls- bzw. Taktdiagramm, das die Zeitsteuerungsfunktion für das in 19 dargestellte Schieberegister
darstellt;
-
21 zeigt
schematisch eine RAM-Server-Kombination, die in einem Zeitschachtelungs-Anwendungsmilieu
arbeitet;
-
22 zeigt
schematisch die Konnektivität,
die zur Erzeugung einer aus zwei Zellen gebildeten Zelle erforderlich
ist, um einen größeren Datenbus
zu erhalten;
-
23 zeigt
schematisch die Konnektivität,
die während
des Ladens der Zellen mit Daten erforderlich ist;
-
24 zeigt
schematisch ein Bauelement, das für die Ausführung eines 8-Bit-Befehls konfiguriert
ist;
-
25 zeigt
eine unabhängige
RAM-Zelle ohne Zwischenspeicher;
-
26 zeigt
schematisch ein nichtoptimiertes Addierglied mit Verwendung der
in 25 dargestellten Zelle;
-
27 zeigt
schematisch ein verbessertes Addierglied mit Verwendung der in 25 dargestellten Zelle;
-
28 zeigt
schematisch einen Zwischenspeicher, der unabhängig von dem in 25 dargestellten RAM verwendet
werden kann;
-
29 zeigt
schematisch ein Bauelement, wo ein Taktfreigabesignal zur Einstellung
der effektiven Taktfrequenz verwendet wird;
-
30 zeigt
schematisch eine Architektur mit mehreren Multichipmodulen (MCM),
die ein schnelles Umschalten zwischen verschiedenen Zuständen der
programmierbaren Matrix ermöglicht;
-
31 zeigt
ein Ablaufdiagramm, das die nach einem ersten Verfahren angewandten
Hauptarbeitsschritte zur Ableitung von Konstruktionsdaten für die Implementierung
des erfindungsgemäßen Bauelements darstellt;
-
32 zeigt
ein Ablaufdiagramm, das die nach einem zweiten Verfahren angewandten
Hauptarbeitsschritte zur Verwendung einer Bibliothek für die Ermittlung
und Speicherung von Konstruktionsdaten darstellt;
-
33 zeigt
ein Ablaufdiagramm, das die nach einem dritten Verfahren angewandten
Hauptarbeitsschritte zur Ableitung von Konstruktionsdaten für die Implementierung
des erfindungsgemäßen Bauelements darstellt;
-
34 zeigt
ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die
nach einem Verfahren zur Implementierung des erfindungsgemäßen Bauelements
angewandt werden;
-
35 zeigt
ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die
nach einem Verfahren zur Simulation einer Anwendung unter Verwendung
des erfindungsgemäßen Bauelements
angewandt werden;
-
36 zeigt
ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die
nach einem Verfahren zur Emulation einer Anwendung unter Verwendung
des erfindungsgemäßen Bauelements
angewandt werden;
-
37 zeigt
ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die
nach einem Verfahren zur Verwendung des erfindungsgemäßen Bauelements
angewandt werden, um den ASIC-Entwurf zu erleichtern;
-
38 zeigt
ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die
nach einem Verfahren zur Vermeidung des Einsatzes defekter Zellen
in dem Bauelement während
der Implementierung einer Anwendung unter Verwendung des Bauelements
angewandt werden;
-
39 zeigt
ein Ablaufdiagramm, das die Hauptarbeitsschritte darstellt, die
nach einem Verfahren zur Fehlerbeseitigung von defekten Zellen in
dem Bauelement während
des Echtzeitbetriebs einer Anwendung unter Verwendung des Bauelements
angewandt werden;
-
Die 40 und 41 zeigen Ablaufdiagramme,
die erfindungsgemäße Prozesse
für die
Hardware-Implementierung von IC-Chips auf Elektronikkarten darstellen.
-
Ausführliche
Beschreibung der Erfindung
-
2 zeigt
schematisch die Grundarchitektur eines erfindungsgemäßen Bauelements 100.
Die Architektur des Bauelements ist eine Ansammlung von Zellen 101,
die über
mindestens eine programmierbare Matrix 102 zusammengeschaltet
sind. Eine Zelle 103 kann aus kleineren Zellen 101 aufgebaut
werden. Ebenso kann jede der Zellen 101 oder 103 zusammen
mit der dazugehörigen
Matrix 102 Teil eines Blocks sein, wie z. B. von 104 und 105.
Jeder Block hat die gleiche Architektur wie das gesamte Bauelement 100.
Jeder Block kann als Einzelzelle konfiguriert sein. Obwohl zwischen
dem Ausgang eines Blocks und dem Eingang des gleichen oder eines
anderen Blocks irgendeine Verbindung hergestellt werden kann, ist
eine bestimmte Verbindung zwischen den inneren Zellen von zwei Blöcken unter
Umständen
nicht immer möglich.
Dies ermöglicht die
Zuordnung eines Blocks zu einer "Ebene", welche die Anzahl
der Blöcke
ist, die den Block enthalten. So ist z. B. ein Block der Ebene 0
das Bauelement selbst; Blöcke
der Ebene 1 bilden das Bauelement; und Blöcke der Ebene 2 bilden Blöcke der
Ebene 1. Bei dieser Aussage ist zu beachten, daß 2 schematisch ist, und daß es unerheblich
ist, ob die programmierbare Matrix 102 innerhalb oder außerhalb
der Begrenzung des Blocks dargestellt wird, da in jedem der beiden
Fälle alle
Zellen innerhalb eines Blocks mit mindestens einer programmierbaren
Matrix verbunden sein müssen.
Die Anschlüsse
einer innerhalb eines Blocks liegenden Zelle, die eine Verbindung
nach außerhalb
des Blocks ermöglichen,
sind als Anschlußkanal
bzw. Port des Blocks definiert.
-
Ferner ist zu beachten, daß ein Block
eine oder mehrere Zellen bilden könnte. Ebenso ist das Bauelement 100 selbst
ein Block, der mehrere Zellen enthält, die durch eine programmierbare
Matrix miteinander verbunden sind, und jeder Block hat folglich
eine ähnliche
Architektur wie das Bauelement 100 und kann in der Tat
als Bauelement angesehen werden. Das Bauelement 100 enthält daher
mehrere gleichartige Bauelemente und kann als Zelle angesehen werden,
die aus mehreren gleichartigen Zellen besteht.
-
Der Name "Block" ermöglicht
eine Unterscheidung zwischen dem kompletten Bauelement 100 und
einer Komponente davon mit ähnlicher
Architektur; auch wenn diese Unterscheidung nur für die Patentbeschreibung
gilt, um eine klare Darstellung zu erleichtern. Was die Patentansprüche betrifft,
wird nicht zwischen dem kompletten Bauelement und irgendeiner Komponente
davon mit ähnlicher
Architektur unterschieden. Tatsächlich
liegt ein wesentliches Merkmal der Erfindung in der Tatsache, daß die Architektur
einer Komponente des Bauelements der Architektur des Bauelements
als Ganzem ähnlich
sein kann. Aus dem gleichen Grunde kann ein Block, da er selbst
ein Bauelement ist, auf verschiedene Weise realisiert werden, und
daher kann ein Bauelement zwei oder mehrere Blöcke mit unterschiedlichen Strukturen
enthalten.
-
Zu beachten ist, daß die Matrix 102 keine
einzelne Einheit zu sein braucht, sondern in Abschnitte unterteilt
sein kann. Ebenso wird man erkennen, daß der Block 105 mehrere
Zellengruppen enthält,
von denen zwei als 106 und 107 gekennzeichnet sind, die jeweils
eine möglicherweise
unterschiedliche Anzahl von Zellen 101 enthalten und beide
durch eine einzige Matrix 108 versorgt werden. Der Block 105 zusammen
mit seinen Teilzellen und etwaigen anderen Teilelementen wird gleichfalls
durch eine zweite Matrix 109 versorgt, die außerhalb des Blocks 105 dargestellt ist.
Jede der Matrizen 108 und 109 ist typischerweise
von identischer Struktur mit der Matrix 102, und es ist
Verabredungssache, ob sie innerhalb oder außerhalb des Blocks dargestellt wird.
Folglich ist die Art und Weise, in der die Matrix in den Figuren
abgebildet wird, schematisch und dient nur zur Erläuterung.
Außerdem
ist zu beachten, daß ein
Teil der in einer Matrix verfügbaren
Verbindungen in einer anderen Matrix nachgebildet werden könnten. Jede
derartige Kopie wird in der Implementierung entfernt. Wie weiter
unten anhand von 8 erläutert wird,
ist die Matrix in der Praxis einfach eine Gruppe von Schaltern (wie
z. B. CMOS-Schalter),
die jeweils durch ein Flipflop gesteuert werden, so daß durch
Einschreiben einer logischen "1" oder "0" in das entsprechende Flipflop der Schalter
geschlossen oder geöffnet
werden kann, wodurch die Stellen gemäß irgendeiner erforderlichen
Topologie zusammengeschaltet werden können. Die Flipflops, die sich
auf alle Schalter der Matrix beziehen, sind in Gruppen angeordnet
und mit Hilfsschaltungen verknüpft,
die ermöglichen,
daß jedes
der Flipflops zum Einschreiben von Daten angewählt werden kann. Folglich können die
Flipflops und die dazugehörigen
Hilfsschaltungen durch einen RAM realisiert werden und werden als "Matrixsteuerungsspeicher" bezeichnet. Wahlweise
können
im Matrixsteuerungsspeicher enthaltene Daten auch gelesen werden.
-
Die dargestellte Bauelementarchitektur
kann an "Fraktalstrukturen" erinnern, die in
der Mathematik zur Beschreibung irgendeiner Klasse von komplexen
geometrischen Formen benutzt werden, welche die Eigenschaft der
Selbstähnlichkeit
aufweisen.
-
Die Eingabeanschlüsse und die Ausgabeanschlüsse des
Bauelements sind mit der programmierbaren Matrix verbunden: die
Eingabeanschlüsse
mit dem Matrixeingang; die Ausgabeanschlüsse mit dem Matrixausgang.
Um direkt vom Eingang oder vom Ausgang auf eine untere Ebene zuzugreifen,
sollte der Anschlußkanal des
Blocks benutzt werden.
-
3 zeigt
schematisch eine Zelle 110 nach einer ersten Ausführungsform.
Die Zelle 110 weist einen Direktzugriffsspeicher (RAM) 111 mit
(n+m) Adressenleitungen 112 auf, die als zwei getrennte
Adressenbusse dargestellt sind, obwohl sie als ein einziger Adressenbus
funktionieren, dessen minimale Adreßbitzahl (m+n) gleich 1 sein
kann. Ein Datenbus 113 ermöglicht das Auslesen von Daten,
die in adressierbaren Speicherplätzen
des RAM 111 gespeichert sind, und nimmt eine Anzahl von
Datenbits D auf, deren minimale Anzahl ebenfalls gleich 1 ist. Auf
dem Datenbus erscheinende Daten werden durch einen Zwischenspeicher 114 gespeichert,
dessen Ausgang 115 einen Ausgang der Zelle 110 bildet.
Der RAM 111 kann mit den gewünschten Daten geladen werden.
-
4 zeigt
schematisch eine Zelle 120 nach einer zweiten Ausführungsform.
Die Zelle 120 weist einen RAM 121 mit (n+m) Adressenleitungen 122 auf,
die wieder als zwei getrennte Busse dargestellt sind, obwohl sie
als ein einziger Adressenbus arbeiten, dessen minimale Adreßbitzahl
(m+n) gleich 1 sein kann. Ein Datenbus 123 ermöglicht das
Auslesen von Daten, die in adressierbaren Speicherplätzen des
RAM 121 gespeichert sind, und nimmt eine Anzahl von Datenbits
D auf, deren minimale Anzahl ebenfalls gleich 1 ist. In diesem Fall
bilden die auf dem Datenbus 123 erscheinenden Daten ein
Ausgangssignal der Zelle 120. Die auf dem Adressenbus 122 erscheinende
Adresse wird durch einen entsprechenden Zwischenspeicher 124 gespeichert.
Der RAM 121 kann auf eine weiter unten beschriebene Weise
mit den gewünschten
Daten geladen werden. Obwohl am Ein gang des RAM 121 zwei
Zwischenspeicher 124 dargestellt sind, werden sie als "der Zwischenspeicher" der Zelle 120 bezeichnet,
wobei zwischen der tatsächlichen
Anzahl der Zwischenspeicher, die zum Speichern der Adresse benutzt
werden, nicht unterschieden wird.
-
Die in 3 und 4 dargestellten
RAM-Speicher 111 und 121 ebenso wie die Zwischenspeicher 114 und 124 sind
Teil des in 2 dargestellten
Bauelements 100. In einer bestimmten, an die Praxis angepaßten Ausführungsform
wurde der RAM auf IDT6116 von Integrated Device Technology, Santa
Clara, Californien, USA 95054, modelliert, und der Zwischenspeicher
wurde auf dem Register SN74HC374 von Texas Instruments Incorporated,
Dallas, Texas, USA 75380-9066, modelliert. In beiden Konfigurationen
der Zelle können
die Werte von n, m und d nach Bedarf entsprechend einer Anwendung
zugewiesen werden, die unter Verwendung des Bauelements implementiert
werden soll.
-
5 zeigt
schematisch eine detailliertere Darstellung der Logikzelle von 4. Die Figur zeigt eine Zelle 130,
die einen RAM 131 mit einem (m+n)-Bit-Adressenbus 132 und
einem d-Bit-Datenbus 133 aufweist. Ein Zwischenspeicher
bzw. eine Halteschaltung 134a und 134b dient zum
Halten der Adresse auf dem Adressenbus 132. Wieder ist
zu beachten, daß der
Adressenbus und der Zwischenspeicher 134 nur zur Erläuterung unterteilt
dargestellt sind. Funktionell gibt es nur einen einzigen Adressenbus,
und die Zwischenspeicher können
als ein einziger Zwischenspeicher angesehen werden. Logiksignale
OE und OE werden durch einen
Zwischenspeicher 136 gehalten, der auch als Teil oder als
Erweiterung des Zwischenspeichers 134 angesehen werden
kann, und über
Hilfsschaltungen 137 der Ausgangsfreigabe (OE) des RAM 131 zugeführt und
können bewirken,
daß der
RAM drei Zustände
annehmen kann. Logiksignale CS und CS werden
gleichfalls durch den Zwischenspeicher 136 gehalten und über die
Hilfsschaltungen 137 zugeführt, um zu ermöglichen,
daß der RAM 131 aktiviert
oder deaktiviert wird. Die Anzahl der Paare von CS- und CS-Signalen ist so gewählt, daß die Abbildung des gesamten
Blocks (oder Bauelements) in eine einzige Zelle ermöglicht wird.
Den Zwischenspeichern 134 und 136 wird ein Taktsignal
zugeführt
und kann durch ein Taktfrei gabesignal CE aktiviert oder deaktiviert
werden, das gleichfalls über
eine Matrix zugeführt
werden kann. Die Signale OE, OE,
CS1, CS1, CS2, CS2, CS3, CS3,
CS4, CS4 und so weiter, und
CE sind so beschaffen, daß sie,
wenn sie nicht angelegt sind, auf Standardwerte gesetzt werden,
so daß ein
aktives L-Signal
auf L und ein aktives H-Signal auf H gesetzt wird, d. h. auf ihre
aktivierten Zustände.
Dagegen wird der Standardwert von WE, wenn das Signal nicht angelegt
ist, auf seinen deaktivierten Zustand gesetzt. Wenn der RAM nicht
aktiviert ist (die Chipfreigabe ist nicht aktiv), dann befindet
er sich im Dreizustandsmodus und unter Schreibsperre.
-
Nachstehend wird eine mögliche Zeitsteuerungs-Implementierung für das Bauelement
beschrieben, das auf der Zelle von 5 basiert.
-
(a) Für alle Zellen wird ein einziger "Haupttakt" verwendet.
-
(b) es gibt kein "Schreibsignal", da der Haupttakt das "Schreibsignal" ist. Das Schreibsignal
ist aktiv oder nicht, in Abhängigkeit
vom "Schreibfreigabesignal".
-
(c) Da die Signale "Ausgabefreigabe" und das Signal "Schreibfreigabe" gleichfalls durch
den Haupttakt blockiert werden, gibt es daher kein Zeittaktwettrennen
bzw. keinen Konflikt zwischen "Schreibsignal" und irgendeinem
anderen Signal.
-
(d) Es gibt keinen Konflikt zwischen
der Zwischenspeicherfunktion und der Schreibfunktion, da der Anfang
der Zwischenspeicherfunktion das Ende der Schreibfunktion ist. Nichtsdestoweniger
kann es wünschenswert
sein, die Impulsdauer des Schreibsignals ein wenig zu verkürzen, um
die Sicherheitsspanne zu vergrößern und
dabei den gleichen Zyklus beizubehalten, welche der Zeit zwischen
zwei aufeinanderfolgenden Taktimpulsen an den Zwischenspeichern
entspricht.
-
(e) Wenn ein Schreibsignal auftritt,
können
Daten vom Eingang des Bauelements oder von anderen Zellen über die
Matrix der erforderlichen Zelle zugeführt werden. Im letzteren Fall
werden die entsprechenden Datenbusse der beiden Zellen miteinander
verbunden. Die Ausgabefreigabe des RAM, in den gerade Daten eingeschrieben
werden, ist deaktiviert (im Dreizu standsmodus), und die Ausgabefreigabe
des RAM, aus dem Daten ausgelesen werden, ist aktiv.
-
(f) OE- und Chipfreigabesignale werden
bereitgestellt, wie oben unter Bezugnahme auf 5 beschrieben. Das OE-Signal kann für die Schreiboperation,
den Multiplexbetrieb zwischen den Zellen usw. verwendet werden;
und die Chipfreigabesignale können
für die
Erzeugung größerer Zellen
benutzt werden, wie weiter unten unter Bezugnahme auf 6 beschrieben wird.
-
Für
Bauelemente, die sich für
Anwendungen eignen, wo überhaupt
keine Schreiboperation benötigt wird,
kann der Taktzyklus kürzer
sein, um schnellere (Echtzeit-)Anwendungen zu erzeugen, und der
L-H-Übergang
des Haupttaktsignals kann auftreten, wenn der Zellenausgang betriebsbereit
ist. Dies wird aus der Beschreibung von RAM-Server-Kombinationen
deutlicher, die in 15 und 17 dargestellt sind, sowie
aus den in 16 und 18 dargestellten Taktdiagrammen.
-
6 zeigt
ein Beispiel für
die Verbindung von zwei Zellen, die jeweils eine n-Bit-Adresse aufweisen, um
eine Verbundzelle 140 von doppelter Größe zu bilden, d. h. mit der
doppelten Anzahl von adressierbaren Speicherplätzen, die durch einen (n+1)-Bit-Adressenbus
adressiert werden. Soweit die Komponenten jeder Teilzelle identisch
mit denen sind, die oben unter Bezugnahme auf 5 beschrieben wurden, werden in 6 gleiche Bezugszeichen
benutzt. Folglich enthält
die Verbundzelle 140 zwei RAM-Speicher, die mit 131a und 131b bezeichnet
werden und beide einen n-Bit-Adressenbus 132a bzw. 132b aufweisen.
Daher werden die niedrigstwertigen Bits der kombinierten Adresse über entsprechende
Zwischenspeicher 134a bzw. 134b den entsprechenden
RAM-Speichern 131a und 131b zugeführt. Zur
Veranschaulichung wird die (n+1)-Bit-Adresse, die der kombinierten
Zelle zugeführt
wird, von einem RAM 142 abgeleitet, der einen m-Bit-Adressenbus
und einen (n+1)-Bit-Datenbus aufweist, wobei eine m-Bit-Adresse
dem Bus über
einen m-Bit-Zwischenspeicher 143 zugeführt wird.
Die Datenbusse 133 der beiden RAM-Speicher 131a und 131b werden über die
Matrix verbunden, wobei jeder Datenausgang drei Zustände annehmen
kann, so daß nur
die Daten in einem aktivierten RAM ausgegeben wer den. Das höchstwertige
Bit (MSB) des (n+1)-Bit-Adressenbusses wird benutzt, um zu steuern,
welcher der beiden RAM-Speicher 131a und 131b Daten
zum Datenbus 133 übermittelt.
Zu diesem Zweck wird es an den CS1-Eingang
des Zwischenspeichers 131a angelegt, der den RAM 131a steuert,
und an den CS1-Eingang des Zwischenspeichers 136b, der
den RAM 131b steuert.
-
Die Funktionsweise des Schaltkreises
ist die folgende. Wenn das MSB der Daten vom RAM 142, das dem
MSB der kombinierten (n+1)-Bit-Adresse zugeführt wird, gleich 0 ist, dann
wird der RAM 131a freigegeben, und der RAM 131b wird
gesperrt. Wenn umgekehrt das MSB der Daten vom RAM 142,
das dem MSB der kombinierten (n+1)-Bit-Adresse zugeführt wird,
gleich 1 ist, dann wird der RAM 131a gesperrt, und der
RAM 131b wird freigegeben. Unter Rückgriff auf die in 5 dargestellten Hilfsschaltungen 137 wird
das CS1-Eingangssignal einem ersten logischen UND-Gatter 145 zugeführt, dessen
Ausgang nur dann aktiv ist, wenn alle Eingänge freigegeben sind. Wie oben
festgestellt, werden alle nicht durch die Matrix verbundenen Eingänge automatisch
freigegeben, so daß der
Ausgang des logischen UND-Gatters 145 aktiv
ist, wenn CS1 freigegeben ist, und inaktiv, wenn CS1 gesperrt ist.
Ebenso wird das Eingangssignal CS1 einem ersten logischen aktiven
UND-Gatter 146 zugeführt,
dessen Ausgang nur dann aktiv ist, wenn alle seine Eingänge freigegeben sind
(aktives L). Da alle nicht durch die Matrix verbundenen Eingänge automatisch
freigegeben werden, ist der Ausgang des logischen UND-Gatters 146 wieder
aktiv, wenn CS1 freigegeben ist, und inaktiv, wenn CS1 gesperrt
ist. Wenn daher das MSB gleich L ist, dann wird das Signal CS1 des
RAM 131a freigegeben, und der RAM 131a ist funktionsfähig, und
wenn das MSB gleich H ist, dann wird das Signal CS1 des RAM 131b freigegeben,
und der RAM 131b ist funktionsfähig. Wenn folglich der RAM 131a aktiv
ist, dann ist der RAM 131b inaktiv, und wenn umgekehrt
der RAM 131a inaktiv ist, dann ist der RAM 131b aktiv.
-
Auf genau die gleiche Weise können zwei
RAM-Speicher 140 kombiniert werden, in welchem Falle die Signale
CS2 und CS2 gleichfalls zur Aufnahme der beiden höchstwertigen
Bits der Adresse benutzt werden. Eine solche Erweiterung kann nach Belieben
wiederholt werden, um einen RAM zu erzeugen, der so viele adressierbare
Speicherplätze
aufweist, wie eine bestimmte Anwendung benötigt. Zu beachten ist auch,
daß die
beiden RAM-Speicher 131a und 131b in 6 mit Adressenbussen von
gleicher Größe dargestellt
sind. Dies braucht jedoch nicht der Fall zu sein, und eine Anwendung
kann, und wird nicht selten, eine Topologie vorschreiben, wo RAM-Speicher
mit Adressenbussen von unterschiedlicher Größe kombiniert werden.
-
Das "Taktfreigabe"-Signal kann als Eingabe für die Zelle
angesehen werden, obwohl es hauptsächlich für Zwecke der Fehlersuche während des
Entwurfs benutzt wird.
-
7 zeigt
schematisch eine Matrix 150, die Ausgänge 151 von D-Zellen
mit Eingängen 152 von A-Zellen
verbindet. 8 zeigt
schematisch eine gesättigte
Matrix 155 mit vier Eingangsleitungen und drei Ausgangsleitungen,
die in der Schaltung von 7 verwendet
werden kann. Die Matrix 155 muß in der Lage sein, jede der
Zellenausgangsleitungen 151 mit jeder der Zelleneingangsleitungen 152 in
dem Block zu verbinden. Jeder Zellenausgang 151 wird mit
einem entsprechenden, durch alphabetische Zeichen a, b, c, d bezeichneten
Eingang der Matrix 155 verbunden. Die Matrix 155 dient
dazu, die Verbindung jedes Zellenausgangs 151 mit einem
oder mehreren Zelleneingängen 152 zu
ermöglichen,
die durch numerische Zeichen 1, 2, 3 bezeichnet werden. Es gibt
praktisch keinen Grund dafür,
jeden Zellenausgang 151 mit allen möglichen Zelleneingängen 152 verbinden
zu können
und auf diese Weise die Verwendung einer Matrix zuzulassen, die nicht.
gesättigt
ist, wie in 9 dargestellt.
Die Verwendung der gesättigten
Matrix, wie in 8 dargestellt, vereinfacht
jedoch die Automatisierung, und der Betrieb ist in Echtzeit schneller.
Obwohl die Zelle aus kleineren Zellen hergestellt werden könnte und
in einigen Anwendungen die größere Zelle
nicht aufgebaut wird, sind der Ausgang und der Eingang der größeren Zelle
vorgegeben.
-
Die Arbeitsweise der gesättigten
Matrix 155 ist die folgende. Jeder der Eingänge a, b,
c, d ist mit jedem der Ausgänge 1, 2, 3 über entsprechende
Schalter verbunden. So sind die Eingänge a, b, c, d über die
Schalter a1, b1, c1, d1 mit dem Ausgang 1 verbunden. Ebenso
sind die Eingänge
a, b, c, d über
die Schalter a2, b2, c2, d2 mit dem Ausgang 2 verbunden;
und sie sind über
die Schalter a3, b3, c3, d3 mit dem Ausgang 3 verbunden.
Um den Eingang a mit dem Ausgang 1 zu verbinden, wird der
Schalter a1 geschlossen. Um c mit 3 zu verbinden, wird der Schalter
c3 geschlossen. Um b sowohl mit 1 als auch mit 3 zu verbinden, werden
die Schalter b1 und b3 beide geschlossen. Um sowohl b als auch d
sowohl mit 2 als auch mit 3 zu verbinden, werden die Schalter b2,
b3, d2 und d3 geschlossen, und so weiter.
-
Jeder Schalter weist eine Steuerleitung
(nicht dargestellt) auf, die den Schalter in die "geschlossene" oder "geöffnete" Stellung bringt
und mit einem 1-Bit-Speicher verbunden ist, der den Zustand des
Schalters speichert. Da in der Praxis sehr viele Schalter vorhanden
sind, sind alle Bits, die jeden Schalterzustand speichern, in einer
Speicherstruktur angeordnet. Mit anderen Worten, es gibt eine Speichereinheit,
welche die Zustände
der Schalter speichert. Jedes Bit im Speicher ist mit einer Steuerleitung
verbunden, im Speicher sind ebenso viele Bits vorhanden wie Speicher
in der Matrix. Auf diese Weise funktioniert der Speicher als Matrixsteuerungsspeicher,
um zu steuern, ob der Zustand jedes Schalters geschlossen oder offen
ist. In dem obigen Beispiel verbindet die Matrix 155 einen
4-Bit-Datenbus mit einem 3-Bit-Adressenbus. Man wird jedoch einsehen,
daß die
Matrix 155 ebenso gut mit den Leitungen a, b, c, d, welche
die Ausgänge
darstellen, und den die Eingänge
bildenden Leitungen 1, 2, 3 verbunden
sein kann, um einen 3-Bit-Datenbus mit einem 4-Bit-Adressenbus zu
verbinden.
-
9 zeigt
schematisch ein Beispiel einer ungesättigten Matrix 156,
die mehrere, miteinander verbundene gesättigte Matrizen 155 aufweist,
wie in 8 dargestellt,
wobei jede Matrix ihren eigenen Speicher aufweist, um jeden von
ihren Schaltern zu steuern. Alle Speicher sind als ein großer Speicher
organisiert, der als Matrixsteuerungsspeicher funktioniert. Die
Programmierung der Matrix wird ausgeführt, indem der Matrixsteuerungsspeicher
mit den entsprechenden Daten geladen wird, wie weiter unten beschrieben,
und die gewünschte
Topologie des Bauelements einstellt.
-
Eine solche Matrix
156,
die so konstruiert ist, daß sie
eine begrenzte, aber ausreichende Anzahl von Verbindungen aufweist,
wird gegenüber
einer äquivalenten
gesättigten
Matrix mit der gleichen Anzahl von Schaltverbindungen bevorzugt,
da sie Chipraum einspart, obwohl der Code für die Wahl der Verbindungen (Leitungsführungen)
etwas komplizierter ist. Unter der Annahme, daß jede Matrix
155 gesättigt ist,
und mit den Bezeichnungen:
D = Anzahl der Eingangsleitungen
zur Matrix,
A = Anzahl der Ausgangsleitungen der Matrix,
X
= Anzahl der Eingangsmatrizen
155,
Y = Anzahl der
Ausgangsmatrizen
155, und
Z = Anzahl der Matrizen
155 in
der mittleren Spalte werden daher X, Y und Z wie folgt berechnet:
wobei "Obergrenze" bedeutet, daß ein nicht ganzzahliger Wert
auf die nächsthöhere ganze
Zahl aufgerundet wird.
-
Jede der Eingangsmatrizen ist mit
jeder der Matrizen in der mittleren Spalte verbunden. Jede der Ausgangsmatrizen
ist mit jeder der Matrizen in der mittleren Spalte verbunden. Um
Einschränkungen
durch Querverbindungen zu verhindern, kann Z vergrößert werden.
Selbst dann sind die Anzahl der Schalter und der dazugehörige Speicher
sehr viel kleiner als die Schalterzahl und der dazugehörige Speicher
in einer gesättigten Matrix
mit der gleichen Anzahl von Eingangsanschlüssen und Ausgangsanschlüssen. Dies
ist besonders wichtig, wenn eine einzige Matrix verwendet wird,
um alle Zellen in allen Ebenen zu verbinden. Wegen der Tendenz, eine
Kombination von Zellen zur Bildung größerer Zellen zu versuchen,
wird man feststellen, daß die
Wahrscheinlichkeit, daß der
Endanwender zwei Zellen im gleichen Block verbindet, größer ist
als die Wahrscheinlichkeit, daß er
zwei Zellen in verschiedenen Blöcken
verbindet.
-
Bei Verwendung einer solchen einzigen
Matrix ist es daher ratsam, während
des Entwurfs des Bauelements in Betracht zu ziehen, mit welchen
Eingangs- und Ausgangsmatrizen Zellenanschlüsse verbunden werden, da der
Endanwender es vorziehen kann, aus diesen Zellen größere Zellen
zu bilden. Außerdem
ist zu beachten, daß,
wenn statt dessen getrennte Matrizen in jedem Block vorgesehen werden,
die kumulative Verzögerung
für bestimmte
Verbindungen wahrscheinlich größer ist
als bei Verwendung einer einzigen Matrix. Ferner muß die Notwendigkeit
in Betracht gezogen werden, in der Matrix Verbindungen zum Eingang
und Ausgang des Bauelements zusätzlich
zu den Zwischenverbindungen zwischen den Ausgängen der Zellen und den Eingängen der
Zellen herzustellen.
-
Um zu verstehen, wie das Bauelement
eingesetzt werden kann, um lediglich durch Auswahl einer erforderlichen
Topologie und Herunterladen von Daten in die Speicherelemente jeder
Zelle verschiedene Hardwareanwendungen zu implementieren, werden
nachstehend verschiedene Beispiele beschrieben. Um die Erläuterung
zu erleichtern, basieren einige Beispiele auf der in 3 dargestellten Zelle 110,
obwohl das Bauelement bei Verwendung der Zelle 120 von 4 auf die gleiche Weise
arbeitet. In den folgenden Beispielen werden Komponenten, die der
in 3 dargestellten
Zelle und der in 8 dargestellten
Matrix gemeinsam sind, durch gleiche Bezugszeichen bezeichnet.
-
Beispiel 1 – Zähler
-
10 zeigt
schematisch einen Zähler
160,
der eine Zelle
110 verwendet, die einen RAM
111 mit
einem n-Bit-Datenausgabebus
113 aufweist,
der einem n-Eingabezwischenspeicher
114 zugeführt wird,
dessen Ausgang
115, der den Ausgang der Zelle bildet, mit
dem Eingang der Matrix
155 verbunden ist. Jede der n-Ausgangsleitungen
der Zelle ist über
die Matrix
155 mit einer entsprechenden Adressenleitung
des RAM-Adressenbusses
112 verbunden.
Der RAM wird mit den folgenden Daten geladen:
-
Im stationären Zustand gibt es eine "Nummer" am Ausgang 115 des
Zwischenspeichers 114, welche die "Adresse" des RAM 111 definiert. Daher
werden die "Daten" des RAM – die Eingabe
des Zwischenspeichers – durch
die Tabelle festgesetzt. Für
alle Adressen außer
der letzten ist das Datenelement in jedem adressierbaren Speicherplatz
des RAM gleich dessen Adresse plus eins, und dieses Element wird
zur neuen Adresse des nächsten
Taktimpulses. Auf diese Weise hält
der Zwischenspeicher 114 in jedem Takt des RAM die Adresse
des nächsten
adressierbaren Speicherplatzes, dessen Datenelement gleich dem aktuellen
Datenelement plus eins ist. Nach einer Verzögerungszeit ist der RAM bereit
für einen
neuen Takt, der Zyklus wiederholt sich, und das Ausgabeelement wird
schrittweise inkrementiert.
-
Beispiel 2 – Vorwärts-Rückwärts-Zähler
-
11 zeigt
schematisch einen Vorwärts-Rückwärts-Zähler
165, der im wesentlichen
mit dem in
10 dargestellten
Zähler
identisch ist, mit der Ausnahme, daß der RAM
111 so konstruiert
ist, daß er
zwei Tabellen in seinen entsprechenden adressierbaren Speicherplätzen speichert.
Dies erfordert natürlich,
daß der RAM
doppelt so groß ist
wie derjenige, der in dem Zähler
von
10 verwendet wird,
oder daß der
Bereich des Zählers
halb so groß ist.
In jedem Fall wird ein Bit der Adresse benutzt, um in dem RAM einen
neuen Bereich zur Datenspeicherung festzusetzen, der, wenn er in
die übrigen
Bits des Adressenbusses eingespeist wird, auf eine neue Adresse
zeigt, deren Datenwert gleich der Adresse minus eins ist. Der neue
Bereich in dem RAM wird mit den folgenden Daten geladen:
-
Das Vorwärts-Rückwärts-Signal wird außerdem von
der Matrix 155 übertragen,
ebenso wie alle Eingaben der Zellen.
-
Beispiel 3 – Verzögerung
-
Um eine Verzögerung zu erzielen, ist der
RAM redundant. Daher kann der RAM 111 einfach so kodiert werden,
daß er
die Adresse zu den Daten überträgt, z. B.
ist in der Adresse "0" das Datenelement "0" enthalten, in der Adresse "1" ist das Datenelement "1" enthalten, und so weiter. Bei jedem
Taktsignal wird das Datenelement am Eingang der Zelle gehalten und über den
RAM direkt nach außen übertragen,
und es wird eine Verzögerung
um einen Takt erzielt. Die Konnektivität einer solchen Verzögerung wird
außerdem
in dem Schieberegister verwendet, das weiter unten im Beispiel 4 beschrieben
und in 13 dargestellt
wird.
-
Beispiel 4 – Schieberegister
-
12 zeigt
schematisch ein Schieberegister 170, das drei Zellen in
einem Block verwendet und entsprechende RAM-Speicher 111a, 111b und 111c aufweist,
die jeweils einen n-Bit-Datenausgabebus
aufweisen, der einem entsprechenden n-Bit-Eingabezwischenspeicher bzw. -speicherflipflop 114a, 114b bzw. 114c zugeführt wird,
dessen Ausgänge 115a, 115b bzw. 115c zu
einem 3n-Bit-Ausgabedatenbus 115 zusammengeführt werden,
der den Ausgang der Zelle bildet. Die Matrix 155 ist so
programmiert, daß sie
die (n-1) niedrigstwertigen Bits (LSB) jedes Ausgabedatenbusses 115a, 115b und 115c mit
Adreßbits
der entsprechenden RAM-Speicher 111a, 111b bzw. 111c verbindet.
Ebenso wird das höchstwertige
Bit (MSB) jedes Ausgabedatenbusses
115a, 115b bzw. 115c durch
die Matrix 155 dem LSB des nächsten RAM-Speichers zugeführt, mit
Ausnahme des MSB des Datenbusses 115c, das direkt durch
das Schieberegister abgeworfen wird, obwohl es von der Anwendung
verwendet werden kann. Die Daten in jedem RAM werden so codiert,
daß die Adresse
einfach zu den Daten übertragen
wird, z. B. ist in der Adresse "0" das Datenelement "0" enthalten, in der Adresse "1" ist das Datenelement "1" enthalten, und so weiter, ebenso wie
bei der im obigen Beispiel 3 beschriebenen Verzögerung.
Die Topologie des Schieberegisters ist so ausgelegt, daß die erforderliche
Verschiebung erzeugt wird, und die Matrix 155 ist so programmiert,
daß die
notwendige Konnektivität
erzielt wird.
-
Man wird erkennen, daß die Konnektivität der Matrix 155 der
Deutlichkeit halber in 12 nicht
dargestellt ist. Damit jedoch die Arbeitsweise des Schieberegisters 170 klar
ist, werden nachstehend unter Bezugnahme auf 13 nur die Konnektivität und die
Arbeitsweise des RAM-Speichers 111a erläutert, wobei zur Bezeichnung
der in 12 dargestellten
Komponenten gleiche Bezugszeichen verwendet werden.
-
13 zeigt
ein einzelliges Schieberegister 175 mit einem RAM 111a,
der einen 8-Bit-Adressenbus (d. h. n=8) aufweist, und dessen Daten
jeweils durch einen Zwischenspeicher 114a gespeichert und
durch die Matrix (nicht dargestellt) mit dem nächsthöherwertigen Bit im Adressenbus
des RAM-Speichers verbunden werden. Wenn daher die Adreßbits durch
A0, A1, A2, ... A7, wobei
A0 das LSB und A7 das
MSB ist, und die Datenbits durch D0, D1, D2,... D7 bezeichnet werden, wird das niedrigstwertige
Datenbit D0 mit dem Adreßbit A1, das
Datenbit D1 mit dem Adreßbit A2 verbunden,
und so weiter. Das höchstwertige
Datenbit D7 wird abgeworfen oder der nächsten Stufe
des Schieberegisters zugeführt,
wenn mehrere einzellige Schieberegister in Kaskade zu schalten sind,
wie in 12.
-
Wie oben festgestellt, werden die
Daten im RAM 111a so codiert, daß einfach jedes Adreßbit zu
dem entsprechenden Datenbit übertragen
wird; z. B. ist in der Adresse "0" das Datenelement "0" enthalten, in der Adresse "1" ist das Datenelement "1" enthalten, und so weiter. Auf diese
Weise werden die Daten in jeder Adressenleitung einfach durch den
RAM 111a aus gegeben und durch den Zwischenspeicher 114a gehalten. Beim
nächsten
Taktimpuls wird jetzt jedes Datenbit durch die Matrix der nächsten Adressenleitung
zugeführt, wodurch
in aufeinander folgenden Taktimpulsen Datenelemente, die dem LSB-Adreßbit a0 zugeführt
werden, das Schieberegister durchlaufen.
-
Ein alternatives Verfahren, das verwendet
werden kann, um ein einzelliges Schieberegister zu implementieren,
besteht darin, die Matrix für
eine direkte Übertragung
der Zeilen zu programmieren, so daß D
1 mit dem
Adreßbit
A
1, das Datenbit D
2 mit
dem Adreßbit
A
2 usw. verbunden wird. In diesem Fall wird
die Verschiebung ausgeführt,
indem der RAM mit den folgenden Daten geladen wird.
und so weiter. Wenn ein umgekehrte
Verschiebung erforderlich ist, dann wird der RAM mit den folgenden
Daten geladen:
und so weiter.
-
Man wird erkennen, daß sowohl
in dem 3-zelligen Schieberegister von 12 als auch in dem einzelligen Schieberegister
von 13 die niedrigstwertige
Adressenleitung auch mit der Matrix verbunden ist. Sie wird jedoch
in beiden Figuren als "abgetrennt" dargestellt, um
die Schiebeoperation hervorzuheben.
-
Außerdem sind die folgenden Punkte
zu beachten. Die Höchstgeschwindigkeit
dieses Schieberegisters wird durch den Takt bestimmt, dessen Frequenz
die Summe aus der Verzögerung einer
Zelle und der Verzögerung
der Matrix berücksichtigen
muß. Mit
Rücksicht
auf die frühere
Diskussion der "Ebenen" sind außerdem die
Eingabeanschlüsse
und die Ausgabeanschlüsse
des Bauelements mit der programmierbaren Matrix der "Ebene 1" verbunden: die Eingabeanschlüsse mit
dem Matrixeingang; die Ausgabeanschlüsse mit dem Matrixausgang.
Wenn die Anwendung auf der "Ebene
1" implementiert
wird, dann kann der Eingabeanschluß, der das LSB des Schieberegisters überträgt, von
einem der Eingabeanschlüsse
des Bauelements ausgehen, und die Ausgabeanschlüsse 115 können den
Ausgabeanschlüssen
des Bauelements zugeführt
werden. Wenn die Anwendung auf einer anderen "Ebene" als "1" implementiert
wird, dann können
nur die Anschlüsse
vom Port des Blocks auf dieser Ebene zu den E/A-Anschlüssen des
Bauelements geführt
werden.
-
Beispiel 5 – Rauschgenerator
-
Ein Rauschgenerator kann auf der
Basis des in 12 dargestellten
Schieberegisters konstruiert werden. Wie dem Fachmann bekannt, kann
ein Rauschgenerator gebildet werden, indem einige der Ausgänge des
Schieberegisters einer XNOR-Operation
unterworfen werden und das Ergebnis der XNOR-Operation zum LSB der Eingabeadresse
zurückgeführt wird,
um das Schieberegister zu durchlaufen. Die Adressen-Daten-Beziehung in den
RAM-Speichern ist so programmiert, daß die XNOR-Operation erzielt
wird. In dem einfachen Fall, wo zwei Datenbits des gleichen RAM-Speichers
der XNOR-Operation zu unterwerfen sind, ist es einfach, die Daten
in dem RAM entsprechend der gewünschten
Wahrheitstabelle des Bauelements zu programmieren. Wenn jedoch XNOR-Operation
zwischen Datenbits zweier getrennter RAM-Speicher auszuführen ist,
dann muß eines
dieser Datenbits durch die Matrix angelegt werden, um auch eine
Eingabe zu dem anderen RAM zu bilden. Nehmen wir beispielsweise
an, daß in
dem Schieberegister 170, das in 12 dargestellt ist, die XNOR-Operation
auf eines der Datenbits des RAM-Speichers 111a und eines
der Bits des RAM-Speichers 111b anzuwenden ist. Die Matrix 155 sollte
das erforderliche Datenbit im Ausgang 115b des RAM 111b an
den Eingang 112a des RAM 111a anlegen, und das
XNOR-Ergebnis muß zu
einem der Datenaus gabebits 115a des RAM 111a übertragen
werden. Als Ergebnis weist der RAM 111a weniger verbleibende
Bits zur Ausführung
der Schiebefunktion auf.
-
Beispiel 6 – Bildgenerator
-
Ein Bildgenerator/Signalgenerator
ist eine weitere einfache Anwendung und verwendet typischerweise
eine Zelle als Zähler,
der an eine zweite Zelle angelegt wird, deren Daten so programmiert
sind, daß entsprechend
dem Zustand des Zählers
das erforderliche Bild erzeugt wird. Wenn wir irgendeine Funktion
f(t) betrachten, die berechnet oder aufgezeichnet werden kann, dann
gibt der Zähler
folglich aufeinanderfolgende Werte von t aus, während die zweite Zelle für jeden
Wert von t, der ihrem Adressenbus zugeführt wird, den Wert der Funktion
f(t) speichert. Die zweite Zelle kann so konfiguriert werden, daß Daten,
die sich auf verschiedene Funktionen beziehen, in verschiedenen
Abschnitten des RAM gespeichert werden, wobei diese nach Bedarf
durch einen Auswahlcode ausgewählt
werden, der in andere freie Adressenbits der Zellen eingespeist wird.
Die Zählerzelle,
die programmierbar ist, kann verschiedene Zyklen für die unterschiedlichen
Signale (Bildmuster) einstellen. Wenn die Menge der Datenbits in
der Zelle kleiner ist als die Anzahl der benötigten Bits, kann eine weitere
Zelle benutzt werden, um den anderen Teil des Signals zu erzeugen:
eine Zelle, die den MSB-Teil des Signals erzeugt, und die andere,
die den LSB-Teil erzeugt.
-
Nachstehend werden verschiedene Beispiele
dargestellt, in denen die in 4 dargestellte
Zelle 120 benutzt wird.
-
Beispiel 7 – Dreizustandsfähigkeit
der Zelle
-
14 zeigt
schematisch ein Zellenpaar 180a und 180b, das
zwei RAM-Speicher 181a und 181b mit entsprechenden
Datenausgabebussen 182a und 182b aufweist, die
beide durch die Matrix (nicht dargestellt) mit einem gemeinsamen
Datenbus 182 verbunden sind. Jeder Zellenausgang kann in
einen Dreizustandsmodus gesteuert werden. Es ist ratsam, die Dreizustandsfähigkeit
der Zelle zu verwenden, wenn Multiplexer benötigt werden. In einer Multiplexer-Implementierung
werden die Ausgänge
der anzuschließenden
Zellen über die
Matrix dem gleichem Punkt zugeführt.
Der RAM 181a weist einen (n+m)-Adressenbus 183a und 183b auf, dessen
entsprechende Adressenleitungen durch ein Paar Zwischenspeicher 184a bzw. 184b gehalten
werden, während
der RAM 181b einen k-Bit-Adressenbus 183c aufweist,
dessen entsprechende Adressenleitungen durch einen Zwischenspeicher 184c gehalten
werden. Zu beachten ist, daß der
scheinbare Unterschied zwischen den Zwischenspeicherkonfigurationen
der beiden RAM-Speicher nur auf dem Papier existiert, da k gleich
m+n sein kann und die Zwischenspeicher 184a und 184b dann
als ein einziger k-Bit-Zwischenspeicher arbeiten, analog zu dem
Zwischenspeicher 184c. Die an die beiden RAM-Speicher 181a und 181b angelegten Ausgabefreigabesignale
wählen
aus, welcher RAM aktiv ist. Die Ausgabefreigabesignale werden auch über die
Matrix zugeführt.
-
Wie aus 9 erkennbar, ist die Anzahl Z der Matrizen 155 in
der mittleren Spalte die entscheidende Zahl zur Verhinderung von
Querverbindungsbeschränkungen.
Wenn jedoch die Ausgänge
einiger Zellen an den gleichen Punkt anzuschließen sind, können Leitungen in dieser mittleren
Spalte freigemacht werden. Daher können die Zellen 180a und 180b über eine
Matrix in der ersten Spalte an einen gemeinsamen Ausgang der Matrix
angelegt werden, wodurch der gemeinsame Ausgang dieser Matrix nur. über eine
einzige Matrix in der zweiten Spalte an einen Ausgang der Matrix 156 angeschlossen
werden kann und daher weniger Leitungen der Matrix benutzt werden.
Dies ist dem Anschluß jeder
der Zellen 180a und 180b an entsprechende Leitungen
in der mittleren Matrix und dem anschließenden Ausführen der Querverbindung vorzuziehen.
-
Da die Matrix den Ausgang jeder Zelle,
z. B. der Zelle 180a, an die Daten jedes anderen RAM-Speichers
in dem Block anschließen
kann, z. B. des RAM-Speichers in der Zelle 180b (die Daten
jedes RAM-Speichers sind auch die Ausgabe seiner Zelle), wenn sich
die andere Zelle 180b im Dreizustandsmodus befindet, während die
erste Zelle 180a aktiv ist, kann eine Schreiboperation
in den RAM 181b in der Zelle 180b ausgeführt werden.
Der Schreibimpuls kann in jedem Zyklus aktiviert werden, aber die
von der Matrix zugeführte Schreibfreigabe
aktiviert oder deaktiviert den eigentlichen Schreibvorgang.
-
Beispiel 8 – "RAM-Server"-Kombination
-
15 zeigt
eine "RAM-Server"-Kombination 190,
die einen Server 191 und einen RAM 192 einschließt und die
weiter oben unter Bezugnahme auf 14 beschriebene
Schreibfähigkeit
nutzt. Der Server 191 ist eine Zelle, die eine Funktion
ausführt,
während
der RAM 192 Ergebnisse des Servers speichert, die in anschließenden Server-Operationen
verwendet werden sollen. Die erforderliche Konnektivität zwischen
dem Server 191 und dem RAM 192 wird durch die
Matrix bewirkt, die der Deutlichkeit halber in der Figur nicht dargestellt
ist.
-
Ein Beispiel für die Verwendung der RAM-Server-Kombination ist das
folgende. Der RAM-Server 191 empfängt einen Eingabestrom von
Bytes und muß zählen, wie
oft jedes Byte (von möglichen
256 verschiedenen Bytes) in einer Periode auftritt. (Dieses Beispiel
ist ein Teil der Huffman-Code-Anwendung).
Der Eingabestrom wird einem Eingang 193 der "RAM-Server"-Kombination 190 zugeführt, der
wie folgt funktioniert. Der RAM 192 speichert die Ergebnisse
pro Byte, und der Server 191 inkrementiert das Ergebnis
um eins. Auf diese Weise empfängt
der RAM 192 eine Serie von 8-Bit-Zahlen (zwischen 0 und
255), und der RAM-Server 190 kompiliert und speichert im
RAM 192 ein Histogramm, das die Auftrittshäufigkeit
jeder 8-Bit-Zahl
darstellt.
-
Es treten die folgenden Operationen
auf:
- (a) Das aktuelle Byte wird abgetastet
und in den RAM der Eingabezelle eingegeben, und die im RAM gespeicherte
Zahl ist abrufbereit.
- (b) Diese Zahl wird im Server der Zelle gehalten. Der Server
ist so programmiert, daß er
die Zahl erhöht (ähnlich dem
in 10 dargestellten
Zähler).
- (c) Das erhöhte
Datenelement wird im RAM der Zelle gespeichert.
-
16 zeigt
ein mögliches
Taktdiagramm für
die obige Implementierung, welches zeigt, daß die Operation in nur zwei
Zyklen ausgeführt
werden kann, da der Zyklus "Schreiben" im gleichen Zyklus
ausgeführt werden
kann, in dem ein neues Byte gehalten wird. Obwohl in dieser Zeitsteuerungslösung Echtzeit
vergeudet wird, da der Haupttakt ein wenig größer sein sollte, um die Schreiboperation
in zwei Zyklen zu aktivieren, kann dies trotzdem gerechtfertigt
sein, da eine "RAM-Server"-Kombination manchmal die Implementierung
einer Anwendung vereinfachen kann. Alle in 16 dargestellten erforderlichen Signale
können
durch andere Zellen erzeugt werden, die für die Ausführung der Strukturerzeugung
konfiguriert sind, wie oben erläutert,
und über
die Matrix gespeist werden.
-
Wenn das Bauelement mit einem Taktzyklus
entworfen wird, der zu kurz ist, um die obige Implementierung zuzulassen,
kann eine RAM-Server-Kombination mit Dreitaktzyklus verwendet werden,
wie sie nachstehend unter Bezugnahme auf 17 und das entsprechende, in 18 dargestellte Taktdiagramm
beschrieben wird. In 17 ist
also eine RAM-Server-Kombination 200 dargestellt,
welche die gleiche Anwendung wie die oben unter Bezugnahme auf 15 beschriebene ausführt und
einen Zellen-Server 201 aufweist, der mit einem Zellen-RAM 202 gekoppelt
ist, welcher mit der Zelle in 5 identisch
ist. In diesem Fall müssen
im dritten Taktzyklus die Daten für die Schreiboperation invariant
gehalten werden, um den gleichen Wert beizubehalten wie die Ausgabe
des Zellen-Servers 201 während des vorhergehenden Taktzyklus.
Da die Ausgabedaten des RAM-Speichers des Zellen-Servers 201 zum
Adressenbus des Zellen-Servers 201 zurückgeführt werden, würden sie
andernfalls durch den darin enthaltenen Zähler nochmals inkrementiert
werden. Daher wird in diesem Fall im dritten Zyklus das Taktsignal
deaktiviert. In diesem Fall wird jedoch auf das Taktfreigabesignal
verzichtet, und statt dessen wird dem Eingang des Zellen-Servers 201 ein
zusätzliches
Adressenbit zugeführt,
das in 17 als "Addiere Eins" dargestellt ist,
als Anweisung, im dritten Zyklus keine Änderung auszuführen.
-
Ein drittes Zeitsteuerungsschema
kann auf der Tatsache basieren, daß die Codierung der RAM-Adresse
vor der Schreiboperation bereit ist, so daß zu erwarten ist, daß die Schreibdauer
kürzer
ist als die Lesedauer. Daher wird die Operation mit zwei Taktzyklen
bevorzugt. Es kann jedoch eine Operation mit drei Taktzyklen implementiert
werden, wie in 18 dargestellt.
Der "L-H"-Taktübergang
kann so "verschoben" werden, daß er nach
dem Ende der Leseoperation erfolgt, wodurch ein schnellerer Taktzyklus
erzeugt wird. Wie oben festgestellt, können die Eingabesignale durch
andere Zellen erzeugt und durch die Matrix angelegt werden.
-
Aus den obigen Erläuterungen
anhand von 17 folgt,
daß die
Taktfreigabe für
den RAM-Server 201 nicht wesentlich ist, und daher kann
auch dann, wenn in dem Bauelement keine Taktfreigabe erfolgt, der RAM-Server 201 dennoch
implementiert werden. Die Entscheidung, ob eine Taktfreigabe erfolgt
oder nicht, ist nicht so sehr von der Notwendigkeit abhängig, jeder
Zelle ein weiteres logisches UND-Gatter für die Taktfreigabe hinzuzufügen, sondern
vielmehr von der Notwendigkeit, die programmierbare Matrix zu vergrößern.
-
Die Erzeugung eines schnelleren Taktzyklus
kann dazu führen,
daß manche
Anwendungen schneller ausgeführt
werden, aber wenn dies bei der in 27 dargestellten "RAM-Server"-Anwendung der Fall ist, muß die Eingabe
mit dem Dreizyklustakt synchronisiert werden; daher ist zu erwarten,
daß sie
langsamer ausgeführt
wird.
-
Beispiel 9 – Timesharing
-
Um eine Anwendung zu implementieren,
sind normalerweise mehrere Zellen erforderlich. Beim Timesharing
(Zeitschachtelung) wird die gleiche Operation für mehrere unabhängige Eingaben
ausgeführt,
die der Implementierung nacheinander auf dem gleichen Eingabekanal
zugeführt
werden. Um eine Timesharing-Anwendung
mühelos
zu implementieren, ist jede einzelne Zellenausführungslogik durch die "RAM-Server"-Kombination zu ersetzen,
die oben anhand von 15 oder 17 beschrieben wurde, wobei
der "Server" als Zellenausführungslogik
verwendet wird und der RAM dazu dient, den Zustand jedes Zeitschlitzes
zu speichern. Der Eingang jedes RAM-Speichers ist mit einem globalen
Zähler
verbunden, der die Schlitze/Kanäle
des die Anwendung verwaltenden Timesharings zählt. Der Zähler kann eine der Zellen oder
ein Spezialzähler
sein, der über
die programmierbare Matrix mit allen RAM-Speichern der "RAM-Server"-Kombinationen verbunden wird, welche
die zeitlich geschachtelte Implementierung ausführen. In der bevorzugten Architektur
gibt es keinen Spezialzähler,
weshalb, wenn Timesharing benö tigt
wird, eine Zähleranwendung
(eine oder mehrere Zellen) implementiert werden sollte.
-
19 zeigt
ein Beispiel für
ein Schieberegister 210, das im Timesharing-Modus arbeitet
und einen Timesharing-Zähler 211 verwendet.
Das Schieberegister 210 weist zwei RAM-Server-Kombinationen 212, 214 bzw. 213, 215 auf,
welche die L- bzw. H-Teile der kombinierten Schiebeoperation auf ähnliche
Weise ausführen,
wie weiter oben anhand von 12 beschrieben,
wobei das höchstwertige
Bit (MSB) des RAM 214 dem Eingang des Servers 213 zugeführt wird.
Timesharing-Zellen 214 bzw. 215 sind mit den Servern 212 bzw. 213 verbunden,
um die L- bzw. H-Teile
bezüglich
jedes Zeitschlitzes der Schieberegister-Abtastwerte zu speichern. Die RAM-Server 212, 214 und 213, 215 arbeiten,
wie oben anhand von 15 oder 17 und ihrer Taktdiagramme
in 16 bzw. 18 erläutert. Der Timesharing-Zähler 211 ist
mit den Zwischenspeichern in den Zellen 214 und 215 auf
eine Weise verbunden, die dem in 15 bzw. 17 darstellten Anschluß des Eingabebytes
der RAM-Server 190 und 200 ähnlich ist. Die gesamte Operation
weist nur dann zwei Zyklen auf, wenn der bevorzugte "Zweizyklen"-Betrieb gewählt wird,
wie weiter oben unter Bezugnahme auf 16 erläutert wurde
und nachstehend anhand von 20 weiter
demonstriert wird.
-
Die Arbeitsweise der Anwendung ist
die folgende. Die beiden "Server"-Zellen 212 und 213 realisieren die
Schieberegister-Implementierung, wie oben erläutert. Der Timesharing-Zähler 211 arbeitet
als globaler Zähler,
der die Timesharing-Schlitze/Kanäle zählt.
-
20 zeigt
ein Taktdiagramm, das die Zeitsteuerungsoperation darstellt, wobei "N → 1" "Verschieben um 1" symbolisiert, wodurch dargestellt wird,
daß die
folgenden Operationen auftreten:
- (a) Da für den globalen
Zähler
und für
die Bereitstellung des Haupttaktsignals für den Rest der Implementierung
der gleiche Takt verwendet wird, sollte der globale Zähler sein
LSB-Bit nicht den Timesharing-Zellen 214 und 215 zuführen. Daher
stellen die 'n' höchstwertigen
Leitungen im globalen Zähler
ei nen Zweizykluszähler
dar. Das LSB kann benutzt werden, um das Ausgabefreigabesignal 'OE' der Timesharing-Zellen 214 und 215 und
der RAM-Server 212 und 213 zu steuern.
- (b) Wie aus 10 erkennbar,
können
mehr als eine Zelle zur Implementierung des Zählers verwendet werden (wenn
die Anzahl der Datenbits kleiner ist als die benötigte Anzahl der 'n+1'-Bits).
- (c) Im ersten Zyklus, wenn die alten Daten zu lesen sind, werden
die Ausgänge
der Timesharing-Zellen 214 und 215 freigegeben,
und die Ausgänge
der RAM-Server 212 und 213 werden
deaktiviert.
- (d) Im nächsten
Zyklus werden die Ausgänge
der Timesharing-Zellen 214 und 215 deaktiviert,
während
ihre Schreibfreigabesignale aktiviert und die Ausgänge der
RAM-Server 212 und 213 aktiviert werden. Als Ergebnis
werden jetzt die Daten, die dem aktuellen Zustand der RAM-Server 212 bzw. 213 entsprechen,
in die Timesharing-Zellen 214 bzw. 215 in den
Speicherplätzen
eingeschrieben, die durch den Wert des Timesharing-Zählers 211 adressiert
werden.
- (e) Der Timesharing-Zähler,
der als globaler Zähler
arbeitet, wird in beiden Zyklen aktiviert.
-
Beispiel 10 – "RAM-Server" in Timesharing-Umgebung
-
21 zeigt
eine "RAM-Server"-Kombination 220,
die in einer Timesharing-Umgebung arbeitet, um das weiter oben anhand
von 15 beschriebene
Beispiel zu implementieren. Die RAM-Server-Kombination 220 weist
einen Zellen-Server 221 und einen Zellen-RAM 222 mit
einem RAM 223 und einem Zwischenspeicher 224 auf,
deren Funktion weiter oben unter Bezugnahme auf 15 der Zeichnungen erläutert wurde.
Ein globaler Timesharing-Zähler 225 ist
nur mit dem Zellen-RAM verbunden. Als Beispiel wird der RAM-Server 190,
der weiter oben anhand von 15 der
Zeichnungen beschrieben wurde, zusätzlich mit Timesharing versehen,
um zu ermöglichen,
daß getrennte
Bereiche des RAM in dem Zellen-RAM 222 entsprechenden Timesharing-Schlitzen
zugeordnet werden.
-
Es treten die folgenden Operationen
auf:
- (a) Der globale Zähler 225 wird inkrementiert,
wobei seine 'n' höchstwertigen
Bits (MSB) den aktuellen Schlitz definieren, der den Bereich (d.
h. die 'n' höchstwertigen
Bits der Adresse) innerhalb des RAM 223 definiert, aus
dem Daten gelesen werden sollen.
- (b) Die Zahl wird im RAM 223 in dem Speicherplatz innerhalb
des definierten Bereichs gespeichert, auf den die 'k' niedrigstwertigen Bits der Adresse
zeigen, die vom Zwischenspeicher 224 in den RAM 223 eingespeist
wird. Der "Server" 221 wird programmiert,
die Zahl zu inkrementieren.
- (c) Die inkrementierte Zahl wird im Zellen-RAM 222 in
dem Speicherplatz abgelegt, der durch den Wert des Timesharing-Zählers und
die Zwischenspeicher-Eingabe adressiert wird.
-
Diese sich wiederholende Operation
kann in zwei Zyklen ausgeführt
werden, da das Schreiben im gleichen Zyklus erfolgen kann, in dem
ein neues Byte und der Inhalt des Timesharing-Zählers gehalten werden.
-
Beispiel 11 – Erzeugen
von Zellen mit größerer Datenbitmenge
-
Weiter oben ist anhand von 6 erläutert worden, wie eine Zelle
aus zwei Zellen gebildet werden kann, um den Adressenbus der Zelle
zu vergrößern. 22 zeigt, wie eine Zelle 230 aus
zwei Zellen 231 und 232 gebildet werden kann,
um den Datenbus der Zelle zu vergrößern. Die Adressenbusse der
beiden Zellen 231 und 232 werden parallel geschaltet,
wodurch die Adresse der beiden Zellen 231 und 232 identisch
ist. Beide Zellen 231 und 232 werden so programmiert,
daß das
Ergebnis einer gewünschten
Funktion zwischen den beiden Zellen aufgeteilt wird. Wenn nötig, können die
Adressenbusse von mehr als zwei Zellen parallel geschaltet werden,
wobei jeder Bus so programmiert wird, daß er verschiedene Abschnitte
der ausgegebenen Funktion erarbeitet. Alle Verbindungen werden unter
Benutzung der programmierbaren Matrix hergestellt. Zu beachten ist,
daß es
bei Verwendung der in 9 dargestellten
Matrix viele Möglichkeiten
gibt, die erforderlichen Verbindungen un ter Benutzung der Matrix
herzustellen. Wenn die zu verknüpfenden
Zellen mit der gleichen gesättigten
Matrix in der Spalte 'X' verbunden werden,
kann die Verbindung direkt in dieser Matrix ausgeführt werden,
wodurch Matrixressourcen eingespart werden, indem keine Schalter
von den 'Z'- oder 'Y'-Schaltern verwendet werden. Die Verbindung
könnte
auch in der Spalte 'Z' hergestellt werden,
wodurch wieder eingespart wird, oder die Verbindung könnte in
der Spalte 'Y' hergestellt werden.
-
Streng genommen läßt sich argumentieren, daß das Hinzufügen von
Datenbits zu einer Zelle, deren gesamte Datenbits bereits genutzt
werden, nicht durch Vergrößern der
Zelle erreicht werden kann, da die Daten tatsächlich zwischen mehr als einer
Zelle aufgeteilt werden. Es wird jedoch kein Unterschied zwischen
den Teilzellen einer Verbundzelle und einer äquivalenten größeren Zelle
gemacht.
-
Der Ladevorgang
-
Es gibt verschiedene Möglichkeiten
zum Laden des Codes in die Zellen. Zum Beispiel kann die Matrix so
programmiert werden, daß das
gesamte Bauelement als ein RAM konfiguriert ist. Dann können durch
einen Hauptrechner oder eine andere elektronische Implementierung
Daten auf die gleiche Weise wie beim Schreiben in irgendeinen Speicher
in diesen RAM geladen werden, wonach die Matrix wieder so programmiert
werden kann, daß sie
die erforderliche Konnektivität
bewirkt.
-
23 zeigt
schematisch ein Bauelement 240, das für das Laden von Daten in dem
Fall, wo der Hauptrechner (nicht dargestellt) nicht den gesamten
Adressenraum des RAM abbilden kann, oder für Zwecke der Fehlersuche konfiguriert
ist. Zu diesem Zweck ist das Bauelement in mehrere RAM-Speicher,
von denen drei dargestellt und mit 241, 242 und 243 bezeichnet
sind, und entsprechende Zwischenspeicher 244, 245 und 246 unterteilt,
die mit dem Hauptrechner über
eine programmierbare Matrix 250 verbunden sind. Eine Hilfsschaltung 251 ist
mit den Zwischenspeichern 244, 245 und 246 verbunden
und ist verantwortlich für
das Einspeisen von Logiksignalen vom Hauptrechner, um Taktfreigabesignale
(CE-Signale) in die Zwischenspeicher einzuspeisen.
-
Die Adressen- und Datenbits des Matrixsteuerungsspeichers
(nicht dargestellt) werden an den Außenanschluß des Bauelements 240 angelegt.
Diese Verbindung ermöglicht,
daß der
Hauptrechner die Matrix 250 programmiert (steuert), so
daß der
Hauptrechner den Speicher des Matrixsteuerungsspeichers in seinen Speicherbereich
abbildet und die programmierten Konnektivitätsdaten dorthin herunterlädt, während die CE-Signale
benutzt werden, um zwischen den RAM-Speichern zu "blättern".
-
Die für das Laden benutzten Stifte
können
bei Anwendungen, die keine Umschaltungen erfordern, die gleichen
Stifte sein wie für
die Eingabe/Ausgabe (E/A). Der Grund dafür ist, daß, wenn dem Matrixsteuerungsspeicher
kein Schreibimpuls zugeführt
wird, keine Änderung
am Zustand der Schalter erfolgt. In einem solchen Fall müssen die
E/A-Stifte während
des Ladens abgetrennt (d. h. ausgeschaltet) werden.
-
Die Hilfsschaltung 251 wird
verwendet, um bei der Fehlersuche den Takt der Zwischenspeicher
freizugeben oder zu sperren. Wenn das Taktfreigabesignal (CE-Signal)
an die Matrix 250 angelegt wird, wird die Hilfsschaltung 251 nicht
benötigt,
da das Taktfreigabesignal (CE-Signal) über die Matrix zugeführt werden kann,
wodurch jede Zelle getrennt getaktet und der erwünschte Zustand geladen werden
kann.
-
Für
diese Logik gibt es keine Echtzeit-Überlegung, da sie typischerweise
nicht für
Echtzeitbetrieb entworfen wird. Wenn aber ein Echtzeit-"Taktfreigabe"-Signal benötigt wird,
dann wird dessen Integration in die "Matrix der Ebene 1" empfohlen.
-
Überlegungen
zur Auswahl einer bevorzugten Architektur Die Größe des Chips ist der kritische
Parameter. Je kleiner die Zellen und je größer der Block, desto größer ist
die Flexibilität,
desto besser die Nutzung und desto besser die Leistungsfähigkeit,
aber desto größer ist
die Matrix. Um die Matrix zu verkleinern, werden Ebenen hinzugefügt. Wie
oben festgestellt, kann eine Zelle aus anderen Zellen von niedrigerer
Ebene aufgebaut werden, obwohl zu beachten ist, daß nicht
alle Zellen in einer Ebene diese Fähigkeit haben müssen.
-
Ein erstes Beispiel einer möglichen
Architektur für
die 0,25 μm-Technologie
sind 300 Zellen von 4096 Bytes (12 Bits Adresse, 8 Bits Daten) in
Ebene 1, und 64 Zellen von 512 Bytes (9 Bits Adresse, 8 Bits Daten) in
jedem Block der Ebene 2. Ein zweites Beispiel ist außerdem die
Bildung von Blöcken
der Ebene 2 aus 64 Zellen von 2048 Bytes bis zu 128 Zellen von 512
Bytes. In der Ebene 2 werden nicht mehr als zehn Blöcke implementiert.
In der Ebene 0 werden alle Zellen in eine Zelle umgewandelt (ein
Speicher oder eine Nachschlagetabelle).
-
Ein drittes Beispiel einer möglichen
Architektur basiert auf 20 Zellen von je 64 KByte in nur einer Ebene.
Da in der Ebene 0 alle Zellen in eine Zelle umgewandelt werden,
ist in diesem Beispiel wieder die Matrix klein und kann daher gesättigt sein.
Diese drei Beispiele demonstrieren einige Unterschiede zwischen
möglichen
Architekturen. In diesen drei Beispielen ist die Chipgröße annähernd die
gleiche. In den ersten beiden vorgeschlagenen Architekturen kann
die Ebene 1 aus nur etwa 18 Speichern mit Zellen von je 64 KByte
bestehen; da es aber eine Menge kleinere Zellen gibt, ist die Nutzung
besser, und es ist zu erwarten, daß das Gesamtergebnis besser
als bei den meisten Anwendungen ist.
-
Echtzeitberechnungen unter
Verwendung eines Beispiels für
die Zellenverbindung
-
In der 0,25 μm-Technologie ist zu erwarten,
daß die
Zykluszeit einer Zelle typischerweise kürzer als 10 ns ist, was daher
in der folgenden Berechnung als Beispiel angenommen wird. Alle Zellen
sind synchronisiert und arbeiten parallel. Daher führt jede
der Zellen in dem Bauelement in 10 ns einen Befehl aus. Dies bedeutet, daß, wenn
alle durch die Zellen ausgeführten
parallelen Befehle als eine Anweisung angesehen werden, die Verarbeitungsgeschwindigkeit
100 MIPS (100 Millionen Anweisungen pro Sekunde) beträgt.
-
24 zeigt
schematisch ein Bauelement 260, das einen 8-Bit-Befehl
ausführt
und dazu dient, auf der Basis von gewöhnlich angewandten Berechnungen
einen besseren Zusammenhang mit der tatsächlichen Verarbeitungsleistung
herzustellen. In dieser Konfiguration kann das Bauelement 260 einen
8-Bit- Befehl ausführen, der
in einen Zwischenspeicher 261 eingegeben wird, und kann
auf ein 8-Bit-Ergebnis eines früheren
Befehls Bezug nehmen.
-
Angenommen, in einer 64 KByte-Architektur
werden 100 Zellen mit einer Größe von je
4 KByte in Zellen umgewandelt, die einen 16-Bit-Adressenbus (d.
h. 64 K) und einen 8-Bit-Datenbus
aufweisen, dann sind 18 derartige Zellen vorhanden, wobei weitere
Ersatzzellen übrig
bleiben, die für
Timesharing und andere kleine Aufgaben verwendet werden können. Angenommen,
jede der 18 Zellen kann einen 8-Bit-Befehl ausführen, dann kann das komplette
Bauelement 260 1800 MIPS ausführen, wobei jede Anweisung
aus 8 Bits besteht. In der Praxis haben im allgemeinen nicht alle
Zellen die Größe von 64K × 8, und
es gibt eine größere Anzahl von
kleineren Zellen, die gleichfalls parallel Befehle ausführen, wodurch
die effektive Anzahl der MIPS weiter vergrößert wird.
-
Zu beachten ist, daß wegen
der größeren Zellenzahl
die Verzögerung
um so größer sein
kann, je höher
die Arbeitsgeschwindigkeit (MIPS) ist. Als Beispiel betrachten wir
den Rauschgenerator, der weiter oben unter Bezugnahme auf das in 12 dargestellte Schieberegister
beschrieben wurde. Erst nach 3n-1 Zyklen (d. h. für n=8, nach
23 Zyklen) ist das Schieberegister mit den Eingabebits voll aufgefüllt, so
daß sein
Ausgangssignal als das erforderliche Rauschsignal verwendet werden
kann. Wenn man daher annimmt, daß jeder Zyklus eine Dauer von
10 ns hat, dann beträgt
die Gesamtverzögerung 230 ns.
Danach wird alle 10 ns ein neuer Rauschabtastwert ausgegeben. Diese
Art der Verzögerung
ist in Hardware- und DSP-Implementierungen
normal; z. B. bei der Implementierung eines Filters.
-
Verschiedene
Zellenkonfigurationen
-
In der vorstehenden Beschreibung
des Bauelements enthielten alle Zellen sowohl einen RAM als auch einen
Zwischenspeicher. Nichtsdestoweniger kann die Bauelementarchitektur
unter Verwendung von Zellen implementiert werden, deren Konstruktion
sich von den oben beschriebenen unterscheidet. Wenn z. B. keine Rückkopplung
benötigt
wird, läuft
eine auf dem Bauelement 100 betriebene Anwendung (dargestellt
in 2) schneller auf
dem gleichen Bauelement ohne die Zwischenspeicher.
-
Beispiel 12 – Autonome
RAM-Zelle
-
25 zeigt
eine Zelle 270, die nur einen RAM 271 und eine
dazugehörige
Hilfsschaltung 272 aufweist, wie weiter oben anhand von 5 beschrieben. 26 zeigt ein 8-Bit-Addierglied 275,
das eine solche Zelle verwendet und ein Paar 8-Bit-Eingabedatenbusse 276 und 277 für die Addition
von zwei Operanden A und B sowie einen 9-Bit-Ausgabedatenbus aufweist,
der das Additionsergebnis überträgt. In einer
solchen Anwendung ist keine Zeitsteuerung erforderlich, da die Ausgabe
einfach den Zustand der beiden Eingänge widerspiegelt und daher
kein Zwischenspeicher erforderlich ist.
-
Das in 26 dargestellte 8-Bit-Addierglied 275
zeigt eine Grundlösung,
wobei die 9-Bit-Summe von zwei 8-Bit-Eingaben in nur einen RAM der erforderlichen
Größe einprogrammiert
ist, der durch die Matrix konfiguriert wird. Die Anwendung in einer
solchen Konfiguration verwendet das Äquivalent eines 64K-RAM-Speichers
mit 9-Bit-Wörtern.
Die Lösung
kann optimiert werden, um den benutzten RAM-Speicherplatz zu vermindern.
-
27 zeigt
ein besser optimiertes Addierglied 280, das zwei Eingaben
von je 18 Bit addiert und an seinem Ausgang eine 19-Bit-Summe erzeugt.
Statt der Verwendung nur eines RAM-Speichers, wie in 26 dargestellt, werden mehrere Zellen 281, 282, 283 und 284 der
ersten Stufe für
die Addition der 18-Bit-Eingaben, die, wie erkennbar ist, in Operanden
mit 5-Bit- und 3-Bit-Komponenten
aufgeteilt werden, und für
die Erzeugung von einem oder zwei Übertragsbits programmiert.
Die Überträge und die
entsprechenden Ausgaben der ersten Stufe werden dann mit Hilfe geeigneter
Zellen 285, 286 und 287 der zweiten Stufe
summiert. In einer solchen Anordnung tritt wegen der zwei Stufen,
die zur Ausführung
der Addition benutzt werden, eine zweistufige Verzögerung zwischen
dem Einspeisen der Eingabeoperanden und der Ausgabe des Ergebnisses
auf. Das LSB wird direkt über
das Addierglied 281 der ersten Stufe einge speist und unterliegt
keiner zusätzlichen Verzögerung.
Wenn erforderlich ist, daß es
der gleichen zweistufigen Verzögerung
unterliegt wie die übrigen Bits,
dann kann es direkt über
das Addierglied 284 der ersten Stufe eingespeist werden,
um es einer zusätzlichen
Verzögerung
auszusetzen und dadurch an die Verzögerung der übrigen Ausgabebits anzupassen.
-
Eine solche Lösung eignet sich für die beiden
Bauelemente, die oben unter Bezugnahme auf 5 und 25 beschrieben
wurden. Wenn das 18-Bit-Addierglied so konfiguriert ist, wie in 27 dargestellt, verwendet
die Anwendung das Äquivalent
eines RAM-Speichers von weniger als 7 KByte, d. h. wesentlich weniger
als das in 26 dargestellte,
nicht optimierte 8-Bit-Addierglied, wenn auch aus den oben erwähnten Gründen eine
Verzögerung
mehr vorhanden ist als in der nicht optimierten Lösung.
-
Beispiel 13 – Aus Teilkomponenten
bestehendes Bauelement
-
In den früheren Beispielen des in 12 dargestellten Laufzeit-
oder Schieberegisters wird nur der Zwischenspeicher innerhalb der
Zelle genutzt, und der RAM wird nicht benötigt. Im Gegensatz dazu gibt
es, wie weiter oben anhand von 25 erläutert, Anwendungen,
die RAM-Speicher, aber keine Zwischenspeicher erfordern. Daher können einige
von den Zellen in ihre Komponenten zerlegt werden, so daß jede Komponente getrennt
eingesetzt werden kann. Durch Kombination der Komponenten mit Hilfe
der Matrix kann dennoch die ursprüngliche Zellenkonstruktion
realisiert werden. Wenn dies gewünscht
wird, kann eine Zelle zusätzliche Teilkomponenten
enthalten.
-
28 zeigt
ein Beispiel eines Zwischenspeichers 290, der unabhängig von
dem in 25 dargestellten
RAM 270 verwendet werden kann, nötigenfalls aber damit kombiniert
werden kann, um die in 5 dargestellte
Zelle zu realisieren.
-
Beispiel 14 – Bauelement
mit unabhängigen
Taktsignalen
-
Wie oben erläutert, kann ein Block als ein
Bauelement angesehen werden. Daher ist es nicht wesentlich, einen
Takt für
das komplette Bauelement zu haben, und jeder Block kann seinen eigenen,
selbständigen Takt
aufweisen. Wie gleichfalls früher
erläutert,
kann der Block in eine Zelle umgewandelt werden, so daß jede Zelle
ihren eigenen, unabhängigen
Takt aufweisen kann.
-
Wenn zwei Blöcke verschiedener Typen zu
einem Bauelement kombiniert werden, kann ein Takt für einen
Block, aber nicht für
den anderen vorgesehen werden. Daher können eine Anzahl von Takteingangssignalen
vom Eingang des Bauelements über
die Matrix zu jedem Block oder jeder Zelle geleitet werden, um die volle
Auswahl erforderlicher Taktantwortsignale bereitzustellen.
-
Beispiel 15 – Einzelschrittbetrieb
-
Der Einzelschrittbetrieb wird für Zwecke
der Fehlersuche gebraucht und ermöglicht die Verfolgung des Implementierungszustands
für jeden
Operationsschritt. Ein solches Merkmal ermöglicht das Austesten einer Hardwareanwendung
mit Verwendung des erfindungsgemäßen Bauelements
auf analoge Weise wie bei der Korrektur von Softwareprogrammen mit
Hilfe von Fehlersuchprogrammen. Ebenso wie ein Softwareprogramm,
wann immer dies erforderlich ist, angehalten werden kann, seine
Variablen verfolgt und geändert
werden können
und das Programm dann entweder von dem Punkt, wo es angehalten wurde,
oder von irgendeinem anderen Punkt im Programm neu gestartet werden
kann, bietet die Erfindung Werkzeuge, um das Hardwarebauelement
auf analoge Weise auszutesten.
-
Wenn ein Bauelement von dem Typ ist,
der kein Taktsignal aufweist, wie z. B. bei dem in 27 dargestellten Addierglied, und wenn
die Implementierung keine Rückkopplung
aufweist, dann wird der Einzelschrittbetrieb durch schrittweises
Weiterschalten der Eingabe erreicht. Wenn die Implementierung eine
Rückkopplung
aufweist, können
nur die stationären
Zustände
ohne Zusatzwerkzeuge verfolgt werden. Eine weitere Möglichkeit
könnte
die Verwendung eines Adreßbits
sein, um die Zellen zu einem anderen Speicherbereich zu übertragen,
in dem der aktuelle Zustand gehalten werden kann.
-
Wenn ein Bauelement ein Taktsignal
aufweist und ein Einzeltaktbetrieb benötigt wird, muß eine Synchronisation
zwischen der langsamen Eingabesteuerung und der schnellen Hardware-Reaktion
erzielt werden. Eine Möglichkeit
ist die Verwen dung eines langsameren externen Taktsignals als Takt
für das
Bauelement.
-
29 zeigt
eine weitere Lösung,
wobei das Taktsignal nicht extern eingespeist werden kann und das Taktfreigabesignal
(CE) zur Einstellung der effektiven Taktfrequenz benutzt wird. Die
Zelle ist so programmiert, daß sie
die folgenden Zustände
aufweist:
im Eingangssignal (xy): x ist das externe CE-Signal,
y ist die Rückkopplung;
im
Ausgangssignal (ab): a ist das interne CE-Signal, b=y ist die Rückkopplung.
-
-
Dadurch wird sichergestellt, daß für jeden
langen Impuls einer externen Taktfreigabe nur ein Impulsäquivalent
für einen
Einzeltaktimpuls erzeugt wird.
-
Beispiel 16 – Doppelpufferspeicher
-
Die meisten von den oben beschriebenen
Echtzeit-Anwendungen basieren auf einem fest eingebauten Matrixkoppler.
Die zur Änderung
der Leitungsführung
erforderliche Zeit ist zu lang für
einen kontinuierlichen Echtzeitbetrieb von typischen Bauelementobjekten.
Durch Nutzung von mehr als einem Bauelement, die mit einem Hauptrechner
verbunden sind, können
jedoch neue Anwendungsarten erzielt werden. Betrachten wir z. B.
eine Situation, wo drei Bauelemente mit einem Hauptrechner verbunden
sind, die jeweils so zu programmieren sind, daß sie eine bestimmte Operation
ausführen.
Der Hauptrechner weist einen Speicher auf, der den Code speichert,
der in jedes Bauelement geladen werden muß, um dessen Betrieb zu ermöglichen.
Während ein
Bauelement die Anwendung ausführt,
wird ein zweites als normaler Speicher mit dem Hauptrechner verbunden,
wodurch frühere
Ergebnisse von dort ausgelesen werden können oder ein neuer Code in
das Bauelement geladen werden kann, und gleichzeitig kann der Code
zur Herstellung der erforderlichen Verbindungen und zum Laden der
erforderlichen Daten in das dritte Bauelement geladen werden. Nach
Abschluß einer
Anwendung durch das gegenwärtig
laufende Bauelement ändert
sich der Zustand jedes Bauelements, und der Hauptrechner wird mit
dem Bauelement verbunden, das gerade seine Aufgabe beendet hat,
um das Ergebnis zu lesen und eine neue Implementierung zu laden.
Auf diese Weise kann jede Implementierung in einer Hardware ausgeführt werden,
die viel schneller ist als in einer normalen Zentraleinheit (CPU)
mit Verwendung von Software, während
das Herunterladen von neuen Daten in die Bauelemente, das zeitraubend
ist, parallel zum Betrieb eines anderen Bauelements ausgeführt werden
kann und daher eine transparente Operation darstellt, die keinen
zusätzlichen
Echtzeitaufwand erfordert.
-
Obwohl in der obigen Implementierung
mehrere Bauelemente verwendet werden, könnte die Implementierung auch
unter Verwendung einiger Zellengruppen innerhalb des gleichen Bauelements
ausgeführt werden.
Wenn nur zwei Bauelementgruppen aktiv sind, dann ist dies aus der
Perspektive des Hauptrechners, der nur Speicher "sieht", ähnlich
einer Hardware-Implementierung
mit doppeltem Puffer.
-
Dieses Verfahren kann nützlich sein,
wenn eine sehr schnelle Echtzeitverarbeitung benötigt wird (wie in konfigurierbaren
Computern). Der Hauptrechner ändert
die zu implementierende Aufgabe nach Bedarf in einem Bauelement,
während
er in dem anderen Bauelement das Ergebnis der früheren Anweisung abfragt.
-
Eine praktische Implementierung einer
solchen Anwendung weist mindestens ein Bauelement mit je einem aktiven
und inaktiven Zustand auf. Der Hauptrechner ist mit jedem Bauelement
gekoppelt und weist einen Speicher auf, in dem entsprechende formatierte
Daten gespeichert sind, die in jedes der Bauelemente geladen werden
müssen,
um zu ermöglichen,
daß das
jewei lige Bauelement eine erforderliche Operation ausführt, wenn
es sich in einem aktiven Zustand befindet, oder um es dem Hauptrechner
zu ermöglichen,
das entsprechende Bauelement zu laden, wenn es sich im inaktiven
Zustand befindet. Dadurch kann unter Verwendung der mindestens zwei
Bauelemente ein konfigurierbarer Computer implementiert werden,
wobei der Hauptrechner so angepaßt ist, daß er mindestens eine Aufgabe
verwaltet, indem er so viele Bauelemente aktiviert, wie für die Ausführung jeder
Aufgabe erforderlich sind.
-
Beispiel 17 – Architektur
mit mehreren Multichipmodulen (MCM)
-
In der oben anhand von 9 beschriebenen ungesättigten
Matrix und in dem Beispiel, das oben unter dem Titel "Betrachtungen zur
Auswahl einer bevorzugten Architektur" diskutiert wurde, gibt es etwa 1M Schalter.
Dies bedeutet, daß die
Matrix etwa 10% der gesamten Chipfläche belegt. 30 zeigt schematisch eine Architektur
mit mehreren Multichipmodulen (MCM), die durch Bereitstellen eines
zusätzlichen
Matrixsteuerungsspeichers aufgebaut wird, so daß jeder Schalter 295 in
der Matrix 296 über
ein entsprechendes Schalterpaar geöffnet oder geschlossen wird,
die als A1, B1,
A2, B2 bis AN, BN bezeichnet
werden und durch entsprechende Zweiwegeschalter 297 in
einem Schaltmodul 298 ausgewählt werden, die alle durch
eine einzige Steuerung 299 für einen Multiplexbetrieb zwischen
jedem der Bits A1, B1,
A2, B2 ... AN, BN der beiden
Matrixsteuerungsspeicher bezeichnet werden. Jeder der Multichipmodule
wird mit Daten geladen, um eine entsprechende Konnektivität zu definieren,
wodurch im wesentlichen momentan verschiedene vorkonfigurierte Konnektivitäten implementiert
werden können,
indem einfach die Steuereinrichtung so betätigt wird, daß ein gewünschter MCM
ausgewählt
wird, so daß ein
schnellerer Echtzeitbetrieb möglich
wird. Diese Architektur ermöglicht
außerdem
die Wiederverwendung der gleichen Zellen in einem Bauelement, so
daß diese
zum Implementieren einer Anwendung und als Speicher des Computers
benutzt werden können.
Zeitsteuerungs- oder
Hauptrechner-Anweisungen oder Anwendungs-Anweisungen (z. B. wenn
die Aufgabe beendet ist) können
zwischen entsprechenden Zeitabschnitten umschalten, in denen die
Zellen der Anwen dung dienen ("Arbeitsperiode") oder dem Hauptrechner
als dessen Speicher dienen. Nach jeder "Arbeitsperiode" empfängt der Hauptrechner eine Erlaubnis
zum Zugriff auf seinen Speicher.
-
Durch diese Architektur wird die
kollektive Größe der Matrix
und der Matrixsteuerungskomponenten um einen Faktor von etwa 4 vergrößert. Angenommen,
es wird eine 0,25 μm-Technologie
verwendet, und gegenwärtig
sind 0,18 und 0,13 μm-Geometrien verfügbar, dann
ist dieses Beispiel eine ausführbare
Konstruktion.
-
Diese Architektur kann die gleiche
Nutzung erzielen wie der oben in Beispiel 16 beschriebene Doppelpufferspeicher.
Obwohl in beiden oben beschriebenen Beispielen 16 und 17 die Verwendung
eines Hauptrechners beschrieben wird, kann ein Baustein, der das
Bauelement nutzt, die gleiche Funktionsfähigkeit realisieren.
-
Fehlersuchanschluß
-
Ein Anschluß, der mit der programmierbaren
Matrix verbunden ist, kann jedes Zellenausgangssignal beobachten,
indem das Zellenausgangssignal über
die Matrix zu dem Anschluß übermittelt
wird. Um ein Zelleneingangssignal zu beobachten, kann eine kleine
freie Zelle (oder ein zugeordneter Zwischenspeicher, der als Zelle
wirkt) benutzt werden. Die Daten in dieser Zelle werden so eingestellt,
daß das
Eingangssignal zum Ausgang übertragen
wird, wie bei dem Schieberegister von 12 erläutert, und das Ausgangssignal
der Zelle dann zu dem Anschluß übermittelt
wird.
-
Dieser Anschluß kann so eingestellt werden,
daß er
im Echtzeitbetrieb jedes Eingangssignal oder Ausgangssignal des
gesamten Bauelements prüft.
-
Anmerkungen:
-
- 1. In den meisten Fällen braucht der Eingang der
Zelle nicht geprüft
zu werden, da, wenn dieser Eingang mit irgendeinem Ausgang verbunden
ist, der Ausgang zu dem Anschluß geführt werden
kann. Wenn der Anschluß mit
den E/A-Stiften des Bauelements verbunden ist, kann er durch die
Matrix zu dem Anschluß weitergeleitet
werden.
- 2. Für
niedrigere Ebenen gilt: nur die "Anschlüsse" der niedrigeren
Ebenen können
an den E/A-Stiften in Echtzeit geprüft werden.
-
Einzelschritt
-
Um das Bauelement anzuhalten, braucht
man lediglich das Taktsignal zu den Zellen zu stoppen. Wenn irgendeine
logische Verarbeitung erfaßt
wird und der Nutzer diese Logik so einstellt, daß der Betrieb der Hardware
im Schaltkreisemulationsmodus gestoppt wird, dann hält die Anwendung
an. Wenn der Nutzer dies wünscht,
kann der Matrixsteuerungsspeicher verändert werden, um die Matrix
zu zwingen, irgendeine Zelle zu den E/A-Stiften zu übermitteln. Er kann auch in
Speicher umgewandelt und als normaler Speicher gelesen werden. Auf
diese Weise kann jedes einzelne Logikbit im gesamten Bauelement
geprüft
werden. Nach dem Test kann der Matrixsteuerungsspeicher in seinen
Ausgangszustand zurückgesetzt
werden, und die Operation kann von dem gleichen Punkt, wo sie angehalten
wurde, weiterlaufen.
-
Anmerkungen:
-
Wenn die Simulation stoppt, kann
jedes einzelne Logikbit im gesamten Bauelement geprüft werden, einschließlich derjenigen
in niederen Ebenen, da bei einer Umwandlung dieser Ebene in einen
Speicher alle Ausgangszellen mit dem Anschluß der Ebene verbunden sind.
Die zu prüfenden
Bits werden durch die Adresse des neu erzeugten Speichers ausgewählt.
-
Technologieanpassung
-
Die Fähigkeit der Halbleiterindustrie,
immer mehr Funktionen auf einem Chip zu integrieren, nimmt ständig zu.
Die Technologie des Bauelements basiert auf Zellen, und je mehr
Zellen verwendet werden, desto größer ist die Leistungsfähigkeit
der Anwendung. Da die Architektur so beschaffen ist, daß Zellen
zu größeren Zellen
kombiniert werden können,
gewährleisten
die folgenden Methoden, daß jede
Implementierung automatisch von einer neuen Technologie ausgeht,
wenn eine größere Chipausnutzung
verfügbar
ist:
- 1. Die Anzahl der Zellen darf nicht verringert
werden.
- 2. Die Querverbindungsbeschränkung
der Matrix darf nicht erhöht
werden (d. h. in dem obigen, in 9 dargestellten
Beispiel darf Z nicht vermindert werden).
- 3. Eine kleine Zellengröße kann
durch eine größere Zellengröße ersetzt
werden.
- 4. Niedere Ebenen dürfen
hinzugefügt
werden (Ebenen für
kleinere Zellen hinzufügen).
Zu beachten ist, daß Zellen
in den niederen Ebenen wieder in höhere Zellen umgewandelt werden
können.
- 5. Die Taktzykluszeit darf nicht verlängert werden.
- 6. Zellenblöcke
können
von niederen Ebenen zu höheren
Ebenen verschoben werden, wodurch eine Vergrößerung der Matrix erforderlich
wird.
- 7. Die Anzahl der Eingangsstifte darf nicht vermindert werden.
- 8. Die Anzahl der Ausgangsstifte darf nicht vermindert werden.
-
Tatsächlich folgt aus dem Vorstehenden,
daß bei
einer Verbesserung der Technologie die Leistungsfähigkeit
des Bauelements nicht vermindert werden sollte. Wenn man dies nicht
vergißt,
wird sichergestellt, daß jede
Anwendung automatisch mit der neuen Technologie kompatibel sein
kann. Zu beachten ist außerdem:
da bei der Simulation die Funktionen in Zellen unterteilt werden, ändert die
Simulation selbst sich nicht. Das geladene Programm muß jedoch
verändert
werden, da sowohl die Speicherstruktur (des Matrixsteuerungsspeichers)
als auch das "Speicherbild" des gesamten Bauelements
sich ändern.
Mit anderen Worten, erforderlich ist lediglich, daß die Daten,
die in die Zellen geladen werden, neu formatiert werden müssen.
-
Prüfung der
Hardware
-
Die Implementierung braucht nicht
geprüft
zu werden, um sicherzustellen, daß die Hardware einwandfrei
arbeitet. Um alle RAM-Speicher zu testen, wird das gesamte Bauelement
in einen RAM umgewandelt, und alle seine Speicherplätze werden
unter Anwendung von Lese/Schreib-Operationen geprüft, ebenso
wie beim herkömmlichen
Speicher. Zum Beispiel: "00", "AA", "55", "FF", "Adresse in Daten" usw. Jetzt werden
die Matrixverbindungen kontrolliert, indem über alle möglichen Anschlüsse Si gnale
angelegt werden. Auf die gleiche Weise werden alle E/A-Stifte kontrolliert.
-
Die obigen Angaben sind eine Erläuterung
der Fähigkeit
zur Prüfung
der gesamten Hardware ohne die Anwendung. Dafür gibt es weitere Möglichkeiten.
Zum Beispiel könnten
die Signale unter Verwendung des Bildgenerators intern erzeugt und
durch das Bauelement selbst geprüft
werden.
-
Autonome Karte
-
Wenn eine autonome bzw. Standalone-Karte
benötigt
wird, z. B. wenn kein Hauptrechner verfügbar ist, dann sind die gleichen
Lösungen
geeignet, die auf dem Gebiet der digitalen Signalprozessoren (DSP)
gebräuchlich
sind. Zum Beispiel: Löschbarer
programmierbarer Festwertspeicher (EPROM)
- 1.
Ein EPROM mit den Daten für
den Matrixsteuerungsspeicher und für die Zellen wird auf der Karte
installiert. Sobald die Stromversorgung eingeschaltet ist, kopiert
das Bauelement die Matrixsteuerungsdaten aus dem EPROM in den Matrixsteuerungsspeicher.
Die Implementierung der elektronischen Schaltung zum Kopieren vom
Speicher zu Speicher ist dem Fachmann bekannt.
- 2. Sobald das letzte Bit in den Matrixsteuerungsspeicher kopiert
worden ist, sieht das Bauelement wie ein einziger Speicher aus.
Die elektronische Schaltung kopiert jetzt aus dem EPROM in den neu
erzeugten Speicher. Die Zellen werden auf diese Weise mit ihren
Daten geladen.
- 3. Schließlich
kopiert die elektronische Schaltung aus dem EPROM wieder in den
Matrixsteuerungsspeicher, um die für die Anwendung benötigten Querverbindungen
herzustellen.
-
Wenn die verwendete Architektur des
Bauelements die gleiche ist, wie in den obigen Beispielen unter dem
Titel "Überlegungen
zur Auswahl einer bevorzugten Architektur" diskutiert, beträgt die Größe des EPROM etwa 10 MBit.
-
Andere Lösungen
-
Andere, dem Fachmann bekannte Lösungen,
wie z. B. ein EEPROM oder ein RAM mit Reservebatterie, können auf
die gleiche Weise verwendet werden wie der EPROM. Die Integration
des EPROM in das Bauelement wird nicht empfohlen, da sie die Herstellungskosten
des Bauelements beträchtlich
erhöht.
-
Eine Batteriereservestromversorgung
direkt für
das Bauelement kann nützlich
sein, wenn dadurch sichergestellt werden soll, daß die Batterie
nur dann aktiv ist, wenn das Bauelement nicht aktiv ist. Andernfalls ist
die Verlustleistung hoch.
-
Entwicklung von selbsterhaltenden
Anwendungen
-
Da die Hardwareanwendungen gespeichert
und als Software-Code wiederverwendet werden können, kann jede wiederverwendbare
Aufgabe gespeichert und aufgerufen werden, wenn sie benötigt wird.
Wenn z. B. ein Filter implementiert und ausgetestet worden ist,
könnte
ein Programm die Filterparameter abfragen und den Bauelementcode
automatisch generieren. Dies bedeutet, daß die Anzahl der für Arbeitsgruppen
verfügbaren "Standard"-Aufgabenimplementierungen
um so größer und
die Zeit bis zur Markteinführung
um so kürzer
ist, je mehr die Bauelement-Technologie genutzt wird. Ferner kann
die Bibliothek der Anwendungen immer noch genutzt werden, wenn sich
die Chipfertigungstechnologie verbessert, wie oben erläutert.
-
Zusatzkomponenten
des Bauelements
-
Zusatzkomponenten, die in keiner
direkten Beziehung zur Architektur des Bauelements stehen, können auf
dem Bauelement vorgesehen werden, um:
- 1. einen
internen Takt für
den synchronisierten Takt und zeitliche Zuordnungen zu erzeugen,
- 2. die Verwendung eines externen Takts zu ermöglichen,
- 3. die Zeitsteuerung für
den "Schreibzyklus" zu erzeugen. Dies
ist eine feste Zeitsteuerung, da die Schreiboperation durch die
von der Matrix übermittelte "Schreibfreigabe" und die Nutzung
der Ausgabefreigabe der Zelle aktiviert oder deaktiviert wird. Daher
kann sie vom Haupttakt aus gesteuert werden.
- 4. die E/A-Signale zu puffern.
-
Dem Fachmann ist bekannt, wie diese
Funktionen zu realisieren sind.
-
Weitere Möglichkeiten zur Implementierung
des Bauelements Einige Vorteile der Bauelementarchitektur hängen mit
der Tatsache zusammen, daß die
Zelleneingangssignale und die Zellenausgangssignale, wie sie beispielsweise
in 5 dargestellt sind,
synchronisiert werden. Es können
jedoch bestimmte nichtsynchronisierte Operationen implementiert
werden. Zum Beispiel ist zu beachten, daß kleine Zellen so schnell
sind, daß ihre
Zyklusdauer halb so lang ist wie die Zyklusdauer der normalen Zelle.
Diese schnelleren Zellen könnten
in kleineren Blöcken
mit einem schnelleren Takt geschaltet werden. Da ihre Zyklusdauer
halb so lang wie die Zyklusdauer der normalen Zelle ist, kann das
Ausgangssignal dieser Blöcke
leicht mit den übrigen
Blöcken synchronisiert
werden.
-
Schnellere Zellen können auf
kleineren Zellen auf einer höheren
Ebene implementiert werden. Daher kann diese Anschlußart in
die Gesamtarchitektur passen. Tatsächlich sind in Abschnitten,
wo keine Rückkopplung
implementiert ist, die Zwischenspeicher der Zellen redundant. Nur
der letzte Zwischenspeicher am Ende der rückkopplungsfreien Zellen wird
benötigt.
-
Ebenso können Anwendungen existieren,
wo mehrere Zwischenspeicher in Kaskadenschaltung eingesetzt werden
können,
um eine vorgeschriebene Verzögerung
bzw. Laufzeit zu liefern. Daher kann die Zelle zum Teil durch RAM-Speicher
ohne dazugehörige
Zwischenspeicher und/oder durch Zwischenspeicher ohne dazugehörige RAM-Speicher
realisiert werden. Falls trotzdem eine direkte Zuordnung eines Zwischenspeichers
zu einem RAM erforderlich ist, kann dies unter Verwendung der Matrix
erfolgen, wie weiter oben erläutert.
Obwohl dies komplizierter ist und technische Bearbeitungszeit für den Durchschnittsingenieur
verschwenden kann, ist es unter Umständen wertvoll, wenn eine Expertengruppe,
die an dieser Art von Architektur arbeitet, neue Bibliotheken zum
Nutzen aller ausarbeitet.
-
Einfachheit
-
Da die Anwendung in kleine Teile
unterteilt wird, führt
sie den Anwendungstechniker zu einer einfachen Lösung, die auch einfach zu implementieren
ist.
-
Parallele
Nutzung von Arbeitskräften
-
Wenn ein Systemingenieur die Grundzüge der Lösung entwickelt,
kann er oder sie die Funktionen vereinbaren, die innerhalb der Funktionszellen
auszuführen
sind. Dann kann jede Implementierung der Zelle unabhängig codiert
werden. Dies bedeutet, daß jeder
Zellenimplementierungscode von einem anderen Ingenieur entwickelt
werden kann.
-
Ablaufdiagramme
-
31 zeigt
ein Ablaufdiagramm, das die Hauptoperationsschritte darstellt, die
mit einem ersten Verfahren zur Gewinnung von Konstruktionsdaten
verbunden sind, welche die Funktionalität einer Hardwareanwendung unter
Verwendung des erfindungsgemäßen Bauelements
definieren. Mit "Konstruktionsdaten" sind die Daten gemeint,
die eine Topologie darstellen, die eine Konnektivität zwischen
Zellen und/oder Teilelementen definiert und darin zu speichernde
Daten einschließt.
Wie wir gesehen haben, wird eine Topologie für die Implementierung der gewünschten
Anwendung gewählt,
wonach Daten zur Speicherung in den Zellen formuliert und/oder Teilelemente
durch die ausgewählte
Topologie definiert werden.
-
32 zeigt
ein alternatives Verfahren zur Ermittlung von Konstruktionsdaten,
das zumindest eine Teilfunktionalität einer gewünschten Hardwareanwendung unter
Verwendung des erfindungsgemäßen Bauelements
definiert. Es wird auf eine Bibliothek zugegriffen, die vorkonfigurierte
Dateien speichert, die jeweils Konstruktionsdaten in Verbindung
mit einer entsprechenden Funktionalität enthalten, und eine oder
mehrere Dateien werden aus der Bibliothek ausgewählt, um eine oder mehrere Funktionalitäten der
Anwendung zu realisieren. Wahlweise können früher gewonnene Konstruktionsdaten
in der Bibliothek gespeichert werden, indem entweder in der Bibliothek
nicht enthaltene Funktionalitäten
hinzugefügt
oder vorhandene Konstruktionsdaten darin ausgetauscht werden. Die
Konstruktionsdaten, die auf diese Weise in Verbindung mit dem Bauelement in
der Bibliothek gespeichert werden, definieren eine Bauelementarchitektur,
die eine gewünschte
Funktionalität
oder Teilfunktionalität
der Anwendung realisiert. Zum Beispiel könnte aus einem 10-Bit-Addierglied,
dessen Konstruktionsdaten in der Bibliothek gespeichert sind, in
Verbindung mit den notwendigen zusätzlichen Konstruktionsdaten
ein 12-Bit-Addierglied aufgebaut werden. Wenn erforderlich, können dann
die Konstruktionsdaten des resultierenden 12-Bit-Addierglieds in
der Bibliothek gespeichert werden, um später als Standardmerkmal verfügbar zu
sein. Dies ermöglicht
die Wiederverwendung einer Bibliothek von vorher entworfenen Konstruktionsdaten
und macht auf diese Weise die wiederholte Erzeugung der gleichen
Konstruktionsdaten für
jede Anwendung überflüssig. Daher
können
in dem obigen Beispiel die Konstruktionsdaten für das erzeugte 12-Bit-Addierglied einmal
gespeichert werden und erübrigen
damit die Notwendigkeit für
den Konstrukteur, diese Funktionalität jedesmal, wenn ein 12-Bit-Addierglied
erforderlich ist, neu zu entwerfen. Dies führt nicht nur zu einer beträchtlichen
Einsparung an Entwicklungszeit, sondern ermöglicht auch, was nicht weniger
wichtig ist, daß fachkundige
Entwickler optimierte Lösungen
entwickeln und diese Lösungen
für eine
Gemeinschaft von Entwicklern zur Verfügung stellen. Diese Einrichtung
ist auch von Nutzen für
Arbeitsgruppen und ermöglicht
es den Mitgliedern, Entwürfe
auszutauschen, beispielsweise über
das Internet.
-
33 zeigt
ein weiteres Verfahren zur Gewinnung von Konstruktionsdaten, wobei
eine Computersimulation der Hardwareanwendung ausgeführt wird,
indem ein Computer so programmiert wird, daß er die mindestens eine Zelle
und/oder das mindestens eine Teilelement implementiert und unter
Verwendung der Konstruktionsdaten eine vorkonfigurierte Topologie
implementiert. Die Konstruktionsdaten können nötigenfalls geändert werden,
und die Simulation kann wiederholt werden, bis die Computersimulation
zufriedenstellend ist. Die Hardwareanwendung kann dann durch Herunterladen
der Bauelementdaten; die aus den Simulations-Konstruktionsdaten
abgeleitet werden, implementiert werden. Wie oben festgestellt,
kann der Computer unter Anwendung einer höheren Programmiersprache programmiert
werden, wodurch Techniken, die herkömmlicherweise zum Tätigkeitsbereich
fachkundiger Entwurfsingenieure gehören, nun für Programmierer verfügbar sind.
Außerdem
dient das Programm le diglich zur Definition der Konstruktionsdaten:
sobald eine funktionsfähige
Implementierung der Anwendung verfügbar ist und die Daten in deren
Zellen heruntergeladen sind, ist nicht mehr relevant, wie die Daten
definiert wurden. Das heißt,
daß ein
funktionsfähiges
Bauelement ungeachtet dessen, ob der zur Konstruktion und zum Herunterladen
der Daten in das Bauelement benutzte Programmcode optimiert war
oder nicht, mit gleicher Effizienz funktionieren wird.
-
Bei der Programmierung des Computers
zur Ausführung
der Simulation können
die Simulations-Konstruktionsdaten auf zwei Arten hergeleitet werden.
Nach einem Verfahren werden durch den Computer laufend Momentanabtastwerte
zumindest eines Teils der Simulations-Konstruktionsdaten berechnet.
Nach einem anderen Verfahren wird jedoch zumindest ein Teil der
Simulations-Konstruktionsdaten
vorkonfiguriert und gespeichert, und Momentanabtastwerte davon werden
nach Bedarf durch den Computer abgerufen. Durch ein solches Verfahren
wird die Notwendigkeit vermieden, die Simulations-Konstruktionsdaten
in Echtzeit zu berechnen, da die Daten vorgegeben sind und abgerufen
werden, wodurch die Anzahl der Computer-Operationscodes, die zur
Ableitung der Konstruktionsdaten erforderlich sind, wesentlich reduziert
wird.
-
34 zeigt
ein Ablaufdiagramm, das die Hauptoperationsschritte darstellt, die
mit einem Verfahren zur Implementierung einer Hardwareanwendung
unter Verwendung des erfindungsgemäßen Bauelements verbunden sind.
Auf das Wesentliche reduziert, werden formatierte Daten ermittelt
und in das Bauelement heruntergeladen. Die formatierten Daten können aus
vorgegebenen Konstruktionsdaten abgeleitet und dann zum Herunterladen
in das Bauelement formatiert werden. Die Konstruktionsdaten selbst
können
ermittelt werden, indem eines der Verfahren angewandt wird, die
oben unter Bezugnahme auf die 31, 32 oder 33 beschrieben worden sind.
-
Simulator und Werkzeuge
-
sDie folgenden Beispiele behandeln
jede Gruppe von mehreren synchronisierten Zellen als selbständige Einheiten.
Die Integration dieser Einheiten wird auf eine dem Fachmann bekannte
Weise erreicht.
-
Simulator
-
Bei einer normalen Implementierung
werden Signale in die Anwendung eingegeben, die Signale werden verarbeitet
und als Ergebnisse werden Signale von der Anwendung ausgegeben.
Bei einer Simulation werden "virtuelle" Signale in ein Computerprogramm
eingegeben, das die Funktion der Implementierung simuliert und "virtuelle" Ausgabesignale erzeugt.
Die Simulation komplizierter Implementierungen ist ziemlich verwickelt.
Der schwierige Teil besteht darin, die Verzögerung zwischen den Signalen
zu simulieren, da die Auflösung
der Computer"Zeit" festgelegt ist.
Je besser die Auflösung
des Simulators, desto langsamer ist die Simulation.
-
Da alle Zellen synchronisiert sind,
ist es kein Problem, die exakte Funktion der Hardware auf die gleiche
Weise zu simulieren, wie sie in Wirklichkeit arbeitet. Jede Zelle
in einer Anwendung, die unter Verwendung des erfindungsgemäßen Bauelements
konstruiert wird, führt
eine Aufgabe aus. Die Aufgabe kann als Umrechnungstabelle (Nachschlagetabelle)
implementiert werden. Die durch die Tabellendaten dargestellte Aufgabe kann
in einer höheren
Programmiersprache geschrieben werden. Die Kollektion aller in den
verschiedenen Tabellen gespeicherten Daten wird als Geräte- bzw.
Bauelementcode bezeichnet.
-
Beispiele:
-
Es folgen einige Beispiele unter
Verwendung der "C"-Sprache als Pseudocode, wobei es sich
versteht, daß irgendeine
andere Programmiersprache angewandt werden könnte.
-
Ein Beispiel für die Implementierung irgendeiner
Aufgabe wäre:
-
Die Daten der Zelle werden getrennt
durch die Funktion int iCell1(int iAddress) implementiert. Beispielsweise
könnten
die Daten für
den Computer, der weiter oben unter Bezugnahme auf
10 beschrieben wurde, in "C" wie folgt implementiert werden:
-
Da die Aufgaben unter Verwendung
von Software ausgeführt
werden, kann der gleiche Code, der Zellenfunktionalitäten implementiert,
im Simulator und bei der Erzeugung der Daten eingesetzt werden,
die in das Bauelement herunterzuladen sind. Da in jedem Zyklus der
Hardware-Implementierung nur eine Operation in einer Zelle ausgeführt wird,
kann die Operation auf dem Computer "eins zu eins" simuliert werden. Um die Ope rationen
zu simulieren, sind alle Operationen in eine Schleife einzubeziehen,
die einen Hardware-Zyklus simuliert.
-
Zum Beispiel könnte der Code für den Simulator
der folgende sein:
-
Die folgenden Unterschiede zwischen
diesem Code und dem vorhergehenden Code sind zu beachten:
- 1. Die Matrixoperation ist hinzugefügt worden;
anstelle der Inkrementierung der "Adresse" erhält
die "Adresse" den neuen Wert von
den Daten.
- 2. Das Datenelement wird nicht in einem Tabellenelement erfaßt. Das
Datenelement spiegelt nur die Einzeloperation wider, die in einem
Zyklus ausgeführt
wird.
- 3. Mehrere Zellen könnten
auf die gleiche Weise und in der gleichen Schleife implementiert
werden. In diesem Beispiel sollte die Matrixoperation für alle Zellen
zum Ende der Schleife verschoben werden.
-
Daher ist es ziemlich leicht, den
Prozeß zu
automatisieren und zu veranlassen, daß der Simulator die ladefähigen Daten
erzeugt, die durch den Bauelement-Code "laufend" ange fordert werden. Wenn die Simulation
auf diese Weise arbeitet, sagt man, daß sie im "kompilierten Modus" arbeitet.
-
Wichtig ist, zu beachten, daß der gesamte
Code, der vom Nutzer verändert
werden muß,
d. h. der Code für
die Zellen und für
die Matrix, für
den Simulator und die geladenen Daten der gleiche ist. Folglich
kann nicht nur der Simulator eine "Einszu-eins"-Simulation der Anwendung ausführen, sondern
darüber
hinaus ist, wenn die Simulation richtig arbeitet, die Erzeugung
der geladenen Daten ein automatischer Vorgang ohne zusätzliche
menschliche Fehler.
-
Der Bauelement-Code ist eine Tabelle
von Adresse-Datenelement-Beziehungen.
Damit der Simulator schneller läuft,
kann der durch die Tabellen dargestellte Bauelement-Code vorher
berechnet und vom Simulator in Form von Umrechnungstabellen benutzt
werden, wodurch die "laufende" Berechnung des Tabellenwerts durch
den Simulator überflüssig wird
und Operationscodes eingespart werden. Wenn die Simulation auf diese Weise
arbeitet, sagt man, daß sie
im "realen Modus" arbeitet. In diesem
Falle würde
der Code auf die folgende Weise erzeugt werden:
-
Die beiden Simulationsmethoden können in
Kombination angewandt werden. So kann eine Zelle durch "laufende" Berechnung der Zellendaten
simuliert werden, während
eine andere Zelle vorher berechnete Daten abrufen kann. Im "kompilierten Modus" ist die Fehlersuche
einfacher, aber im "realen
Modus" ist sie schneller.
-
Beispielsweise könnte die Erzeugung des Zellencodes
wie folgt aussehen:
-
Dieser Code könnte für jede Zelle implementiert
werden, während
der Funktionscode (Cell1(int), Cell2(int)... Celln(int)) getrennt
implementiert wird.
-
Beispielsweise könnte die Erzeugung des Simulatorcodes
wie folgt aussehen:
-
Anmerkung:
-
Das iAddressForCelln kann nur Teil
der tatsächlichen
Adresse der Zelle sein. Die Matrix kann einen Teil des Datenelements
mit einem Teil der Adresse verknüpfen
(bitweise Verknüpfung).
Offensichtlich können die
Matrixzeilen in eine andere enthaltene Datei, ein Unterprogramm
oder eine Klasse aufgeteilt werden, die durch den Hauptrechner zu
benutzen sind, der diese Matrixoperation in die "Matrixsteuerungsspeicher"-Daten umwandelt.
-
Simulationsgeschwindigkeit
-
Die nachstehende Diskussion behandelt
den Vergleich zwischen der Geschwindigkeit des Bauelements und der
Geschwindigkeit der Simulation, welche die gleiche Funktionalität implementiert.
Um den Geschwindigkeitsfaktor des Computers, der den Simulator betreibt,
aus der Geschwindigkeitsschätzung
zu entfernen, wird in der folgenden Diskussion angenommen, daß der Computer
mit der gleichen Geschwindigkeit arbeitet wie das Bauelement.
-
Kompilierter Simulatormodus
-
Zur Simulation der Anwendung ist
jede von den Zellen, die der Implementierung einer vorgegebenen Funktion
zugeordnet sind, für
die Implementierung eines erforderlichen Algorithmus zu simulieren.
Im folgenden werden die 300 Zellen entsprechend der Architektur
ausgewählt,
die oben unter der Abschnittsüberschrift "Überlegungen zur Auswahl einer
bevorzugten Architektur" beschrieben
wurde. Da die Bauelementzellen parallel arbeiten und der Simulator
schrittweise arbeitet, arbeitet daher der Simulator mindestens 300
mal langsamer als die Bauelementhardware. In dem oben definierten "kompilierten Modus" werden die Zellendaten durch
Implementierung der vorgegebenen Funktion berechnet, während der
Simulator läuft.
Selbst eine einfache Funktion wird unter Verwendung von typischerweise
mindestens 30 Operationscodes implementiert, wodurch sich die Simulation
um einen Faktor von mindestens 9000 gegenüber der Hardware verlangsamt.
Wenn man jetzt die Erzeugungszeit für das Eingabesignal und die
Verarbeitungszeit für
die beobachteten Eingabe- und Ausgabesignale hinzufügt, wird
der Faktor höher.
Das heißt,
daß jedes
Verfahren wichtig ist, das die Simulationsgeschwindigkeit erhöhen kann.
-
In der Praxis würde die Simulation viel langsamer
laufen, da der Computer langsamer als die Hardware wäre und die
in den Zellenfunktionen aufgerufenen Unterprogramme viel größer wären.
-
Da eine begrenzte Anzahl von Operationen
zu simulieren ist (in der obenerwähnten bevorzugten Architektur,
die 300 Zellen enthält)
ist dennoch zu erwarten, daß der
Simulator viel schneller läuft
als bisher vorgeschlagene Simulatoren.
-
Realer Modus
-
Im "realen Modus" werden die in der Zelle zu speichernden
Daten berechnet, bevor die Simulation ausgeführt wird und während die
Simulation zur Ausführung
des gewünschten
Algorithmus benutzt wird, der durch die Zellen implementiert werden
soll. Auf diese Weise kann die Anzahl der Operationscodes, die zur Ausführung der
Simulation erforderlich sind, stark reduziert werden, und der Simulator
läuft viel
schneller. Aus diesem Grunde ist der Betrieb des Simulators im "realen Modus" viel schneller als
der Grundfaktor von 30, da:
- 1. die Geschwindigkeitseinsparung
um so größer ist,
je größer das
Unterprogramm für
die Zellenfunktion ist;
- 2. die Einsparungen um so größer sind,
je größer die
Zelle ist. Der Grund dafür
ist, daß größere Zellen
eine Anzahl von Zellen kombinieren und die Gesamtzahl der zu simulierenden
Zellen verringern. Die Simulation einer großen Zelle oder einer kleinen
Zelle erfordert im "realen
Modus" die gleiche
Zeit.
- 3. Obwohl eine kleinere Anzahl von Zellen die Simulatorgeschwindigkeit
auch im kompilierten Modus erhöht,
da in den meisten Fällen
größere Zellen
einen umfangreicheren Code verwenden als kleinere Zellen, kann dieser
Vorteil verloren gehen.
-
Schließlich kann erwartet werden,
daß der "reale Modus" bei den Anwendungen
im oberen Leistungsbereich, die erwartungsgemäß auf dem Bauelement laufen
sollen, einige Dutzend bis einige hundert mal schneller arbeitet.
Diese Anzahl wird nach der mittleren Anzahl von Operationscodes
in einer Aufgabe einer Zelle, multipliziert mit der mittleren Anzahl
kleinerer Zellen berechnet, die in der Anwendung zur Erzeugung größerer Zellen
verwendet werden.
-
Emulatormodus
-
Im Emulatormodus läuft die
Simulation mit der durch die Erzeugung von "virtuellen Signalen" abgeleiteten Taktgeschwindigkeit. Die
Anwendung könnte
in Echtzeit laufen, aber die durch den Simulator erzeugten "virtuellen Signale" legen die Maximalgeschwindigkeit
fest.
-
Schaltkreisemulatormodus
(ICE-Modus)
-
Im Schaltkreisemulatormodus arbeitet
der Simulator im Echtzeitbetrieb.
-
Eingabe- und Ausgabesignale des Simulators
Signale werden durch die Zellen im Bauelement erzeugt, wie weiter
oben in Beispiel 6 bei der Beschreibung der Strukturerzeugung erläutert wurde. Äquivalente Signale
können
ebenso gut durch den Computer erzeugt und verarbeitet werden, und
es besteht kein Unterschied zwischen der Art und Weise, wie Signale
in jedem Fall erzeugt oder verwendet werden können. Trotzdem werden die computerisierten
Signale als "virtuelle" Signale bezeichnet
und können
daher an einem mit dem Computer gekoppelten Bildmonitor beobachtet
werden.
-
Es gibt einige Vorteile, die der
Benutzer beim Betrachten der "virtuellen" Signale erzielen
kann:
- 1. Darstellung der Signale, wie sie sind
(Logikanalysator-Stil).
- 2. Darstellung der Datenliste (Listenmodus).
- 3. Umwandlung der Signale vor der Beobachtung. Zum Beispiel
ist bei der Pulscodemodulation (PCM) ein Signal nach "einer Regel" (einer der PCM-Regeln)
so beschaffen, daß jedes
zweite Bit invertiert ist. Der Benutzer kann die invertierten Bits
vor dem Betrachten invertieren, so daß das Ergebnis leichter verständlich ist.
Der Benutzer kann den PCM-Code
in Linearcode umwandeln, wodurch dieser noch leichter zu verstehen
ist.
- 4. Der Benutzer kann Bytes oder Wörter in ihre "analoge" Form umwandeln und
sie am Bildschirm darstellen (Oszilloskop-Modus).
-
Die Ausgabesignale werden durch die
Anwendung erzeugt. Sie können
auf die gleiche Weise verarbeitet werden wie die Eingabesignale.
-
35 zeigt
ein Ablaufdiagramm, das die Hauptoperationsschritte zusammenfaßt, die
mit einem Verfahren zur Simulation eines erfindungsgemäßen Hardware-Bauelements
verbunden sind. Ein für
schrittweisen Betrieb angepaßter
Emulationsmodul wird konstruiert, der das Bauelement und eine E/A-Schnittstelle einschließt. Formatierte
Daten werden in das Bauelement innerhalb des Emulationsmoduls heruntergeladen,
um eine gewünschte
Hardwareanwendung zu erzeugen, und die E/A-Schnittstelle wird an einen Computer
angeschlossen, der ein Steuergerät
bildet und gleichfalls an der Emulation beteiligt ist. Durch den
Computer wird ein Eingangssignalwert erzeugt und über die
E/A-Schnittstelle in das Emulationsmodul geladen. Ein Ausgabesignalwert
wird zur Analyse über
die E/A-Schnittstelle
aus dem Emulationsmodul erfaßt.
Da das Emulationsmodul nach einem Verfahren für Schrittbetrieb eingerichtet
ist, erwartet es einen nachfolgenden Eingangssignalwert, der vom
Computer autorisiert wird, nachdem der vorhergehende Ausgangssignalwert
analysiert und als richtig befunden wurde. Nach einem anderen Verfahren
verwendet das Bauelement im Emulationsmodul einige unbenutzte Zellen
(möglicherweise
in einem anderen Bauelement, das diesem Zweck zugeordnet ist), um
den Ausgangssignalwert auf die gleiche Weise wie für die Schaltkreisemulation
zu analysieren, wie weiter unten unter Bezug nahme auf 36 der Zeichnungen beschrieben
wird. Der gesamte Prozeß wird
nach Bedarf Signalwert für
Signalwert wiederholt. In einer alternativen Konfiguration kann
der Computer durch einen Logikanalysator ersetzt werden, und ein
Signalgenerator kann den Eingangssignalwert erzeugen.
-
Der Schrittbetrieb der Emulation
ist erforderlich, damit der Computer oder ein anderer Logikanalysator Zeit
zur Analyse des aktuellen Ausgangssignalwerts haben kann und möglicherweise
im Falle eines Fehlers den weiteren Betrieb abbrechen kann, bevor
der nachfolgende Eingangssignalwert angelegt wird. Der gewünschte Schrittbetrieb
kann erreicht werden, indem von außen ein Taktfreigabesignal
eingespeist wird, um das Taktsignal in die Anwendung einzuspeisen,
und intern das Taktfreigabesignal deaktiviert wird, um zu verhindern,
daß die
Einspeisung des anstehenden Taktsignals durch die Anwendung überschrieben
wird.
-
Emulatoren
-
Es wird eine Mehrzweckemulator-PC-Karte
mit einem oder mehreren universellen Hardware-Bauelementen implementiert.
Der Code wird in das Bauelement geladen. Die durch den Computer
erzeugten "virtuellen" Eingangssignale
werden über
den PC-Bus (z. B. einen PCI-Bus) zu den Eingängen der Karte übertragen.
Ein freier Teil des Bauelements oder ein anderes Bauelement wird
so programmiert, daß es
einen gewünschten
logischen Zustand erfaßt,
wobei die Logik die gleiche ist wie für den Logikanalysator, aber
so flexibel, wie der Benutzer wünscht.
Das Ausgangssignal wird über
den PC-Bus zurückübertragen
und auf dem Benutzerbildschirm beobachtet. Der Takt der Emulationskarte
kann manipuliert, verlangsamt, angehalten oder schrittweise weitergeschaltet
werden, wenn dies erforderlich ist, um das Signal auf dem Bildschirm
zu beobachten. Das Taktsignal kann von dem durch die Software gesteuerten
PC in das zum Bauelement externe Taktsignal eingespeist werden,
um maximale Geschwindigkeit und Flexibilität zu erreichen.
-
Wenn langdauernde reale Signale eingegeben
werden müssen,
die Stunden oder länger
dauern können,
dann sollte der Schaltkreisemulator verwendet werden. Es wird die
gleiche Mehrzweckemulator-PC-Karte verwendet, aber ein Anschluß für die PC-Karte
sollte auf der Benutzerkarte implementiert werden. Dieser Anschluß überträgt die E/A-Signale
in die Emulatorkarte. Der Emulator speichert die Eingangssignale
und führt logische
Operationen an den Ausgangs- und Eingangssignalen aus. Sobald die
Ergebnisse dieser logischen Verarbeitung erfaßt sind, stoppt der Prozeß (durch
Deaktivieren des Taktsignals), und der Benutzer kann die gespeicherten
Signale in den Simulator/Emulator einspeisen, um die Anwendung auszutesten.
-
36 zeigt
ein Ablaufdiagramm, das die Hauptoperationsschritte zusammenfaßt, die
mit einem Schaltkreisemulationsverfahren zur Prüfung des Bauelements im Emulationsmodul
während
eines Echtzeitbetriebs des Bauelements verbunden sind. Mindestens
eine der E/A-Schnittstellen des zu prüfenden Moduls wird mit einer
Steuereinheit verbunden, und das Bauelement wird so konfiguriert,
daß es
Abtastwerte an bestimmten Punkten des Bauelements über einen
Anschlußkanal
an mindestens einer der Schnittstellen ausgibt. Die Abtastwerte
werden in der Steuereinheit abgetastet, um in Echtzeit einen zeitlichen
Ablauf von Abtastwerten des Bauelements zu ermitteln, und die Steuereinheit
dient zur Analyse mindestens einer Teilmenge der neuesten Abtastwerte.
Wenn notwendig, wird der Betrieb des zu prüfenden Bauelements arretiert,
um eine oder alle folgenden Operationen zu ermöglichen:
- (i)
Untersuchung der Vorgeschichte von Abtastwerten des Bauelements,
- (ii) Untersuchung eines momentanen aktuellen Zustands des arretierten
Bauelements,
- (iii) Herunterladen eines anderen Zustands des arretierten Bauelements,
- (iv) Fortsetzung des Echtzeitbetriebs des Bauelements, und
- (v) Neustart des Echtzeitbetriebs des Bauelements.
-
Eine einzige
Entwicklungsumgebung
-
Vom Anfang des Prozesses bis zur
Fertigungsphase wird die gleiche Entwicklungsumgebung verwendet.
Die Entwicklungsumgebung kann kostenaufwendige Testgeräte ersetzen,
da es sehr einfach ist, "virtuelle" Signale in der PC-Software-Umgebung zu
verarbeiten, wie unter der Überschrift "Simulation" erläutert. Sie kann
als Simulator, Emulator und Schaltkreisemulator verwendet werden,
und sie kann als das Programm benutzt werden, das die Karte in der
Fertigungsabteilung überprüft.
-
Qualität des Kundencodes
-
Der Anwendungstechniker definiert
die Lösung,
nämlich:
was in jeder Zelle zu programmieren ist, und wie die Konnektivität zwischen
den Zellen aussehen sollte. Dann wird der Code für die Zellen geschrieben. Die Qualität des Codes
hinsichtlich des Echtzeitbetriebs ist für die Qualität des in
das Bauelement geladenen "Codes" nicht wichtig. Nehmen
wir z. B. an, daß die
in
10 dargestellte
Zähler-Implementierung
den folgenden Code verwendet:
-
Obwohl der Code in der zweiten Implementierung
viel langsamer ist, werden identische Daten in das Bauelement geladen.
Auf diese Weise wird das an den Endverbraucher abgegebene Produkt
nicht durch einen unerfahrenen Programmierer beeinflußt.
-
Das obige Merkmal kann dazu dienen,
die Verfügbarkeit
von Entwicklern zu erhöhen,
da sowohl Softwaretechniker als auch Hardwaretechniker die Implementierungen
durchführen
können.
Der Systemingenieur – derjenige,
der die Lösung
entwickelt – kann
leicht durch Anwendung der Simulation kontrolliert werden.
-
Zu beachten ist, daß der Simulator
zwar im "kompilierten
Modus" mit einem
schlechteren Code langsamer arbeitet, daß aber der Unterschied im kombinierten
Modus nicht bemerkt wird, da in dem Teil des Bauelements, das den "realen Modus" nutzt, kein Unterschied
auftritt (weil die zur Erzeugung der Tabellen erforderliche Zeit
vernachlässigbar
ist).
-
37 zeigt
ein Ablaufdiagramm, das die Hauptoperationsschritte darstellt, die
mit einem Verfahren zum Entwurf eines anwendungsspezifischen Hardware-Bauelements
mit einer gewünschten
Funktionalität verbunden
sind. Es werden formatierte Daten gewonnen, die in Verbindung mit
dem erfindungsgemäßen Bauelement
eine Bauelementarchitektur definieren, welche die gewünschte Funktionalität realisiert.
Die programmierbare Matrix oder die Matrizen der Bauelementarchitektur
werden durch feste Verbindungen ersetzt, welche die Konnektivität der einen
oder der mehreren programmierbaren Matrizen realisieren, und die
Speicherelemente in mindestens einigen der Zellen in der Bauelementarchitektur
werden durch entsprechende feste Steuerebenen zur Realisierung der
darin gespeicherten Daten ersetzt. Auf diese Weise wird erreicht,
daß sich die
Architektur zur direkten Implementierung des anwendungsspezifischen
Hardware-Bauelements
eignet.
-
Eine derartige Methode ermöglicht die
schnelle Entwicklung von anwendungsspezifischen integrierten Schaltkreisen
(ASIC), die unter Umständen
gegenüber
dem programmierbaren Bauelement bevorzugt werden, um die Chipfläche für Hardwareanwendungen
zu reduzieren, die für
die Massenfertigung vorgesehen sind. Andererseits dient das erfindungsgemäße Bauelement
nur als ein Mittel zur Entwicklung des ASIC und zur Gewinnung der
erforderlichen formatierten Daten, die dann modifiziert werden.
Das ASIC ist nicht selbst ein universelles Hardware-Bauelement und ist
nicht programmierbar.
-
So wird bei einer ASIC-Umsetzung
jedes Bit in jedem RAM, der als Anwendungs-RAM verwendet wird, durch
einen "1"oder "0"-Treiber ersetzt. Dadurch wird die Größe des RAM
vermindert, und der RAM wird in eine nicht programmierbare Tabelle
umgewandelt. Jeder zum Speichern benutzte RAM bleibt unberührt. Obwohl
mehr Einsparungen erzielt werden können, werden gewöhnlich nur
die obigen Maßnahmen
empfohlen, da die zusätzlichen
Einsparungen die "Zeit
bis zum ASIC" (zur
Umsetzung in einen ASIC erforderliche Zeit) verlängern und kostenaufwendiger
sind. Die obigen Maßnahmen
können
als ein automatisches Werkzeug implementiert werden.
-
Nachstehend wird ein Beispiel der
zusätzlichen
Einsparungen angegeben, die durch Verwendung eines ASIC zur Implementierung
eines Teils der Funktionalität
der Anwendung erzielt werden können.
Ein 8-Bit-Vorwärts/Rückwärts-Zähler kann
unter Anwendung herkömmlicher
Verfahren mit acht Flipflops und einigen Logikschaltungen implementiert
werden. Der gleiche erfindungsgemäße 8-Bit-Vorwärts/Rückwärts-Zähler wird
in einer 9-Bit-Adresse und einer 8-Bit-Datenzelle implementiert
und erfordert einen RAM-Speicher von 4096 Bits. Ungeachtet der Tatsache,
daß aus
diesem Beispiel, oberflächlich
gesehen, hervorgehen kann, daß die
Erfindung sehr verschwenderisch mit Speicherplatz umgeht, ist bei
einer komplizierten Anwendung die durch die Erfindung erreichte
Gesamtimplementierung tatsächlich "chipflächensparend"; eine Zählerumwandlung
kann etwa 0,3% der gesamten ASIC-Chipgröße einsparen. Als Beispiel
wird eingeschätzt,
daß der "Huffman-Code" für eine vollständige ElÜbertragungsleitung
implementiert werden kann, die den TX- und den RX-Algorithmus für jeden
der 32 Kanäle
implementiert, der die adaptiven Tabellen pro Kanal aufnimmt. Diese Anwendung
kann auf etwa 250 mm2 Chipfläche in der
0,25 μm-Technologie implementiert
werden. Ein weiteres Beispiel ist ein 8-Bit-FIR-Filter mit 8 Abgriffen, das weniger
als 3% des vollständigen
Bauelements verbraucht. Ferner ist zu beachten, daß die erfindungsgemäße Methode
der ASIC-Umsetzung erweitert werden kann, um zu ermöglichen,
daß bestimmte
Grundfunktionalitäten
des ASIC, wie z. B. der obenerwähnte
Zähler,
unter Anwendung herkömmlicher
Verfahren in Form einer Bibliothek verfügbar gemacht werden. In diesem
Fall kann der Benutzer unter Verwendung vorher konvertierter Funktionalitäten eine
bessere Umsetzung implementieren, ohne den nicht behebbaren Zeitaufwand
(NRE-Zeit) des ASIC zu vergeuden.
-
Unter Umständen möchte man die Flexibilität des universellen
Hardware-Bauelements mit den Vorteilen von ASICs kombinieren, wenn
ein ASIC auf einer Serie verschiedener Leiterplatten zu montieren
ist, die jeweils eine andere Funktionalität aufweisen. In diesem Fall
wird nur ein Teil der einen oder mehreren programmierbaren Matrizen
der Bauelementarchitektur durch festgeschaltete Verbindungen ausgetauscht,
welche die Konnektivität
der ersetzten Verbindungen realisieren, und die Speicherelemente
werden nur in einigen Zellen in der Bauelementarchitektur durch
entsprechende festgeschaltete Steuerebenen zur Realisierung der
darin gespeicherten Daten ersetzt.
-
Ein solches Verfahren kann für den Entwurf
kritischer Teile oder für
die Anpassung von Unterschieden zwischen Implementierungen wünschenswert
sein. Zum Beispiel gibt es bei der Implementierung der Telefoniesignalgabe
kleine Unterschiede zwischen verschiedenen Ländern.
-
Nutzung defekter
Chips
-
Da der Preis des Chips auf die Chipgröße bezogen
ist, und da etwa 250 mm2 als ziemlich groß angesehen
wird, kann der Chip-Preis durch die folgende Methode gesenkt werden.
Da das Bauelement auf Zellen basiert, und da es für die Anwendung
nicht erheblich ist, welche Zelle zur Implementierung irgendeiner
gegebenen Aufgabe ausgewählt
wird, wird ein Test des Bauelements ausgeführt. Wenn eine Zelle als defekt
befunden wird, kann die Zelle als defekt gekennzeichnet werden,
um nicht verwendet zu werden.
-
Dann wird die Matrix getestet. Wenn
eine Verbindung als defekt befunden wird, sollte diese Verbindung
nicht benutzt werden. Zu beachten ist, daß manchmal ein defekter Verbindungsweg
zum Verlust einer Zelle führt,
und daß manchmal
die Verbindung entbehrlich ist.
-
Da nur einige hundert Zellen vorhanden
sind und die Schalter der Matrix in der "Reihenfolge des Matrixsteuerungsspeichers" sortiert sind, ist
es ziemlich einfach, ein kurzes Codestück zu erzeugen, um den defekten
Teil zu markieren. Dieser Code wird aus der defekten Adresse und
dem Datenelement des Matrixsteuerungsspeichers und aus der Nummer
der defekten Zelle erzeugt.
-
Wenn die Zeitsteuerung defekt ist,
dann ist das gesamte Bauelement defekt. Obwohl die Eingabe/Ausgabe
auf die gleiche Weise überprüft werden
könnte,
wird die Verwendung des Bauelements nicht empfohlen, wenn die Eingabe/Ausgabe
defekt ist.
-
Nutzung zum
Erzielen einer höheren
Zuverlässigkeit
-
Die Idee besteht darin, eine Ersatzzelle
oder einige Ersatzzellen im Bauelement zu haben und sie anstelle
einer defekten Zelle einzusetzen. Die Matrix weist bereits "Ersatzverbindungen" auf. Zum Beispiel:
-
Wenn ein Hauptrechner an das Bauelement
angeschlossen ist, kann das oben beschriebene Verfahren in einer
Anwendung wie folgt benutzt werden:
- 1. Eine
oder mehrere Ersatzzellen werden ausgelassen.
- 2. Ein eingebautes Testprogramm kontrolliert diese freien Zellen über einen
Anschlußkanal
(ähnlich
einer RAM-Kontrolle).
- 3. Diese Zelle wird mit der Aufgabe einer anderen Zelle geladen,
welche die gleiche Konnektivität
wie die freie Zelle annehmen kann.
- 4. Das Eingangssignal der Zelle wird zum gleichen Eingang der
anderen Zelle geführt.
- 5. Das Ausgangssignal der Zelle wird zum gleichen Ausgang der
anderen Zelle geführt.
Jetzt arbeiten beide Zellen parallel, und daher wird keine Kollision
auftreten (wenn kein Fehler auftritt).
- 6. Die andere Zelle wird als Ersatzzelle geschaltet.
-
Ein Matrixfehler kann wie ein Zellenfehler "aussehen". Um dies zu testen,
kann ein anderer Verbindungsweg benutzt werden. Wenn eine solche
andere Verbindung nicht vorhanden ist, wird die Zelle als "defekt" gekennzeichnet.
Ein "Zellen-RAM" in Timesharing-Konfiguration
kann erst nach einem vollen Zyklus abgeschaltet werden.
-
38 zeigt
ein Ablaufdiagramm, das die Hauptoperationsschritte zusammenfaßt, die
mit dem obigen Verfahren bei der Implementierung einer Hardwareanwendung
bei Verwendung des erfindungsgemäßen Bauelements
verbunden sind. Vor dem Herunterladen der formatierten Daten in
das Bauelement werden die formatierten Daten benutzt, um gerätespezifische
erweiterte formatierte Daten zu erzeugen, welche die formatierten
Daten und eine Defektliste etwaiger defekter Zellen und/oder Verbindungen
einschließen.
Vor dem Test ist die Defektliste leer. Daher kann eine leere Defektliste
das Fehlen defekter Zellen oder Verbindungen anzeigen, kann aber
auch einfach bedeuten, daß das
Bauelement noch nicht getestet worden ist. Die gerätespezifischen
erweiterten formatierten Daten können,
wenn erforderlich, weitere gerätespezifische
Informationen enthalten. Zellen und Verbindungen in dem Bauelement
werden getestet, die Defektliste wird entsprechend aktualisiert,
und die formatierten Daten innerhalb der gerätespezifischen erweiterten
formatierten Daten werden nötigenfalls
geändert,
um die Verwendung irgendwelcher getesteter Zellen oder Verbindungen
zu vermeiden, die als defekt befunden wurden.
-
39 zeigt
ein Ablaufdiagramm, das die Hauptoperationsschritte darstellt, die
mit einem Verfahren zur automatischen Echtzeit-Defekterkennung und
-korrektur eines erfindungsgemäßen Bauelements
verbunden sind. Gerätespezifische
erweiterte formatierte Daten, wie oben in Bezug auf 38 erläutert, werden verwendet, um
eine unbenutzte Zelle festzustellen, die nicht in der Defektliste
steht. Wenn eine solche unbenutzte Zelle festgestellt wird, dann
werden die unbenutzte Zelle und ihre Verbindungen getestet, und
wenn die unbenutzte Zelle und/oder irgendwelche von ihren Verbindungen
defekt sind, werden die gerätespezifischen
erweiterten formatierten Daten aktualisiert, und eine weitere unbenutzte
Zelle, die nicht defekt ist, wird lokalisiert. Wenn eine freie Zelle
festgestellt wird, die getestet und als funktionsfähig befunden
wurde, werden die gerätespezifischen
erweiterten formatierten Daten verwendet, um eine benutzte Zelle
zur Prüfung
auszuwählen, welche
die gleiche Konnektivität
wie die unbenutzte Zelle annehmen kann. Unter Verwendung der gerätespezifischen
erweiterten formatierten Daten werden die ausgewählte Zelle und ihre Verbindungen
auf die funktionsfähige
freie Zelle kopiert. Die ausgewählte
Zelle wird jetzt abgetrennt, und die gerätespezifischen erweiterten
formatierten Daten werden entsprechend aktualisiert. Auf diese Weise
wird die Definition der zu prüfenden benutzten
Zelle auf eine freie Zelle kopiert, deren Funktionsfähigkeit
festgestellt wurde. Als Ergebnis arbeitet jetzt die freie Zelle
als die ursprüngliche
benutzte Zelle, die jetzt abgetrennt ist. Vor dem Abtrennen arbeiten beide
Zellen parallel, aber die Zeit, während der dies zulässig ist,
ist vernachlässigbar.
Wenn die ursprüngliche Zelle
oder eine ihrer Verbindungen defekt wären, wird durch den Kopiervorgang
ihre Funktionalität
auf die freie Zelle der Defekt behoben, da die freie Zelle als funktionsfähig bekannt
ist. Der gesamte Zyklus kann nach Bedarf wiederholt werden.
-
40 zeigt
ein Ablaufdiagram, das den Prozeß für die erstmalige Herstellung
einer Leiterkarte zusammenfaßt,
die ein erfindungsgemäßes Hardware-Bauelement
trägt,
wenn keine vorentwickelte Karte verfügbar ist oder wenn eine neue
Schnittstelle benötigt
wird. Die Definition der Anwendung (die auch Teil des Kartenentwicklungsprozesses
ist) wird den Entwurf selten beeinflussen, da, sobald die Schnittstelle
fertig ist, die resultierende Karte für viele verschiedene Anwendungen
eingesetzt werden kann.
-
Folglich definiert die Anwendungsdefinition 300 die
Anwendung allgemein, und daran schließt sich eine Simulation 301 an.
Der Simulationsprozeß erfordert
die Erzeugung der Anwendungssimulation, wie weiter oben unter Bezugnahme
auf 33 ausführlich beschrieben.
Der Zweck der Simulation besteht darin, sicherzustellen, daß die Idee
ausführbar
ist, und den Code zu erzeugen, der auf dem Bauelement ausgeführt werden soll.
Wenn z. B. ein Bauelement entworfen werden muß, um Sprache über Nachrichtenverbindungen
zu komprimieren, wird der Kompressionsalgorithmus unter Verwendung
einer höheren
Programmiersprache aufgeschrieben, wie z. B. "C++";
oder unter Verwendung von Werkzeugen, die für diesen Zweck bereitgestellt
werden, wie oben beschrieben. Wenn dies gewünscht wird, können diese
Werkzeuge in Kombination mit bekannten Werkzeugen angewandt werden,
wie z. B. dem oben erwähnten "Matlab". Sobald die Simulation
zufriedenstellend ist, ist der Code für das Bauelement fertig. Die
Simulation ist eine "Eins-zu-eins"-Simulation, womit gemeint ist, daß außer der
Fähigkeit
zum Simulieren der Funktion exakt simuliert wird, wie der Code auf
dem Bauelement läuft.
Wenn daher die Anwendung auf dem Simulator funktioniert, wird die
Anwendung auf der Leiterplatte funktionieren; wenn die Anwendung
nicht auf dem Simulator funktioniert, wird sie auf der Leiterplatte nicht
funktionieren.
-
Die "Eins-zu-eins"-Simulationsfähigkeit beruht auf der Architektur
des Bauelements, welche die Erzeugung einer exakten aktuellen Kopie
des Bauelements im Computer ermöglicht,
der die Simulation ausführt.
Daher erzeugen "synthetische" oder aufgezeichnete "virtuelle" Signale, die in
den Eingang der Kopie des Bauelements im Computer eintreten, die
exakten "virtuellen" Ausgangssignale,
die durch das Bauelement erzeugt würden. Diese "virtuellen" Signale können verarbeitet
und geprüft
werden.
-
Der Simulator kann in den folgenden
Betriebsarten betrieben werden:
- – Kompilierter
Modus, wodurch die Simulation mit Hilfe von Unterprogrammen ausgeführt wird,
die in einer höheren
Programmiersprache zur Ausführung
des gewünschten
Algorithmus geschrieben werden, der durch die Zelle implementiert
werden soll.
- – Realer
Modus, wodurch die in der Zelle zu speichernden Daten vor der Ausführung der
Simulation berechnet und während
der Simulation zur Ausführung
des gewünschten
Algorithmus benutzt werden, der durch die Zelle implementiert werden
soll. Auf diese Weise kann die Anzahl der Operationscodes, die zur Ausführung der
Simulation erforderlich sind, stark reduziert werden, und der Simulator
läuft viel
schneller.
- – Eine
Kombination der obigen Moden. Der Teil der Anwendung, der gerade
geprüft
wird, läuft
in dem mit der höheren
Programmiersprache kompilierten Modus, während der Rest im realen Modus
läuft.
Dieser Modus ist vorgesehen, um die Maximalgeschwindigkeit für die Fehlersuche
zu erreichen.
- – Emulationsmodus:
Der Simulator wird durch das Hardware-Bauelement beschleunigt. Im
Emulationsmodus benutzt der Simulator Zellen im Bauelement und weist ähnliche
Fähigkeiten
wie ein Logikanalysator auf. Mit anderen Worten, die Emulation kann
bei irgendeinem logischen Muster oder einer Sequenz anhalten und
das Ergebnis jeder Verbindung innerhalb des Bauelements am Bildschirm
anzeigen. Sie kann auch im Einzelschrittbetrieb arbeiten. Dies ist
eine Hardware, die der Fähigkeit
zur Verfolgung durch ein Software-Programm mit Hilfe eines Fehlersuchprogramms
analog ist.
- – Unter
Verwendung des Schaltkreisemulationsmodus (ICE-Modus) wird die Emulation mit Fähigkeiten zum
Abtasten von Eingangssignalen kombiniert. Die Karte arbeitet in
Echtzeit unter Verwendung ihres schaltkreisinternen Bauelements.
-
Da der Simulator eine "Eins-zu-eins"-Simulation implementiert,
wird der größte Teil
des Tests und der Fehlersuche in der Simulationsphase ausgeführt. Test
und Fehlersuche 302 sind erforderlich, um reale langdauernde
Signale zu prüfen,
die Stunden oder Tage dauern können
und daher die Anwendung des ICE-Modus erfordern. Dies hat Auswirkungen
auf die Simulationsgeschwindigkeit, wie oben erläutert.
-
Die Fehlersuche wird wie folgt ausgeführt: ein
Teil des Bauelements wird so programmiert, daß jeder logische Zustand erfaßt wird,
der typischerweise einen Fehler anzeigt, dessen Ursache zu analysieren
und zu korrigieren ist. Gleichzeitig erfaßt ein weiterer Teil des Bauelements
aufeinanderfolgende Abtastwerte des Eingangssignals in einem Umlaufpufferspeicher.
-
Wenn ein Fehler festgestellt wird,
stoppt die Emulation, und die aufgezeichneten Eingangssignale, die den
Fehler verursacht haben, können
in den Simulator eingespeist werden, um das Problem zu lösen. Es
können
mehr als eine Zelle erforderlich sein, um das Eingangssignal zu
erfassen: mindestens eine Zelle für den Zähler des Umlaufpufferspeichers,
und weitere für
den Puffer.
-
Nach einem anderen Fehlersuchverfahren
erzeugt das virtuelle Bauelement im Computer irgendeinen gewünschten
Zustand, der in das Bauelement geladen wird, und der Test wird von
diesem Punkt an im Emulations- oder ICE-Modus aufgeführt.
-
Sobald Tests und Fehlersuche beendet
sind, kann die Forschung und Entwicklung bis zur Produktionsphase 303 beginnen.
Im Falle von Anwendungserzeugungsprozessen, die vorkonstruierte
Karten auf der Basis von Mehrzweckbauelementen verwenden, erfordert
der Prozeß von
der Forschung und Entwicklung bis zur Produktion nicht mehr als
die Übergabe
des durch den Simulator 301 erzeugten Bauelement-Codes
von der Forschungs- und
Entwicklungsabteilung an die Produktionsabteilung.
-
Daran schließt sich die Kartenherstellung 304 an.
Im Falle von Anwendungserzeugungsprozessen unter Verwendung von
vorkonstruierten Karten auf der Basis von Mehrzweckbauelementen
ist die Kartenproduktion ein unabhängiger Prozeß, der beginnen
kann, bevor die Anwendung fertiggestellt ist. Dies ist schematisch in 41 dargestellt, die im übrigen mit 40 identisch ist, mit Ausnahme
des Fehlens des Kartenentwicklungsprozesses 305 in 41. Im Anschluß an die
Kartenproduktion 304 wird ein Überprüfungs- bzw. Verifikationsprozeß 306 ausgeführt. Die
Verifikation der Karte ist der Prozeß zum Überprüfen der Karte zusammen mit
der Elektronik. Die neue Bauelementarchitektur ist so beschaffen,
daß die
Karte getestet werden kann, um sicherzustellen, daß die Anwendung
ohne den Anwendungscode darauf laufen kann. Daher gibt es keine
Verknüpfung
zwischen der Beendigung der Arbeit in der Forschungs- und Entwicklungsgruppe
und dem Beginn/der Beendigung des Kartenverifikationsprozesses in
der Produktionsabteilung.
-
Die Kartenauslieferung 307 an
den Kunden kann erfolgen, bevor die Anwendung fertiggestellt ist.
In einem späteren
Sta dium, wenn die Anwendung fertiggestellt ist, kann der Bauelement-Code
in Form von geeignet formatierten Daten zum Herunterladen in das
Bauelement an den Kunden übermittelt
werden.
-
Etwaige Fehler, die nach der Auslieferungsphase
festgestellt werden, können
mit Hilfe der oben beschriebenen Simulations- und Fehlersuchwerkzeuge
behoben werden, und der neue Code kann an den Kunden ausgeliefert
werden. Die Aktualisierungs- oder Fehlerbeseitigungsphase 308 ist
in 40 als Teil des
Entwicklungsprozesses dargestellt, was darauf schließen läßt, daß der Entwickler
entscheiden kann, in welcher Phase das Produkt auszuliefern ist,
wobei in Betracht gezogen wird, daß nach der Auslieferung Änderungen vorgenommen
werden können.
-
Der erfindungsgemäße Entwicklungsprozeß ist ein
sogenanntes "Spiralmodell" des Entwicklungsprozesses,
im Gegensatz zu dem gebräuchlicheren "Wasserfall"-Prozeß, der gegenwärtig angewandt
wird. Das Spiralmodell und seine Vorteile werden z. B. auf der Website
http//www.cstp.umkc.edu/personal/cjweber/spiral.html beschrieben.
-
Die in 5 dargestellte "Kartenentwicklungsphase" 305 ist ähnlich derjenigen,
die oben unter Bezugnahme auf 1 beschrieben
wurde. Der einzige Unterschied besteht darin, daß keine Anwendung zu implementieren
ist, weshalb die Implementierung leichter ist und weniger Zeit erfordert.
Daher brauchen nur die Schnittstelle und die Außenanschlüsse des bzw. der Bauelemente
entworfen zu werden. In den meisten Fällen dürfte der Kartenerzeugungsprozeß aus den
folgenden Gründen
die Entwicklungszeit bis zur Vermarktung nicht beeinflussen:
- – Die
Implementierung ist einfach, da nur die Schnittstelle (wenn diese
nicht standardisiert ist) die Anzahl der Bauelemente (gewöhnlich 1)
und die Stiftausgänge
entworfen zu werden brauchen. Mit anderen Worten,
- – sobald
eine Karte fertig und die Schnittstelle festgelegt ist, kann für die neuen
Anwendungen eine vorgefertigte Karte (oder ein vorgefertigter Kartenentwurf)
verwendet werden.
-
Wenn eine neue Anwendung mit einer
nichtstandardisierten, außergewöhnlichen
Schnittstelle hergestellt werden soll, ist trotzdem zu erwarten,
daß der
Kartenfertigungsprozeß länger dauert
als der Implementierungsprozeß,
und die Einsparung der bis zur Vermarktung erforderlichen Zeit verringert
sich. Daher sollte man sich bemühen,
universelle, serienmäßige, vorgefertigte
Mehrzweckkarten für
die bekannten Schnittstellen vorzubereiten, um für verschiedene Anwendungen
bereit zu sein.
-
Die Erfindung liefert folglich eine
hochflexible umprogrammierbare Bauelementarchitektur, die für die Implementierung
einer riesigen Anzahl verschiedener Anwendungen zugänglich ist
und eine leichte Erweiterung sowie gemischte Architekturen zuläßt. Zuverlässigkeit
und Einfachheit des Entwurfs sind durch die "Eins-zu-eins"-Simulation gewährleistet, wodurch während der
Computersimulation einer Anwendung Daten verwendet werden, die mit
denen identisch sind, die zur Implementierung der Anwendung in das
Bauelement heruntergeladen werden. Simulation und Emulation können mit
Hilfe eines gewöhnlichen
Personalcomputers unter Anwendung bekannter höherer Programmierverfahren
ausgeführt
werden, wodurch kostenaufwendige Spezialarbeitsplätze überflüssig werden.
Als Ergebnis der einzigartigen Bauelementarchitektur können die Hardware-Entwicklung und -anwendung
für einen
Parallelbetrieb unterteilt werden, wie bereits beschrieben, und
eignen sich für
ein modulares Arbeitsgruppenverfahren. Diese Flexibilität erhöht sich
durch die Fähigkeit zum
Zugriff auf Bibliotheken von vorkonstruierten Konstruktionen und
formatierten Daten.
-
Es sind zwar verschiedene Ausführungsformen
beschrieben worden, aber für
den Fachmann wird offensichtlich sein, daß ein besonders vorteilhaftes
Merkmal der Erfindung in ihrer Flexibilität und Anwendungsmethode liegt.
Daher dienen die Beispiele nur zur Erläuterung, und der Umfang der
Erfindung soll alle Varianten umfassen, die innerhalb des Umfangs
der Patentansprüche
liegen.
-
Ebenso, ist die Erfindung zwar unter
besonderer Beachtung der Entwicklung von digitalen elektronischen
Schaltkreisen beschrieben worden, aber Fachleute werden erkennen,
daß die
Erfindung auch auf die Erzeugung biologischer Hardware, pneumatischer
Hardware, mechanischer Hardware Anwendung finden kann, in der die
Grundkomponenten der Erfindung, die Zellen und die programmierbaren
Matrizen, unter Anwendung der entsprechenden Technologie implementiert
werden. Daher wird in den Patentansprüchen der Begriff "Hardware" so verwendet, daß er elektronische
Hardware, biologische Hardware, pneumatische Hardware, mechanische
Hardware und jede andere Hardware einschließt, in der Zellen mit der Fähigkeit
zur Datenspeicherung implementiert werden können, und in der programmierbare
Matrizen implementiert werden können.
-
Man wird auch erkennen, daß das erfindungsgemäße System
ein geeignet programmierter Computer sein kann. Ebenso zieht die
Erfindung ein Computerprogramm, das durch einen Computer lesbar
ist, für
die Ausführung
des erfindungsgemäßen Verfahrens
in Betracht. Die Erfindung zieht ferner einen maschinenlesbaren
Speicher, der ein Programm von durch die Maschine ausführbaren
Anweisungen materiell verkörpert, für die Ausführung des
erfindungsgemäßen Verfahrens
in Betracht.
-
In den nachstehenden Patentansprüchen werden
alphabetische Zeichen, die zur Bezeichnung von Anspruchsschritten
verwendet werden, nur zur Bequemlichkeit angegeben und implizieren
keine bestimmte Reihenfolge in der Ausführung der Schritte.