• 検索結果がありません。

数値制御オシレータ (NCO) モジュール

ドキュメント内 PIC10(L)F320/322 Data Sheet (ページ 129-139)

数値制御オシレータ(NCOx)モジュールは、インクリ メント値を加算する事で生じるオーバーフローを使っ て入力周波数を分周するタイマです。単純なカウンタ 駆動のタイマに比べてこの加算による方法が有利な点 は、分周器の値によって分周の分解能が変化しない事 です。NCOxが最も効果を発揮するのは、周波数の精 度と、固定デューティサイクルにおける細かい分解能 が必要なアプリケーションです。

NCOxは以下の特長があります。

• 16ビット インクリメント機能

• 固定デューティ サイクル(FDC)モード

• パルス周波数(PF)モード

• 出力パルス幅制御

• 複数のクロック入力ソース

• 出力の極性制御

• 割り込み機能

図 20-1に、NCOxモジュールの概略ブロック図を示し ます。

PIC10(L)F320/322

DS41585A_JP - p.130

Prelimina ry

2012 Microchip Technology Inc.

図 20-1: 数値制御オシレータ(NCOx)モジュールの概略ブロック図

NxEN LC1OUT

HFINTOSC NCO1CLK

2 NxCKS<1:0>

Note 1: インクリメント レジスタは、はじめにNCOxモジュールを無効にする事なく値を変更できるようにダブルバッファ構成を採用しています。

ここでは参考のために示しています。このバッファにはユーザはアクセスできません。

(1)

FOSC 10

00 01 11

Increment

Buffer

Accumulator

Overflow NCOx Clock

D Q

Q

S Q

R Q

To NxOUT bit 16

20

20

Interrupt event

Set NCOxIF flag

NxPOL

NCOx Clock

0 1

NxPFM

To CLC and CWG modules

Ripple Counter Reset

NxPWS<2:0>

3 16

NCOx NxOE

TRIS Control

 2012 Microchip Technology Inc.

Preliminary

DS41585A_JP - p.131

PIC10(L)F320/322

20.1 NCOx の動作

NCOx は、固定値をアキュムレータに繰り返し加算す る事で動作します。加算は入力クロックレートで実行 されます。アキュムレータは周期的にオーバーフロー してキャリーを発生します。これがNCOx の生(raw) 出力です。これによって、実質的に加算値とアキュム レータの最大値の比率によって入力クロック周波数が 分周されます。式 20-1を参照してください。

NCOx出力をパルスストレッチまたはフリップフロップ のトグルによってさらに変調する事も可能です。変調さ れたNCOx出力は、チップ内部の他の周辺機能と、必要 に応じてピン出力に分配されます。アキュムレータの オーバーフローは割り込みも発生させます。

NCOx 出力は瞬時周波数を発生させ、これが不確定性 を招く恐れがあります。この出力は、瞬時周波数を平 均化 して不 確定性 を低減 する 処理を 受信側 の回路 (CWGまたは外部の共振コンバータ回路) に委ねてい ます。

20.1.1 NCOxのクロック源

NCOxでは、以下のクロック源を使用できます。

• HFINTOSC

• FOSC

• LC1OUT

• NCO1CLKピン

NCOxクロック源は、NCOxCLKレジスタのNxCKS<1:0>

ビットで選択します。

20.1.2 アキュムレータ

アキュムレータは 20 ビットのレジスタです。アキュ ムレータへの読み書きは、以下の3つのレジスタで行 います。

• NCOxACCL

• NCOxACCH

• NCOxACCU

20.1.3 加算器

NCOx の加算器はフルアダーです。選択されている クロック源とは非同期で動作します。入力クロックの 立ち上がりエッジで、前回の加算結果とインクリメン ト値の和がアキュムレータ値を上書きします。

20.1.4 インクリメント レジスタ

インクリメント値は、2つの8ビットレジスタに格納 され、16ビットのインクリメントが可能です。2つの レジスタは以下の通りです(LSB、MSBの順)。

• NCOxINCL

• NCOxINCH

いずれのレジスタも読み書き可能です。インクリメン ト レジスタは、はじめにNCOxモジュールを無効にす る事なく値を変更できるようにダブルバッファ構成を 採用しています。

モジュールを無効にするとバッファへの読み込みはた だちに実行されます。上位レジスタへの書き込みをは じめに行う必要があります。なぜなら、その後の下位 のインクリメント レジスタへの書き込みを実行した 後に、バッファがNCOx動作に同期して読み込まれる からです。

