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

Microsoft PowerPoint - 33.pptx

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - 33.pptx"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

1

3.3

Verilog-Aによる動作モデリ

ング

(2)

アナログ動作記述

典型的記述例から、アナログ言語記述の考え方を学ぼう。

ここでは、自分でバリバリ記述できるほど詳しい文法を学

ぶ必要はない。与えられた記述が大まかに追えて、パラ

メータが何を表しているか分かれば十分。

(参考URI)

http://homepage3.nifty.com/hdl_design/

(3)

3

準理想的

OPA, OTAの仕様

OPAの特性

理想

OPA

動作モデル(準理想)

直流差動利得

A

d

∞ (dB)

有限値(大きいほうが理想)

入力インピーダンス

Z

i

∞ ()

∞ ()

出力インピーダンス

Z

o

0 ()

必要なら設定

最大出力電圧振幅

V

sat

∞ (V)

必要なら設定

遮断周波数

(Pole) 

p1

∞ (Hz)

必要なら設定

OTAの特性

理想

OTA

動作モデル(準理想)

直流差動トランスコンダクタンス

G

m

有限値

有限値(現実的な値を設定)

入力インピーダンス

Z

i

∞ ()

∞ ()

出力インピーダンス

Z

o

∞ ()

必要なら設定

最大出力電圧振幅

V

sat

∞ (V)

必要なら設定

遮断周波数

(Pole) 

p1

∞ (Hz)

必要なら設定

GBP(OPA) = 

p1

* Ad(倍) で与えられる。GBPをパラメータとして記述してもよい。

(4)

OPAの動作記述(利得)

module opa_i(inp, inn, outp, outn);

inout inp, inn, outp, outn;

electrical inp, inn, outp, outn;

// dc gain = 80 (dB)

parameter real GAIN = 10000;

analog begin

V(outp) <+ GAIN * V(inp, inn);

V(outn) <+ GAIN * V(inn, inp);

end

回路モジュールの宣言 ポートの宣言 (電気特性を記述する場合は双方向) ポートのディシプリン宣言(双方向アナログ配線) コメント パラメータの宣言(実数のgainを10000で初期化) アナログ動作記述の開始 <+は、コントリビューション演算子(後述) V(inp, inn)は、innに対するinpの電位差を表す

A

d

以外理想の

OPAの特性

設定例

直流差動利得

A

d

80 (dB)

入力インピーダンス

Z

i

∞ ()

出力インピーダンス

Z

o

0 ()

最大出力電圧振幅

V

sat

∞ (V)

遮断周波数

(Pole) 

p1

∞ (Hz)

詳細は

Verilog-A Language Manualを参照

+

- +

-inp

inn

outn

outp

gain

(5)

5

OPAの動作記述(出力インピーダンス)

• 出力インピーダンス Zo = 100 () をモデル化

module opa_zo(inp, inn, outp, outn); inout inp, inn, outp, outn;

electrical inp, inn, outp, outn;

parameter real GAIN = 10000 from (0:inf), // dc gain Rout = 100 from (0:inf); // output R real vin, voutp, voutn, vout0, ioutp, ioutn;

analog begin

vin = V(inp, inn); voutp = V(outp); voutn = V(outn); // dc gain

vout0 = GAIN * vin; // output current

ioutp = (vout0 - voutp)/Rout; ioutn = (-vout0 - voutn)/Rout;

// output I(outp) <+ -ioutp; I(outn) <+ -ioutn; end endmodule 出力インピーダンスから出力電流を計算

直流差動利得の計算

(6)

OPAの動作記述(周波数特性)

• ポールとなる角周波数

p1

= 2・1MHz をモデル化

module opa_wp(inp, inn, outp, outn); inout inp, inn, outp, outn;

electrical inp, inn, outp, outn;

parameter real GAIN = 10000 from (0:inf), // dc gain Rout = 100 from (0:inf), // output R

POLE_FREQ = 1M from (0:inf); // pole frequency real vin, voutp, voutn, vout0,

ioutp, ioutn; analog begin

vin = V(inp, inn); voutp = V(outp); voutn = V(outn); // dc gain and 1st pole

