MATLAB 与 FPGA无线通信、图像处理、数字信号处理系列
  1. 系统框图
    基于FPGA的DDS信号发生器系统框图如下图所示,采取查表法。
    (1)对一个完整周期的波形进行采样,将采样点存在ROM中;
    (2)依次给出ROM的访问地址,即可输出一个完整的波形;
    (3)通过设置不同的频率控制字可以让ROM的访问地址以不同的步进值访问,这样起到改变输出波形的频率的作用;
    (4)通过设置不同的相位控制字可以让ROM的访问时的初始地址改变,这样起到改变输出波形初始相位的作用。
  2. DDS产生固定频率和固定相位的正弦信号
    首先产生固定频率和相位的正弦信号,一个周期采样 256 点,数据位宽为 8 位,需要:
    (1)在 ROM 中存储波形,ROM 设置参数:单口ROM,数据深度 256,数据位宽 8 位,输出后可以接 8 位的 DAC 数模转换模块;
    (2)使用一个计数器产生ROM的地址,计数器输出位宽8位;
    (3)使用100 MHz的时钟,时钟周期为 10 ns,每个时钟输出一个正弦波的采样点,一个正弦波周期有 256 个点,需要 256 个时钟周期,即 2560 ns,这样,输出的正弦波的频率为 100 MHz / 256 = 390.625 KHz。
Quartus ii 实现 8 位计数器教程——Verilog实现8位计数器


这样设置后,即可产生一个标准正弦波,其参数为:
(1)幅值由DAC决定,DAC选定后赋值即固定(比如 0 ~ 5V),不可通过FPGA调幅,后级可以通过 VGA(压控放大器)等调幅;
(2)频率为 390.625 KHz,不可调频;
(3)初始相位为0。

  1. 设计过程
    (1)获取sin波形的抽样点
    使用Guagle_wave工具,查看->全局参数,设置全局参数如下

    设定波形->正弦波,文件->保存,将256个采样点保存为sin.mif文件。mif文件是quartus软件中ROM的存储文件,内容包含存储的数据和该数据在ROM中对应的地址。

(2)ROM存储波形






(3)计数器产生地址

Quartus ii 实现 8 位计数器教程——Verilog实现8位计数器
module count(clk,rst_n,count_out
);input clk;
input rst_n;
output reg [7:0] count_out;always @ ( posedge clk or negedge rst_n )
beginif( !rst_n ) begincount_out <= 8'b0;end else begincount_out <= count_out + 1'b1;end
end endmodule

(4)例化顶层文件


4.仿真结果
使用modelsim仿真分析,编写test bench。
在仿真的时候,无法以BDF原理图模式做顶层文件去调用(开发板实物可以,仿真还是要用verilog去例化),这时候需要新建一个 Verilog 文件,并设置为顶层文件。

MATLAB 与 FPGA无线通信、图像处理、数字信号处理系列
2017年全国大学生电子设计竞赛综合测评题目解析——Multisim仿真
Verilog学习笔记——有符号数的乘法和加法

欢迎关注:FPGA探索者

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

  1. MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列

    FPCA.数字IC笔试题系列 不容错过的FPGA/数字IC秋招笔试面试汇总帖(2022届) 1. FPGA.数字IC系列(1)--乐鑫科技2021数字IC提前批笔试 2. FPGA.数字IC系列(2) ...

  2. FPGADesigner《FPGA数字信号处理系列》目录与传送门

    FPGA数字信号处理(1)数字混频(NCO与DDS的使用): https://blog.csdn.net/fpgadesigner/article/details/80512067 FPGA数字信号处 ...

  3. FPGA数字信号处理(四)Quartus FIR IP核实现

    该篇是FPGA数字信号处理的第四篇,选题为DSP系统中极其常用的FIR滤波器.本文将在前两篇的基础上,继续介绍在Quartus开发环境下使用Altera(或者叫Intel)提供的FIR IP核进行FI ...

  4. 怎么将matlab滤波器系数导出_matlab与FPGA数字信号处理系列(1)——通过matlab工具箱设计FIR数字滤波器...

    以99阶FIR低通滤波器为例,学习使用matlab的fdatool工具箱设计滤波器,并将滤波器系数导出到.coe文件,联合Vivado进行FPGA的FIR滤波器设计. 本文滤波器参数为:低通FIR滤波 ...

  5. FPGA数字信号处理(八)Quartus FFT IP核实现

    本系列的2-7篇分别介绍了FIR和IIR滤波器的FPGA实现.除了数字滤波器外,快速傅里叶变换(FFT)也是DSP系统常用的运算单元,用于对信号进行频域分析.FFT算法的实现很复杂,但Altera和X ...

  6. FPGA数字信号处理(一)数字混频(NCO与DDS的使用)

    这是数字信号处理系列的第一篇,以简单的数字混频为例,介绍在FPGA程序设计中很重要的二进制原码.补码:有符号数.无符号数的问题.本文不是像课本那样介绍这些基础概念,而是介绍很实际的设计方法. 借助于数 ...

  7. FPGA数字信号处理(九)Vivado FFT IP核实现

    该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算.上篇介绍了Quartus环境下FFT IP核的使用"FPGA数字信号处理(八)Quartus FFT IP核实现h ...

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

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

  9. FPGA数字信号处理(二)并行FIR滤波器Verilog设计

    该篇是FPGA数字信号处理的第二篇,选题为DSP系统中极其常用的FIR滤波器.本文将简单介绍FIR滤波器的原理,详细介绍使用Verilog HDL设计并行FIR滤波器的流程和方法.接下来几篇会介绍串行 ...

最新文章

  1. APP开发两年的心得:App代码架构设计(1)
  2. spring显式获取bean
  3. 调用枚举接口重写方法提示找不到符号_看看人家那后端API接口写得,那叫一个巴适~...
  4. 手机浏览器无法获取COOKIE的原因
  5. 夏令时 DST (Daylight Saving Time) java中的夏令时。
  6. litepal更好的操作sqlite3,配置与基本操作
  7. 26. Magento 常用(1)
  8. zabbix2.4监控mysql_Zabbix 2.4.5自带MySQL监控的配置使用教程
  9. cocos-lua 获取鼠标点击位置
  10. 三星固态驱动安装失败_三星950 Pro固态硬盘用U盘装win7失败解决教程
  11. matlab代码实现四阶龙格库塔求解微分方程
  12. 如果你是互联网创业者,这个视频值1万元
  13. 计算机音乐超级马丽,你与你的音乐梦想,只差一台数学计算器
  14. 硬件测试必需的5个流程,每一个步骤都不能少!
  15. 蓝雪花怎么养 蓝雪花养殖方法及注意事项
  16. asp服务器管理系统,ASP服务器软件
  17. 揭秘微信对方正在输入……到底表示什么意思?
  18. 每日一题----空瓶子喝可乐问题
  19. 计算机游戏32,ppsspp模拟器pc版
  20. 金盾金狮点盾云鹏保宝等加密视频录屏翻录提取教程

热门文章

  1. 【技术美术】盘点十大可捏脸的单机游戏
  2. python生成文件怎么在文件名后面加1而不是覆盖_python脚本——将同一个文件夹下的相同文件名的不同文件分开...
  3. node判断文件是否存在
  4. php 支付宝证书 单笔转账到账户
  5. 1、Linux基本命令
  6. jquery触发a标签点击事件
  7. SL8433B 5.5V~60V内置MOS高端电流检测降压LED恒流驱动器
  8. HTML:表格table
  9. 【金猿人物展】易观于揚:2021年将翻开“留量时代”的序章
  10. jplayer实现单曲循环