式 20-1:

Note: インクリメント バッファ レジスタにはユー

ザはアクセスできません。

F

OVERFLOW

NCO Clock Frequency Increment Value

2

n

---=

n =

アキュムレータの幅(ビット)

PIC10(L)F320/322

20.2 固定デューティ サイクル (FDC) モード

固定デューティサイクル(FDC)モードでは、アキュ ムレータがオーバーフローするたびに出力がトグル します。インクリメント値が一定の場合、これにより 50% のデューティ サイクルが得られます。詳細は 図 20-2を参照してください。

FDCモードは、NCOxCONレジスタのNxPFMビット をクリアする事で選択します。

20.3 パルス周波数 (PF) モード

パルス周波数(PF)モードでは、アキュムレータがオー バーフローするたびに、1 クロック周期以上の期間、

出力がアクティブになります。詳細は、セクション 20.3.1「出力パルス幅制御」を参照してください。

クロック期間が終了すると、出力は非アクティブ状態 に戻ります。これによって、パルス出力が得られます。

出力がアクティブになるのは、オーバーフロー イベン ト 直 後 の ク ロ ッ ク 立 ち 上 が り エ ッ ジ で す。詳細は 図20-2を参照してください。

アクティブと非アクティブ状態の値は、NCOxCON レジスタの極性ビットNxPOLによって決まります。

PF モードは、NCOxCONレジスタのNxPFMビット をセットする事で選択します。

20.3.1 出力パルス幅制御

PF モードの動作では、出力のアクティブ状態の期間 を複数のクロック周期幅によって変更できます。パル ス幅はNCOxCLKレジスタのNxPWS<2:0>ビットで 選択します。

選択したパルス幅がアキュムレータのオーバーフロー の時間枠よりも大きい場合、NCOx動作は定義されま せん。

20.4 出力の極性制御

NCOx モ ジ ュ ー ル の 最 終 段 は 出 力 極 性 段 で す。

NCOxCONレジスタのNxPOLビットで出力の極性を

選択します。割り込みを有効にした状態で極性を変更 すると、出力の遷移によって割り込みが発生します。

NCOxの出力は、ソースコードまたは他の周辺機能に よ っ て チ ッ プ 内 部 で 使 用 で き ま す。そ れ に は、

NCOxCONレジスタのNxOUTビット(読み出し専用) を読み出します。

2012 Microchip Technology Inc.

Prelimina ry

DS41585A_JP - p.133

PIC10(L)F320/322

図 20-2: FDC出力モードの動作図

Clock Source NCOx Increment Value

NCOx Value

Accumulator 0000h 4000h FC000h 0000h 4000h 8000h 0000h 4000h 8000h C000h

4000h

1 0000h

Overflow

Event Interrupt

NCOx Output FDC Mode

NCOx Output PF Mode NCOxPWS = 000

NCOx Output NCOxPWS = 001 PF Mode

FC000h 8000h

PIC10(L)F320/322

20.5 割り込み

アキュムレータがオーバーフローすると、PIR1 レジ スタのNCOx割り込みフラグビットNCOxIF がセッ トされます。この割り込みイベントを有効にするに は、以下のビットをセットする必要があります。

• NCOxCONレジスタのNxENビット

• PIE1レジスタのNCOxIEビット

• INTCONレジスタのPEIEビット

• INTCONレジスタのGIEビット

割り込みは、割り込みサービスルーチンで NCOxIF ビットをクリアする事によって、ソフトウェアで解除 する必要があります。

20.6 リセットの効果

NCOxレジスタはいずれもリセットによって0にクリ アされます。

20.7 スリープ中の動作

NCO モジュールはシステムクロックから独立して動 作します。選択されているクロック源がアクティブで あれば、スリープ中でも動作を続けます。

NCOモジュールが有効で、クロック源としてHFINTOSC

を選択している場合、システムクロック源にかかわら

ず、HFINTOSCはスリープ中でもアクティブ状態を維

持します。

言い換えれば、システムクロックと NCOクロック源

の両方にHFINTOSCを選択しており、NCOが有効の

場合、CPUはスリープ時にアイドル状態に移行します が、NCOは動作を継続してHFINTOSCはアクティブ 状態を維持します。

このような状況は、スリープ中の消費電流に直接影響 を与えます。

 2012 Microchip Technology Inc.

Preliminary

DS41585A_JP - p.135

PIC10(L)F320/322

20.8 NCOx 制御レジスタ