vout0 = laplace_nd(GAIN*vin, {1},{1,1/(`M_TWO_PI*POLE_FREQ)});

// output current

ioutp = (vout0 - voutp)/Rout; ioutn = (-vout0 - voutn)/Rout; // output I(outp) <+ -ioutp; I(outn) <+ -ioutn; end endmodule

伝達関数の記述を追加

pole

f

s

s

H

2

POLE_FREQ

`M_TWO_PI

POLE_FREQ

`M_TWO_PI

1

1

vin

gain

vout0

)

(

pole

f

s

s

H

2

POLE_FREQ

`M_TWO_PI

POLE_FREQ

`M_TWO_PI

1

1

vin

gain

vout0

)

(

OPAの伝達関数

(7)

7

OTAの動作記述(Gm)

module ota_i(inp, inn, outp, outn);

inout inp, inn, outp, outn;

electrical inp, inn, outp, outn;

// transconductance = 50 (S)

parameter real Gm = 50u from (0:inf);

analog begin

I(outp) <+ Gm * V(inp, inn) ;

I(outn) <+ Gm * V(inn, inp);

end

endmodule

回路モジュールの宣言 ポートの宣言 (電気特性を記述する場合は双方向) ポートのディシプリン宣言(双方向アナログ信号) コメント パラメータの宣言(実数のgmを10mで初期化) アナログ動作記述の開始 処理内容(<+はコントリビューション演算子(後述))

OTAの特性

設定例

トランスコンダクタンス

G

m

50 (S)

入力インピーダンス

Z

i

∞ ()

出力インピーダンス

Z

o

∞ ()

最大出力電圧振幅

V

sat

∞ (V)

(8)

OTAの動作記述(出力インピーダンス)

p

= 800 (MHz), Zo = 5(M) をモデル化

module ota_zo(inp, inn, outp, outn); inout inp, inn, outp, outn;

electrical inp, inn, outp, outn;

parameter real Gm = 50u from (0:inf), // transconductance Gout = 0.2u from (0:inf), // output conductance POLE_FREQ = 800M from (0:inf); // pole freq. real vin, voutp, voutn, ioutp, ioutn, iout0;

analog begin

vin = V(inp, inn); ioutp = I(outp); ioutn = I(outn); // Gm and pole iout0 = laplace_nd(Gm*vin, {1}, {1, 1/(`M_TWO_PI*POLE_FREQ)}); // output voltage

voutp = (iout0 + ioutp) / Gout; voutn = (-iout0 + ioutn) / Gout; // output current

V(outp) <+ voutp; V(outn) <+ voutn; end

(9)

9

コンパレータの動作記述

• イベントドリブンモデルによる記述例

module comp(inp, inn, clk, outp, outn, vdd, vss); inout inp, inn, clk, outp, outn, vdd, vss;

electrical inp, inn, clk, outp, outn, vdd, vss; parameter real

Voff = 10n from (-inf:inf), // offset Trf = 100p from (0:inf), // rise/fall time TOL = 1p from (1p:inf); // timing tolerance integer bout;

real vin, vtg; analog begin

vin = V(inp, inn);

vtg = (V(vdd) + V(vss)) /2; // comparing

@(initial_step or cross(V(clk) – vtg, 1, TOL)) begin

if (vin >= Voff) bout = 1; else bout = -1; end // output V(outp) <+ V(vdd)*transition(bout, 0, Trf, Trf); V(outn) <+ V(vss)* transition(bout, 0, Trf, Trf); end endmodule

立上りだけ検出

遅延時間、

立上り時間、

立下り時間

電圧比較

比較結果を

1/-1

で表現

初期状態を決めるため

にシミュレーション開始

時に比較

V(clk) - vtg = 0 を検出

(10)

Verilog-Aの文法解説(1)

入出力ポート宣言

input

: 入力ポート

output

: 出力ポート

inout

: 双方向ポート

Verilog-A (またはVerilog-AMS)の解説書は少ないので、簡単に解説しておく。

ディシプリン

(discipline)宣言

electrical : アナログ電流、電圧値を持つ配線・・・SPICEネットリストと

接続可能(定義済み)

voltage : アナログ電圧値を持つ配線(定義済み)

※ 他に多くのディシプリンがある。ユーザが独自に作成することもで

きる

パラメータ

(parameter)宣言と初期化

モジュール内で有効な定数や式を定義

モジュールをインスタンスとして呼び出すときに再設定できる

(11)

11

Verilog-Aの文法解説(2)

変数宣言

real 変数名;

: 実数スカラ

integer 変数名;

: 整数スカラ

real 配列名 [low:high];

: 実数配列

integer 配列名[low:high];

: 整数配列

信号アクセス関数: 代入演算子の左辺ではソース、右辺ではプローブを表す

V(n1)

: ノードn1とGNDの間の電圧を取得する

V(n1, n2): ノードn1, n2間の電圧を取得する

I(n1)

: ノードn1からGNDに流れる電流(モジュール内部方向)を取得する

I(n1, n2) : ノードn1からn2の間に流れる電流を取得する

(参考) 信号アクセス関数を用いて、現在の電圧値、電流値を表す実変数

