基于FPGA的DDS直接数字频率合成器设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010 年第 6 期 (总第 130 期)
大众科技 DA ZHONG KE JI
No.6,2010 (Cumulatively No.130)
基于 FPGA 的 DDS 直接数字频率合成器设计与实现
赵翰林
(电子科技大学,四川 成都 610054)
【摘 要】直接数字频率合成器具有变频范围广、频率步进小、幅度和频率精度高、调谐方便等优点。对其进行了理论分
6.低通滤波器 对 D/A 输出的阶梯波 S(t)进行频谱分析,可知 S(t) 中除主频 f0 外,还存在分布在 fc,2fc……两边 f0 处的非谐波 分量,幅值包络为辛格函数。因此,为了取出主频 f0,必须 在 D/A 转换器的输出端接入截止频率为 fc/2 的低通滤波器。
(二)系统设计与实现
1.参数选取 设条件 N=10,D=10,fc=125 MHz,可知: (1)存储器容量为 1024×10 bits=10K (2)频率步进Δf=fo min=fc/2N≈122.07 KHz,此时 K=1 (3)最大频率 fo max=fc/2=62.5 MHz。然而,此时每周 期只采样 2 点,难以保证输出精度。为了保证输出精度,规 定最低每周期采样 8 点,此时 K=2N/8=128,则:fo max=K× fc/2N=15.625 MHz (4)相位步进 2π/1024 综上所述,波形存储器存储 1024 个 10 位采样点;频率 控制 1≤K≤128,频率步进(最小输出频率)122.07 KHz,最 大输出频率 15.625 MHz;相位控制 1≤P≤1024,步进 2π/1024。 系统设计 2.波形存储 本设计中波形存储为连续存储,对正弦波进行采样利用 Quartus 制造一个 ROM 表,进行查值操作,在波形的存储方法 上可以有两种方案,一个是对正弦波从 0 到 2π进行采样,在 这次设计和以上的参数选取上均基于这种方案,这个方案的 优点是实现简单,思路清晰;另一种方案是对正弦波从 0 到π 进行采样,由于正弦波的前半周期与后半周期的幅值绝对值 对应相等,只差了一个符号,利用这种特性,只要在 ROM 表 的输出后加上一个符号判断即可实现正弦波的输出,这样可 以节省一半的存储空间,但实现上稍复杂。 正弦波幅值的获得,可通过 C 语言编程得到,将 C 程序 所得结果导出到一个文件中便可得到正弦波幅值。 3.系统设计 由波形存储模式,设计系统模型框图 4:
- 27 -
还可以在训练时增加噪声信号的数量。 7.网络应用 把从光学器件采集来的图像信号的矩阵,输入训练好的
网络进行识别,其结果如图 2、3 所示:
图 2 光学器件采集来的字母信号
图 3 识别后的字母 从图中可以看出,网络正确的识别出了这些字母,证明 网络设计是成功的。
(四)结语
通过以上的介绍,已经基本了解了 BP 算法以及它的优点 和缺点,BP 算法存在的缺陷是:收敛速度慢和容易陷入局部 的最值点。针对此问题,我们还需要设计一种改进的 BP 算法, 从而能够从一定程度上来改进目前算法所存在的问题。
图 2 累加器框图 相位累加器由 N 位加法器与寄存器级联构成。每来一个 时钟脉冲 fc,加法器将频率控制字 K 与寄存器输出累加相位 数据相加,再把相加后的结果送到寄存器的数据输入端。寄 存器将加法器在上一个时钟的作用后所产生的相位数据反馈 到加法器的输入端,以使加法器在下一个时钟的作用下继续 与频率控制字进行相加。这样,相位累加器在时钟的作用下, 进行相位累加。当累加器累加满量时就会产生一次溢出,完 成一个周期性动作。 3.控制相位的加法器 通过改变相位控制字 P 可以控制输出信号的相位参数。 令相位加法器的字长为 N,当相位控制字由 0 跃变到 P(P≠0) 时,波形存储器的输入为相位累加器的输出与相位控制字 P 之和,因而其输出的幅度编码相位会增加 P/2N,从而使最后 输出的信号产生相移。 4.波形存储 用相位累加器输出的数据作为波形存储器的取样地址, 进行波形的相位—幅值转换,即可在给定的时间上确定输出 的波形的抽样幅值。N 位的寻址 ROM 有 D 位数据,则 2N 个样 值的幅值以 D 位二进制数值固话在 ROM 中,按照地址的不同 可以输出相应的相位的正弦信号幅值。 相位—幅度变换原理图如图 3 所示:
【参考文献】 [1] 罗朝霞,高书莉.CPLD/FPGA 设计及应用[M].民邮电出版
社,2007. [2] 王诚,吴继华,范丽珍,薛宁,薛小刚.Altera FPGA/CPLD 设计
(基础篇)[M].人民邮电出版社,2005. [3] 周俊峰,陈涛.基于 FPGA 的直接数字频率合成器的设计和
实现[J].电子技术应用,2001. [4] 侯伯亨,顾新.VHDL 硬件描述语言与数字逻辑电路设计
4.系统实现(所有程序代码均附加在附录中) 本次实现系统的环境如下: (1)硬件:FPGA 芯片: Cyclone EP1C6Q240 (2)软件:Quartus II + Visual C++ 各端口说明: (1)频率控制字:10 位,最大 128(0010000000); (2)相位控制字:10 位,0 无相移,512(1000000000) 位移π;
直接数字频率合成器(Direct Digital Synthesizer) 是从相位的概念出发直接合成所需波形的一种频率合成技 术。一个直接数字频率合成器由相位累加器、加法器、波形 存储 ROM、D/A 转换器和低通滤波器(LPF)构成。DDS 的原理 框图如图 1 所示:
图 1 DDS 的原理框图 其中 K 为频率控制字、P 为相位控制字、fc 为参考时钟频 率,N 为相位累加器的字长,D 为 ROM 数据位及 D/A 转换器的 字长。相位累加器在时钟 fc 的控制下以步长 K 作累加,输出 的 N 位二进制码与相位控制字 P 相加后作为波形 ROM 的地址, 对波形 ROM 进行寻址,波形 ROM 输出 D 位的幅度码 S(n)进 D/A 转换器变成阶梯波 S(t),再经过低通滤波器平滑后就可 以得到合成的信号波形。合成的信号波形形状取决于波形 ROM 中存放的幅度码,因此用 DDS 可以产生任意波形。这里我们 将用 DDS 实现正弦波的合成,并通过 FPGA 芯片实现其硬件电 路。 笔者主要进行 DDS 软件方面的设计,所以以下原理与仿 真以软件方面为主。 1.频率预置与调节电路 K 被称为频率控制字,也加相位增量。DDS 方程为:f0=fc ×K/2N,f0 为输出频率,fc 为时钟频率。当 K=1 时,DDS 输出 最低频率(也即频率分辨率)为 fc/2N,而 DDS 的最大输出频 率由 Nyquist 采样定理决定,即 fc/2,也就是说 K 的最大值 为 2N-1。因此,只要 N 足够大,DDS 可以得到很细的频率间隔。 实际中 DDS 的最高输出频率由允许输出的杂散水平决定,一般 取值为 f0 ≤40% fc。要改变 DDS 的输出频率,只要改变频率 控制字 K 即可。 2.累加器(图 2)
图 3 相位—幅度变换原理图 5.D/A 转换器 D/A 转换器的作用是把合成的正弦波数字量转换成模拟 量。正弦幅度量化序列 S(n)经 D/A 转换后变成了包络为正
【收稿日期】2010-03-20 【作者简介】赵翰林,男,四川广安人,电子科技大学在读硕士生,研究方向为电路与系统。
- 25 -
弦的阶梯波 S(t)。需要注意的是,频率合成器对 D/A 转换器 的分辨率有一定的要求,D/A 转换器的分辨率越高,合成的正 弦波 S(t)台阶数就越多,输出的波形的精度也就越高。
转换为模拟显示为:
图6 仿真测得正弦波频率为:1/(13.971us-5.791us)≈ 122.249KHz,与计算参数相近,误差来自于仿真测量时的显 示误差。 (2)最大步长的正弦波(图 7) 频率控制字:0010000000 相位控制字:0000000000
转换为模拟显示为:
图 4 DDS 系统模型
[M].西安电子科技大学出版社,1997. [5] Altera.Cyclone Device Handbook。Altera,2008.
(上接第 65 页) (1)应用理想的输入信号对网络进行训练,直到其均方
差达到精度为止。 Hale Waihona Puke Baidu2)应用 10 组理想信号和带有噪声的信号对网络进行
训练。在进行训练时,同时对两组相同的无噪声信号样本进 行训练,目的是确保网络能够正确分辨理想信号。
进行了上述训练之后,网络对无噪声信号进行辨识的时 候可能也会采用有噪声信号的方法,这样就会产生不必要的 资源浪费。可以再次训练网络,这次就只需要应用理想信号 进行训练,从而保证在输入理想字母信号时,网络具备良好 的辨识能力。
6.系统性能 为了测量所设计的神经网络模式识别系统的可靠性,应 用上百个输入向量加入了不同的噪声信号进行了测试。并绘 制网络识别错误与噪声信号的比较曲线。加入网络输入向量 的噪声均值为 0,标准误差范围为 0~0.5。在每个噪声级别 上,分别利用 100 个不同的噪声信号进行试验,并将噪声信 号加到每个字母向量上,然后通过仿真计算网络输出,将输 出通过竞争传递函数,保证输出向量 26 个元素中有一个值为 1,其余为 0。网络经过有噪声信号输入样本训练后,其容错 能力有了明显的增强。当输入声信号的平均值为 0 或者 0.05 时,网络能够正确识别,而当噪声信号加强到平均值为 0.2 时,两个网络都开始产生识别误差。如果要达到更高的精度 要求,可以增加网络训练时间或者增加网络隐层神经元数目。 当然,可以将输入的字母向量由原来的 5*7 网格加大为 10*14 的网格形式。如果网络要求对于噪声情号有更高的容错性,
波形存储器: 利用 LPM_ROM 实现 ROM 表的步骤是:首先产生一个*.mif 文件;然后使用 Altera 的 MegaWizard Plug-In Manager 定 制一个 LPM_ROM。 最后完成的原理图如图 5(由 Quartus II 生成):
图5 5.系统仿真 (1)最小步长的正弦波(图 6) 频率控制字:0000000001 相位控制字:0000000000
转换为模拟显示为:
图9
(三)总结
本设计采用现场可编程门阵列(FPGA)实现了一个直接 数字频率合成器,主要由累加器、加法器、寄存器、存储器 组成。直接数字频率合成器具有变频范围广、频率步进小、 幅度和频率精度高、调谐方便等优点。本系统允许频率调谐、 相位调谐,可以产生正弦、余弦信号。具有设计简单可靠、 调谐方便等优点。不过频率步进较大、步长大时波形精度较 差,但这些不是系统设计的缺陷,可以通过增加控制字位数、 增大存储器容量来简单解决,亦可以改变波形存储的方式, 例如对正弦从 0 到π进行采样甚至从 0 到π/2 进行采样,只要 在寄存器输出后加上一个相位判断,即可在同样的步进与波 形精度下减小存储器的容量要求(分别可减小 1/2 和 1/4), 换句话说,在同样的存储器的容量下便可以减小频率步进与 提高波形精度。
图7
仿真测得正弦波频率为:2/(20.387867us-20.26us)≈ 15.6413MHz,与计算参数相近,误差来自于仿真测量时的显 示误差。
3.最小步长的余弦波(图 8) 频率控制字:0000000001 相位控制字:0100000000
- 26 -
转换为模拟显示为:
图8 4.最大步长的余弦波(图 9) 频率控制字:0010000000 相位控制字:0100000000
析,并采用 FPGA 技术实现了这样一个系统,该系统允许频率调谐、相位调谐,可以产生正弦、余弦信号,具有设计简单可靠、
调谐方便等优点。
【关键词】直接频率合成;可调谐;小步进;FPGA
【中图分类号】TN74
【文献标识码】A
【文章编号】1008-1151(2010)06-0025-03
(一)直接数字频率合成技术介绍
大众科技 DA ZHONG KE JI
No.6,2010 (Cumulatively No.130)
基于 FPGA 的 DDS 直接数字频率合成器设计与实现
赵翰林
(电子科技大学,四川 成都 610054)
【摘 要】直接数字频率合成器具有变频范围广、频率步进小、幅度和频率精度高、调谐方便等优点。对其进行了理论分
6.低通滤波器 对 D/A 输出的阶梯波 S(t)进行频谱分析,可知 S(t) 中除主频 f0 外,还存在分布在 fc,2fc……两边 f0 处的非谐波 分量,幅值包络为辛格函数。因此,为了取出主频 f0,必须 在 D/A 转换器的输出端接入截止频率为 fc/2 的低通滤波器。
(二)系统设计与实现
1.参数选取 设条件 N=10,D=10,fc=125 MHz,可知: (1)存储器容量为 1024×10 bits=10K (2)频率步进Δf=fo min=fc/2N≈122.07 KHz,此时 K=1 (3)最大频率 fo max=fc/2=62.5 MHz。然而,此时每周 期只采样 2 点,难以保证输出精度。为了保证输出精度,规 定最低每周期采样 8 点,此时 K=2N/8=128,则:fo max=K× fc/2N=15.625 MHz (4)相位步进 2π/1024 综上所述,波形存储器存储 1024 个 10 位采样点;频率 控制 1≤K≤128,频率步进(最小输出频率)122.07 KHz,最 大输出频率 15.625 MHz;相位控制 1≤P≤1024,步进 2π/1024。 系统设计 2.波形存储 本设计中波形存储为连续存储,对正弦波进行采样利用 Quartus 制造一个 ROM 表,进行查值操作,在波形的存储方法 上可以有两种方案,一个是对正弦波从 0 到 2π进行采样,在 这次设计和以上的参数选取上均基于这种方案,这个方案的 优点是实现简单,思路清晰;另一种方案是对正弦波从 0 到π 进行采样,由于正弦波的前半周期与后半周期的幅值绝对值 对应相等,只差了一个符号,利用这种特性,只要在 ROM 表 的输出后加上一个符号判断即可实现正弦波的输出,这样可 以节省一半的存储空间,但实现上稍复杂。 正弦波幅值的获得,可通过 C 语言编程得到,将 C 程序 所得结果导出到一个文件中便可得到正弦波幅值。 3.系统设计 由波形存储模式,设计系统模型框图 4:
- 27 -
还可以在训练时增加噪声信号的数量。 7.网络应用 把从光学器件采集来的图像信号的矩阵,输入训练好的
网络进行识别,其结果如图 2、3 所示:
图 2 光学器件采集来的字母信号
图 3 识别后的字母 从图中可以看出,网络正确的识别出了这些字母,证明 网络设计是成功的。
(四)结语
通过以上的介绍,已经基本了解了 BP 算法以及它的优点 和缺点,BP 算法存在的缺陷是:收敛速度慢和容易陷入局部 的最值点。针对此问题,我们还需要设计一种改进的 BP 算法, 从而能够从一定程度上来改进目前算法所存在的问题。
图 2 累加器框图 相位累加器由 N 位加法器与寄存器级联构成。每来一个 时钟脉冲 fc,加法器将频率控制字 K 与寄存器输出累加相位 数据相加,再把相加后的结果送到寄存器的数据输入端。寄 存器将加法器在上一个时钟的作用后所产生的相位数据反馈 到加法器的输入端,以使加法器在下一个时钟的作用下继续 与频率控制字进行相加。这样,相位累加器在时钟的作用下, 进行相位累加。当累加器累加满量时就会产生一次溢出,完 成一个周期性动作。 3.控制相位的加法器 通过改变相位控制字 P 可以控制输出信号的相位参数。 令相位加法器的字长为 N,当相位控制字由 0 跃变到 P(P≠0) 时,波形存储器的输入为相位累加器的输出与相位控制字 P 之和,因而其输出的幅度编码相位会增加 P/2N,从而使最后 输出的信号产生相移。 4.波形存储 用相位累加器输出的数据作为波形存储器的取样地址, 进行波形的相位—幅值转换,即可在给定的时间上确定输出 的波形的抽样幅值。N 位的寻址 ROM 有 D 位数据,则 2N 个样 值的幅值以 D 位二进制数值固话在 ROM 中,按照地址的不同 可以输出相应的相位的正弦信号幅值。 相位—幅度变换原理图如图 3 所示:
【参考文献】 [1] 罗朝霞,高书莉.CPLD/FPGA 设计及应用[M].民邮电出版
社,2007. [2] 王诚,吴继华,范丽珍,薛宁,薛小刚.Altera FPGA/CPLD 设计
(基础篇)[M].人民邮电出版社,2005. [3] 周俊峰,陈涛.基于 FPGA 的直接数字频率合成器的设计和
实现[J].电子技术应用,2001. [4] 侯伯亨,顾新.VHDL 硬件描述语言与数字逻辑电路设计
4.系统实现(所有程序代码均附加在附录中) 本次实现系统的环境如下: (1)硬件:FPGA 芯片: Cyclone EP1C6Q240 (2)软件:Quartus II + Visual C++ 各端口说明: (1)频率控制字:10 位,最大 128(0010000000); (2)相位控制字:10 位,0 无相移,512(1000000000) 位移π;
直接数字频率合成器(Direct Digital Synthesizer) 是从相位的概念出发直接合成所需波形的一种频率合成技 术。一个直接数字频率合成器由相位累加器、加法器、波形 存储 ROM、D/A 转换器和低通滤波器(LPF)构成。DDS 的原理 框图如图 1 所示:
图 1 DDS 的原理框图 其中 K 为频率控制字、P 为相位控制字、fc 为参考时钟频 率,N 为相位累加器的字长,D 为 ROM 数据位及 D/A 转换器的 字长。相位累加器在时钟 fc 的控制下以步长 K 作累加,输出 的 N 位二进制码与相位控制字 P 相加后作为波形 ROM 的地址, 对波形 ROM 进行寻址,波形 ROM 输出 D 位的幅度码 S(n)进 D/A 转换器变成阶梯波 S(t),再经过低通滤波器平滑后就可 以得到合成的信号波形。合成的信号波形形状取决于波形 ROM 中存放的幅度码,因此用 DDS 可以产生任意波形。这里我们 将用 DDS 实现正弦波的合成,并通过 FPGA 芯片实现其硬件电 路。 笔者主要进行 DDS 软件方面的设计,所以以下原理与仿 真以软件方面为主。 1.频率预置与调节电路 K 被称为频率控制字,也加相位增量。DDS 方程为:f0=fc ×K/2N,f0 为输出频率,fc 为时钟频率。当 K=1 时,DDS 输出 最低频率(也即频率分辨率)为 fc/2N,而 DDS 的最大输出频 率由 Nyquist 采样定理决定,即 fc/2,也就是说 K 的最大值 为 2N-1。因此,只要 N 足够大,DDS 可以得到很细的频率间隔。 实际中 DDS 的最高输出频率由允许输出的杂散水平决定,一般 取值为 f0 ≤40% fc。要改变 DDS 的输出频率,只要改变频率 控制字 K 即可。 2.累加器(图 2)
图 3 相位—幅度变换原理图 5.D/A 转换器 D/A 转换器的作用是把合成的正弦波数字量转换成模拟 量。正弦幅度量化序列 S(n)经 D/A 转换后变成了包络为正
【收稿日期】2010-03-20 【作者简介】赵翰林,男,四川广安人,电子科技大学在读硕士生,研究方向为电路与系统。
- 25 -
弦的阶梯波 S(t)。需要注意的是,频率合成器对 D/A 转换器 的分辨率有一定的要求,D/A 转换器的分辨率越高,合成的正 弦波 S(t)台阶数就越多,输出的波形的精度也就越高。
转换为模拟显示为:
图6 仿真测得正弦波频率为:1/(13.971us-5.791us)≈ 122.249KHz,与计算参数相近,误差来自于仿真测量时的显 示误差。 (2)最大步长的正弦波(图 7) 频率控制字:0010000000 相位控制字:0000000000
转换为模拟显示为:
图 4 DDS 系统模型
[M].西安电子科技大学出版社,1997. [5] Altera.Cyclone Device Handbook。Altera,2008.
(上接第 65 页) (1)应用理想的输入信号对网络进行训练,直到其均方
差达到精度为止。 Hale Waihona Puke Baidu2)应用 10 组理想信号和带有噪声的信号对网络进行
训练。在进行训练时,同时对两组相同的无噪声信号样本进 行训练,目的是确保网络能够正确分辨理想信号。
进行了上述训练之后,网络对无噪声信号进行辨识的时 候可能也会采用有噪声信号的方法,这样就会产生不必要的 资源浪费。可以再次训练网络,这次就只需要应用理想信号 进行训练,从而保证在输入理想字母信号时,网络具备良好 的辨识能力。
6.系统性能 为了测量所设计的神经网络模式识别系统的可靠性,应 用上百个输入向量加入了不同的噪声信号进行了测试。并绘 制网络识别错误与噪声信号的比较曲线。加入网络输入向量 的噪声均值为 0,标准误差范围为 0~0.5。在每个噪声级别 上,分别利用 100 个不同的噪声信号进行试验,并将噪声信 号加到每个字母向量上,然后通过仿真计算网络输出,将输 出通过竞争传递函数,保证输出向量 26 个元素中有一个值为 1,其余为 0。网络经过有噪声信号输入样本训练后,其容错 能力有了明显的增强。当输入声信号的平均值为 0 或者 0.05 时,网络能够正确识别,而当噪声信号加强到平均值为 0.2 时,两个网络都开始产生识别误差。如果要达到更高的精度 要求,可以增加网络训练时间或者增加网络隐层神经元数目。 当然,可以将输入的字母向量由原来的 5*7 网格加大为 10*14 的网格形式。如果网络要求对于噪声情号有更高的容错性,
波形存储器: 利用 LPM_ROM 实现 ROM 表的步骤是:首先产生一个*.mif 文件;然后使用 Altera 的 MegaWizard Plug-In Manager 定 制一个 LPM_ROM。 最后完成的原理图如图 5(由 Quartus II 生成):
图5 5.系统仿真 (1)最小步长的正弦波(图 6) 频率控制字:0000000001 相位控制字:0000000000
转换为模拟显示为:
图9
(三)总结
本设计采用现场可编程门阵列(FPGA)实现了一个直接 数字频率合成器,主要由累加器、加法器、寄存器、存储器 组成。直接数字频率合成器具有变频范围广、频率步进小、 幅度和频率精度高、调谐方便等优点。本系统允许频率调谐、 相位调谐,可以产生正弦、余弦信号。具有设计简单可靠、 调谐方便等优点。不过频率步进较大、步长大时波形精度较 差,但这些不是系统设计的缺陷,可以通过增加控制字位数、 增大存储器容量来简单解决,亦可以改变波形存储的方式, 例如对正弦从 0 到π进行采样甚至从 0 到π/2 进行采样,只要 在寄存器输出后加上一个相位判断,即可在同样的步进与波 形精度下减小存储器的容量要求(分别可减小 1/2 和 1/4), 换句话说,在同样的存储器的容量下便可以减小频率步进与 提高波形精度。
图7
仿真测得正弦波频率为:2/(20.387867us-20.26us)≈ 15.6413MHz,与计算参数相近,误差来自于仿真测量时的显 示误差。
3.最小步长的余弦波(图 8) 频率控制字:0000000001 相位控制字:0100000000
- 26 -
转换为模拟显示为:
图8 4.最大步长的余弦波(图 9) 频率控制字:0010000000 相位控制字:0100000000
析,并采用 FPGA 技术实现了这样一个系统,该系统允许频率调谐、相位调谐,可以产生正弦、余弦信号,具有设计简单可靠、
调谐方便等优点。
【关键词】直接频率合成;可调谐;小步进;FPGA
【中图分类号】TN74
【文献标识码】A
【文章编号】1008-1151(2010)06-0025-03
(一)直接数字频率合成技术介绍