前回、簡単な PLL を作ってみました。
PLL の設計は結構制限事項が多いのややこしいのですが、とりあえずこの形で進めます。
各ブロックは伝達関数で表現されているので、scilab で応答特性を調べておきます。

各ブロックの伝達関数は以下の通りです。
イメージ 4
これらを次のスクリプトでシミュレーションします。


// PLL のループ特性のチェック

fw=2*%pi

a=0.03
b=3
c=0.02

s=poly(0,'s')

LF=(1+s/fw/a)/s*fw*a
// ループフィルタの伝達特性。式に注意。

NF=1/(1+s/fw/b)/(1+s/fw/b)
// ノイズフィルタの伝達特性

RP=4*32*0.02/s
// 位相比較器とVCOの伝達特性

PLL_O=LF*NF*RP
// 開ループ特性

PLL_C=PLL_O/(1+PLL_O)
// 閉ループ特性

scf(0);
clf(0)
bode(syslin('c', PLL_O))

scf(1);
clf(1)
bode(syslin('c', PLL_C))

PLL 開ループ特性は、

イメージ 1
PLL 閉ループ特性は、

イメージ 2
ステップ応答は、

イメージ 3
ステップ応答は前回のシミュレーション結果の緑色の線と比較してみて下さい。当たらずといえども遠からずでしょうか。
Xcos の方がオーバーシュートが少なめでしょうかね。立ち上がりは似たようなものですが。
Xcos での周波数特性を測定する方法は簡単にはなさそうなので(インパルス応答を使うしかないか)次の機会にでもやってみようと思います。