信号发生器:Intel FPGA DDS(NCO)+双路DAC(AD9767)输出正余弦信号

这篇具有很好参考价值的文章主要介绍了信号发生器:Intel FPGA DDS(NCO)+双路DAC(AD9767)输出正余弦信号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、软硬件环境

Quartus18.1
小梅哥AC620开发板+ACM9767模块
示波器

二、ACM9767模块介绍

ACM9767模块使用的是ADI公司的AD9767芯片,14位CMOS 双通道DAC,125Msps转换率。
acm 9767,FPGA,fpga开发
输出形式为差分电流输出,输出电流满量程范围为可设置为 2~20mA。
AD9767的两路DA输出都为补码形式的电流输出IoutA和IoutB。当AD9767数字输入为满量程时(DAC的输入的14位数据都为高),IoutA输出满量程的电流输出20mA。IoutB输出的电流为0mA。具体的电流和DAC的数据的关系如下公式所示(红色方框圈出来的):
acm 9767,FPGA,fpga开发
DAC CODE的值就对应14位数据的输入值(重点:14位无符号数据
Ioutfs的大小由参考电压和外部电阻决定。
acm 9767,FPGA,fpga开发acm 9767,FPGA,fpga开发
上图所示IREF=1.2V/1.92K=0.625mA,所以Ioutfs=32*0.625=20mA

输入14bit数据之后,产生互补的电流信号,还要经过运算放大器的转换
acm 9767,FPGA,fpga开发
acm 9767,FPGA,fpga开发

三、NCO IP设置(DDS)

在Quartus18.1 的IP Catalog搜索NCO
acm 9767,FPGA,fpga开发
acm 9767,FPGA,fpga开发
如果此处选择IP默认的选项,如下图所示
acm 9767,FPGA,fpga开发
在全编译的时候,就会提示FPGA的存储资源不够用,如下图所示,存储器的资源使用率达到了433%
acm 9767,FPGA,fpga开发
acm 9767,FPGA,fpga开发
因为AD9767是双通道的,这里就可以设置成两个输出,其中一个是正弦信号一个是余弦信号。
acm 9767,FPGA,fpga开发
NCO IP的第二页的设置如下所示。
acm 9767,FPGA,fpga开发
其中工作时钟可以查看AD9767的数据手册得到
acm 9767,FPGA,fpga开发
acm 9767,FPGA,fpga开发
由上面两张图分析,AD9767最大支持的频率是142.857MHz(7ns)

四、工程代码

代码部分只由一个PLL IP和NCO IP组成

module top(
    input               clk         ,
    input               rst_n       ,
    //ad9767 ch1
    output              clk1        ,
    output              wrt1        ,
    output      [13:0]  dac_data1   ,
    //ad9767 ch2
    output              clk2        ,
    output              wrt2        ,
    output      [13:0]  dac_data2   
);

wire        clk_125m;
wire        pll_lock;
wire    [13:0]  dds_sin;
wire    [13:0]  dds_cos;
wire            dds_vld;

pll	pll_inst (
	.areset ( ~rst_n ),
	.inclk0 ( clk ),
	.c0 ( clk_125m ),
	.locked (pll_lock)
	);

assign clk1 = clk_125m;
assign wrt1 = clk_125m;
assign clk2 = clk_125m;
assign wrt2 = clk_125m;


	dds u0 (
		.clk       (clk_125m    ),  // clk.clk
		.reset_n   (pll_lock    ),  // rst.reset_n
		.clken     (pll_lock    ),  //  in.clken
		.phi_inc_i (524         ),  //    .phi_inc_i  32'd68719477
		.fsin_o    (dds_sin     ),  // out.fsin_o
		.fcos_o    (dds_cos     ),  //    .fcos_o
		.out_valid (dds_vld     )   //    .out_valid
	);


assign dac_data1 = {~dds_sin[13],dds_sin[12:0]};
assign dac_data2 = {~dds_cos[13],dds_cos[12:0]};


endmodule

dds IP核的phi_inc_i的输入为524,这个值是在配置NCO IP的时候,IP自动计算的相位增量。此处的计算公式可以自行查找NCO IP核的手册,以及DDS的工作原理。

还有一个问题是,在代码的最后为什么要对最高位取反呢?

assign dac_data1 = {~dds_sin[13],dds_sin[12:0]};
assign dac_data2 = {~dds_cos[13],dds_cos[12:0]};

这里是因为NCO IP输出的数据是按照原码输出的,最高位为1表示负数,为0表示正数。
我们在前面分析AD9767输出电流的时候分析过,14bit的值全为1的时候输出电流20mA,14bit全为0的时候输出-20mA的电流,分别对应最终的5V电压和-5V电压。
因此NCO 输出的原码与AD9767输出电流的关系就出错了,如果不对此做处理就会导致最终输出的波形出错。
acm 9767,FPGA,fpga开发
最高位数据取反之后,波形就是正确的。
acm 9767,FPGA,fpga开发

五、NCO仿真注意事项

使用联合仿真的时候,如果modelsim提示如下错误时。

Error: (vsim-3033) e:/project/ac620_prj/11_dds_dac_ad9767/prj/db/ip/dds/submodules/dds_nco_ii_0.v(328): Instantiation of ‘asj_xnqg’ failed. The design unit was not found.

acm 9767,FPGA,fpga开发
需要在对NCO IP编译时选择生成仿真文件,并且将对应的.sip和.qip文件添加到工程文件中
acm 9767,FPGA,fpga开发
acm 9767,FPGA,fpga开发
acm 9767,FPGA,fpga开发
添加完NCO的两个文件之后,仿真就能正常进行了

默认转换成波形显示是有符号的数据
acm 9767,FPGA,fpga开发
可以将最终输出的dac_data1和dac_data2设置成无符号数(AD9767需要的是无符号数据)
acm 9767,FPGA,fpga开发文章来源地址https://www.toymoban.com/news/detail-842840.html

到了这里,关于信号发生器:Intel FPGA DDS(NCO)+双路DAC(AD9767)输出正余弦信号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • FPGA之简易DDS信号发生器设计

    设计一个能产生频率可变、相位可调的能产生正弦波、三角波、方波、锯齿波的信号发生器。 DDS 是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写,是一项关键的数字化技术。与传统的频率合成器相比,DDS 具有低成本、低功耗、高分辨率和快速转换时间等优点,

    2024年02月02日
    浏览(46)
  • 基于FPGA的简易 DDS 信号发生器的设计

    DDS 是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写,是一项关键的数字化技术。与传统的频率合成器相比, DDS 具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。作为设计人员,我们

    2024年02月07日
    浏览(54)
  • FPGA实验笔记_Vivado:DDS信号发生器;数码管;基于DHT11的温湿度传感器

    目录 1、 FPGA的DDS信号发生器 1.1、DDS简介 1.2、ROM IP核的生成 1.3、波形数据的生成 1.4、 ROM的调用 1.5、 完整代码(包括拓展部分) 2、数码管显示 2.1、数码管简要说明 2.2、SM410564 3、基于DHT11的温湿度传感器 3.1、DHT11 3.2、基本思路 3.3、数据分离模块(BTD) 3.4、数据转换模块(

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

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

    2024年04月27日
    浏览(59)
  • DDS信号发生器(stm32+ad9850)

    正点原子精英板、ad9850、杜邦线 https://download.csdn.net/download/qq_45974939/87672298

    2024年02月16日
    浏览(39)
  • 基于vivado DDS ip核的DDS信号发生器(可调频调相)

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

    2024年02月12日
    浏览(34)
  • 毕设分享|基于51单片机DDS信号发生器设计

    在电子通信技术日益发展的时代潮流下,直接式(DFS)和锁相式(PLL)已经不能满足生活和科研方面对于频率技术的需求。经过科研人员的不断攻坚下,直接数字频率合成器(DDS)应运而生。它现在广泛运用于移动通信、电子雷达、航天等方面。本次设计主要通过FPGA模块+单片机最小

    2024年02月03日
    浏览(55)
  • 【毕业设计—DDS信号发生器】Quartus II 软件新建工程

    大学四年的时间转瞬即逝,2023年我将迎来我的本科毕业。为了记录自己的研究进展,我将在这儿分享我的毕业设计进度~~博客涉及的知识点,如有不对,欢迎大家及时纠正,共同进步! 我安装的是Quartus II 13.1 版本。 1.在电脑D磁盘下新建一个文件夹【DDS】,然后分别新建4个子

    2024年02月03日
    浏览(48)
  • 【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)

    将模拟量转换为数字量称为模数转换(A/D转换), 模拟量是连续的 ,比如电压、电流等,可以连续变化的量; 数字量是离散的 ,对应于计算机中的位,每一个位只能是0或1,是不存在中间状态的。通过模数转换原件将模拟量转化为数字量输入计算机,以便计算机进行计算、

    2024年02月06日
    浏览(36)
  • 【单片机基础】使用51单片机制作函数信号发生器(DAC0832使用仿真)

    单片机作为一个数字电路系统,当需要采集外界模拟量的使用需要进行AD转换,将模拟量转换成数字量,供单片机使用。51单片机需要外部配置一个AD转换芯片来进行模拟量的采集,如我之前写了一篇ADC0832的使用。高级的单片机如STC12和STM32已经集成了AD转换功能,只需简单配置

    2024年02月08日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包