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. Generation

Info

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
Application number
DE1995141946
Other languages
English (en)
Inventor
Ingo Bohr
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BOHR, INGO, DIPL.-ING. (FH), 82024 TAUFKIRCHEN, DE
Original Assignee
Daimler Benz Aerospace AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Daimler Benz Aerospace AG filed Critical Daimler Benz Aerospace AG
Priority to DE1995141946 priority Critical patent/DE19541946A1/de
Publication of DE19541946A1 publication Critical patent/DE19541946A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus 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:
  • - 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".
(3) Stand und Kritik des Standes der Technik
Zum Aufbau der Zugriffssteuerung auf die Rechner-Subsysteme sind mehrere Möglichkeiten bekannt:
a. Diskreter Aufbau aus einzelnen Funktionselementen von Logikfamilien (z. B. TTL, CMOS)
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).
Vorteile:
keine gegenüber den Methoden b und c.
b. Programmierbare Logik mittlerer Komplexität (z. B. PAL, GAL, FPLA, FPLS usw.)
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).
Vorteile:
Konfigurierbarkeit (b < c < a),
geringere Entwicklungskosten (b < a, c)
verringertes Entwicklungsrisiko durch einfache Rechner-Simulation.
c. Application-Specific-Integrated-Circuit (ASIC)
Nachteile:
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.
(4) Fundstellen
  • 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)
(5) Aufgabe
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.
(6) Lösung
Die Aufgabe wird erfindungsmäßig durch die Verfahrensschritte nach dem kennzeichnenden Teil des Hauptanspruches gelöst. Vorteilhafte Weiterbildungen ergeben sich aus den Unteransprüchen.
(7) Erzielbare Vorteile
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.
(8) Beschreibung eines Ausführungsbeispiels
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.
(8.1) Allgemeines zu den Eigenschaften, der Architektur und der Verarbeitungsleistung des "32-Bit Mikroprozessors MC 68040"
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).
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.
(RISC = Reduced-Instruction-Set-Computer)
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.
(8.1.1) Zugriffsarten sowie Architekturmerkmale des Mikroprozessors "MC 68040", die für die Auslegung des Speichers relevant sind
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).
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".
(8.1.2) Allgemeines zur Steuerung der Speicherzugriffe
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).
(8.1.2.1) Ausgangssignale des Prozessors zur Steuerung der Speicherzugriffe
Folgende Ausgangssignale werden vom Prozessor zur Steuerung des Daten-Transfers bereitgestellt:
* 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").
* "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.
* "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".
* "Adressen (A1, A0)"
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.
(8.1.2.2) Eingangssignale des Prozessors zur Steuerung der Speicherzugriffe
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.
* "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.
* "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.
* "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:
  • - 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.
(8.1.2.3) Allgemeines zur Steuerung der "READ-Zugriffe"
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.
* "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.
(8.1.2.4) Allgemeines zur Steuerung der "WRITE-Zugriffe"
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.
* "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.
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.
(8.1.2.5) Berechnung der "Wait-States"
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.
Bestimmung der "Wait-States" bei "READ-Transfers"
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)
t(acc/burst) T * [N(b) + w]-t(adb)-t(dsp)
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.
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.
Die Rechnung zeigt daß beim Lesezugriff "Zero-Wait-State" realisierbar ist.
Bestimmung der "Wait-States" bei "WRITE-Transfers"
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)
t(dsm/burst) T * [N(b) + w]-t(dv)-t(vb)
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:
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.
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.
(8.2) Allgemeines zu der Architektur und den elektrischen Eigenschaften von "Anwenderprogrammierbaren Logikelementen (EPLD′s)"
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.
(8.2.1) Architekturmerkmale der EPLD′s, welche für die Entwicklung der Bussteuerung relevant sind
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.
1. "Macrocells (MC)"
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
2. "Logic-Array-Blocks (LAB′s)"
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.
3. "Shared and Parallel (nur MAX-7000) Logic-Expander"
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.
4. "Programmable-Interconnect-Array (PIA)"
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.
5. "I/O-Control-Blocks"
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.
8.3) Aufbau und Funktion eines Ausführungsbeispiels
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.
(8.3.1) Aufbau und Funktion des "Onboard-Speichers"
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.
* Progamm-Speicher Organisation: max 128 kW × 32 Bit.
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)
(8.3.2) Aufbau und Funktion der "Onboard-Peripherie"
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
(8.3.2.1) Businterface
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.
(8.3.2.2) Timer
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.
(8.3.2.3) Asynchronous-Communication-Interface (Test-Interface)
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.
(8.3.2.4) Interrupt-Controller
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
(8.3.2.5) General-Purpose-Input/Output-Port
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.
(8.3.3) Aufbau und Funktion des "Systeminterfaces (IMBUS-Master)"
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:
(8.3.3.1) Schreib-Zugriffe auf das Systeminterface
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.
(8.3.3.2) Lese-Zugriffe auf das Systeminterface
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.
* "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.
(8.3.4) Allgemeines zur Takterzeugung (Clock-Generation)
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.
(8.3.4.1) Realisierung der Takterzeugung
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.
(8.3.5) Power-On-Initialisierung
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.
(8.3.6) Aufbau und Funktion der Zugriffssteuerung "BUS-CONTROL"
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.
(8.3.6.1) Aufbau und Aufgabe der Funktionsgruppen "SRAM-Control", "Acknowledge-Control" und "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.
(8.3.6.1.1) Aufbau und Aufgabe der Funktionsgruppe "SRAM-Control"
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:
(8.3.6.1.1.1) Steuerwerk "SRAM-Access-Control"
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.
(8.3.6.1.1.2) Steuerwerk "SRAM-READ-Control"
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.
(8.3.6.1.1.3) Steuerwerk "SRAM-Write-Control"
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.
(8.3.6.1.2) Aufbau und Aufgabe der Funktionsgruppe "Acknowledge-Control"
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.
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:
(8.3.6.1.2.1) Realisierung des Quittungssignals "Transfer-Acknowledge (!TA)" einschließlich Erzeugung der Enable-Signale "SRAM-Segment" und "SRAM-Select" mittels "32-Bit-Adreßdekodierung" Erzeugung des Quittungssignals "Transfer-Acknowledge (!TA)" bei Zugriffen auf den Speicher.
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:
  • - 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.
