1、任意波形

首先参考之前写过的ip_rom这篇文章。 与上述文章不同的是。任意波形,只是将.mif文件替代掉。

https://blog.csdn.net/WJC1997/article/details/118994133?spm=1001.2014.3001.5501

例:生成一个正弦波

① 使用波形生成器软件,生成一个数据长度为256、位宽为8的正弦波后,保存。(保存的格式为.mif格式)
②这里点 Browse 选择 自己生成的 sin.mif 文件替代


③ 其余均参照之前的文章
1、radix—>unsigned 2、format—>auto… 3、format—>custom(max:255——min:0)

2、任意相位:—>改变初始相位(改变初始地址)即可

3、任意频率:

正弦波当前不改变情况下对应频率:
T = 20ns * 256——> f = 1/ T = 1 / (20ns * 256) =1 /20ns*1 /256 =50M / 256 = 195.312Khz

如何改变当前195.31KHz频率?

(1):当前开发板晶振频率50Mhz,改变晶振时钟大小从而改变输出频率(不太现实

(2):增加地址步进值,之前每次加一时得到频率195.31Khz,如果把地址的步进值设置值+2,意味着地址从0计数到255的时间缩短一半,从而频率增加二倍。(只能得到195.31KHz的整数倍,也不太现实



(3):增加一个虚拟地址计数器(temp_addr),虚拟地址计数器位宽比8大(8的整数倍),其中虚拟地址计数器作为当前地址的计数,不再为有效地址(addr),虚拟地址计数器每次加多少呢(取决于当前设置的虚拟地址计数器的位宽)?采用真实计数器地址取虚拟地址计数器高8位

T = 20ns * 256——> f = 1/ T = 1 / (20ns * 256) =1 /20ns*1 /256 =50M / 256 = 195.312Khz

f =50M / 256

195.31Khz = 50M / 256 = 50M / 2^8 *1(地址步进值)

1Khz = 50M/2^16B(地址步进值)—>B = 1Khz * 2^16/50Mhz = 1.31072
1Khz = 50M/2^24
B(地址步进值)—>B = 1Khz2^24/ 50Mhz = 335.54432
1Khz = 50M/2^32
B(地址步进值)—>B = 1Khz*2^32/50Mhz= 85899.34592

32位虚拟地址计数器位宽,真实地址取32位虚拟地址计数器对应的高8位
32位虚拟地址计数器能够计数的值: 2^32 = 4294967296
32位虚拟地址计数器对应的高8位:2^32 - 2^24 = 4278190080

F输出 = 50Mhz / 2^ N * B

**

测试:

**

  • 16位虚拟地址计数器位宽: Fclk = 763hz

  • 24位虚拟地址计数器位宽: Fclk = 1khz

    位宽越高,精度越高,误差越小。

①16位

module addr_ctrl(clk, rst_n, addr);input clk;input rst_n;output  [7:0] addr;     //控制ROM的地址变化(0~255)reg [15:0] temp_addr;always@ (posedge clk,negedge rst_n)beginif(rst_n == 1'b0)temp_addr <= 16'd0;else if(temp_addr < 2 ** 16 - 1'd1)temp_addr <= temp_addr + 16'd1;elsetemp_addr <= 16'd0;endassign addr  =  temp_addr[15 : 8];endmodule


②24位

module addr_ctrl(clk, rst_n, addr);input clk;input rst_n;output  [7:0] addr;     //控制ROM的地址变化(0~255)reg [23:0] temp_addr;always@ (posedge clk,negedge rst_n)beginif(rst_n == 1'b0)temp_addr <= 24'd0;else if(temp_addr < 2 ** 24 - 1'd1)temp_addr <= temp_addr + 24'd336;elsetemp_addr <= 24'd0;endassign addr  =  temp_addr[23 : 16];endmodule

4、结束语

“忽觉夏深年过半,不知不觉就已立秋了,空气中能捕捉那一丝凉意啦~
但还是最喜欢明媚的夏天,喜欢听着蝉在二重奏入睡,也喜欢烈火般的午后来一口冰凉的西瓜,又或者开一瓶冰汽水,喜欢穿着各色的裙子,那肆意昂扬的青春,小王小王要接着努力,不要偷懒呀~” ——小王随笔

DDS信号发生器:直接数字式频率合成器 (Direct Digital Synthesizer)相关推荐

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

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

  2. 基于FPGA的简易 DDS 信号发生器的设计

    文章目录 前言 一.pandas是什么? 二.ROM 内波形数据写入 1.MIF 2.DDS 模块参考代码 波形仿真 前言 DDS 是直接数字式频率合成器(Direct Digital Synthes ...

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

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

  4. FPGA--简易DDS信号发生器 (内涵DDS与CORDIC IP核详解)附源码

    学习内容 简易DDS信号发生器的设计与验证,产生所需的正弦波.方波锯齿波,并进行verilog验证. 实现功能 可以通过按键控制来输出不同的波形. 开发环境 xilinx spartan6开发板.IS ...

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

    文章目录 前言 一.DDS信号发生器 1.DDS是什么 2.DDS工作原理 二.模块代码 1.调用rom模块储存波形图 2.按键控制模块 2.按键消抖模块 3.DDS生成模块 4.顶层模块 5.RTL ...

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

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

  7. 【正点原子FPGA连载】第二十三章 DDS信号发生器实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  8. 基于FPGA的波、幅、频、相可调DDS信号发生器的设计

    声明:本文只对设计原理和过程作粗略的阐述,详细可以研究我贴出来的完整源代码,也可以私信交流. 若干略缩语解释: FPGA(Field Programmable Gate Array):现场可编程逻辑门 ...

  9. 双通道幅频相可调DDS 信号发生器

    DDS 基本原理 DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有相对带宽大,频率转换时间短.分辨率高和相位连续性好等优点.较容易实现频率.相 ...

最新文章

  1. 在阿里云主机上基于CentOS用vsftpd搭建FTP服务器
  2. 思科交换机Vlan配置以及VLAN应用场景
  3. win10系统下安装Navicat for MySql 连接出现错误解决方法
  4. nullnullC++ LANGUAGE TUTORIAL: CHARACTER ARRAYS...
  5. Spring:Spring相关知识介绍笔记
  6. echarts柱图根据值显示不同颜色_视频 | Origin画3D柱图,这篇讲透了!
  7. Spring Cloud Eureka 属性配置中文说明文档
  8. 零售连锁专卖信息化解决方案简介之一
  9. 可视化程序设计基础(team)——采访上届大佬
  10. IOS发布应用照片大小
  11. HTML 区块、内联元素
  12. tr php,?php } ? 啥意思?
  13. 微型计算机原理与应用彭楚武,微型计算机原理及其应用
  14. 【MapGIS必备】常见问题处理(第十四期)
  15. NetSetMan Pro专业网络设置管理器
  16. win10怎么卸载Edge浏览器
  17. 黑帽SEO网站优化常用的15种技巧
  18. 在android studio中制作九宫格图片
  19. 在建工程直接费用化_​在建工程资本化费用化区别
  20. seafile-搭建自己的私有云盘

热门文章

  1. python实用性函数分享_17.【Python学习分享文章】function(函数)1
  2. Spring bean的自动装配
  3. YOLO系列目标检测算法-YOLOv7
  4. Win7系统开机提示Flash Helper Service 已停止工作解决办法!
  5. JZOJ8.14(C组)帕秋莉·诺雷姬
  6. 密码打码就安全了吗?这款星标 20K 的去 『马赛克』 开源神器,用 AI 一秒还原高清原图!...
  7. 汽车美容店会员开卡办理html,洗车店会员卡管理系统线下线上会员一体化?
  8. linux显示文件的第一行数据库,Linux练习题
  9. Remote Development Tips and Tricks
  10. linux mate中文输入法,树莓派3b基于UbuntuMate下载中文输入法(示例代码)