找回密码
 注册
关于网站域名变更的通知
查看: 148|回复: 3
打印 上一主题 下一主题

基于FPGA的DDS设计方案介绍

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-15 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
1、DDS技术简介, I8 P/ M( ]) G! O2 }& l
●随着电子技术的不断发展,传统的频率合成技术逐渐不能满足人们对于频率转换速度、频率分辨率等方面的追求,直接数字频率合成技术应运而生。+ @- Z5 o: l$ L' u  U4 Z
●直接数字频率合成技术(DDS) 是把一系列数据量形式的信号通过D/A转换器转换成模拟量形式的信号合成技术。DDS具有很多优点,比如:频率转换快、频率分辨率高、相位连续、低功耗、低成本与控制方便。
, G$ H0 V& Y4 c/ w7 p% [●DDS技术满足了人们对于速度稳定性的需求,但是在一些控制较为复杂的系统中,DDS专用芯片不能很好的贴合要求。利用现场可编程门阵列(FPGA)实现DDS具有很大的灵活性,基本能满足现在通信系统的使用要求。
0 }# E" q* {, R& O9 Q4 F: B$ O( |+ F; Y
2、DDS结构原理: U: j( l2 H, u. x& q8 \
2.1 基本结构
1 v# S9 T( B6 N1 W) D' P, e' zDDS基本结构框图主要由参考频率源、相位累加器、ROM查找表、DAC转换器、低通滤波器等构成。9 }) t# P; r$ o2 y) ?4 E
  ^4 ?: p- H1 h. t
相位累加器以一定的步长做累加, 而波形函数存储在ROM查找表中, 将相位累加器输出的相位值作为地址,寻找存储在ROM查找表中的波形函数的幅度值,从而完成相位到幅值的转换。其中,参考频率源一般是一个晶体振荡器,要求具有高稳定性,用于DDS中各部件之间的同步。, r, {; [3 F3 l6 T  w+ b% n

9 }5 B8 Z( [4 p* Q  P" F: Z2.2 基本原理
9 l4 ~) H: d6 b8 Y1 E! i + C1 T# P) `8 W7 n9 ]/ R) u
上图为DDS Core结构图,∆θ是相位增量(对应图1中的频率控制字K),B∆θ 为相位累加器的位数,clk是参考时钟(对应图1中的参考频率源),A1、D1构成积分器(相位累加器),θ(n)是相位累加器输出的相位,Q1为量化器,用于将相位累加器位数与查找表地址之间的匹配,ϑ(n)为查找表输入地址,Bϑ(n) 为查找表输入地址位数,T1为查找表。
  q& m, D* Z9 ?  w下面介绍DDS设计过程中常用到的公式,主要是输出频率公式及其变形。
. {( U. B: X" I  B0 l* v; d- f 4 ^! M& f4 u. p

& e  G% B. X3 _0 W* s) K! ]3、基于FPGA的 DDS实现/ L2 A2 ~$ s6 N( @0 V3 j; u+ v
For example:
3 H' r4 T8 `# k) ?: W- H1 H7 w7 Y设计一个参考时钟为100MHz,频率分辨率要求能够达到0.03Hz,输出sin信号频率为5.00000005MHz、查找表地址12位;
- F" a- a3 Z. g2 r. H5 D理论分析:3 ], ]0 r6 `/ ]: W0 Z- o
已知频率分辨率∆f与参考时钟f_clk,带入相位累加器位数公式计算
9 U- r+ n8 h# `+ Z. E1 I% ?    B∆θ = 31.634318
* N1 H$ h+ C, @3 T  I: f由于位数为整数,取整数32,所以实际的频率分辨率为
/ C& j& F; f, `3 |) B! c    ∆f = 0.023283064365386962890625Hz
! G; s- P6 Q4 P) y4 I; m- w9 j将其带入相位增量公式计算,取整数
8 x6 W0 W& v* i6 D2 _2 ~/ Y    ∆θ = 21474836694.7483648≈21474836
2 F- Z5 ?: u9 Q7 \" `相位累加器输出32位,而查找表输入地址为12位,取相位累加器高12位作为查找表输入地址  H' F& ~0 i' _1 h9 }  Q, A
+ J5 Z5 p% E" H; o' ~0 b
3.1 利用RTL实现DDS8 u* t& N7 ?9 C7 |4 U: k# u
使用matlab产生sin⁡(θ)数据,θϵ[0,π],点数为2^12=4096,并保存在FPGA的memory中。7 ]7 A) X0 a, S0 U( f
wid = 12;: }  c' o3 H! P- `8 }6 ^5 i
len = 2^wid;
( X, e; P$ h& J6 tamp = 10000;! _9 G8 o. T0 X* `+ c' G
t=0:2*pi/len:2*pi - 2*pi/len;. r) r3 x; y$ R! g% _, n1 q$ N8 ^- x
y = round(sin(t)*amp);$ b0 Y6 ^1 N8 X: v3 A
plot(y);1 K1 \* L. m1 k$ ^7 T2 ~
相位累加器就是一个积分器,很容易用FPGA实现。最终FPGA仿真结果如下,clk为参考时钟,phase为相位累加器输出,addr为查找表地址,cos_i、sin_q为信号输出。4 v6 W5 T4 X8 Z; r- G6 o( G: U6 [8 @0 @

( Z0 W4 _& W) ]# e+ D/ c

基于FPGA的DDS设计方案.pdf

487.4 KB, 下载次数: 1, 下载积分: 威望 -5

  • TA的每日心情
    开心
    2025-10-31 15:12
  • 签到天数: 1202 天

    [LV.10]以坛为家III

    2#
    发表于 2022-8-15 11:20 | 只看该作者
    不错不错,很是美味且地道,尝鲜一下

    该用户从未签到

    3#
    发表于 2022-8-15 11:30 | 只看该作者
    谢谢楼主,实在是好东西啊

    该用户从未签到

    4#
    发表于 2022-8-15 14:16 | 只看该作者
    不错 是我想要的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-2 07:56 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表