55 lines
2.6 KiB
Markdown
55 lines
2.6 KiB
Markdown
---
|
||
title: 整数边界杂散
|
||
updated: 2022-01-11 02:21:09Z
|
||
created: 2022-01-10 03:35:59Z
|
||
---
|
||
|
||
|
||
# 产生原因
|
||
当$f_{VCO}$不是$f_{PD}$的整数倍时就可能产生此杂散,即$f_{Spur}=f_{VCO}\%f_{PD}$。
|
||
|
||
杂散靠近整数边界或在两整数边界的中间位置时影响最大。
|
||
|
||
![整数边界杂散_clip.png](../../../_resources/整数边界杂散_clip.png)
|
||
|
||
|
||
# 抑制原理
|
||
> The concept of *Spur-b-Gone* is to put a multiplier after the input frequency so that the phase detector
|
||
frequency can be dynamically changed to avoid bad integer boundary spurs.
|
||
|
||
![整数边界杂散_clip_2.png](../../../_resources/整数边界杂散_clip_2.png "传统PLL结构")![整数边界杂散_clip_1.png](../../../_resources/整数边界杂散_clip_1.png "可抑制杂散的PLL结构")
|
||
|
||
|
||
> The general concept in using *Spur-b-Gone* is to maximize the distance from the integer boundaries.
|
||
|
||
简而言之,就是通过改变鉴相频率$f_{Spur}=f_{VCO}\%f_{PD}$的值,以让其远离整数边界。
|
||
最简单的方法自然是在参考频率后加入倍频器,因为R是始终存在的。
|
||
|
||
CodeLoader中抑制整数边界杂散的算法
|
||
> 节选自应用笔记《[snaa289](file:///E:\文档\应用笔记\snaa289-Using a Programmable Input Multiplier to Minimize Integer Boundary Spurs.pdf)》
|
||
|
||
> The general concept in using Spur-b-Gone is to maximize the distance from the integer boundaries.
|
||
However, it also turns out that if one is close to or at the midpoint of two integer channels, then again the
|
||
spurs will be higher, although not as bad as being right at the integer boundary. Also, as the multiplier
|
||
value becomes too large, then it also can add noise.
|
||
|
||
> The Spur-b-Gone button on CodeLoader works by iterating through all valid PLL_R_PRE, PLL_R and
|
||
MULT values and calculates an index for each one. Then it chooses the highest (best) index. **The index
|
||
works by putting 40x more weight on the distance to the closest integer channel compared to the midpoint
|
||
and doing a <mark>parallel combination</mark> of these. Then it <mark>divides</mark> by the multiplier value to discourage higher
|
||
multiplier values unless it provides some benefit.**
|
||
```vb
|
||
IBS = Fvco % Fpd (Distance to closest integer channel)
|
||
IBS2 = Fvco % (Fpd/2) (Distance to closest midpoint between 2 integer channels
|
||
If IBS = 0 then
|
||
Index = Infinite (Ideal to be exactly on an integer channel)
|
||
Else If IBS2=0 then
|
||
Index = 0 (Stay away from ½ of integer boundary)
|
||
Else
|
||
If IBS<IBS then //此处疑是IBS<IBS2
|
||
Index = IBS / Mult
|
||
Else
|
||
Index = IBS * (40 * IBS2) / (IBS + 40 * IBS2) / Mult //IBS权重为40,IBS//40*IBS2再*1/Mult
|
||
End If
|
||
End If
|
||
``` |