数値制御発振器

数値制御発振器 (Numerically controlled oscillator, NCO) は波形（通常は正弦波）の同期（すなわちクロックされた）離散時間離散値表現を生成するデジタル信号発生器。ダイレクト・デジタル・シンセサイザ(DDS)を作る際に出力でデジタル-アナログ変換回路(DAC)と組み合わせて使われることが多い。 他のタイプの発振器に比べ、機敏性、精度、安定性、信頼性の点で利点を持つ。3G無線およびソフトウェアラジオシステムで使用されるデジタルアップダウン変換器、デジタルPLL、レーダーシステム、光・音響伝送ドライバ、マルチレベルFSK/PSK変調器/復調器など多くの通信システムに使われている。 NCOは一般的に2つの部分からなる。 位相アキュムレータ(PA)。各クロックサンプルで周波数制御値を出力で保持している値に加算する。 位相振幅変換器(PAC)。フェーズアキュムレータの出力語（位相語）を通常、波形ルックアップテーブルとして使い、対応する振幅サンプルを提供する。ルックアップテーブルとともに補間を用い、精度を向上させ位相誤差ノイズを低減することがある。他の方法にはべき級数のような数学的アルゴリズムを含む位相振幅変換もあり、特にソフトウェアの数値制御発振器で使うことができる。 クロックが入ると位相アキュムレータ(PA)はモジュロ-2N のこぎり波を生成し、次にこれが位相振幅変換器によりサンプリングされた正弦波に変換される。ここでのNは位相アキュムレータで運ばれるビット数である。NはNCO周波数分解能を設定し、 普通はPACルックアップテーブルのメモリ空間を規定するビット数よりもずっと大きい。PACの容量が 2Mの場合、図1に示すようにPAの出力語をMビットにつめる必要がある。ただし切り捨てられたビットは補間に使うことができる。位相出力語の切り捨ては周波数精度に影響はなく、スプリアス産出の主な原因である時変周期的位相誤差を生成する。他のスプリアス生成機構はPAC出力（振幅）語の有限語長効果がある。 クロック周波数に対する周波数精度は位相を計算するために使われる算術の精度によってのみ制限される。NCOは位相および周波数に対し機敏であり、適切なノードを合計することで位相変調または周波数変調出力を生成するように、もしくは図に示すように直交出力を出すように簡単に修正することができる。 2進法位相アキュムレータは図1に示すようにNビット2進加算器とレジスタにより構成されている。各クロックサイクルは所与の出力周波数に対して一定である周波数制御語(FCW)で合計されたレジスタから得られた前の出力から成る新たなNビットを出力する。結果として得られる出力波形はFCWの整数値であるステップ幅 Δ F {\displaystyle \Delta F} の階段波形である。いくつかの構成では位相出力はレジスタの出力からとられるが、このレジスタは1クロックサイクルのレイテンシを導入するが加算器をより高いクロックレートで動作させることができる。 加算器はそのオペランドの絶対値の合計がその容量(2N−1)を超えるとオーバーフローするように設計されている。オーバーフローのビットは破棄され、出力語幅は常に入力語幅に常に等しくなる。残差と呼ばれる剰余  ϕ n {\displaystyle \phi _{n}} はレジスタに格納され、サイクルが  ϕ n {\displaystyle \phi _{n}}  から始まる時間から繰り返される（図2参照）。位相アキュムレータは有限状態マシンであるため、最終的にいくつかのサンプルの残差Kは初期値 ϕ 0 {\displaystyle \phi _{0}} に戻らなくてはならない。区間Kはグランド繰り返し数(GRR)と呼ばれ以下の式で与えられる。 GRR = 2 N GCD ( Δ F , 2 N ) {\displaystyle {\mbox{GRR}}={\frac {2^{N}}{{\mbox{GCD}}(\Delta F,2^{N})}}} GCDは最小公約数を求める関数である。GRRは与えられた Δ F {\displaystyle \Delta F}  の真の周期性を表し、高分解能によりNCOが非常に長くなる可能性がある。通常、われわれは平均オーバーフロー数により決まる動作周波数に興味があり、それは F o u t = Δ F 2 N F c l o c k {\displaystyle F_{out}={\frac {\Delta F}{2^{N}}}F_{clock}}      (1) と表される。可能な限り小さい増分変化として定義される周波数分解能は F r e s = F c l o c k 2 N {\displaystyle F_{res}={\frac {F_{clock}}{2^{N}}}}      (2) で与えられる。式 (1) は位相アキュムレータが分割比  Δ F / 2 N {\displaystyle \Delta F/2^{N}} のプログラム可能な非整数周波数分割器とみなせることを示している。 位相振幅変換機はPAから受け取った打ち切り位相出力語からサンプル領域波形を生成する。PACは典型的には正弦波となる所望の出力波形の2M 個の連続サンプルを含む単純な読み出し専用メモリである場合がある。しかし、しばしば必要なメモリの量を減らすために様々な手法が採用されている。これには様々な三角関数展開、三角法近似、正弦波により示される直交対象性を利用する方法などがある。また、PACは任意波形発生器 を作るために必要に応じて満たすことができるランダムアクセスメモリから構成することができる。 スプリアス産出は、信号処理チェーンでの非線形数値効果による出力波形生成における高調波歪みまたは非高調波歪みの結果である。ここでは数値エラーのみを扱う。デジタルアナログ変換器で生成される他の歪みメカニズムについてはダイレクト・デジタル・シンセサイザの記事の該当節を参照せよ。 NCO (N)の位相アキュムレータビットの数は通常16と64の間である。もしPA出力語がPACルックアップテーブルを直接索引付けするのに使われた場合、ROMの記憶容量は必然的に高くなる。このようにPA出力語は合理的なメモリ空間にまたがるように切り捨てられなければならない。位相語の切り捨てにより出力正弦波の位相変調が起こり、切り捨てられたビット数に比例する非調波歪みが入る。この歪みにより生成されるスプリアス産出数は n W = 2 W GCD ( Δ F , 2 W ) − 1 {\displaystyle n_{W}={\frac {2^{W}}{{\mbox{GCD}}(\Delta F,2^{W})}}-1}            (3) で表される。ここでWは切り捨てられたビット数 スプリアスフリーのダイナミックレンジを計算する際には、われわれはキャリア出力レベルに対して最大の振幅を有するスプリアス産出に興味があり、これは ζ m a x = 2 − M π GCD ( Δ F , 2 W ) sin ⁡ ( π ⋅ 2 − P GCD ( Δ F , 2 W ) ) {\displaystyle \zeta _{max}=2^{-M}{\frac {\pi {\mbox{GCD}}(\Delta F,2^{W})}{\sin \left(\pi \cdot 2^{-P}{\mbox{GCD}}(\Delta F,2^{W})\right)}}} と表される。PはDACのワード幅。W >4では ζ m a x ≈ − 6.02 ⋅ P dBc . {\displaystyle \zeta _{max}\approx -6.02\cdot P\;{\mbox{dBc}}.} 他の関連した擬似生成方法には上で概説したGRRによる僅かな変調がある。これらのスプリアスの振幅は大きいNに対しては低く、それらの周波数は一般的には検出するには低すぎるが、いくつかのアプリケーションでは問題を起こすこともある。 スプリアス産出の他の原因はPACルックアップテーブルに含まれるサンプリングされた波形の振幅量子化である。DACビット数がPのとき、AMスプリアスレベルはだいたい-6.02 P − 1.76 dBcと等しくなる。 位相切り捨てスプリアスは切り捨て前に白色ガウス雑音を導入することで実質的に軽減することができる。いわゆるディザノイズはPA出力語の下位 W+1 ビットに合計され、切り捨て操作を線形化する。DACノイズフロアがシステム性能を支配する傾向があるため、しばしば不利益なしに改善を達成することができる。この方法で振幅切り捨てスプリアスを軽減することはできない。PAC ROMに保持されている静値にノイズを入れても切り捨て誤差項の周期性は取り除くことができず、よって望む効果を達成することができない。 ダイレクト・デジタル・シンセサイザ (DDS) デジタル制御発振器 (DCO) デジタル-アナログ変換回路 (DAC)