GreenPAKで正弦波発振回路を作って動かす

Pocket

1. はじめに

GreenPAK Designerの基本的な機能については、前回のブログで紹介しました。
今回は、アナログシミュレーションを行い、拡張コネクタに外付け部品を接続して実際に動作を検証することにチャレンジします。
GreenPAKには、超小型パッケージにデジタル機能、アナログ機能を混載した特徴的なデバイスがあります。
アナログ回路をインプリメントするのに最適なデバイスをGreenPAKファミリの中で探してみたところ、SLG47004VというAnalogPAKの製品を見つけました。

SLG47004Vは、2個の汎用オペアンプと内部用オペアンプ、アナログコンパレータ、デジタル可変抵抗、アナログスイッチなどのアナログ機能を1チップに集積されてます。
マルチタイムプログラマブルのため、回路書き換えも可能で、他のGreenPAK ファミリと同様に、GreenPAK Designerソフトウェアを使って、設計を行えます。



今回は、 GreenPAK Designerソフトウェアの機能として、アナログシミュレーションと、外部コネクタを使ったエミュレーションによる動作確認をやってみます。
このデバイスにアナログ回路をインプリメントし、アナログシミュレーションで動作を確認します。
それから先行開発ボードの外部コネクタに、外付け部品を実装し、出力波形を確認します。

準備するもの
・PC(Windows 10 pro 64bit)
・開発キット SLG4DVKINTRO
・試作評価用ボード SLG47004V-DIP
・ユニバーサルボード(20ピンコネクタ)外付けパーツ実装用
・オシロスコープ(実際の波形を見るために必要)

SLG47004Vは、超小型パッケージ(24pin STQFN)デバイスですが、他のGreenPAKデバイスと同様に、DIP20ピンに変換したプロトタイプ用のボードが、市販されており、通販サイト等で入手可能です。DIP20ピンの部分は、他のデバイスと共用できるようになっているので、先行開発ボードで設計や書き込み、エミュレーションが行えます。
SLG47004V-DIP

残念ながら SLG47004V-DIPは、先行開発ボードキット SLG4DVKINTROには、同梱されていませんでした。
別途購入が必要なので、通販サイトでさがしてみたところ1000円ちょっとくらいで購入できました。

SLG47004V-DIPのDIP20ピンのピンヘッダは、他のGreenPAKデバイスと互換を持たせてあるようですが(そうでなければ、同じキットで開発できません)SLG47004Vは、24ピンのデバイスなので、引き出せていないピンがあるので要注意です。

2. オペアンプを使ったウィーンブリッジ発振回路の説明


回路説明
プロジェクトは、オペアンプを使ったウィーンブリッジ発振回路で低周波の正弦波発振回路をインプリメントしてみます。
上記回路で周波数150~15kHz位の正弦波を発生させてシミュレーションと実回路(エミュレーション)で波形を観測してみます。


GreenPAK デバイスのSLG47004Vは、コンデンサ、抵抗、ダイオードなどは外付けに必要となります。
前述のウィーンブリッジ発振回路を実際に組み込む回路に書き換えると上図のようになります。
発振周波数を決める2つの抵抗をSLG47004V内蔵のデジタル可変抵抗( Reostat )に接続してパラメータで周波数を変えられるようにしています。
D1,D2,R5の帰還回路は、発振出力波形の振幅が大きくなったときに内蔵オペアンプで構成する反転増幅回路のゲインを制限して、出力がクランプされるのを防ぐ回路です。

3. プロジェクトの作成



プロジェクトで使用するデバイスは、SLG47004Vですので、①開発ツールの初期画面のフィルター欄に“SLG47004V”と入力し、②SLG47004Vをダブルクリックします。


Project settingsのOperating conditonsを上記のようにセット(▲をクリック)してOKします。

4. Components の呼び出し



SLG47004VのGreenPAK DesignerのGUIの初期画面に切り替わります。
このプロジェクトに必要なブロックを選択します。


上図のように、必要なコンポーネントを選んで、それ以外のチェックを外します。
と、ここで困ったことが起こりました。
ChopperACMPは、今回のプロジェクトでは、使わないのですが、チェックを外そうとしても外れません。(上図赤枠)



