当前位置:首页 > 消费电子 > 消费电子
[导读]DDS直接数字式频率合成器(Direct Digital Synthesizer)下面是使用MATLAB生成正弦波、三角波、方波的代码,直接使用即可。t=0:2*pi/2^12:2*piy=0.5*sin(t)+0.5;r=ceil(y*(2^

DDS直接数字式频率合成器(Direct Digital Synthesizer)

下面是使用MATLAB生成正弦波、三角波、方波的代码,直接使用即可。

t=0:2*pi/2^12:2*pi

y=0.5*sin(t)+0.5;

r=ceil(y*(2^8-1)); %将小数转换为整数,ceil是向上取整。

fid = fopen('sin.coe','w'); %写到sin.coe文件,用来初始化sin_rom

fprintf(fid,'MEMORY_INITIALIZATION_RADIX=10;n');

fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=n');

for i = 1:1:2^12

fprintf(fid,'%d',r(i));

if i==2^12

fprintf(fid,';');

else

fprintf(fid,',');

end

if i%15==0

fprintf(fid,'n');

end

end

fclose(fid);

t=1:1:2^12;

y=(t<=2047);

r=ceil(y*(2^8-1));

fid = fopen('square.coe','w'); %写到square.coe,用来初始化rom_square

fprintf(fid,'MEMORY_INITIALIZATION_RADIX=10;n');

fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=n');

for i = 1:1:2^12

fprintf(fid,'%d',r(i));

if i==2^12

fprintf(fid,';');

else

fprintf(fid,',');

end

if i%15==0

fprintf(fid,'n');

end

end

fclose(fid);

t=1:1:2^12;

y=[0.5:0.5/1024:1-0.5/1024, 1-0.5/1024:-0.5/1024:0, 0.5/1024:0.5/1024:0.5];

r=ceil(y*(2^8-1));

fid = fopen('triangular.coe','w'); %写到triangular.coe,初始化三角波rom

fprintf(fid,'MEMORY_INITIALIZATION_RADIX=10;n');

fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=n');

for i = 1:1:2^12

fprintf(fid,'%d',r(i));

if i==2^12

fprintf(fid,';');

else

fprintf(fid,',');

end

if i%15==0

fprintf(fid,'n');

end

end

fclose(fid);

设计DDS的核心就是调用IP ROM,vivado调用ROM的方法和ISE相类似,都是加载.coe文件,我这里特地做笔记,以防忘记。

 

 

这是DDS的原理图,DDS并没有像它的名字一样说的那么玄乎,它的核心便是控制频率的fword字输入,和相位字pword输入,最后调用IP核查找表即可,代码也十分简单,下面给出DDS design代码。

module DDS(

input mclk,

input rst_n,

input [31:0]fword,//frequency control

input [11:0]pword,//phase control

output [9:0]da_data

);

reg [31:0]r_fword;

reg [11:0]r_pword;

reg [31:0]fcnt;

wire [11:0]addr_rom;

//同步寄存器

always @(posedge mclk)

begin

r_fword <= fword;

r_pword <= pword;

end

always @(posedge mclk or negedge rst_n)

begin

if(!rst_n)

fcnt <= 32'd0;

else

fcnt <= fcnt + r_fword;

end

assign addr_rom = fcnt[31:20] + r_pword;

//custom sin_rom

sin_rom sin_rom (

.clka(mclk), // input wire clka

.addra(addr_rom), // input wire [11 : 0] addra

.douta(da_data) // output wire [9 : 0] douta

);

endmodule

DDS_design

使用vivado调用IP核ROM教程如下

 

 

点击IP catalog

 

 

选择block memory,然后双击

 

 

将show disabled ports 选项勾选掉

 

 

输入ROM名,我这里为了演示重新配置一个方波ROM,命名为square_rom

 

 

这里选择single ports ROM

 

 

按如上图所示勾选参数,port width是数据宽度,我们根据代码要求设置为10位,port width是数据深度,即有多少个这样的数据,我打开生成的square.coe文件可以清楚的看到一共有4096这样的数据。always enable是ROM一直处于工作状态,不需要使能信号。

 

 

这里是加载.coe文件,勾选load init file 然后点击browse将刚才生成的square.coe文件加载到ROM中,最后点击OK。

 

 

选择generate生成IP核

 

 

打开如图所示文件,

 

 

 

 

将生成的IP核实例化,即可

最后编写测试文件进行测试

最后右键点击da_data选择wave style选择analog,将会看到模拟波形,但是有时候还是需要设置一下模拟波形的显示,同样右键点击da_data选择wave style选择analog setting,选择如下图所示参数。

 

 

最后便大功告成,即可得打方波的波形图

 

 

大家还可以按照这种方法将其他两种波形都做出来。

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

为高效精准的分析提供一站式解决方案 上海2025年9月9日 /美通社/ -- 科学探索与产业升级浪潮下,AI赋能的精准分析技术正加速重构未来实验室。自动化技术和技术培训领域的世界领导者,Festo(展位:E2333)首...

关键字: FESTO 测试 MT 运动控制

柏林2025年9月6日 /美通社/ -- 柏林当地时间9月4日,在德国柏林国际电子消费品展览会(International Funkausstellung Berl...

关键字: 智能家电 RS 测试 扫地机器人

为解决使用现有接装纸分离装置生产“视窗烟支”时出现的安装调整难度大、耗时长、稳定性差,烟支接装纸外观质量缺陷率高等问题,设计了一种接装纸三级分离和控制装置。通过接装纸初步分离、分离定位控制和最终定位输送装置模块化设计,且...

关键字: 视窗烟支 接装纸 分离 控制

柏林2025年8月15日 /美通社/ -- 作为全球极具影响力的消费电子和家用电器展览会,IFA Berlin 2025将于9月盛大开幕,这将再次巩固其作为行业标杆的国际地位。本届展会将以人工智能、绿色可持续、软件与算力...

关键字: 中国智造 AI 智能家居 测试

MCU 被誉为现代电子设备的 “神经中枢”,是嵌入式电子系统中控制各种功能的核心器件。当前,边缘 AI、具身智能、新能源汽车、制造业数智转型等新业态,正在为 MCU 开辟更多增量市场,并倒逼 MCU 技术升级。MCU 厂...

关键字: MCU 电子系统 控制

青岛2025年8月5日 /美通社/ -- 2025年8月5日,第五届理创大赛在山东省青岛市正式启动,华东赛区预赛也随之拉开帷幕。全球自动化领域的数字化转型专家欧姆龙(中国)有限公司(以下简称"欧姆龙"...

关键字: 大赛 欧姆龙 控制 数字化

尽管全球数据泄露的平均成本降至 444 万美元,美国企业的相关损失却攀升至 1022 万美元; 在遭遇数据泄露的企业中,仅有 49% 的企业计划加强安全投入。...

关键字: AI IBM 控制 模型

杭州2025年7月31日 /美通社/ -- 近日,由中国通信标准化协会主办的2025数据智能大会在北京召开。会上,中国信息通信研究院(以下简称"中国信通院")发布了2025年上半年"大模型驱...

关键字: 数据分析 智能体 模型驱动 测试

深圳2025年7月28日 /美通社/ -- 近日, TÜV南德意志集团(以下简称"TÜV南德")在深圳举办电池法规与标准更新...

关键字: 电池 研讨会 测试 电子电气

为增进大家对差错控制的认识,本文将对差错控制、差错控制的基本方式和差错控制的分类予以介绍。

关键字: 控制 指数 差错控制
关闭