本思路是借鉴大佬的思路加上个人的一些总结进行汇总,由于是初学如有不足之处望各位大佬指正

FPGA是数字电路,怎么产生模拟的波形呢?如果单纯的使用FPGA是无论如何也产生不了连续不断的波形,一般都是使用FPGA产生数字信号,再利用DAC(Digital-to-Analog Converter)转化成为模拟的波形(如图1)。DAC芯片是一堆模拟电路的东西了,如果感兴趣的小伙伴可以在自己学习一下数字信号转化为模拟信号的过程。

 DDS的实现一般都是由频率控制器、相位累加器和波形存储器构成

我们直接从最终的输出开始分析,要输出的一个波形(数字意义上),例如正弦波。那么怎么输出呢,可以给出一个公式sin(2*pi*n/256),将n从0增长到255,就可以输出一个波形。如果这么写的话,就已经把一个周期分成了256份,也可以分成任意份,为了方便数字电路设计,一般都是2的整数次幂份。以下分析都当作一个周期分为256份。n等于一个数值就会输出一个值,把n所对应的位置看作是相位。例如n等于128时,输出的值正好对应于相位pi时。在FPGA中去计算sin,一般都是利用查表法,也就是说将一个周期分为N份,当输入的值比较接近与某一个相位时,就把这个相位点的值输出。那其实也就是把波形等分多份,存储在存储器中,而此时存储器就叫做波形存储器。存储器的输出是按照输入地址来决定的,如果想要输出一个完整的不断的波形,就需要地址从最小到最大不断循环,而存储器就会不断的输出波形。地址从最小到最大的累加,就被成为相位累加器。如果相位累加器1S从最小到最大循环了1000次,那么输出的波形的频率就为1KHz。故而相位累加器累加的速度决定输出波形的频率,而累加速度是由外部控制器来决定,所以此控制器被称作频率控制器。

首先如果想产生一个波形就需要一个储存的地方即(波形存储器)由于笔者的板子是小脚丫的MAX10 所以选择利用Quartus进行波形产生。在FPGA中有很多存储器资源可以来用,在此选择ROM来当作存储器。利用ROM当存储需要制作初始化文件.mif或者.hex,这两种都可以,在这里采用.mif文件。

.mif在Quartus 中显示为一个一个小区域

但是其实就是一种文件格式

此处可利用

某些计算工具将数值计算出来,然后填入表格中,这种速度太慢,也太麻烦。我们一般采用下面所述的方法:

利用mifmaker软件生成,此软件用起来比较简单。只需要简单的设置“设定波形”即可。在设定成功后,点击“文件->保存”即可生成对应的.mif文件。

当然如果你是matlab的大佬也可以使用matlab进行处理

产生了.mif后,就可以加载到ROM中。在quartus工程中,采用50MHz的时钟来进行驱动整个设计,让rom的地址每个时钟周期增加1。经过仿真可以得到正弦波。

产生了正弦波,在设置modelsim时,因为波形是按照无符号生成的数据,所以在设置成为模拟之前要先把进制改为无符号类型。即可产生图波形。经过使用modelsim工具测试,产生的波形的频率为195.313KHz。我们自己也算以下:系统的驱动时钟为50MHz,由f=1/T  得到一个周期为20ns,256个周期输出一个完整的波形。所以波形的周期为256x20ns=5120ns,经过计算频率为195.3125KHz,与上述使用modelsim工具测试结果一直,只是modelsim测试保留了频率的两位小数而已。

  相位累加器每次累加1,产生的波形的频率为195.313KHz,那么只要改变每次累加的数字就可以得到其他频率。如果每次增加的是整数比较好办,那如果每次增加的是带有小数呢?又该如何实现呢?

 笔者水平有限,如有不妥之处,恳请大佬指出。

