原文作者:FPGA设计论坛

基于Verilog的DDS波形发生器的分析与实现(三角波、正弦波)

最近学习了一下关于DDS的相关知识,本篇概要记录一下自己的理解与实现。

DDS信号发生器采用直接数字频率合成(Direct Digital Synthesis,简称DDS)技术,把信号发生器的频率稳定度、准确度提高到与基准频率相同的水平,并且可以在很宽的频率范围内进行精细的频率调节。采用这种方法设计的信号源可工作于调制状态,可对输出电平进行调节,也可输出各种波形。

下图为DDS 的基本结构图

由上图 可以看出,DDS 主要由相位累加器、相位调制器、波形数据表以及 D/A 转换器构成。

相位累加部分控制输出波形频率,相位字输入部分来改变相位,ROM表中存储一个周期波形的幅度值。

其中相位累加器由 N 位加法器与 N 位寄存器构成。每来一个时钟,加法器就将频率控制字与累加寄存器输出的相位数据相加,相加的结果又反馈至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。即在每一个时钟脉冲输入时,相位累加器便把频率控制字累加一次。相位累加器输出的数据就是合成信号的相位。相位累加器的溢出频率,就是 DDS 输出的信号频率。(解释:定义一个N位寄存器,一般为32位,如果来一个时钟计一次,那就要计2^32次才满,这样太慢,因此引入频率控制字设为A,以前以1为单位,现在以A为单位计数累加,可以控制计数更新的速度)

用相位累加器输出的数据,作为波形存储器的相位采样地址,这样就可以把存储在波形存储器里的波形采样值经查表找出,完成相位到幅度的转换。波形存储器的输出送到 D/A 转换器,由 D/A 转换器将数字信号转换成模拟信号输出。

一般32位累加器不会全用来输出作为ROM地址,会根据ROM深度来适当截取高位作为地址,其余位可以作为控制频率。例如现在ROM中存储波形一个周期数据每个数据位宽8位,则数据范围为0-2^8(256),但是要产生一个周期波形需要512个,因为0-256一般是上升期,256-0处于下降期,那么现在ROM深度为512,则地址位宽应为9位,2的9次方=512,则32位累加器只需高9位即可[31:23]寻址,其余位用来控制地址改变的频率。假如现在每来一个时钟地址变一次,那么其余位(即频率控制字A)应设置为32‘h800000即32’b0000_0000_10000000_0000_0000_0000_0000,最高位1其实就是地址的最低位,累加器初始为0,来个时钟沿加一次A,高9位地址变化一次。要想两个时钟变化一次,那么A就是32‘b0000_00000100_0000_0000_0000_0000_0000,两个时钟之后地址的最低位才会变化。这样通过对频率控制字A的设置就可以达到改变地址的变化频率,其实就是输出的频率。不知道这样说看者能否理解。

这里相位累加器位数为 N 位(N 的取值范围实际应用中一般为 24~32),相当于把正弦信号在相位上的精度定义为 N 位,所以其分辨率为1 /2

​基于Verilog的DDS波形发生器的分析与实现(三角波、正弦波)相关推荐

  1. 【STM32入门】这个项目绝了,用手势来产生波形,基于手势控制的波形发生器

    大家好,我是张巧龙,之前有给实验室学生出了一道关于STM32的题:基于手势控制的波形产生题,题目简单,但综合性较强. 有些学生完成的还不错,个人觉得此题用来 入门 STM32再合适不过了. 展示视频: ...

  2. 基于51单片机的波形发生器(四种波形)(毕业设计资料)

    四种波形的产生,包括锯齿波.三角波.方波.正弦波.通过LCD液晶显示当前波形以及波形的频率.可以通过按键切换波形,并可以通过按键进行设置当前波形的频率大小,也可以设置频率设置不步进值.资料从主页链接中 ...

  3. 单片机课设基于51单片机的波形发生器(公开资源)(四种波形)(同时输出两种波形)

    单片机课设-波形发生器 前言 一.课设任务是什么? 二.如何解决这几个任务? 三.仿真原理图 四.代码 4.1 LCD1602代码 4.2 波形输出以及8*8点阵显示代码 4.3 波形选择 五.仿真源 ...

  4. 基于51单片机的波形发生器proteus仿真数码管LCD12864显示

    仿真图1简介: 本系统采用51单片机作为系统的MCU(具体型号见下图),该系统显示器为四位数码管,可实时显示波形的参数情况 可显示四种波形,分别是方波.正弦波.三角波.锯齿波. 该设计具有电压表功能, ...

  5. 基于运放的波形发生器系统设计

    某项目设计为: 设计出包含电源稳压模块.信号发生模块.信号处理模块,信号输出放大模块的一个波形发生器系统. 1.包含稳压电路,在输入5-20v下稳压5v输出 2.不可用ne555等专用 3.波形发生芯 ...

  6. 基于51单片机的波形发生器设计(proteus仿真波幅周期可调)

    /********************************************* Waveform generator based on 512023/1/10 ************* ...

  7. 基于51单片机的波形发生器汇编语言proteus仿真

    功能: 系统采用STC89C52作为单片机 采用汇编语言撰写 可产生三角波.方波.正弦波三种波形 DAC芯片采用的是DAC0832,外加一个运放做波形处理 仿真电路图: 参考代码: ORG 0000H ...

  8. 基于matlab的pwm波形仿真与分析,基于Matlab的单相电压型PWM整流电路仿真与设计

    基于Matlab的单相电压型PWM整流电路仿真与设计 基于Matlab的单相电压型PWM整流电路仿真与设计 摘 要 现代工业中,很多场合需要进行电能变换,例如把直流电能变为交流电能,交流电能变为直流电 ...

  9. ARM Linux 基于S3C2451的AD9833波形发生器/Linux字符驱动的理解

    预留 转载于:https://www.cnblogs.com/sigma0/p/9189190.html

最新文章

  1. 中国学前教育行业投资机会评估与运营展望规划报告2022版
  2. 神策专访丨摩天轮票务陈校校:在线票务平台精准营销之道
  3. 技术QA:如何安装并启用BITS和WebDAV?
  4. 【分享】linux下u盘使用
  5. LeetCode篇之链表:83(去重问题)
  6. 设计模式(4)—— 简单工厂模式(Simple Factory,创建型)
  7. Hive中NULL和''
  8. ip-sysctl.txt 文件
  9. Java读取.mdb文件
  10. sql 去重查询 distinct
  11. linux c语言 修改mac地址,C语言根据MAC地址查找网卡并修改IP地址
  12. Faceswap文档之---使用手册
  13. 游戏开发:目前主流游戏引擎的分析报告
  14. JOYMY九脉换弹电子烟评测
  15. SpringBoot + MyBatis-Plus + Shiro授权认证
  16. Jquery之遍历元素
  17. 51信用卡不止于想象力?
  18. 千万不能笑,千万别笑,不能笑!我真的不是有意逗你笑的~
  19. 朝九晚五的程序员如何提高开发技能
  20. 游戏服务端框架之本服实时排行榜

热门文章

  1. 15-Workbench 载荷与约束
  2. 为Garmin Edge 520码表添加地图,创建路线,导入路线
  3. Kubernetes监控体系(11)-alertmanager安装和配置
  4. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 B.我觉得海星
  5. 托福听力考试与大学英语六级听力考试的对比浅析|8:15~8:50
  6. 9.杂项讨论 Miscellany
  7. 服务器pe安装win7系统安装教程,u盘pe重装win7系统图文教程
  8. CnOpenData中国专利无效宣告数据
  9. 【Oracle】—— 依次按多列排序
  10. 【数据结构】二叉树(上)