电子竞赛6——基于DDS的正弦波发生器

news2025/2/27 4:49:40

前言

作为电子系统必不可少的信号源,在很大程度上决定了系统的性能, 因而常称之为电子系统的“心脏”。传统的信号源采用振荡器, 只能产生少数几种波形,自动化程度较低,且仪器体积大,灵活性与准确度差。而现在要求信号源能产生波形的种类多、频率高,而且还要体积小、可靠性高、操作灵活、使用方便及可由计算机控制。

直接数字频率合成(DDS)是近年来发展起来的一种新的频率合成技术,其主要优点是相对带宽很大,频率转换时间极短(可小于20 ns),频率分辨率很高,全数字化结构便于集成,输出相位连续可调,且频率、相位和幅度均可实现程控。

DDS建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值数字化后存入存储器作为查找表,然后通过查表读取数据,再经D/A转换器转换为模拟量,将保存的波形重新合成出来。DDS与基于PLL的频率合成器相比具有简便、精确、快速、廉价和灵活等优点。

DDS 能够与计算机技术紧密结合在一起,克服了模拟频率合成和锁相频率合成等传统频率合成技术电路复杂、设备体积较大、成本较高的不足,因此它是一种很有发展前途的频率合成技术。DDS 技术现已在接收机本振、信号发生器、通信系统、雷达系统等方面得到广泛应用。数字频率合成器作为一种信号产生装置己经越来越受到人们的重视,它可以根据用户的要求产生相应的波形,具有重复性好、实时性强等优点,己经逐步取代了传统的函数发生器。本文的目的是设计开发出一个能产生正弦波的信号源,直接数字频率合成技术是研制该系统的关键技术。

1 系统设计

1.1设计要求

技术指标:

(1)输出波形:正弦函数(改变存储器波形数据可实现任意函数波形发生器)。

(2)输出电压峰峰值:10V。

(3)输出频率:80Hz—5120Hz

(4)分辨率:80Hz

二个按钮分别用来选择增减频率字。

四个数码管显示输出的当前频率。

1.2方案论证

DDS基本原理框图如图1.2.1所示:它主要由相位累加器、波形存储器、D/A 转换器和低通滤波器构成。

DDS基本原理框图

图1.2.1

DDS 工作时,在时钟脉冲Fs的控制下对频率控制字X 用累加器进行处理以得到相应的相位码,然后由相位码寻址波形存储器进行相位码―幅度编码变换,再经过D/A 数模变换器得到相应的阶梯波,最后经过低通滤波器对阶梯波进行平滑处理即可得到由频率控制字X决定的频率可调的输出波形。参考频率源一般是高稳定的晶体振荡器,用于DDS 中各部件的同步工作,因此DDS 输出的合成信号频率稳定度与晶体振荡器是相同的。在标准频率参考源的控制下,频率控制字X可决定相应的相位增量,相位累加器则以步长X进行线性累加,相位累加器积满时就会产生一次溢出,从而完成一个周期性动作,这个动作周期即是DDS合成信号的一个周期。

在使用FPGA 设计DDS 时,要在满足系统要求和保持DDS 原有优点的基础上,尽量减少硬件复杂性,降低电路的面积和功耗,提高芯片速度。综合以上考虑,所设计DDS 的系统结构框图如图1.2.2 所示:

系统结构框图

图1.2.2

取时钟频率为输出正弦波最高频率的4倍。即Fclk=4*Fmax=4*5120=20480Hz。由于使用的FPGA芯片的晶振频率为16.384MHz,所以需要对其进行分频操作,地址范围Ymax=Fclk/F=20480/80=256。因此对每个正弦波采样256点。假设波峰为FFH,波谷为00H,每个采样点的取值可由公式Y=128*Sin(2π*)+128算出。

2 单元电路设计

2.1 FPGA实验板

FPGA实验板上存储了256个采样值并输出给后级的DAC电路。同时通过2个按键和4位数码管实现频率字增减和显示。芯片使用ALTERA的EP1C6T144C8N。利用其丰富的I /O 资源, 并行处理数据。具有高密度、高速度、多功能、低功耗、设计灵活方便、可反复编程等特点。

2.2 DAC0832模块

DAC0832芯片以其价格低廉、接口简单、转换控制容易等优点,在嵌入式应用系统中得到广泛的应用。本设计中,DAC0832把FPGA实验板输出的8路数字信号转换成模拟信号,原理图如图2.2.1所示:

DAC0832

图2.2.1

D/A转换结果采用电流形式输出。若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。

2.3三阶低通滤波器

DAC0832模块输出的信号含有高次谐波分量,需要用滤波器滤除。本设计采用三阶低通滤波器,该滤波器由一个二阶巴特沃斯低通滤波器和一个一阶无源RC低通滤波器组成。其原理图如图2.3.1所示:

三阶低通滤波器

