如何用FPGA输出正弦波、三角波等
如何用FPGA输出正弦波、三角波等
- 一、开发工具
- 二、步骤
- 1、设置ROM IP核
- 2、程序编写
一、开发工具
1、 软件平台:Quartus ll
2、芯片:不重要
二、步骤
1、设置ROM IP核
设置ROM IP核,根据使用的DA芯片选择对应的位数和数据量,选择生成好的mif文件,一个存储波形的ROM IP核就创建好了。
下面是详细步骤:
1、点击Tool
2、点击MegaWizard,出现下图,点击Next。
3、在框中输入ROM选择ROM:1-PORT,左边框中选择保存地址和创建文件名。选择完毕点击Next进入IP核设置界面。
4、根据DA选择相应的位宽和容量。
5、红框里面是是否优化,我一般取消勾选。
6、在file name处选择需要用到的数组.mif文件,剩下就是一路点击next,这样一个ROM IP核就创建好了。
2、程序编写
开始编写程序调用ROM IP核,根据之前设定的参数,软件会自动生成相应的代码,至于代码怎么写我们不用管,我们只需要了解三个参数就够了,分别是:address(数据地址)、clock(时钟)、q(读出的数据),顶层文件编写如图,将信号链接到需要使用ROM IP核的模块。
对于这三个参数,clock
可以使用系统时钟,所以直接关联到系统时钟就可以了,address
是ROM核中数据存放的地址,由于我们是输出的正弦波是连续信号,所以地址直接累加就可以了,q是ROM核根据输入的地址读出的数据,也就是我们想要的数据,这个数据是可以直接发给DA芯片的。
下面展示一些 ROM IP核的读代码
。
module da_wave_send(input clk , //时钟input rst_n , //复位信号,低电平有效input [11:0] rd_data , //ROM读出的数据output reg [11:0] rd_addr , //读ROM地址output [11:0] da_data1 //输出给DA的数据
);
parameter FREQ_ADJ = 12'd900; //频率调节
reg [11:0] freq_cnt ;
assign da_data1 = rd_data;
always @(posedge clk or negedge rst_n) beginif(rst_n == 1'b0)freq_cnt <= 12'd0;else if(freq_cnt == FREQ_ADJ) freq_cnt <= 12'd0;else freq_cnt <= freq_cnt + 12'd1;
end
always @(posedge clk or negedge rst_n) beginif(rst_n == 1'b0)rd_addr <= 1'd0;else beginif(freq_cnt == FREQ_ADJ) beginrd_addr <= rd_addr + 1'b1;end
end
endmodule
上面这些代码就是将ROM IP核中的数据读出的程序,其中包括了发送到DA芯片驱动的接口。将这些读出的数据通过DA芯片输出就是一个完整的波形了。波形文件用的是正点原子自带的软件生成的,发出什么样的波形是根据你生成什么文件决定的。
之所以用调用ROM IP核的方法去输出波形,是因为这种方法相对简单一点。其实也可以使用CORDIC 算法,没有基础就使用这个算法是相当吃力的,所以还是怎么简单怎么来呗。
DA芯片使用的是TLV5614,一个十二位多通道的芯片,速度还凑活,比不上高速的DA芯片,正常使用只要驱动调好了就没问题。
如何用FPGA输出正弦波、三角波等相关推荐
- dac0832三角波c语言程序,单片机控制DAC0832输出正弦波三角波汇编程序
org 0000h LJMP MAIN ORG 0003H LJMP L0 MAIN:MOV R2,#0aH ;调幅倍数 MOV R4,#01H ...
- STM32单片机可变频率幅度DDS信号发生器正弦波三角波方波AD9833
实践制作DIY- GC0094-DDS信号发生器 一.功能说明: 基于STM32单片机设计-DDS信号发生器 功能介绍: 硬件组成:STM32F103C系列最小系统板 +LCD1602显示器+AD98 ...
- dac0832产生梯形波程序C语言,在8086系统中用DAC0832输出一个三角波,一个梯形波,和一个正弦波。...
满意答案 晓玫1022 2014.09.28 采纳率:57% 等级:13 已帮助:8429人 MOV DX,PORTD MOV AL,0FFH Repeat:INC AL OUT DX,AL J ...
- python面试题之如何用Python输出一个斐波那契数列
so eary! 1 a,b = 0, 1 2 while b<100: 3 print (b), 4 a, b = b, a+b 本文转载自:python黑洞网 原文链接:http://www ...
- dac0832三角波c语言程序,单片机驱动dac0832输出方波三角波正玄波程序
电路图 仿真文件及完整的源代码下载地址:http://www.51hei.com/bbs/dpj-20395-1.html 下面是汇编程序源码,可以用按键来控制 org 0000h ajmp main ...
- python输出斐波那契数列_python面试题之如何用Python输出一个斐波那契数列
[BZOJ1623] [Usaco2008 Open]Cow Cars 奶牛飞车 贪心 SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. ...
- python正弦波和等腰三角波_51proteus仿真:生成方波、正弦波、锯齿波和三角波
51proteus仿真:生成方波.正弦波.锯齿波和三角波 这个proteus仿真是一个网友做的,该仿真可以生成方波.正弦波.锯齿波和三角波,并且还可以用按键调整波形. 不过,对初学者来讲,可能有点复杂 ...
- c语言编程三角波,STM32 三角波输出
原标题:STM32 三角波输出 还可以生成三角波,跟之前的生成正弦波和阶梯波不同,它不需要DMA帮助描点来画出波形,而是自己就可以生成三角波,因为三角波非常简单,只是线性的波形,所以对于DAC来说完全 ...
- 51proteus仿真:生成方波、正弦波、锯齿波和三角波
51proteus仿真:生成方波.正弦波.锯齿波和三角波 这个proteus仿真是一个网友做的,该仿真可以生成方波.正弦波.锯齿波和三角波,并且还可以用按键调整波形. 不过,对初学者来讲,可能有点复杂 ...
最新文章
- [ACTF新生赛2020]fungame
- html5列表去掉符号,从Python字符串中删除不在允许列表中的HTML标记
- win10专业版占多少空间_win10技巧:使用win10轻松自动恢复系统!
- Faster-RCNN训练自己数据集遇到的问题集锦
- iOS 开发周报:Apple 发布 iPhone 7 / 7 Plus 、Apple Watch 2 等新品
- 利用Python随机或暴力生成密码
- ReactNative——打包发布
- 解压mysql server_2018-05-09 MySql-server解压缩版安装及配置
- mdadm命令参数详解
- C# Invoke 使用 异步委托
- inster into java_SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- Android应用开发提高篇(6)-----FaceDetector(人脸检测)
- Java 将Excel转为XML
- php抽奖中了奖品后怎么处理,抽奖程序,求思路.该怎么处理
- qgis比例尺级别设置
- CS5211:EDP转LVDS转换器,可替代PS8622,PS8625,CH7511等芯片!
- tcl电视显示服务器异常1500,TCL 智能液晶电视常见故障分析检修实例
- 计算机中0和1的表示
- Cloud Native 演进可行性研究
- C++中read和write的区别
热门文章
- 阿里笔试题(2017在线编程题)-- 数串分组 --Java实现
- 《常规自然推广方法以及推广方案》
- 全国计算机模拟手机,2021年9月份全国计算机等级考试[计算机基础及MS Office应用]全真模拟题及答案(手机版)...
- web漏洞挖掘指南-前端跨域漏洞
- vant 索引城市不对_vue,vant,使用过程中 Swipe 轮播自定义大小遇到的坑
- 7-2 I Love GPLT (5 分)
- 用Stirling公式的应用
- winform的子窗体关闭刷新主窗体绑定数据以及刷新的总结
- 第二课:Mstar-Non-OS方案(二)——驱动LVDS显示屏
- 计算机组成mod2是什么意思,计算机组成原理常见概念计算