2.9 リニアシステムシミュレータ
下式は、状態空間モデルです。

A/B/C/D 行列は、ファイルとして与えます。 4次のrungekuttaで計算しています。呼び出し手順は、

$runge_kutta("File Name",mode,Input_RealArray,Output_RealArray,[X]);

例として "bessel.vtakprj" をご参照ください。NRZからベッセルフィルタを通した波形が得られています。.

 

Analog PLLのシミュレーション

Analog PLLにおいては、下図のループフィルタが安定の鍵になります。

この伝達関数は、下式によります。

Veritakのアナログシミュレータは伝達関数を状態空間表現にする必要があります。手計算でもできますが、MatlabやScilabのtf2ss コマンドで簡単に変換できます。たとえば、次のようなスクリプトを書いて変換します。
これで、Veritakの行列読み込みファイル"loop_filter.txt"ができました。"pll_test.vtakprj" をLoadしてみます。
PLLがロックする様子が分かります。

C2=14e-12
C1=100e-12
R1=4.7e3
R1C1=R1*C1;
C1_C2=C1+C2;
C1C2R1=C1*C2*R1;
b=[R1C1 1];
a=[C1C2R1 C1_C2 0];
[A,B,C,D] = tf2ss(b,a)
freqs(b,a)
save 'F:\samples\loop_filter.txt' A B C D -ascii -double


TIPS

古典制御理論によるPLLの設計例が、下記にあります。
http://www.sugawara-systems.com/opencores/pll/pll.htm


 途中で内部状態を切り替えるには、適宜、内部状態行列Xをリードライトしてください。ソースが必要な方はサポートまでご連絡ください。