图2.3.1

取截止频率略高于一次谐波频率(5.4KHz),由公式Fc1=,Fc2=,计算得R1=R2=1.8K,C1=C3=6800p,C2=0.039u,R3=4.3K

3 软件设计

3.1软件工作流程图

软件工作流程图如图3.1.1所示

图 3.1.1

程序综合报告

4 系统调试

采用分模块调试的方法,先观察FPGA实验板上数码管是否正常显示,按键能否增减频率字,然后用示波器测是否有输出信号。再接上DAC0832模块,看DAC_OUT输出端是否输出阶梯形状的波形,如果波形有出入,则是程序的问题。

程序修改后。把DAC_OUT接到三阶低通滤波器输入端,看输出端是否为正弦波,若波形有棱角或顶部尖锐,说明滤波器对高次谐波分量的衰减还不够,改变滤波器中的元件参数,直到输出正确的正弦波。

观察示波器测得的波形,频率误差极小,波形无失真,满足课题要求。

总结

通过这个课题使我们掌握了DDS的工作原理以及优势。与传统正弦波振荡器相比,DDS的精度更高,抗干扰能力强,修改波形时无需重新设计电路,只要修改采样点的电压值即可。相对于基于PLL的频率合成器,DDS的结构更简单,设计周期更短。

由于所用FPGA的晶振频率远比输出波形高,可加大采样频率,使用更高位数的DAC芯片,进一步提高输出波形的频率分辨率。除此以外,若想要获得更多波形,可以输入其采样值,然后设计一个波形切换功能。也可以对输出的正弦波进行信号处理,获得其他的波形。

参考文献

[1] 薛文 DDS 任意波形发生器的设计与实现[D]。南京:南京理工大学,2004。22~31。

[2] 韩军功 基于DDS 的任意波形发生器的研制[D]。西安:西安电子科技大学,2002。

[3] 卢毅,赖杰 VHDL 与数字电路设计[M]。北京:科学出版社,2001。

附录

元器件清单

FPGA实验板 x1

芯片:LM324 x1, DAC0832 x1

电阻:1k x2, 1.8k x2

电容:30p x1, 6800pf x2, 0.01uf x1, 0.039uf x1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1841612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐一款功能强大的显示器!

最近在写项目开发文档,经常需要几个界面来回切换,真的深刻感受到了一台外接显示器对一名程序员来说有多重要了,画功能流程图的时候嫌弃自己的笔记本屏幕不够大,看代码的时候又在想要是有个旋转屏就好了,来回切换界面的…

【OpenHarmony开发】自定义系统应用之实践

前言 OpenHarmony系统应用是指预装在OpenHarmony操作系统中的应用程序,也称为系统应用。这些应用程序通常由操作系统开发者开发,包括系统设置、电话、短信、浏览器、相机、音乐、视频等常用应用程序。这些应用程序通常具有更高的权限和更深入的系统集成…

看到漂亮的UI设计,就挪不开眼,还有救吗?

在App设计中,瓷片区(Tile Area)是指用于展示信息或功能的独立区域。瓷片区可以被设计成具有不同的形状、大小、颜色和内容。以下是瓷片区的一些作用: 信息展示: 瓷片区可以用于显示重要的信息,如最新消息、…

uni-app 表格tr添加点击事件

首先找到uni.tr这个组件的页面,路径uni_modules/uni-table/components/uni-tr/uni-tr.vue 然后添加点击事件 在你的表格页面就可以添加点击事件了

电脑C盘满了怎么清理?5招为您释放电脑空间!

“我的电脑使用了一段时间了,不知道是不是因为内存满了,现在很多功能都没办法使用。有什么方法可以清理c盘空间且不误删重要文件的吗?” 当我们打开电脑,发现系统提示C盘空间不足,或者电脑运行变得缓慢时,很…

LabVIEW电磁超声热态金属在线缺陷检测系统

LabVIEW软件开发的电磁超声热态金属在线缺陷检测系统针对极端高温环境下的金属材料,进行实时、无损的缺陷检测,具有高精度和高可靠性,能够显著提高材料质量控制的效率和准确性。 项目背景 随着工业技术的发展,高温环境下的金属材…

高德地图轨迹回放/轨迹播放

前言 本篇文章主要介绍高德地图的轨迹回放或播放的实现过程,是基于vue2实现的功能,同时做一些改动也是能够适配vue3的。其中播放条是用的是element UI中的el-slider组件,包括使用到的图标也是element UI自带的。可以实现轨迹的播放、暂停、停…

这三种电容在PCB设计中怎么摆放?

电容在高速 PCB 设计中起着重要的作用,通常也是 PCB 上用得多的器件。在 PCB 中,电容通 常分为滤波电容、去耦电容、储能电容等。 1 电源输出电容,滤波电容 我们通常把电源模块输入、输出回路的电容称为滤波电容。简单理解就是,…

