波形发生器如何构建?基于Verilog打造自己的DDS任意波形发生器

波形发生器在各大行业中均有使用,带来了诸多便利。对于波形发生器,小编在往期文章中做过很多介绍。本文中,主要在于探讨波形发生器的实现过程。具体而言,将介绍基于Verilog实现DDS任意波形发生器。如果你是波形发生器的爱好者,疑惑想要了解本文的探讨内容,都不妨继续往下阅读哦。

一、总体方案实现及系统框图

在该DDS电路组成上,包括基准时钟、频率累加器、相位累加器、幅度/相位转换电路。频率累加器对输入信号进行累加运算,产生频率控制数据,相位累加器对代表频率的M位二进制码进行累加运算,产生后面波形存储器所需的查表地址,幅度/相位转换电路实际上就是一个波形存储器,供查表使用,读出数据送人D/A转换器和低通滤波器。

系统设计原理框图如下:

系统设计原理框图

二、系统组成模块简介

1、顶层模块

顶层模块是系统程序的主模块,它负责将fom查找表、相位累加等模块组装在一起,通过调用的关系使它们组合成为一个有机的整体。在顶层模块中,定义了参考时钟的输入,复位端口,波形输出、频率控制字等。

2、相位累加器模块

相位累加器是决定系统性能的关键部分,主要是利用频率控制字和相位控制字来累加出寻址地址。相位累加器在基准频率信号clk的控制下以频率控制字data为步长进行累加运算,产生需要的频率控制数据,在时钟的控制下把累加的结果作为波形存储器ROM的地址,实现对波形存储器ROM的寻址。由于相位累加模块通过C语言实现比较容易,故我们没有单独成立一个模块,而是将它集成到了顶层模块的一个always语句块中:

case(choose_wave) 2‘b00:begin

sin_ena <= 1’b1;

cos_ena <= 1‘b0;

sawtooth_ena <= 1’b0;

triangle_ena <= 1‘b0;

if(ADD_B > 256) ADD_B <= 0; //关键代码,实现相位累加的功能

else ADD_B <= ADD_A + ADD_B;

end

2’b01:begin

cos_ena <= 1‘b1;

sin_ena <= 1’b0;

sawtooth_ena <= 1‘b0;

triangle_ena <= 1’b0;

if(ADD_B > 256) ADD_B <= 0; //关键代码,实现相位累加的功能

else ADD_B <= ADD_A + ADD_B;

end

2‘b10:begin

sin_ena <= 1’b0;

cos_ena <= 1‘b0;

sawtooth_ena <= 1’b1;

triangle_ena <= 1‘b0;

if(ADD_B > 256) ADD_B <= 0; //关键代码,实现相位累加的功能

else ADD_B <= ADD_A + ADD_B;

end

2’b11:begin

sin_ena <= 1‘b0;

cos_ena <= 1’b0;

sawtooth_ena <= 1‘b0;

triangle_ena <= 1’b1;

if(ADD_B > 256) ADD_B <= 0; //关键代码,实现相位累加的功能

else ADD_B <= ADD_A + ADD_B;

end

default:begin

ADD_B <= 9‘b0;

sin_ena <= 1’b0;

cos_ena <= 1‘b0;

sawtooth_ena <= 1’b0;

triangle_ena <= 1‘b0;

end

endcase

在程序中还出现了一个变量(wave_choose)这是一个用来选择所要输出波形的一个变量,通过它可以控制输出的波形种类(正弦波,余弦波,三角波,锯齿波)。但是由于在设计的时候没有考虑到存在负值的影响,导致最后综合的结果不正确,经过询问老师知道修改方法是将rom查找表中所有采样点的电压负值全部抬高,消除负值,但是由于时间的原因没有来得及修改,也不知道方案修改的结果。

3、查找表

本模块实现的是一个rom存贮器,用于存储采样的波形数据,并提供地址查找的功能。具体实现的过程:

