DE69320286T2 - Baudratengenerator mit niedriger Leistung - Google Patents
Baudratengenerator mit niedriger LeistungInfo
- 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
Links
- 239000003990 capacitor Substances 0.000 claims description 9
- 238000000034 method Methods 0.000 claims 8
- 230000003213 activating effect Effects 0.000 claims 1
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 16
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 16
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 12
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 12
- 102100040856 Dual specificity protein kinase CLK3 Human genes 0.000 description 9
- 101000749304 Homo sapiens Dual specificity protein kinase CLK3 Proteins 0.000 description 9
- 239000013078 crystal Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 101100311330 Schizosaccharomyces pombe (strain 972 / ATCC 24843) uap56 gene Proteins 0.000 description 3
- 101150018444 sub2 gene Proteins 0.000 description 3
- 230000010354 integration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/02—Speed or phase control by the received code signals, the signals containing no special synchronisation information
- H04L7/033—Speed 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
- 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.
- 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.
- 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.
- 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.
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)
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)
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 | クロック発生装置 |
-
1992
- 1992-09-29 JP JP25945592A patent/JP3181396B2/ja not_active Expired - Fee Related
-
1993
- 1993-09-28 EP EP93115646A patent/EP0590607B1/de not_active Expired - Lifetime
- 1993-09-28 DE DE69320286T patent/DE69320286T2/de not_active Expired - Fee Related
-
1994
- 1994-07-20 US US08/277,704 patent/US5398007A/en not_active Expired - Lifetime
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 |