Erzeugung des Quittungssignals "Transfer-Acknowledge (!TA)" bei Zugriffen auf die Peripherie.
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.
(8.3.6.1.2.2) Realisierung der Quittungssignale "Transfer-Burst-Inhibit (!TB1)" und "Transfer-Cache-Inhibit (!TC1)"
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.
Erzeugung des Quittungssignals "Transfer-Burst-Inhibit (!TB1)"
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".
Erzeugung des Quittungssignals "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 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".
(8.3.6.1.3) Aufbau und Aufgabe der Funktionsgruppe "Access-Error-Control"
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.
(8.3.6.1.3.1) Realisierung des Quittungssignals "Transfer-Error-Acknowledge (!TEA)" einschließlich Erzeugung der Enable-Signale "Memory-Restsegment" und "External-Memory-Segment" mittels "32-Bit-Adreßdekodierung"
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.
Erzeugung der Signale "Memory-Restsegment (mem-rseg)"
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.
Erzeugung des Signals "External-Memory-Segment (xmem-seg)"
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.
(8.3.6.2) Steuerung von "READ/WRITE-Zugriffen auf das SRAM"
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.
Clock-Zyklus (C1/Initialzyklus):
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.
Clock-Zyklus (C2w1/Wait-State # 1):
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.
(8.3.6.2.1) Steuerung von gütigen oder ungültigen "NORMAL- oder BURST-READ-Zugriffen" auf das SRAM
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".
Clock-Zyklen (C2wn/Wait-States # n):
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.
Clock-Zyklus (C2/NORMAL-/BURST-/INVALID-READ/Verzweigungs- Endezyklus):
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.
(8.3.6.2.1.1) Steuerung von gütigen "NORMAL-READ-Zugriffen auf das SRAM" Clock-Zyklus (C2/NORMAL-READ/Verzweigungs-Endezyklus):
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.
Clock-Zyklus (C1/Next-Access):
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".
(8.3.6.2.1.2) Steuerung von gültigen "BURST-READ-Zugriffen auf das SRAM" Clock-Zyklus (C2/BURST-READ-Langwort # 1/Verzweigungs-Endezyklus):
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.
Clock-Zyklen (C3w1, C4w1/BURST-READ-Langworte # 2, # 3/Wait-States # 1:
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.
Clock-Zyklus (C3, C4/BURST-READ-Langworte # 2, # 3/Verzweigungs- Endezyklus):
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.
Clock-Zyklus (C5w1/BURST-READ-Langwort # 4/Wait-States # 1):
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.
Clock-Zyklus (C5/BURST-READ-Langwort # 4fVerzweigungs-Endezyklus-Burst):
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.
Clock-Zyklus (C1/Next-Access):
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.
(8.3.6.2.1.3) Steuerung von "ungütigen READ-Zugriffen" auf das SRAM Clock-Zyklus (C2/INVALID-READ-Access/Endezyklus):
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.
Clock-Zyklus (C1/Next-Access):
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.
(8.3.6.2.2) Steuerung von gültigen oder ungültigen "NORMAL- oder BURST-WRITE-Zugriffen auf das SRAM" Clock-Zyklus (C1/Initialzyklus):
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.
Clock-Zyklus (C2w1/Wait-State # 1):
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:
Clock-Zyklen (C2wn/Wait-States # n):
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.
Clock-Zyklus (C2/NORMAL-/BURST-/INVALID-Write/Verzweigungs- Endezyklus):
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.
(8.3.6.2.2.1) Steuerung von gültigen "NORMAL-WRITE-Zugriffen auf das SRAM" Clock-Zyklus (C2/NORMAL-WR1TE-Zugriff/Verzweigungs-Endezyklus):
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.
Clock-Zyklus (C1/Next-Access):
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.
(8.3.6.2.2.2) Steuerung von gültigen "BURST-WRITE-Zugriffen auf das SRAM" Clock-Zyklus (C2/BURST-WRITE-Langwort # 1/Verzweigungs-Endezyklus):
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.
Clock-Zyklen (C3w1, C4w1/BURST-WRITE-Langworte # 2, # 3/Wait-States # 1):
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.
Clock-Zyklus (C3, C4/BURST-WRITE-Langworte # 2, # 3/Verzweigungs- Endezyklus):
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.
Clock-Zyklus (C5w1/BURST-WRITE-Langwort # 4/Wait-States # 1):
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.
Clock-Zyklus (C5/BURST-WRITE-Langwort # 4/Verzweigungs-Endezyklus- Burst):
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.
Clock-Zyklus (C1/Next-Access):
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.
(8.3.6.2.2.3) Steuerung von "ungütigen WRITE-Zugriffen" auf das SRAM Clock-Zyklus (C2/INVALID-WRITE-Access/Endezyklus):
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.
Clock-Zyklus (C1/Next-Access):
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.
Liste 1
Liste 2

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.
DE1995141946 1995-11-10 1995-11-10 Verfahren zur Speicher-Zugriffssteuerung für 32-Bit-Hochleistungs-Mikroprozessoren der 3. Generation Ceased DE19541946A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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