レジスタ 20-2: NCOxCLK: NCOx入力クロック制御レジスタ レジスタ 20-1: NCOxCON: NCOx制御レジスタ

R/W-0/0 R/W-0/0 R-0/0 R/W-0/0 U-0 U-0 U-0 R/W-0/0

NxEN NxOE NxOUT NxPOL NxPFM

bit 7 bit 0

凡例:

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

u = ビットは不変 x = ビットは未知 -n/n = PORおよびBOR時の値/その他の全てのリセット時の値

「1」 = ビットはセット 「0」 = ビットはクリア

bit 7 NxEN: NCOxイネーブルビット

1 = NCOxモジュールを有効にする

0 = NCOxモジュールを無効にする

bit 6 NxOE: NCOx出力イネーブルビット

1 = NCOx出力ピンを有効にする

0 = NCOx出力ピンを無効にする

bit 5 NxOUT: NCOx出力ビット

1 = NCOx出力がHighである 0 = NCOx出力がLowである

bit 4 NxPOL: NCOx極性ビット

1 = NCOx出力信号をアクティブHighにする 0 = NCOx出力信号をアクティブLowにする

bit 3-1 未実装: 「0」として読み出し

bit 0 NxPFM: NCOxパルス周波数モードビット

1 = NCOxをパルス周波数モードで動作させる

0 = NCOxを固定デューティ サイクル モードで動作させる

R/W-0/0 R/W-0/0 R/W-0/0 U-0 U-0 U-0 R/W-0/0 R/W-0/0

NxPWS<2:0> NxCKS<1:0>

bit 7 bit 0

凡例:

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

u = ビットは不変 x = ビットは未知 -n/n = PORおよびBOR時の値/その他の全てのリセット時の値

「1」 = ビットはセット 「0」 = ビットはクリア

bit 7-5 NxPWS<2:0>: NCOx出力パルス幅選択ビット(1, 2) 111 = NCOxクロック128周期

110 = NCOxクロック64周期 101 = NCOxクロック32周期 100 = NCOxクロック16周期 011 = NCOxクロック8周期 010 = NCOxクロック4周期 001 = NCOxクロック2周期 000 = NCOxクロック1周期

bit 4-2 未実装: 「0」として読み出し

bit 1-0 NxCKS<1:0>: NCOxクロック源選択ビット 11 = NCO1CLK

10 = LC1OUT 01 = FOSC

00 = HFINTOSC (16 MHz)

Note 1: NxPWSが適用されるのはパルス周波数モードによる動作の場合のみです。

2: NCOxパルス幅がNCOxのオーバーフロー周期よりも長い場合、動作は未定義の状態です。

PIC10(L)F320/322

レジスタ 20-3: NCOxACCL: NCOxアキュムレータ レジスタ - 下位バイト

レジスタ 20-4: NCOxACCH: NCOxアキュムレータ レジスタ - 上位バイト

レジスタ 20-5: NCOxACCU: NCOxアキュムレータ レジスタ - 最上位バイト

R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 NCOxACC<7:0>

bit 7 bit 0

凡例:

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

u = ビットは不変 x = ビットは未知 -n/n = PORおよびBOR時の値/その他の全てのリセット

時の値

「1」 = ビットはセット 「0」 = ビットはクリア

bit 7-0 NCOxACC<7:0>: NCOxアキュムレータ、下位バイト

Note 1: NxPWSが適用されるのはパルス周波数モードによる動作の場合のみです。

2: NCOxパルス幅がNCOxのオーバーフロー周期よりも長い場合、動作は未定義の状態です。

R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0

NCOxACC<15:8>

bit 7 bit 0

凡例:

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

u = ビットは不変 x = ビットは未知 -n/n = PORおよびBOR時の値/その他の全てのリセット

時の値

「1」 = ビットはセット 「0」 = ビットはクリア

bit 7-0 NCOxACC<15:8>: NCOxアキュムレータ、上位バイト

U-0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0

— — — — NCOxACC<19:16>

bit 7 bit 0

凡例:

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

u = ビットは不変 x = ビットは未知 -n/n = PORおよびBOR時の値/その他の全てのリセット 時の値

「1」 = ビットはセット 「0」 = ビットはクリア

bit 7-4 未実装: 「0」として読み出し

bit 3-0 NCOxACC<19:16>: NCOxアキュムレータ、最上位バイト

ドキュメント内 PIC10(L)F320/322 Data Sheet (ページ 129-139)