基于FPGA的DDS设计

这篇具有很好参考价值的文章主要介绍了基于FPGA的DDS设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 简介

        DDS(direct digital synthesizer),直接数字合成器,实现快速频率切换,容易实现频率、相位、幅度的数控调制。DDS在通信领域应用尤为广泛。

2.DDS原理

        基于FPGA的DDS设计

                                                           图2.1 基本DDS结构

        

        基本公式: 

         是输出信号频率,是相位增量,为时钟频率,N是相位累加器的数据位宽,也是频率输入字的数据位宽。

        下面采用更形象的方式理解这个公式。

基于FPGA的DDS设计

                                                        图2.1 32个采样点的正弦波形

        

        

        假设=1,即=1000

        (1)若取点间隔为1,输出频率?

        要输出整个正弦波需要32ms(),则

        (2)若取点间隔为2,输出频率?

        ,则

        (3)若取点间隔为0.5(同一个值取样两次),输出频率?

        ,则

        

        由上面分析和规律,清晰得到基本公式。

        又称频率控制字(在上述形象的分析中,为取点间隔,也就是增量),也是相位增量。只要对相位的量化值进行简单的累加运算,就可以得到正弦信号当前的相位值。相位累加器是整个DDS的核心。在图2.1中,频率控制字输入还经过了一组同步寄存器(将频率控制字延迟一拍),使得频率控制字改变时不会干扰相位累加器正常工作。

        波形数据表ROM完成相位-幅度的转换,图2.1中相位累加寄存器和相位控制字相加后作为ROM的地址。

3.Verilog代码

module DDS_Module(
	Clk,
	Reset_n,
	Fword,//频率控制字
	Pword,//相位控制字
	Data
    );
	
	input Clk;
	input Reset_n;
	input [31:0]Fword;
	input [11:0]Pword;
	output [13:0]Data;
	
	//频率控制字同步寄存器
	reg [31:0]Fword_r;
	always@(posedge Clk	)
	begin
		Fword_r <= Fword;
	end
	//
	
	//相位控制字同步寄存器
	reg [11:0]Pword_r;
	always@(posedge Clk	)
	begin
		Pword_r <= Pword;
	end
	//
	
	//相位累加器
	reg [31:0]Freq_ACC;
	always@(posedge Clk or negedge Reset_n)
	begin
		if(!Reset_n)
			Freq_ACC <= 0;
		else
			Freq_ACC <= Fword_r + Freq_ACC;
	end
	/
	
	
	//波形数据表地址
	wire [11:0]Rom_Addr;
	assign Rom_Addr = Freq_ACC[31:20] + Pword_r;
	
	rom rom_inst1(
		  .clka(Clk),
		  .addra(Rom_Addr),
		  .douta(Data)
		);
	
endmodule

注意:相位累加器的高12位与相位控制字(Pword)相加作为ROM的地址。

rom数据宽度为14位,深度为4096(12位),用来存放正弦波数据。

4.testbench

