How do you feel about this tutorial? Help us to provide better content for you.
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
What do you think of this tutorial?
このチュートリアルの対象利用者:
DesignSpark Circuit Simulatorこのチュートリアルでは、シミュレーション用の部品モデルを回路図から生成する方法について解説します。この機能を使うことでより複雑な回路やシステムの設計も容易になり、また作った部品モデルは他の設計のために使いまわすこともできます。
ここでは例として、直列にインダクタンスの付いた抵抗器のモデルを作成します。
RL回路を作る
以下の回路図を作成して保存しましょう。
1. 部品一覧から抵抗器(Registor)とインダクタ(Inductor)を、ドラッグ&ドロップで回路図上に持ってきて配置します。
これらの部品は「My Favorites」か「Analog Electronics」カテゴリを見るか、もしくは検索ボックスを使うと見つかるでしょう。
ここでの目標は回路の一部として使われるような部品モデルの作成であるため、電源などを付けて回路として成立させる必要はありません。ただし、動作検証のため一時的に繋げることなどは特に問題ありません。
2. 抵抗とインダクタを下図のように直列に繋ぎます。
3. 抵抗器とインダクタの値をそれぞれ設定します。
ここでは抵抗10kΩ、インダクタ1mHの値を設定しています。
4. 各配線のnet名を上図のように設定します。
モデルの作成と編集
部品モデルの生成自体は自動で行われますが、外部に露出するピンやその他の設定を行うため、一度した後でいくらか編集する必要があります。手順を以下に示します。
部品モデルの生成
1. 画面左上にある「Create new component」ボタンをクリックし、「From Schematic」を選択します。
このようにすると回路図データから部品モデルを作成するためのダイアログが表示されます。
2. 「Click here to generate model」ボタンをクリックします。
現在開いている回路図の内容に従い、VHDL-AMSモデルが自動的に生成されます。これが部品一覧に追加されます。
注釈: 部品モデルが生成される際に、元となる回路図データに影響を与えないようにするため、裏で自動的に回路図データのコピーがとられています。
3. 「Save new component」ボタン(フロッピーディスクのアイコン)をクリックします。
4. 新しい部品モデルの名前を決めて入力し、「OK」をクリックします。
このとき入力する名前は、元となる回路図データのタイトルなどと一致していなくて構いません。この例では「Series RL」という名前にします。
ここまでのことを行うとSymbol Editorが起動します。あと少しです。
5. 一度Component Editorに戻りましょう。新しく作ったモデルの定義は以下のようになっているはずです。
長いように見えますが、注目して見るべき部分はそう多くありません。
回路図を作る際にnet名というものを付けましたが、これは部品同士の接続を確かに行うために使われます。例えば、port map
セクションにて抵抗器のピンp2がnetRLに接続されていることが分かります。そしてまた、インダクタのピンp1もnetRLに接続されています。これによって抵抗器とインダクタが繋がっています。
この部品モデルのp1, netRL, p2という3つのnetは、architecture
セクションのトップで内部的なものとして定義されています。そのためこのままでは、外からこれらのピンにアクセスすることはできません。
生成された部品モデルにはgeneric
セクションとport
セクションというセクションも含まれています。しかしデフォルトではコメントアウトされています。これらはコメント解除することで簡単に使えるようにするためにここに書かれているものです。
どのように書けば良いかという例もコメントによって書かれています。こちらは必要であれば削除してしまって構いません。
ピン接続の追加
それでは部品モデルに接続ピン(VHDL-AMSにおける「port」)を追加しましょう。これは、内部netの定義をentity portの定義で置き換えることによって行えます。ここではp1とp2をモデルの外部ピンとして設定し、netRLは内部netのままとします。
1. 部品モデルの記述を以下のように書き換えます。
a. portセクションの最初の行port (
をコメント解除します。
b. portセクションの最後の行);
をコメント解除します。
c. architectureセクションの最初の方の行にあるterminal p1:electrical
とterminal p2: electrical
の行をコメントアウトします。
これらの記述は一般的には、architectureセクションから削除してしまいます。ここでは単に説明のためにコメントとして残しています。
d. terminal p1: electrical
とterminal p2: electrical
の行をportセクションにコピーします。
セミコロン;
に注意してください。portセクションの中の最終行のセミコロンは以下のように、portセクションの閉じかっこの後に移動します。
2. Symbol Editorに移ります。
今部品モデルに追加したピンは部品シンボルに自動で配置されています。あとは使いやすいよう好きなようにピンを再配置することができます。
3. Symbol Editorでは、ピンはドラッグすると自由に動かせます。
ここではピンp1を左側に、ピンp2は右側に置いてみましょう。
4. Saveボタンをクリックし、Symbol Editorを閉じましょう。
注釈: Symbol EditorのSaveボタンをクリックすると、そのときにComponent Editorに部品シンボルのデータが反映されます。しかしその時点では部品データベースには保存されません。DesignSpark回路シミュレータのデータベースにシンボルの変更を反映するには、そのたびにSymbol EditorだけでなくComponent EditorでSaveをクリックする必要があります。
さて、これで部品は完成しました。他のどの回路図の中でも配置して自由に繋ぐことが可能です。しかしこのモデルには、後から回路図上で数値などを変更できるような「プロパティ」というものがありません。
部品プロパティ情報の追加
今作成したモデルでは、抵抗器の抵抗の値やインダクタのインダクタンスの値は元の回路図で設定した値に固定されてしまっています。
そこで次は、回路図の側で各種パラメータを設定できるようにモデルを書き換えます。このような部品モデルに付けられるプロパティ設定のことを、VHDL-AMSでは「ジェネリクス(generics)」と呼びます。
まずは前にportセクションで行ったように、「generic」セクションの開始行と最終行をコメント解除します。
そして以下に示すコードのようにプロパティを追加して、そのプロパティを参照するように書き換えましょう。
これでユーザーによってresistance_valueおよびinductance_valueとして設定された値が「res」および「ind」という名前で参照できるようになりました。
なお、再度になりますがセミコロン;
に注意してください。最後のセミコロンはportセクションと同様に、閉じカッコの外側についています。
プロパティにはオプションとしてデフォルト値を設定できるため、部品モデルを使うユーザーが値を設定したかどうかに関わらず動作することができます。
注: 部品モデルの定義の中でプロパティの値を指定したい場合は、VHDL-AMSの文法に従って書かなければなりません。SI接頭辞(m, u, kなど)がモデル内部ではサポートされていません。そのため、例えば「res」のデフォルト値には「10k」ではなく「1.0e4」と指定しています。
モデルの完成
これで部品モデルは完成です。この部品モデルは回路図上でつなぐためのピン定義に加え、回路図上から設定できるプロパティ値の定義も含んでいます。
最終的な部品モデルのコードを以下に示します。説明用のコメントは取り除いています。
作成したモデルの動作検証
部品モデルの作成作業は以上で終わりですが、実際にはその作った部品が正しく動くものであるかを検証した方が良いでしょう。今回の場合の一番簡単な方法としては、単品の抵抗器とインダクタで同じ回路を作って動作させて、同じ挙動をとるかどうかを確認するというものが挙げられます。
まず部品モデルを作るのに使った回路図を取り出し、作った部品モデルをその上に配置します。カスタムで作った部品モデルは「My Components」の下に追加されています。
プロパティを編集して反映されるかどうか見てみましょう。比較対象としてここでは1Ωの抵抗と10nHのインダクタンスを配置し、また部品モデルのプロパティにも同様の値を設定しました。
結果を以下に示します。 抵抗値として渡した「1」とインダクタンス値として渡した「10n」によって、デフォルト値10k、1mが上書きされているかどうかを検証しています。
見ての通り、単品の部品で回路を組んだ場合と今回作った部品で回路を作った場合で、電流の時定数は等しくなっていることが分かります。
まとめと補足
これでチュートリアルは終了となります。
部品モデルの編集ツールおよび、VHDL-AMSモデルの作成手順全般の詳細については、ヘルプ(ツールバーのはてなマークボタン)の内容を参照してください。
最後にいくつかの補足があります。
- 部品モデルは入れ子にすることも可能です。
回路図から作った部品モデルを回路図の中で用い、さらにその回路図から部品モデルを作ることも可能です。
- 今回のようなカスタムで作った部品モデルを含んでいる部品モデルの場合、生成された部品モデルのコードの先頭に、内部で使われた部品モデルの定義がコピーされます。
これによって、カスタムで作成した部品モデルは任意の他の部品モデルにアクセスできるようになっています。また、データがモデル1つで全てまとまっているため扱いがしやすくなります。
注: このような理由から、階層構造のトップレベルとなる部品モデルは一番最後の順に記述されることになります。
コメント