如何使用Vivado DDS ip核产生正余弦波

这篇具有很好参考价值的文章主要介绍了如何使用Vivado DDS ip核产生正余弦波。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验要求:使用50M的系统时钟分别产生一路12位的10KHZ的正弦波和余弦波
第一步:打开DDS ip核

vivado仿真正弦波,dds,fpga开发,ip

Configuration Options: 选择有Sin和Cos模式

System Clk:选择50MHz

Mode Of Operation:这里可以有两种选择Standard模式和Rasterized模式
在Standard模式下:填写Phase width(相位位宽): 默认16位不变,填写Output width为实验要求的12位;

利用公式vivado仿真正弦波,dds,fpga开发,ip计算:10K=50M*ΔΦ(频率控制字又名相位增量)/2^16(Phase width)即10K=50M*ΔΦ/2^16  计算得到ΔΦ。

vivado仿真正弦波,dds,fpga开发,ip

Phase Increament Programmability 这里选择fix(固定值)。

vivado仿真正弦波,dds,fpga开发,ip

填入四舍五入后的ΔΦ的值(转化为二进制)。

后续通过仿真查看波形。

存在的问题:因为是四舍五入后的ΔΦ,所以产生的波形只是大致10K但是不准确,采取第二种模式。vivado仿真正弦波,dds,fpga开发,ip

选择Rasterized模式,这里发现Phase Width已经固定了,需要我们填入Modulus  的值

利用公式:

vivado仿真正弦波,dds,fpga开发,ip

这里发现这个公式利用M的值代替了前面2^16(Phase width)的值,所以这里我们只需要自己定义ΔΦ/M的值就可以输出fout。 这里定义了10K=50M*ΔΦ/M。令M=10000,那么ΔΦ=2。vivado仿真正弦波,dds,fpga开发,ip

在这里填入10。

没有提到的地方都用默认。

测试代码:
module dds(
input sys_clk,
input sys_rst_n,
output  [11:0]sin_data,
output  [11:0]cos_data
    );
wire [31:0]data;
wire  [15:0]phase_data;
wire  phase_valid;
wire  data_valid;     
assign cos_data={~data[11],data[10:0]};
assign sin_data={~data[27],data[26:16]};    
dds_compiler_0 your_instance_name (
  .aclk(sys_clk),                                // input wire aclk
  .m_axis_data_tvalid(data_valid),    // output wire m_axis_data_tvalid
  .m_axis_data_tdata(data),      // output wire [31 : 0] m_axis_data_tdata
  .m_axis_phase_tvalid(phase_valid),  // output wire m_axis_phase_tvalid
  .m_axis_phase_tdata(phase_data),    // output wire [15 : 0] m_axis_phase_tdata
  .event_pinc_invalid( )    // output wire event_pinc_invalid
);
endmodule

Note:最高位要取反才能得到连续的正余弦波。


仿真代码:
`timescale 1ns/1ns
module tb_dds(
    );
reg sys_clk;
reg sys_rst_n;

initial begin
sys_clk<=1'b0;
sys_rst_n<=1'b0;
#20
sys_rst_n<=1'b1;
end
always #10 sys_clk=~sys_clk;
wire [11:0]sin_data;
wire [11:0]cos_data;
 dds u_dds(
.sys_clk       (sys_clk) ,
.sys_rst_n     (sys_rst_n ),
.sin_data      (sin_data),
.cos_data      (cos_data)
    );
endmodule

vivado仿真正弦波,dds,fpga开发,ip

使用第二种模式能够得到周期更精确的正余弦波。

欢迎评论指正,交流学习!文章来源地址https://www.toymoban.com/news/detail-847220.html

到了这里,关于如何使用Vivado DDS ip核产生正余弦波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于vivado DDS ip核的DDS信号发生器(可调频调相)

    基于Vivado DDS ip核的DDS信号发生器: 在Vivado软件中调出DDS ip核进行设置,很多参数可以参考xilinx官方手册,比较重要的是System Clock系统时钟和Phase Widh相位宽度的设置,这是最终得到波形的频率和相位所需要的基础参数,在这里我分别设置为50Mhz和16bit。 在implementation页面设置频

    2024年02月12日
    浏览(38)
  • 【FPGA】 十二、Vivado DDS IP核实现扫频信号

    文章目录 前言 一、DDS IP核概述 二、DDS IP核配置 三、调用DDS IP核 总结     在我前面的工程中,都是一些比较通用的设计工程,没有用到哪一家的IP核,所以代码具有很好的移植性;今天我就来讲一下基于Xilinx厂家的芯片做一期DDS的设计与验证,这里我所采用的EDA工具是Viva

    2024年02月03日
    浏览(47)
  • 如何解决Vivado仿真时提示:另一个程序正在使用此文件 behavxsimsimulate.log

    Vivado仿真错误提示: 使用非Vivado自带的Text Editor(文本编辑器,如Vscode、Sublime等),在开始新的仿真时,前一次仿真没有关掉,导致log文件被一直占用。 方法一 关掉代码编辑器再进行仿真即可恢复正常 方法二 1、打开任务管理器(快捷键Ctrl + Shift + Esc) 2、点击性能 3、打开

    2024年02月12日
    浏览(42)
  • 如何使用Synplify综合vivado带IP核的工程

    下面的说法来自网上: 综合时间更好,综合出来所使用的逻辑更少 综合的时序更好 在IC设计中,使用Synplify综合+Vivado组合比较多。synplify 用于生成网表,然后将网表倒入FPGA中,进行布局布线等操作。 Libero集成开发环境中Synplify应用与提高-Microsemi(Actel) FPGA开发工具——周

    2024年02月11日
    浏览(51)
  • xilinx FPGA 除法器ip核(divider)的学习和仿真(Vivado)

    在设计中,经常出现除法运算, 实现方法 : 1、移位操作 2、取模取余 3、调用除法器IP核 4、查找表 简单学习除法器IP。 网上很多IP翻译文档,不详细介绍,记录几个重要的点: 1、三种算法模式(不同模式所消耗的资源类型不同) 2、分清除数和被除数;余数模式的选择 3、延

    2024年04月28日
    浏览(196)
  • 基于FPGA的DDS原理信号发生器设计 quartusII 9.1平台 Verilog HDL语言编程 可产生正弦波

    基于FPGA的DDS原理信号发生器设计 quartusII 9.1平台 Verilog HDL语言编程  可产生正弦波、方波、锯齿波以及三角波   频率幅度可调节   代码+原理图 在现代电子技术领域,针对各种应用的信号发生器是一种非常核心的设备,而基于现场可编程逻辑门阵列(FPGA)的直接数字合成(

    2024年04月27日
    浏览(63)
  • vivado中如何生成、例化和仿真DCP文件

    1、在vivado-Tool-setting-project-setting-synthesis路径下,设置 -mode out_of_context(综合时不产生IO buffer) 2、将引脚约束注释掉,防止例化使用DCP文件时报错 3、将工程综合,打开综合设计。 4、在console输入命令,生成DCP文件: write_checkpoint -key C:/Users/YDQ/Desktop/key_files.txt -encrypt top.dcp 其

    2024年02月05日
    浏览(46)
  • 如何获取vivado IP列表

    TCL命令如下:    运行vivado TCL显示  问题在于 { 前面需要有空格分开。

    2024年02月13日
    浏览(57)
  • Vivado中如何修改IP源文件

    前一篇文章是通过改变JESD204B IP的设置,在Shared Logic里勾选in example design,来避免共用输入时钟的问题。那么还有没有别的办法呢?有没有更直接点的实现方式呢? 答案是肯定的:可以 直接修改IP,将IBUFDS从IP里移出去 ,放到外面就可以共用了。修改IP是一个比较复杂的办法,

    2024年02月11日
    浏览(86)
  • 基于AD9767高速DAC的DDS信号发生器(Verilog&Vivado)

    基于AD9767高速DAC的DDS信号发生器 提示:以下是本篇文章正文内容,下面案例可供参考 1.做一个双通道的信号发生器; 2.简单调整每个通道的频率输出; 3.能够调整每个通道的输出相位; 4.能够输出正弦波,三角波,方波。 代码如下(示例): 代码如下(示例): 【附件:】

    2024年02月06日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包