第 2 章 CPU コア
2.3 システムクロック制御回路
2.3.3 機能
と、TMP89FM42Aの内部で表
2-1
の状態になりシステムクロックリセットが発生します。クロック切り 替えの詳細については「2.3.6 動作モードの制御」を参照してください。XIN XOUT
(a) ,
XIN XOUT
(b)
( )
XTIN XTOUT
(c)
XTIN XTOUT
(d)
( )
図 2-4 発振子の接続例
(1)
高周波クロックの基準クロック(fh)TMP89FM42A
を高速で動作させるために使用されます。SYSCR1<OSCSEL>を"1"に設定すると外部高周波クロック(fc)が高周波クロックの基準クロ
ック(fh)
として使用されます。SYSCR1<OSCSEL>
を"0"
に設定すると内部高周波クロック(fosc)
が高周波クロックの基準クロック(fh)
として使用されます。リセット解除直後、SYSCR1<OSCSEL>は"0"にクリアされ、内部高周波クロック(fosc)が高周波クロックの基準ク
ロック(fh)
として使用されます。高周波クロックの基準クロック
(fh)
を切り替えるときは、必ず内部高周波クロック(fosc)
、 外部高周波クロック(fc)
ともに発振している必要があります。クロックの切り替え時には、必ず下記の手順で行ってください。
また、切り替えの途中で、外部高周波クロック(fc)と内部高周波クロック(fosc)がともに許 可される状態になりますが、この状態から「2.3.5 動作モード制御回路」で述べる動作モード の切り替えを実施しないでください。切り替えが完了した後は、使用しない方の高周波クロ ックを停止させてください。
・
fosc
からfc
への切り替えP0FC0
が"1"の状態でSYSCR2<XEN>を"1"に設定し、外部高周波クロック(fc)の発
振を許可します。ウォーミングアップカウンタで外部高周波クロック(fc)の発振が安定したことを確 認した後、SYSCR1<OSCSEL>を"1"に設定します。
SYSCR1<OSCSEL>を"1"にしてから、最大 2/fosc+2.5/fc [s]後に、高周波クロック
の基準クロック(fh)
が外部高周波クロック(fc)
に切り替わります。切り替え後、2マシンサイクル以上待ち、SYSCR2<OSCEN>を"0"にクリアし、内 部高周波クロック
(fosc)
の発振を停止させます。高周波クロックが切り替わる前に、SYSCR2<OSCEN>を"0"にクリアすると、システムクロックリセットが発生します。
注
1)
高周波クロックの基準クロック(fh)の切り替え時、ハードウェアは外部高周波クロック(fc)と内部 高周波クロック(fosc)の同期を取ります。同期を取るときに、最大2.5 / fc [s]の期間 fh
が停止しま す。注
2) SYSCR1<OSCSEL>を切り替えた後、必ず 2
マシンサイクル以上待ち、SYSCR2<OSCEN>を を"0"にクリアしてください。2マシンサイクル未満でクリアするとシステムクロックリセットが 発生します。注
3) SYSCR1<OSCSEL>は SYSCR2<SYSCK>が"0"のとき(NORMAL1, 2
モード中)に設定してくださ い。SYSCR2<SYSCK>が"1" (SLOW1, 2モード)のときにSYSCR1<OSCSEL>に書き込みを行っ
ても設定値は反映されません。注
4) P0FC0
が"0"の時、SYSCR2<XEN>を"1"に設定するとシステムクロックリセットが発生します。注
5) SYSCR2<XEN>が"1"に設定されている状態で SYSCR2<XEN>に"1"を書き込んでもウォーミング
アップカウンタはソースクロックのカウントを開始しません。ᄖㇱ㜞ᵄࠢࡠ࠶ࠢ(fc)
ౝㇱ㜞ᵄࠢࡠ࠶ࠢ(fosc)
㜞ᵄࠢࡠ࠶ࠢߩ ၮḰࠢࡠ࠶ࠢ(fh) SYSCR1<OSCSEL>
2.5 / fc (max.)
図 2-5 高周波クロックの基準クロック(fh)の切り替え(fosc から fc への切り替え)
表
2-2 高周波クロックの基準クロック(fh)を fosc
からfc
に切り替える時の設定手順 P0FC0 SYSCR2
<OSCEN> SYSCR2
<XEN> SYSCR1
<OSCSEL>
メインシステム
クロック 状態
1 0 1 0 0 fosc 高周波クロックの基準クロックのソースクロックが
foscでP00 / P01ポートが入出力ポートの状態
2 1 1 0 0 fosc P00, P01ポートを発振器として使用する設定を行う
3 1 1 1 0 fosc 高周波クロック用発振回路のウォーミングアップ
4 1 1 1 1 fosc→fc 高周波クロックの基準クロックのソースクロックを
fcに切り替え中
5 1 0 1 1 fc 高周波クロックの基準クロックのソースクロックを
fcに切り替え終了
注) 高周波クロックの基準クロック切り替えは必ずこの手順で実施してください。
(プログラム例) P00 / P01ポートを発振器として使用する設定を行い、高周波クロックの基準クロックをfoscからfcに切り替える
(ウォーミングアップ時間 約300us@fc=8MHz)
LD (WUCCR), 0y00000001 ;WUCCR<WUCDIV>←"00"(分周無し)、
;WUCCR<WUCSEL>←"01"(ソースクロックにfcを選択)
LD (WUCDR), 0x26 ;ウォーミングアップ時間をセット
;(発振子の特性で時間を決定します)
;300us / 8us = 37.5, 切り上げて0x26
SET (EIRL).4 ;INTWUCの割り込みを許可
SET (P0FC).0 ;P0FC0 ←"1" (P00 / P01ポートを発振器として使用する)
SET (SYSCR2). 6 ;SYSCR2<XEN>←"1"
;(外部高周波クロック発振開始&ウォーミングアップタスタート)
: :
PINTWUC: SET (SYSCR1). 3 ;SYSCR1<OSCSEL>←"1"
;(高周波クロックの基準クロックをfoscからfcに切り替え)
NOP ;2マシンサイクルのウェイト
NOP ;2マシンサイクルのウェイト
CLR (SYSCR2). 7 ;SYSCR2<OSCEN>←"0" ( fosc停止)
RETI
・
fc
からfosc
への切り替えSYSCR1<OSCEN>を"1"に設定し、内部高周波クロック(fosc)を許可します。
ウォーミングアップカウンタで内部高周波クロック(fosc)の発振が安定したことを 確認した後、
SYSCR1<OSCSEL>
を"0"
に設定します。SYSCR1<OSCSEL>を"0"にしてから、最大 2 / fc + 2.5 / fosc [s]後に、高周波クロッ
クの基準クロック(fh)
が内部高周波クロック(fosc)
に切り替わります。切り替え後、
2
マシンサイクル以上待ち、SYSCR2<XEN>
を"0"
にクリアし、fc
の 発振を停止させます。高周波クロックが切り替わる前に、SYSCR2<XEN>
を"0"
にク リアすると、システムクロックリセットが発生します。注
1)
高周波クロックの基準クロック(fh)の切り替え時、ハードウェアは外部高周波クロック(fc)と内部 高周波クロック(fosc)の同期を取ります。同期を取るときに、最大2.5 / fosc [s]の期間 fh
が停止し ます。注
2) SYSCR1<OSCSEL>を切り替えた後、必ず 2
マシンサイクル以上待ち、SYSCR2<XEN>を を"0"にクリアしてください。2マシンサイクル未満でクリアするとシステムクロックリセットが 発生します。注
3) SYSCR1<OSCSEL>は SYSCR2<SYSCK>が"0"のとき(NORMAL1, 2
モード中)に設定してくださ い。SYSCR2<SYSCK>が"1" (SLOW1, 2モード)のときにSYSCR1<OSCSEL>に書き込みを行っ
ても設定値は反映されません。注
4) P0FC0
が"0"の時、SYSCR2<XEN>を"1"に設定するとシステムクロックリセットが発生します。注
5) SYSCR2<XEN>が"1"に設定されている状態で SYSCR2<XEN>に"1"を書き込んでもウォーミング
アップカウンタはソースクロックのカウントを開始しません。2.5 / fosc (max.) ᄖㇱ㜞ᵄࠢࡠ࠶ࠢ(fc)
ౝㇱ㜞ᵄࠢࡠ࠶ࠢ(fosc)
㜞ᵄࠢࡠ࠶ࠢߩ ၮḰࠢࡠ࠶ࠢ(fh) SYSCR1<OSCSEL>
図 2-6 高周波クロックの基準クロック(fh)の切り替え(fc から fosc への切り替え)
表
2-3
高周波クロックの基準クロック(fh)
をfc
からfosc
に切り替える時の設定手順 P0FC0 SYSCR2
<OSCEN>
SYSCR2
<XEN>
SYSCR1
<OSCSEL>
メインシステム
クロック 状態
1 1 0 1 1 fc 高周波クロックの基準クロックのソースクロックが
fcの状態
2 1 1 1 1 fc 高周波クロック用発振回路のウォーミングアップ
3 1 1 1 0 fc→fosc 高周波クロックの基準クロックのソースクロックを
foscに切り替え中
4 1 1 0 0 fosc 高周波クロックの基準クロックのソースクロックを
foscに切り替え終了
注) 高周波クロックの基準クロック切り替えは必ずこの手順で実施してください。
(プログラム例) 高周波クロックの基準クロックをfcからfoscに切り替える(ウォーミングアップ時間 約100us@fosc=5MHz)
LD (WUCCR), 0y00000000 ;WUCCR<WUCDIV>←"00"(分周無し)、
;WUCCR<WUCSEL>←"00"(ソースクロックにfoscを選択)
LD (WUCDR), 0x08 ;ウォーミングアップ時間をセット
;(発振子の特性で時間を決定します)
;100us / 12.8us = 7.8, 切り上げて0x08
SET (EIRL).4 ;INTWUCの割り込みを許可
SET (SYSCR2). 7 ;SYSCR2<OSCEN>←"1"
;(内部高周波クロック発振開始&ウォーミングアップタスタート)
: :
PINTWUC: CLR (SYSCR1). 3 ;SYSCR1<OSCSEL>←"0"
;(高周波クロックの基準クロックをfcからfoscに切り替え)
NOP ;2マシンサイクルのウェイト
NOP ;2マシンサイクルのウェイト
CLR (SYSCR2). 6 ;SYSCR2<XEN>←"0" ( fc停止)
RETI
(2)
低周波クロックの基準クロック(fs)TMP89FM42A
を低速で動作させるときに使用されます。消費電力を低減させることができます。
2.3.3.2
クロックギアクロックギアは、高周波クロックの基準クロック
(fh)
を分周したギアクロック(fcgck)
を選択し、タイミングジェネレータに入力する回路です。
分周クロックの選択は、
CGCR<FCGCKSEL>
で行います。CGCR<FCGCKSEL>
を切り替えてからギアクロック(fcgck)
が切り替わるまで2
マシンサイクルかかります。
また、
CGCR<FCGCKSEL>
を変更した直後のfcgck
は設定したクロック幅よりも長くなることがあります。
リセット解除直後、ギアクロック(fcgck)は高周波クロック(fh)を
4
分周したクロック(fh/4)にな ります。表
2-4 ギアクロック(fcgck)
CGCR<FCGCKSEL> fcgck
00 fh / 4
01 fh / 2
10 fh
11 Reserved
注)
CGCR<FCGCKSEL>は SLOW
モード中に書き替えないでください。fcgckが正しく切り替わらないことがあります。
2.3.3.3
タイミングジェネレータタイミングジェネレータは、ギアクロック(fcgck)または外部低周波クロック(fs)を
4
分周したク ロックからCPU
コアおよび周辺回路に供給する各種システムクロックを発生する回路です。タイ ミングジェネレータの機能は、次のとおりです。1.
メインシステムクロックfm
生成2.
タイマカウンタ、タイムベースタイマ等、周辺回路用クロック生成ࡔࠗࡦࠪࠬ࠹ࡓࠢࡠ࠶ࠢಾࠅᦧ߃࿁〝 ࡑࠪࡦࠨࠗࠢ࡞ࠞ࠙ࡦ࠲
SYSCR2<SYSCK>
SYSCR1<DV9CK>
ࠡࠕࠢࡠ࠶ࠢfcgck
ࡊࠬࠤ ࠺ࡃࠗ࠳
ࠢ࠲
1 A
࠲ࠗࡑࠞ࠙ࡦ࠲࠲ࠗࡓࡌࠬ࠲ࠗࡑ╬ޔㄝ࿁〝
5 4 3 2
1 6 7 8 9 101112131415161718192021
࠺ࡃࠗ࠳
B SY
ࡔࠗࡦࠪࠬ࠹ࡓࠢࡠ࠶ࠢ
fm
ૐᵄࠢࡠ࠶ࠢߩ ၮḰࠢࡠ࠶ࠢߩ 㧠ಽࠢࡠ࠶ࠢ
fs/4
図 2-7 タイミングジェネレータの構成
(1)
タイミングジェネレータの構成タイミングジェネレータは、メインシステムクロック切り替え回路、プリスケーラ、
21
段 のデバイダおよびマシンサイクルカウンタから構成されています。1.
メインシステムクロック切り替え回路ギアクロック
(fcgck)
、外部低周波クロック(fs)
を4
分周したクロックからCPU
コ アを動作させるメインシステムクロック(fm)
用のクロックを選択する回路です。SYSCR2<SYSCK>
を"0"
にクリアするとギアクロック(fcgck)
が選択され、"1"
にセッ トすると外部低周波クロック(fs)を4
分周したクロックが選択されます。SYSCR2<SYSCK>
を変更してからメインシステムクロックが切り替わるまで、一定の時間がかかります。メインシステムクロックが切り替わる前に切り替え元の発 振回路を停止にすると内部で表
2-1
の状態になりシステムクロックリセットが発生 します。クロック切り替えの詳細については「2.3.6
動作モードの制御」を参照して ください。2.
プリスケーラ、デバイダfcgck
を分周する回路です。分周されたクロックは、タイマカウンタ、タイムベースタイマ等の周辺回路に供給されます。
SYSCR1<DV9CK>、SYSCR2<SYSCK>ともに"0"のときデバイダの 9
段目への入力 クロックは8
段目のデバイダの出力となります。SYSCR1<DV9CK>または SYSCR2<SYSCK>が"1"のとき、デバイダの 9
段目への 入力クロックはfs/4
となります。また、SYSCR2<SYSCK>
が"1"
のとき、プリスケー ラ、デバイダの初段から8
段目までの出力は停止します。なお、リセット時および
STOP
モード解除後のウォーミングアップ動作終了時に プリスケーラおよびデバイダは “0” にクリアされます。命令の実行は、メインシステムクロック
(fm)
に同期して行われます。命令実行の最小単位を、『マシンサイクル』と呼び、
1
マシンサイクルはメインシ ステムクロックで1
クロックになります。TLCS-870/C1
シリーズの命令のマシンサイクルは、1
マシンサイクルで実行される
1
サイクル命令から10
マシンサイクルで実行される10
サイクル命令までの10
種 類と、13マシンサイクルで実行される13
サイクル命令の1
種類で、合計11
種類で す。2.3.4 ウォーミングアップカウンタ
ウォーミングアップカウンタは、内部高周波クロック(fosc)、外部高周波クロック(fc)と外部低周波 クロック(fs)をカウントする回路で、ソースクロック選択回路と
3
段の分周回路、14段のカウンタか ら構成されています。パワーオンリセット解除後に電源電圧が安定するまでの時間確保、
STOP
モードからの復帰、動作 モード遷移のときに発振回路が安定して発振するまでの時間を確保するために使用します。S Z D C B A S
Z A B C
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3
ᄖㇱ㜞ᵄࠢࡠ࠶ࠢ(fc)
ౝㇱ㜞ᵄࠢࡠ࠶ࠢ(fosc)
ᄖㇱૐᵄࠢࡠ࠶ࠢ(fs)
ࠦࡦࡄ
࠲
WUCDR
SYSCR2 SYSCR1
WUCCR
ࠞ࠙ࡦ࠻ࠕ࠶ࡊ⸵น㧛ਇ⸵น XEN XTEN
STOP
INTWUCഀࠅㄟߺⷐ᳞
CPUേ⸵น WUCSEL
2
WUCDIV WUCRST
࠙ࠜࡒࡦࠣࠕ࠶ࡊ
ࠞ࠙ࡦ࠲ᓮ࿁〝
OSCEN
2 2
図 2-8 ウォーミングアップカウンタ回路
2.3.4.1
ハードウエアで発振許可する場合のウォーミングアップカウンタ動作(1)
パワーオンリセット解除、リセット解除時パワーオンリセット解除後、電源電圧が安定するまでの時間確保、リセット解除後の高周 波クロック用発振回路が安定して発振するまでの時間を確保するために使用します。
電源投入時、電源電圧がパワーオンリセットの解除電圧を超えるとウォーミングアップカ ウンタのリセット信号が解除されます。このとき、CPU、周辺回路はリセット状態のままで す。
リセット信号により、WUCCR<WUCSEL>は"00"、WUCCR<WUCDIV>は"11"に初期化さ れ、ウォーミングアップカウンタの入力クロックとして内部高周波クロック(fosc)が選択さ れます。
ウォーミングカウンタのリセットが解除されると、内部高周波クロック