DE19541946A1 - Verfahren zur Speicher-Zugriffssteuerung für 32-Bit-Hochleistungs-Mikroprozessoren der 3. Generation - Google Patents
Verfahren zur Speicher-Zugriffssteuerung für 32-Bit-Hochleistungs-Mikroprozessoren der 3. GenerationInfo
- Publication number
- DE19541946A1 DE19541946A1 DE1995141946 DE19541946A DE19541946A1 DE 19541946 A1 DE19541946 A1 DE 19541946A1 DE 1995141946 DE1995141946 DE 1995141946 DE 19541946 A DE19541946 A DE 19541946A DE 19541946 A1 DE19541946 A1 DE 19541946A1
- Authority
- DE
- Germany
- Prior art keywords
- access
- control
- sram
- transfer
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
- G06F13/4243—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
Description
(2) Die Erfindung betrifft eine Verfahren zum Aufbau von Rechnersystemen nach dem
Oberbegriff des Hauptanspruchs mit mit den dafür üblichen Basisfunktionen, wie:
* Bus-Frequenz 25 MHz
* Zugriff auf mehrere unterschiedliche Subsysteme, wie:
* Bus-Frequenz 25 MHz
* Zugriff auf mehrere unterschiedliche Subsysteme, wie:
- - Speicher mit EPROM, SRAM, EEPROM (FLASH)
- - On-Board-Peripherie mit Timer, Interrupt-Controller, UART
- - Prozeßperipherie
* Zugriffs-Funktionalität, mit:
- - programmierbaren Waitstates ( 0), separat für jedes Subsystem bzw. Speicherbank
- - Verarbeitung unterschiedlicher Operanden-Größen wie Byte, Word, Long-Word
- - Durchführung von Burst-Zugriffen bei Schreib/Lese-Operationen auf den Speicher
- - Steuerung von "cachable/non-cachable Zugriffen" von extern über Adreßdekoder
* Vollständige 32-Bit-Adreßdekodierung zur Erkennung und Signalisierung von
Zugriffsfehlern mittels sogenannter "Bus-Error-Exception".
Zum Aufbau der Zugriffssteuerung auf die Rechner-Subsysteme sind mehrere
Möglichkeiten bekannt:
Nachteile:
großer Platzbedarf auf dem Rechnerboard (a < b, c)
hohe Stückkosten in der Fertigung (a < b, c)
geringe bzw. keine Konfigurierbarkeit (a < b, c)
hoher Leistungsverbrauch (a < b, c)
lange Entwicklungszeit und damit hohe Entwicklungskosten (a < b)
geringe Systemleistung durch Addition von Schaltzeiten (a < b, c)
hohe Kosten bei Änderungen und Fehlern (a < b, c).
großer Platzbedarf auf dem Rechnerboard (a < b, c)
hohe Stückkosten in der Fertigung (a < b, c)
geringe bzw. keine Konfigurierbarkeit (a < b, c)
hoher Leistungsverbrauch (a < b, c)
lange Entwicklungszeit und damit hohe Entwicklungskosten (a < b)
geringe Systemleistung durch Addition von Schaltzeiten (a < b, c)
hohe Kosten bei Änderungen und Fehlern (a < b, c).
Vorteile:
keine gegenüber den Methoden b und c.
keine gegenüber den Methoden b und c.
Nachteile:
relativ großer Platzbedarf (a < b < c)
relativ hoher Leistungsverbrauch (a < b < c),
relativ hohe Stückkosten in der Fertigung (a < b < c)
mittlere Systemleistung durch Addition von Schaltzeiten (a < b < c).
relativ großer Platzbedarf (a < b < c)
relativ hoher Leistungsverbrauch (a < b < c),
relativ hohe Stückkosten in der Fertigung (a < b < c)
mittlere Systemleistung durch Addition von Schaltzeiten (a < b < c).
Vorteile:
Konfigurierbarkeit (b < c < a),
geringere Entwicklungskosten (b < a, c)
verringertes Entwicklungsrisiko durch einfache Rechner-Simulation.
Konfigurierbarkeit (b < c < a),
geringere Entwicklungskosten (b < a, c)
verringertes Entwicklungsrisiko durch einfache Rechner-Simulation.
Nachteile:
hohe Entwicklungskosten (c < b, c)
eingeschränkte Konfigurierbarkeit (a < c < b)
hohe Kosten bei Änderungen (c < b, c).
hohe Entwicklungskosten (c < b, c)
eingeschränkte Konfigurierbarkeit (a < c < b)
hohe Kosten bei Änderungen (c < b, c).
Vorteile:
geringer Platzbedarf (c < a, b)
geringer Leistungsverbrauch (c < a, b)
geringe Stückkosten in der Serie (c < a, b)
große Systemleistung durch Eignung für hohe Taktfrequenzen c < b, c)
geringes Entwicklungsrisiko durch Rechner-Simulation.
geringer Platzbedarf (c < a, b)
geringer Leistungsverbrauch (c < a, b)
geringe Stückkosten in der Serie (c < a, b)
große Systemleistung durch Eignung für hohe Taktfrequenzen c < b, c)
geringes Entwicklungsrisiko durch Rechner-Simulation.
- 1. MC 68040 Designer′s Handbook (MOTOROLA 1993)
- 2. MC 68040 32-Bit Mikroprocessors User′s Manual (MOTOROLA 1993)
- 3. MC 68000 Family Reference (MOTOROLA 1990)
- 4. ALTERA Data Book (ALTERA 1993)
- 5. ALTERA Applications Handbook (ALTERA 1992)
- 6. Advanced MOS-Memory Data-Book (HYBRID-Memory-Products 1991)
- 7. SRAM-Data-Book (MICRON 1993)
- 8. Datenblatt "ECL Crystal Clock Oszillator K1149" (CHAMPION-Technologies)
- 9. Datenblatt "ECL Clock Distribution Circuit MC 10H642" (MOTOROLA)
Der Erfindung liegt die Aufgabe zugrunde, eine Realisierungsmethode für eine Speicher-
Zugriffssteuerung zu entwickeln, die eine wesentlich effektivere Realisierung von
Rechnersystemen für sogenannte "(Military)-Embedded-Control-Applications" erlaubt als
die bekannten Lösungen.
Die Aufgabe wird erfindungsmäßig durch die Verfahrensschritte nach dem kennzeichnenden
Teil des Hauptanspruches gelöst. Vorteilhafte Weiterbildungen ergeben sich aus den
Unteransprüchen.
Verglichen mit den bekannten konventionellen und alternativen Methoden erlaubt die
vorgestellte Methode eine wesentlich effektivere Realisierung der Zugriffssteuerung auf die
Rechner-Subsysteme für sogenannte "(Military)-Embedded-Control-Applications", wobei
Effektivität in diesem Fall bedeutet:
- - geringe Kosten sowie Platzbedarf durch sogenannte "Single-Chip-Lösung",
- - Konfigurierbarkeit durch Anpassung an Speicherelemente größerer/kleinerer Zugriffszeit bzw. größerer/kleinerer Kapazität,
- - große Systemleistung durch Eignung für hohe Taktfrequenzen sowie für komplexe Funktionen (wie z. B. Burst-Transfers, externe Cache-Steuerung),
- - geringes Entwicklungsrisiko durch Simulation der funktionalen und physikalischen Parameter der Zugriffssteuerung,
- - kurze Entwicklungszeit und -kosten durch teilweise parallele Entwicklung von Board- Layout und Firmware der Zugriffssteuerung.
Zum Verständnis des Aufbaus und der Wirkungsweise einer Zugriffssteuerung, realisiert
unter Verwendung von "Anwenderprogrammierbaren Logikelementen (EPLD′s)" für den
beispielsweisen Einsatz in einem "MOTOROLA MC 68040 Mikroprozessorsystem"
werden nachstehend zuerst sowohl die signifikanten Eigenschaften des Prozessors als auch
die Architekturmerkmale der EPLD′s kurz beschrieben.
Die 32-Bit Mikroprozessoren "MC 68040" und "MC 68060" stellen die neuesten Mitglieder
der "68000-Familie" dar.
Der "MC 68040" vereinigt dabei die Fähigkeiten:
- - des Vorgängers "MC 68030",
- - sowie einer "68882 Floating-Point-Unit"
- - als auch erweiterter Daten- und Instruktionscaches in einem VLSI.
Der "MC 68040" beinhaltet die Integration von sieben parallel arbeitende
Funktionseinheiten und zwar:
- - Ganzzahl- und Fließkomma-Recheneinheit
- - zwei je 4 kByte große Cache-Speicher
- - zwei Speicherverwaltungseinheiten
- - eine funktionsmächtige Bussteuerungs-Einheit.
Gegenüber seinen Vorgängern, mit denen er jedoch objektkompatibel ist, weist er
infolgedessen eine wesentliche Leistungssteigerung auf, mit:
20 MIPS @ 25 MHz für Ganzzahlverarbeitung (Integer) und
3,5 MFLOPS @ 25 MHz für Fließkommaverarbeitung (Floating-Point).
20 MIPS @ 25 MHz für Ganzzahlverarbeitung (Integer) und
3,5 MFLOPS @ 25 MHz für Fließkommaverarbeitung (Floating-Point).
Diese Leistungssteigerung kommt durch ein hohes Maß an interner Parallelverarbeitung im
Ganzzahlverarbeitungsbereich bzw. durch spezielle Hardware-Implementierung im
Fließkommaverarbeitungs(FPU)- und Speicherverwaltungsbereich (MMU) zustande.
So ist z. B. die Integer-Unit ist mit einer 6-stufigen "Pipeline-Architektur" ausgerüstet und
erlaubt mit einer damit verbundenen überlappenden Befehlsausführung, daß eine ganze
Reihe von Funktionen in einem Taktzyklus abgearbeitet werden können, so daß mit einem
Mittelwert von 1,3 Zyklen pro Befehl RISC-ähnliche Leistungsmerkmale erreicht werden.
Der "MC 68040" ist intern mit einer 100%igen "Harvard-Archtektur" aufgebaut. Dies
bedeutet ein völlig unabhängiges Befehls- und Datenmanagement nicht nur im Bereich der
integrierten Daten- und Instruktions-Caches von je 4 KByte Kapazität, sondern auch für die
Adreßberechnung mit Hilfe von zwei getrennten "Adress-Translation-Caches (ATC)".
Darüberhinaus erlaubt die Verwendung von internen Caches eine Entkopplung vom
externen Bus und damit die Verwendung von langsamen und somit preiswerten
Speicherelementen ohne die Systemleistung merklich zu verhindern.
Die ebenfalls doppelt ausgeführte "Memory-Management-Unit (MMU)", die 32-Bit
logische (virtuelle) Adressen in 32-Bit physikalische Adressen übersetzt, unterstützt sowohl
"Demand-Paged-Speichersysteme" als auch Echtzeit-Betriebssystem-Konfigurationen.
Das Businterface des "MC 68040" ist für jeweils 32-Bit Daten und Adressen ausgelegt und
weist keine "dynamische Busstruktur" auf, da der Bus für schnelle Transfers von bzw. nach
externen Cache-Speichern und/oder Haupt-Speichern optimiert ist. Dies bedeutet, daß
Speicherblöcke, die zur Unterbringung von Programmcode oder Stacks vorgesehen sind,
32-Bit breit organisiert sein müssen. Des weiteren heißt dies, daß beim Anschluß von
Peripherie-Subsystemen mit nur 8/16-Bit breiten Ports die Software berücksichtigen muß,
an welchen Datenleitungen diese Elemente angeschlossen sind.
Beim Zugriff über den 32-Bit Datenbus auf Operanden im Speicher, die an beliebigen Byte-
Grenzen untergebracht sein dürfen, sind verschiedene Zugriffsarten möglich und zwar:
- - Byte (8 Bit)
- - Word (16 Bit)
- - Long-Word (32 Bit)
- - Line (16 Byte = 4 Long-Words).
Zur Vermeidung von "Misaligned-Zugriffen" jedoch, die letztlich eine Verringerung der
Prozessor-Leistung durch zusätzliche Zugriffs-Zyklen bedeuten, weil beim Zugriff auf einen
solchen "Misaligned" Operanden eine Sequenz von "aligned" Byte- und Word-Transfers
erzeugt wird, sollten die Operanden an ihren "natürlichen" Grenzen innerhalb des Speichers
untergebracht werden.
Der "MC 68040" unterstützt 3 verschiedene Arten von externen Bus-Zyklen, die immer
durch die entsprechenden "Quittungssignale (Acknowledge-Signals)" abgeschlossen werden
müssen.
Dabei wird unterschieden zwischen:
- - "Normal-Zyklen", bei denen maximal 4 Bytes innerhalb von minimal 2 Prozessor-Clock-Perioden übertragen werden und die mit "Transfer- Acknowledge (!TA)" abgeschlossen werden müssen.
- - "Burst-Zyklen", bei denen sequentiell 4 Lang-Worte (16 Bytes) innerhalb von minimal fünf Prozessor-Clock-Zyklen übertragen werden, wobei der Transfer jedes einzelnen Lang-Wortes ebenfalls mit "!TA" quittiert werden muß.
- - "Burst-Inhibit-Zyklen", bei denen maximal 4 Bytes innerhalb von minimal 2 Prozessor-Clock-Zyklen übertragen werden und mit "!TA" und "!TBI" (gleichzeitig) abgeschlossen werden müssen.
Zeichenerklärung:
- - Signale, die "aktive-low" sind, werden durch "! Signalname" gekennzeichnet.
- - eine Zustandsveränderung wird gekennzeichnet durch "alter Zustand → neuer Zustand"
- - beim Vergleich bedeutet "! = ungleich".
Der Prozessor "MC 68040" verfügt intern sowohl über ein "Instruktions-Cache" als auch
ein "Daten-Cache", deren Inhalt auf dem "neuesten Stand" gehalten werden müssen.
Einer der Vorteile des Prozessors ist es nun, daß er dieses Auffrischen der Caches mittels
sogenannter "Burst-Transfers" durchführt, wobei er annimmt, daß der Speicher diese
Zugriffsart auch unterstützt. Falls nicht, dann muß ihm dies beim "Initial-Zyklus" des Burst-
Transfers durch das Signal "Transfer-Burst-Inhibit (!TBI)" signalisiert werden. Der
Prozessor wird damit veranlaßt den Burst-Transfer durch vier Langwort-Transfers zu
ersetzen.
Der Vorteil der Burst-Zugriffe liegt nun darin, daß die Zugriffszeit auf eine Line geringer ist
wie vier einzelne Langwort-Zugriffe oder die Summe der Einzelzugriffe im Fall "Burst-
Inhibit".
Vergleicht man bei einem "No-Wait-State"-Speicher die Zugriffszeiten auf eine Line für
beide Fälle: Burst/Burst-Inhibit, so erhält man folgende Werte:
Burst: 5 Taktzyklen (2 + 1 + 1 + 1)
Burst-Inhibit: 8 Taktzyklen (2 + 2 + 2 + 2).
Burst: 5 Taktzyklen (2 + 1 + 1 + 1)
Burst-Inhibit: 8 Taktzyklen (2 + 2 + 2 + 2).
Es ist einzusehen, daß an einen Speicher sowie die Speicher-Zugriffssteuerung sehr hohe
Anforderungen bezüglich Zugriffszeit sowie Signal-Verarbeitungszeiten gestellt werden,
wenn Burst-Zugriffe ohne Wartezyklen durchgeführt werden sollen.
Da jedoch bei einem Speicher Zugriffszeit und Preis in einem umgekehrten Verhältnis
zueinander stehen, bedeutet dies entsprechend hohe Kosten für einen solchen "Zero-
Waitstate-Speicher".
Beim Datentransfer des Prozessors zum Speicher oder zu anderen Systemkomponenten
handelt es sich stets sich um "synchrone Transfers", die über sogenannte "Handshake-
Sequenzen" abgewickelt werden. Synchron heißt in diesem Fall, daß alle dazu notwendigen
Eingangs- und Ausgangssignale stets synchron zur Vorderflanke des "Bus-Clock-Signals
(BCLK)" entweder vom Prozessor erzeugt werden (Ausgangssignale) oder von der
Peripherie zu erzeugen sind (Eingangssignale).
Folgende Ausgangssignale werden vom Prozessor zur Steuerung des Daten-Transfers
bereitgestellt:
* Adressen (A31 . . . A0), mit:
* Adressen (A31 . . . A0), mit:
- - A31 . . . A4: Line-Addresses
- - A3, A2: Long-Word-Addresses
- - A1, A0: Byte-Addresses
* Transfer-Attribute, mit:
- - SIZ0, SIZ1: Transfer-Size (Anzahl Bytes)
- - TT1, TT0: Transfer-Type
- - TM2-TM0: Transfer-Modifier
- - !TS: Transfer-Start
- - R/!W: Read/Write.
Für die Verwendung bzw. Erzeugung der Adressen (A3, A2, A1, A0) gilt im einzelnen:
* "Adressen (A3, A2)" bei "Normal-Transfers"
Zu Beginn eines Zugriffs-Zyklus werden vom Prozessor die "Adressen (A31 . . . A0)" zusammen mit den "Transfer-Attributes" ausgegebenen und im Anschluß daran mit dem Signal "Transfer-Start (!TS → true)" der angesprochenen Speicherbaugruppe mitgeteilt, daß die erzeugten Bussignale gültig sind und ein neuer Buszyklus gestartet worden ist. Dies bedeutet, daß die Adressen (A3, A2)" zum Zeitpunkt "Transfer-Start (!TS → true)" von der angesprochenen Baugruppe gespeichert werden müssen (siehe auch "Line-Transfers").
Zu Beginn eines Zugriffs-Zyklus werden vom Prozessor die "Adressen (A31 . . . A0)" zusammen mit den "Transfer-Attributes" ausgegebenen und im Anschluß daran mit dem Signal "Transfer-Start (!TS → true)" der angesprochenen Speicherbaugruppe mitgeteilt, daß die erzeugten Bussignale gültig sind und ein neuer Buszyklus gestartet worden ist. Dies bedeutet, daß die Adressen (A3, A2)" zum Zeitpunkt "Transfer-Start (!TS → true)" von der angesprochenen Baugruppe gespeichert werden müssen (siehe auch "Line-Transfers").
* "Adressen (A3, A2)" bei "Line-Transfers"
"Line-Zugriffe" werden mittels sogenannter "Burst-Transfers" durchgeführt, bei denen zeitlich nacheinander 4 Lang-Worte zusammen mit der Anfangs (Initial)-Adresse des 1. Lang-Wortes übertragen werden, wobei diese Anfangsadresse während des gesamten Burst-Transfers unverändert bleibt. Da demnach die "Adressen (A3, A2)" ebenfalls für die gesamte Dauer des Line-Transfers stabil gehalten werden und auf eines der 4 Langworte innerhalb eines 16-Byte Speicherblocks zeigen, ist diese "Start- Adresse (A3, A2)" zum Zeitpunkt "Transfer-Start (!TS → true)" von der angesprochenen Baugruppe zu speichern und danach zur Adressierung der weiteren "Langworte (# 2, # 3, # 4)" der restlichen Line vor deren Transfers explizit durch Inkrementieren zu erzeugen.
"Line-Zugriffe" werden mittels sogenannter "Burst-Transfers" durchgeführt, bei denen zeitlich nacheinander 4 Lang-Worte zusammen mit der Anfangs (Initial)-Adresse des 1. Lang-Wortes übertragen werden, wobei diese Anfangsadresse während des gesamten Burst-Transfers unverändert bleibt. Da demnach die "Adressen (A3, A2)" ebenfalls für die gesamte Dauer des Line-Transfers stabil gehalten werden und auf eines der 4 Langworte innerhalb eines 16-Byte Speicherblocks zeigen, ist diese "Start- Adresse (A3, A2)" zum Zeitpunkt "Transfer-Start (!TS → true)" von der angesprochenen Baugruppe zu speichern und danach zur Adressierung der weiteren "Langworte (# 2, # 3, # 4)" der restlichen Line vor deren Transfers explizit durch Inkrementieren zu erzeugen.
* "Adressen (A3, A2)" bei "Burst-Inhibit-Transfers"
Da in diesem Fall ein "Line-Transfer" durch 4 einzelne Langwort-Transfers ersetzt wird, gilt hier das Gleiche wie für "Normal-Transfers".
Da in diesem Fall ein "Line-Transfer" durch 4 einzelne Langwort-Transfers ersetzt wird, gilt hier das Gleiche wie für "Normal-Transfers".
* "Adressen (A1, A0)"
Abhängig von der Art des Zugriffs (READ oder WRITE) werden diese niederwertigsten Bits der Adressen unterschiedlich verwendet, und zwar:
Abhängig von der Art des Zugriffs (READ oder WRITE) werden diese niederwertigsten Bits der Adressen unterschiedlich verwendet, und zwar:
- - Bei READ-Zugriffen können diese Adressen unabhängig von der Größe der Operanden oder der Art des Bus-Zyklus ignoriert werden, während sie
- - Bei WRITE-Zugriffen dazu verwendet werden, um durch Verknüpfung mit den Signalen "Transfer-Size (SIZ1, SIZ0)" die "Byte-Select-Signale" zu erzeugen. Damit wird vermieden, daß bei "Misaligned-Write-Zugriffen" diejenigen Bytes innerhalb der 32-Bit, die nicht angesprochen sind, überschrieben werden.
Jeder vom Prozessor gestartete Buszyklus muß durch Erzeugung eines oder mehrerer
Quittungssignale abgeschlossen werden. Im Normalfall geschieht dies, indem die
angeschlossene externe Komponente (z. B. Speicher, Onboard-Peripherie oder
Systeminterface) am Ende des Buszyklus das Signal "Transfer-Acknowledge (!TA → true)"
aktiviert. Bei bestimmten "Burst-Transfers" sowie Zugriffsfehlern sind jedoch auch andere
Quittierungsarten möglich.
Folgende Quittungssignale können zur Steuerung des Daten-Transfers verwendet werden:
- - Transfer-Acknowledge (!TA)
- - Transfer-Burst-Inhibit (!TBI)
- - Transfer-Cache-Inhibit (!TCI)
- - Transfer-Error-Acknowledge (!TEA).
Diese Quittungssignale "!TA, !TBI, !TCI, !TEA", wie auch die Daten bei Lese-Operationen
werden vom Prozessor mit der positiven Flanke des "Taktsignals (BCLK)" abgetastet und
müssen, um fehlerfrei erkannt zu werden, während eines "Abtastfensters" stabil sein, wobei
dessen Dauer durch die entsprechenden "Setup" und "Hold" Zeiten der Eingangssignale
festgelegt ist.
(Siehe "MC 68040 Electrical Specifications").
Für die Verwendung und Erzeugung der Quittungssignale gilt im einzelnen:
* "Transfer-Acknowledge (!TA)"
"Normale" Buszyklen werden durch Aktivierung von "Tranfer-Acknowledge (!TA → true)" abgeschlossen.
"Normale" Buszyklen werden durch Aktivierung von "Tranfer-Acknowledge (!TA → true)" abgeschlossen.
* "Transfer-Burst-Inhibit (!TBI)"
Beim Zugriff auf Systemkomponenten, die keine "Burst-Fähigkeit" besitzen, muß ein Line-Transfer mit "Transfer-Burst-Inhibit (!TBI → true)" abgeschlossen werden. Dabei wird das Signal "!TBI" gleichzeitig mit "!TA" beim ersten Langwort-Transfer eines Line-Zugriffes aktiviert und zwingt damit den Prozessor, den Line-Transfer abzubrechen und den Rest der Line durch den Transfer von 3 einzelnen Langworten zu ersetzen, wobei während deren Übertragung "!TBI" ignoriert wird.
Beim Zugriff auf Systemkomponenten, die keine "Burst-Fähigkeit" besitzen, muß ein Line-Transfer mit "Transfer-Burst-Inhibit (!TBI → true)" abgeschlossen werden. Dabei wird das Signal "!TBI" gleichzeitig mit "!TA" beim ersten Langwort-Transfer eines Line-Zugriffes aktiviert und zwingt damit den Prozessor, den Line-Transfer abzubrechen und den Rest der Line durch den Transfer von 3 einzelnen Langworten zu ersetzen, wobei während deren Übertragung "!TBI" ignoriert wird.
* "Transfer-Cache-Inhibit (!TCI)"
Die internen "Caches" des Prozessors werden durch "Line-Read-Cycles" beschrieben, wobei das Beschreiben der Caches beim Zugriff auf die Peripherie oder auf Speicherbereiche, in denen nicht zeitkritische Programmteile untergebracht sind, verhindert werden kann, indem bei der Übertragung des 1. Langwortes eines Line- Read-Transfers gleichzeitig mit "!TA" das Signal "Transfer-Cache-Inhibit (!TCI → true)" erzeugt wird. Nach der Übertragung des 1. Langwortes eines Line-Transfers wird "!TCI" vom Prozessor ignoriert.
Die internen "Caches" des Prozessors werden durch "Line-Read-Cycles" beschrieben, wobei das Beschreiben der Caches beim Zugriff auf die Peripherie oder auf Speicherbereiche, in denen nicht zeitkritische Programmteile untergebracht sind, verhindert werden kann, indem bei der Übertragung des 1. Langwortes eines Line- Read-Transfers gleichzeitig mit "!TA" das Signal "Transfer-Cache-Inhibit (!TCI → true)" erzeugt wird. Nach der Übertragung des 1. Langwortes eines Line-Transfers wird "!TCI" vom Prozessor ignoriert.
* "Transfer-Error-Acknowledge (!TEA)"
Im Fall von Zugriffsfehlern ist es jedoch sinnvoll Buszyklen unterschiedlich zum Normalfall durch Aktivieren von "Transfer-Error-Acknowledge (!TEA → true)" abzuschließen, wobei u. a. folgende Fehlerfälle denkbar sind:
Im Fall von Zugriffsfehlern ist es jedoch sinnvoll Buszyklen unterschiedlich zum Normalfall durch Aktivieren von "Transfer-Error-Acknowledge (!TEA → true)" abzuschließen, wobei u. a. folgende Fehlerfälle denkbar sind:
- - Zugriffe auf nicht verwendete Adreßbereiche (z. B.: nicht voll ausgebaute Segmentbereiche)
- - Verwendung unzulässiger Operanden (z. B.: bestimmte Byte- oder Wort-Operationen bei einer 8 bzw. 16-Bit Peripherie).
Bei Erkennung eines solchen fehlerhaften Zugriffs mittels "Transfer-Error-Acknowledge
(!TEA = true)" wird vom Prozessor eine sogenannte "Bus-Error-Exception" ausgeführt.
Der Prozessor "MC 68040" unterscheidet bei Lese-Operationen zwischen:
- - Instruction-Read-Cycles
- - Data-Read-Cycles.
Bei ersteren handelt es sich immer um "cachable" Langwort-Zugriffe, bei denen der
Prozessor annimmt, daß der gesamte 32-Bit Datenbus gültige Daten enthält. Bei "Data-
Read-Cycles" sind jedoch sowohl "cachable" als auch "non-cachable" Zugriffe möglich.
Während im Fall eines "cachable Data-Read-Cycles", genauso wie bei "Instruction-Read-
Cycles" immer auf den gesamten 32-Bit Datenbus zugegriffen wird, sind im Unterschied
dazu bei "non-cachable" Data-Read-Cycles, Zugriffe auf Operanden beliebiger Größe (wie
Byte, Word oder Long-Word) und Unterbringung innerhalb des 32-Bit-Bus möglich.
Da der "MC 68040" jedoch nur 32-Bit-Zugriffe zuläßt, ignoriert er letzteren Fall alle nicht
angesprochenen Bytes auf dem 32-Bit-Bus. Die Konsequenz davon ist, daß bei Lese-Zyklen
im Gegensatz zu Schreibzyklen generell der gesamte "32-Bit Ausgangsport" des Speichers
freigegeben werden kann.
Folgende Signale müssen zur Steuerung der "READ-Zugriffe" erzeugt werden:
* "Chip-Select (!CS)"
Das Signal "Chip-Select" zur Anwahl einer Speicherbank sollte wegen der großen "Chip-Select-Access-Time (Tacs)" der Speicherbausteine zum frühestmöglichen Zeitpunkt erzeugt werden. Dies bedeutet, daß es unmittelbar aus den Adressen abgeleitet werden kann, ohne auf deren Valid-Kriterium "Transfer-Start (!TS → true)" zu warten.
Das Signal "Chip-Select" zur Anwahl einer Speicherbank sollte wegen der großen "Chip-Select-Access-Time (Tacs)" der Speicherbausteine zum frühestmöglichen Zeitpunkt erzeugt werden. Dies bedeutet, daß es unmittelbar aus den Adressen abgeleitet werden kann, ohne auf deren Valid-Kriterium "Transfer-Start (!TS → true)" zu warten.
* "Output-Enable (!OE)"
Bei Lese-Zugriffen darf, unabhängig vom verwendeten Datentyp (Byte, Word, Long- Word), immer auf den gesamten 32-Bit Datenbus zugegriffen werden, da der Prozessor alle nicht angewählten Bytes ignoriert. Dies bedeutet, daß bei Lese- Operationen keine selektive Byte-Auswahllogik benötigt wird und somit durch das Signal "Output-Enable" immer der gesamte "32-Bit-Ausgangsport" der angesprochenen Speicherbank freigegeben werden kann. Bei der Erzeugung von "Output-Enable" ist auf die "Data-Setup-Time" und "Data-Hold-Time" des Prozessors MC 68040 zu achten.
Bei Lese-Zugriffen darf, unabhängig vom verwendeten Datentyp (Byte, Word, Long- Word), immer auf den gesamten 32-Bit Datenbus zugegriffen werden, da der Prozessor alle nicht angewählten Bytes ignoriert. Dies bedeutet, daß bei Lese- Operationen keine selektive Byte-Auswahllogik benötigt wird und somit durch das Signal "Output-Enable" immer der gesamte "32-Bit-Ausgangsport" der angesprochenen Speicherbank freigegeben werden kann. Bei der Erzeugung von "Output-Enable" ist auf die "Data-Setup-Time" und "Data-Hold-Time" des Prozessors MC 68040 zu achten.
Bei Schreib-Operationen unterstützt der Prozessor "MC 68040" Zugriffe auf Operanden
unterschiedlicher Größe, wie: Byte, Word, Long-Word oder Line, wobei er jedoch den
Transfer von sogenannten "Misaligned Operanden", d. h. von Operanden, die nicht an ihren
natürlichen Adreßgrenzen untergebracht sind, erlaubt.
Da jedoch ein Zugriff auf den externen Bus immer ein 32-Bit Zugriff ist und alle Operanden
im Speicher an beliebigen Byte-Adressen untergebracht sein dürfen, muß vermieden
werden, daß im Fall eines "Misaligned-Write-Zugriffes" diejenigen Bytes, die nicht
angesprochen sind, überschrieben werden.
Dies bedeutet, daß bei Schreib-Zugriffen eine "Byte-Select-Logic" zwingend erforderlich ist
d. h. jedes Byte innerhalb der 32-Bit muß mit einem eigenen "Data-Write-Strobe" anwählbar
sein.
Folgende Signale werden zur Steuerung der "WRITE-Zugriffe" benötigt:
* "Chip-Select (!CS)"
Es gilt das Gleiche wie im Abschnitt "(8.1.2.3) Allgemeines zur Steuerung der READ-Zugriffe" bereits beschrieben.
Es gilt das Gleiche wie im Abschnitt "(8.1.2.3) Allgemeines zur Steuerung der READ-Zugriffe" bereits beschrieben.
* "Write-Enable (!WE)"
Bei Schreib-Operationen unterstützt der "68040" Zugriffe auf Operanden unterschiedlicher Größe, wie Byte, Word, Long-Word oder Line. Da jedoch ein Zugriff auf den externen Bus immer ein 32-Bit Zugriff ist und alle Operanden im Speicher an beliebigen Byte-Adressen untergebracht sein dürfen, sind beim Zugriff auf Word- und Long-Word-Operanden, die nicht auf ihren "natürlichen" Adressen untergebracht sind, sogenannte "Misaligned-Zugriffe" die Folge. Um nun zu vermeiden, daß im Fall eines "Misaligned-Write-Zugriffes" diejenigen Bytes, innerhalb der 32-Bit, die nicht angesprochen sind, überschrieben werden, muß jedes Byte mit einem eigenen "Data-Write-Strobe (!WE)" anwählbar sein, wobei diese durch Verknüpfung der Signale "Transfer-Size (SIZ1, SIZ0)" mit den "Adressen (A1, A0)" gewonnen werden.
Bei Schreib-Operationen unterstützt der "68040" Zugriffe auf Operanden unterschiedlicher Größe, wie Byte, Word, Long-Word oder Line. Da jedoch ein Zugriff auf den externen Bus immer ein 32-Bit Zugriff ist und alle Operanden im Speicher an beliebigen Byte-Adressen untergebracht sein dürfen, sind beim Zugriff auf Word- und Long-Word-Operanden, die nicht auf ihren "natürlichen" Adressen untergebracht sind, sogenannte "Misaligned-Zugriffe" die Folge. Um nun zu vermeiden, daß im Fall eines "Misaligned-Write-Zugriffes" diejenigen Bytes, innerhalb der 32-Bit, die nicht angesprochen sind, überschrieben werden, muß jedes Byte mit einem eigenen "Data-Write-Strobe (!WE)" anwählbar sein, wobei diese durch Verknüpfung der Signale "Transfer-Size (SIZ1, SIZ0)" mit den "Adressen (A1, A0)" gewonnen werden.
Beim Timing der "Write-Enable-Signale" ist besonders auf die geringe "Data-Hold-
Time" des Mikroprozessors mit: t(dh) = 9 ns / min @ 25 MHz zu achten.
Bei der Berechnung der kritischen Zeiten beim Speicherzugriff muß zwischen den 3
verschiedenen Zugriffsarten unterschieden werden und zwar:
- - Normal Zyklen
- - Burst Zyklen
- - Burst-Inhibit Zyklen
wobei der zeitliche Ablauf für Normal- und Burst-Inhibit-Zyklen sowie den 1. Langwort
Transfer (Initial-Transfer) eines Burst-Zyklus identisch ist. Es werden dafür minimal zwei
(2) Prozessor-Clock-Perioden/N(n) benötigt, während zur Übertragung der Langworte #
2, # 3 und # 4 eines Burst-Transfers minimal eine (1) Prozessor-Clock-Periode/N(b)
notwendig ist.
Die Berechnung der Wait-States bei "READ- und WRITE-Transfers" wird am Beispiel
eines "Static-Read-Write-Memory (SRAM)" durchgeführt.
Der kritische Parameter zur Auswahl der geeigneten Speicherelemente beim Lesezugriff ist
die "Address-Access-Time/T(acc)", die sich bei synchronem "Address-Load/Generate",
abhängig von der Operandengröße wie: "Byte, Word, Long-Word oder Line",
folgendermaßen errechnet:
t(acc/initial) T * [N(n) + w]-t(adi)-t(dsp)
mit:
t(adi) = T + t(cd)
mit:
t(adi) = T + t(cd)
t(acc/burst) T * [N(b) + w]-t(adb)-t(dsp)
mit:
t(adb) = t(cd).
mit:
t(adb) = t(cd).
Mit N(n) = N(b) * 2 ergibt sich:
t(acc/initial) = t(acc/burst) = t(acc).
Da demnach bei allen "READ-Transfers" die benötigte "Address-Access-Time"
unabhängig von der Operandengröße ist, errechnet sich daraus die Anzahl der
einzustellenden "Wait-States" wie folgt:
w {[t(accr) + t(cd) + t(dsp)]: T}-1
w z, . . . -1.
w z, . . . -1.
Weil die Anzahl der "Wait-States" immer ein ganzzahliges Vielfaches der nicht teilbaren
"Prozessor-Takt-Periode" sein muß, folgt:
w = (z+1)-1
w = z.
w = z.
Die Rechnung zeigt daß beim Lesezugriff "Zero-Wait-State" realisierbar ist.
Der kritische Parameter zur Auswahl der geeigneten Speicherelemente beim Schreibzugriff
ist die "Data-Setup-Time/t(dsm)", die sich bei synchronem "Address-Load/Generate",
abhängig von der Operandengröße wie: "Byte, Word, Long-Word oder Line",
folgendermaßen errechnet:
t(dsm/initial) T * [N(n) + w]-t(dv)-t(vi)
mit:
t(vi) = 2T-t(od)
mit:
t(vi) = 2T-t(od)
t(dsm/burst) T * [N(b) + w]-t(dv)-t(vb)
mit:
t(vb) = T-t(od)
mit:
t(vb) = T-t(od)
Mit N(n) = N(b) * 2 ergibt sich:
t(dsm/initial) = t(dsm/burst) = t(dsm).
Da demnach bei allen "WRITE-Transfers" die benötigte "Data-Setup-Time" unabhängig
von der Operandengröße ist, errechnet sich daraus die Anzahl der einzustellenden "Wait-
States" wie folgt:
w [t(dsm) + t(dv) + t(od)]: T
w z, . . .
Weil die Anzahl der "Wait-States" immer ein ganzzahliges Vielfaches der nicht teilbaren
"Prozessor-Takt-Periode" sein muß, folgt:
w = z+1.
Die Rechnung zeigt, daß mit dem Prinzip der "Predelayed"-Erzeugung der "Write-Enable-
Signale" minimal ein (1) "Wait-State" erreicht werden kann.
Bei synchronem "Address-Load / Generate" gilt die zusätzliche Bedingung:
t(su) T-t(av)
Anmerkung: Aus den angegebenen Gleichungen für "READ- und WRITE-Transfers" läßt
sich im umgekehrten Fall, d. h. bei gegebenen "Wait-States" auch die dafür notwendigen
"Speicher-Zugriffszeiten" ableiten.
Begriffserklärungen:
Die angegebenen Zeiten sind den Datenblättern des Mikroprozessors "MC 68040", des "Static-Read-Write-Memory (SRAM)" und der "Anwenderprogrammierbaren Logikelemente (EPLD)" entnommen bzw. zu entnehmen:
Die angegebenen Zeiten sind den Datenblättern des Mikroprozessors "MC 68040", des "Static-Read-Write-Memory (SRAM)" und der "Anwenderprogrammierbaren Logikelemente (EPLD)" entnommen bzw. zu entnehmen:
t(acc) = time address to output delay (SRAM/Read)
t(dsm) = time data-setup to end of write (SRAM/Write)
t(av) = time BCLK-high to address valid (Prozessor/Read-Write) (30 ns/max @ 25 MHz/Small-Buffer)
t(dsp) = time data-in setup to BCLK-high (Prozessor/Read) (5 ns/min @ 25 MHz)
t(dv) = time BCLK-high to data-out valid (Prozessor/Write) (32 ns/max @ 25 MHz/Small-Buffer)
t(adi) = time initial-address load (EPLD)
t(adb) = time burst-address generate (EPLD)
t(od) = macrocell output-delay (EPLD)
t(cd) = time BCLK-high to output-delay (EPLD)
t(su) = setup-time to BCLK-high (EPLD)
N(n) = minimale Anzahl BCLK-Perioden für Initial-Zugriff (zwei ohne Wait-States)
N(b) = minimale Anzahl BCLK-Perioden für Burst-Zugriff (eine ohne Wait-States)
T = Prozessor-Takt-Periode (BCLK-Periode)
z = Element der natürlichen Zahlen einschließlich der Null
w = Anzahl Wait-States.
t(dsm) = time data-setup to end of write (SRAM/Write)
t(av) = time BCLK-high to address valid (Prozessor/Read-Write) (30 ns/max @ 25 MHz/Small-Buffer)
t(dsp) = time data-in setup to BCLK-high (Prozessor/Read) (5 ns/min @ 25 MHz)
t(dv) = time BCLK-high to data-out valid (Prozessor/Write) (32 ns/max @ 25 MHz/Small-Buffer)
t(adi) = time initial-address load (EPLD)
t(adb) = time burst-address generate (EPLD)
t(od) = macrocell output-delay (EPLD)
t(cd) = time BCLK-high to output-delay (EPLD)
t(su) = setup-time to BCLK-high (EPLD)
N(n) = minimale Anzahl BCLK-Perioden für Initial-Zugriff (zwei ohne Wait-States)
N(b) = minimale Anzahl BCLK-Perioden für Burst-Zugriff (eine ohne Wait-States)
T = Prozessor-Takt-Periode (BCLK-Periode)
z = Element der natürlichen Zahlen einschließlich der Null
w = Anzahl Wait-States.
Ergebnis:
Aus der Tatsache, daß die Anzahl der "Wait-States" immer ein ganzzahliges Vielfaches der nicht teilbaren "Prozessor-Takt-Periode" sein muß, kann abgeleitet werden, daß zur Erreichung der optimalen Leistung eines "MC 68040-Prozessorsystems" mit Speicher es günstiger sein kann die Taktfrequenz des Prozessors an die Zugriffszeit des Speichers anzugleichen, wie umgekehrt bei gegebener Taktfrequenz durch Anpassung der Waitstates.
Aus der Tatsache, daß die Anzahl der "Wait-States" immer ein ganzzahliges Vielfaches der nicht teilbaren "Prozessor-Takt-Periode" sein muß, kann abgeleitet werden, daß zur Erreichung der optimalen Leistung eines "MC 68040-Prozessorsystems" mit Speicher es günstiger sein kann die Taktfrequenz des Prozessors an die Zugriffszeit des Speichers anzugleichen, wie umgekehrt bei gegebener Taktfrequenz durch Anpassung der Waitstates.
Programmierbare Logikelemente, wie: PAL′s, PLA′s, FPLA′s, PLD′s, FPGA′s, EPLD′s usw.
verbinden die logistischen Vorteile von "Standard-Logik-Elementen" mit der
architektonischen Flexibilität von sogenannten "Custom-Devices". Diese standardisierten
Elemente erlauben dem Entwickler die elektrische Programmierung von Logikfunktionen,
die den Anforderungen seiner Anwendung entsprechen, wobei die Entwicklung und
Programmierung (Fertigung) "vor Ort" eine Vielzahl von Problemen vermeidet, die bei sog.
"Custom-Application-Specific-Integrated-Circuits (ASIS′s)" auftreten.
Der Schlüssel für diese sog. "Off-the-shelf-ASIC"-Fähigkeit besteht in einer
reprogrammierbaren CMOS-Technologie, die verwendet wird, um diese "Erasable-
Programmable-Logic-Devices (EPLD′s)" herzustellen.
Die EPLD′s können verwendet werden, um vollständige Leiterplatten, die konventionell mit
TTL-, PAL- und FPGA-Elementen bestückt sind, in einem einzigen Baustein zu integrieren.
Für eine Vielzahl derzeitiger Anwendungen erlaubt die Verwendung von EPLD′s ein
schnelleres "Time-to-Market" und darüberhinaus geringere Kosten verglichen mit sog
"Custom-ASIC"-Lösungen.
Für die Realisierung komplexer Logikfunktionen - wie im vorliegenden Fall für die
Entwicklung einer "Zugriffssteuerung von 32-Bit-Hochleistungs-Mikroprozessoren"
kommen Bauelemente der sog. "Multiple-Array-Matrix (MAX)-Architektur" von ALTERA
zum Einsatz. Abhängig von den technischen Anforderungen und der Komplexität des zu
entwickelnden EPLD′s können zwei unterschiedliche MAX-Familien verwendet werden und
zwar:
- - Die "MAX-5000-Familie", welche die erste Generation der MAX-Architektur repräsentiert, erlaubt die Integration bis zu 20 . . . 25 PAL-Elementen bzw. 100 TTL-Funktionen. Dabei sind Systemfrequenzen von 66 MHz @ 15 ns Pin-to-Pin-Delay erreichbar.
- - Die zweite Generation der MAX-Architektur, die "MAX-7000-Familie", welche die Integration von maximal 10 000 verfügbaren Gattern und Systemfrequenzen bis 100 MHz @ 10 ns Pin-to-Pin-Delay erlaubt, ermöglicht die Verwirklichung noch komplexerer Logikfunktionen.
Um ein Maximum an Flexibilität zu erreichen und um die Integration beliebiger
Logikfunktionen zu ermöglichen ist die MAX-5000/MAX-7000-Familie mit 5 Basis-
Architekturmerkmalen ausgerüstet und zwar:
- 1. Macrocells (MC)
- 2. Logic-Array-Blocks (LAB′s)
- 3. Shared and Parallel (nur MAX-7000) Logic-Expander
- 4. Programmable-Interconnect-Array (PIA)
- 5. I/O-Control-Blocks.
Funktion und Aufbau dieser Basis-Elemente werden nachstehend einzeln beschrieben.
Das fundamentale Architektur-Merkmal eines ALTERA-EPLD′s ist die "Macrozelle
(MC)", mit der Fähigkeit sowohl die Implementierung von sequentiellen als auch von
kombinatorischen Logikfunktionen zu erlauben. Die MC setzt sich ihrerseits aus 3 Teilen
zusammen:
* Einem "Logic-Array (LA)", dessen Struktur sich aus der Tatsache ergibt, daß jeder
Bool′sche Ausdruck, gleichgültig wie komplex er ist, durch eine Summe von
Produkttermen dargestellt werden kann. Das LA dient zur Implementierung von
kombinatorischen Logikfunktionen, wobei es sich selbst wiederum aus einem
programmierbaren AND- und einem fixen OR-Array zusammensetzt. Das AND-Array
kann mit folgenden Eingangs-Signalquellen verknüpft werden:
- - den Takt-Eingängen,
- - den speziellen (dedicated) Eingängen,
- - mit den Rückkopplungspfaden von Macrozellen und
- - den Rückkopplungspfaden der I/O-Pins.
Dabei können in allen Fällen sowohl die direkten als auch die invertierten Signale
aufgeschaltet werden. Das LA besteht demnach aus mehreren Produkt-Termen, die
über eine ODER-Funktion miteinander verbunden sind, wobei die Anzahl der
Produkt-Terme bei den verschiedenen MAX-Familien unterschiedlich ist und zwar:
- - drei (3) Produkt-Terme bei MAX-5000
- - fünf (5) Produkt-Terme bei MAX-7000.
Der Ausgang der ODER-Funktion ist mit einem Eingang eines XOR-Gates
verbunden, während der zweite Eingang des XOR-Gates mit einem weiteren Produkt-
Term verknüpft ist und somit durch Invertierung des Ausgangs der ODER-Funktion
die Implementierung von sog. "Aktive-High" oder "Aktive-Low" Logikfunktionen
ermöglicht. Dieses XOR-Gate ist vorgesehen, um komplexe arithmetische
Logikfunktionen zu realisieren und/oder um die Anzahl der Produkt-Terme mittels
der sog. "De Morgan Inversion" zu reduzieren. Der Ausgang des XOR-Gates ist mit
dem Eingang eines programmierbaren Registers verbunden oder umgehen dieses, mit
dem Zweck reine kombinatorische Logikfunktionen zu verwirklichen.
* Ein weiteres Merkmal der Makrozellen stellen die "programmierbaren Register" mit
wählbaren "D-, T-, JK- oder SR-Eigenschaften" dar, wobei die Register-Funktion,
falls nicht benötigt, auch umgangen werden kann. Die Register verfügen zudem auch
über die Möglichkeit der asynchronen Preset- und Clear-Steuerung, um z. B. spezielle
TTL-Makrofunktionen emulieren zu können. Darüberhinaus können diese Flip-Flop′s
von verschiedenen Signalquellen getaktet werden, wie:
- - Beim sog. "Array-Clock (asynchron)" kann das Takten des Registers von einem
beliebigen Dedicated-Input oder einem I/O-Pin oder einer beliebigen internen
Logikfunktion (Produktterm) erfolgen. Bei diesem Taktmodus ist zudem die aktive
Taktflanke wählbar und darüberhinaus die Möglichkeit der Taktsteuerung wie:
"Gated-Clock" oder "Clock-Enable" gegeben. - - Beim sog. "Global-Clock (synchron)" werden die Flip-Flop′s mit einem speziellen "Dedicated-Clock-Signal" angesteuert, wobei diese direkte Verbindung verbesserte Verzögerungszeiten bezüglich "Clock-to-Output-Time" liefert.
- - Die MAX-7000-Familie bietet zudem die Möglichkeit einer speziellen "Clock-Enable- Funktion". Dabei werden die Register mit dem "Global-Clock" getaktet und über einen Produktterm aktiviert. Der Vorteil dabei ist, daß jedes Flip-Flop, trotz Verwendung des günstigeren "Global-Clocks", individuell gesteuert werden kann.
* Das letzte Merkmal der Makrozellen stellen die "programmierbaren Ein-/Ausgänge"
dar, wobei der typische I/O-Block eines EPLD′s aus einem "Tri-State-Buffer"
besteht, der über einen eigenen Produkt-Term angesteuert und dessen Ausgang mit
einem I/O-Pin verbunden ist. Diese I/O-Pin′s können konfiguriert werden als:
- - "Dedicated Outputs",
- - zusätzliche "Dedicated Inputs" oder
- - bidirektionale Ein-/Ausgänge
Die MAX-Architektur basiert auf dem Konzept mehrere kleine, flexible mit großer
Leistung versehene Logik-Module sogenannte "Logic-Array-Block′s (LAB′s)" über
ein spezielles programmierbares Netzwerk ein sog. "Programmable-Interconnect-
Array (PIA)" miteinander zu verknüpfen.
Jedes LAB verfügt über 16 modulare Logik-Blöcke sog. "Macro-Cells (MC)" und
mehrere sog. "Shared-Logic-Expander", deren Anzahl, abhängig von der MAX-
Familie, unterschiedlich ist und zwar:
- - Max-5000 mit 32 "Shared-Logic-Expander" pro LAB
- - Max-7000 mit 16 "Shared-Logic-Expander" pro LAB.
Die einzelnen LAB′s sind über spezielle Eingänge an die PIA gekoppelt, wobei die
Anzahl dieser Eingänge im allgemeinen ausreicht, um eine Vielzahl von
Logikfunktionen zu realisieren. Sollten jedoch mehr Eingangssignale benötigt werden,
um z. B. sehr breite Datenpfade zu realisieren, so besteht die Möglichkeit, auf Kosten
des Laufzeitverhaltens jedoch, mehrere LAB′s parallel zu schalten. Die Anzahl der
Signaleingänge von der PIA in die LAB′s ist ebenfalls von der verwendeten MAX-
Familie abhängig. So stehen beim Einsatz von:
- - MAX-5000 maximal 24 Signaleingänge und bei
- - MAX-7000 maximal 20 Signaleingänge zur Verfügung.
Die meisten Logikfunktionen können mit den fixen Basis-Produkttermen der
Makrozellen implementiert werden. Manche Logikfunktionen sind jedoch
aufwendiger, wie z. B. komplexe State-Machines und benötigen demnach mehr
Produktterme. Anstatt nun weitere Makrozellen als Hilfsquelle für diese zusätzlich
benötigte Logik zu "opfern", werden die sogenannten "Shared Expander" verwendet,
um zusätzliche Produktterme direkt den Makrozellen zuzuordnen. Diese Logik-
Expander in jedem LAB können als Menge unabhängiger, einfacher Produktterme
betrachtet werden, deren Ausgang ins "Logic-Array" rückgekoppelt ist, wobei jeder
einzelne "Shared Expander" sowohl von einer beliebigen als auch von allen
Makrozellen eines LAB′s verwendet werden kann. Damit ermöglicht die Verwendung
der Expander eine PLA-ähnliche Flexibilität dadurch, daß diese jeder Makrozelle
eines LAB′s zugeordnet werden können. Zudem besteht die Möglichkeit die "Shared-
Expander" untereinander zu verbinden, so daß z. B. durch Kreuzkopplung derselben
zusätzliche "Flip-Flops" oder "Latches" aufgebaut werden können.
Ein spezielles Charakteristikum der "MAX-7000-Familie" stellen die sog. "Parallel-
Logic-Expander" dar, welche die zusätzliche Möglichkeit eröffnen, nicht verwendete
Produktterme einer Makrozelle auf andere Makrozellen des gleichen LAB′s zu
übertragen. Der Vorteil dabei sind die wesentlich geringeren Verzögerungszeiten
gegenüber den "Shared-Expandern". Mit diesem Hilfsmittel "Shared und Parallel
Expander" sind bis zu 32 Produktterme pro Makrozelle realisierbar.
Anmerkung: Die Verwendung der Expander insbesondere der "Shared Expander" ist
jedoch mit einem nicht zu vernachlässigenden Nachteil verbunden, weil die damit
zusammenhängende zusätzliche Signalverzögerung die Bandbreite, d. h. die maximal
erreichbare Taktfrequenz, der mit Expandern implementierten Logikfunktion
reduziert.
Bei MAX-Elementen höherer Komplexität, die sich aus mehreren LAB′s
zusammensetzen, werden diese über ein Netzwerk, ein sog. "Programmable-
Interconnect-Array (PIA)", miteinander verbunden. Die PIA in der lediglich Signale
geführt werden, die zur Implementierung von Logikfunktionen in den LAB′s
Verwendung finden, besteht aus den Rückkopplungssignalen der Makrozellen und der
I/O-Pin′s sowie den Signalen der "Dedicated Inputs".
Im Gegensatz zur Kanal-Verdrahtung von "Gate-Arrays", bei denen die
Signalverzögerungen dieser Verdrahtungsebene variabel und kanalabhängig sind,
zeichnet sich die PIA durch ein fixes Signal-Verzögerungsverhalten aus und verfügt
darüberhinaus über keinerlei Asymmetrien (Skew) zwischen den einzelnen Signalen.
Dies bedeutet, daß das Zeitverhalten der EPLD′s einfach berechenbar und demnach
vorhersagbar ist.
Jedes LAB ist mit einem sog. "I/O-Control-Block" ausgerüstet, der aus einer
anwenderkonfigurierbaren Ein-/Ausgangs-Kontrollfunktion für jeden I/O-Pin
besteht. Der "I/O-Control-Block" ist eingangsmäßig mit dem "Macrocell-Array"
verbunden und ausgangsmäßig über "Tri-State-Buffer" mit den I/O-Pins, wobei die
Ansteuerung der Tri-State-Buffer mittels spezieller Produktterme der Makrozelle
vorgenommen werden kann.
Ein weiteres Charakteristikum der MAX-Architektur ist das sog. "Duale Feedback"
d. h. zweifache Rückkopplungsverbindung vor und nach dem Tri-State-Buffer und
zwar für jeden I/O-Pin. Dies bedeutet, daß im Fall von "Multi-LAB-Elementen" die
I/O-Pins unmittelbar mit der PIA verbunden sind. Die Tri-State-Buffer sorgen
demnach für eine Entkopplung der I/O-Pin von den Makrozellen, mit dem Zweck
alle Register innerhalb der LAB′s als sog. "Buried-Register" betreiben zu können. Die
I/O-Pins können verschieden konfiguriert werden und zwar als: Eingänge, Ausgänge
oder bidirektionale Ein-/Ausgänge.
Aufbau und Wirkungsweise einer Zugriffssteuerung für ein "MOTOROLA MC 68040
Mikroprozessorsystem", realisiert unter Verwendung von anwenderprogrammierbaren
Logikelementen, ist in den Abb. 1 bis 9 dargestellt bzw. in den Programmlistings 1
bis 2 beschrieben und wird nachfolgend näher erläutert.
Die einzelnen Abbildungen zeigen:
Fig. 1 das prinzipielle Blockschaltbild des Rechnermoduls
Fig. 2 Blockschaltbild der Zugriffssteuerung "BUS-CONTROL"
Fig. 3 "State-Diagramm" des Steuerwerks "SRAM-Access-Control"
für Waitstates n = 1
Fig. 4 "State-Diagramm" des Steuerwerks "SRAM-Access-Control"
für Waitstates n = 0
Fig. 5 Zeitlicher Ablauf von READ-Zugriffen auf das SRAM bei "Normal- und Burst-
Transfers" für Waitstates n = 1
Fig. 6 Zeitlicher Ablauf von WRITE-Zugriffen auf das SRAM bei "Normal- und
Burst-Transfers" für Waitstates n = 1.
Liste 1 Den "Text-Design-File" der Bus-Steuerung "BUSCNTRLTDF".
Liste 2 Den "Text-Design-File" der SRAM-Steuerung "RAMCNTRLTDF".
Das in Fig. 1 dargestellte prinzipielle Blockschaltbild dieses Ausführungsbeispiels ist in
folgende "Funktions-Blöcke" unterteilt:
- - Mikroprozessor "MOTOROLA MC 68040"
- - Zugriffssteuerung BUS-CONTROL
- - Onboard-Speicher mit EPROM, EEPROM und SRAM
- - Onboard-Peripherie mit Timer, Interrupt-Controller, UART und GPIB
- - Systeminterface IMBUS-Master
- - Clock-Generation mit Oszillator und Clock-Distribution-IC
- - Power-On-Initialisierung
deren Aufbau und Funktionsweise nachstehend einzeln beschrieben werden.
Der interne Speicher des Rechnermoduls besteht aus 3 getrennten Blöcken, mit:
* System-Speicher
Organisation: max 128 kW × 32 Bit.
Technologie: permanent (PROM, EPROM).
Dieser Speicher wird zur Systeminitialisierung und zur Unterstützung von Betriebssystemfunktionen verwendet.
Organisation: max 128 kW × 32 Bit.
Technologie: permanent (PROM, EPROM).
Dieser Speicher wird zur Systeminitialisierung und zur Unterstützung von Betriebssystemfunktionen verwendet.
* Progamm-Speicher
Organisation: max 128 kW × 32 Bit.
Technologie: nicht flüchtig, onboard-programmierbar (EEPROM oder FLASH)
Dieser Speicher dient zur Unterbringung des Anwenderprogramms
Technologie: nicht flüchtig, onboard-programmierbar (EEPROM oder FLASH)
Dieser Speicher dient zur Unterbringung des Anwenderprogramms
* Speicher für Daten und Operanden
Organisation: max 128 kW × 32 Bit.
Technologie: Statischer Schreib/Lese-Speicher (SRAM).
Dieser Speicher dient zu Unterbringung von Variablen und Programmstacks sowie zur Entwicklung der Anwenderprogramme (Debugging)
Organisation: max 128 kW × 32 Bit.
Technologie: Statischer Schreib/Lese-Speicher (SRAM).
Dieser Speicher dient zu Unterbringung von Variablen und Programmstacks sowie zur Entwicklung der Anwenderprogramme (Debugging)
Die Onboard-Peripherie wird mit dem "Multi-Function-Peripheral-Baustein MC 68901"
realisiert, der folgende Funktionsgruppen beinhaltet:
- - "I/O-Interface" zur Ankopplung an den Bus des Mikroprozessors
- - 4 Stück "8-Bit-Timer" wobei es sich bei Zweien um sogenannte "Multi-Mode-Timer" handelt
- - 1 Kanal "Full Duplex Synchronous/Asynchronous-Communication-Interface (USART)"
- - 16 Kanal "Interrupt-Controller" mit individueller Quellen-Freigabe und -Maskierung
- - 8 Kanal "General-Purpose-I/O-Port (GPIB)" mit Interrupt-Fähigkeit
Das integrierte Bus-Interface erlaubt die direkte Ankopplung des "Multi-Function-
Peripheral-Bausteins (MFP)" an Mikroprozessoren der Familie MC 68xxx, wobei zur
Unterstützung der asynchnonen Bus-Struktur spezielle Handshake-Signale zur Verfügung
gestellt werden.
Die Funktion des MFP kann mittels eines direkt adressierbaren Registersatzes (# 24) für
viele Anwendungen angepaßt werden.
Der Rechnermodul dient als Quelle der Echtzeit-Synchronisationssignale für alle am
System-Inter-face (IMBUS-Master) angeschlossenen Komponenten. Zur Durchführung
dieser Funktionalität sind die "Onboard-Timer" vorgesehen, welche die dafür benötigten
Zeitinterrupts an den Prozessor liefern, wobei deren Periodendauer und relative Phasenlage
zueinander programmierbar ist. Die Timer selbst sind nach dem Prinzip Prescaler/Counter
aufgebaut.
Diese Funktion des MFP beinhaltet einen einkanaligen, full-duplex "Universal-Synchronous
/Asynchronous-Receiver/Transmitter (USART)" mit doppelt gepuffertem Receiver/
Transmitter.
Zur besseren softwaremäßigen Steuerung des Datenverkehrs sind für Receiver und
Transmitter eigene getrennte Interruptkanäle vorgesehen.
Bei dieser Anwendung ist das serielle Interface für den Datenaustausch zwischen dem
Rechner-Modul und einem externen Daten-Terminal bzw. Personal-Computer (PC)
vorgesehen.
Botschaftcharakter: asynchron
Botschaftsformat: 1 Startbit - 8 Datenbits - 1 Stopbit
Transferrate: programmierbar (< 4800 Baud)
Signalcharakteristik: differentiell entsprechend EIA 422.
Botschaftsformat: 1 Startbit - 8 Datenbits - 1 Stopbit
Transferrate: programmierbar (< 4800 Baud)
Signalcharakteristik: differentiell entsprechend EIA 422.
Der "Interrupt-Controller" ist in der Lage 16 verschiedene Interrupts zu verarbeiten, und
zwar:
- - 8 interne von den Timern und der seriellen Schnittstelle, sowie
- - 8 externe vom Systeminterface, wobei die Priorität der Interrupts per Firmware programmierbar ist
An dieser Schnittstelle werden 8 Anschlüsse bereitgestellt, die per Software individuell als
Eingänge oder Ausgänge konfiguriert werden können. Außerdem können diese Anschlüsse
optional Interrupts erzeugen, wobei deren aktive Flanke sowie die Priorität über den
internen Interrupt-Controller bestimmt werden kann.
In unserem Fall wird dieser Port dazu verwendet, um die Interrupts der am IMBUS
angeschlossenen Systemkomponenten (IMBUS-Slaves) zum Prozessor zu übertragen.
Die "System-Schnittstelle" besteht aus den Funktionsgruppen:
- - Zugriffssteuerung "IMBUS-CONTROL"
- - "IMBUS Line-Driver/Receiver" zur Ankopplung an den differentiellen EIA 485 Bus.
Die Aufgabe der Zugriffssteuerung "IMBUS-CONTROL" besteht darin, zum einen die
IMBUS-Botschaften zu den angeschlossenen Systemkomponenten (IMBUS-Slaves)
abzuwickeln, sowie zum anderen durch Zusammenwirken mit der Zugriffssteuerung "BUS-
CONTROL" die Synchronisation dieses Datenverkehrs mit dem Busprotokoll des
Mikroprozessors sicherzustellen.
Demzufolge wird der Datenverkehr in 2 Stufen durchgeführt und zwar:
* 1. Stufe: Datenverkehr zwischen Mikroprozessor ↔ IMBUS-Master, der von der
Zugriffssteuerung "BUS-CONTROL" durchgeführt wird, wobei die verwendeten
Ausgangssignale des Prozessors mit denen der Zugriffsteuerung für dem Speicher
identisch sind.
* 2. Stufe: Datenverkehr zwischen IMBUS-Master ↔ Systemkomponenten, welcher
von der Zugriffssteuerung "IMBUS-CONTROL" autonom durchgeführt wird.
Aus programmtechnischer Sicht wird der Datenverkehr zwischen dem Rechnermodul und
den angeschlossenen Systemkomponenten in einer speicherabbildenden Form (Memory-
Mapped) durchgeführt. Bei der Art der Durchführung der Zugriffe auf das Systeminterface
wird zwischen Lesen und Schreiben unterschieden und zwar:
Im Normalfall werden bei Schreib-Zugriffen des Mikroprozessors auf das Systeminterface
keine zusätzlichen Wartezyklen benötigt, weil die IMBUS-Daten und -Adressen in der
IMBUS-CONTROL zwischengespeichert werden und der Datenverkehr anschließend
autonom von derselben durchgeführt wird. Wartezyklen werden erst dann eingefügt, wenn
ein Zugriff auf das Systeminterface erfolgt, während der vorhergehende noch nicht
abgeschlossen ist.
Bei Lese-Zugriffen auf das Systeminterface sind zwei Möglichkeiten vorgesehen und zwar:
* "Operationeller Betrieb".
Dabei entspricht die Steuerung des Ablaufs im wesentlichen dem eines Schreibzugriffs, d. h. es werden im Normalfall keine zusätzlichen Wartezyklen eingefügt. Dies bedeutet jedoch, daß die ausgelesenen Daten beim ersten Lesezyklus ungültig sind, da der IMBUS-Transfer zum Zeitpunkt des Lesens noch nicht abgeschlossen ist. Die gültigen Daten der angesprochenen Systemkomponente (SLAVE) stehen erst nach Ablauf des IMBUS-Transfers, der von der Zugriffssteuerung IMBUS-CONTROL per Interrupt oder Flag gemeldet wird, zur Verfügung und können dann mit einem zweiten Lese-Zugriff ausgelesen werden.
Dabei entspricht die Steuerung des Ablaufs im wesentlichen dem eines Schreibzugriffs, d. h. es werden im Normalfall keine zusätzlichen Wartezyklen eingefügt. Dies bedeutet jedoch, daß die ausgelesenen Daten beim ersten Lesezyklus ungültig sind, da der IMBUS-Transfer zum Zeitpunkt des Lesens noch nicht abgeschlossen ist. Die gültigen Daten der angesprochenen Systemkomponente (SLAVE) stehen erst nach Ablauf des IMBUS-Transfers, der von der Zugriffssteuerung IMBUS-CONTROL per Interrupt oder Flag gemeldet wird, zur Verfügung und können dann mit einem zweiten Lese-Zugriff ausgelesen werden.
* "Monitor Betrieb"
In diesem Fall wird ein Lese-Zugriff erst nach Ablauf des IMBUS-Transfers abgeschlossen, so daß die dabei ausgelesenen Daten in jedem Fall gültig sind. Für die Steuerung des Ablauf bedeutet dies, daß von der Zugriffssteuerung BUS-CONTROL solange Wartezyklen einzubauen sind, bis der Abschluß des IMBUS-Transfers erkannt wird.
In diesem Fall wird ein Lese-Zugriff erst nach Ablauf des IMBUS-Transfers abgeschlossen, so daß die dabei ausgelesenen Daten in jedem Fall gültig sind. Für die Steuerung des Ablauf bedeutet dies, daß von der Zugriffssteuerung BUS-CONTROL solange Wartezyklen einzubauen sind, bis der Abschluß des IMBUS-Transfers erkannt wird.
Takterzeugung und -verteilung sind bei derzeitigen RISC und CISC-
Hochleistungsprozessorsystemen mit Frequenzen über 50 MHz von zunehmender
Bedeutung, da Zeitverzögerungen und Ungenauigkeiten bei der Taktsignalverteilung bei
hohen Frequenzen schnell zu kritischen Faktoren für die Systemleistung werden können.
Diese strengen Anforderungen an die Taktquelle bedingt die Verwendung von speziellen
sogenannten "Low-Clock-Skew" Takt-Versorgungs- bzw. Verteilungsbauteilen, wobei mit
"Clock-Skew" die Zeitdifferenz zwischen zwei oder mehreren simultan sich ändernden
Signalen gemeint ist.
Die Notwendigkeit dieser Forderung ist dadurch begründet, daß die Taktversorgung so
ausgelegt sein soll, damit immer ein Maximum der Takt-Periode zur Verfügung steht. Dies
bedeutet, daß zusätzliche Verzögerungen zu vermeiden sind, da eine damit verbundene
Reduzierung der effektiven Takt-Periode bedingt, daß weniger Zeit für die zu erfüllende
Aufgabe, wie z. B. Zugriff auf den Speicher oder Peripherie, zur Verfügung steht.
Da demnach die Asymmetrien in der Taktversorgung eine der Hauptursachen für die
Begrenzung der Systemfrequenz darstellt, ist die Reduzierung des sogenannten "Clock-
Skew′s" ein einfaches Mittel um die Systemleistung zu erhöhen, ohne komplizierte
Architekturen oder schnelle und teuere Logikelemente einsetzen zu müssen.
Bei den dafür erforderlichen Takt-Versorgungsbauteilen sind 3 Signalparameter von
Bedeutung:
- - "Output-to-Output-Skew"
- Dieser Parameter spezifiziert die Differenz zwischen der kürzesten und der längsten Verzögerungszeit von zwei oder mehreren Taktausgängen untereinander. Im Idealfall ist der Wert Null anzustreben.
- - "Duty-Cycle-Skew"
- Dieses Wert spezifiziert die Zeitdifferenz zwischen den verschiedenen Flanken eines einzelnen Taktausgangs. Im Idealfall sind 50% Puls/Pausenverhältnis wünschenswert.
- - "Part-to-Part-Skew"
- Dieses Charakteristikum spezifiziert die Abweichung zwischen den Verzögerungszeiten gleichartiger Signale bei verschiedenen Bauelementen des gleichen Typs. Auch hier ist im Idealfall der Wert Null anzuvisieren.
Um die Anforderungen für ein "MOTOROLA MC 68040-System" mit Systemfrequenzen
zwischen 25/50 MHz bzw. 33/66 MHz bezüglich Taktasymmetrien, wie:
- - Output-to-Output-Skew
- - Duty-Cycle-Skew
- - Part-to-Part-Skew
zu genügen, wird die Taktversorgung mit folgenden Bauteilen realisiert:
- - zur "Clock-Generation" wurde ein 100 bzw. 132 MHz ECL-Oszillator vom Typ:
K1149BA von Champion-Technology verwendet, während für - - die "Clock-Distribution" ein ECL-Clock-Driver vom Typ: MC10H642 von MOTOROLA eingesetzt wurde.
Die Technologie: ECL wurde gewählt, weil diese, aufgrund ihrer geringen
Verzögerungszeiten, am besten geeignet ist, um die Forderung nach geringem "Clock-
Skew" zu erfüllen.
Zur Initialisierung des Moduls nach dem Einschalten wird ein "Power-On-Reset" Signal
erzeugt das bei Erreichen eines definierten Spannungspegels der Stromversorgung für eine
ebenfalls definierte Zeitdauer aktiv wird.
Der Funktionsblock Zugriffssteuerung wird mit einem anwenderprogrammierbaren
Logikelement vom Typ ALTERA EPM 5130 bzw. EPM 7192 realisiert und dient, durch
Bereitstellung der dafür benötigten Steuersignale, zur Durchführung der vom Prozessor
initiierten Schreib/Lese-Operationen auf die Subsysteme des Rechnermoduls, wie:
- - Onboard-Speicher
- - Onboard-Peripherie
- - Systeminterface.
Entsprechend dieser Aufgabenstellung ist die Zugriffssteuerung in einzelne
Funktionsgruppen unterteilt und zwar:
- - SRAM-Control
- - EPROM-Control
- - EEPROM-Control
- - Peripherie-Access-Control
- - IMBUS-Access-Control
- - Acknowledge-Control
- - Access-Error-Control.
Der Aufbau der Zugriffssteuerung ist in Fig. 2 "Blockschaltbild der Zugriffssteuerung
BUS-CONTROL" dargestellt, wobei ihr Aufbau und Aufgabe sowie Wirkungsweise am
Beispiel der signifikanten Funktionsgruppen und "SRAM-Control", "Acknowledge-
Control" und "Access-Error-Control" nachstehend beschrieben wird.
Die Zugriffssteuerung für das SRAM besteht aus den 3 alternativ parallel arbeitenden State-
Machines "SRAM-Access-Control", "SRAM-Read-Control" und "SRAM-Write-Control",
die jeweils für verschiedene Aufgaben zuständig sind und zwar:
Das Steuerwerk "SRAM-Access-Control" wird lediglich mit den signifikanten "Select-
Adressen A31, A21, A20 und A19" sowie den benötigten "Transfer-Attributen" beschaltet
und ermöglicht damit Zugriffszyklen mit ausreichend geringen Verzögerungszeiten zur
Realisierung "Zero-Waitstate". Dieses Steuerwerk ist für verschiedene Aufgaben zuständig
und zwar:
- - Ist die State-Machine "SRAM-Access-Control" einmal für die Erzeugung des "Word- Counts" zur Durchführung sogenannter Burst-Transfers sowie die Einstellung der "Wait-States" für Schreib/Lese-Zugriffe auf das SRAM verantwortlich, wobei "Word-Count" und "Wait-States" sowohl hier als auch von den beiden Steuerwerken "SRAM-Read/Write-Control" zur zeitlichen Steuerung der Zugriffe verwendet werden.
- - Zum anderen ist das Steuerwerk "SRAM-Access-Control" dafür vorgesehen, um dem Prozessor den Abschluß eines legalen SRAM-Zugriffszyklus mittels des dafür vorgesehenen individuellen Quittungssignals "SRAM-Transfer-Acknowledge (sram ta)" anzuzeigen. Um nun bei nicht erlaubten Zugriffen die Übertragung dieses Quittungssignals zum Prozessor zu verhindern, wird das individuelle Quittungssignal "SRAM-Transfer-Acknowledge (sram-ta)" eine Taktperiode vor dem Abschluß des SRAM-Zugriffszyklus erzeugt. Das originale Quittungssignal "Transfer-Acknowledge (!TA)", das dem Prozessor das Ende des SRAM-Zugriffs signalisieren soll, wird dann vom Signal "SRAM-Transfer-Acknowledge (sram-ta)" abgeleitet und zwar mittels "UND-mäßiger" Verknüpfung mit dem Enable-Signal "Valid-Memory-Segment" und anschließender Nachsynchronisierung mit dem "Taktsignal BCLK".
Aus der Tatsache, daß das Steuerwerk "SRAM-Access-Control" lediglich mit den
signifikanten "Select-Adressen A31, A21, A20 und A19" beschaltet ist, folgt aber auch, daß
bei diesem Prinzip unzulässige Zugriffe gestartet werden können und zwar:
- - bei Zugriffen auf nicht voll ausgebaute Segmentbereiche (Restsegment) sowie
- - bei Zugriffen im nicht verwendeten oberen Adreßbereich bei Segmentredundanz.
Diese Art von unzulässigen Zugriffen werden als sogenannte "No-Operation-Zugriffe"
durchgeführt, wobei damit verbundene mögliche Fehlfunktionen verhindert werden, indem:
- - das Quittungssignal "Transfer-Acknowledge (!TA)" bei solchen unzulässigen Zugriffen unterdrückt wird (siehe auch Abschnitt 8.3.6.1.2.1) sowie statt dessen
- - das Qittungssignal "Transfer-Error-Acknowledge (!TEA)" erzeugt wird (siehe auch Abschnitt 8.3.6.1.3.1) und weiterhin
- - bei sogenannten "Burst-Zugriffen" die State-Machine "SRAM-Access-Control" nach dem ersten Langwort-Zugriff gestoppt und in den "Wait-State (bereit für den nächsten Zugriff)" gebracht wird.
Das Steuerwerk "SRAM-Read-Control" wird verwendet, um gemeinsam mit dem
Steuerwerk "SRAM-Access-Control" Lese-Zugriffe auf das SRAM durchzuführen, wobei
der zeitliche Ablauf bezüglich der einzustellenden Wait-States bzw. des Word-Counts vom
Steuerwerk "Memory-Access-Control" vorgegeben wird.
Der Zugriff auf das SRAM wird gesteuert durch Bereitstellung der dafür notwendigen
diskreten Steuersignale "SRAM-Output-Enable (!oe-ram)" und "SRAM-Chip-Select (!cs-
ram)" sowie der "Langwort-Adressen (A3, A2)" für Burst-Lese-Zugriffe, wobei das Signal
"SRAM-Output-Enable" synchron von der State-Machine selbst mittels eines speziell dafür
vorgesehenen "State-Bits (sram-oe)" erzeugt wird und somit durch eine genaue zeitliche
Positionierung innerhalb des Zugriffszyklus eine Anpassung an die Dynamik des
Datentransfers zum Prozessor erlaubt.
Dieses Prinzip der individuellen direkten Erzeugung der Signale "SRAM-Output-Enable"
und auch "SRAM-Write-Enable" durch die jeweiligen Steuerwerke "SRAM-Read-Control"
bzw. "SRAM-Write-Control" vermeidet inherent das Problem der sogenannten "Bus-
Contention" bei sequentiellen Lese- oder auch Schreib/Lese-Zugriffen auf die
verschiedenen Subsysteme, da bei jedem Bus-Zugriff des Prozessors immer nur ein
Steuerwerk aktiviert wird. Dies bedeutet, daß keine zusätzliche Logik zu Verriegelung der
einzelnen "Memory-Output-Enable" bzw. "Memory-Write-Enable" untereinander benötigt
wird.
Die Tatsache, daß das Steuerwerk "SRAM-Read-Control" genauso und mit dem gleichen
Grund wie die beiden Steuerwerke "SRAM-Access-Control" und "SRAM-Write-Control"
lediglich mit den signifikanten "Selectadressen A31, A21, A20 und A19" sowie den
benötigten "Transfer-Attributen" beschaltet ist, bedeutet aber auch, daß bei diesem Prinzip
unzulässige Lese-Zugriffe gestartet werden können, die, wie schon im Absatz "(8.3.6.1.1.1)
Steuerwerk SRAM-Access-Control" beschrieben, als sogenannte "No-Operation -Zugriffe"
durchgeführt werden.
Damit verbundene mögliche Fehlfunktionen werden verhindert, indem:
- - bei Burst-Lese-Zugriffen die State-Machine "SRAM-Read-Control" nach dem "Initial-Zugriff" gestoppt und in den "Wait-State (bereit für den nächsten Zugriff)" gebracht und
- - das Signal "SRAM-Output-Enable (!oe-ram)" ebenfalls nach dem "Initial-Zugriff" eines "Burst-Read-Transfers" rückgesetzt wird.
Die State-Machine "SRAM-Write-Control" steuert gemeinsam mit dem Steuerwerk
"SRAM-Access-Control" Schreibzugriffe auf das SRAM durch Bereitstellung der diskreten
Steuersignale "SRAM-Write-Enable (!we-ram)" und "SRAM-Chip-Select (!cs-ram)" sowie
der "Langwort-Adressen (A3, A2)" für Burst-Schreib-Zugriffe.
Das Signal "SRAM-Write-Enable" wird hier ebenfalls synchron von der State-Machine
selbst mittels eines speziellen "State-Bits (sram-we)" erzeugt, wobei diese Art der
Generierung eine exakte zeitliche Positionierung des Schreib-Impulses innerhalb des
Zugriffszyklus erlaubt. Damit wird eine ausreichende Anpassung an die dynamische
Busspezifikation des Prozessors für die Datenausgabe ermöglicht.
Auch beim Steuerwerk "SRAM-Write-Control" gilt, genauso wie bei den Steuerwerken
"SRAM-Access-Control" und "SRAM-Read-Control", daß aufgrund der Beschaltung mit
den signifikanten "Selectadressen A31, A21, A20 und A19" unzulässige Schreib-Zugriffe
gestartet werden können, die wie schon in den beiden vorhergehenden Absätzen
beschrieben, als sogenannte "No-Operation-Zugriffe" durchgeführt werden.
Damit verbundene mögliche Fehlfunktionen werden verhindert, indem:
- - Veränderungen im Speicher bei Schreibzugriffen verhindert werden, indem die Schreibimpulse von der State-Machine "SRAM-Write-Control" eine Taktperiode vor deren eigentlicher Verwendung erzeugt werden und somit durch deren Verknüpfung (UND-Funktion) mit dem Signal "SRAM-Segment (ram-seg)" die Erzeugung der Signale "SRAM-Write-Enable (!we-ram)" unterdrückt werden kann und außerdem
- - bei Burst-Schreib-Zugriffen die State-Machine "SRAM-Write-Control" nach dem ersten Langwort-Zugriff gestoppt und in den "Wait-State (bereit für den nächsten Zugriff)" gebracht wird.
Die Funktionsgruppe "Acknowledge-Control" ist dafür vorgesehen, um dem Prozessor den
Abschluß von legalen und illegalen Speicher-Zugriffszyklen mittels der dafür vorgesehenen
Quittungssignale "!TA, !TBI, !TCI oder !TEA" anzuzeigen. Dabei ist erforderlich, daß die
Quittungssignale "Transfer-Acknowledge (TA)" und "Transfer-Error-Acknowledge
(!TEA)" alternativ erzeugt werden müssen weil:
- - "Transfer-Acknowledge (!TA)" nur zum Quittieren von gültigen Zugriffen, wogegen
- - "Transfer-Error-Acknowledge (!TEA)" lediglich zur Fehlermeldung bei unzulässigen Zugriffen verwendet werden darf.
Daraus ergibt sich, daß eine vollständige "32-Bit-Adreßdekodierung" zur Unterscheidung
"legale/nicht legale Zugriffe" zwingend erforderlich ist. Wegen der zum einen
unterschiedlichen Signallaufzeiten bei der Zuführung der Adressen in das EPLD, wie:
- - "Selectadressen A31, A21, A20, A19", sowie
- - "Wort/Byte-Adressen A3 . . . A0" sowie
- - "Transfer-Attribute" über Dedicated Inputs und
- - restliche "Adressen A30 . . . A22, A18 . . . A4" über I/O-Pins
sowie zum anderen aufgrund der speziellen Architekturmerkmale des EPLD′s, wie:
begrenzte Anzahl (24) von Eingängen vom "Programmable-Interconnect-Array (PIA)" in die "Logic-Array-Blocks (LAB′s)", muß bei der Dekodierung der Adressen und der Transfer-Attribute auf diese Probleme Rücksicht genommen werden.
begrenzte Anzahl (24) von Eingängen vom "Programmable-Interconnect-Array (PIA)" in die "Logic-Array-Blocks (LAB′s)", muß bei der Dekodierung der Adressen und der Transfer-Attribute auf diese Probleme Rücksicht genommen werden.
Bei der Wahl der Realisierungsmöglichkeit wurde diese Problematik berücksichtigt, indem
die beiden Quittungssignale "Transfer-Acknowledge (!TA)" und "Transfer-Error-
Acknowledge (!TEA)" von unterschiedlichen State-Machines erzeugt werden, wobei:
- - Diejenige State-Machine, die das Quittungssignal "Transfer-Error-Acknowledge (!TEA)" erzeugt, bei jedem Normalzugriff mit "Transfer-Start (!TS → true)" gestartet wird. Durch Verknüpfung mit "Enable-Signalen", die nur bei unzulässigen Zugriffen aktiv werden, wird dann das Quittungssignal im Fehlerfall freigegeben.
- - Im Gegensatz dazu wird das Quittungssignal "Transfer-Acknowledge (!TA)", das jeden fehlerfreien Transfer abschließen soll und im Fehlerfall zu unterdrücken ist auf unterschiedliche Weise erzeugt, und zwar:
Beim Zugriff auf das SRAM mit "SRAM-Select (ram-sel = true)" wird das Quittungssignal
"Transfer-Acknowledge (!TA)" generell erzeugt, da bei den State-Machines "Memory-
Access-Control", "Memory-Read-Control" und "Memory-Write-Control" nach dem
Initialzyklus auf eine weitere Verzweigung zur Abfrage der Zulässigkeit dieses Zugriffs -
d. h. 2-stufige 32-Bit-Adreßdekodierung innerhalb der State-Machine selbst- verzichtet
werden muß, um zusätzliche Wait-States zu vermeiden. Dies bedeutet jedoch, daß bei nicht
erlaubten Zugriffen, wie z. B. beim Zugriff auf nicht voll ausgebaute Segmentbereiche
(sogenannte Restsegmente) oder bei Zugriffen im nicht verwendeten oberen Adreßbereich
(mit gleichen Select-Adressen), die Übertragung dieses Quittungssignals zum Prozessor
verhindert werden muß.
Bei diesem Ausführungsbeispiel erfolgt die Realisierung derart, daß das vom Steuerwerk
"SRAM-Access-Control" zu generierende individuelle Quittungssignal "SRAM-Transfer-
Acknowledge (sram-ta)" eine Taktperiode vor dem Abschluß des SRAM-Zugriffszyklus
erzeugt wird. Das originale Quittungssignal "Transfer-Acknowledge (!TA)", das dem
Prozessor das Ende des SRAM-Zugriffs signalisieren soll, wird dann vom Signal "SRAM-
Transfer-Acknowledge (sram-ta)" abgeleitet und zwar durch Nachsynchronisieren mit dem
"Taktsignal BCLK".
Dieses Prinzip erlaubt nun die Unterdrückung von "Transfer-Acknowledge (!TA)" bei nicht
erlaubten Zugriffen, indem das Signal "SRAM-Transfer-Acknowledge (sram-ta)" mit dem
entsprechenden Signal "Valid-Memory-Segment", im vorliegenden Fall mit "SRAM-
Segment (ram-seg)", über eine "UND-Funktion" verknüpft wird.
Bei der Erzeugung des Signals "SRAM-Segment (ram-seg)" werden lediglich die "Segment-
Adressen A31 . . . A22 und A18 . . . A0" benötigt, da die restlichen "Select-Adressen A31, A21,
A20 und A19" bereits bei der Erzeugung des Signals "SRAM-Select (ram-sel)", das beim
Starten der State-Machine "SRAM-Access-Control" wie auch bei den Steuerwerken
"SRAM-Read/Write-Control" Verwendung findet, dekodiert werden.
Die damit verbundene Tatsache, daß das Signal "SRAM-Segment (ram-seg)" bei jedem
Zugriff mit "Segment-Adresse A30 . . . A22 und A18 . . . A0 = true" aktiv wird, bedingt
jedoch keine Fehlfunktion, da das individuelle Quittungssignal "SRAM-Transfer-
Acknowledge (sram-ta)" nur dann auch aktiv werden kann, wenn das erzeugende
Steuerwerk "SRAM-Access-Control" ebenfalls gestartet wurde. Dies ist jedoch nur
möglich, wenn die Einsprungsbedingung mit "Select-Adresse A31, A21, A20, A19 = true"
für die State-Machine "SRAM-Access-Control" ebenfalls erfüllt ist.
Somit bewirken die beiden Signale "SRAM-Select (ram-sel)" und "SRAM-Segment (ram-
seg)" eine vollständige 32-Bit-Adreßdekodierung, wobei diese spezielle Art der
Dekodierung, d. h. Erzeugung des Signals "SRAM-Segment (ram-seg)" ohne
Berücksichtigung der "Adressen A31, A21, A20, A19" gewählt wurde, um die Anzahl der
ODER-Terme in den boolschen Gleichungen zu reduzieren.
Weiterhin bedingt die große Laufzeit der Adressen, die zur Dekodierung von "SRAM-
Segment (ram-seg)" über die sogenannten "I/O-Eingänge" dem ELPD zugeführt werden,
keine Funktionsbeeinträchtigung infolge sogenannter "Setup-Violations", da das Signals
"SRAM-Segment (ram-seg)", relativ zum Beginn des Zugriffs, erst "später" Verwendung
findet.
Anmerkungen zur Realisierung:
Das Signal "SRAM-Segment (ram-seg)", das sowohl:
Das Signal "SRAM-Segment (ram-seg)", das sowohl:
- - in der Funktionsgruppe "SRAM-Control" zur Steuerung der State-Machines, sowie bei der Erzeugung der diskreten Steuersignale "SRAM-Output-Enable", "SRAM- Write-Enable" und "SRAM-Chip-Select"
- - als auch in der Funktionsgruppe "Acknowledge-Control" zur Freigabe der Quittungssignale "!TA, !TBI und !TCI" bei erlaubten Zugriffen benötigt wird
muß entsprechend der unterschiedlichen Verwendung auch unterschiedlich erzeugt werden
und zwar:
- - einmal für die Anwendung in der Funktionsgruppe "SRAM-Control" durch direkten Einbau der Adreßdekodierung (Definition "nram-seg: NODE") in die Transition- Terme der State-Machines sowie in die boolschen Gleichungen der diskreten Steuersignale, mit dem Zweck, zusätzliche Signalverzögerungen über "Makrozellen" und das "Programmable-Interconnect-Array (PIA)" zu vermeiden.
- - Zum anderen durch Realisierung der Adreßdekodierung in sogenannten MCELL- Buffern (Definition "ram_seg: MCELL"), deren Ausgang dann über die "PIA" der Funktionsgruppe "Acknowledge-Control" zugeführt wird, um hier die Quittungssignale "!TA, !TBI und !TCI" bei erlaubten Zugriffen freizugeben.
Beim Zugriff auf die "Peripherie" wird das Quittungssignal "Transfer-Acknowledge (!TA)"
im Gegensatz zum Speicherzugriff nur bei zulässigen Zugriffen erzeugt, wobei zulässig in
diesem Fall heißt:
- - gültiger Adreßbereich, sowie
- - zugelassene Zugriffsarten.
Diese selektive Erzeugung des Quittungssignals nur bei legalen Zugriffen bedeutet jedoch
eine vollständige 32-Bit-Adreßdekodierung innerhalb der entsprechenden State-Machine.
Wegen der unterschiedlichen Signallaufzeiten innerhalb des EPLD bei der Zuführung der
Adressen, wie:
- - "Selectadressen A31, A21, A20, A19", sowie
- - "Wort / Byte-Adressen A3 . . . A0" über "Dedicated Inputs" und
- - restliche "Adressen A30 . . . A22, A18 . . . A4" über "I/O-Pins"
muß die Dekodierung dieser Adreßgruppen zur Vermeidung von sogenannten "Setup-
Problemen" im EPLD zu unterschiedlichen Zeiten erfolgen. Und zwar werden die "Select-
Adressen A31, A21, A20, A19" zum Zeitpunkt "Transfer-Start (!TS = true)" dekodiert und
dann im Fall der Identität mit der definierten "Peripherie-Select-Adresse" die State-Machine
gestartet. Die restlichen "Adressen A30 . . . A22, A18 . . . A4" werden im nächsten State
dekodiert - d. h. 2-stufige 32-Bit-Adreßdekodierung innerhalb der State-Machine selbst -
und erlauben somit ein Stoppen der State-Machine bei nicht erlaubten Zugriffen.
Der Nachteil eines zusätzlichen Wait-States kann in diesem speziellen Fall als unkritisch
erachtet werden.
Das bei diesem Ausführungsbeispiel angewendete Realisierungsprinzip der Erzeugung des
individuellen Quittungssignals "SRAM-Transfer-Acknowledge (sram-ta)" eine Taktperiode
vor dem Abschluß des SRAM-Zugriffszyklus erlaubt nun zusätzlich zur Erzeugung des
Quittungssignals "Transfer-Acknowledge (!TA)" auch die Erzeugung der alternativen
Quittungssignale "Transfer-Burst-Inhibit (!TBI)" und "Transfer-Cache-Inhibit (!TCI)", die
bei der Steuerung bestimmter Burst-Zugriffe (z. B. Burst-Schreib-Zugriffe auf das EEPROM
oder Burst-Lese-Zugriffe auf sogenannte "non-cachable" Speicherbereiche) Verwendung
finden.
Beim Zugriff auf Systemkomponenten (Speicher, Peripherie . . .) die keine "Burst-Fähigkeit"
besitzen, muß ein Line-Transfer mit "Transfer-Burst-Inhibit (!TBI → true)" abgeschlossen
werden. Dabei wird das Signal "!TBI" gleichzeitig mit "!TA" beim ersten Langwort-
Transfer eines Line-Zugriffes aktiviert und zwingt damit den Prozessor, den Line-Transfer
abzubrechen und den Rest der Line durch den Transfer von 3 einzelnen "Long-Words" zu
ersetzen, wobei während deren Übertragung "!TBI" ignoriert wird.
Das Quittungssignal "Transfer-Burst-Inhibit (! TBI)" wird von den individuellen
Quittungssignalen "Memory-Transfer-Acknowledge (smem-ta)" der Speicherbänke, die
keine Burst-Fähigkeit besitzen, abgeleitet und zwar durch eine "UND-Verknüpfung
derselben mit den entsprechenden Signalen "Valid-Memory-Segment" sowie den "Transfer-
Attributen (SIZ0, SIZ1, R/!W) und dem "Word-Count" mit anschließender
Nachsynchronisierung der verknüpften Signale durch das "Taktsignal BCLK".
Die internen "Caches" des Prozessors werden durch "Line-Read-Cycles" beschrieben, wobei
das Beschreiben der Caches beim Zugriff auf die Peripherie oder auf Speicherbereiche, in
denen nicht zeitkritische Programmteile untergebracht sind, verhindert werden kann, indem
nach der Übertragung des 1. Langwortes eines Line-Read-Transfers gleichzeitig mit "TA"
das Signal "Transfer Cache-Inhibit (!TCI → true)" erzeugt wird. Nach der Übertragung des
1. Langwortes eines Line-Transfers wird "!TCI" vom Prozessor ignoriert.
Das Quittungssignal "Transfer-Cache-Inhibit (!TCI)" wird ebenfalls vom Signal "SRAM-
Transfer-Acknowledge (sram-ta)" abgeleitet und zwar durch eine "UND-Verknüpfung
desselben mit dem entsprechenden Signal "Valid-Memory-Segment", im vorliegenden Fall
mit "SRAM-Segment (ram-seg)", den "Tranfer-Attributen (SIZ0, SIZ1, R/!W), dem
"Word-Count" sowie einem speziellen "Dekodierungssignal (cach-ram)" mit anschließender
Nachsynchronisierung der verknüpften Signale durch das "Taktsignal BCLK".
Im Fall von Zugriffsfehlern ist es sinnvoll Buszyklen unterschiedlich zum Normalfall durch
Aktivieren von "Transfer-Error-Acknowledge (!TEA → true)" abzuschließen. Bei
Erkennung eines solchen fehlerhaften Zugriffs mittels "Transfer-Error-Acknowledge (!TEA
= true)" wird vom Prozessor eine sogenannte "Bus-Error-Exception" ausgeführt.
Zur Erzeugung des Quittungssignals "Transfer-Error-Acknowledge (!TEA)" wird eine
eigene spezielle State-Machine "Access-Error-Control" vorgesehen, die bei jedem Zugriff,
unabhängig von der angelegten Adresse, mit "Transfer-Start (!TS → true)" gestartet wird.
Da bei diesem Prinzip "Transfer-Error-Acknowledge (!TEA)" generell erzeugt wird, darf
seine Ausgabe nur bei unzulässigen Zugriffen freigegeben werden und zwar durch
Verknüpfung mit speziellen "Enable-Signalen", die nur bei unzulässigen Zugriffen aktiv
werden.
Bei diesem Ausführungsbeispiel erfolgt die Realisierung derart, daß das vom Steuerwerk
"Access-Error-Control" zu generierende Quittungssignal "Delayed-Transfer-Error-
Acknowledge (smem-tea)" zu einem früheren Zeitpunkt erzeugt wird.
Das eigentliche Quittungssignal "Transfer-Error-Acknowledge (!TEA)" zur Bedienung der
Prozessorschnittstelle wird dann vom Signal "Delayed-Transfer-Error-Acknowledge
(smem-tea)" abgeleitet und zwar durch Nachsynchronisieren mit dem "Taktsignal (BCLK)".
Dieses Prinzip erlaubt nun die Unterdrückung von "Transfer-Error-Acknowledge" bei
normalen erlaubten Zugriffen, indem das Signal "Delayed-Transfer-Error-Acknowledge
(smem-tea)" mit den entsprechenden Signalen "Invalid-Memory-Segment", die nur beim
Zugriff auf gesperrte Adreßbereiche gültig werden, über eine UND-Funktion verknüpft
wird, wobei jedoch die einzelnen Signale "Invalid-Memory-Segment" ODER-mäßig zu
verbinden sind.
Die Signale "Invalid-Memory-Segment" werden ebenfalls durch eine "32-Bit
Adreßdekodierung (A31 . . . A0)" gewonnen, wobei, bezogen auf den Start des Zugriffs
"späteren" Verwendung von "Invalid-Memory-Segment", die relativ große Laufzeit der
Adressen, die über die sogenannten "I/O-Eingänge" dem ELPD zugeführt wurden, keine
operationellen Nachteile hat.
Entsprechend der beiden unterschiedlichen Fehlerfälle beim Zugriff auf nicht verwendete
Adreßbereiche, wie
- - Zugriffe auf nicht voll ausgebaute Segmentbereiche (Restsegmente) sowie
- - Zugriffe im nicht verwendeten oberen Adreßbereich
werden auch zwei unterschiedliche Signalgruppen "Invalid-Memory-Segment" benötigt und
zwar "Memory-Restsegment (z. B. ram-rseg)" und "External-Memory-Segment (xmem-
seg)", wobei im Fehlerfall durch das Zusammenwirken beider Signalgruppen ebenfalls eine
"32-Bit-Adreßdekodierung erreicht wird.
Die Signale "Memory-Restsegment (mem-rseg)", die für jede Speicherbank separat zu
erzeugen sind, werden benötigt, um beim nicht erlaubten Zugriff auf das Restsegment eines
nicht voll ausgebauten Speicher-Segments das Quittungssignal "Transfer-Error-
Acknowledge (!TEA)" zur Fehlermeldung freizugeben. Dies bedeutet, daß zur Erzeugung
der Signale "Memory-Restsegment (mem-rseg)" in jedem Fall die vollständige
"Segmentadresse A21 . . . A0" zu dekodieren ist, da mehrere Speichersegmente nicht voll
ausgebaut sein können und somit "Transfer-Error-Acknowledge (!TEA)" alternativ für
jeden möglichen Fehlerfall erzeugt werden muß.
Erreicht wird diese alternative Generierung, indem die verschiedenen Signale "Memory-
Restsegment (mem-rseg)" durch eine ODER-Funktion miteinander verknüpft werden.
Die Signale "Memory-Restsegment (mem-rseg)", die in einem eigens dafür vorgesehenen
"Logic-Array-Block (LAB-H)" zur Freigabe von (!TEA) benötigt werden, können nicht in
diesem "LAB" selbst erzeugt werden, da die Anzahl der freien Eingänge vom
"Programmable-Interconnect-Array (PIA)" nicht ausreicht, um die für die Dekodierung im
"LAB" benötigten Adressen bereitzustellen. Daher müssen die Signale "Memory-
Restsegment (mem-rseg)" in einem anderen "Logic-Array-Block (LAB-B)" mittels
sogenannter "MCELL-Buffer" erzeugt und über die "PIA" ins "LAB-H" eingespeist
werden.
Der damit verbundene Nachteil einer zusätzlichen Signalverzögerung durch die "PIA" muß
bei der Erzeugung von "Transfer-Error-Acknowledge (!TEA)" mittels eines zusätzlichen
"Wait-States" berücksichtigt werden, der jedoch in diesem Fall keine operationellen
Nachteile hat.
Das Signal "External-Memory-Segment (xmem-seg)" wird benötigt, um das Signal
"Transfer-Error-Acknowledge (!TEA)" zur Fehlermeldung beim Zugriff auf den nicht
verwendeten oberen Adreßraum freizugeben. Dies wird durch eine ODER-mäßige
Verknüpfung des Signals "External-Memory-Segment (xmem-seg)" mit den anderen
Signalen "Memory-Restsegment (mem-rseg)" verwirklicht. Erzeugt wird das Signal
"External-Memory-Segment (xmem-seg)" durch Dekodierung der gesamten "Adressen
A31 . . . A0" und reduziert damit die Anzahl der Adressen die zur Herstellung von "Memory-
Restsegment (mem-rseg)" verarbeitet werden müssen.
Die Wirkungsweise der die Zugriffe auf das "SRAM" steuernden Funktionsgruppen
"SRAM-Control", "Acknowledge-Control" und "Access-Error-Control" ist aus folgenden
Abbildungen ersichtlich bzw. in den entsprechenden Programmlistings beschrieben:
Fig. 3 State-Diagramm" des Steuerwerks "SRAM-Access-Control"
für Waitstates n = 1
Fig. 4 State-Diagramm" des Steuerwerks "SRAM-Access-Control" für
Waitstates n = 0
Fig. 5 zeitlicher Ablauf von READ-Zugriffen auf das SRAM bei "Normal- und Burst-
Transfers" für Waitstates n = 1
Fig. 6 zeitlicher Ablauf von WRITE-Zugriffen auf das SRAM bei "Normal- und Burst-
Transfers" für Waitstates n = 1.
Liste 1 "Text-Design-File" der Bus-Steuerung "BUSCNTRL.TDF".
Liste 2 "Text-Design-File" der SRAM-Steuerung "RAMCNTRL.TDF".
Zur Verdeutlichung der Wirkungsweise werden die Vorgänge während der einzelnen Clock-
Phasen (Cxx) beschrieben.
Zu Beginn dieses Zyklus befinden sich die Steuerwerke der SRAM-Zugriffssteuerung
- - "SRAM-Access-Control (ram-state)"
- - "SRAM-Read-Control (rram-state)"
- - "SRAM-Write-Control (wram-state)"
- - "Access-Error-Control (mem-state)"
im Zustand "Wait-Access", wobei das Gleiche auch für die Steuerwerke der übrigen
Subsysteme gilt.
Der Prozessor startet einen Speicherzugriffszyklus während der High-Phase des ersten
"Clock-Zyklus (BCLK # 1)" durch Ausgabe der "Adressen (A31 . . . A0)" sowie der
zugehörigen "Transfer-Attributes", wobei er diese Signale während des gesamten Transfers
(auch bei Burst-Transfers) unverändert läßt. Gleichzeitig erfolgt die Aktivierung des Signals
"Transfer-Start (!TS → true)", um den Start eines neuen Bus-Zyklus anzuzeigen.
Während dieses Clock-Zyklus wird auch das Steuersignal "SRAM-Chip-Select (!cs-ram)"
erzeugt, wobei dieses wegen der großen "Chip-Select-Access-Time (Tacs)" der
Speicherbausteine zum frühestmöglichen Zeitpunkt generiert wird. Dies bedeutet, daß das
Signal, ohne auf das Kriterium "Transfer-Start (!TS → true)" zu warten, unmittelbar durch
Dekodierung der "Selectadressen A31, A21, A20 und A19" sowie der zugehörigen
"Transfer-Attribute" gewonnen wird.
Zu Beginn dieses Zyklusses, wobei das Kriterium dazu vom Signal "Transfer-Start (!TS =
true)" geliefert wird, werden mit der positiven Flanke des "Clock-Signals (BCLK # 2)" die
"Lang-Wort-Adressen (adr-ram[3 . . . 2])" gespeichert, sowie folgende für den Zugriff
relevanten Bussignale durch die State-Machines der SRAM-Zugriffssteuerung abgefragt:
- - Transfer-Start (!TS)
- - die Selectadressen (A31, A21, A20, A19)
- - die Transfer-Type-Encoding-Signals (TT1, TT0)
- - das Schreib/Lese-Signal (R/!W) (nur "SRAM-Read-Control" und "SRAM-Write-Control").
Ausnahme: Das Steuerwerk "Access-Error-Control" verarbeitet lediglich das Signal
"Tranfer-Start (!TS)", um zu erreichen, daß diese State-Machine bei jedem Zugriff gestartet
wird.
Abhängig vom Ergebnis der Abfrage werden unterschiedliche Aktionen abgeleitet und zwar:
- - "READ-Zugriffe" auf das SRAM (siehe Abschnitt: 8.3.6.2.1)
- - "WRITE-Zugriffe" auf das SRAM (siehe Abschnitt: 8.3.6.2.2)
- - "Wait-Access" falls kein Zugriff auf das SRAM vorliegt
wobei beim Zugriff auf das SRAM zu diesem Zeitpunkt noch kein Unterschied zwischen
"NORMAL- oder BURST-Zugriffen" sowie zwischen "gültigen oder ungültigen" Zugriffen
gemacht wird.
Anmerkung:
Dieser "Clock-Zyklus (C2w1/Wait-State # 1)" ist demnach für alle READ- Zugriffsalternativen auf das SRAM mit "Selectadressen (A31, A21, A20, A19 = SRAM- Segment)" identisch:
Der Ablauf und die Steuerung der verschiedenen Zugriffsalternativen wird im Folgenden einzeln beschrieben.
Dieser "Clock-Zyklus (C2w1/Wait-State # 1)" ist demnach für alle READ- Zugriffsalternativen auf das SRAM mit "Selectadressen (A31, A21, A20, A19 = SRAM- Segment)" identisch:
Der Ablauf und die Steuerung der verschiedenen Zugriffsalternativen wird im Folgenden einzeln beschrieben.
Für einen gültigen oder ungültigen "NORMAL- oder BURST-READ-Zugriff" auf das
SRAM müssen die zu Beginn dieses "Clock-Zyklus (C2w1/Wait-State # 1)" mit der
positiven Flanke des "Clock-Signals (BCLK # 2)" abgefragten Prozessor-Ausgangssignale
folgenden Zustand aufweisen:
- - Transfer-Start (!TS = true)
- - Schreib/Lese-Signal (R/!W = Read)
- - Selectadressen (A31, A21, A20, A19 = SRAM-Segment)
- - Transfer-Typ-Encoding-Signals (TT1, TT0 = Normal oder Move-16).
In diesem Fall verlassen die Steuerwerke "SRAM-Access-Control", "SRAM-Read-
Control" sowie "Access-Error-Control" mit der positiven Flanke des "Taktsignals (BCLK # 2)"
gleichzeitig den Zustand "Wait-Access" und führen bei diesem State-Übergang
entsprechend ihrer unterschiedlichen Funktion auch unterschiedliche Aktionen durch und
zwar:
- - "SRAM-Access-Control (ram-state)"
Die "State-Machine (ram-state)" schaltet unabhängig vom "Schreib/Lese-Signal (R/!W)" in den nächsten "Zustand (ram-state → ram-wst1)". Falls die Anzahl der einzustellenden Wait-States (w = 1) ist, wird jetzt das individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → true)" nach dem sogenannten "Moore Prinzip" mittels eines speziellen "State-Bits (sram-ta)" erzeugt. Außerdem wird jetzt unabhängig vom Zustand der Signale "Transfer-Size []" der "Word-Count (wrd-cnt[] → 0)" für Burst-Transfers rückgesetzt. - - "SRAM-Read-Control (rram-state)"
Beim "Stateübergang (rram-state → rram-acc/wst1)" wird gleichzeitig das Signal "SRAM-Output-Enable (!oe-ram → true)" ebenfalls von der State-Machine selbst mittels eines speziellen State-Bits (sram-oe → true)" aktiviert, während die zu Beginn des "Clock-Zyklus (C2w1/Wait-State # 1)" gespeicherten "Lang-Wort-Adressen (adr-ram[3 . . . 2])" unverändert bleiben. - - "SRAM-Write-Control (wram 60643 00070 552 001000280000000200012000285916053200040 0002019541946 00004 60524-state)"
Dieses Steuerwerk bleibt während des gesamten READ-Zugriffs auf das SRAM weiterhin im Zustand "Wait-Access (wram-state = wram-wacc)" - - "Access-Error-Control (mem-State)"
Da das Quittungssignal "Transfer-Error-Acknowledge (!TEA)" mit einer Verzögerung von 2 Wait-States erzeugt wird, bleibt bei diesem "State-Übergang (mem-state → mem-wst2)" das zugehörige Signal "Delayed-Transfer-Error- Acknowledge (smem-tea)" im Zustand nicht aktiv.
Anmerkung:
Die übrigen nicht angesprochenen Steuerwerke verharren weiterhin im Zustand "Wait- Access".
Die übrigen nicht angesprochenen Steuerwerke verharren weiterhin im Zustand "Wait- Access".
Entsprechend der Zugriffszeit der verwendeten Speicherelemente können hier weitere
"Wait-States (Wn)" eingefügt werden, wobei die Anzahl der Wartezyklen immer ein
ganzzahliges Vielfaches der nicht teilbaren Prozessor-Taktperiode sein muß.
In diesem Fall, d. h. Anzahl der einzustellenden Wait-States (w < 1), wird das Signal
"Delayed-SRAM-Transfer-Acknowledge (sram-ta → true)" später erzeugt und zwar im
letzten Warte-Zyklus vor dem "Ende-Zyklus (C2)". Während dieser zusätzlichen Wait-
States bleibt das Signal "SRAM-Output-Enable (!oe-ram = true)" weiterhin im Zustand
aktiv. Der "Word-Count (wrd-cnt[])" sowie die gespeicherten "Lang-Wort-Adressen (adr-
ram[3 . . . 2])" bleiben dabei ebenfalls unverändert.
Zu Beginn dieses Verzweigungs-Zyklus, der zugleich Endezyklus für die
Zugriffsalternativen "NORMAL-, BURST (Langwort # 1)- und INVALID-READ" ist,
verlassen die Steuerwerke mit der positiven Flanke des "Taktsignals (BCLK # 3)"
gleichzeitig den Zustand "Wait-State # 1" und führen dabei folgende State-Transitions
durch:
- - "SRAM-Access-Control (ram-state → ram-wst0)"
- - "SRAM-Read-Control (rram-state → rram-eacc/wst0)"
- - "Access-Error-Control (mem-state → mem-wst1)".
Am Ende dieses Verzweigungs-Zyklus werden mit der nächsten positiven Flanke des
"Taktsignals (BCLK # 4)" von den Steuerwerken "SRAM-Access-Control" und "SRAM-
Read-Control" die folgenden Signale abgefragt:
- - Transfer-Size (SIZ0, SIZ1)
- - Word-Count (wrd-cnt[])
- - Segment-Adresse (A30 . . . A22 und A18 . . . A0).
Abhängig vom Ergebnis dieser Abfrage sind 3 Verarbeitungsalternativen möglich und zwar:
- - gültiger NORMAL-READ-Zugriff (siehe Abschnitt: 8.3.6.2.1.1)
- - gültiger BURST-READ-Zugriff (siehe Abschnitt: 8.3.6.2.1.2)
- - ungültiger READ-Zugriff (siehe Abschnitt: 8.3.6.2.1.3)
deren Ablauf und Steuerung im Folgenden einzeln beschrieben wird.
Ausgehend vom vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" verlassen zu
Beginn dieses Verzweigungs-Zyklus, der zugleich Endezyklus für diese Zugriffsalternative
"NORMAL- READ" ist, die Steuerwerke "SRAM-Access-Control", "SRAM-Read-
Control" sowie "Access-Error-Control" mit der positiven Flanke des "Taktsignals (BCLK #
3)" gleichzeitig den Zustand "Wait-State # 1" und führen beim State-Übergang
entsprechend ihrer unterschiedlichen Aufgabe folgende Aktionen durch:
- - "SRAM-Access-Control (ram-state)".
- Beim "State-Übergang (ram-state → ram-wst0)" wird durch die State-Machine gleichzeitig das individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → false)" desaktiviert. Der "Word-Count (wrd-cnt[])" bleibt dabei unverändert.
- - "SRAM-Read-Control (rram-state)"
- Beim "State-Übergang (rram-state → rram-eacc/wst0)" bleibt das Signal "SRAM- Output-Enable (!oe-ram = true)" aktiv. Die gespeicherten "Lang-Wort-Adressen (adr- ram[3 . . . 2])" bleiben ebenfalls unverändert.
- - "Access-Error-Control (mem-state)"
- Die State-Machine "mem-state" wechselt in den nächsten Zustand "(mem-state → mem-wst1)" und aktiviert dabei das Quittungssignal "Delayed-Transfer-Error- Acknowledge (smem-tea → true)".
Die von den Steuerwerken "SRAM-Access-Control" und "Access-Error-Control" erzeugten
Quittungssignale "Delayed-SRAM-Transfer-Acknowledge (sram-ta)" und "Delayed-
Transfer-Error-Acknowledge (smem-tea)" werden in der Funktionsgruppe "Acknowledge-
Control" weiterverarbeitet und daraus die eigentlichen Quittungssignale zur Bedienung der
Prozessorschnittstelle abgeleitet.
- - "Transfer-Acknowledge (!TA)"
- Das vom Steuerwerk "SRAM-Access-Control" generierte individuelle Quittungssignal "SRAM-Transfer-Acknowledge (sram-ta)" wird, wie beschrieben, eine Taktperiode vor dem Abschluß des SRAM-Zugriffszyklus erzeugt. Das originale Quittungssignal "Transfer-Acknowledge (!TA)", das dem Prozessor das Ende des SRAM-Zugriffs signalisieren soll, wird dann vom Signal "SRAM-Transfer-Acknowledge (sram-ta)" abgeleitet und zwar durch eine logische UND-Verknüpfung desselben mit den Enable- Signal "SRAM-Segment (ram-seg)" und anschließendem Nachsynchronisieren mit dem "Taktsignal (BCLK)".
- Da es sich in diesem Fall um einen normalen gültigen READ-Zugriff handelt, wird dieses Quittungssignal, das nur beim Zugriff auf gesperrte Adreßbereiche unterdrückt werden darf, freigegeben d. h. "Transfer-Acknowledge (!TA → true)", weil das Enable-Signale "SRAM-Segment (ram-seg = true)" ist.
- Das so erzeugte Quittungssignal "Transfer-Acknowledge (!TA = true)" wird, wie auch die Daten bei dieser READ-Operation, vom Prozessor mit der nächsten positiven Flanke des "Taktsignals (BCLK # 4)" abgetastet und damit der nächste Zugriffs-Zyklus eingeleitet.
- - "Transfer-Error-Acknowledge (!TEA)"
- Das eigentliche Quittungssignal "Transfer-Error-Acknowledge (!TEA)" zur Anzeige von Zugriffsfehlern an den Prozessor wird vom Signal "Delayed-Transfer-Error- Acknowledge (smem-tea)" abgeleitet und zwar durch eine logische UND- Verknüpfung desselben mit speziellen Enable-Signalen "Invalid-Memory-Segment" und anschließender Nachsynchronisierung durch das "Taktsignal (BCLK)".
- Da es sich in diesem Fall um einen normalen gültigen READ-Zugriff handelt, wird dieses Quittungssignal, das nur beim Zugriff auf gesperrte Adreßbereiche oder nicht zugelassene Zugriffsarten aktiv werden darf, unterdrückt d. h. "Transfer-Error- Acknowledge (!TEA → false)", weil das Enable-Signale "Invalid-Memory-Segment (ram-rseg = false)" ist.
Für die Beendigung eines gültigen "NORMAL-READ-Zugriff auf das SRAM" müssen die
am Schluß dieses Verzweigungs/Ende-Zyklus mit der nächsten positiven Flanke des
"Taktsignals (BCLK # 4)" von den Steuerwerken "SRAM-Access-Control" und "SRAM-
Read-Control" abgefragten Signale folgenden Zustand aufweisen:
- - Transfer-Size (SIZ_[] != line)
- - Segment-Adresse A30 . . . A22, A18 . . . A0 = SRAM-Segment).
In diesem Fall wird der "NORMAL-READ-Zugriff auf das SRAM" beendet und damit die
State-Machines der SRAM-Zugriffsteuerung für den nächste Zugriffszyklus vorbereitet.
Zu Beginn dieses Clock-Zyklus werden mit der gleichen positiven Flanke des "Taktsignals
(BCLK # 4)" das im vorangegangenen "NORMAL-READ-Zugriff" erzeugte
Quittungssignal "Transfer-Acknowledge (!TA = true)" sowie die aus dem SRAM
ausgelesenen Daten vom Prozessor abgetastet und damit der nächste Zugriffszyklus
eingeleitet. Gleichzeitig verlassen die Steuerwerke den derzeitigen Zustand und führen
dabei folgende State-Transitions und Aktionen durch:
- - "SRAM-Access-Control (ram-state)"
- Die State-Machine "ram-state" wechselt in den Zustand "Wait-Access (ram-state → ram-wacc)". Dabei bleibt das individuelle Quittungssignal "Delayed-SRAM-Transfer- Acknowledge (sram-ta = false)" desaktiviert.
- - "SRAM-Read-Control (rram-state)"
- Beim State-Übergang in den Zustand "Wait-Access (rram-state → rram-wacc)" wird gleichzeitig das Signal "SRAM-Output-Enable (!oe-ram → false)" inaktiv geschaltet.
- - "Access-Error-Control (mem-state)"
- Die State-Machine "mem-state" wechselt ebenfalls in den Zustand "Wait-Access (mem-state → mem-wacc)" und desaktiviert dabei das Quittungssignal "Delayed- Transfer-Error-Acknowledge (smem-tea → false)".
Während dieses Clock-Zyklus schaltet auch das Steuersignal "SRAM-Chip-Select (!cs-ram
→ false)", das mittels kombinatorischer Verknüpfung der Selectadressen A31, A21, A20
und A19 sowie der zugehörigen Transfer-Attribute während des "Clock-Zyklus (C1/
Initialzyklus)" erzeugt wurde, in den Zustand "nicht-aktiv".
Ausgehend vom vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" verlassen zu
Beginn dieses Verzweigungs-Zyklus, der zugleich Endezyklus für diese Zugriffsalternative
"BURST-READ-Langwort # 1" ist, die Steuerwerke "SRAM-Access-Control", "SRAM-
Read-Control" sowie "Access-Error-Control" mit der positiven Flanke des "Taktsignals
(BCLK # 3)" gleichzeitig den Zustand "Wait-State # 1" und führen beim State-Übergang
folgende Aktionen durch:
- - "SRAM-Access-Control (ram-state)"
- Beim "State-Übergang (ram-state → ram-wst0)" wird durch die State-Machine gleichzeitig das zu Beginn des vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" aktivierte individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → false)" desaktiviert. Der ebenfalls zu Beginn des vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" initiierte "Word-Count (wrd-cnt[])" bleibt dagegen unverändert.
- - "SRAM-Read-Control (rram-state)"
- Beim "State-Übergang (rram-state → rram-eacc/wst0)" bleibt das Signal "SRAM- Output-Enable (!oe-ram = true)" aktiv. Die zum Beginn des vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" gespeicherten "Lang-Wort-Adressen (adr- ram[3 . . . 2])" bleiben ebenfalls unverändert und adressieren damit das "Langwort # 1" dieses BURST-READ-Zugriffs.
- - "Access-Error-Control (mem-state)"
- Da beim Zugriff auf das SRAM der zeitliche Ablauf für "NORMAL-Zyklen" sowie den "1. Langwort Transfer (Initial-Transfer) eines BURST-Zyklus" identisch ist und das Steuerwerk "Access-Error-Control" bei jedem Zugriff durch das Signal "Tranfer-Start (!TS = true)" gestartet wird, gilt hier für die Erzeugung des Quittungssignal "Delayed-Transfer-Error-Acknowledge (smem-tea)" das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung von gütigen NORMAL-READ-Zugriffen auf das SRAM" bereits beschrieben.
Das Gleiche gilt für die von den Steuerwerken "SRAM-Access-Control" und "Access-
Error-Control" erzeugten Quittungssignale "Delayed-SRAM-Transfer-Acknowledge
(sram-ta)" und "Delayed-Transfer-Error-Acknowledge (smem-tea)", die in der
Funktionsgruppe "Acknowledge-Control" weiterverarbeitet werden.
Für die Beendigung eines gültigen "BURST-READ-Zugriffs auf das Langwort # 1" müssen
die am Schluß dieses Verzweigungs/Ende-Zyklus mit der nächsten positiven Flanke des
"Taktsignals (BCLK # 4)" abgefragten Signale folgenden Zustand aufweisen:
- - Transfer-Size (SIZ-[] = line) und
- - Word-Count (wrd-cnt[] < wrd-cnt-max) und
- - Segment-Adresse A30 . . . A22, A18 . . . A0 = SRAM-Segment).
In diesem Fall wird der "BURST-READ-Zugriff auf das Langwort # 1" beendet und damit
die State-Machines der SRAM-Zugriffsteuerung für den Zugriff auf das nächste "Langwort
# 2" vorbereitet.
Zu Beginn dieser Clock-Zyklen werden mit der positiven Flanke des "Taktsignals (BCLK)"
das im vorangegangenen "BURST-READ-Zugriff/Langworte # 1 bzw. # 2" jeweils
erzeugte Quittungssignal "Transfer-Acknowledge (!TA = true)" sowie die jeweils aus dem
SRAM ausgelesenen "Langworte # 1 bzw. # 2" vom Prozessor abgetastet und damit der
nächste Zugriffs-Zyklus eingeleitet.
Die "Clock-Zyklen (C3w1, C4w1/Wait-State # 1)" sind prinzipiell identisch mit dem
"Clock-Zyklus (C2w1/Wait-State # 1) zu Beginn eines jeden READ-Zugriffs auf das
SRAM, jedoch mit dem Unterschied, daß am Anfang jedes dieser Clock-Zyklen mit der
positiven Flanke des "Clock-Signals (BCLK)" folgende Aktionen zusätzlich durchgeführt
werden:
- - Inkrementieren des "Word-Count (wrd-cnt[] = wrd-cnt[] + 1)" ausgehend von dem während des vorangegangenen "Clock-Zyklus (C2w1 bzw. C3w1/Wait-State # 1)" initiierten bzw. erzeugten Wert.
- - Inkrementieren der "Lang-Wort-Adressen (adr-ram[3 . . . 2] = adr-ram[3 . . . 2] + 1)" ausgehend von der während des vorangegangenen "Clock-Zyklus (C2w1 bzw. C3w1/ Wait-State # 1)" gespeicherten Initialadresse bzw. erzeugten Adresse und damit Adressieren der "Langworte # 2 bzw. # 3".
Im Anschluß an jeden dieser "Clock-Zyklen (C3w1 und C4w1)" können ebenfalls weitere
"Clock-Zyklen (C3wn/Wait-States # n) bzw. (C4wn/Wait-States # n)" eingefügt werden,
wenn die Zugriffszeit der verwendeten Speicherelemente dies erfordert. "Word-Count"
sowie "Lang-Wort-Adressen" bleiben während dieser zusätzlichen "Wait-States"
unverändert.
Zu Beginn dieses Zyklus verlassen die Steuerwerke "SRAM-Access-Control" und "SRAM-
Read-Control" mit der positiven Flanke des "Taktsignals (BCLK)" gleichzeitig den Zustand
"Wait-State # 1" und führen in diesem Fall d. h. "BURST-READ-Zugriff" auf das SRAM
beim State-Übergang entsprechend ihrer unterschiedlichen Aufgabe folgende Aktionen
durch:
- - "SRAM-Access-Control (ram-state)"
- Beim "State-Übergang (ram-state → ram-wst0)" wird durch die State-Machine gleichzeitig das zu Beginn des vorangegangenen "Clock-Zyklus (C3w1 oder C4w1/ Wait-State # 1)" aktivierte individuelle Quittungssignal "Delayed-SRAM-Transfer- Acknowledge (sram-ta → false)" desaktiviert. Der zu Beginn des vorangegangenen "Clock-Zyklus (C3w1 oder C4w1/Wait-State # 1)" inkrementierte "Word-Count (wrd-cnt[])" bleibt unverändert.
- - "SRAM-Read-Control (rram-state)"
- Beim "State-Übergang (rram-state → rram-eacc/wsto)" bleibt das Signal "SRAM- Output-Enable (!oe-ram = true)" aktiv. Die zum Beginn des vorangegangenen "Clock-Zyklus (C3w1 oder C4w1/Wait-State # 1)" inkrementierten "Lang-Wort- Adressen (adr-ram[3 . . . 2])" bleiben ebenfalls unverändert.
- - "Access-Error-Control (mem-state)"
- Diese State-Machine bleibt während des "Burst-Zugriffs" im Zustand "Wait-Access (mem-state = mem-wacc)".
Für das vom Steuerwerk "SRAM-Access-Control" erzeugte Quittungssignal "Delayed-
SRAM-Transfer-Acknowledge (sram-ta)", das in der Funktionsgruppe "Acknowledge-
Control" weiterverarbeitet wird, gilt das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung
von gütigen NORMAL-READ-Zugriffen auf das SRAM" bereits beschrieben.
Um einen gültigen "BURST-READ-Zugriff auf die Langworte # 2 bzw. # 3" zu beenden,
müssen die am Ende dieses Verzweigungs-Zyklus mit der nächsten positiven Flanke des
"Taktsignals (BCLK)" abgefragten Signale folgenden Zustand aufweisen:
- - Transfer-Size (SIZ-[] = line) und
- - Word-Count (wrd-cnt[] < wrd-cnt-max) und
- - Segment-Adresse A30 . . . A22, A18 . . . A0 = SRAM-Segment).
In diesem Fall wird der "BURST-READ-Zugriff" auf die "Langworte # 2 bzw. # 3"
abgeschlossen und damit die State-Machines der SRAM-Zugriffsteuerung für den Zugriff
auf das nächste "Langwort # 4" vorbereitet.
Zu Beginn dieses Clock-Zyklus wird mit der positiven Flanke des "Taktsignals (BCLK)" das
im vorangegangenen "BURST-READ-Zugriff/Langwort # 3" erzeugte Quittungssignal
"Transfer-Acknowledge (!TA = true)" sowie das aus dem SRAM ausgelesene "Langwort #
3" vom Prozessor abgetastet und damit der Zugriff auf das nächste "Langwort # 4"
eingeleitet.
Der "Clock-Zyklus (C5w1)" ist ebenfalls prinzipiell identisch mit dem "Clock-Zyklus (C2w1
/Wait-State # 1) zu Beginn eines jeden Zugriffs auf das SRAM, jedoch mit dem
Unterschied, daß am Anfang dieses Clock-Zyklus mit der positiven Flanke des "Clock-
Signals (BCLK)" folgende Aktionen zusätzlich durchgeführt werden:
- - Inkrementieren des "Word-Count (wrd-cnt[] = wrd-cnt[] + 1)" ausgehend von dem während des vorangegangenen "Clock-Zyklus (C4w1/Wait-State # 1)" erzeugten Wert.
- - die "Lang-Wort-Adressen (adr-ram[3 . . . 2] = adr-ram[3 . . . 2] + 1)" werden ausgehend von der während des vorangegangenen "Clock-Zyklus (C4w1/Wait-State # 1)" erzeugten Adresse inkrementiert und damit das "Langwort # 4" adressiert.
Im Anschluß an diesen "Clock-Zyklus (C5w1)" können ebenfalls weitere "Clock-Zyklen
(C5wn/Wait-States # n)" eingefügt werden, wenn die Zugriffszeit der verwendeten
Speicherelemente dies erfordert. "Word-Count" sowie "Lang-Wort-Adressen" bleiben
während dieser zusätzlichen "Wait-States" ebenfalls unverändert.
Zu Beginn des "Clock-Zyklus (C5)" verlassen die Steuerwerke "SRAM-Access-Control",
"SRAM-Read-Control" sowie "Access-Error-Control" mit der positiven Flanke des
"Taktsignals (BCLK)" gleichzeitig den Zustand "Wait-State # 1" und führen in diesem Fall
d. h. "BURST-READ-Zugriff" auf das SRAM beim State-Übergang entsprechend ihrer
unterschiedlichen Aufgabe folgende Aktionen durch:
- - "SRAM-Access-Control (ram-state)"
- Beim "State-Übergang (ram-state → ram-wsto)" wird durch die State-Machine gleichzeitig das zu Beginn des vorangegangenen "Clock-Zyklus (C5w1/Wait-State # 1)" aktivierte individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → false)" desaktiviert. Der zu Beginn des vorangegangenen "Clock-Zyklus (C5w1/Wait-State # 1)" inkrementierte "Word-Count (wrd-cnt[])" bleibt unverändert.
- - "SRAM-Read-Control (rram-state)"
- Beim "State-Übergang (rram-state → rram-eacc/wsto)" bleibt das Signal "SRAM- Output-Enable (!oe-ram = true)" aktiv. Die zum Beginn des vorangegangenen "Clock-Zyklus (C5w1/Wait-State # 1)" inkrementierten "Lang-Wort-Adressen (adr- ram[3 . . . 2])" bleiben ebenfalls unverändert.
- - "Access-Error-Control (mem-state)"
- Diese State-Machine bleibt während des "Burst-Zugriffs" im Zustand "Wait-Access (mem-state = mem-wacc)".
Für das vom Steuerwerk "SRAM-Access-Control" erzeugte Quittungssignal "Delayed-
SRAM-Transfer-Acknowledge (sram-ta)", das in der Funktionsgruppe "Acknowledge-
Control" weiterverarbeitet wird, gilt das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung
von gütigen NORMAL-READ-Zugriffen auf das SRAM" bereits beschrieben.
Für die Beendigung eines gültigen "BURST-READ-Zugriffs" auf das "Langwort # 4"
müssen die am Schluß dieses Verzweigungs- / Ende-Zyklus mit der nächsten positiven
Flanke des "Taktsignals (BCLK)" abgefragten Signale folgenden Zustand aufweisen:
- - Transfer-Size (SIZ-[] = line) und
- - Word-Count (wrd-cnt[] = wrd-cnt-max) und
- - Segment-Adresse A30 . . . A22, A18 . . . A0 = SRAM-Segment).
In diesem Fall wird der "BURST-READ-Zugriff" auf das "Langwort # 4 beendet und damit
die State-Machines der SRAM-Zugriffsteuerung für den nächste Zugriffszyklus vorbereitet.
Zu Beginn dieses Clock-Zyklus werden mit der positiven Flanke des "Taktsignals
(BCLK)" das im vorangegangenen "BURST-READ-Zugriff" erzeugte Quittungssignal
"Transfer-Acknowledge (!TA = true)" sowie das aus dem SRAM ausgelesene "Langwort # 4"
vom Prozessor abgetastet, damit der BURST-Zugriff beendet und der nächste
Zugriffszyklus eingeleitet.
Für die Steuerwerke:
- - "SRAM-Access-Control (ram-state)"
- - "SRAM-Read-Control (rram-state)"
- - "Access-Error-Control (mem-state)"
gilt das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung von gütigen Normal-READ-
Zugriffen auf das SRAM" bereits beschrieben.
Weil die Steuerung eines solchen ungültigen "NORMAL- bzw. BURST-READ-Zugriffs"
auf das SRAM während dieses "Clock-Zyklus (C2)" identisch mit dem eines gültigen
"NORMAL- bzw. BURST (Langwort # 1)-READ-Zugriff" auf das SRAM ist, bedeutet
dies aber auch, daß aufgrund der Beschaltung des Steuerwerks "SRAM-Read-Control" mit
lediglich den signifikanten "Selectadressen A31, A21, A20, A19" sowie den benötigten
"Transfer-Attributen" unzulässige Schreib-Zugriffe gestartet werden können, die wie auch
bei den entsprechenden ungültigen "NORMAL- bzw. BURST-WRITE-Zugriffen"
nachfolgend beschrieben, als sogenannte "No-Operation-Zugriffe" durchgeführt werden.
Damit verbundene mögliche Fehlfunktionen werden verhindert, indem:
- - bei "BURST-READ-Zugriffen" die State-Machines "SRAM-Read-Control" sowie "SRAM-Access-Control" nach dem ersten Langwort-Zugriff gestoppt und in den "Wait-State (bereit für den nächsten Zugriff)" gebracht werden.
- - das Signal "SRAM-Output-Enable" ebenfalls nach dem "Initial-Zugriff" eines "Burst- Read-Transfers" rückgesetzt wird.
Dies bedeutet für die Steuerung eines ungültigen READ-Zugriffs durch die State-Machines
"SRAM-Access-Control", "SRAM-Read-Control" sowie "Access-Error-Control", daß
diese zu Beginn dieses Zyklus mit der positiven Flanke des "Taktsignals (BCLK # 3)"
gleichzeitig den Zustand "Wait-State # 1" verlassen und bei diesem State-Übergang
folgende Aktionen durchführen:
- - "SRAM-Access-Control (ram-state)"
- Beim State-Übergang (ram-state → ram-wst0) wird durch die State-Machine gleichzeitig das individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → false)" desaktiviert.
- - "SRAM-Read-Control (rram-state)"
- Beim State-Übergang (rram-state → rram-eacc/wst0) bleibt das Signal "SRAM- Output-Enable (!oe-ram = true)" aktiv. Die gespeicherten Lang-Wort-Adressen (adr- ram[3 . . . 2]) bleiben ebenfalls unverändert.
- - "Access-Error-Control (mem-state)"
- Die State-Machine "mem-state" wechselt in den nächsten Zustand "(mem-state → mem-wst1)" und aktiviert dabei das Quittungssignal "Delayed-Transfer-Error- Acknowledge (smem-tea → true)".
Für die von den Steuerwerken "SRAM-Access-Control" und "Access-Error-Control"
erzeugten Quittungssignale "Delayed-SRAM-Transfer-Acknowledge (sram-ta)" und
"Delayed-Transfer-Error-Acknowledge (smem-tea)", die in der Funktionsgruppe
"Acknowledge-Control" weiterverarbeitet werden, um daraus die eigentlichen
Quittungssignale zur Bedienung der Prozessorschnittstelle abzuleiten, gilt prinzipiell das
Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung von gütigen NORMAL-READ-Zugriffen
auf das SRAM" bereits beschrieben, jedoch mit dem Unterschied, daß:
- - "Transfer-Acknowledge (!TA)"
- Da es sich in diesem Fall um einen ungültigen Zugriff handelt, wird das Quittungssignal "Transfer-Acknowledge (!TA)", das nur beim Zugriff auf gültige Adreßbereiche freigegeben werden darf, unterdrückt d. h. "Transfer-Acknowledge (!TA = false)", weil das Enable-Signal "SRAM-Segment (ram-seg = false)" ist.
- - "Transfer-Error-Acknowledge (!TEA)"
- Weil es sich in diesem Fall um einen ungültigen Zugriff handelt, wird dieses Quittungssignal, das nur beim Zugriff auf gesperrte Adreßbereiche oder nicht zugelassene Zugriffsarten aktiv werden darf, freigegeben d. h. "Transfer-Error- Acknowledge (!TEA → true)", weil das Enable-Signal "Invalid-Memory-Segment (ram-rseg = true)" ist.
- Das so erzeugte Quittungssignal "Transfer-Error-Acknowledge (!TEA)" wird vom Prozessor mit der nächsten positiven Flanke des "Taktsignals (BCLK)" abgetastet und damit der bestehende Zugriffszyklus (Normal oder Burst) abgebrochen.
Für die Beendigung eines solchen ungültigen "NORMAL- oder BURST-READ-Zugriffs"
auf das SRAM" müssen die am Schluß dieses Verzweigungs/Ende-Zyklus mit der
nächsten positiven Flanke des "Taktsignals (BCLK # 4)" von den Steuerwerken "SRAM-
Access-Control" und "SRAM-Read-Control" abgefragten Signale folgenden Zustand
aufweisen:
- - Transfer-Size (SIZ-[] = don′t care)
- - Word-Count (wrd-cnt[] = don′t care)
- - Segment-Adresse A30 . . . A22, A18 . . . A0 ! = SRAM-Segment).
In diesem Fall wird der ungültige Zugriffszyklus ("NORMAL" bzw. "BURST nach dem
Langwort # 1") beendet und damit die State-Machines der SRAM-Zugriffsteuerung für den
nächsten Zugriffszyklus vorbereitet.
Zu Beginn dieses Clock-Zyklus werden mit der positiven Flanke des "Taktsignals (BCLK)"
das im vorangegangenen ungültigen READ-Zyklus erzeugte Quittungssignal "Transfer-
Error-Acknowledge (!TEA = true)" vom Prozessor abgetastet und damit der bestehende
Zugriffszyklus (Normal oder Burst) abgebrochen und eine sogenannte "Bus-Error-
Exception" eingeleitet.
Für die Steuerwerke:
- - "SRAM-Access-Control (ram-state)"
- - "SRAM-Read-Control (rram-state)"
- - "Access-Error-Control (mem-state)"
gilt das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung von gütigen Normal-READ-
Zugriffen auf das SRAM" bereits beschrieben.
Siehe Abschnitt: (8.3.6.2) "Steuerung von READ/WRITE-Zugriffen auf das SRAM"
Anmerkung:
Auch beim "WRITE-Zugriff" wird während des "Clock-Zyklus (C1/Initialzyklus)" das Steuersignal "SRAM-Chip-Select (!cs-ram → true)" erzeugt, weil dieses wegen der großen "Chip-Select-Access-Time (Tacs)" der Speicherbausteine zum frühestmöglichen Zeitpunkt generiert werden muß. Dies bedeutet, daß dieses Signal, ohne auf das Kriterium "Transfer- Start (!TS → true)" zu warten, unmittelbar durch Dekodierung der Selectadressen A31, A21, A20 und A19 sowie der zugehörigen Transfer-Attribute gewonnen wird.
Anmerkung:
Auch beim "WRITE-Zugriff" wird während des "Clock-Zyklus (C1/Initialzyklus)" das Steuersignal "SRAM-Chip-Select (!cs-ram → true)" erzeugt, weil dieses wegen der großen "Chip-Select-Access-Time (Tacs)" der Speicherbausteine zum frühestmöglichen Zeitpunkt generiert werden muß. Dies bedeutet, daß dieses Signal, ohne auf das Kriterium "Transfer- Start (!TS → true)" zu warten, unmittelbar durch Dekodierung der Selectadressen A31, A21, A20 und A19 sowie der zugehörigen Transfer-Attribute gewonnen wird.
Für einen WRITE-Zugriff auf das SRAM müssen die zu Beginn dieses "Clock-Zyklus
(C2w1/Wait-State # 1)" mit der positiven Flanke des "Clock-Signals (BCLK # 2)" durch
die State-Machines der SRAM-Zugriffssteuerung abgefragten, für den Zugriff relevanten
Prozessor-Ausgangssignale folgenden Zustand aufweisen:
- - Transfer-Start (!TS = true)
- - Schreib/Lese-Signal (R/!W = Write)
- - Selectadressen (A31, A21, A20, A19 = SRAM-Segment)
- - Transfer-Typ-Encoding-Signals (TT1, TT0 = Normal oder Move-16).
In diesem Fall verlassen die Steuerwerke "SRAM-Access-Control", "SRAM-Write-
Control" sowie "Access-Error-Control" mit der positiven Flanke des "Taktsignals (BCLK #
2)" gleichzeitig den Zustand "Wait-Access" und führen bei diesem State-Übergang
entsprechend ihrer unterschiedlichen Funktion auch unterschiedliche Aktionen durch und
zwar:
- - "SRAM-Access-Control (ram-state)"
- Die "State-Machine (ram-state → ram-wst1)" wechselt unabhängig vom Schreib/ Lese-Signal (R/!W) in den nächsten Zustand. Falls die Anzahl der einzustellenden Wait-States (w = 1) ist, wird jetzt das individuelle Quittungssignal "Delayed-SRAM- Transfer-Acknowledge (sram-ta → true)" nach dem sogenannten "Moore Prinzip" mittels eines speziellen "State-Bits (sram-ta)" erzeugt. Außerdem wird jetzt unabhängig vom Zustand der Signale "Transfer-Size []" der "Word-Count (wrd-cnt[] → 0)" für BURST-Transfers rückgesetzt.
- - "SRAM-Write-Control (wram-state)"
- Beim "Stateübergang (wram-state → wram-acc/wst1)" wird gleichzeitig der Schreibimpuls "SRAM-Write-Enable (!we-ram → true)" von der State-Machine selbst ebenfalls mittels eines speziellen State-Bits (sram-we → true)" aktiviert, da das Enable-Signal "SRAM-Segment (ram-seg = true)" zur Freigabe dieses Schreibimpules bei diesem Zugriff valid ist. Die zu Beginn des "Clock-Zyklus (C2w1/ Wait-State # 1)" gespeicherten "Lang-Wort-Adressen (adr-ram[3 . . . 2])" bleiben dagegen unverändert.
- - "SRAM-Read-Control (ram-state)"
- Dieses Steuerwerk bleibt während des gesamten WRITE-Zugriffs auf das SRAM weiterhin im Zustand "Wait-Access (rram-state = rram-wacc)"
- - Access-Error-Control (mem-State)"
- Da das Quittungssignal "Transfer-Error-Acknowledge (!TEA)" mit einer Verzögerung von zwei Wait-States erzeugt wird, bleibt bei diesem "State-Übergang (mem-state → mem-wst2)" das zugehörige Signal "Delayed-Transfer-Error- Acknowledge (smem-tea)" im Zustand "nicht aktiv (false)".
Anmerkung:
Dieser "Clock-Zyklus (C2w1/Wait-State # 1)" ist für alle WRITE-Zugriffsalternativen auf das SRAM mit "Selectadressen (A31, A21, A20, A19 = SRAM-Segment)" identisch:
Dieser "Clock-Zyklus (C2w1/Wait-State # 1)" ist für alle WRITE-Zugriffsalternativen auf das SRAM mit "Selectadressen (A31, A21, A20, A19 = SRAM-Segment)" identisch:
Entsprechend der "Data-Setup-Time" der verwendeten Speicherelemente können hier
weitere "Wait-States (Wn)" eingefügt werden. In diesem Fall, d. h. Anzahl der
einzustellenden Wait-States (w < 1), wird das Signal "Delayed-SRAM-Transfer-
Acknowledge (sram-ta → true)" später erzeugt und zwar im letzten Warte-Zyklus vor dem
"Ende-Zyklus (C2)". Während dieser zusätzlichen Wait-States bleibt das Signal "SRAM-
Write-Enable (!we-ram = true)" weiterhin im Zustand aktiv. Der "Word-Count (wrd-cnt[])"
sowie die gespeicherten "Lang-Wort-Adressen (adr-ram[3 . . . 2])" bleiben dabei ebenfalls
unverändert.
Zu Beginn dieses Verzweigungs-Zyklus, der zugleich Endezyklus für die
Zugriffsalternativen "NORMAL-, BURST (Langwort # 1)- und INVALID-WRITE" ist,
verlassen die Steuerwerke mit der positiven Flanke des "Taktsignals (BCLK # 3)"
gleichzeitig den Zustand "Wait-State # 1" und führen dabei folgende State-Transitions
durch:
- - "SRAM-Access-Control (ram-state → ram-wst0)"
- - "SRAM-Write-Control (wram-state → wram-eacc/wst0)"
- - "Access-Error-Control (mem-state → mem-wst1)".
Am Ende dieses Verzweigungs-Zyklus werden mit der nächsten positiven Flanke des
"Taktsignals (BCLK # 4)" von den Steuerwerken "SRAM-Access-Control" und "SRAM-
Write-Control" die folgenden Signale abgefragt:
- - Transfer-Size (SIZ0, SIZ1)
- - Word-Count (wrd-cnt[])
- - Segment-Adresse A30 . . . A22 und A18 . . . A0).
Abhängig vom Ergebnis dieser Abfrage sind 3 Verarbeitungsalternativen möglich und zwar:
- - gültiger NORMAL-WRITE-Zugriff (siehe Abschnitt: 8.3.6.2.2.1)
- - gültiger BURST-WRITE-Zugriff (siehe Abschnitt: 8.3.6.2.2.2)
- - ungültiger WRITE-Zugriff (siehe Abschnitt: 8.3.6.2.2.3)
deren Ablauf und Steuerung im Folgenden einzeln beschrieben wird.
Ausgehend vom vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" verlassen zu
Beginn dieses Verzweigungs-Zyklus, der zugleich Endezyklus für diese Zugriffsalternative
"NORMAL-WRITE" ist die Steuerwerke "SRAM-Access-Control", "SRAM-Write-
Control" sowie "Access-Error-Control" mit der positiven Flanke des "Taktsignals (BCLK #
3)" gleichzeitig den Zustand "Wait-State # 1" und führen beim State-Übergang
entsprechend ihrer unterschiedlichen Aufgabe folgende Aktionen durch:
- - "SRAM-Access-Control (ram-state)"
- Beim "State-Übergang (ram-state → ram-wst0)" wird durch die State-Machine gleichzeitig das zu Beginn des vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" aktivierte individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → false)" desaktiviert. Der "Word-Count (wrd-cnt[])" bleibt dabei unverändert.
- - "SRAM-Write-Control (wram-state)"
- Beim "State-Übergang (wram-state → wram-eacc/wst0)" wird gleichzeitig das Schreib-Signal "SRAM-Write-Enable (!we-ram → false)" mittels des speziellen "State-Bits (sram-we → false)" nicht-aktiv geschaltet. Die zu Beginn des vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" gespeicherten "Lang- Wort-Adressen (adr-ram[3 . . . 2])" bleiben dagegen unverändert.
- - "Access-Error-Control (mem-state)"
- Die State-Machine "mem-state" wechselt in den nächsten Zustand "(mem-state → mem-wst1)" und aktiviert dabei das Quittungssignal "Delayed-Transfer-Error- Acknowledge (smem-tea → true)".
Die von den Steuerwerken "SRAM-Access-Control" und "Access-Error-Control" erzeugten
Quittungssignale "Delayed-SRAM-Transfer-Acknowledge (sram-ta)" und "Delayed-
Transfer-Error-Acknowledge (smem-tea)" werden in der Funktionsgruppe "Acknowledge
Control" weiterverarbeitet und daraus die eigentlichen Quittungssignale zur Bedienung der
Prozessorschnittstelle abgeleitet.
- - "Transfer-Acknowledge (!TA)"
- Das vom Steuerwerk "SRAM-Access-Control" generierte individuelle Quittungssignal "SRAM-Transfer-Acknowledge (sram-ta)" wird, wie beschrieben eine Taktperiode vor dem Abschluß des SRAM-Zugriffszyklus erzeugt. Das eigentliche Quittungssignal "Transfer-Acknowledge (!TA)", das dem Prozessor das Ende des SRAM-Zugriffs signalisieren soll, wird dann vom Signal "SRAM-Transfer-Acknowledge (sram-ta)" abgeleitet und zwar durch eine logische UND-Verknüpfung desselben mit den Enable- Signal "SRAM-Segment (ram-seg)" und anschließendem Nachsynchronisieren mit dem "Taktsignal (BCLK)".
- Da es sich in diesem Fall um einen normalen gültigen WRITE-Zugriff handelt, wird dieses Quittungssignal, das nur beim Zugriff auf gesperrte Adreßbereiche unterdrückt werden darf, freigegeben d. h. "Transfer-Acknowledge (!TA → true)", weil das Enable-Signale "SRAM-Segment (ram-seg = true)" ist.
- Das so erzeugte Quittungssignal "Transfer-Acknowledge (!TA = true)", wird vom Prozessor mit der nächsten positiven Flanke des "Taktsignals (BCLK # 4)" abgetastet und damit der folgende Zugriffs-Zyklus eingeleitet.
- - "Transfer-Error-Acknowledge (!TEA)"
- Das eigentliche Quittungssignal "Transfer-Error-Acknowledge (!TEA)" zur Anzeige von Zugriffsfehlern an den Prozessor wird vom Signal "Delayed-Transfer-Error- Acknowledge (smem-tea)" abgeleitet und zwar durch eine logische UND- Verknüpfung desselben mit speziellen Enable-Signalen "Invalid-Memory-Segment" und anschließender Nachsynchronisierung durch das "Taktsignal (BCLK)".
- Da es sich in diesem Fall um einen normalen gültigen WRITE-Zugriff handelt, wird dieses Quittungssignal, das nur beim Zugriff auf gesperrte Adreßbereiche oder nicht zugelassene Zugriffsarten aktiv werden darf, unterdrückt d. h. "Transfer-Error- Acknowledge (!TEA → false)", weil das Enable-Signale "Invalid-Memory-Segment (ram-rseg = false)" ist.
Für die Beendigung eines gültigen "NORMAL-WRITE-Zugriff auf das SRAM" müssen die
am Schluß dieses Verzweigungs/Ende-Zyklus mit der nächsten positiven Flanke des
"Taktsignals (BCLK # 4)" von den Steuerwerken "SRAM-Access-Control" und "SRAM-
Write-Control" abgefragten Signale folgenden Zustand aufweisen:
- - Transfer-Size (SIZ_[] ! = line)
- - Segment-Adresse (A30 . . . A22, A18 . . . A0 = SRAM-Segment).
In diesem Fall wird der "NORMAL-WRITE-Zugriff auf das SRAM" beendet und damit die
State-Machines der SRAM-Zugriffsteuerung für den nächste Zugriffszyklus vorbereitet.
Zu Beginn dieses Clock-Zyklus werden mit der gleichen positiven Flanke des "Taktsignals
(BCLK # 4)" das im vorangegangenen "NORMAL-WRITE-Zugriff" erzeugte
Quittungssignal "Transfer-Acknowledge (!TA = true)" vom Prozessor abgetastet und damit
der nächste Zugriffszyklus eingeleitet. Gleichzeitig verlassen die Steuerwerke den
derzeitigen Zustand und führen dabei folgende State-Transitions und Aktionen durch:
- - "SRAM-Access-Control (ram-state)"
- Die State-Machine "ram-state" wechselt in den Ruhezustand "Wait-Access (ram- state → ram-wacc)". Dabei bleibt das individuelle Quittungssignal "Delayed-SRAM- Transfer-Acknowledge (sram-ta = false)" desaktiviert.
- - "SRAM-Write-Control (wram-state)"
- Beim State-Übergang in den Zustand "Wait-Access (wram-state → wram-wacc)" bleibt das Schreibsignal "SRAM-Write-Enable (!we-ram = false)" desaktiviert.
- - "Access-Error-Control (mem-state)"
- Die State-Machine "mem-state" wechselt ebenfalls in den Zustand "Wait-Access (mem-state → mem-wacc)" und desaktiviert dabei das Quittungssignal "Delayed- Transfer-Error-Acknowledge (smem-tea → false)".
Während dieses Clock-Zyklus wird auch das Steuersignal "SRAM-Chip-Select (!cs-ram →
false)", das mittels kombinatorischer Verknüpfung der "Selectadressen A31, A21, A20 und
A19" sowie der zugehörigen "Transfer-Attribute" während des "Clock-Zyklus (C1/
Initialzyklus)" erzeugt wurde, in den Zustand "nicht-aktiv" geschaltet.
Ausgehend vom vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" verlassen zu
Beginn dieses Verzweigungs-Zyklus, der zugleich Endezyklus für diese Zugriffsalternative
"BURST-WRITE-Langwort # 1" ist, die Steuerwerke "SRAM-Access-Control", "SRAM-
Write-Control" sowie "Access-Error-Control" mit der positiven Flanke des "Taktsignals
(BCLK # 3)" gleichzeitig den Zustand "Wait-State # 1" und führen beim State-Übergang
entsprechend ihrer unterschiedlichen Aufgabe folgende Aktionen durch:
- - "SRAM-Access-Control (ram-state)"
- Beim "State-Übergang (ram-state → ram-wst0)" wird durch die State-Machine gleichzeitig das zu Beginn des vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" aktivierte individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → false)" desaktiviert. Der ebenfalls zu Beginn des vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" initiierte "Word-Count (wrd-cnt[])" bleibt dagegen unverändert.
- - "SRAM-Write-Control (wram-state)"
- Beim "State-Übergang (wram-state → wram-eacc/wst0)" wird gleichzeitig das Schreib-Signal "SRAM-Write-Enable (!we-ram → false)" mittels des speziellen "State-Bits (sram-we → false)" nicht-aktiv geschaltet. Die zu Beginn des vorangegangenen "Clock-Zyklus (C2w1/Wait-State # 1)" gespeicherten "Lang- Wort-Adressen (adr-ram[3 . . . 2])" bleiben ebenfalls unverändert.
- - "Access-Error-Control (mem-state)"
- Da beim Zugriff auf das SRAM der zeitliche Ablauf für "NORMAL-Zyklen" sowie den "1. Langwort Transfer (Initial-Transfer) eines BURST-Zyklus" identisch ist und das Steuerwerk "Access-Error-Control" bei jedem Zugriff durch das Signal "Tranfer-Start (!TS = true)" gestartet wird, gilt hier für die Erzeugung des Quittungssignal "Delayed-Transfer-Error-Acknowledge (smem-tea)" das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung von gütigen NORMAL-WRITE-Zugriffen auf das SRAM" bereits beschrieben.
Das Gleiche gilt für die von den Steuerwerken "SRAM-Access-Control" und "Access-
Error-Control" erzeugten Quittungssignale "Delayed-SRAM-Transfer-Acknowledge
(sram-ta)" und "Delayed-Transfer-Error-Acknowledge (smem-tea)", die in der
Funktionsgruppe "Acknowledge-Control" weiterverarbeitet werden.
Für die Beendigung eines gültigen "BURST-WRITE-Zugriffs auf das Langwort # 1"
müssen die am Schluß dieses Verzweigungs/Ende-Zyklus mit der nächsten positiven
Flanke des "Taktsignals (BCLK # 4)" abgefragten Signale folgenden Zustand aufweisen:
- - Transfer-Size (SIZ-[] = line) und
- - Word-Count (wrd-cnt[] < wrd-cnt-max) und
- - Segment-Adresse (A30 . . . A22, A18 . . . A0 = SRAM-Segment).
In diesem Fall wird der "BURST-WRITE-Zugriff auf das Langwort # 1" beendet und damit
die State-Machines der SRAM-Zugriffsteuerung für den Zugriff auf das "Langwort # 2"
vorbereitet.
Zu Beginn dieser Clock-Zyklen werden mit der positiven Flanke des "Taktsignals (BCLK)"
das im vorangegangenen "BURST-WRITE-Zugriff/Langworte # 1 bzw. # 2" jeweils
erzeugte Quittungssignal "Transfer-Acknowledge (!TA = true)" vom Prozessor abgetastet
und damit der nächste Zugriffs-Zyklus eingeleitet.
Die "Clock-Zyklen (C3w1, C4w1/Wait-State # 1)" sind prinzipiell identisch mit dem
"Clock-Zyklus (C2w1/Wait-State # 1) zu Beginn eines jeden WRITE-Zugriffs auf das
SRAM. Dies bedeutet, daß am Anfang jedes dieser Clock-Zyklen mit der positiven Flanke
des "Clock-Signals (BCLK)" folgende Aktion von der State-Machine "SRAM-Write-
Control" durchgeführt wird:
- - "SRAM-Write-Control (wram-state)"
- Beim "Stateübergang (wram-state → wram-acc/wst1)" wird gleichzeitig der Schreibimpuls "SRAM-Write-Enable (!we-ram → true)" von der State-Machine selbst mittels des speziellen State-Bits (sram-we → true)" aktiviert, weil das mit diesem über eine logische UND-Funktion verknüpfte Enable-Signal "SRAM-Segment (ram-seg = true)" zur Freigabe des Schreibimpulses bei diesem Zugriff valid ist.
Im Unterschied zum genannten "Clock-Zyklus (C2w1/Wait-State # 1)" wird jedoch am
Anfang jedes dieser "Clock-Zyklen (C3w1, C4w1/Wait-State # 1)" mit der positiven
Flanke des "Clock-Signals (BCLK)" folgende Aktionen zusätzlich durchgeführt:
- - Inkrementieren des "Word-Count (wrd-cnt[] = wrd-cnt[] + 1)" ausgehend von dem während des vorangegangenen "Clock-Zyklus (C2w1 bzw. C3w1/Wait-State # 1)" initiierten bzw. erzeugten Wert.
- - Inkrementieren der "Lang-Wort-Adressen (adr-ram[3 . . . 2] = adr-ram[3 . . . 2] + 1)" ausgehend von der während des vorangegangenen "Clock-Zyklus (C2w1 bzw. C3w1/ Wait-State # 1)" gespeicherten Initialadresse bzw. erzeugten Adresse und damit Adressieren der "Langworte # 2 bzw. # 3".
Im Anschluß an jeden dieser "Clock-Zyklen (C3w1 und C4w1)" können ebenfalls weitere
"Clock-Zyklen (C3wn/Wait-States # n) bzw. (C4wn/Wait-States # n)" eingefügt werden,
falls die Zugriffszeit der verwendeten Speicherelemente dies erfordert. "SRAM-Write-
Enable (!we-ram = true)", "Word-Count" sowie "Lang-Wort-Adressen" bleiben während
dieser zusätzlichen "Wait-States" unverändert.
Zu Beginn dieses Zyklus verlassen die Steuerwerke "SRAM-Access-Control" und "SRAM-
Write-Control" mit der positiven Flanke des "Taktsignals (BCLK)" gleichzeitig den Zustand
"Wait-State # 1" und führen in diesem Fall, d. h. "BURST-WRITE-Zugriff" auf das SRAM,
beim State-Übergang entsprechend ihrer unterschiedlichen Aufgabe folgende Aktionen
durch:
- - "SRAM-Access-Control (ram-state)"
- Beim "State-Übergang (ram-state → ram-wst0)" wird durch die State-Machine gleichzeitig das zu Beginn des vorangegangenen "Clock-Zyklus (C3w1 bzw. C4w1/ Wait-State # 1)" aktivierte individuelle Quittungssignal "Delayed-SRAM-Transfer- Acknowledge (sram-ta → false)" desaktiviert. Der zu Beginn des vorangegangenen "Clock-Zyklus (C3w1 oder C4w1/Wait-State # 1)" inkrementierte "Word-Count (wrd-cnt[])" bleibt jedoch unverändert.
- - "SRAM-Write-Control (wram-state)"
- Beim "State-Übergang (wram-state → wram-eacc/wst0)" wird gleichzeitig das Schreib-Signal "SRAM-Write-Enable (!we-ram → false)" mittels des speziellen "State-Bits (sram-we → false)" nicht-aktiv geschaltet. Die zum Beginn des vorangegangenen "Clock-Zyklus (C3w1 oder C4w1/Wait-State # 1)" inkrementierten "Lang-Wort-Adressen (adr-ram[3 . . . 2])" bleiben ebenfalls unverändert.
- - "Access-Error-Control (mem-state)"
- Diese State-Machine bleibt während des "BURST-Zugriffs" im Zustand "Wait-Access (mem-state = mem-wacc)".
Für das vom Steuerwerk "SRAM-Access-Control" erzeugte Quittungssignal "Delayed-
SRAM-Transfer-Acknowledge (sram-ta)", das in der Funktionsgruppe "Acknowledge-
Control" weiterverarbeitet wird, gilt das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung
von gütigen NORMAL-WRITE-Zugriffen auf das SRAM" bereits beschrieben.
Um einen gültigen "BURST-WRITE-Zugriff auf die Langworte # 2 bzw. # 3" zu beenden,
müssen die am Ende dieses Verzweigungs-Zyklus mit der nächsten positiven Flanke des
"Taktsignals (BCLK)" abgefragten Signale folgenden Zustand aufweisen:
- - Transfer-Size (SIZ-[] = line) und
- - Word-Count (wrd-cnt[] < wrd-cnt-max) und
- - Segment-Adresse (A30 . . . A22, A18 . . . A0 = SRAM-Segment).
In diesem Fall wird der "BURST-WRITE-Zugriff" auf die "Langworte # 2 bzw. # 3"
abgeschlossen und damit die State-Machines der SRAM-Zugriffsteuerung für den Zugriff
auf das "Langwort # 4" vorbereitet.
Zu Beginn dieses Clock-Zyklus werden mit der positiven Flanke des "Taktsignals (BCLK)"
das im vorangegangenen "BURST-WRITE-Zugriff/Langwort # 3" erzeugte
Quittungssignal "Transfer-Acknowledge (!TA = true)" vom Prozessor abgetastet und damit
der nächste Zugriff auf das "Langwort # 4" eingeleitet.
Der "Clock-Zyklus (C5w1/Wait-State # 1)" ist ebenfalls prinzipiell identisch mit dem
"Clock-Zyklus (C2w1/Wait-State # 1) zu Beginn eines jeden WRITE-Zugriffs auf das
SRAM. Dies bedeutet, daß am Anfang dieses Clock-Zyklen mit der positiven Flanke des
"Clock-Signals (BCLK)" folgende Aktion von der State-Machine "SRAM-Write-Control"
durchgeführt wird:
- - "SRAM-Write-Control (wram-state)"
- Beim "Stateübergang (wram-state → wram-acc/wst1)" wird gleichzeitig der Schreibimpuls "SRAM-Write-Enable (!we-ram → true)" von der State-Machine selbst mittels des speziellen State-Bits (sram-we → true)" aktiviert, da das Enable-Signal "SRAM-Segment (ram-seg = true)" zur Freigabe dieses Schreibimpulses bei diesem Zugriff valid ist.
Im Unterschied zum genannten "Clock-Zyklus (C2w1/Wait-State # 1)" wird jedoch am
Anfang dieses "Clock-Zyklen (C5w1/Wait-State # 1)" mit der positiven Flanke des
"Clock-Signals (BCLK)" folgende Aktionen zusätzlich durchgeführt:
- - Inkrementieren des "Word-Count (wrd-cnt[] = wrd-cnt[] + 1)" ausgehend von dem während des vorangegangenen "Clock-Zyklus (C4w1/Wait-State # 1)" erzeugten Wert.
- - die "Lang-Wort-Adressen (adr-ram[3 . . . 2] = adr-ram[3 . . . 2] + 1)" werden ausgehend von der während des vorangegangenen "Clock-Zyklus (C4w1/Wait-State # 1)" erzeugten Adresse inkrementiert und damit das "Langwort # 4" adressiert.
Im Anschluß an diesen "Clock-Zyklus (C5w1)" können ebenfalls weitere "Clock-Zyklen
(C5wn/Wait-States # n)" eingefügt werden, wenn die Zugriffszeit der verwendeten
Speicherelemente dies erfordert. "SRAM-Write-Enable (!we-ram = true)", "Word-Count"
sowie "Lang-Wort-Adressen" bleiben während dieser zusätzlichen "Wait-States"
unverändert.
Zu Beginn des "Clock-Zyklus (C5)" verlassen die Steuerwerke "SRAM-Access-Control",
"SRAM-Write-Control" sowie "Access-Error-Control" mit der positiven Flanke des
"Taktsignals (BCLK)" gleichzeitig den Zustand "Wait-State # 1" und führen in diesem Fall
d. h. "BURST-WRITE-Zugriff" auf das SRAM beim State-Übergang entsprechend ihrer
unterschiedlichen Aufgabe folgende Aktionen durch:
- - "SRAM-Access-Control (ram-state)"
- Beim "State-Übergang (ram-state → ram-wst0)" wird durch die State-Machine gleichzeitig das individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → false)" desaktiviert. Der zu Beginn des vorangegangenen "Clock-Zyklus (C5w1/Wait-State # 1)" inkrementierte "Word-Count (wrd-cnt[])" bleibt unverändert.
- - "SRAM-Write-Control (wram-state)"
- Beim "State-Übergang (wram-state → wram-eacc/wst0)" wird gleichzeitig das Schreib-Signal "SRAM-Write-Enable (!we-ram → false)" mittels des speziellen "State-Bits (sram-we → false)" nicht-aktiv geschaltet. Die zum Beginn des vorangegangenen "Clock-Zyklus (C5w1/Wait-State # 1)" inkrementierten "Lang- Wort-Adressen (adr-ram[3 . . . 2])" bleiben ebenfalls unverändert.
- - "Access-Error-Control (mem-state)"
- Die "State-Machine (mem-state)" bleibt während des "BURST-Zugriffs" weiterhin im Zustand "Wait-Access (mem-state = mem-wacc)".
Für das vom Steuerwerk "SRAM-Access-Control" erzeugte Quittungssignal "Delayed-
SRAM-Transfer-Acknowledge (sram-ta)", das in der Funktionsgruppe "Acknowledge-
Control" weiterverarbeitet wird, gilt das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung
von gütigen NORMAL-WRITE-Zugriffen auf das SRAM" bereits beschrieben.
Für die Beendigung eines gültigen "BURST-WRITE-Zugriffs" auf das "Langwort # 4"
müssen die am Schluß dieses Verzweigungs-/Ende-Zyklus mit der nächsten positiven
Flanke des "Taktsignals (BCLK)" abgefragten Signale folgenden Zustand aufweisen:
- - Transfer-Size (SIZ-[] = line) und
- - Word-Count (wrd-cnt[] = wrd-cnt-max) und
- - Segment-Adresse (A30 . . . A22, A18 . . . A0 = SRAM-Segment).
In diesem Fall wird der "BURST-WRITE-Zugriff" auf das "Langwort # 4" beendet und
damit die State-Machines der SRAM-Zugriffsteuerung für den nächsten Zugriffszyklus
vorbereitet.
Zu Beginn dieses Clock-Zyklus werden mit der positiven Flanke des "Taktsignals
(BCLK)" das im vorangegangenen "BURST-WRITE-Zugriff" erzeugte Quittungssignal
"Transfer-Acknowledge (!TA = true)" vom Prozessor abgetastet, damit der BURST-
Zugriff beendet und der nächste Zugriffszyklus eingeleitet.
Für die Steuerwerke:
- - "SRAM-Access-Control (ram-state)"
- - "SRAM-Write-Control (wram-state)"
- - "Access-Error-Control (mem-state)"
gilt das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung von gütigen Normal-WRITE-
Zugriffen auf das SRAM" bereits beschrieben.
Weil die Steuerung eines solchen ungültigen "NORMAL- bzw. BURST-WRITE-Zugriffs"
auf das SRAM während dieses "Clock-Zyklus (C2)" identisch mit dem eines gültigen
"NORMAL- bzw. BURST (Langwort # 1) -WRITE-Zugriff" auf das SRAM ist, bedeutet
dies aber auch, daß aufgrund der Beschaltung des Steuerwerks "SRAM-Write-Control"
lediglich mit den signifikanten "Selectadressen A31, A21, A20, A19" sowie den benötigten
"Transfer-Attributen" unzulässige Schreib-Zugriffe gestartet werden können, die wie schon
bei den entsprechenden ungültigen "NORMAL- bzw. BURST-READ-Zugriffen"
beschrieben, als sogenannte "No-Operation-Zugriffe" durchgeführt werden.
Damit verbundene mögliche Fehlfunktionen werden verhindert, indem:
- - Veränderungen im Speicher bei Schreibzugriffen verhindert werden, indem die Schreibimpulse von der State-Machine "SRAM-Write-Control" eine Taktperiode vor deren eigentlicher Verwendung erzeugt werden und somit durch deren Verknüpfung (UND-Funktion) mit dem Signal "SRAM-Segment (ram-seg)" die Erzeugung der Signale "SRAM-Write-Enable (!we-ram)" unterdrückt werden kann und außerdem
- - bei "BURST-WRITE-Zugriffen" die State-Machines "SRAM-Write-Control" sowie "SRAM-Access-Control" nach dem ersten Langwort-Zugriff gestoppt und in den "Wait-State (bereit für den nächsten Zugriff)" gebracht werden.
Dies bedeutet für die Steuerung eines ungültigen WRITE-Zugriffs durch die State-Machines
"SRAM-Access-Control", "SRAM-Write-Control" sowie "Access-Error-Control", daß
diese zu Beginn dieses Zyklus mit der positiven Flanke des "Taktsignals (BCLK # 3)"
gleichzeitig den Zustand "Wait-State # 1" verlassen und bei diesem State-Übergang
entsprechend ihrer unterschiedlichen Aufgabe unterschiedliche Aktionen durchführen und
zwar:
- - "SRAM-Access-Control (ram-state)"
- Beim State-Übergang (ram-state → ram-wst0) wird durch die State-Machine gleichzeitig das individuelle Quittungssignal "Delayed-SRAM-Transfer-Acknowledge (sram-ta → false)" desaktiviert.
- - "SRAM-Write-Control (wram-state)"
- Beim "Stateübergang (wram-state → wram-acc/wst1)" wird gleichzeitig der Schreibimpuls "SRAM-Write-Enable (!we-ram = false)" desaktiviert, weil das Enable- Signal "SRAM-Segment (ram-seg = false)" zur Freigabe dieses Schreibimpulses bei diesem ungültigen Zugriff invalid ist.
- - "Access-Error-Control (mem-state)"
- Die State-Machine "mem-state" wechselt in den nächsten Zustand "(mem-state → mem-wst1)" und aktiviert dabei das Quittungssignal "Delayed-Transfer-Error- Acknowledge (smem-tea → true)".
Für die von den Steuerwerken "SRAM-Access-Control" und "Access-Error-Control"
erzeugten Quittungssignale "Delayed-SRAM-Transfer-Acknowledge (sram-ta)" und
"Delayed-Transfer-Error-Acknowledge (smem-tea)", die in der Funktionsgruppe
"Acknowledge-Control" weiterverarbeitet werden, um daraus die eigentlichen
Quittungssignale zur Bedienung der Prozessorschnittstelle abzuleiten, gilt prinzipiell das
Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung von gütigen NORMAL-WRITE-
Zugriffen auf das SRAM" bereits beschrieben, jedoch mit dem Unterschied, daß:
- - "Transfer-Acknowledge (!TA)"
- Da es sich in diesem Fall um einen ungültigen Zugriff handelt, wird das Quittungssignal "Transfer-Acknowledge (!TA)", das nur beim Zugriff auf gültige Adreßbereiche freigegeben werden darf, unterdrückt d. h. "Transfer-Acknowledge (!TA = false)", weil das Enable-Signal "SRAM-Segment (ram-seg = false)" ist.
- - "Transfer-Error-Acknowledge (!TEA)"
- Weil es sich in diesem Fall um einen ungültigen Zugriff handelt, wird dieses Quittungssignal, das nur beim Zugriff auf gesperrte Adreßbereiche oder nicht zugelassene Zugriffsarten aktiv werden darf, freigegeben d. h. "Transfer-Error- Acknowledge (!TEA → true)", weil das Enable-Signal "Invalid-Memory-Segment (ram-rseg = true)" ist.
- Das so erzeugte Quittungssignal "Transfer-Error-Acknowledge (!TEA)" wird vom Prozessor mit der nächsten positiven Flanke des "Taktsignals (BCLK)" abgetastet und damit der bestehende Zugriffszyklus (NORMAL oder BURST) abgebrochen.
Für die Beendigung eines solchen ungültigen "NORMAL- oder BURST-WRITE-Zugriffs"
auf das SRAM" müssen die am Schluß dieses Verzweigungs/Ende-Zyklus mit der
nächsten positiven Flanke des "Taktsignals (BCLK # 4)" von den Steuerwerken "SRAM-
Access-Control" und "SRAM-Write-Control" abgefragten Signale folgenden Zustand
aufweisen:
- - Transfer-Size (SIZ-[] = don′t care)
- - Word-Count (wrd-cnt[] = don′t care)
- - Segment-Adresse (A30 . . . A22, A18 . . . A0 ungleich SRAM-Segment).
In diesem Fall wird der ungültige Zugriffszyklus ("NORMAL" bzw. "BURST nach dem
Langwort # 1") beendet und damit die State-Machines der SRAM-Zugriffsteuerung für den
nächsten Zugriffszyklus vorbereitet.
Zu Beginn dieses Clock-Zyklus werden mit der positiven Flanke des "Taktsignals (BCLK)"
das im vorangegangenen ungültigen WRITE-Zyklus erzeugte Quittungssignal "Transfer-
Error-Acknowledge (!TEA = true)" vom Prozessor abgetastet und damit der bestehende
Zugriffszyklus (NORMAL oder BURST) abgebrochen und eine sogenannte "Bus-Error-
Exception" eingeleitet.
Für die Steuerwerke:
- - "SRAM-Access-Control (ram-state)"
- - "SRAM-Write-Control (wram-state)"
- - "Access-Error-Control (mem-state)"
gilt das Gleiche wie im Abschnitt (8.3.6.2.1.1) "Steuerung von gütigen NORMAL-WRITE-
Zugriffen auf das SRAM" bereits beschrieben.
Claims (16)
1. Verfahren zur Speicher-Zugriffssteuerung für 32-Bit-Hochleistungs-
Mikroprozessoren der 3. Generation (wie z. B. MOTOROLA MC 68040) unter
Verwendung von anwenderprogrammierbaren Logikelementen (wie z. B. ALTERA-EPLD′s
MAX 5000 bzw. MAX 7000) insbesondere für den Einsatz in Rechnersystemen für
sogenannte "(Military)-Embedded-Control-Applications", dadurch gekennzeichnet, daß
die für die Zugriffssteuerung des jeweiligen Subsystems notwendige komplexe
Ablaufsteuerung in einfache Steuerwerke (State-Machines), die auch bei hohen Taktraten (
25 MHz) lauffähig sind, unterteilt wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Zugriffssteuerung für
die jeweiligen Subsysteme, insbesondere für den Speicher, aus vier alternativ parallel
arbeitenden State-Machines besteht, die jeweils für verschiedene Aufgaben zuständig sind
und zwar:
- - einer "Memory-Access-Control", welche die Prozessor-Busschnittstelle bedient,
- - einer "Memory-Read-Control", weiche die Lesezugriffe auf das jeweilige Subsystem durch Erzeugung der dafür notwendigen diskreten Steuersignale durchführt,
- - einer "Memory-Write-Control", die Schreibzugriffe auf das jeweilige Subsystem durch Erzeugung der dafür notwendigen diskreten Steuersignale durchführt
- - einer "Access-Error-Control", die dafür vorgesehen ist, um bei nicht erlaubten Zugriffen eine "Address-Error-Exception" auszulösen und zwar durch Erzeugung des dafür vorgesehenen speziellen Quittungssignals "Transfer-Error-Acknowledge (!TEA)".
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß die Steuerwerke
"Memory-Access-Control" ihre individuellen Quittungssignale "Memory-Transfer-
Acknowledge (mem-ta)" zu einem früheren Zeitpunkt und zwar eine Taktperiode vor dem
Abschluß des jeweiligen Zugriffszyklus erzeugen und daß das eigentliche Quittungssignal
"Tranfer-Acknowledge (!TA)" zur Bedienung der Prozessorschnittstelle dann durch
Nachsynchronisieren mit dem "Takt-Signal (BCLK)", der über eine "ODER-Funktion"
zusammengefaßten Signale "Memory-Transfer-Acknowledge (mem-ta)" aller Subsysteme,
gewonnen wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß die Unterdrückung von
"Transfer-Acknowledge (!TA)" bei unerlaubten Zugriffen dadurch erreicht wird, daß die
einzelnen Signale "Memory-Transfer-Acknowledge (mem-ta)" über eine "UND-Funktion"
mit den jeweiligen Signalen "Valid-Memory-Segment" verknüpft werden, die nur beim
Zugriff auf das entsprechende Speichersegment aktiv werden und daß die dafür benötigten
Signale "Valid-Memory-Segment" durch Dekodierung aller Prozessor-Adressen (A31 . . . A0)
gewonnen werden.
5. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß die alternativen
Quittungssignale "Transfer-Burst-Inhibit (!TBI)" und "Transfer-Cache-Inhibit (!TCI)", die
bei der Steuerung bestimmter Burst-Zugriffe, beispielsweise Burst-Schreib-Zugriffe auf das
EEPROM oder Burst-Lese-Zugriffe auf sogenannte "non-cachable"-Speicherbereiche
Verwendung finden, von den Signalen "Memory-Transfer-Acknowledge (mem-ta)"
abgeleitet werden, indem diese mit speziellen Enable-Signalen verknüpft, "ODER-mäßig"
zusammengefaßt und anschließend mit dem "Takt-Signal (BCKL)" nachsynchronisiert
werden.
6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß
zur Durchführung von Schreib/Lese-Zugriffen auf die jeweiligen Subsysteme, insbesondere
auf die Speicherbänke, jeweils zwei alternativ arbeitende Steuerwerke vorgesehen werden
und zwar
- - einer "Memory-Read-Control", die Lesezugriffe auf das jeweilige Subsystem durch Erzeugung des dafür notwendigen diskreten Steuersignals "Memory- Output-Enable" durchführt, wobei dieses Signal synchron von der State- Machine selbst erzeugt wird und somit durch eine genaue zeitliche Positionierung innerhalb des Zugriffszyklus eine Anpassung an die Dynamik des Datentransfers zum Prozessor erlaubt, und
- - einer "Memory-Write-Control", die Schreibzugriffe auf das jeweilige Subsystem durch Erzeugung der dafür notwendigen diskreten Steuersignale "Memory- Write-Enable" durchführt, wobei diese Signale ebenfalls synchron von der State-Machine selbst erzeugt werden und somit durch genaue zeitliche Positionierung der Signale innerhalb des Zugriffszyklus ebenfalls eine Anpassung an dynamischen Anforderungen der Datenausgabe durch den Prozessor ermöglichen.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß die Steuerwerke
"Memory-Read-Control" und "Memory-Write-Control" sowie die State-Machine "Memory-
Access-Control" mit den signifikanten Selectadressen der 1. Dekodierungsstufe beschaltet
werden und somit Zugriffszyklen mit ausreichend geringen Verzögerungszeiten zur
Realisierung "Zero-Waitstate" ermöglichen.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß zur Vermeidung von
unzulässigen Zugriffen auf nicht voll ausgebaute Segmentbereiche (Restsegmente) sowie im
nicht verwendeten oberen Adreßbereich bei gleichen Selectadressen (Segmentredundanz)
diese Art von Zugriffen als sogenannte "No-Operation-Zugriffe" durchgeführt werden,
wobei damit verbundene mögliche Fehlfunktionen verhindert werden, indem
- - das Quittungssignal "Transfer-Acknowledge (!TA)" bei solchen unzulässigen Zugriffen unterdrückt wird sowie statt dessen
- - das Quittungssignal "Transfer-Error-Acknowledge (!TEA)" erzeugt wird und weiterhin
- - bei Schreib-Zugriffen Veränderungen im Speicher verhindert werden, indem die Schreib-Impulse von der State-Machine "Memory-Write-Control" eine Taktperiode vor deren eigentlicher Verwendung als sogenannte "Pre-Delayed- Memory-Write-Enable" erzeugt werden und somit durch deren Verknüpfung mit dem Signal "Valid-Memory-Segment" die Erzeugung des Signals "Memory- Write-Enable" unterdrückt werden kann und außerdem
- - bei "Burst-Read/Write-Transfers" die State-Machines nach dem "Initial- Zugriff" gestoppt und in den "Wait-State (bereit für den nächsten Zugriff)" gebracht werden und zudem
- - bei "Burst-Read-Transfers" die Signale "Memory-Output-Enable" ebenfalls nach dem ersten Langwort-Zugriff rückgesetzt werden.
9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß
die State-Machine "Access-Error-Control", bei jedem Zugriffszyklus unabhängig von der
angelegten Adresse gestartet wird und bei nicht erlaubten Zugriffen eine "Address-Error-
Exception" auslöst und zwar durch Erzeugung des dafür vorgesehenen speziellen
Quittungssignals "Transfer-Error-Acknowledge (!TEA)".
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß das Steuerwerk "Access-
Error-Control" das Signal "Delayed-Transfer-Error-Acknowledge (mem-tea)" ebenfalls zu
einem früheren Zeitpunkt erzeugt und daß das eigentliche Quittungssignal "Transfer-Error-
Acknowledge (!TEA)" zur Bedienung der Prozessorschnittstelle dann durch
Nachsynchronisieren von "Delayed-Transfer-Error-Acknowledge (mem-tea)" gewonnen
wird.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß die Unterdrückung von
"Transfer-Error-Acknowledge (!TEA)" bei normalen, erlaubten Zugriffen dadurch erreicht
wird, daß "Delayed-Transfer-Error-Acknowledge (mem-tea)" mit den Signalen "Invalid-
Memory-Segment" verknüpft wird, die nur beim Zugriff auf gesperrte Adreßbereiche gültig
werden und daß die Signale "Invalid-Memory-Segment" ebenfalls durch Dekodierung aller
Adressen (A31 . . . A0) gewonnen werden.
12. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß
für die Zugriffssteuerung auf die "On-Board-Peripherie" eigene Steuerwerke vorgesehen
werden, wobei diese ebenfalls mit den signifikanten Selectadressen der 1.
Dekodierungsstufe beschaltet und zum Zeitpunkt "Transfer-Start (!TS = true)" dekodiert
werden und im Fall "Select-Adresse = Peripherie-Adresse" ein Starten der State-Machine
bedingen, wobei im Unterschied zum Speicher-Zugriff die restlichen Adressen jedoch im
nächsten State dekodiert (2. Dekodierungsstufe) werden und somit ein Anhalten der State-
Machine bei nicht erlaubten Zugriffen erlauben.
13. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß
die Fähigkeit zur Durchführung einer vollständigen "32-Bit Adreßdekodierung" dadurch
erreicht wird, daß die begrenzte Anzahl von schnellen "Dedicated-Inputs", sowie die
begrenzte "Internal Interconnect"-Fähigkeit der EPLD′s umgangen wird und zwar durch
eine zweistufige Adreßdekodierung.
14. Verfahren nach Anspruch 13, dadurch gekennzeichnet, daß zur zweistufigen
Adreßdekodierung in der "1. Dekodierungsstufe" nur ein Teil der Adressen und zwar die
signifikanten Select-Adressen unmittelbar über die schnellen "Dedicated Inputs" den State-
Machines aufgeschaltet werden und in der "2. Dekodierungsstufe" die restlichen Adressen
über die "langsamen" I/O-Eingänge dem EPLD zugeführt, dekodiert und dann dazu
verwendet werden um:
- - gültige Zugriffe auf Speichersegmente, sowie
- - ungültige Zugriffe auf nicht voll ausgebaute Segmentbereiche (sogenannte "Restsegmente") und weiterhin
- - ungültige Zugriffe im nicht verwendeten oberen Adreßbereich bei gleichen Selectadressen (Segmentredundanz) zu erkennen.
15. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß
zusammengehörige Funktionsgruppen wie z. B. "Memory-Access-Control" bzw. "Memory-
Read/Write-Control" innerhalb von Funktionsblöcken (Logic-Array-Blocks/LAB′s)
untergebracht werden, um zusätzliche Verzögerungen über den internen Bus
(Programmable-Interconnect-Array/PIA) zu vermeiden, indem die die Funktionsblöcke
bestimmenden Schaltungselemente wie die Pinbelegung für Ein- und Ausgänge, sowie die
Macro-Zellen für sogenannte "Buried-Logic" vordefiniert (festgeschrieben) werden.
16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß die Beschaltung der
einzelnen Funktions- und Signalgruppen derart geschieht, daß
- - zum Takten aller State-Machines ein gemeinsames Clock-Signal verwendet wird, welches die gleiche Frequenz sowie Phasenlage (absolut synchron) wie der "Prozessor-Bus-Clock (BCLK)" aufweist und dieses Clock-Signal zudem als sogenannter "Sync-Clock" dem EPLD aufgeschaltet wird, um der dynamischen Bus-Spezifikation des Prozessors zu genügen, daß
- - alle Steuersignale, wie: "Memory-Output-Enable" und "Memory-Write-Enable" zur Kontrolle des synchronen Datenverkehrs bei Speicher-Zugriffen, sowie deren Ende-Quittungen, wie: "Transfer-Acknowledge (!TA)", "Transfer-Burst- Inhibit (!TBI)", "Transfer-Cache-Inhibit (!TCI)" und "Transfer-Error- Acknowledge (!TEA)", synchron von diesem "Clock-Signal (BCLK)" erzeugt werden, um einmal den dynamischen Anforderungen des synchronen Bus- Protokolls des Prozessors zu entsprechen sowie zum anderen, um sogenannte "Glitches" (d. h. Mehrfach-Schaltvorgänge innerhalb einer Clock-Periode) zu vermeiden, die bei logischen Verknüpfungen von nicht synchronisierten digitalen Signalen entstehen können, daß
- - zudem die Signale "Memory-Write-Enable" mit einem sogenannten "Vorhalt"
erzeugt werden, d. h. eine Taktperiode vor dem Ende des Zugriffs-Zyklusses,
um zu vermeiden, daß aufgrund der begrenzten Dynamik der EPLD′s, ungültige
Daten in den Speicher eingeschrieben werden und zwar wegen
t(wpf) < t(dh); mit:
t(dh) = time BCLK-high to data-out-hold (9 ns/min @ 25 MHz)
t(wpf) = time BCLK-high to write-pulse-false (13 ns/max für EPM 5130-3) und daß - - die Quittungssignale "Transfer-Acknowledge (!TA)" und "Transfer-Error- Acknowledge (!TEA)" ebenfalls zu einem früheren Zeitpunkt erzeugt werden, um dann durch eine zusätzliche Verknüpfung derselben mit speziellen Enable- Signalen und Nachsynchronisierung mit dem "Taktsignal (BCLK)" deren Freigabe bzw. Unterdrückung im Bedarfsfall (valid/invalid-Transfers) zu erreichen, und daß
- - die Steuersignale "Memory-Chip-Select" zur Anwahl einer Speicherbank wegen der großen "Chip-Select-Access-Time" der Speicherbausteine zum frühestmöglichen Zeitpunkt und zwar unmittelbar aus den Select-Adressen abgeleitet werden, ohne auf das Valid-Kriterium "Transfer-Start (!TS = true)" zu warten, und daß
- - die zur Unterscheidung und Signalisierung von gültigen und ungültigen Speicherzugriffen zwingend erforderliche "32-Bit-Adreßdekodierung" zweistufig durchgeführt wird und daß
- - zeitkritische Eingangssignale, wie: die signifikanten Select-Adressen und die zugehörigen Transfer-Attribute, dem EPLD über die sogenannten "Dedicated Inputs" zugeführt werden, um die "Setup-Spezifikation" dieser Bauteile einzuhalten.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE1995141946 DE19541946A1 (de) | 1995-11-10 | 1995-11-10 | Verfahren zur Speicher-Zugriffssteuerung für 32-Bit-Hochleistungs-Mikroprozessoren der 3. Generation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE1995141946 DE19541946A1 (de) | 1995-11-10 | 1995-11-10 | Verfahren zur Speicher-Zugriffssteuerung für 32-Bit-Hochleistungs-Mikroprozessoren der 3. Generation |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19541946A1 true DE19541946A1 (de) | 1997-05-15 |
Family
ID=7777135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1995141946 Ceased DE19541946A1 (de) | 1995-11-10 | 1995-11-10 | Verfahren zur Speicher-Zugriffssteuerung für 32-Bit-Hochleistungs-Mikroprozessoren der 3. Generation |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE19541946A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10324001A1 (de) * | 2003-05-27 | 2004-12-30 | Bohr, Ingo, Dipl.-Ing. (FH) | Verfahren zur Steigerung von entweder Transfer-Leistung oder maximaler Leitungslänge bei einem Bussystem in einem Lenk-Flugkörper-System |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3706734C1 (de) * | 1987-03-02 | 1988-03-17 | Force Computers Gmbh | Verfahren zur UEbertragung von Daten sowie Computer |
EP0513519A1 (de) * | 1991-05-15 | 1992-11-19 | International Business Machines Corporation | Speichersystem für Multiprozessorsysteme |
WO1995006284A1 (en) * | 1993-08-24 | 1995-03-02 | Conner Peripherals, Inc. | Ata interface architecture employing state machines |
-
1995
- 1995-11-10 DE DE1995141946 patent/DE19541946A1/de not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3706734C1 (de) * | 1987-03-02 | 1988-03-17 | Force Computers Gmbh | Verfahren zur UEbertragung von Daten sowie Computer |
EP0513519A1 (de) * | 1991-05-15 | 1992-11-19 | International Business Machines Corporation | Speichersystem für Multiprozessorsysteme |
WO1995006284A1 (en) * | 1993-08-24 | 1995-03-02 | Conner Peripherals, Inc. | Ata interface architecture employing state machines |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10324001A1 (de) * | 2003-05-27 | 2004-12-30 | Bohr, Ingo, Dipl.-Ing. (FH) | Verfahren zur Steigerung von entweder Transfer-Leistung oder maximaler Leitungslänge bei einem Bussystem in einem Lenk-Flugkörper-System |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0951682B1 (de) | IO- UND SPEICHERBUSSYSTEM FÜR DFPs SOWIE BAUSTEINE MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN | |
DE69836426T2 (de) | Steuergerät für einen universellen seriellen Bus | |
DE2854485C2 (de) | Datenverarbeitungsanlage | |
DE69634529T2 (de) | Serielle schnittstelle die, in zwei unterschiedlichen modi, serielle daten zu übertragen imstande ist | |
DE2457553C2 (de) | Asynchrone Taktgebereinrichtung | |
EP0961980B1 (de) | Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines | |
DE102005051478B4 (de) | Flashdatenspeichervorrichtung | |
EP0948842B1 (de) | VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.) | |
DE69532226T2 (de) | Taktssteuerungseinheit | |
US20020099888A1 (en) | I/O and memory bus system for DFPs and units with two- or multi-dimensional programmable cell architectures | |
DE4204148A1 (de) | Schaltungsanordnung fuer eine schnittstelle zum anschluss eines computers an ein peripheriegeraet | |
DE2755616C2 (de) | Datenverarbeitungsanlage | |
GB2075310A (en) | Bus extender circuitry for data transmission | |
DE2800855A1 (de) | Auffrischungssystem fuer direkten speicherzugriff | |
DE102005009021A1 (de) | Vereinheitliche USB OTG-Steuerungseinheit | |
DE69034165T2 (de) | Mikroprozessor mit einer Vielzahl von Buskonfigurationen | |
DE4429764A1 (de) | Zeitgebereinrichtung für einen Mikrocomputer | |
DE102006025133A1 (de) | Speicher- und Speicherkommunikationssystem | |
DE19541946A1 (de) | Verfahren zur Speicher-Zugriffssteuerung für 32-Bit-Hochleistungs-Mikroprozessoren der 3. Generation | |
DE60211874T2 (de) | Anordnung von zwei Geräten, verbunden durch einen Kreuzvermittlungsschalter | |
DE2749884A1 (de) | Einrichtung zum automatischen neuformatieren von daten in einem dv-system | |
DE19547453C2 (de) | Mikrocomputer | |
EP0307793A2 (de) | Bustreiber- und Dekodierungsschaltung | |
DE19952747B4 (de) | Rechnerchipanordnung für eine Rechnerhauptplatine und Verfahren zu deren Verwendung | |
EP3142032B1 (de) | Verfahren zum ändern der konfiguration eines programmierbaren logikbausteins |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8127 | New person/name/address of the applicant |
Owner name: DAIMLERCHRYSLER AEROSPACE AKTIENGESELLSCHAFT, 8099 |
|
8127 | New person/name/address of the applicant |
Owner name: DAIMLERCHRYSLER AEROSPACE AG, 85521 OTTOBRUNN, DE |
|
8127 | New person/name/address of the applicant |
Owner name: LFK LENKFLUGKOERPERSYSTEME GMBH, 81669 MUENCHEN, DE |
|
8127 | New person/name/address of the applicant |
Owner name: BOHR, INGO, DIPL.-ING. (FH), 82024 TAUFKIRCHEN, DE |
|
8120 | Willingness to grant licences paragraph 23 | ||
8131 | Rejection |