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

これらを次のスクリプトでシミュレーションします。
// 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 開ループ特性は、

PLL 閉ループ特性は、

ステップ応答は、

ステップ応答は前回のシミュレーション結果の緑色の線と比較してみて下さい。当たらずといえども遠からずでしょうか。
Xcos の方がオーバーシュートが少なめでしょうかね。立ち上がりは似たようなものですが。
Xcos での周波数特性を測定する方法は簡単にはなさそうなので(インパルス応答を使うしかないか)次の機会にでもやってみようと思います。
PLL の設計は結構制限事項が多いのややこしいのですが、とりあえずこの形で進めます。
各ブロックは伝達関数で表現されているので、scilab で応答特性を調べておきます。
各ブロックの伝達関数は以下の通りです。

これらを次のスクリプトでシミュレーションします。
// 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 開ループ特性は、

PLL 閉ループ特性は、

ステップ応答は、

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