基于TLC5615芯片的DDS信号发生器(FPGA)
基于TLC5615芯片的DDS信号发生器(FPGA)
1. 前言
前面在我的博客中已经写过关于TLC5615的FPGA程序驱动以及DDS的原理和代码实现,这里便不多做介绍,这一次主要是把这两部分合并起来利用DA芯片实现正弦波输出,并且用示波器观察信号的频率。
2. 模块示意图
TLC5615是一款SPI接口的10位高精度DA转换芯片,因此将DDS模块整个封装成SPI接口。ROM根据FPGA提供的地址,将查找表中的数据输出到CTRL,由DIN输入到DA芯片TLC5615中。在Quartus中生成的RTL视图如下所示。
3. 代码部分
前面的博客中已经由DDS模块和TLC5615驱动模块的代码,这里就不在贴上,有需要的朋友可以查看我前面的博客中的代码。这里只给出例化这两个模块的顶层文件代码,如下。
module DDS_TLC5615(input sys_clk,input rst,output cs,output tlc5615_clk,output tlc5615_data);wire [9:0] DA;TLC5615_CTRL TLC5615_CTRL(.sys_clk(sys_clk),.rst(rst),.conv_en(1'b1), .conv_data({DA,2'b00}), .cs(cs),.conv_end(), .tlc5615_clk(tlc5615_clk),.tlc5615_data(tlc5615_data)
);DDS u_DDS(.clk (sys_clk),.rst_n(rst),.fword(85910),.pword(256),.DA (DA)
);endmodule
4. ROM初始化mif文件生成
mif文件的生成有多种方式,可以用matlab方法生成,也可以用人家做好的波形数据生成器一键自动生成,只是没有matlab方式可以有多种设置和选择,包括添加直流分量等等。matlab代码如下所示。
depth =1024;%采样深度,即采样个数
widths =10 ;%采样数据位宽
N=0:depth-1 ;%采样时刻
s= sin(2*pi*N/1024);%信号生成fidc = fopen('D:\Quartus\sinx.mif','wt') %创建mif文件
%写入mif文件的开头
fprintf(fidc,'depth=%d\n',depth);
fprintf(fidc,'width=%d\n',widths);
fprintf(fidc,'address_radix=UNS;\n');%地址格式,UNS表示保持现有格式
fprintf(fidc,'data_radix=UNS;\n');%数据格式
fprintf(fidc,'content begin\n');
%采样数据的输出
for(x =1:depth)fprintf(fidc,'%d:%d;\n',x-1,round(31*sin(2*pi*(x-1)/32)+32));
end;%round(A)将A中的元素按最近的整数取整,即四舍五入;
fprintf(fidc,'end;');
fclose(fidc);
L=31*sin(2*pi*(N-1)/32)+32;
plot(L);
数据深度为1024,位宽为10位(跟DA芯片保持一致);如果要修改,只需要根据需求修改前面四行代码即可。注意:应用于ROM时,sinx.mif文件里的第一和第二行后面要加“;” 分号。
在这里我采用的是用波形数据生成器,如下图所示。
生成的数据部分如下所示。
5.验证总结
连接好TLC5615模块各个引脚,将程序全编译后把sof文件下载到开发板上,然后将输出信号接入示波器观察,得到下图。
前面我设置的频率控制字为85910,系统时钟为50M,根据计算得到输出信号频率f=85910*50_000_000/2^32=1000Hz=1KHz,我们可以看到示波器测量显示的频率为1KHz,由此证明实验验证成功。
基于TLC5615芯片的DDS信号发生器(FPGA)相关推荐
- 基于STC89C52RC芯片 高频DDS信号发生器AD9851信号源方波正弦波系统设计
[01]设计大致思路 一开始是使用按键进行频率输出数值的增加或者减少,后改进成使用EC11调节输出数值,使数值的输出更加顺滑流畅. [02]参考资料 链接:https://pan.baidu.com/ ...
- dds信号发生器 fpga实现
目录 原理 实现 原理 dds信号发生器:以rom为核心,外围控制输出地址,达到输出不同频率和相位或者幅度的结构.(这里不考虑ad转换和滤波) 这里以正弦信号为例,用专用软件或者matlab生成一组正 ...
- STM32单片机可变频率幅度DDS信号发生器正弦波三角波方波AD9833
实践制作DIY- GC0094-DDS信号发生器 一.功能说明: 基于STM32单片机设计-DDS信号发生器 功能介绍: 硬件组成:STM32F103C系列最小系统板 +LCD1602显示器+AD98 ...
- 基于FPGA的简易DDS信号发生器的设计(一)
写这篇文章的本意不是为了探讨AD9767怎么使用,因为9767的控制实在是太简单了,准备好数据直接输出即可,和网上大多数的并行DA输出基本上一模一样,更麻烦的反而是硬件方面.发文的原因是最近一位很细心 ...
- CASE_05 基于FPGA的DDS信号发生器
该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 简介 2 DDS原理与方案 2.1 方案一:基于CORD ...
- 基于FPGA的简易DDS信号发生器的设计与验证
基于FPGA的简易DDS信号发生器的设计与验证 一,理论介绍 补充:举例理解 二,代码实现 1,实验目标 2,MATLAB代码 3,verilog代码及实现思路 一,理论介绍 DDS 是直接数字式频率 ...
- 基于FPGA的DDS信号发生器
基于FPGA的DDS信号发生器 两个礼拜前就像写这个文档了,但是一直鸽到现在,主要是人摆了.还有个技术上的原因是,我想用串口屏显示波形,在串口调试助手上返回的数据是对的,但是发到串口屏上啥反应 ...
- 【FPGA实例】基于FPGA的DDS信号发生器设计
原文链接来源:www.runoob.com 基于FPGA的DDS信号发生器设计 DDS 原理 ------DDS(直接频率合成) 技术是根据奈奎斯特抽样定理及数字处理技术,把一系列的模拟信号进行不失真 ...
- 基于 FPGA 的便携式 DDS 信号发生器与示波器
基于 FPGA 的便携式 DDS 信号发生器与示波器 项目来源:2019年第三届全国大学生FPGA创新设计竞赛 一.设计概述 1.1 设计目的 利用赛灵思公司 A7 系列板卡 EG01.AD9226 ...
- 【小梅哥FPGA进阶教程】第十一章 四通道幅频相可调DDS信号发生器
十一.四通道幅频相可调DDS信号发生器 本文由山东大学研友袁卓贡献,特此感谢 实验目标 实现多通道可调信号发生器 实验平台 芯航线FPGA核心板.ADDA模块 实验现象 实现基于FPGA的多通道可调信 ...
最新文章
- 成熟的男人思考的东西
- 官方宣布:谷歌开发者中国网站正式发布!
- Error:java: 无效的目标发行版: 11解决方案
- 《101 Windows Phone 7 Apps》读书笔记-BABY MILESTONES
- 新的log4j2.xml
- STM32F103单片机读取芯片自身ID
- mysql主从复制的流程_MYSQL主从复制部署流程
- Spring boot 开发组件
- Pr 入门教程,如何在节目监视器中修剪剪辑?
- CF55D-Beautiful numbers【数位dp】
- 两场直播丨易鲸捷分布式数据库的并发控制 、PostgreSQL日常工作分享
- 一个废物大学生对于视频爬取的小小的总结
- php 字符串编码方式转换,php字符串编码转换的常用几种方法_PHP教程
- 正确关闭迅雷右侧浏览器的方法
- 微软 android启动器,微软启动器Mirosoft Launcher
- qt creator在高分辨率笔记本上控件运行显示不全的问题解决方法
- Sonya and Exhibition 【模拟】
- 假如我年少有为不自卑
- unicode 和 GB2312 编码对应表
- 陆奇终于自立门户!YC撤离中国,陆奇成立新基金接盘
热门文章
- 电脑it族宝典常用电脑的从怎样保护自己的眼睛
- html为知笔记模板,为知笔记,模板制作.doc
- 【coq】函数语言设计 笔记 07 - indProp
- 云服务器需要芯片吗,什么时候手机不再需要芯片——计算云端化是不可逆转的未来...
- 今天终于知道了!阿里巴巴 P8、P9 及以上到底是什么水平?
- Vue——构造内嵌登录二维码
- 疫情期间,在家办公,这几款高效远程办公协作工具解决燃眉之急
- 从身边的移动支付说起
- Agile Scrum WaterFall通俗易懂的全过程整理
- 1106 Lowest Price in Supply Chain (25分)