本案例节选明德扬深圳FPGA培训班。

一、功能描述

本工程实现DDS直接数字式频率合成器,利用正弦波相位线性增加的特点,产生正弦波和余弦波。本工程主要由3部分组成:相位累加器,相位幅度转换,数模转换器DAC(FPGA外部实现)。其中,相位累加器的高10比特用于ROM的索引地址。

二、波形调制说明

模块将一个正弦波采样1024个点,然后保存到内部一个8比特、1024深度的ROM当中,通过改变时序和相位控制字,即可生成不同频率的波形。 生成波形的公式是: FO=TCLK*FCW/655360 上面公式中,TCLK是指本模块的工作时间,FCW是相位控制字,FO即是生成的信号频率。

相位控制字FCW可以改变每次步进数M。如果FCW=128,则模块内部累加器每次加128,则经过M=16’hffff/128=512个时钟,就可以循环一个周期,也就是512个时钟完成一个正弦波输出。假如FCW为256,则代表1024/4=128个时钟周期就输出一个正弦波。

三、应用举例

设定是FCW=128,CLK=50M的时钟频率,由公式计算得出F0=10KHZ。实际测量出一个波形时间为10332000ps,最终波形的频率为10KHZ。 如果是FCW=128,CLK=5M的时钟频率,由公式计算得出F0=1KHZ。输出实际测量一个波形时间为51898054ps,最终波形的频率为1KHZ。

如果是FCW=128,CLK=100M的时钟频率,由公式计算得出F0=0.2MHZ。输出实际测量一个波形时间为5167188ps,最终波形的频率为0.2MHZ。 以此类推,通过对频率控制字的改变来控制波形频率。

四、平台效果图

五、实现过程

首先根据所需要的功能,工程顶层的输入输出信号列表。

信号名 I/O 位宽 说明
clk I 1 系统工作时钟50M
rst_n I 1 系统复位信号,低电平有效
da_clk O 1 输出D/A工作时钟
cos O 8 输出cos波形信号
sin O 8 输出sin波形信号

我们可以把工程划分成三个模块,分别是Sin相位转波形模块和Cos相位转波形模块和相位累加器模块。

1. 相位累加器模块

本模块根据设置好的相位控制字FCW来进行相位累加,以此控制波形的相位,sum <= sum + fcw;对相位不断累加,然后将累加的sum数据实时传到另外两个模块中去 以此本模块实现了相位累加,并将数据传输给其它模块的功能。

本模块信号列表如下:

信号名 I/O 位宽 说明
clk I 1 相位累加时钟
rst_n I 1 系统复位信号,低电平有效
fcw I 16 相位控制字
sum O 16 相位累加数据

2.Sin相位转波形模块

本模块实际上是一个RAM,事先将相位和相应相位上的幅值关系写入,然后通过从相位累加模块传来的相位累加数据sum进行查表,得到对应的幅值,以此当一个sin波的相位全部转换一遍后即可得到一个完整的sin波形。

信号列表如下:

信号名 I/O 位宽 说明
address I 10 系统复位信号,低电平有效
clock I 1 RAM工作时钟
q O 8 输出sin数据

3. Cos相位转波形模块

本模块实际上是一个RAM,事先将相位和相应相位上的幅值关系写入,然后通过从相位累加模块传来的相位累加数据sum进行查表,得到对应的幅值,以此当一个cos波的相位全部转换一遍后即可得到一个完整的cos波形。

信号列表如下:

信号名 I/O 位宽 说明
address I 10 系统复位信号,低电平有效
clock I 1 RAM工作时钟
q O 8 输出cos数据

