基于FPGA的信号发生器
闭关半年,学习FPGA,其中学到了很多东西。使用的Verilog,学过VHDL,但是不熟悉。接下来的几篇文章都是关于FPGA的。转眼就到大四了。以后准备找FPGA的工作。开始正题,先看效果:
上面图片中第一排是FPGA输出到DA的数字信号,第二排是用AD采集到DA输出的数据。可调幅调频调波形,现在的波形只有正弦波,三角波,方波,可以在添加其他波形。调幅,是用硬件滑动变阻器调节。调频,是利用时钟分频,但是不能称作DDS,因为不能调到已知频率(因为我们按键每次分频系数加一),但可以自己计算分频系数,调到已知频率,频率按键控制。调波形,用的三个ROM存储各种波形的数据,按键来控制切换。
always @(posedge clk or negedge rst_n)
beginif(!rst_n)beginFREQ_ADJ <= 8'd0;cnt <= 2'd0;endelse case(key)4'b0001:if(cnt < 2'd2)cnt <= cnt + 1'b1;elsecnt <= 2'd0;4'b0011:if(FREQ_ADJ < 8'd255)FREQ_ADJ <= FREQ_ADJ + 1'b1;else FREQ_ADJ <= FREQ_ADJ;4'b0100:if(FREQ_ADJ > 8'd0)FREQ_ADJ <= FREQ_ADJ - 1'b1;else FREQ_ADJ <= FREQ_ADJ;default: FREQ_ADJ <= FREQ_ADJ;endcase
end
上述代码用来判断按键的值。
//频率调节计数器
always @(posedge clk or negedge rst_n) beginif(rst_n == 1'b0)freq_cnt <= 8'd0;else if(freq_cnt == FREQ_ADJ) freq_cnt <= 8'd0;else freq_cnt <= freq_cnt + 8'd1;
end
上述代码是用来分频的。
always @(posedge clk or negedge rst_n) beginif(rst_n == 1'b0)beginaddress_sin <= 8'd0;address_square <= 8'd0;address_triangle <= 8'd0;end else begincase(cnt)2'd0:if(freq_cnt == FREQ_ADJ)beginaddress_sin <= address_sin + 1'b1;rd_data <= data_sin;endelsebeginaddress_sin <= address_sin;rd_data <= data_sin;end2'd1:if(freq_cnt == FREQ_ADJ)beginaddress_square <= address_square + 1'b1;rd_data <= data_square;endelsebeginaddress_square <= address_square;rd_data <= data_square;end2'd2:if(freq_cnt == FREQ_ADJ)beginaddress_triangle <= address_triangle + 1'b1;rd_data <= data_triangle;endelsebeginaddress_triangle <= address_triangle;rd_data <= data_triangle;endendcase end
end
上述是用来调节波形。
原理我就不细讲了,很简单,不懂的找我。后面一定要做一个DDS来玩,这个东西比较理想,可能只能用于毕设或者自己玩。我使用的AD9708。我买的正点原子的AD/DA高速模块,我还做了一个数字示波器,刚好把这个模块功能榨干了。下一篇介绍。源码,今天上传不了,后面会留在评论区。可以私聊我,免费。QQ:1757334763
基于FPGA的信号发生器相关推荐
- 基于FPGA的信号发生器的设计
基于FPGA的信号发生器的设计 首先先要介绍的是本设计的主芯片是ALTERA的一款芯片,芯片名称是EP2C5T144C8N.该芯片的LE单元有4608个,PLL锁相环具有2个,IO口管脚具有142个, ...
- 基于 FPGA Vivado 信号发生器设计(附源工程)
今天给大侠带来基于 FPGA Vivado 信号发生器设计,开发板实现使用的是Digilent basys 3,如有想要入手 basys 3 开发板的,可以联系牛总:18511371833.话不多说, ...
- 基于FPGA的扩频系统设计(中)
今天给大侠带来基于FPGA的扩频系统设计,由于篇幅较长,分三篇.今天带来第一篇,中篇.话不多说,上货. 导读 在无线通信系统中,普遍使用扩频通信技术,因此扩频技术对通信系统具有重要的现实意义.直接序列 ...
- 基于FPGA的简易DDS信号发生器的设计与验证
基于FPGA的简易DDS信号发生器的设计与验证 一,理论介绍 补充:举例理解 二,代码实现 1,实验目标 2,MATLAB代码 3,verilog代码及实现思路 一,理论介绍 DDS 是直接数字式频率 ...
- 基于FPGA的DDS信号发生器
基于FPGA的DDS信号发生器 两个礼拜前就像写这个文档了,但是一直鸽到现在,主要是人摆了.还有个技术上的原因是,我想用串口屏显示波形,在串口调试助手上返回的数据是对的,但是发到串口屏上啥反应 ...
- 基于FPGA的简易DDS信号发生器的设计(一)
写这篇文章的本意不是为了探讨AD9767怎么使用,因为9767的控制实在是太简单了,准备好数据直接输出即可,和网上大多数的并行DA输出基本上一模一样,更麻烦的反而是硬件方面.发文的原因是最近一位很细心 ...
- 基于FPGA的混沌信号发生器设计与实现
提出基于FPGA设计混沌信号发生器的一种改进方法.首先,采用Euler算法,将连续混沌系统转换为离散混沌系统.其次,基于IEEE-754单精度浮点数标准和模块化设计理念,利用Quartus II软件, ...
- CASE_05 基于FPGA的DDS信号发生器
该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 简介 2 DDS原理与方案 2.1 方案一:基于CORD ...
- 【FPGA实例】基于FPGA的DDS信号发生器设计
原文链接来源:www.runoob.com 基于FPGA的DDS信号发生器设计 DDS 原理 ------DDS(直接频率合成) 技术是根据奈奎斯特抽样定理及数字处理技术,把一系列的模拟信号进行不失真 ...
最新文章
- 如何写一个脚本语言_如何写一个Nx schematic plugin?
- rpmdb open failed 的解决办法
- 阐述计算机网络的作用答案,计算机网络习题及答案(50页)-原创力文档
- mysql libstdc .so.6_编译安装mysql报错 ./mysqld: /usr/lib64/libstdc++.so.6:
- 京东公布3.8“她的节”消费数据:奢品服饰成交额同比增长170%
- maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
- python实现数据恢复_数据恢复/电子取证 非常有用的python库——Construct | 学步园...
- 面向对象三大特征:封装、继承、多态
- 利用Linq对集合元素合并、去重复处理
- [Soft]软件技术的两个趋势
- ubuntu 搭建 smtp 邮件服务器
- 微雪电子扫码模块使用
- wow插件入门资源整理
- 数据分析实战项目2:优衣库销售数据分析
- Facebook 全面禁止口罩广告,各平台如何打击哄抬、售假
- Tor 在 linux上使用
- Centos系统各种日志存详解
- WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)
- 人人网的相册里图片上传功能是怎样实现的
- 用户手册应当由谁写?
热门文章
- OpenCL ICD Loader运行测试暨解决报错:ERROR: App log and stub log differ.
- Mendix公司最新调查结果显示:低代码已从企业机构应急技术进阶为核心技术
- springboot+vue网上书城书店销售商城系统
- Mac快速还原最小化窗口
- IntelliJ IDEA设置修改字体大小与样式
- Dubbo-04 20190317
- 车路协同、车联网、智慧交通、智能网联车、自动驾驶、无人驾驶、高精度地图
- ROS教程:视觉传感器使用漫谈
- uniapp推出小程序SDK,会是一场技术驱动的行业变革吗?
- 学习笔记——Kaggle_Digit Recognizer (KNN算法 Python实现)