1) 首先使用数学工具计算得到波形采样点,生成mif文件

2) 导入数据采样点,给每一个采样点分配地址,并提供外部寻址的接口,此过程可以通过Quartas Ⅱ来辅助完成

由于我们组的设计时在modelsim下进行的,modelsim面向的是仿真,它不会产生所谓的“rom”这种实际的电路,所以我们没有采用这样的方法,而是简单的使用case语句来实现。虽然这样也能得到预期的效果,但是它却没有真正的生成一个“rom”,根据我组的综合结果来看,使用case语句生成的是一个与输入相关的复杂的逻辑网络,而不是rom那样有一定规则的电路结构。一下是我们使用C语言产生采样点的程序:

void main(){ int i,j = 0;;

FILE *fp;

fp=fopen(“data.txt”,“w”);

for(i=0;i<=256;i++){

//j=255*sin(2*3.14159/256*i)+0.5;//四舍五入

fprintf(fp,“i=%d,\tj=%d\n”,i,j); }

fclose(fp); }

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

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

相关文章

深度解析支持CRM系统集成的银行服务机器人技术与主流产品评测

随着银行业数字化转型的深入,线下网点的职能正在经历从“交易中心”向“营销与服务中心”的深刻变革。在这一进程中,智能服务机器人已不再是仅供展示的科技噱头,而是逐渐演变为能够承担实质性工作的“数字员工”。截…

2026 年 AI 摄影培训哪家强?五大优质院校盘点,成都莱特凭实力领跑

引言 随着 AIGC 技术的飞速发展,AI 摄影、短视频创作、视频剪辑与 IP 运营已成为职场新风口,越来越多的人渴望通过专业培训掌握相关技能,无论是职场提升、兴趣深耕还是创业转型,选择一所靠谱的培训学校成为关键。2…

基于Java+SpringBoot+SSM师生互动桥系统(源码+LW+调试文档+讲解等)/师生互动平台系统/师生互动教学系统/互动桥梁系统/师生交流桥系统/教学互动桥系统

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

工业检测必备:盘点国内外气密性测试仪品牌,哪家更适合你?

在工业生产中,产品的气密性是衡量其质量和性能的重要指标之一。无论是汽车零部件、电子设备,还是食品包装等行业,都需要使用气密性测试仪来确保产品的密封性符合标准。然而,面对市场上琳琅满目的气密性测试仪品牌和…

电商GIF主图压缩教程,专业GIF压缩工具优化攻略

做自媒体配图、电商主图或课件动图时&#xff0c;总遇到选不好GIF 压缩工具、压缩后画质模糊&#xff0c;或是压缩后体积仍不达标无法上传的问题&#xff0c;换多款工具反复调试&#xff0c;既浪费时间又达不到预期效果。不同平台对 GIF 有明确规格要求&#xff1a;微信动图建议…

2026年新加坡PSB学院申请中介核心优势指南:聚焦独特价值与差异化

随着2026年留学市场进一步细分与成熟,申请者的决策逻辑已从“大而全”的泛泛比较,转向对服务机构“王牌优势”的精准识别。根据行业通用观察,在服务内容表面趋同的市场中,机构的独特核心优势已成为决策最关键、最直…

深入解析:Java两种代理模式详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于Java+SpringBoot+SSM客户股票交易教学系统(源码+LW+调试文档+讲解等)/股票交易教学平台/客户交易指导系统/股票教学系统/客户股票操作教学/股票交易培训系统/客户交易学习系统

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

测试dify是否可以支持流式http

测试dify是否可以支持流式http先写一个fastapi 流式返回的接口from fastapi import FastAPI from fastapi.responses import StreamingResponseimport asyncio import time from typing import AsyncGenerator, Genera…

微信 GIF 制作技巧?gif 动画制作 5 分钟上手攻略

