DDS(Direct Digital Synthesis) 原理
根据傅里叶变换可知——任何周期信号都可以分解为一系列正弦或余弦信号之和。
一个正弦信号的时域表达式为:
s
(
t
)
=
A
s
i
n
(
2
π
f
c
t
+
θ
0
)
s(t)=Asin(2\pi f_c t +\theta_0)
s(t)=Asin(2πfct+θ0)
其相位为表达式为:
Φ
(
t
)
=
2
π
f
c
t
+
θ
0
\Phi(t)=2\pi f_c t + \theta_0
Φ(t)=2πfct+θ0
根据相位将一个正弦信号分成16份,则每一个相位对应一个幅值,如下图:
将相位和幅值一一对应存储起来,则可以通过产生依次不同相位生成正弦信号。
下图是DDS结构:
相位控制字:即相位偏移量,又叫POFF。通过设置相位控制字可以确定初始相位的偏移。
相位是以系数
m
o
d
u
l
u
s
modulus
modulus为周期,即
0
∼
(
m
o
d
u
l
u
s
−
1
)
0\sim(modulus-1)
0∼(modulus−1)表示
0
∼
360
0\sim360
0∼360度。这个系数下面称为
p
h
a
s
e
_
m
o
d
u
l
u
s
phase\_modulus
phase_modulus,则推算出相位控制字的公式为:
P
O
F
F
=
p
h
a
s
e
×
p
h
a
s
e
_
m
o
d
u
l
u
s
360
POFF=\frac{phase\times phase\_modulus}{360}
POFF=360phase×phase_modulus
p
h
a
s
e
phase
phase:即为想要输出的相位,或者说与默认值得相位差,这里输入
0
∼
360
0\sim360
0∼360即可.
p
h
a
s
e
_
m
o
d
u
l
u
s
phase\_modulus
phase_modulus:相位系数为
2
p
h
a
s
e
_
w
i
d
t
h
−
1
2^{phase\_width}-1
2phase_width−1。
p
h
a
s
e
_
w
i
d
t
h
phase\_width
phase_width:即相位位宽,在IP生成后的
s
u
m
m
a
r
y
summary
summary界面可以查到。
频率控制字:即相位增量(每隔几个相位读取一次),又叫PINC。其公式为:
Δ
θ
=
f
o
u
t
×
2
B
θ
(
n
)
f
c
l
k
\Delta\theta=\frac{f_{out}\times 2^{B_{\theta{(n)}}}}{f_{clk}}
Δθ=fclkfout×2Bθ(n)
f
o
u
t
=
f
c
l
k
×
Δ
θ
2
B
θ
(
n
)
f_{out}=\frac{f_{clk}\times \Delta\theta}{2^{B_{\theta{(n)}}}}
fout=2Bθ(n)fclk×Δθ
f
o
u
t
f_{out}
fout:即想要输出的频率;
B
θ
(
n
)
B_{\theta{(n)}}
Bθ(n)为频率精度的位数,其计算公式如下
B
θ
(
n
)
=
⌈
log
2
f
c
l
k
Δ
f
⌉
B_{\theta{(n)}}=\left \lceil \log_2{\frac{f_{clk}}{\Delta{f}}} \right \rceil
Bθ(n)=⌈log2Δffclk⌉
f
c
l
k
f_{clk}
fclk:即输入IP的时钟,也是这个信号的采样时钟;
Δ
f
\Delta f
Δf:频率精度,即IP核设置钟的“Frequency Resolution”(频率分辨率)
相位累加器:相位累加器是DDS的核心,其功能就是完成DDS实现原理中的相位累加功能(频率控制字用于控制输出频率)。
相位寄存器:保证当频率字改变时不会干扰相位累加器的工作。
正弦查询表:相位、幅值一一对应关系就好比存储器中地址和存储内容的关系,如果把一个周期内每个相位对应的幅度值存入存储器当中,那么对于任意频率的正弦信号,在任意时刻,只要已知相位Φ(t),也就知道地址,就可通过查表得到s(t)
DAC: 数模转换
LPF: 低通滤波
处理过程如图所示: