DE69320286T2 - Baudratengenerator mit niedriger Leistung - Google Patents

Baudratengenerator mit niedriger Leistung

Info

Publication number
DE69320286T2
DE69320286T2 DE69320286T DE69320286T DE69320286T2 DE 69320286 T2 DE69320286 T2 DE 69320286T2 DE 69320286 T DE69320286 T DE 69320286T DE 69320286 T DE69320286 T DE 69320286T DE 69320286 T2 DE69320286 T2 DE 69320286T2
Authority
DE
Germany
Prior art keywords
oscillator
clock signal
baud rate
counter
rate generator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69320286T
Other languages
English (en)
Other versions
DE69320286D1 (de
Inventor
Sumihiro C/O Oki Electric Ind. Co. Ltd Minato-Ku Tokyo Takashima
Seiichi C/O Oki Electric Ind. Co. Ltd. Minato-Ku Tokyo Yamazaki
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Application granted granted Critical
Publication of DE69320286D1 publication Critical patent/DE69320286D1/de
Publication of DE69320286T2 publication Critical patent/DE69320286T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/02Speed or phase control by the received code signals, the signals containing no special synchronisation information
    • H04L7/033Speed or phase control by the received code signals, the signals containing no special synchronisation information using the transitions of the received signal to control the phase of the synchronising-signal-generating means, e.g. using a phase-locked loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Diese Erfindung bezieht sich auf einen Baudratengenerator für die Erzeugung eines Taktsignals für eine serielle Kommunikation, und insbesondere auf einen Baudratengenerator, der für eine Integration auf einem Mikrocontroller mit niedrigem Leistungsverbrauch geeignet ist.
  • Mikrocontroller (auch als Einzel-Chip-Mikrocomputer bezeichnet) arbeiten als eingebettete Controller in Produkten, die den Bereich von elektronischen Spielzeugen bis zu großen Industrieausrüstungen überspannen. Viele Mikrocontroller kommunizieren mit anderen elektronischen Vorrichtungen mittels eines eingebauten seriellen Kommunikationsanschlusses. Im gewöhnlich verwendeten asynchronen Kommunikationsmodus sendet und empfängt der Anschluß Daten mit einer Normrate von z. B. 300, 600, 1200, 2400 oder 9600 Bits pro Sekunde (bps), was als Baudrate bezeichnet wird. Dies erfordert, daß der Mikrocontroller ein Taktsignal erzeugt, als serieller Takt bezeichnet, mit einer Frequenz, die vorzugsweise innerhalb eines Prozents der gewünschten Baudrate liegt. Die Mikrocontroller, die mit einem stabilen Systemtakt arbeiten, der von einem externen Kristall erzeugt wird, der bei einer hohen Frequenz von z. B. 10 MHz in Resonanz schwingt, kann leicht den erforderlichen seriellen Takt erzeugen durch Teilen der Systemtaktfrequenz. Für eine Baudrate von 9600 bps reicht es z. B. aus, die 10 MHz durch 1024 zu teilen, womit 9597 Hz erreicht werden, was sich von 9600 Hz nur um ungefähr 0,03% unterscheidet.
  • Mikrocontroller müssen jedoch in einigen Vorrichtungen mit einem sehr niedrigen Strom- und Leistungsverbrauch arbeiten, was dazu führt, daß der Mikrocontroller mit einer sehr viel langsameren Systemtaktgeschwindigkeit arbeitet. Der Systemtakt eines solchen Niedrigleistungs- Mikrocontrollers wird typischerweise von einem Kristall erzeugt, der mit 32768 Hz in Resonanz schwingt, die Rate der Kristalle, die in elektronischen Armbanduhren verwendet werden. Diese Systemtaktfrequenz kann nicht geteilt werden, um die obenerwähnten höheren Baudraten (1200, 2400 oder 9600 bps) zu erhalten, ohne einen beträchtlichen Frequenzfehler hervorzurufen. Die nächste Annäherung an 9600 bps wird z. B. erhalten durch Teilen von 32768 Hz durch 3, was jedoch 10923 Hz ergibt, was offensichtlich nicht akzeptabel ist: Der Frequenzfehler überschreitet 13%.
  • Eine mögliche Lösung für dieses Problem ist, nur eine langsamere Baudrate wie z. B. 300 oder 600 bps zu verwenden, jedoch ist dies für viele Anwendungen zu langsam. Eine weitere mögliche Lösung ist, einen externen Kristallresonator mit einer höheren Frequenz zu verwenden, dessen Frequenz geteilt wird, um sowohl die erforderliche niedrigere Systemtaktfrequenz als auch die noch niedrigere Baudrate zu erhalten. Die Verwendung eines Hochfrequenzresonators ergibt jedoch einen deutlichen Leistungs- und Stromnachteil: der Stromverbrauch steigt von einigen Mikroampere auf einige Milliampere.
  • Eine weitere mögliche Lösung ist, den Mikrocontroller mit zwei externen Kristallen zu versehen, von denen einer mit einer niedrigeren Frequenz schwingt, um den Systemtakt zu erzeugen, und ein weiterer mit einer hohen Frequenz schwingt, die geteilt wird, um die Baudrate zu erzeugen. Der Hochfrequenzkristall wird nur aktiviert, wenn eine serielle Kommunikation durchgeführt wird. Diese Lösung ist jedoch unbefriedigend, da sie die Anzahl der externen Komponenten erhöht und die Kosten des Mikrocontroller- Systems deutlich steigert.
  • Die EP-A-0 315 260 offenbart eine Zellentelephonvorrichtung, die einen Oszillator in Kombination mit einem Synthesizer umfaßt, der einen Teiler zum Erzeugen der ersten und zweiten Taktsignale enthält.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist daher eine Aufgabe der vorliegenden Erfindung, genaue Baudraten für die serielle Kommunikation in einem Mikrocontroller zu erzeugen, der mit einer niedrigen Systemtaktfrequenz läuft, ohne die Kommunikation auf niedrige Baudraten zu beschränken, ohne zusätzlichen Strom und zusätzliche Leistung zu ziehen und ohne einen zusätzlichen externen Resonator erforderlich zu machen.
  • Der Baudratengenerator der Erfindung verwendet eine erste Oszillatorschaltung zum Erzeugen eines ersten Taktsignals (den Systemtakt) und eine zweite Oszillatorschaltung zum Erzeugen eines zweiten Taktsignals mit einer höheren Frequenz, jedoch geringerer Frequenzgenauigkeit als das erste Taktsignal. Das Taktsignal wird gezählt, um ein erstes Zeitintervall zu ermitteln. Das zweite Taktsignal wird während dieses Intervalls gezählt, um einen Zählerwert zu erhalten. Der Zählerwert wird anschließend durch eine bestimmte ganze Zahl dividiert, vorzugsweise durch eine Potenz von 2, um ein Teilungsverhältnis zu erhalten. Die Frequenz des zweiten Taktsignals wird durch dieses Teilungsverhältnis dividiert, um ein Taktsignal für die serielle Kommunikation mit der gewünschten Genauigkeit zu erhalten.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein Blockschaltbild des Baudratengenerators gemäß der Erfindung.
  • Fig. 2 ist ein Flußdiagramm, das die Operation der in Fig. 1 gezeigten Zentraleinheit zeigt.
  • Fig. 3 ist ein Zeitablaufdiagramm, das die Operation der ersten und zweiten Zähler in Fig. 1 zeigt.
  • Fig. 4 ist ein Zeitablaufdiagramm, das die Operation des programmierbaren Frequenzteilers in Fig. 1 zeigt.
  • Fig. 5 ist ein Schaubild, das ein Rechtsschieben darstellt.
  • Fig. 6 ist ein schematisches Schaubild der zweiten Oszillatorschaltung in Fig. 1.
  • Fig. 7 ist ein Blockschaltbild, das eine Modifikation des Baudratengenerators der Erfindung zeigt.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Im folgenden wird mit Bezug auf die beigefügten Zeichnungen eine Ausführungsform der Erfindung beschrieben. Diese Zeichnungen zeigten die Erfindung, beschränken jedoch nicht ihren Umfang, der nur durch die beigefügten Ansprüche bestimmt sein soll.
  • Die Fig. 1 zeigt einen Mikrocontroller 1 mit einem ersten Oszillator 2, einer Zentraleinheit (CPU) 4 und einem seriellen Anschluß. Der erste Oszillator 2 ist mit einem externen Resonator 8 z. B. einem Kristall verbunden, der bei einer genauen Frequenz f&sub1; von 32768 Hz in Resonanz schwingt. Dies ermöglicht, daß der erste Oszillator 2 ein erstes Taktsignal CLK1 mit der gleichen Frequenz f&sub1; erzeugt. Dieses erste Taktsignal CLK1 ist ein Systemtaktsignal, das der CPU 4 als Grundoperationssignal zugeführt wird.
  • Der serielle Anschluß 8 kommuniziert mit anderen Vorrichtungen (in der Zeichnung nicht gezeigt) mittels eines seriellen Eingangssignals SI und eines seriellen Ausgangssignals SO. Die Bitrate der Signale SI und SO ist gleich einer der Normfrequenzen, die in der seriellen Kommunikation verwendet werden. In der nachfolgenden Beschreibung wird diese Frequenz fs mit 9600 Hz angenommen; d. h., der serielle Anschluß 6 kommuniziert mit einer Baudrate von 9600 bps. Um diese Baudrate zu erzeugen, umfaßt der Mikrocontroller 1 ferner einen zweiten Oszillator 10, einen ersten Zähler 12, einen zweiten Zähler 14 und einen programmierbaren Frequenzteiler 16.
  • Der zweite Oszillator 10 ist eine vergleichsweise einfache Schaltung, wie z. B. ein Widerstand-Kondensator-(RC)- Oszillator. Ein Schaltbild wird später gezeigt. Der zweite Oszillator 10 oszilliert mit einer höheren Frequenz als der erste Oszillator 2, jedoch mit einer geringeren Frequenzgenauigkeit und geringerer Stabilität. Er ist nicht mit einem externen Resonator verbunden. Der zweite Oszillator 10 wird von einem Freigabesignal (ENABLE) gesteuert, das von der CPU 4 ausgegeben wird, und oszilliert nur dann, wenn ENABLE aktiv ist. Der Ausgang des zweiten Oszillators 10 ist ein zweites Taktsignal CLK2 mit einer Frequenz f&sub2;, die höher ist als ein f&sub1;.
  • Der erste Zähler 12 ist mit dem ersten Oszillator 2 verbunden, von dem er das erste Taktsignal CLK1 empfängt, sowie mit der CPU 4, von der er ein Rücksetzsignal emp fängt (RESET). Nach dem Zurücksetzen gibt der erste Zähler 12 ein aktives Gattersignal (GATE) aus und beginnt mit dem Zählen der Zyklen von CLK1. Wenn er eine bestimmte Anzahl N&sub1; dieser Zyklen CLK1 gezählt hat, deaktiviert der erste Zähler 12 das GATE-Signal. Der erste Zähler 12 kann entweder als Aufwärtszähler oder als Abwärtszähler konfiguriert sein, bei Bedarf mit zusätzlichen Logikschaltungen, um das GATE-Signal zu erzeugen. Der Wert von N&sub1; kann im ersten Zähler 12 fest verdrahtet sein oder kann von der CPU 4 gesetzt werden. Unterschiedliche Werte von N&sub1; können für unterschiedliche Baudraten gesetzt werden.
  • Die Zahl N&sub1; besitzt vorzugsweise die folgende Form:
  • N&sub1; = 2x(f&sub1;/fs),
  • wobei x eine positive ganze Zahl ist und f&sub1; und fs wie oben beschrieben definiert sind. Da 2&sup7; = 128, ist dann, wenn z. B. x = 7 gilt, N&sub1; gleich:
  • N&sub1; = 128 · 32768/9600 = 436,90666....
  • Da N&sub1; eine ganze Zahl sein muß, wird sie auf 437 aufgerundet.
  • Der zweite Zähler 14 ist ein Aufwärtszähler, der durch das von der CPU 4 ausgegebene RESET-Signal auf 0 zurückgesetzt wird und der das zweite Taktsignal CLK2 vom zweiten Oszillator 10 empfängt und die CLK2-Zyklen zählt, während das Ausgangssignal GATE des ersten Zählers 12 aktiv ist. Der zweite Zähler 14 ist ein n-Bit-Binärzähler, dessen n-Bit-Wert von der CPU 4 über eine n-Bit- Signalleitung QA gelesen werden kann (hier ist n eine geeignete positive ganze Zahl). Der linke Zählerwert im zweiten Zähler 14 wird dann, wenn das GATE-Signal inaktiv wird, mit N&sub2; bezeichnet.
  • Der programmierbare Frequenzteiler 16 empfängt zwei Signale von der CPU 4: ein Teilungsverhältnis N&sub3;, das es als ein n-Bit-Binärsignal über eine Signalleitung QB empfängt, sowie ein Ladesignal (LOAD). Er empfängt ferner das zweite Taktsignal CLK2 vom zweiten Oszillator 10. Wenn das Signal LOAD aktiv wird, lädt der programmierbare Frequenzteiler 16 den Wert N&sub3; auf der Signalleitung QB in ein internes Register (in der Zeichnung nicht gezeigt). Anschließend teilt er die Frequenz f&sub2; des Signals CLK2 durch N&sub3;, um ein drittes Taktsignal CLK3 mit einer Frequenz von f&sub2;/N&sub3; zu erzeugen.
  • Als nächstes wird die Operation mit Bezug auf die Fig. 2, 3 und 4 erläutert.
  • Die Fig. 2 ist ein Flußdiagramm, das die Operation der CPU 4 zeigt. Im ersten Schritt 18 vor dem Beginn der seriellen Kommunikation gibt die CPU 4 ein Hochpegelsignal ENABLE aus, um den zweiten Oszillator 10 zu starten. Anschließend wartet sie im nächsten Schritt 20 eine bestimmte Zeitspanne ab, bis das zweite Taktsignal CLK2 in eine gleichmäßige Schwingung übergegangen ist. Diese Zeitspanne kann von einer Software-Zeitschleife gemessen werden, die in der CPU 4 läuft, oder durch Verwenden des ersten Zählers 12 oder eines weiteren Zählers, um eine geeignete Anzahl von Zyklen des ersten Taktsignals CLK1 zu zählen.
  • Am Ende dieser Zeitspanne erzeugt die CPU 4 im nächsten Schritt 22 einen Impuls RESET, der die ersten und zweiten Zähler 12 und 14 zurücksetzt. Anschließend wartet die CPU 4 im nächsten Schritt 24, bis der erste Zähler 12 N&sub1; Zyklen des ersten Taktsignals CLK1 gezählt hat. Die CPU 4 kann lernen, wann der erste Zähler 12 N&sub1; Zyklen gezählt hat, indem sie den Zählerwert im ersten Zähler 12 liest, oder der erste Zähler 12 kann die CPU 4 mittels einer Unterbrechung unter Verwendung einer in der Zeichnung nicht gezeigten Signalleitung unterrichten.
  • Im nächsten Schritt 26 liest die CPU 4 die Inhalte N&sub2; des zweiten Zählers 14, um herauszufinden, wie viele Zyklen CLK2 aufgetreten sind, während der erste Zähler 12 N&sub1; Zyklen von CLK1 gezählt hat. Anschließend berechnet die CPU 4 im nächsten Schritt 28 das Teilungsverhältnis N&sub3; durch Dividieren von N&sub2; durch eine ganze Zahl N&sub4;. Diese ganze Zahl N&sub4; ist im wesentlichen gleich
  • N&sub1;(fs/f&sub1;).
  • Wenn N&sub1; im wesentlichen gleich 2x(f&sub1;/fs) ist, wie oben beschrieben worden ist, dann sollte N&sub4; gleich 2x sein. Die Division durch eine Zweierpotenz kann durch eine einfache Rechtsschiebeoperation durchgeführt werden, wie später beschrieben wird.
  • Im nächsten Schritt 30 plaziert die CPU 4 den berechneten Wert N&sub3; auf der Signalleitung QB. Anschließend gibt sie im letzten Schritt 32 einen LOAD-Impuls aus, der den programmierbaren Frequenzteiler 16 in Fig. 1 veranlaßt, den Wert N&sub3; zu laden. Der programmierbare Frequenzteiler 16 gibt anschließend ein Taktsignal CLK3 mit einer Frequenz f&sub2;/N&sub3; aus, die im wesentlichen gleich der gewünschten Baudrate fs ist. Der Grund hierfür wird im folgenden erläutert.
  • Es sei tg die Zeitspanne, während der das Signal GATE auf Hochpegel liegt. Diese Zeitspanne tg ist die Zeit, die vom ersten Zähler 12 benötigt wird, um N&sub1; Taktzyklen von CLK1 mit einer Frequenz f&sub1; zu zählen, woraus folgt, daß f&sub1; = N&sub1;/tg. In ähnlicher Weise ist tg die Zeitspanne, die vom zweiten Zähler 14 benötigt wird, um N&sub2; Zyklen vom CLK2 mit einer Frequenz f&sub2; zu zählen, woraus folgt, daß f&sub2; = N&sub2;/tg.
  • Da somit N&sub4; = N&sub1;(fs/f&sub1;) gilt, ergibt sich
  • tg = N&sub1;/f&sub1; = N&sub2;/f&sub2;
  • N&sub2; = N&sub1;(f&sub2;/f&sub1;)
  • N&sub3; = N&sub2;/N&sub4; = [N&sub1;(f&sub2;/f&sub1;)] / [N&sub1;(fs/f&sub1;)] = f&sub2;/fs
  • f&sub2;/N&sub3; = fs.
  • Die Gleichungen in den letzten beiden obigen Zeilen sind nur eine Annäherung, da N&sub4; nur ungefähr gleich N&sub1;(fs/f&sub1;) ist, jedoch ist die Näherung sehr gut. Wenn zum Beispiel der zweite Oszillator 10 mit 1 MHz schwingt, folgt aus den obigen Gleichungen:
  • tg = 437/(32.768 Hz) = 0,01333612 s
  • N&sub2; = 437 · (1.000.000/32768) = 13.336
  • N&sub3; = 13.336/128 = 104
  • f&sub2;/N&sub3; = 1.000.000/104 = 9615 Hz.
  • Die Berechnungen in den letzten drei Zeilen oben wurden auf ganze Zahlen gerundet, indem die Dezimalbruchstellen ignoriert wurden. Die Frequenz 9615 Hz des dritten Taktsignals CLK3 unterscheidet sich von den erwünschten 9600 Hz um nur ungefähr 0,16%, was innerhalb des akzeptablen Fehlerspielraums liegt. Wenn f&sub2; ausreichend hoch ist, kann im allgemeinen der Frequenzfehler des dritten Taktsignals CLK3 innerhalb einer gewünschten Grenze gehalten werden.
  • Die Fig. 3 und 4 sind Zeitablaufdiagramme, die die obigen Operationen darstellen. Es wird angenommen, daß diese Signale ENABLE, RESET, GATE und LOAD bei Hochpegel aktiv sind. Wie in Fig. 3 gezeigt, steuert die CPU 4 das Signal ENABLE auf Hochpegel, wartet, bis sich CLK2 stabilisiert, und gibt anschließend einen Hochpegel-Impuls RESET aus. Der Anstieg des Signals RESET setzt die ersten und zweiten Zählern 12 und 14 zurück. Beim Abfallen des Signals RESET beginnt der erste Zähler 12 zu zählen, wobei das Signal GATE auf Hochpegel wechselt und auch der zweite Zähler 14 zu zählen beginnt. Wenn der erste Zähler 12 N&sub1; Zyklen von CLK1 gezählt hat, geht am Ende des Zeitintervalls tg das Signal GATE auf Niedrigpegel und der zweite Zähler 14 stoppt das Zählen. Der Zählerwert N&sub2; des zweiten Zählers 14 kann dann von der CPU 4 auf der Signalleitung QA gelesen werden.
  • In Fig. 4 berechnet die CPU 4 mit dem gelesenen N&sub2; die Zahl N&sub3; und plaziert diesen Wert auf der Signalleitung QB, anschließend gibt sie einen Impuls LOAD aus. Der programmierbare Frequenzteiler 16 speichert anschließend den Wert N&sub3; intern und verwendet diesen zum Teilen der Frequenz des zweiten Taktsignals CLK2, um das dritte Taktsignal CLK3 zu erzeugen.
  • Das dritte Taktsignal CLK3 in Fig. 4 kann vom seriellen Anschluß 6 verwendet werden, um die seriellen Eingangs- und Ausgangssignale SI und SO zeitlich zu steuern. Wenn die serielle Kommunikation abgeschlossen ist, kann der zweite Oszillator 10 durch Deaktivieren des Signals ENABLE abgeschaltet werden, um Leistung zu sparen.
  • Die Fig. 5 ist ein Schaubild der Rechtsschiebeoperation der CPU 4, die verwendet wird, um N&sub2; durch N&sub4; zu teilen, wenn N&sub2; ein 15-Bit-Binärwert ist und N&sub4; gleich 2x = 2&sup7; = 128 ist. Die Bitpositionen in N&sub2; sind von 14 bis 0 numeriert, wobei das Bit 0 das niedrigstwertige Bit ist. Es ist bekannt, daß eine 1-Bit-Rechtsschiebeoperation einer Binärzahl äquivalent ist zum Teilen der Zahl durch 2, in ähnlicher Weise, wie das Schieben der Ziffern einer gewöhnlichen Zahl zur Basis 10 um eine Stelle nach rechts äquivalent ist zum Teilen durch 10. Eine 7-Bit- Rechtsschiebeoperation ist somit äquivalent zum Teilen durch 2&sup7; = 128. Um N&sub3; = N&sub2;/N&sub4; zu berechnen, führt die CPU 4 entsprechend eine 7-Bit-Rechtsschiebeoperation aus: Bit 7 von N&sub2; wird Bit 0 von N&sub3;, während Bit 14 von N&sub2; zu Bit 7 von N&sub3; wird. Die Bits 0 bis 6 von N&sub2; werden verworfen, was dem Runden des Ergebnisses auf eine ganze Zahl durch Ignorieren der Nachkommastellen ist.
  • Das Teilen durch eine Zweierpotenz, um N&sub3; zu berechnen, ist ein wichtiges Merkmal der vorliegenden Erfindung. Viele Mikrocontroller mit niedriger Leistung besitzen eine 4-Bit-CPU, der ein expliziter Divisionsbefehl fehlt. Ein Programm zum Ausführen einer langen Divisionsoperation kann erzeugt werden, jedoch ist das Programm selbst lang: in der Größenordnung von 50 bis 80 Befehlsschritten, wenn die Befehlswortlänge 8 Bits beträgt und die Datenlänge 12 Bits beträgt. Ein solches langes Divisionsprogrammen würde eine beträchtliche Menge an wertvollem Raum im Programmspeicher des Mikrocontrollers erfordern, was weniger Raum für die Anwendungsprogramme läßt. Die Durchführung einer 7-Bit-Rechtsschiebeoperation ist jedoch vergleichsweise einfach; sie kann in ungefähr zehn Befehlsschritten programmiert werden. Die Ausführungsgeschwindigkeit ist ebenfalls höher.
  • Die Fig. 6 zeigt eine mögliche Schaltungskonfiguration des zweiten Oszillators 10, der ein 2-Eingang-NICHT-UND- Gatter 34 umfaßt, an dessen Ausgangsseite drei Invertierer 36, 38 und 40 in Serie verbunden sind. Das NICHT-UND- Gatter 34 empfängt das Signal ENABLE an seinem ersten Eingang. Der Ausgang des ersten Invertierers 36 ist über einen Kondensator 42 mit der Kapazität C mit dem zweiten Eingang des NICHT-UND-Gatters 34 verbunden. Der Ausgang des zweiten Invertierers 38 ist über einen Widerstand 44 mit dem Widerstandswert R mit dem zweiten Eingang des NICHT-UND-Gatters 34 verbunden. Das Signal CLK2 wird vom dritten Invertierer 40 ausgegeben.
  • Wenn ENABLE auf Niedrigpegel liegt (inaktiv), wird der Ausgang des NICHT-UND-Gatters 34 auf Hochpegel gehalten, der von den drei Invertierern 36, 38 und 40 invertiert wird, um CLK2 auf Niedrigpegel zu halten. Der zweite Oszillator 10 wird dementsprechend angehalten. Der Hochpegel-Ausgang vom zweiten Invertierer 38 lädt den Kondensator 42 über den Widerstand 44 auf, wodurch der zweite Eingang des NICHT-UND-Gatters 34 auf Hochpegel gesetzt wird.
  • Wenn ENABLE auf Hochpegel wechselt (aktiv), sind beide Eingänge des NICHT-UND-Gatters 34 auf Hochpegel, so daß dessen Ausgang auf Niedrigpegel wechselt und CLK2 auf Hochpegel wechselt. Der Ausgang des zweiten Invertierers 38 liegt jedoch nun auf Niedrigpegel und entlädt den Kondensator 42 über den Widerstand 44. Dies bringt den zweiten Eingang des NICHT-UND-Gatters 34 auf Niedrigpegel, so daß dessen Ausgang in den Hochpegel-Zustand wechselt und CLK2 erneut auf Niedrigpegel wechselt. Die Schaltung setzt die Schwingung auf diese Weise fort mit einer Frequenz f&sub2;, die ungefähr gleich 1/2RC ist.
  • Es ist schwierig, f&sub2; in dieser Schaltung genau zu steuern, teilweise aufgrund der Schwierigkeit bei der Herstellung von Widerständen und Kondensatoren mit genauen Werten, und teilweise aufgrund der Empfindlichkeit von R und C gegenüber Temperaturschwankungen. Ein Merkmal der Erfindung ist jedoch, daß f&sub2; nicht genau gesteuert werden muß; der Mikrocontroller selbst mißt f&sub2; (durch Zählen von N&sub2;) und ermittelt das erforderliche Teilungsverhältnis, um eine gute Annäherung an fs zu erzeugen. Ein Vorteil der Schaltung in Fig. 6 ist, daß sie sehr kostengünstig ist: alle Schaltungselemente einschließlich des Wider stands 44 und des Kondensators 42 können leicht auf dem Mikrocontroller-Chip integriert werden; es sind kein externer Kristall oder andere externe Komponenten erforderlich.
  • Die Schaltung, in Fig. 6 ist geeignet für die Integration auf einem Mikrocontroller des CMOS-Typs (CMOS = Complementary Metal Oxide Semiconductor). Die Erfindung ist jedoch nicht auf diese Schaltung beschränkt; sie kann offensichtlich mit anderen Oszillatorschaltung ausgeführt werden.
  • Der programmierbare Frequenzteiler 16 in Fig. 1 ist ein Typ eines programmierbaren Zählers. Da der zweite Zähler 14 und der programmierbare Frequenzteiler 16 nicht gleichzeitig arbeiten müssen, ist es möglich, beide durch einen einzelnen programmierbaren Zähler 46 zu ersetzen, wie in Fig. 7 gezeigt ist. Der programmierbare Zähler 46 wird zuerst durch die Signale von der CPU 4 programmiert, um die Zyklen von CLK2 zu zählen, um einen Zählerwert N&sub2; zu erhalten. Nachdem die CPU 4 N&sub3; aus N&sub2; berechnet hat, programmiert sie anschließend den programmierbaren Zähler 46, um CLK2 durch N&sub3; zu dividieren und somit das dritte Taktsignal CLK3 zu erzeugen. Die CPU 4 verwendet eine einzelne n-Bit-Signalleitung QC, um den Zählerwert N&sub2; aus dem programmierbaren Zähler 46 zu lesen und das Teilungsverhältnis N&sub3; in den programmierbaren Zähler 46 einzusetzen.
  • Der erste Zähler 12 in Fig. 1 kann durch ein Zeitsteuerungs-Programm ersetzt werden, das in der CPU 4 läuft, so daß die CPU 4 das Signal GATE ausgibt, wie in Fig. 7 gezeigt ist. Zum Beispiel kann ein Programm, das 437 CLK1-Zyklen zählt, erstellt werden durch Erzeugen einer Schleife, die in 15 Zyklen ausgeführt wird, wobei diese Schleife 29 mal ausgeführt wird, woraufhin ein Befehl ausgeführt wird, der in 2 CLK1-Zyklen ausgeführt wird. Wenn der erste Zähler auf diese Weise in der Software implementiert ist, kann er Baudratengenerator eine besonders einfache Struktur besitzen, wie in Fig. 7 gezeigt, die nur den zweiten Oszillator 10, den programmierbaren Zähler 46 und die Zeitsteuerungs- und Berechnungseinrichtungen umfaßt, die vom ersten Oszillator 2 und der CPU 4 zur Verfügung gestellt werden.
  • Das dritte Taktsignal CLK3 in der vorangehenden Beschreibung war ein Rechteck-Signal mit einer Frequenz im wesentlichen gleich der gewünschten Baudraten-Frequenz fs von 9600 Hz, jedoch ist die Erfindung nicht auf diesen Typ von Taktsignal beschränkt. Zum Beispiel kann CLK3 ein Impulssignal mit einer Frequenz gleich einem festen Vielfachen der Baudrate sein, die der serielle Anschluß 6 teilt, um die Baudrate zu erzeugen. Die Baudrate kann selbstverständlich eine andere sein als 9600 bps. Die Frequenz f&sub1; des ersten Taktsignals kann eine andere sein als 32.768 Hz. Die ganze Zahl N&sub4;, die verwendet wird, um das Teilungsverhältnis zu berechnen, muß nicht 2&sup7; sein, sondern kann eine andere Zweierpotenz sein oder kann allgemein irgendeine positive ganze Zahl sein, obwohl Zweierpotenzen bevorzugt werden. Höhere Werte von N&sub4; ermöglichen, daß die Frequenz f&sub2; des zweiten Oszillators 10 mit größerer Genauigkeit gemessen werden kann.
  • Obwohl die Erfindung als Teil eines Einzel-Chip-Mikrocontrollers beschrieben worden ist, kann sie auch in anderen Vorrichtungen angewendet werden. Anstelle der CPU 4 kann irgendeine Prozessoreinheit verwendet werden, die N&sub2; durch N&sub4; teilen und die erforderlichen Steuersignale (z. B. ENABLE, LOAD und RESET) erzeugen kann.
  • Fachleute erkennen, daß viele weitere Abwandlungen in den Zeichnungen und den obigen Beschreibungen vorgenommen werden können, ohne vom Umfang der Erfindung abzuweichen.

Claims (19)

1. Verfahren zum Erzeugen eines Taktsignals (CLK3) für serielle Kommunikation von einem ersten Oszillator (2) und einem zweiten Oszillator (10), wobei der erste Oszillator (2) auf einer niedrigeren Frequenz, aber mit höherer Frequenzgenauigkeit als der zweite Oszillator (10) oszilliert, wobei das Verfahren folgende Schritte aufweist:
Erzeugen eines ersten Taktsignals (CLK1) vom ersten Oszillator (2) unter Verwendung eines externen Resonators;
Erzeugen eines zweiten Taktsignals (CLK2) vom zweiten Oszillator (10);
Zählen des ersten Taktsignals (CLK1), um ein Zeitintervall (tg) zu ermitteln;
Zählen des zweiten Taktsignals (CLK2) während des Zeitintervalls (tg), um einen Zählwert (N&sub2;) zu erhalten;
Dividieren des Zählwerts (N&sub2;) durch eine bestimmte ganze Zahl (N&sub4;), um ein Teilungsverhältnis (N&sub3;) zu erhalten; und
Dividieren des zweiten Taktsignals (CLK2) in der Frequenz durch das Teilungsverhältnis (N&sub3;), wodurch das Taktsignal (CLK3) für serielle Kommunikation zeugt wird.
2. Verfahren nach Anspruch 1, bei dem das erste Taktsignal (CLK1) ein Systemtaktsignal eines Mikrocontrollers (1) ist.
3. Verfahren nach Anspruch 2, bei dem der erste Oszillator (2) einen Resonator (8) verwendet, der sich außerhalb des Mikrocontrollers (1) befindet.
4. Verfahren nach Anspruch 2, bei dem der zweite Oszillator (10) sich innerhalb des Mikrocontrollers (1) befindet und keinen externen Resonator verwendet.
5. Verfahren nach Anspruch 4, bei dem der zweite Oszillator (10) ein Widerstand-Kondensator-Oszillator ist.
6. Verfahren nach Anspruch 1, bei dem die ganze Zahl (N&sub4;) eine Zweierpotenz ist, und der Schritt des Dividierens des Zählwerts durch eine Verschiebungsoperation nach rechts durchgeführt wird.
7. Verfahren nach Anspruch 1, das die weiteren Schritte aufweist:
Aktivieren des zweiten Oszillators (10), wenn serielle Kommunikation erforderlich ist;
Warten, daß sich das zweite Taktsignal (CLK2) stabilisiert hat, bevor man anfängt, das erste Taktsignal (CLK1) zu zählen, um das Zeitintervall (tg) zu ermitteln; und
Anhalten des zweiten Oszillators (10), wenn keine serielle Kommunikation erforderlich ist.
8. Baudraten-Generator zum Erzeugen eines Taktsignals (CLK3) für serielle Kommunikation, der folgendes aufweist:
einen ersten Oszillator (2), der einen externen Resonator (8) verwendet, um ein erstes Taktsignal (CLK1) zu erzeugen;
einen zweiten Oszillator (10), der keinen externen Resonator verwendet, um ein zweites Taktsignal (CLK2) zu erzeugen;
einen ersten Zähler (12), der angeschlossen ist, um das erste Taktsignal (CLK1) zu zählen, und dabei ein Zeitintervall (tg) zu ermitteln, und ein Glied-Signal auszugeben, das nur während des Intervalls (tg) aktiv ist;
einen zweiten Zähler (14), der angeschlossen ist, um das zweite Taktsignal (CLK2) zu zählen während das Glied-Signal aktiv ist, wodurch ein Zählwert (N&sub2;) erzeugt wird;
einen programmierbaren Frequenzteiler (16), der angeschlossen ist, um das zweite Taktsignal (CLK2) durch ein Teilungsverhältnis (N&sub3;) zu dividieren, wodurch das Taktsignal (CLK3) für serielle Kommunikation erzeugt wird; und
eine Prozessoreinheit (4), die angeschlossen ist, um den Zählwert (N&sub2;) vom zweiten Zähler (14) zu lesen, den Zählwert (N&sub2;) durch eine bestimmte ganze Zahl (N&sub4;) zu dividieren, wodurch das Teilungsverhältnis (N&sub3;) ausgerechnet wird, und das Teilungsverhältnis (N&sub2;) in den programmierbaren Frequenzteiler (16) zu laden.
9. Baudraten-Generator nach Anspruch 8, bei dem der Baudraten- Generator, außer dem externen Resonator (8), als Teil des Mikrocontrollers (1) gebaut ist, wobei die Prozessoreinheit (4) eine Zentraleinheit des Mikrocontrollers (1) ist.
10. Baudraten-Generator nach Anspruch 9, bei dem der Mikrocontroller (1) das erste Taktsignal (CLK1) als ein Systemtaktsignal verwendet.
11. Baudraten-Generator nach Anspruch 8, bei dem die Prozessoreinheit (4) ein Freigabesignal erzeugt, das den zweiten Oszillator (10) aktiviert, wenn serielle Kommunikation erforderlich ist und den zweiten Oszillator (10) zu anderen Zeiten anhält.
12. Baudraten-Generator nach Anspruch 8, bei dem die Prozessoreinheit (4) ein Rücksetzsignal erzeugt, das den ersten Zähler (12) und den zweiten Zähler (14) zurücksetzt.
13. Baudraten-Generator nach Anspruch 8, bei dem die ganze Zahl (N&sub4;) eine Zweierpotenz ist, und die Prozessoreinheit (4) so programmiert ist, daß sie den Zählwert (N&sub2;) durch die ganze Zahl (N&sub4;) dividiert, indem sie eine Verschiebungsoperation nach rechts durchführt.
14. Baudraten-Generator nach Anspruch 8, bei dem der zweite Oszillator (10) ein Widerstand-Kondensator-Oszillator ist.
15. Baudraten-Generator nach Anspruch 14, bei dem der zweite Oszillator (10) folgendes aufweist:
ein logisches Glied (34) mit einem ersten Eingang, einem zweiten Eingang, und einem Ausgang;
eine Vielzahl von Invertern (36, 38, 40), die mit dem Ausgang in Reihe geschaltet sind;
einen Kondensator (42) zum Anschließen des Ausgangs eines Inverters (36) an einen zweiten Eingang; und
einen Widerstand (44) zum Anschließen des Ausgangs eines anderen Inverters (38) an den zweiten Ausgang.
16. Baudraten-Generator nach Anspruch 15, bei dem das logische Glied (34) ein NAND-Glied ist.
17. Baudraten-Generator nach Anspruch 15, bei dem der erste Eingang ein Freigabesignal von der Prozessoreinheit (4) erhält.
18. Baudraten-Generator nach Anspruch 8, bei dem der zweite Zähler (14) und der programmierbare Frequenzteiler (16) als ein einzelner programmierbarer Zähler (46) verbunden sind.
19. Baudraten-Generator nach Anspruch 8, bei dem der erste Zähler (12) ein Zeitprogramm aufweist, das auf der Prozessoreinheit (4) läuft, wobei das Glied-Signal von der Prozessoreinheit (4) ausgegeben wird.
DE69320286T 1992-09-29 1993-09-28 Baudratengenerator mit niedriger Leistung Expired - Fee Related DE69320286T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25945592A JP3181396B2 (ja) 1992-09-29 1992-09-29 クロック発生回路

Publications (2)

Publication Number Publication Date
DE69320286D1 DE69320286D1 (de) 1998-09-17
DE69320286T2 true DE69320286T2 (de) 1999-05-06

Family

ID=17334305

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69320286T Expired - Fee Related DE69320286T2 (de) 1992-09-29 1993-09-28 Baudratengenerator mit niedriger Leistung

Country Status (4)

Country Link
US (1) US5398007A (de)
EP (1) EP0590607B1 (de)
JP (1) JP3181396B2 (de)
DE (1) DE69320286T2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5719510A (en) * 1996-03-27 1998-02-17 Intel Corporation Software configurable digital clock generator
GB9610801D0 (en) * 1996-05-23 1996-07-31 Philips Electronics Nv Frequency generating circuit
US6219394B1 (en) * 1997-10-08 2001-04-17 Tropian, Inc. Digital frequency sampling and discrimination
JP2000078210A (ja) * 1998-08-28 2000-03-14 Aisin Seiki Co Ltd Ask変調回路
JP2002305443A (ja) * 2001-04-06 2002-10-18 Texas Instr Japan Ltd タイマー回路
US20030184066A1 (en) * 2002-03-22 2003-10-02 Thomas Stierle Synchronous communication interface sharing for communicating with a plurality of devices
US7395447B2 (en) * 2002-09-16 2008-07-01 Silicon Labs Cp, Inc. Precision oscillator for an asynchronous transmission system
TW589805B (en) * 2003-01-30 2004-06-01 Elan Microelectronics Corp RF transmitter system of single quartz crystal oscillator
KR101428787B1 (ko) 2007-02-08 2014-08-08 가부시키가이샤 한도오따이 에네루기 켄큐쇼 클록 신호 생성 회로 및 반도체 장치
JP2008299731A (ja) * 2007-06-01 2008-12-11 Panasonic Corp 半導体集積回路、情報処理システム
US8132041B2 (en) * 2007-12-20 2012-03-06 Qualcomm Incorporated Method and apparatus for generating or utilizing one or more cycle-swallowed clock signals
EP2237423A1 (de) * 2009-03-24 2010-10-06 CSEM Centre Suisse d'Electronique et de Microtechnique SA - Recherche et Développement Frequenzgenerator
EP2363960B1 (de) * 2010-03-01 2012-08-22 Austriamicrosystems AG Integrierte Schaltung mit internem RC-Oszillator und Verfahren zur Kalibrierung eines RC-Oszillators
DE102010033608A1 (de) * 2010-08-06 2012-02-09 Continental Automotive Gmbh Zeitgeber
FR2978258B1 (fr) * 2011-07-21 2013-08-30 Inside Secure Procede et circuit d'ajustement d'une frequence d'horloge
CN106201968A (zh) * 2016-07-22 2016-12-07 溧阳市华鹏电力仪表有限公司 一种uart通讯接口自动调整方法
JP6852547B2 (ja) * 2017-04-28 2021-03-31 セイコーエプソン株式会社 回路装置、発振器、電子機器及び移動体
US10416703B2 (en) * 2017-08-10 2019-09-17 Ambiq Micro, Inc. Counter/timer array for generation of complex patterns independent of software control
JP2024064806A (ja) * 2022-10-28 2024-05-14 ローム株式会社 半導体集積回路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4305041A (en) * 1979-10-26 1981-12-08 Rockwell International Corporation Time compensated clock oscillator
CH643106B (fr) * 1980-11-26 Suisse Horlogerie Garde-temps comprenant une chaine de diviseurs au rapport de division ajustable.
GB2212030A (en) * 1987-11-02 1989-07-12 Philips Nv Cellular telephone apparatus
JPH02261239A (ja) * 1989-03-31 1990-10-24 Seiko Instr Inc クロック発生装置

Also Published As

Publication number Publication date
EP0590607A1 (de) 1994-04-06
JP3181396B2 (ja) 2001-07-03
DE69320286D1 (de) 1998-09-17
US5398007A (en) 1995-03-14
EP0590607B1 (de) 1998-08-12
JPH06112813A (ja) 1994-04-22

Similar Documents

Publication Publication Date Title
DE69320286T2 (de) Baudratengenerator mit niedriger Leistung
DE69025633T2 (de) Zufallszahlengenerator
EP0428774B1 (de) Mikrocomputer mit einem intergrierten RC-Oszillator mit programmierbarer Frequenz
DE3818546C2 (de)
DE3300836C2 (de)
DE2622970A1 (de) Elektrische schaltung zum melden der kanalwahl bei einem abstimmbaren empfaenger
DE3486195T2 (de) Mikrorechner mit synthesiertem taktgenerator und leistungseinsparung.
DE3132980A1 (de) Elektronischer zeitgeber
DE2731336A1 (de) Taktsystem
DE2250389C3 (de) Zeltnormal, insbesondere für elektronische Uhren, mit einer einen einstellbaren Frequenzteller steuernden Zeitbasis
DE69412745T2 (de) Impulsgenerator mit digitaler Steuerung
DE69327612T2 (de) Schaltung und Verfahren zur Generierung eines stabilen Taktsignals mit Frequenzvervielfachung
EP0508232B1 (de) Elektronische Schaltung zum Messen eines kurzen Zeitintervalls
DE3022746A1 (de) Digitale phasenkomparatorschaltung
DE69233345T2 (de) Ein-Chip-Mikrocomputer mit zwei Zeitgeberfunktionsarten
DE69628604T2 (de) Ein-Chip-Mikrorechner mit vielen Zeitgeberzählern
DE10200698B4 (de) Genaues Zeitverzögerungssystem und Verfahren unter Verwendung eines ungenauen Oszillators
DE69515717T2 (de) Apparat und Verfahren zum Bestimmen einer Zeitspanne während der die Hauptspannungsversorgung eines Systemes inaktiv war
EP1573921B1 (de) Digital steuerbarer oszillator
DE2513948A1 (de) Dekadisch einstellbarer frequenzgenerator mit einer phasengerasteten regelschleife
DE3047149C2 (de) Miniaturisierte elektronische Uhr
DE69022126T2 (de) Frequenzteiler-Schaltung.
DE3714901C2 (de)
CH616787A5 (de)
DE2543342A1 (de) Schaltungsanordnung und verfahren zur messung der genauigkeit eines zeitmessers

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee