-
Im
Stand der Technik ist eine Laserdruckersteuerung insbesondere für eine zweckgebundene Druckmechanismus-Kommunikationszustandsmaschine
entworfen. So muss eine anwendungsspezifische integrierte Schaltung
(ASIC) neu entworfen werden, wenn sich die Maschinenschnittstellenspezifizierung
verändert
oder wenn ein Mechanismus eines anderen Verkäufers verwendet wird. Zusätzlich kann
eine Laserdrucksteuerung I/O-Schnittstellen, wie z. B. seriell,
parallel, Steuerbereichsnetz (CAN) und Frontplatte mit zweckgebundener
Hardware mit fester Funktion, verwenden. Da die Funktionalität der Schnittstelle
in einer bestimmten ASIC fest ist, ist die Flexibilität eingeschränkt und
unter Umständen
können
Veränderungen
an dem Protokoll einer bestimmten Schnittstelle nicht unterstützt werden.
Zusätzlich muss,
wenn eine andere Funktionalität
erwünscht wird,
die ASIC neu entworfen werden. Für
Schnittstellen, die vor dem Einsetzen der ASIC-Entwicklung nicht
gut definiert sind, kann die programmierbare I/O ein Implementierungsrisiko
reduzieren und Zeitvermarktungsvorteile bringen.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine programmierbare
Schnittstelle mit verbesserten Charakteristika zu schaffen.
-
Diese
Aufgabe wird durch eine Schnittstelle gemäß Anspruch 1 gelöst.
-
Die
vorliegende Erfindung definiert eine programmierbare I/O-Teilsystem-Architektur,
die zur Implementierung einer Vielzahl von I/O-Protokollen verwendet
werden kann. Sie ist für
die Implementierung von Kommunikationsschnittstellen zwischen Laserdruckersteuerungen
und Laserdruckermechanismussteuerungen geeignet. Das I/O-Teilsystem
ist über
eine herkömmliche
Busstruktur an das Hauptsystemprozessor angeschlossen und kann innerhalb einer
einzelnen integrierten Schaltung oder in separaten integrierten
Schaltungen enthalten sein. Das I/O-Teilsystem besteht aus einer
einfachen Mikrosteuerung, einem Codespeicher-SRAM, der den ausführbaren
Code enthält,
einem Laufsteuerregister, das durch die Hauptsystem-CPU zur Aktivierung
des Teilsystems gesetzt wird, und einer spezialisierten Dual-Port-Registerdatei.
-
Die
einfache Mikrosteuerung umfasst einen einfachen Instruktionssatz,
der es derselben ermöglicht,
grundlegende Zustandsmaschinenaufbauten zu emulieren. Die Architektur,
wie sie hierin beschrieben ist, umfasst eine Dual-Port-Registerdatei, die
Einzyklus-Lesen-Modifizieren-Schreiben-Zugriffe ermöglicht, für die effizienteste Emulierung
von I/O-Zustandsmaschinen. Eine herkömmliche Mikrosteuerung jedoch
könnte
alternativ mit herkömmlichen
Registern verwendet werden.
-
Der
Codespeicher-RAM wird mit einem ausführbaren Mikrosteuerungscode
von dem Hauptprozessor geladen, bevor er über das Laufsteuerregister aktiviert
wird. Nachdem die Mikrosteuerung aktiviert ist, führt die
Mikrosteuerung die in diesem Speicher gespeicherte Instruktionssequenz
aus. Obwohl ein externer zugeteilter Speicher für einige Anwendungen eingesetzt
werden könnte,
ist der lokale Speicher für
eine schnelle und wiederholbare Zustandsmaschinensequenzierung der
Mikrosteuerung vorzuziehen. Da der ausführbare „Zustandsmaschine"-Code durch den Anwendungsprozessor
heruntergeladen wird, ist das I/O-Teilsystem bei Laufzeit konfigurierbar.
-
Die
spezialisierte Dual-Port-Registerdatei enthält eine Anzahl von Merkmalen,
die es dem I/O-Teilsystem ermöglichen,
effizient eine breite Vielzahl von Protokollen zu implementieren.
Die Registerdatei umfasst eine Bank von Universalregistern, Zeitgeberregistern,
externen I/O-Schnittstellenregistern, internen I/O-Registern, gemeinschaftlich
verwen deten Registern, Unterbrechungsregister und optionalem DMA-FIFO, die durch den
Mikroprozessor zur Datenspeicherung verwendet werden. Die Zeitgeberregister
liefern eine Echtzeitsteuerung und Messung von Zeitgebungssequenzen.
Die externen I/O-Schnittstellenregister mit Flankenerfassungsfähigkeit
ermöglichen
es der Mikrosteuerung, die I/O-Signale, die das Protokoll aufweist,
abzutasten und/oder zu steuern.
-
Die
internen I/O-Schnittstellenregister können wahlweise zur schnittstellenmäßigen Verbindung des
programmierbaren I/O-Systems mit einem zweckgebundenen Hardwareblock
verwendet werden. Die Bank gemeinschaftlich verwendeter Register
ist mit einem Zugriffsprotokoll gemeinsam durch sowohl die Mikrosteuerung
als auch die Hauptsystem-CPU zugänglich.
Ein Unterbrechungsregister ermöglicht,
dass Unterbrechungen von dem I/O-Teilsystem an die Haupt-CPU geleitet
werden können. Das
optionale DMA-FIFO ermöglicht
eine effiziente Volumendatenübertragung
von dem I/O-Teilsystem zu/von dem Hauptsystemspeicher mit minimaler Hauptsystemprozessorintervention.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beigefügten
Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
System gemäß der vorliegenden Erfindung;
und
-
2 eine
beispielhafte Implementierung für einen
Laserdrucker.
-
Die
Erfindung liefert eine Architektur und ein Verfahren zum Implementieren
einer programmierbaren I/O-Schnittstelle. Die Hauptfunktion liefert
eine generische rekonfigurierbare I/O-Schnittstelle. Die Schnittstelle
kann für
Kommunikationen zwischen einer Laserdruckersteuerung und dem Druckmechanismus
verwendet werden oder sie kann verwendet werden, um eine Vielzahl
von Standard- oder kundenspezifischen Kommunikationsschnittstellen
zu implementieren, wie z. B. serielle Schnittstellen, parallele
Schnittstellen, serielle Peripherieschnittstellen (SPI), eine synchrone
serielle Schnittstelle (SSI), Mikro Wire, eine Inter-Integrierte-Schaltung
(I2C), ein Steuerbereichsnetz (CAN), UART, IEEE 1284, eine LCD-Schnittstelle,
eine Frontplattenschnittstelle und ein MODEM.
-
Die
Erfindung 10, wie in 1 gezeigt,
ist als ein Peripheriegerät
in einem herkömmlichen
eingebetteten System auf Mikroprozessorbasis angeschlossen. Sie
kann in der gleichen integrierten Schaltung wie der Hauptmikroprozessor
enthalten sein oder kann sich in einer separaten integrierten Schaltung
befinden. Die Erfindung ist mit dem Hauptmikroprozessorbus als Peripheriegerät verbunden. Sie
ist außerdem
an die Systemunterbrechungssteuerung und wahlweise an eine System-Direktspeicherzugriffs-
(-DMA-) Steuerung angeschlossen. Als zusätzliche Option kann sie in
einigen Fällen
auch an ein zweckgebundenes Hardwaremerkmal in der integrierten
Schaltung angeschlossen sein. In einem Videosystem z. B. kann die
Erfindung verwendet werden, um zu einem Videostrom gehörige Synchronisierungspulse
zu erfassen.
-
Die
Erfindung kann die komplexen Synchronisierungsinformationen extrahieren
und die vereinfachten Synchronisierungsinformationen an eine zweckgebundene
Videoausgangssteuerung leiten. In einem Laserdrucker würde diese
Synchronisierung die vertikale Seitensynchronisierung umfassen,
die an die Lasermodulationssteuerung geleitet wird.
-
Die
Architektur 10, in 1 gezeigt,
besteht aus vier Hauptelementen, nämlich einer Mikrosteuerung 12,
einem Codespeicher-SRAM 14, einem Laufsteuerregister 16 und
einer spezialisierten Dual-Port-Registerdatei 18.
-
Die
Mikrosteuerung 12 umfasst einen minimalen Instruktionsteilsatz
zur Emulierung grundlegender Zustandsmaschinenaufbauten. Zur Darstellung
kann ein minimaler Teilsatz Verzweigungs-, Konditional-Verzweigungs-,
Schleifen-, Bewe gungs-, Inkrementieren/Dekrementieren-, Vergleichs-
und einfache Boolesche Operationen umfassen. Für eine Codeeffizienz kann ein
Einebenen-Stapelregister 24 enthalten sein, um Eintiefen-Teilroutinen
zu erlauben. Wie auf dem Erfindungsdiagramm gezeigt ist, besteht
eine darstellende Mikrosteuerung 12 aus einem Programmzähler (PC) 20,
der den Ort in dem Codespeicher 14 anzeigt, der gerade
ausgeführt
wird, einer Ausführungseinheit 22,
die die mikrocodierte Instruktion aus dem Codespeicher decodiert,
einem Stapelregister 24, das eine Einfachrückgabeadresse speichern
kann, einer arithmetischen Einzyklus-Logikeinheit (Einzyklus-ALU) 26,
die auf Daten wirken kann, die von dem Codespeicher vorgelegt werden, und/oder
auf gegenwärtige
Werte der Registerdatei 18, und einem Flag 28,
das das Ergebnis der vorherigen Instruktion zur Konditional-Verzweigung
speichert. Der ausführbare
Maschinencode kann durch einen einfachen Assembler erzeugt werden.
Freeware-Assembler sind verfügbar,
die konfiguriert sein können,
um eine einfache Mikrosteuerung zu unterstützen, indem eine Umfassen-Datei
editiert wird, die die Operationscodes und das Maschineninstruktionsformat
definiert. Eine Auflistungs- und Symboltabelle wird durch den Assembler
erzeugt, um eine Fehlersuche in dem Code zu unterstützen.
-
Der
Codespeicher-SRAM 14 wird verwendet, um die Maschineninstruktionen
zu enthalten, die durch die Mikrosteuerung 12 ausgeführt werden.
Der Codespeicher-SRAM 14 wird bei Laufzeit durch den Hauptsystem-Mikroprozessor 30 geladen.
Aus der Perspektive der Mikrosteuerung 12 ist dies ein Nur-Lese-Speicher. Nachdem
der Hauptprozessor 30 den Code geladen hat, signalisiert
derselbe der Mikrosteuerung 12 über das Laufsteuerregister 16, mit
der Ausführung
von Instruktionen zu beginnen. Als eine alternative Implementierung
könnte
ein zugeteilter Systemspeicher (nicht gezeigt), z. B. ein DRAM,
zur Speicherung des ausführbaren
Codes verwendet werden. Dies ist jedoch weniger vorzuziehen, da
dies die Zustandsmaschinenleistung reduzieren würde und unter Umständen keine
wiederholbaren Ergebnisse ergibt, die unter Umständen zur Implementierung eines
I/O-Protokolls erforderlich sind. Das I/O-Protokoll, z. B. Systemprogrammierschnittstelle
(SPI), Inter-Integrierte-Schaltung (I2C), Steuerbereichsnetz (CAN),
RS232, IEEE 1284, Frontplatte und MODEM, ist durch den ausführbaren „Zustandsmaschine"-Code definiert.
-
Das
Herz der Erfindung ist die spezialisierte Registerdatei 18.
Die Registerdatei 18 ist das, was es der Erfindung ermöglicht,
effizient mit minimalem Mehraufwand bei dem Hauptsystemprozessor
als I/O-Teilsystem zu arbeiten. Tatsächlich erlauben es diese Merkmale
der programmierbaren I/O, sehr stark einem zweckgebundenen Hardwareperipheriegerät zu ähneln. Die
Erfindung schafft Fähigkeiten, die
normalerweise in einem zweckgebundenen Hardwareperipheriegerät zu finden
sind, einschließlich Peripheriegerät-Status/Konfiguration/Steuer-Register,
Unterbrechungsfähigkeit
und DMA-Fähigkeit
zur Volumendatenübertragung.
-
Idealerweise
ist die spezialisierte Registerdatei 18 mit zwei Ports
versehen, um es der einfachen Mikrosteuerung 12 zu ermöglichen,
Lesen-Modifizieren-Schreiben-Operationen für Codegrößeneffizienz und -leistung
durchzuführen.
Die Registerdatei 18 kann eine Bank von Universalmikrosteuerungsregistern 18A,
Zeitgeberregistern 18B, externen I/O-Schnittstellenregistern 18D,
internen I/O-Registern 18E, gemeinschaftlich verwendeten
Registern 18C, Unterbrechungsregister 18F und
optionalem DMA-FIFO 18G, die durch den Mikroprozessor 30 zur
Datenspeicherung verwendet werden, umfassen.
-
Die
Universalmikrosteuerungsregister 18A werden für lokale
Variablen und zur Speicherung verwendet.
-
Die
Zeitgeberregister 18B ähneln
den Universalregistern 18A. Sie können konfiguriert sein, um unabhängig basierend
auf einer ausgewählten
Systemzeitbasis (z. B. 1 μs,
10μs, 100 μs, 1 ms,
10 ms und 100 ms) zu inkrementieren. Sie wer den zur Erzeugung einer
Zeitgebung für
das zu implementierende Protokoll und zur Erfassung von Protokollzeitablaufsfehlern
verwendet. Die Register können
konfiguriert sein, um bei einem vorbestimmten End-Zählwert zu
stoppen, oder können
frei laufen.
-
Auf
die gemeinschaftlich verwendeten Register 18C kann durch
sowohl den Hauptsystemprozessor 30 als auch die I/O-Mikrosteuerung 12 zugegriffen
werden. Sie werden verwendet, um die Peripheriegerät-Status/Konfiguration/Steuer-Register
zu emulieren, die in einem herkömmlichen
Hardwareperipheriegerät
erscheinen. Für
eine Effizienz kann auf die Register 18C durch den Hauptprozessor 30 und die
Mikrosteuerung 12 unterschiedlich zugegriffen werden. Der
Hauptprozessor 30 könnte
z: B. vier Byte breite Register auf einmal als ein einzelnes 32-Bit-Wort
lesen, wohingegen die Mikrosteuerung 12 auf dieselben unter
Umständen
als vier separate 8-Bit-Entitäten zugreift.
Um ein Status/Protokoll-Element in diesen Registern 18C effizient
und sicher zu implementieren, wird eine Zugriffspriorität spezifiziert,
die Schreibzugriff für
ein bestimmtes Register entweder dem Hauptprozessor 30 oder
der Mikrosteuerung 12 erteilt. Das Verfahren zur Zugriffsprioritätssteuerung
ist in einer separaten Patentanmeldung, offenbart durch Richard
Taylor, mit dem Titel „Register
Access Protocol for Multi-Processor Systems" (Registerzugriffsprotokoll für Mehrprozessorsysteme), übertragen
an Agilent Technologies, eingereicht am 11. März 2004 beim US-Patent- und
Markenamt, spezifiziert.
-
Die
externen I/O-Schnittstellenregister 18D ermöglichen es der Mikrosteuerung 12,
die tatsächlichen
externen elektrischen Signale zu beobachten und zu steuern, die
das Protokoll der zu implementierenden Kommunikationen aufweist.
Diese Register 18D umfassen eine zusätzliche Funktionalität, um eine
effiziente Implementierung der Steuerzustandsmaschine in der Mikrosteuerung 12 zu
erlauben. Die Register 18D sind so vorgesehen, dass jedes
Signal als Eingangs-, Ausgangs- oder als bidirektionales Signal
definiert werden kann. Als Eingabe kann der Zustand des Signals
gelesen werden. Synchronisierer sind an jedem Eingang vorgesehen,
um Asynchronitätsprobleme
zu verhindern. Zusätzlich
ist eine optionale Flankenerfassungslogik vorgesehen, um anzuzeigen,
ob eine ansteigende oder abfallende Flanke bei dem Eingangssignal
aufgetreten ist. Die Übergangserfassung
ist besonders wertvoll, wenn das I/O-Protokoll aus Pulsen besteht,
die andernfalls verpasst worden wären. Wenn ein Signal als eine
Ausgabe verwendet wird, werden Ausgabepegel und Ausgabefreigabe
direkt durch die Register 18D gesteuert.
-
Die
internen I/O-Schnittstellenregister 18E liefern eine ähnliche
Funktion wie die externen I/O-Schnittstellenregister 18D,
mit der Ausnahme, dass diese es dem I/O-Teilsystem ermöglichen, mit internen zweckgebundenen
Funktionsblöcken
zu kommunizieren. Dies ist nützlich,
wenn der Zweck des programmierbaren I/O-Teilsystems darin besteht,
als ein flexibler Mittler zwischen einem externen Protokoll und
einem internen Peripheriegerät
mit fester Funktion zu dienen. Als ein Beispiel gibt es für eine Laserdruckersteuerung
eine zweckgebundene Laserdruckermodulationsausgangssteuerung, die
einen seriellen Videobitstrom erzeugt, der den Laser abfeuert. Der
Bitstrom muss auf die tatsächliche
Position der fotoempfindlichen Trommel und des Papiers synchronisiert
sein. Das Verfahren einer Horizontal- und Vertikal-Synchronisierung
variiert unter den verfügbaren
Druckmechanismen. Einige Mechanismen können ein einzelnes Vertikalsynchronisierungssignal
bereitstellen, andere erfordern es unter Umständen, dass die Vertikalsynchronisierung
durch das Vorliegen eines Horizontalsynchronisierungssignals abgeleitet
wird, wiederum andere liefern unter Umständen zahlreiche Vertikalsynchronisierungssignale
für mehrere
Trommeln. Das I/O-Teilsystem kann verwendet werden, um die in einem
bestimmten Mechanismus implementierte Synchronisierung zu decodieren
und dieselbe zu einer konsistenten Synchronisierungsschnittstelle
zu der zweckgebundenen Modulationssteuerung zu übertragen. Die programmierbare Natur
der Erfindung ermöglicht
es, dass der Entwurf eine Vielzahl von Mechanismen sowie Mechanismen,
die noch nicht definiert wurden, unterstützen kann.
-
Das
Unterbrechungsregister 18F würde es dem I/O-Teilsystem ermöglichen,
einen unterbrechungsgetriebenen Status an den Hauptprozessor 30 zu
liefern, wie dies ein herkömmliches
Peripheriegerät
tun würde.
Bei der tatsächlichen
Implementierung kann das Unterbrechungsregister 18F in
den gemeinschaftlich verwendeten Registern 18C enthalten
sein, mit zusätzlichen
zweckgebundenen Unterbrechungssignalen an den Hauptsystemprozessor 30.
-
Das
FIFO 18G ermöglicht
es, dass eine Volumendatenübertragung
zwischen dem I/O-Teilsystem und dem Systemspeicher mit minimaler
durch den Hauptsystemprozessor 30 benötigter Unterstützung fertig
gestellt werden kann. Daten, die durch die Mikrosteuerung 12 an
das FIFO 18G geschrieben werden, werden über einen
DMA 34 an den Hauptsystemspeicher (nicht gezeigt) übertragen. Ähnlich können eingehende
DMA-Daten durch die Mikrosteuerung 12 gelesen werden. Das
Laufsteuerregister 16 kann ein Merkmal zum Löschen des
Inhalts des FIFO 18G umfassen.
-
Angesichts
der programmierbaren Natur der Erfindung können unterschiedliche Kommunikationsprotokolle
mit einem einzelnen Entwurf unterstützt werden. ASIC-Entwürfe können abgeschlossen
werden, bevor das Kommunikationsprotokoll vollständig definiert ist. Die Steuerung,
die Schnittstellenzeitgebung und das Protokoll können spät in dem Entwurfszyklus oder
an dem Einsatzort modifiziert werden. Höhere Grade einer Hardwareassistenz
können
implementiert werden. Der Entwurf kann zur Implementierung neuer
Schnittstellen verwendet werden, die zu der Zeit, zu der der ASIC-Entwurf
herausgegeben wurde, noch nicht vorstellbar waren.
-
Die
Erfindung ist insbesondere für
Laserdrucker geeignet. In einer beispielhaften Implementierung,
in 2 gezeigt, wird eine einzelne Steuerung 12 verwendet,
um sowohl den seriellen Befehl/Status-Kanal zwischen der Lasermodulationssteuerung 36 und
der Mechanismussteuerung (separate integrierte Schaltung) 38 als
auch die Vertikalseitensynchronisation bereitzustellen. Der Entwurf
unterstützt aufgrund
der Fähigkeit
eines Herunterladens unterschiedlicher Synchronisierungsprotokolle
eine Vielzahl von Farb- und einfarbigen Druckmechanismen mit variierenden
Anzahlen von Laserstrahlen.