闭关半年,学习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的信号发生器相关推荐

  1. 基于FPGA的信号发生器的设计

    基于FPGA的信号发生器的设计 首先先要介绍的是本设计的主芯片是ALTERA的一款芯片,芯片名称是EP2C5T144C8N.该芯片的LE单元有4608个,PLL锁相环具有2个,IO口管脚具有142个, ...

  2. 基于 FPGA Vivado 信号发生器设计(附源工程)

    今天给大侠带来基于 FPGA Vivado 信号发生器设计,开发板实现使用的是Digilent basys 3,如有想要入手 basys 3 开发板的,可以联系牛总:18511371833.话不多说, ...

  3. 基于FPGA的扩频系统设计(中)

    今天给大侠带来基于FPGA的扩频系统设计,由于篇幅较长,分三篇.今天带来第一篇,中篇.话不多说,上货. 导读 在无线通信系统中,普遍使用扩频通信技术,因此扩频技术对通信系统具有重要的现实意义.直接序列 ...

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

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

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

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

  6. 基于FPGA的简易DDS信号发生器的设计(一)

    写这篇文章的本意不是为了探讨AD9767怎么使用,因为9767的控制实在是太简单了,准备好数据直接输出即可,和网上大多数的并行DA输出基本上一模一样,更麻烦的反而是硬件方面.发文的原因是最近一位很细心 ...

  7. 基于FPGA的混沌信号发生器设计与实现

    提出基于FPGA设计混沌信号发生器的一种改进方法.首先,采用Euler算法,将连续混沌系统转换为离散混沌系统.其次,基于IEEE-754单精度浮点数标准和模块化设计理念,利用Quartus II软件, ...

  8. CASE_05 基于FPGA的DDS信号发生器

             该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 简介 2 DDS原理与方案 2.1 方案一:基于CORD ...

  9. 【FPGA实例】基于FPGA的DDS信号发生器设计

    原文链接来源:www.runoob.com 基于FPGA的DDS信号发生器设计 DDS 原理 ------DDS(直接频率合成) 技术是根据奈奎斯特抽样定理及数字处理技术,把一系列的模拟信号进行不失真 ...

最新文章

  1. 如何写一个脚本语言_如何写一个Nx schematic plugin?
  2. rpmdb open failed 的解决办法
  3. 阐述计算机网络的作用答案,计算机网络习题及答案(50页)-原创力文档
  4. mysql libstdc .so.6_编译安装mysql报错 ./mysqld: /usr/lib64/libstdc++.so.6:
  5. 京东公布3.8“她的节”消费数据:奢品服饰成交额同比增长170%
  6. maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
  7. python实现数据恢复_数据恢复/电子取证 非常有用的python库——Construct | 学步园...
  8. 面向对象三大特征:封装、继承、多态
  9. 利用Linq对集合元素合并、去重复处理
  10. [Soft]软件技术的两个趋势
  11. ubuntu 搭建 smtp 邮件服务器
  12. 微雪电子扫码模块使用
  13. wow插件入门资源整理
  14. 数据分析实战项目2:优衣库销售数据分析
  15. Facebook 全面禁止口罩广告,各平台如何打击哄抬、售假
  16. Tor 在 linux上使用
  17. Centos系统各种日志存详解
  18. WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)
  19. 人人网的相册里图片上传功能是怎样实现的
  20. 用户手册应当由谁写?

热门文章

  1. OpenCL ICD Loader运行测试暨解决报错:ERROR: App log and stub log differ.
  2. Mendix公司最新调查结果显示:低代码已从企业机构应急技术进阶为核心技术
  3. springboot+vue网上书城书店销售商城系统
  4. Mac快速还原最小化窗口
  5. IntelliJ IDEA设置修改字体大小与样式
  6. Dubbo-04 20190317
  7. 车路协同、车联网、智慧交通、智能网联车、自动驾驶、无人驾驶、高精度地图
  8. ROS教程:视觉传感器使用漫谈
  9. uniapp推出小程序SDK,会是一场技术驱动的行业变革吗?
  10. 学习笔记——Kaggle_Digit Recognizer (KNN算法 Python实现)