做自媒体配图、电商主图或课件演示时&#xff0c;总遇到gif 动画制作步骤繁琐、成品画质模糊&#xff0c;或是动画体积过大无法上传、格式不兼容的问题&#xff0c;反复调试却达不到预期效果&#xff0c;白白浪费时间。不同场景对 gif 动画有明确规格要求&#xff1a;微信动图建…

RK平台 自定义 /dev/video节点

修改详情&#xff1a;在 drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c 文件&#xff0c;将&#xff1a;video_register_device(vdev, VFL_TYPE_VIDEO, -1);修改为&#xff1a;video_register_device(vdev, VFL_TYPE_VIDEO, 50);原理说明&#xff1a;video_register_dev…

深圳城区,竟然有座沉睡20多年的“垃圾山”

在深圳罗湖&#xff0c;有座特别的“山”&#xff0c;它不是自然形成的&#xff0c;而是由垃圾堆成的。 这就是玉龙填埋场&#xff0c;一个已经“沉睡”了二十多年的地方。 1983年的时候&#xff0c;深圳还处在高速发展的早期&#xff0c;玉龙填埋场所在的地方&#xff0c;算…

离子色谱仪技术如何适应环保需求?

随着环保理念的深入人心和生态治理的不断深化,环境监测的精准度、高效性、全面性需求持续升级,从传统的常规污染物检测,逐步延伸至痕量、复杂基质污染物监测,以及现场应急、在线连续监控等多元场景。离子色谱仪作为…

基于Java+SpringBoot+SSM家庭医生服务软件(源码+LW+调试文档+讲解等)/家庭医生APP/家庭医生系统/医疗服务软件/在线家庭医生/医生服务应用/家庭健康软件/医疗服务平台

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

2026年组装式屏蔽室厂家实力榜:局放屏蔽室、焊接式屏蔽室、拼接式屏蔽室、高压屏蔽室、电磁屏蔽室、 磁场屏蔽室、 电波屏蔽室、人防二级屏蔽室、五家企业凭技术与口碑出圈

随着5G、物联网技术的普及,电磁干扰问题日益凸显,屏蔽设备作为核心防护设施,其产品性能与技术可靠性成为市场关注焦点。在屏蔽机房、屏蔽室两大主流品类中,一批兼具创新能力与服务意识的企业脱颖而出。本次结合产品…

2026年新加坡留学中介口碑与案例深度排行:基于真实反馈的客观评测

引言 随着2026年留学规划的全面启动,新加坡作为融合东西方教育精华的枢纽,其热度持续攀升。根据行业追踪数据显示,2025年中国赴新加坡留学生人数已激增60%,总规模突破5万人,新加坡稳固占据中国家庭海外求学目的地…

2026年AI摄影培训学校哪家好?TOP5摄影培训/短视频培训/视频剪辑培训深度推荐

在AIGC技术加速渗透视觉创作领域的2026年,掌握AI摄影、短视频制作、视频剪辑及IP运营等复合技能,已成为摄影师、内容创作者和电商从业者提升竞争力的关键路径。面对市场上众多培训机构,如何甄别真正具备教学实力、合…

应用开发,功能设计要从需求出发

应用开发,功能设计要从需求出发 ​ ——记录一次开发前的框架规划 在一个风和日丽的下午,我如往常一样睡觉摆烂,突然!一个神秘人闯入我的梦境,给了我一个任务,需要我做一个关于违规内容检测的项目。还没…

实用指南:ES6冷门API

实用指南:ES6冷门APIpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

基于igh开源协议栈和xenomai3实时Linux系统的运动控制器

运动控制器源码 igh ethercat xenomai3 rtdm i210 i211 基于igh开源协议栈和xenomai3实时linux系统的运动控制器 技术优势&#xff1a; 1、支持intel or amd 常规处理器 2、基于ethetcat 1.5.2官方稳定版适配rtdm驱动接口 3、基于ethercat 1.5.2官方稳定版适配当前工控机主流配…