メインワークエリアのChopperACMPの部分を見ると、2個のデジタル可変抵抗(Reostat)にあらかじめ接続されています。
GreenPAK Designerでは、コンポーネントを削除するためには、すべての接続を削除する必要があるのですが、で接続を切ろうとしても切れないことがわかりました。


そこで、RH0をダブルクリックして、PropertiesのCoonectionsを見たら、謎が解けました。
2個のデジタル可変抵抗(Reostat)のCLKとUP/nDOWNのピン接続が、Chopper ACMPの出力で制御されるようにデフォルトで、選択されています。
これを、下記のように、Ext(From matrix)、Ext Clk(From matrix)に選択してApplyをクリック(忘れずに)すると、接続が解除され、ChopperACMPを削除できるようになります。

このように、デバイスのハードウェア上の制約を開発ソフトで、サポートしているところがあるので、慣れないと使いにくく感じる場合があります。
迷ったら、まずデバイスのデータシートで該当するコンポーネントの説明を調べるのが近道です。

必要なコンポーネントの呼び出しができましたら、呼び出した各ブロックのプロパティを編集し、機能を設定します。

5. オペアンプのパラメータの設定

OPAMP0を選択し、ワークエリア左上のPROPATYを下記のように変更し、Applyをクリックして反映させます。



OPAMP0のPWR UPピンを、PORに接続します。



OPAMP0がPORに接続されると、同時にOPAMP0の出力が、PIN5に、反転入力が、PIN3に、非反転入力が、PIN4に接続されます。
デフォルトで設定されている内容については、電源接続などで、そのコンポーネントが動作できる設定になったときに、GUIに反映されるようです。
このあたりが、デフォルト以外の設定で使う場合など慣れていないと、うまく設定できなくて迷ってしまうかもしれません。

6. 外部接続するコンポーネントの呼び出し、パラメータの設定




画面左下の“Schematic Library”タブをクリックして、外部コンポーネントの一覧に切り替えて、呼び出す部品を選択して、ADDボタンで回路に追加します。
今回外付け部品として使用するコンデンサ(Capactor)3個、抵抗器(Resister)3個、ダイオード(PN Junction)2個を呼び出しました。



呼び出した各部品のパラメータを設定します。
設定したい部品を選択し、Propertiesボックスのパラメータを書き換えて、Applyをクリックすることで簡単に設定できます。
C1;10n(=0.01μF)、C2 ;10n(=0.01μF)、C3 ;10μF、R1;2.2kΩ 、R2;1kΩ 、
R3 → R5にリネームして;5.1kΩ
D1,D2のダイオードは、このまま使いますが、Spice MODELが入手できるようでしたら、それを使ってシミュレーションに反映させることもできるようです。

7. 基準電圧Vrefの設定



VREF OPAMP0を選択し、Propertiesを上記のように設定してApplyを押して確定させます。
(VDDAの電圧を内部で1/2に分圧し、それをAC回路の基準電位(アナログ信号グランド)にします。)



HD Bufferを選択し、Propertiesを上記のように設定してApplyを押して確定させます。
HD Bufferを介して、基準電位(アナログ信号グランド)を外部の素子に供給します。



VREF/OA0とHD/Bの電源(VDD)に接続してコンポーネントがアクティブになると、上図のように、Propertiesで設定されている接続が接続されました。
この時なぜか、VREF/OA1が突然アクティブになりました。
内部接続の都合なのかよくわかりませんが、使わないコンポーネントは、チェックを外してOFFにします。

8. 各パーツを配置し、接続する



各コンポーネントをつなぎやすさ、見やすさを考慮して、適切な位置に配置します。



各部品を接続して回路図を完成させます。

9. デザインルールチェックを行う

を実行してデザインルールのチェックを行います。



Rules Checker outputにエラー等がなければ、OKです。
上記では、ワーニングが出ています。
「Chopper ACMP(使っていないマクロセル)のセッティングが、デフォルトと違っています。」という内容です。
未使用の呼び出して設定もしていないマクロの値が変わってしまうというのは、違和感がありますが、内部リソースを共有していたり、チップや回路を誤った設定による破壊から保護するために、自動で設定が変わってしまうのは仕方ないのかもしれません。

10. シミュレーションによる動作確認

エントリーした回路で、シミュレーションによる動作確認を行います。
をクリックします。



Software Simulationを選択しOKを押します。



