001-13574_MDAC8.pdf

8-Bit 電圧出力多重 DAC データシート MDAC8 V 2.2
001-66516 Rev. **
8-Bit Voltage Output Multiplying DAC
Copyright © 2001-2011 Cypress Semiconductor Corporation. All Rights Reserved.
PSoC® ブロック
リソース
アナログ
CT
デジタル
API メモリ (バイト)
アナログ
SC
フラッシュ
ピン (外部
I/O あたり)
RAM
CY8C29/27/26/25/24/22xxx, CY8C23x33, CY8CLED04/08/16, CY8CLED0xD, CY8CLED0xG, CY8CTST120,
CY8CTMG120, CY8CTMA120, CY8C28x43, CY8C28x52
0
0
2
255
0
1
このユーザ モジュールを使用する機能例として完全に設定されたプロジェクトについては、以下を参照
してください。 www.cypress.com/psocexampleprojects
特性と概要
„
„
„
„
„
„
8-bit 解像度
電圧出力
4 象限乗算
2 の補数、オフセットバイナリ、およぶ符号 / 絶対値表現の入力データフォーマット
アナログバスと外部出力装置用のサンプルアンドホールド回路
最大 125 ksps のアップデートレート
MDAC8 は 8-bit で、入力電圧に比例したデジタルコードを出力する 4 象限多重 DAC です。 MDAC8 は
毎秒最大 250k サンプルのアップデートレートで、デジタルコードを出力電圧に換算します。 アプリケ
ーション∙プログラミング∙インタフェース (API) は、オフセット∙バイナリ、2 の補数、および符号 / 絶対
値表現をサポートします。 オフセット補正により変換エラーを最小化します。
Cypress Semiconductor Corporation
Document Number: 001-66516 Rev. **
•
198 Champion Court
•
San Jose, CA 95134-1709
•
408-943-2600
Revised January 12, 2011
[+] Feedback
8-Bit Voltage Output Multiplying DAC
Figure 1.
MDAC8 ブロック図
機能説明
MDAC8 ユーザーモジュールは、アナログ入力電圧とデジタルコードを乗算します。デジタルコードは、
2 の補数、もしくは -127 ~ +127 の範囲の符号 / 絶対値表現として表示されます。もしくは、入力コー
ドを 0 ~ 254 の範囲の、オフセットバイナリ形式の数値で表記することができます。 入力及び出力電圧
は、システムレベルのパラメータである RefMux とともに設定される、AGND を基準とします。
SetOutputRange API 関数で選択された値によって、入力電圧は 1 倍か 2 倍になります。
MDAC8 ユーザーモジュールは、任意の二つのアナログ PSoC ブロックに対しマッピングします。 これ
らのブロックは、LSB と MSB と呼ばれます。LSB ステージとも呼ばれる LSB ブロックは、“BCap" キ
ャパシタ C4 を通して MSB ステージと接続しています。内部では、この操作は符号 / 絶対値表現で行わ
れいます。絶対値が大きい方から 5 つのビットが、以下の模式図におけるバイナリ加重のコンデンサ配
列の C3 値に設定されます。 絶対値が小さい方から 2 つのビットが、C1 値に設定されます。 キャパシタ
の単位で、C3 は 0 から 31 までの値、C1 は {0, 8, 16, 24} のいずれかの値をとるものとします。各ステ
ージの (ASign ビットの値によっては反転された ) リファレンス電圧は、それぞれマグニチュードキャパ
シタ C1 と C3 の比、およびフィードバックキャパシタ C2 と C5 の比でスケール調整されます。それぞ
れ、32 もしくは 16 ユニットの値をとります ( 入力電圧ゲインは 32 ユニットの場合 1、16 ユニットの
場合 2)。LSB ステージの出力は、さらにカップリングキャパシタ C4 とフィードバックキャパシタ C5
の比でスケール調整されます。SetOutputRange API 関数は、 C2 と C5 の値を両方変更します。
Document Number: 001-66516 Rev. **
Page 2 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
Figure 2.
MDAC8 の模式図
ハードウェアは、各アップデートサイクルでオフセット補正を行います。φ 1 及び φ 2 によって制御され
るスイッチが、φ 1 の間、ユニティゲインフォロアとしてオペアンプを構成します。この構成では、オフ
セット電圧がサミングノードにかかり、ACaps、BCaps、FCaps を充電します。φ2 で再構成されたよう
に、回路はこれらのコンデンサのオフセット電荷を反転し、オフセット電圧を実質的にキャンセルしま
す。
各アップデート周期で、オフセット補正の直接的な効果として、Vout は オペアンプオフセット電圧 (φ 1
の間 ) と目標電圧 (φ 2 の間に安定する ) の間をスルーします。精度を高めるためのこの代償を軽減する
一つの方法は、出力バスに関連するサンプルアンドホールド回路を使用することです。 Vout は、ロード
およびホールドコンデンサ (MDAC8 ブロックダイアグラムの CHold) を、φ2 の後半に充電します。CHold
は、このサイクルが終了するときにオペアンプ出力から切り離されます。 各アナログ出力バスには、十
分高い入力インピーダンスのアナログ出力バッファが付随します。
スケールされた入力を組み合わせた、出力は以下のようになります。
Equation 1
デバイスエディターで、グロバルパラメータの RefMux が (2BandGap)±BandGap に設定された場合、
AGND は 2.6 ボルトです。CF = C2 = C1, C4 = 1 及び CF = 25 と設定します。対応する出力は以下にな
ります。
Equation 2
Document Number: 001-66516 Rev. **
Page 3 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
Equation 3
C1 の値は、絶対値が小さい方から 2 つのビットに 8 を掛けた ( 左に 3 桁シフトした ) スケーリング値に
限られます。 C1 とその分母のスケール係数を打ち消しすことで、次のような結果が得られます。
Equation 4
例
外部ソースによる 1V の入力電圧が与えられた場合、式 3 は以下のようになります。
Equation 5
MDAC への入力コードは、入力コードの MSB の符号をとります。ビット 2 - 7 に含まれている C3 の
値。C1 の値は、入力コードの LSB の 2 ビットによってあらわされます。 よって、値が -105 の場合、出
力電圧は 1.3V になります。
Equation 6
計算された値は理想的な値であり、システムのノイズやチップのオフセットによって異なってきます。
Document Number: 001-66516 Rev. **
Page 4 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
4 象限乗算は、入力電圧と入力コードの両方が、出力電圧の正負を決定することを意味します。 次の3
つの図を見てください。
Figure 3.
入力電圧対時間
Figure 4.
出力電圧対入力コードと時間、 FCap=32
Document Number: 001-66516 Rev. **
Page 5 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
Figure 5.
出力電圧対入力コードと時間、 FCap=16
上記のように、出力信号のクリッピングを防ぐためには、入力電圧を下げる必要があります。
DC 電気的特性と AC 電気的特性
以下の値は、初期の特性データを元に予測される性能を示しています。下の表に別途記されてない場
合、TA = 25oC 及び Vdd = 5V です。 別途記されていない場合、 fclock = 125 kHz、外部 AGND 2.50V、 外
部 VRef 1.23V, REFPWR = HIGH, SCPOWER = ON, PSoC ブロック出力 HIGH です。
Table 1.
5.0V MDAC8 DC 及び AC の電気特性
パラメータ
解像度
標準値
リミット
単位
--
8
ビット
DNL
0.5
--
LSB
INL
0.3
--
LSB
単調な
可能
--
リファレンス ゲイン誤差を含む
3.5
--
%FSR
リファレンス ゲイン誤差を除く 3
0.5
--
%FSR
±2.1
--
mV
条件と注記
線形性
ゲイン誤差
VOS, オフセット電圧
Document Number: 001-66516 Rev. **
Page 6 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
パラメータ
出力ノイズ
標準値
リミット
単位
4.5
--
mV rms
低出力
2 ~ 125
--
kHz
中出力
1 ~ 500
--
kHz
高出力
1 ~ 800
--
kHz
低出力
305
--
µA
中出力
1130
--
µA
高出力
4315
--
µA
条件と注記
0 ~ 300 kHz
fclock, 内部アップデートレート 1
動作電流 2
以下の値は、初期の特性データに基づく予測される性能を示しています。下の表に別途記されてない場
合、TA = 25oC 及び Vdd = 3.3V です。. 別途記されていない場合、fclock = 125 kHz、外部 AGND 1.50V、
外部 VRef 0.8V、REFPWR = HIGH, SCPOWER = ON, PSoC ブロック出力 HIGH です。
Table 2.
3.3V DAC8 DC 及び AC の電気特性
パラメータ
解像度
標準値
リミット
単位
--
8
ビット
DNL
0.5
--
LSB
INL
0.4
--
LSB
単調な
可能
--
リファレンス ゲイン誤差を含む
2.6
--
%FSR
リファレンス ゲイン誤差を除く 3
0.3
--
%FSR
条件と注記
線形性
ゲイン誤差
Document Number: 001-66516 Rev. **
Page 7 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
パラメータ
標準値
リミット
単位
VOS, オフセット電圧
±3.5
--
mV
出力ノイズ
2.5
--
mV rms
低出力
2 ~ 125
--
kHz
中出力
1 ~ 500
--
kHz
高出力
1 ~ 800
--
kHz
低出力
270
--
µA
中出力
1020
--
µA
高出力
3900
--
µA
条件と注記
0 ~ 300 kHz
fclock, 内部アップデートレート 1
動作電流 2
電気特性に関する注記
1. φ1, φ2 の限界値:ブロードバンドノイズの 3dB が増加するため
2. すべてのアナログブロックに共通の、基準ブロックの出力は含まれていません。(PSoC ファミリの
データシートを参照 )。
下の表に別途記されていない場合、 全ての限界値は TA = 25C 及び Vdd = 5V で保証されてします。別途
記されていない場合、 fclock = 125 kHz、外部 AGND 2.50V、外部 VRef 1.23V, REFPWR = HIGH,
SCPOWER = ON, PSoC ブロック出力 HIGH です。
Table 3.
5.0V MDAC8 の DC 及び AC 電気特性
パラメータ
解像度
一般的な 1
限界値の 2
単位
—
8
ビット
DNL
0.10
0.25
LSB
INL
0.15
0.40
LSB
条件および注記
線形性
Document Number: 001-66516 Rev. **
Page 8 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
パラメータ
一般的な 1
単位
限界値の 2
条件および注記
単調な
—
½
Bit (ビッ
ト)
ゲイン誤差
1.0
2.5
%FSR
VOS, オフセット電圧 3
8
43
mV
帯域限界
0.3
1
mV rms
0 ~ 10 kHz
広帯域
7
10
mV rms
0 ~ 300 kHz
fclock, 内部アップデートレート
—
32 ~ 333
kHz
Vin ( 帯域幅 )
40
—
kHz
低出力
250
—
μA
中出力
560
—
μA
高出力
1560
2000
μA
出力ノイズ
4
動作電流 5
Document Number: 001-66516 Rev. **
Page 9 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
下の表に別途記されていない場合、全ての限界値は TA = 25oC 及び Vdd = 3.3V で保証されています。 別
途記されていない場合、fclock = 125 kHz、 外部 AGND 1.50V、外部 VRef 0.80V、REFPWR = HIGH,
SCPOWER = ON, PSoC ブロック出力 HIGH です。
Table 4.
3.3V MDAC8 DC 及び AC 電気特性
パラメータ
解像度
一般的 1
単位
限界 2
条件および注記
—
8
ビット
DNL
0.10
0.20
LSB
INL
0.20
0.45
LSB
単調な
—
½
Bit (ビッ
ト)
ゲイン誤差
1.0
2.5
%FSR
VOS, オフセット電圧 3
7
31
mV
帯域限界
0.3
1
mV rms
0 ~ 10 kHz
広帯域
7
10
mV rms
0 ~ 300 kHz
fclock, 内部アップデートレート
—
32 ~ 333
kHz
Vin ( 帯域幅 )
40
—
kHz
低出力
200
—
μA
中出力
500
—
μA
高出力
1280
1800
μA
線形性
出力ノイズ
4
動作電流 5
電気特性に関する注意
1. 一般値は、平均値 +1σ です。
2. 限界値は、試験または統計分析により保証されています。
Document Number: 001-66516 Rev. **
Page 10 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
3. 2 の補数の 0 は、外部 AGND に対しオフセットしています。また、アナログ出力バッファのオフセ
ットエラーを含みません。
4. φ1, φ2 の限界:ブロードバンドノイズにおける 3dB の増加のため
5. すべてのアナログブロックに共通の、基準ブロックの出力は含まれていません。(PSoC ファミリの
データシートを参照 )。
タイミング
アンダーラップ位相のクロック φ 1 及び φ 2 の、タイミング信号と適切なデューティ比を生成するため、
アナログコラムクロック回路は二つの divide-by-2 回路を使用します。このため、MDAC8 に用いられる
クロックソースは、求められる最大アップデートレートの少なくとも 4 倍速い速度で駆動する必要があ
ります。 出力のグリッチを無くすため、内部でサンプルアンドホールド信号が用いられるうえ、
"Ready" 信号が生成されます。"Ready" は、コントロールレジスタがセットアップ時間の要求条件に違
反せずに 0 を書きこむことができることを意味します。下のアップデート∙タイミングダイアグラムを参
照してください。
同じアップデートサイクルで、二つの書き込みに対するセットアップ時間の要求条件が満たされず、両
方のレジスタへの書き込みに失敗した場合、そのサイクルでは不適切な出力値が生成されます。例え
ば、φ 2 のオンセットの前に二つの書き込みが行われた場合、出力は前回の出力電圧と望ましい出力電圧
の間の値になります。 φ2 が高い状態で 1 つまたは 2 つの書き込みが行われた場合、出力は前回の出力電
圧と望ましい出力電圧の間にない値を取ることがあります。 割り込みのような非決定性のイベントによ
り引き起こされる可能性のある、このような逸脱を最小化するために、最初に MSB レジスタに書き込
んでください。
多くのアプリケーションでは、上記のような瞬間的な ( 一つのアップデートサイクルに限る ) 逸脱は問
題ありません。 それ以外のアプリケーションでは、より厳しい要求条件が求められます。一つの例は、
低ひずみ波形発生器です。 このような逸脱は、例えばレジスタをアップデートするタイミングの調節方
法の一つであるハードウェア同期化によって防ぐことができます。ハードウェア同期化は、API では
"Stall" で終わるエントリーポイントでサポートされます。
ハードウェーア同期化は、出力値のレジスタへの最速のアクセスを保証します。ASY_CR レジスタに書
き込むことで、ハードウェーア同期化がトリガされます。ACLKi が有効な場合、IO スペースへの次の書
き込みがすぐ処理されます。無効な場合は、ACLKi が確認されるまで、IO 書き込みの最中に CPU クロ
ックがストールします。ストールにより失われる CPU サイクル最小化させる一つの方法は、求められ
るアップデータレートを大きく上回ってもいいので、アップデートクロックを高い周波数 ( ただし fMAX
以下 ) で駆動させることです。 高速アップデートされるクロックによる強制同期化は、レベル "A" のセ
ットアップ時間の損失、すなわち CPU クロックにおける最悪のケースのストールを引き起こします。
Document Number: 001-66516 Rev. **
Page 11 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
Figure 6.
アップデートタイミング
Figure 7.
高速アップデートされるクロックによる強制同期化
Document Number: 001-66516 Rev. **
Page 12 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
CPU ストールの間、すべてのアナログ及びデジタル PSoC ブロックは正常に機能します。 DAC CR0 レ
ジスタを書き込むという、最初の MOV インストラクションは単に延期され、この間は全ての割り込み
はペンディングになる、もしくはペンディング状態のまま保持されます。 ストールから解放され、スト
ールされた書き込みが終了すると、有効ならばペンディングの状態の割り込み処理されます。 割り込み
レイテンシの合計値の最大値と クロック φ 1 と φ 2 の周期によって、問題が起きるか、起きないかが決
まります。
配置
MDAC8 ユーザ モジュールは、 LSB と MSB という 2 つの PSoC ブロックにマッピングされます。LSB
ブロックの出力は MSB ブロックの入力になります。そのため、これらのブロックは隣り合わせに配置
されます。CY8C26/25xxx デバイスファミリでは、MSB ブロックは “ タイプ A" スイッチ キャパシタの
PSoC ブロックにのみマッピングされます。CY8C27/24/22xxx デバイスファミリでは、MSB ブロックは
“ タイプ C" スイッチ キャパシタの PSoC ブロックにのみマッピングされます。これにより線形誤差が軽
減されます。その理由は、これらのタイプのブロックが、LSB ブロックと MSB ブロックを接続する
“BCap" キャパシタ (上図の C4) の、オフセット誤差を打ち消す自動ゼロ化プロセスを可能にするから
です。
配置場所の選定でもう一つ重要なこととして、MSB クロックと LSB クロックを同じソースから生成さ
れなければなりません。両クロックがアナログアレイの同じコラムに配置されていれば、これは自動的
に満たされます。別々のコラムに配置されている場合は、両コラムのマルチプレクサを同じソースに設
定しなければなりません。 いくつかの MDAC8 配置では、MSB 及び LSB ブロックの両方が同一ソース
を選択できません。
Note
MSB 及び LSB ブロックについて、同じ入力電圧ソースを選択してください。
パラメータとリソース
作動するデジタル - アナログコンバーターを生成するためには、デバイスエディタのユーザー選択モジ
ュールで、MDAC8 ユーザーモジュールのインスタンスを生成してください。次に、MSB 及び LSB ブロ
ックを、アナログアレイ上のスイッチ コンデンサの PSoC ブロックにマッピングしてください。さら
に、φ 1 及び φ 2 を駆動するのに適切なアップデートクロックリソースの構成、データフォーマットの指
定、GAIN 範囲の選択、 入力電圧ソースの選択及び PSoC ブロックと関連した出力バスの割り込みなど
を行ってください。
アップデートクロックリソースの構成には、3 ステップあります。最初に、アナログコラムクロックジ
ェネレータのクロックソースを構成します。コラムクロックジェネレータは、入力を 4 つに分けて φ 1
と φ 2 を生成します。このため、ソースは求められるアナログ出力アップデート率の 4 倍早く駆動する
必要があります。タイミングの節に、アップデートクロック周波数の選択に関連している項目が記載さ
れています。 クロックソースの選択肢には、V1 及び V2 ディバイダー、およびデジタル PSoC ブロック
全てが含まれます。 外部ソースを使用する、もしくは V1 及び V2 を他の目的に使用しなければならない
場合は、レート生成にタイマー、 カウンタ及びパルス幅変調 (PWM) ユーザーモジュールを使用するこ
とができます。φ 1 と φ 2 のアクティブ周期のデッドバンド時間は、24 MHz システムクロックと同期し
て発生します。 従って、システムクロックと同期していない外部クロックソースの使用は、予測できな
い結果を起こす可能性があります。
次に、デバイスエディタで CLKmux を設定し、クロックソースをコラムクロックジェネレータに接続し
てください。 デジタル PSoC ブロック出力は、 ACLK0 あるいは ACLK1 マルチプレクサを通して接続し
なければなりません。 追加の情報については PSoC Designer を参照してください。統合開発環境ユーザ
ーガイド及び PSoC データシート。
最後に、 Normal( デフォルト値 ) あるいは Swapped を選択して、 MDAC8 ユーザーモジュールのパラメ
ータである ClockPhase の値を選択してください。 これは MDAC8 出力を、他の PSoC ブロック入力に
Document Number: 001-66516 Rev. **
Page 13 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
同期化させることができます。スイッチコンデンサのアナログ PSoC ブロックは、φ 1 と φ 2 を通して信
号を取得し伝送します。MSB ブロックの出力は φ 2 の間のみが有効なので、 φ 1 の間に入力サンプリング
する他のユーザーモジュールに接続した場合に、問題が発生します。ClockPhase パラメータを
Swapped に設定する場合、MSB 及び LSB ブロック内部の φ 1 と φ 2 の役割が交換されますし、それによ
って出力はダウンストリームユーザーモジュールが入力信号をサンプリングする時に有効になります。(
なお、Normal モードでは、入力電圧は φ 1 の間にサンプリングされます。)
Note
MSB 及び LSB には、同じ入力電圧ソースを選択してください。
InputMSB
MSB ブロック電圧ソースを入力してください。 入力電圧ソースとして REFHI を選択する場合、
MDAC8 は DAC8 と同じように作動します。 他の入力電圧を選択する場合、選択されたブロック内
で適切なユーザーモジュールを構成する必要があります。いくつかの MDAC8 配置では、MSB 及
び LSB ブロックの両方で同一ソースを選択することができません。
Note
MSB 及び LSB について、同じ入力電圧ソースを選択してください。
InputLSB
LSB ブロック電圧ソースを入力してください。 入力電圧ソースとして REFHI を選択する場合、
MDAC8 は DAC8 と同じように作動します。 他の入力電圧を選択する場合、選択されたブロック内
で適切なユーザーモジュールを構成する必要があります。いくつかの MDAC8 配置では、MSB 及
び LSB ブロックの両方で同一ソースを選択することができません。
Note
MSB 及び LSB について、同じ入力電圧ソースを選択してください。
アナログバス
MDAC8 ブロックの出力は、ローカルに相互接続されたアナログ PSoC ブロック アレイのネットワ
ークやアナログ出力バスを通すことができます。MDAC8 ユーザ モジュールの アナログバス パラ
メータをデフォルト値の Disable ( 無効 ) に設定すると、ローカル ネットワークへの接続数が限定
されます。Enable( 有効 ) を選択する場合、ピンを駆動する、もしくはローカルネットワークだけ
では不可能な、いくつかの追加入力マルティプレクサへ接続できる関連アナログ出力バッファに接
続できる経路の数が増えます。
各スイッチコンデンサ PSoC ブロックは、 φ 2 のバス有効信号をサンプリングする回路を含みま
す。これにより、オートゼロ作動中に発生する電圧スウィングが除去できます。
Note
アナログバスを Enabled に設定し、クロック位相を Swapped に設定すると、サンプルアンドホ
ルド関数が無効になります。 この場合、バス出力はローカル PSoC ブロック出力と同じになり、
φ 1 の間の AGND(+ オフセット電圧 ) と φ 2 の間の求められる値を交互に出力します。
クロック位相
クロック位相の選択は、あるアナログ PSoC ブロックの出力を別のアナログ PSoC ブロックの入力
と同期させるために使用します。 スイッチド キャパシタのアナログ PSoC ブロックは、2 相クロッ
ク (φ 1、φ2)を使用して信号を取得し伝送します。クロック位相 パラメータを Swapped に設定
する場合、MSB 及び LSB ブロック内部の φ 1 と φ 2 の役割が交換されるため、ダウンストリームユ
ーザーモジュールが入力信号をサンプリングする時に出力が有効になります。( なお、Normal モー
ドで、 入力電圧は φ 1 の間にサンプリングされます。)
GainRange
提供された入力コード、入力電圧及び AGND はゲイン範囲を低いところから高いところまで変更
する場合、出力電圧が適切に増加します。 なお、高いゲイン範囲における入力電圧範囲は、低いゲ
イン範囲での入力電圧範囲の約半分になります。
Document Number: 001-66516 Rev. **
Page 14 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
DataFormat (データフォーマット)
MDAC8 ユーザーモジュールの API は、オフセットバイナリ、2 の補数、そしてと符号 / 絶対値の 3
種類の異なるデータ形式が使えます。このユーザーモジュールの API セクションの WriteBlind エン
トリーポイントは、これらの慣行や関連する値の範囲が説明されています。
アプリケーション プログラミング インタフェース
アプリケーション プログラミング インタフェース (API) ルーチンは、設計者がより高度なレベルでモジ
ュールを処理できるように、ユーザーモジュールの一部として提供されます。このセクションでは、
"include" ファイルによって提供される、各機能に対するインタフェースおよび関連する定数を示しま
す。
Note
ここでは、全てのユーザーモジュール API と同じように、API 機能を呼び出すことによって、A
と X レジスタの値が変更されることがあります。 A と X の値が呼び出し後に必要であれば、呼び
出し元関数にて A と X の値を保存してください。PSoc Designer のバージョン 1.0 以降、効率性
の観点から、この 「registers are volatile (レジスタの揮発性)」ポリシーが採用されています。
C コンパイラは自動的にこの条件を処理します。 アセンブリ言語のプログラマは、コードがこの
ポリシーを守っていることを確認しなければなりません。一部のユーザ ーモジュール API 機能
では A と X は変更されないこともありますが、将来も変更されないという保証はありません。
エントリーポイントは、MDAC8 ユーザーモジュールを初期化し、数値を更新し、ユーザーモジュール
を無効にするために提供されています。
MDAC8_Start
説明:
このユーザー モジュールにおける必要な全ての初期化を行い、スイッチ キャパシタ PSoC ブロッ
クの出力レベルを設定します。
C プロトタイプ:
void MDAC8_Start(BYTE bPowerSetting)
アセンブラ:
mov
A, bPowerSetting
lcall MDAC8_Start
パラメータ:
bPowerSetting: 出力レベルを指定する 1 バイト。再設定や構成後、MSB や LSB ブロックに指定さ
れた PSoC ブロックの電源が切られます。 C 及びアセンブリで提供された、シンボリックネームと
関連する値が、次の表に記載されています。
Document Number: 001-66516 Rev. **
Page 15 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
シンボリックネーム
値
MDAC8_OFF
0
MDAC8_LOWPOWER
1
MDAC8_MEDPOWER
2
MDAC8_FULLPOWER
3
戻り値:
なし
副作用:
MDAC 出力デバイスを駆動します。 デフォルトの初期値は AGND です。 電源を入れた時に他の出
力値が必要な場合に、 " スタート " を起動する前に、いずれかの書き込みルーチンを呼び出しま
す。A 及び X レジスタは、この機能によって変更される可能性があります。
MDAC8_SetPower
説明:
DAC スイッチコンデンサ ブロックの PSoC ブロックの電源レベルを設定します。 ブロックを無効
化したり有効化したりするのに使用します。
C プロトタイプ:
void MDAC8_SetPower(BYTE bPowerSetting)
アセンブラ:
mov
A, bPowerSetting
lcall MDAC8_SetPower
パラメータ:
bPowerSetting: スタート エントリーポイントで使用する、PowerSetting パラメータと同じです。
戻り値:
なし
副作用:
MDAC 出力デバイスを駆動します。 デフォルトの初期値は AGND です。 電源を入れた時に他の出
力値が必要な場合に、 " スタート " を起動する前に、いずれかの書き込みルーチンを呼び出しま
す。A 及び X レジスタが、この機能によって変更される可能性があります。
Document Number: 001-66516 Rev. **
Page 16 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
MDAC8_SetOutputRange
説明:
FCap を 32( 低範囲 : ゲイン =1) あるいは 16( 高範囲 : ゲイン =2) に設定してコンデンサ PSoC ブ
ロックに変換された2つ MDAC で1つを選択します。
C プロトタイプ:
void MDAC8_SetOutputRange(BYTE bRangeSetting)
アセンブラ:
mov
A, bRangeSetting
lcall MDAC8_SetOutputRange
パラメータ:
RangeSetting: 範囲を設定する 1 バイト。
シンボリック名
値
MDAC8_LOWRANGE
0
MDAC8_HIGHRANGE
1
戻り値:
なし
副作用:
A 及び X レジスタが、この機能によって変更される可能性があります。
MDAC8_SetPhase
説明:
内部 φ1 及び φ2 クロックを、スワップあるいは通常 ( デフォルト ) のいずれかに設定します。
C プロトタイプ:
void MDAC8_SetPhase(BYTE bPhaseSetting)
アセンブラ:
mov
A, bPhaseSetting
lcall MDAC8_SetPhase
パラメータ:
bPhaseSetting: 通常と、スワップ位相のいずれかを設定する、1 バイト。
Document Number: 001-66516 Rev. **
Page 17 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
シンボリック名
値
MDAC8_NORMALPHASE
0
MDAC8_SWAPPEDPHASE
1
戻り値:
なし
副作用:
A 及び X レジスタが、この機能によって変更される可能性があります。
MDAC8_WriteBlind
説明:
出力電圧を、指示された値に直ちに更新します。
C プロトタイプ:
// For OffsetBinary: (BYTE = unsigned char)
void MDAC8_WriteBlind(BYTE bOutputValue)
// For TwosComplement: (CHAR = signed char)
void MDAC8_WriteBlind(CHAR cOutputValue)
// For TwoByteSignAndMagnitude: (BYTE of bit flags)
void MDAC8_WriteBlind2B(BYTE bLSB, BYTE bMSB)
アセンブラ:
; for OffsetBinary
mov
A, bOutputValue
lcall MDAC8_WriteBlind
; for TwosComplement
mov
A, cOutputValue
lcall MDAC8_WriteBlind
; for TwoByteSignAndMagnitude format:
mov
A, bLSB
mov
X, bMSB
lcall MDAC8_WriteBlind2B
パラメータ:
b/cOutputValue: 出力電圧を指定する 1 バイト。次の表に示すように、許可される値の範囲は、選
択された DataFormat の値と同じです。
Document Number: 001-66516 Rev. **
Page 18 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
データフォーマット
最小値
最大値
オフセットバイナリ
0
254
2 の補数
-127
127
2 バイト符号 / 絶対値
3F18h
1F38h
オフセットバイナリ値は、最小の出力電圧を意味する 0 から最大値 254 までの正の数です。2 の補
数は、M8C プロセッサの、ネイティブな符号付きの形式です。 2 バイト符号 / 絶対値形式では、高
いバイトは 00smmmmm2、低いバイトは 00tmm0002 の形式です。's’ は符号、’t’ は反転させた符
号、’m’ は絶対値ビットです。たとえば、正の数の場合、s=0 及び t=1 です。
戻り値:
なし
副作用:
このユーザーモジュールのタイミングの節で説明している理由により、出力デバイスに問題が発生
する可能性があります。A 及び X レジスタが、この機能によって変更される可能性があります。
MDAC8_WriteStall
説明:
Phi1 が起動されるまでマイクロプロセッサーをストールし、その後出力電圧を指定された値にア
ップデートします。 なお、API は、割り込みが無効、もしくは最大の割り込みレイテンシが ACLKi
以下ということを想定しています。(図 「高速アップデートクロックを用いた強制同期化」を参照
するとのこと)。
C プロトタイプ:
// For OffsetBinary: (BYTE = unsigned char)
void MDAC8_WriteStall(BYTE bOutputValue)
// For TwosComplement: (CHAR = signed char)
void MDAC8_WriteStall(CHAR cOutputValue)
// For TwoByteSignAndMagnitude: (BYTE of bit flags)
void MDAC8_WriteStall2B(BYTE bLSB, BYTE bMSB)
アセンブラ:
; for OffsetBinary
mov
A, bOutputValue
lcall MDAC8_WriteStall
; for TwosComplement
mov
A, cOutputValue
lcall MDAC8_WriteStall
; for TwoByteSignAndMagnitude format:
mov
A, bLSB
mov
X, bMSB
lcall MDAC8_WriteStall2B
Document Number: 001-66516 Rev. **
Page 19 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
パラメータ:
b/cOutputValue: 形式と値の範囲は WriteBlind エントリーポイントのパラメータと同一。 bMSB 及
び bLSB: 形式と値の範囲は WriteBlind エントリーポイントのパラメータと同一。
戻り値:
なし
副作用:
ACLKi が無効の場合 (‘i’ は、アナログ PSoC ブロックがマップされるコラム )、φ2 が無効になるま
で、すなわち、おそらくアップデートサイクルの 3/4 の間 (+ 2 CPU クロック )、 マイクロプロセッ
サーの CPU クロックは無効になります。ストール中は、割り込みは認識されません。A 及び X レ
ジスタは、この機能によって変更される可能性があります。
MDAC8_Stop
説明:
ユーザーモジュールの電源を遮断します。
C プロトタイプ:
void MDAC8_Stop(void)
アセンブラ:
lcall MDAC8_Stop
パラメータ:
なし
戻り値:
なし
副作用:
出力が駆動されません。A 及び X レジスタは、この機能によって変更される可能性があります。
Document Number: 001-66516 Rev. **
Page 20 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
ファームウェア ソースコードの例
サンプルコードは、周期的で、ゆっくり減少するのこぎり波を発生させます。
;;----------------------------------------------------------------;; Sample Code for the MDAC8
;; Generate a falling sawtooth wave
;;----------------------------------------------------------------export _main
include "m8c.inc"
include "MDAC8.inc"
area bss (RAM)
bVal: blk 1
bMAXVAL: equ 255
area text (ROM, REL)
_main:
; RAM for loop iteration variable
; Top of ramp plus 1
; (contains infinite loop; never returns)
mov A, MDAC8_LOWPOWER ; specify DAC's amplify power
call MDAC8_Start
; and turn it on.
Init:
mov
RampDown:
mov
dec
call
dec
jnz
jmp
[bVal], bMAXVAL
; Start ramp from the top
A, [bVal]
A
MDAC8_WriteStall
[bVal]
RampDown
Init
;
;
;
;
;
Bottom of ramp?
No, not yet.
Yes, re-initialize ramp and loop
forever
//----------------------------------------------------------------// C main line
//----------------------------------------------------------------#include <m8c.h>
#include "PSoCAPI.h"
// part specific constants and macros
// PSoC API definitions for all User Modules
BYTE cVal;
#define cMax 255
void main(void)
{
// Insert your main routine code here.
MDAC8_Start(MDAC8_LOWPOWER);
while(1) //infinite loop
{
cVal = cMax;
while(cVal > 0)
{
MDAC8_WriteStall(cVal--);
}
}
Document Number: 001-66516 Rev. **
Page 21 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
}
設定レジスタ
API は、MDAC8 ユーザーモジュールの完全なインターフェースを提供します。設定レジスタに直接書
き込むことで、出力をアップデートすることができます。いずれにせよ、出力デバイスの問題を防ぐた
め、タイミングについての配慮が必要です。次のレジスタが、MDAC8 変換されたコンデンサ LSB 及び
MSB ブロックで使用されます。
Table 5.
ブロック LSB: レジスタ CR0
Bit (ビッ
ト)
値
7
1
6
0
5
符号
4
3
絶対値
2
0
1
0
0
0
符号は、正の値に 「1」(AGND ~ RefHi)、負の値に 「0」(RefLow ~ AGND)を使用します。デフォ
ルトは 「1」です。 これは MSB ブロックで使用されている定義の逆です。API の書き込み関数を使用し
て、符号を変更します。絶対値のデフォルトは 「0」です。API の書き込み関数を使用して、値を変更
します。
Table 6.
ブロック LSB: レジスタ CR1
スイッチド キャパシタ タイプ A
Bit (ビッ
ト)
値
7
0
6
1
5
4
3
2
1
0
0
0
0
0
0
0
スイッチド キャパシタ タイプ B
Bit (ビッ
ト)
7
6
5
4
3
2
1
0
値
1
0
0
0
0
0
0
0
Table 7.
Bit (ビッ
ト)
値
ブロック LSB: レジスタ CR2
7
6
アナログバ 0
ス
5
1
4
0
3
0
2
0
1
0
0
0
アナログバスが無効になります。
Document Number: 001-66516 Rev. **
Page 22 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
Table 8.
ブロック LSB: レジスタ CR3
スイッチド キャパシタ タイプ A
Bit (ビッ
ト)
値
7
0
5
6
0
4
3
2
1
0
1
1
0
0
Power ( 出力 )
スイッチド キャパシタ タイプ B
Bit (ビッ
ト)
7
6
5
4
3
2
1
0
値
0
0
1
1
1
0
Power ( 出力 )
Power ( 出力 ) デフォルトは Off です。 この値を設定するには、API の 「Start call」を使ってください。
Table 9.
ブロック MSB: レジスタ CR0
Bit (ビッ
ト)
値
7
1
6
0
5
符号
4
3
2
1
0
絶対値
符号は API 書き込みルーチンによって設定されます。 デフォルトは ’0’ です。. 絶対値は、API で書き込
み関数のいずれかを使用することによって変更できます。デフォルトは ’0’ です。.
Table 10.
ブロック MSB: レジスタ CR1
Bit (ビッ
ト)
値
Table 11.
Bit (ビッ
ト)
値
7
0
6
1
5
0
4
0
3
0
2
0
1
0
0
1
ブロック MSB: レジスタ CR2
7
6
アナログバ 0
ス
5
1
4
0
3
0
2
0
1
0
0
0
アナログバスは、デバイス エディターの構成時間によって有効化または無効化されます。
Document Number: 001-66516 Rev. **
Page 23 of 24
[+] Feedback
8-Bit Voltage Output Multiplying DAC
Table 12.
ブロック MSB: レジスタ CR3
Bit (ビッ
ト)
値
7
0
6
0
5
1
4
1
3
BMux
2
1
0
Power ( 出力 )
BMux を構成し、LSB PSoC ブロックから接続を選択します。Power ( 出力 ) 0=OFF( デフォルト )、1=
低、2= 中、3= 全力です。 この値を設定するには、API の 「Start」コールを使ってください。
Document Number: 001-66516 Rev. **
Revised January 12, 2011
Page 24 of 24
Copyright © 2001-2011 Cypress Semiconductor Corporation. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility
for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended
to be used for medical, life support, life saving, critical control or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its
products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress products
in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
PSoC Designer ™ and Programmable System-on-Chip ™ are trademarks and PSoC® is a registered trademark of Cypress Semiconductor Corp. All other trademarks or registered trademarks
referenced herein are property of the respective corporations.
Any Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and foreign),
United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works
of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with
a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code except as specified above is
prohibited without the express written permission of Cypress.
Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described herein. Cypress does not
assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems
where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress' product in a life-support systems application implies that the manufacturer
assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.
[+] Feedback