FPGA进行数字信号处理通过DAC转化为波形的初步理解相关推荐

  1. FPGA实现数字信号处理的定点运算

    文章目录 背景 定点数的表示与计算 背景 首先,我们要明确的是不管是什么数字,一切数字在计算机中都是采用二进制表示的,就算你是小数点数.所以,这些概念,我们一定要屡清楚.下面,我们马上就来看看.转载需 ...

  2. 新书预告:Xilix FPGA数字信号处理设计——基础版

    掌握FPGA数字信号处理设计需满足三个条件:熟悉FPGA设计方法.理解数字信号处理理论.掌握理论的工程实现方法.对初学者来讲,每个条件看似都难以逾越.杜勇老师完美融合课程教学与工程设计的需求特点,以独 ...

  3. 【 数字信号处理 】定点数的表示之定点数的字长问题

    目录 字长基本问题 溢出问题 定点数据的量化模式: 定点数据的溢出模式: 字长基本问题 字长(位宽)和小数部分字长共同构成了定点数的两个要素.以wl表示字长,fl表示小数部分字长,那么有符号定点数以F ...

  4. 【 FPGA 】数字系统设计方法的演变

    前几天无意中打开了Vivado HLS这个设计工具,并看了几眼数据手册,大概是说有种更高抽象级别的设计方式,当然我是不知道的,也没有深究,今天看到<基于FPGA的数字信号处理>这本书,提到 ...

  5. matlab pburg,现代数字信号处理——AR模型

    1. AR模型概念观 AR模型是一种线性预测,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点),所以其本质类似于插值,其目的都是为了增加有效数据,只是AR模型是由N点递推,而插值是由两 ...

  6. qtcp多用户同时发信息的信号处理_FPGA进行数字信号处理的相关问题有哪些?来看数字信号处理系统架构分析!...

    关注并标星大同学吧 每周1次,打卡阅读 快速获取行业最新资讯 经验犹如一盏明灯的光芒 它使早已存在于头脑中 朦胧的东西豁然开朗 全文共3031字,预计阅读6分钟 笔经面经(第22期) 在2000年之后 ...

  7. FPGA数字信号处理(十一)ASK解调技术

    上一篇介绍了数字通信系统中ASK调制技术的FPGA实现.调制信号经过DAC.可选的带通滤波器.功率放大器.天线发送出去后,在接收端收到ASK信号后需要对其解调,提取出包含的信息(基带信号).无论在哪种 ...

  8. Matlab与FPGA数字信号处理系列——DDS信号发生器——Quartus ii 原理图法利用 ROM 存储波形实现DDS(1)

    MATLAB 与 FPGA无线通信.图像处理.数字信号处理系列 系统框图 基于FPGA的DDS信号发生器系统框图如下图所示,采取查表法. (1)对一个完整周期的波形进行采样,将采样点存在ROM中: ( ...

  9. FPGA数字信号处理(十五)多速率FIR滤波器

    该篇是FPGA数字信号处理的第15篇,选题为多速率信号处理系统中用到的多速率FIR滤波器.本文将简单介绍多速率信号处理系统的基本概念,以及使用Quartus和Vivado的IP核设计多速率FIR滤波器 ...

最新文章

  1. 实战排查由于系统负载引起的服务响应异常
  2. 竞赛 | 我们标注了34G真实线下门店数据,等你pick!
  3. C语言 单链表查找出倒数第,查找单链表倒数第k个元素
  4. idea设置自动清除不需要的import包,自动清除导包
  5. Powershell 批量替换文件
  6. ASP.NET 页面验证cookie
  7. AOJ0028 Mode Value【出现次数最多+map+vector+水题】
  8. eclipse删除mysql数据库_在Eclipse中测试MySQL-JDBC(4)删除数据库中的数据【D】
  9. movs 数据传送指令_深入理解计算机系统(3.3)---数据传送(或者说复制)指令详解...
  10. xcode-select --install选择安装安装失败:下载失败网络问题(2:散列问题解决方案)
  11. 【AIOT】3-1 物联网项目必备功能模块
  12. 【小麦苗课堂】高可用培训(RAC+DG+OGG)--包括11g、12c、18c、19c等版本
  13. VUE如何快速做一个轮播图
  14. Dell服务器raid5扩容及相关技术mark
  15. 【并发编程】(学习笔记-共享模型之管程)-part3
  16. 初窥Xcode4 -- Xcode4主题样式、快捷键等常用设置
  17. 称重管理系统服务器不通,如何解决在无人值守称重管理系统的漏洞
  18. wetool 接入图灵机器人_wetool自动接受新好友wetool使用教程-购买
  19. 如何通过Java批量重命名文件名称
  20. 什么是Docker? 集装箱革命的火花

热门文章

  1. 解析人工智能与人类智慧的求同存异
  2. Arrays.aslist新建的list集合不能add()、remove()你知道吗?
  3. 防范SQL注入式攻击
  4. struct sysinfo 用法
  5. Machine learning strategies for systems with invariance properties( 具有不变性系统的机器学习策略 )2016年Julia Ling
  6. JavaScript中的经典题型(类数组、CSS Sprites、事件委托、经典去重、原型链、闭包、深浅克隆、附带思路流程和源码)
  7. OpenCV——绘制等高线
  8. 自己开发的j2ee Web快速开发平台简介
  9. 凭什么让你“转贴”?
  10. 历史气象数据网站及操作教程