56岁张卫健前任貌突然回春大进化?自曝婚礼前夕流产

现年56岁的江欣燕于1985年以18岁之龄参加第4届新秀歌唱大赛入行,曾拍过多部无线经典电视剧,包括《娱乐插班生》、《同事三分亲》及《女人俱乐部》等。现时甚少作幕前演出的江欣燕日前在社交平台上载分享了新短片,当中更以Deep V上阵&#xff…

Nacos 2.x 系列【14】临时实例、永久实例

文章目录 1. 概述2. 注册实例2.1 SDK2.2 Open API2.3 Spring Cloud 3. 临时实例4. 永久实例 1. 概述 Nacos 提供了两种服务类型供用户注册实例时选择: 临时实例:只是临时存在于注册中心中,会在服务下线或不可用时被注册中心剔除&#xff0c…

HTML基本标签使用【超链接标签、表格标签、表单标签、input标签】

目录 一、基本介绍1.1 概念1.2 HTML的核心特点 二、HTML基本标签三、超链接标签四、表格标签✌<table> 标签属性✍<tr> 标签属性✌ <td> 和 <th> 标签属性演示注意事项 五、表单标签综合应用 最后 一、基本介绍 1.1 概念 HTML&#xff0c;全称为超文…

AutoDL Python实现 自动续签 防止实例过期释放 小脚本 定时任务 apscheduler requests

背景介绍 平常对模型进行训练、微调的时候&#xff0c;我在 AutoDL 有一台主机。 但是有些主机环境我配置好了&#xff0c;又不想让它过期&#xff0c;可能过段时间还会再用。 我一不留神就会超过15天&#xff0c;导致我的机器给释放了很难受。 所以写了一个Python的小脚本&…

玩手游多开还停留在模拟器阶段?不如试试云手机

在手游的世界里&#xff0c;尤其是回合制和资源类游戏&#xff0c;采用多开账号以获取更多游戏资源或者体验不同的游戏策略&#xff0c;是许多玩家的需求。但其实&#xff0c;目前大多数玩家在实现手游多开时&#xff0c;还停留在使用模拟器的阶段。但实际上&#xff0c;有一种…

直播平台美颜技术分析:视频美颜SDK功能实现原理

本篇文章&#xff0c;笔者将深入分析视频美颜SDK的功能实现原理&#xff0c;探讨其在直播平台中的应用。 一、视频美颜技术概述 通过这些功能&#xff0c;用户可以在直播过程中呈现更加理想的自己&#xff0c;从而提高观众的观看体验和互动积极性。 二、视频美颜SDK的功能 1…

Java多线程基础知识-1

什么是程序&#xff1f; 可执行的文件。 什么是进程&#xff1f; 进程是程序一次动态执行的过程&#xff0c;它是资源分配与管理的基本单位。 什么线程&#xff1f; 线程是进程创建的&#xff0c;它是调度和执行的基本单位。线程不拥有系统资源&#xff0c;只拥有一点必不可…

YOLOv10训练自己的数据集(图像目标检测)

目录 1、下载代码 2、环境配置 3、准备数据集 4、yolov10训练 可能会出现报错&#xff1a; 1、下载代码 源码地址&#xff1a;https://github.com/THU-MIG/yolov10 2、环境配置 打开源代码&#xff0c;在Terminal中&#xff0c;使用conda 创建虚拟环境配置 命令如下&a…

Echarts各类图表常用配置项说明,附示例代码

前言&#xff1a; 哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家分享【 Echarts各类图表常用配置项说明 】&#xff0c;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大家&#xff0…

剖析影响大米码垛机性能的关键因素

在现代化粮食加工产业链中&#xff0c;大米码垛机以其高效、精准的自动化操作&#xff0c;成为提升生产效率、降低劳动强度的得力助手。然而&#xff0c;要想充分发挥大米码垛机的性能优势&#xff0c;我们必须深入了解影响其性能的关键因素。星派将深入剖析这些关键因素&#…

Vue的学习(6.20)

一、Vue的特点 1.采用组件化模式&#xff08;xxx.vue包含htmlcssjs&#xff09; 2.声明式编码&#xff0c;编码人员无需直接操作DOM&#xff0c;提高开发效率 3.使用虚拟DOM优秀的DIFF算法&#xff08;DIFF是用于新旧虚拟DOM的比较&#xff09;&#xff0c;尽量复用DOM节点 …

数学建模理论学习:线性规划模型

三要素&#xff1a;目标函数、约束条件&#xff08;s.t.&#xff09;、决策变量&#xff08;x&#xff09; 目标函数&#xff1a;z ax1 bx2 cx3 ... 其中c为一个序列&#xff0c;从左到右依次从x1到xn的系数 解决下面的线性规划问题&#xff1a; % 目标函数系数&#xf…