当前位置:首页 > 模拟 > 模拟
[导读]波形发生器为常用器件,对于波形发生器,许多朋友存在学习兴趣。此外,针对波形发生器,小编曾带来诸多相关文章。本文对于波形发生器的讲解,基于DDS任意波形发生器。主要内容为,基于Verilog实现DDS任意波形发生器。如果你对本文内容充满兴趣,不妨继续往下阅读。

波形发生器为常用器件,对于波形发生器,许多朋友存在学习兴趣。此外,针对波形发生器,小编曾带来诸多相关文章。本文对于波形发生器的讲解,基于DDS任意波形发生器。主要内容为,基于Verilog实现DDS任意波形发生器。如果你对本文内容充满兴趣,不妨继续往下阅读。

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); }

以上便是此次小编带来的“波形发生器”的相关内容,通过本文,希望大家对如何基于Verilog进行DDS任意波形发生器设计具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

中国北京,2024年4月17日讯——电子顺磁共振(EPR)波谱仪或电子自旋共振(ESR)波谱仪与核磁共振(NMR)光谱仪类似,但不同之处在于它研究的对象是未配对的电子而不是原子核,比如质子。它被用于研究化学、生物学、材料...

关键字: EPR波谱仪 波形发生器 数字化仪

2024年3月13日,国务院印发《推动大规模设备更新和消费品以旧换新行动方案》(下称《方案》),提出到2027年,我国在工业、农业、建筑、交通、教育、文旅、医疗等领域的设备投资规模较2023年增长25%以上;推动符合条件...

关键字: 波形发生器 鼎阳科技

现代通信、物联网、导航设备在研发过程中需要产生复杂的调制信号和复杂的协议信号以进行系统的性能验证。不断提高的数据速率和更高的带宽需求促使人们创建更复杂的信号来验证设备在真实环境中的性能。创建测试波形的难度越来越大,工程师...

关键字: 物联网 波形发生器 智能电网

中国北京,2023年6月7日讯——Spectrum仪器公司宣布推出数字脉冲发生器(DPG)功能,用于公司旗下高分辨率和中速的数字化仪和任意波形发生器(AWG)系列产品。该功能使Spectrum旗下产品能够通过四个前面板多...

关键字: 波形发生器 数字化仪

今天,小编将在这篇文章中为大家带来电子测量仪器中的波形发生器的有关报道,通过阅读这篇文章,大家可以对波形发生器具备清晰的认识,主要内容如下。

关键字: 波形发生器 电子测量仪器 发生器

各位真的对不住,好久没更新了,真的非常感谢我还在你的订阅号列表中。前段时间录制的项目三——波形发生器;由于在录制过程中出了一点事故,所以只录制了方波部分。

关键字: 波形发生器 方波 工作原理

在这篇文章中,小编将对电子测量的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: 电子测量 波形发生器 测量技术

一直以来,信号发生器都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来任意波形发生器AWG5200的相关介绍,详细内容请看下文。

关键字: 任意波形发生器 RF 电路 调制器

本实验旨在研究如何利用ΔVBE概念来产生稳定(对输入电压电平的变化较不敏感)的输出电流。使用反馈来构建在一定的电源电压范围内产生恒定或调节输出电流的电路。

关键字: 晶体管 波形发生器 示波器 ADI

是德科技日前宣布,在 2020 年度 Lightwave 创新奖评选中,两款是德科技产品获得实验室/生产测试设备类别的最高分。

关键字: 是德科技 任意波形发生器 光波元器件
关闭
关闭