`timescale 1ns / 1ps
module DDS_Module_tb(

    );
	
	reg Clk;
	reg Reset_n;
	reg [31:0]FwordA,FwordB	;
	reg [11:0]PwordA,PwordB;
	wire [13:0]DataA,DataB;
	DDS_Module DDS_Module_inst0(
	Clk,
	Reset_n,
	FwordA,//频率控制字
	PwordA,//相位控制字
	DataA
    );
	
	DDS_Module DDS_Module_inst1(
	Clk,
	Reset_n,
	FwordB,//频率控制字
	PwordB,//相位控制字
	DataB
    );
	
	initial Clk = 1;
	always #10 Clk = ~Clk;
	
	initial begin
		Reset_n = 0;
		FwordA = 65536;
		PwordA = 0;
		FwordB = 65536;
		PwordB = 1024;
		#201;
		Reset_n = 1;
		#5000000;
		FwordA = 65536 * 1024;
		FwordB = 65536 * 1024;
		PwordA = 0;
		PwordB = 2048;
		#1000000;
		$stop;
	end
endmodule

5.仿真波形、

基于FPGA的DDS设计


        输出频率验证:测量仿真正弦波的周期,计算输出频率;与用公式计算出的输出频率比较。若相等,则设计正确。

        输出相位验证:ROM深度为4096,图中PwordB=1024,理论上DataB的相位为90度。从图中可以看出DataB的相位确实为90度,所以设计正确。文章来源地址https://www.toymoban.com/news/detail-473874.html

到了这里,关于基于FPGA的DDS设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于vivado+Verilog FPGA开发 — 基于AD9767高速DAC的DDS信号发生器

    目录  一、功能定义 二、设计输入  1、主模块 2、DDS模块 3、 按键消抖模块 三、功能仿真  四、综合优化 五、布局布线 六、时序仿真 七、板级调试  代码规范:Verilog 代码规范_verilog代码编写规范-CSDN博客 开发流程:FPGA基础知识----第二章 FPGA 开发流程_fpga 一个项目的整个

    2024年03月18日
    浏览(77)
  • 基于FPGA的DDS开发和实现,可修改输出正弦的频率和相位,包含testbench

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.完整算法代码文件 vivado2019.2仿真结果如下: 输出2个不同频率的正弦信号:  修改相位,得到如下所示。      直接数字频率合成技术 (Direct Digital Synthesis)完全不同于我们己经熟悉的直接频率合成技术和锁相环频

    2024年02月04日
    浏览(51)
  • 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日
    浏览(60)
  • 毕设分享|基于51单片机DDS信号发生器设计

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

    2024年02月03日
    浏览(58)
  • 基于FPGA的直接数字频率合成器

    本实验利用FPGAA芯片设计一款直接数字频率合成器(DDS) 发开板 :EGO1(xc7a35tcst324-1) 开发软件 :Vivado,Vscode 实现功能 : 1、设计测频电路,将测量的波形频率值显示在实验板卡的右面4位数码管; 2、基于DDS原理,计算波形频率的;理论值,将理论计算值显示在实验板卡上的左

    2024年02月04日
    浏览(57)
  • FPGA——DDS

    DDS DDS 是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写,是一项关键的数字化技术。利用数字方式累加相位,再以相位之和作为地址来查询正弦函数表得到正弦波幅度的离散数字序列,最后经D/A变换得到模拟正弦波输出。在系统时钟一定的情况下,输出频率决定于

    2024年02月08日
    浏览(45)
  • FPGA设计入门:Vivado综合简介

    FPGA设计入门:Vivado综合简介 FPGA是一种基于可编程逻辑器件的数字电路设计技术,可以通过编程实现各种电路功能。Vivado是Xilinx公司推出的一款开发工具,可以用来对FPGA进行综合、布局、布线、生成比特流等操作。本篇文章将从Vivado综合的基本流程入手,详细介绍如何使用

    2024年02月09日
    浏览(46)
  • DDS基本原理与FPGA实现

    定义:DDS是指DDS信号发生器,采用直接数字频率合成技术。是一种新型的频率合成技术,具有相对带宽大,频率转换时间短、分辨率高和相位连续性好等优点。较容易实现频率、相位以及幅度的数控调制,广泛应用于通信领域 DDS的经典应用场景:通信系统里调制解调 其中相

    2024年02月01日
    浏览(55)
  • CoreDX DDS应用开发指南(1)简介

            Twin Oaks Computing,Inc.设计、开发和提供了CoreDX DDS中间件。CoreDX DDS,是OMG数据分发服务(DDS)标准的高性能、微小型体积的实现。CoreDX DDS以数据为中心的发布-订阅(Data-Centric, Publish-Subscribe)消息传递基础设施提供了高吞吐量、低延迟的数据通信。         本章

    2024年02月07日
    浏览(39)
  • 【FPGA 芯片设计】FPGA 简介 ( FPGA 芯片架构 | FPGA 芯片相对于传统芯片的优点 )

    摩尔定律 : 价格不变 , 在集成电路上 电子元器件的数量 , 18 ~ 24 个月增加一倍 , 同时芯片性能也增加一倍 ; 同样花 5000 元 , 每隔 18 ~ 24 个月 , 买到的电脑性能可以翻一番 , 买电脑不要买最好的 , 第二年就淘汰 ; FPGA 英文全称 Field Programmable Gate Array , 中文名称为 \\\" 现场可编程门

    2024年02月03日
    浏览(88)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包