V1(またはV2)をダブルクリックして供給する電源の設定をします。



上図のとおり、V1,V2ともに、DC Voltageを5.0Vに設定し、Applyで反映させます。

デジタル可変抵抗(Reostat)の設定を確認します。
RH0,RH1をクリックしてパラメータを確認します。




RH0,RH1ともに、Resistanceの設定値が1023(default)になっています。
計算上の抵抗値で、101.518kΩ(詳細な抵抗値の計算は、SLG47004のデータシートの12.2  CALCULATING  ACTUAL  RESISTANCEの項をご参照ください。)となっています。
この抵抗値が、デバイスの初期化後のデバイスに反映されます。

Probe(観測点)を追加する。
電源とGNDには、デフォルトでProbeが設定されています。
発振出力波形を見るために、PIN 5の出力を右クリックし、Add Probeでプローブを追加します。



シミュレーション(Transient)を実行する。
Ending Timeを200msにして、Start simulationをクリックします。




シミュレーション(Transient)が実行されて終了すると波形が表示されます。


発振出力シミュレーション波形(Reostat=101.518kΩ,1023)

出力された波形を拡大してマーカーで周期を測定してみます。



拡大したい波形にマウスポインタをあてて、Control + Mouse WheelでズームIN/OUTできます。
波形の測定ポイントにマウスポインタをあてて、Control + Left Mouse ButtonでマーカーAを設定し、もう一つの測定ポイントにマウスポインタを移動させて、Control + Right Mouse ButtonでマーカーA,B間の電圧、時間差を測定できます。
上記により波形の周期は、6.380ms(周波数で、156.74Hz)になっています。
理論値 f=1/(2πCR)に当てはめて計算すると、f=1/(2π×0.01μF×101.518kΩ)≒156.78Hzと、ほぼ近い値となっています。

発振周波数を変えてみる
デジタル可変抵抗(Reostat)の値は、デフォルト(最大値1023;101.518kΩ)になっています。
これを変更して再読み込みさせれば、周波数が変わるはずです。



デジタル可変抵抗(Reostat)の設定を変更します。
RH0,RH1をクリックしてパラメータを表示します。

Resistanceの(initial data)の設定値を100に変更し、Applyで反映させます。



Resistanceの設定値を100にすると、計算上の抵抗値は、9.9236kΩ(詳細な抵抗値の計算は、SLG47004のデータシートの12.2 CALCULATING ACTUAL RESISTANCEの項をご参照ください。)となっています。

Start simulationをクリックします。




シミュレーション(Transient)が実行されて終了すると波形が表示されます。


発振出力シミュレーション波形(Reostat=9.9236kΩ,100)

再度、出力された波形を拡大してマーカーで周期を測定します。



上記により波形の周期は、657.391μs(周波数で、1.521kHz)になっています。
理論値 f=1/(2πCR)と比較すると、f=1/(2π×0.01μF×9.9236kΩ)≒1.603kHzと、5%程の差があることが確認できました。

をクリックすることで、通常の画面に戻れます。

SPICEを使ったシミュレーションで、デバイスを使わずに、周辺回路を含めたアナログシミュレーションが可能です。
ここでは、Transient解析を行いましたが、他にもGreenPAK Designerでは、Parametric DC解析がサポートされているようです。
アナログシミュレーションのメニューとしては、アナログ回路をシミュレーションするには、周波数をSweepするAC解析が欲しいところです。

プロジェクトの保存を行います。
Fileメニューの Save as… でプロジェクトの保存を行います。
SLG47004のプロジェクトファイルは、xxxx.aap の拡張子で保存されるようです。
以降はこのファイルを呼び出して編集、デバッグなどを行うことができます。

11. 外部外付け部品による動作確認

ここからは、先行開発ボードを使った動作確認になります。
動作を確認するには、下記のハードウェアが必要になります。
・SLG4DVKADV (GreenPAK Advanced Development Board)
・SLG4SA‐DIP (Adapter for GreenPAK Advanced Development Board)
・USB cable
以上は、SLG4DVKINTROに同梱されています。
以下は、拡張コネクタに外付け部品を接続するのに別途準備が必要です。
・SLG47004V-DIP
・ユニバーサルボード
・20ピン2列ソケットコネクタ