に代入してから、変数を用いて演算すると可読性が良い

analog begin ~ end : アナログ手続き文(代入文や制御文)を書く部分。

モジュールに

1回だけアナログブロックを含めることができる。

(参考) ディジタル

Verilog HDLのalways文に相当するが、ノンブロッキ

ング代入

(<=)は使用しない。以下は、analogブロックの中に記述する。

analogブロック

(12)

Verilog-Aの文法解説(3)

コントリビューション(アナログブランチ代入文)

V(n1, n2) <+ 式;

: 式で計算した結果をノードn1, n2間の電圧ソースに与える

I(n1, n2) <+ 式;

:式で計算した結果をノードn1, n2間の電流ソースに与える

(注意) 同一ノード間に複数のコントリビューションが記述された場合、複数式

の加算が実行される。電圧の加算と電流の加算は、回路的には意味が異なる

ので注意が必要(下記の図参照)。

1

2

V(n1, n2) <+ 式1;

V(n1, n2) <+ 式2;

I(n1, n2) <+ 式1;

I(n1, n2) <+ 式2;

ポテンシャル代入(直列接続)

フロー代入(並列接続)

1

n1

n2

手続き的代入文

=

: 変数(real integer) に対して演算結果を代入する

※ 記述の上から下へ順に代入が実行される

(13)

13

Verilog-Aの文法解説(4)

条件演算子

変数

<+ 条件式 ? 式1 : 式2;

変数

= 条件式 ? 式1 : 式2;

条件式

=True のとき式1の値を代入、False のとき式2の値を代入

制御構文

if文

if (条件式2)

実行文

1;

else if (条件式2)

実行文

2;

else

実行文

3;

case文

case (分岐式)

評価値

1: 実行文1;

評価値

2: 実行文2;

default: デフォルト文;

endcase

1 実行文が2つある場合は、begin ~ end で囲む

2 repeat文, while文もある

for文

for (初期値; 条件; 代入) begin

実行文

1;

実行文

2;

end

(14)

ddt(式, 誤差)

: 時間微分

idt(式, 誤差)

: 時間積分

※時間積分や時間微分のように、条件文の中には記述できない演算があるので注意

absdelay(式, 遅延時間)

: 遅延時間経過後に処理

slew(式, 立上がりSR, 立下りSR)

: 式の時間変化速度を制限

transition(式, 遅延, 立上り時間, 立下り時間, 誤差)

: 離散値の変化に遷移時間帯を設けて直線でつなぐ

ラプラス変換演算子

laplace_nd(式, 分子, 分母, 誤差) : 伝達関数を通す(分子・分母形式)

laplace_zp (式, ゼロ, 極, 誤差)

: 伝達関数を通す(ゼロ・ポール形式)

z変換演算子

zi_nd(式, 分子, 分母, Ts, 立上/下時間, td): 伝達関数を通す(z

-1

の分子・分母形式)

zi_zp (式, ゼロ, 極, Ts, 立上/下時間, td ): 伝達関数を通す(z

-1

のゼロ・ポール形式)

その他:

abs, exp, ln, max, min, sqrt など殆どの算術関数が使える

Verilog-Aの文法解説(5)

アナログ演算子と関数1(連続ベースモデル)

(15)

15

Verilog-Aの文法解説(6)

2 1 1

0

1

1

0

)

(

z

z

z

z

K

2

1

0

1

1

0

)

(

s

s

s

s

K

分子・分母形式

ゼロ・ポール形式

laplace_zp(V(node), {-1, 0}, {-1, -1, -1, 1});

laplace_nd(V(node), {0, 1}, {-1, 0, 1});

)

1