DDS信号发生器的实现(内含代码资料)相关推荐

  1. 基于FPGA的DDS信号发生器

    基于FPGA的DDS信号发生器     两个礼拜前就像写这个文档了,但是一直鸽到现在,主要是人摆了.还有个技术上的原因是,我想用串口屏显示波形,在串口调试助手上返回的数据是对的,但是发到串口屏上啥反应 ...

  2. ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)***

    ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)*** ## 1 研究背景 电池的荷电状态(SOC)代表的是电池当前的剩余容量,数值定义是电池剩余电量与电池额 ...

  3. CASE_05 基于FPGA的DDS信号发生器

             该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 简介 2 DDS原理与方案 2.1 方案一:基于CORD ...

  4. 基于 FPGA 的便携式 DDS 信号发生器与示波器

    基于 FPGA 的便携式 DDS 信号发生器与示波器 项目来源:2019年第三届全国大学生FPGA创新设计竞赛 一.设计概述 1.1 设计目的 利用赛灵思公司 A7 系列板卡 EG01.AD9226 ...

  5. 简易DDS信号发生器记录

    简易DDS信号发生器 学习资料:野火 升腾Pro<FPGA Verilog开发实战指南--基于Xilinx Artix7>2021.11.16 1. 理论知识 DDS 是直接数字式频率合成 ...

  6. 【小梅哥FPGA进阶教程】第十一章 四通道幅频相可调DDS信号发生器

    十一.四通道幅频相可调DDS信号发生器 本文由山东大学研友袁卓贡献,特此感谢 实验目标 实现多通道可调信号发生器 实验平台 芯航线FPGA核心板.ADDA模块 实验现象 实现基于FPGA的多通道可调信 ...

  7. 基于FPGA的简易DDS信号发生器的设计与验证

    基于FPGA的简易DDS信号发生器的设计与验证 一,理论介绍 补充:举例理解 二,代码实现 1,实验目标 2,MATLAB代码 3,verilog代码及实现思路 一,理论介绍 DDS 是直接数字式频率 ...

  8. 两波形相位差的计算值_波形相位频率可调DDS信号发生器(设计分享)

    本文为明德扬原创及录用文章,转载请注明出处! 1.1 总体设计 1.1.1 概述 学习了明德扬至简设计法和明德扬设计规范,本人设计了一个基于FPGA的可调频调相而且可以输出不同波形的DDS信号发生器. ...

  9. FPGA—DDS信号发生器笔记

    使用软件: Vivado DDS信号发生器 基本原理 DDS基本原理 DDS模块 ROM IP的使用 波形数据存储器 代码及仿真 verilog代码 仿真代码(Fword有值,Pword=0时) 仿真 ...

最新文章

  1. 需要排序的最短子数组的长度——是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组...
  2. ps高级磨皮的7个步骤
  3. c语言输入一个数存数组,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
  4. java ee 的使用方法_改善Java EE生产支持技能的8种方法
  5. 转载——CVE-2019-0807
  6. 【jupyter】notebook屏蔽warning信息输出
  7. 软件测试java三角形形状判定,软件测试技术基础实验——Junit 安装与 三角形问题的测试...
  8. 我需要完全理解这部分代码才能确保它能够正常工作,如果由我来修复代码中的问题,我是不会这么写的,因此希望你也不要这么来写(转)...
  9. (回溯法)和为n的所有不增正整数和式分解算法
  10. 火狐插件 Katalon Recorder 生成 python 等语言 代码
  11. 基于大数据的数据挖掘算法-大数据
  12. Android 签名文件
  13. 大数据开发都需要什么技术?
  14. uniapp 静态图片不显示
  15. linux中目录权限777,Linux文件和目录的777、755、644权限解释
  16. 天龙mysql_天龙八部游戏数据库mysql安装.doc
  17. 这学期她选修了英语计算机和驾驶三门课程,选出最合适的翻译这个学期她选修了英语、计算机和驾驶三门课程...
  18. 群晖同步数据到天翼网盘
  19. 移动网维嘉忆网络基础设施介绍手稿笔记
  20. 记一次IOS打包报错

热门文章

  1. MT管理器 – 超强的手机文件管理器
  2. Linux中的定时自动执行功能(at,crontab)
  3. Windows10 安装Redis(图文教程)
  4. 工业表面缺陷检测数据集汇总
  5. 基于ssm的校园二手物品交换系统
  6. 数字识别digits.png研究2
  7. 怎么写一个高性能的导出接口
  8. flex java mysql_flex与java实现增删改查
  9. js学习笔记(1)什么是JavaScript
  10. 09年第一次团队活动感想