コンデンサ、抵抗、ダイオードなどの外付け部品を外部拡張コネクタの対応するピンに対して接続し、ユーザー回路(基板)を外部コネクタに接続してエミュレータを起動してテストポイントの波形をオシロスコープなどで、観測します。



外部拡張コネクタに接続する外付け回路の作成
上図のように、コンデンサ、抵抗、ダイオードなどの外付け部品は、外部拡張コネクタを介して接続しなければなりません。
外部拡張コネクタのピン配置( GreenPAK Advanced Development Platform UM-GP-002 のFigure3参照)と、SLG47004V-DIPの回路図( SLG47004V GreenPAK DIP Adapter Quick Start Guide )を参考にして外付けユーザー回路を作成します。

ここで、困ったのがSLG47004Vは、24ピンのため全部のピンが、20ピンの外部拡張コネクタに引き出されていないことでした。
引き出されていないピンを外付け回路で使っていなければ問題ないのですが、今回の場合、デジタル可変抵抗(Reostat)RH0とRH1の片側ピン(RH0B=pin7、 RH1A=pin8 )は、外部拡張コネクタに引き出されていないため、直接SLG47004V-DIPのピンヘッダーSV2のショートピンにジャンパーすることにしました。

また、デジタル可変抵抗(Reostat)RH0とRH1は、今回フローティングの抵抗素子として使うので、SV1とSV2のショートピンを外して、RH0とRH1がVDDにもGNDにも接続されないようにします。



写真のように、作成したボードを外部拡張コネクタに接続し、SLG4DVKADV (GreenPAK Advanced Development Board)にSLG4SA‐DIP (Adapter for GreenPAK Advanced Development Board)とSLG47004V-DIPを取り付けて、USB cableでPCに接続します。

外付け回路(ユニバーサル基板)とSLG47004V-DIPは、ICクリップでSV3のジャンパしているショートピンに接続しました。
これで、ハードウェアの準備ができました。
TP7(SLG47007V-DIPのpin5[OPAMPの出力])とGND間をオシロスコープで波形を観測します。



外付け回路によるエミュレート動作
外付け回路で、シミュレーションによる動作確認を行います。
をクリックします。



Software SimulationになっていたらChange Platformを押します。



GreenPak DIP Development Platformを選択しOKを押します。



Emulationを押します。



ワークエリア内のVDDAに接続してある“S”のところをダブルクリックします。



固定供給電圧が、3.3Vになっていたら、5Vに変更してApplyをクリックしてください。



外部に引き出してあるピンの[EC]を選択すると、外部拡張コネクタに切り替わります。



オペアンプ出力波形(Reostat=101.518kΩ,1023)

RH0,RH1をクリックしてパラメータを確認します。
Resistanceの(initial data)の設定値を100に変更し、Applyで反映させます。




Emulationを押して、データをオンボード上のチップにリロードすることで、上記のRH0,RH1のパラメータの変更が回路に反映されます。


オペアンプ出力波形( Reostat=9.9236kΩ,100 )

Reostat=101.518kΩ,1023の時に、f=157.6Hz
Reostat=9.9236kΩ,100 の時に、f=1605Hz
デジタル可変抵抗(Reostat)に設定したデータによって、出力周波数が切り替わることが確認できました。

12. まとめ

オペアンプやアナログコンパレータ、デジタル可変抵抗、アナログスイッチなどのアナログ機能を搭載したSLG47004V を使えば、アナログフロントエンドなどのアナログ回路を、少数の外付け部品を付加するだけで正弦波発振回路を構成することができました。

GreenPAK Designerソフトウェアを使えば、シミュレーションやエミュレーションができるのでアナログ設計を効率的に行えます。
ISP機能を持ち、I2Cインターフェースを備えているのでホストからI2Cのインターフェースを使って内蔵コンポーネントのパラメータ制御して実使用状態でのトリミングを行うなど、フレキシブルなシステムを構成するような使い方も可能ですね。

是非、みなさんもいろいろな評価をしてみてください。
この記事を書いた人
田代 将文(九州技術課)

論理設計など主にデジタル関連の仕事をしてきました
趣味は電子工作をしたり音楽を聴くことです
新しいものにチャレンジすることが好きです

田代将文

この記事が気に入ったら
いいね!しよう

Twitter で
Pocket