1

)(

1

1

(

0

1

1

)

(

j

s

j

s

j

s

s

K

ラプラス変換

/z変換演算子の形式

zi_nd(V(node), {0, 1}, {-1, 0, 1}, Ts);

zi_zp(V(node), {-1, 0}, {-1, -1, -1, 1}, Ts);

)

1

1

)(

1

1

(

0

1

1

)

(

1 1 1

j

z

j

z

j

z

z

K

(立上り

/立下り時間、遅延時間は省略可能)

(16)

Verilog-Aの文法解説(7)

アナログ演算子と関数2(イベントドリブンモデル)

@(cross(式, 1(立上り)/-1(立下り)/無指定(両方向), 時間誤差, 式の誤差))

: 電圧、電流、時間を含む式がゼロを横切るタイミングで処理を実行

@(initial_step(ac/dc/tran/noise))

: ()内のシミュレーションの初期状態において処理を実行

last_crossing(式, 方向)

: 直前の電圧、電流、時間を含む式がゼロを横切る時刻を求める関

数。

crossでは、時間誤差の時間精度で処理が実行されるが、

last_crossingでは時間ステップの間を直線補間により、正確な交差

時刻を求める。

@(timer(開始時刻, 周期))

: 指定された時刻から周期的に処理;を実行

※ 連続ベースモデルで制御文

(case, if)を使用すれば 、イベント動作と同様

の機能を記述できるが、クロックに合わせて動作する回路は、イベントドリブ

ンモデルを使うと記述しやすい。

(17)

(参考)Verilog-AとVerilog-AMS

17 module analog_sw (vin, control, vout);

inout vin, vout; input control; voltage control; electrical vin, vout; [略]

real roff, rratio, rout; integer rstate;

analog begin

rstate = (V(control) >= vth);

@(cross(V(control)-vth, 0, slack, vtol));

rout = roff*pow(rratio,transition(rstate, …)); I(vin,vout) <+ V(vin,vout)/rout;

end endmodule

module analog_sw (vin, control, vout); inout vin, vout;

input control; logic control; electrical vin, vout; [略]

real roff, rratio, rout; reg rstate;

always @(control) begin

if (control===1'b1) rstate<=1'b1; if (control===1'b0) rstate<=1'b0; end analog begin rout = roff*pow(rratio,transition(rstate, …)); I(vin,vout) <+ V(vin,vout)/rout; end endmodule

Verilog-A記述

Verilog-AMS記述

Verilog-AMSでは、crossを使用せずalways

文でイベントが記述できる(

Verilog-AMS環

境の場合は、こちらを推奨)

謝辞:ルネサスエレクトロニクス(株)

大沢秀行様からの情報提供です。

(18)

アナログ動作モデルの使用上の注意点

• 考慮していない特性に関するシミュレーションはできない

– 前記OPAモデルで考慮していない特性の例

• 第2番目以降のポールとゼロ

• スルーレート(SR)

• 入力インピーダンス

• 同相入力電圧レンジ

• オフセット

• 非線形歪み

• CMRR

• 温度特性

• 最終的にトランジスタレベルの回路を使って回路シミュレーションする

なら、あまり詳細なモデル化は必要ない

• 動作モデルに取り込む特性は必要に応じて取捨選択する(次ページ)

– 必要以上に詳細な動作モデルを使用することは、どのパラメータが回路全

体の性能に影響するのか分からなくなるので逆効果

(19)

19

アナログ動作モデルによる誤差の検証

• 設計時の前提

– 増幅回路の利得=∞, 周波数特性なしとして設計を行う

• 設計時の前提の破綻による誤差の発生

– 特に高周波領域では増幅回路の利得が下がり、位相も変化する

ので設計と実際の特性が一致しなくなる

• 動作モデルシミュレーションによる誤差の確認

– 有限の利得の影響

– 高周波での回路特性の影響

– 出力信号の飽和(電源電圧より大きな出力が出ない)の影響

– オフセットの影響

– 受動素子のばらつきの影響

などを確認する

(20)

3.3節のまとめ

• Verilog-Aの記述方式には、連続ベースモデルとイベント

ベースモデルがある

– 連続時間アナログ回路の特性、電圧-電流特性、周波数特性、電力

特性などを記述するときは連続ベースモデルが便利

– 閾値によるスイッチング特性や離散時間アナログ回路の動作を記

述するときはイベントベースモデルが便利

• アナログ動作モデルには、必要な特性だけをパラメータとし

て与える

– 不必要に詳細なモデルを使用すると、影響の大きいパラメータがど

れか分かりにくい

– 不必要に詳細なモデルを使用すると、動作しない場合の原因究明

も困難

– モデル化していない特性はシミュレーション結果に表れないので注

意が必要(無限に高周波まで増幅できる増幅回路も記述できてしま

う・・・よくある落ちです)

参照

関連したドキュメント

支援要請入力詳細 13ページ 患者受入入力詳細 14ページ 支援可能スタッフ3.

Optical SPDIF オーディオ出力ポートとなります。SPDIF 交換デバイス専用 UPDATA ポート

出力電流が 10A で、電線の抵抗が 0.01Ω

First three eigenfaces : 3 個で 90 %ぐらいの 累積寄与率になる.

• ネット:0個以上のセルのポートをワイヤーを使って結んだも

READ UNCOMMITTED 発生する 発生する 発生する 発生する 指定してもREAD COMMITEDで動作 READ COMMITTED 発生しない 発生する 発生する 発生する デフォルト.

シートの入力方法について シート内の【入力例】に基づいて以下の項目について、入力してください。 ・住宅の名称 ・住宅の所在地

[r]