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

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。web

  1. 设计过程
    (1)获取sin波形的抽样点
    使用Guagle_wave工具,查看->全局参数,设置全局参数以下
    在这里插入图片描述
    设定波形->正弦波,文件->保存,将256个采样点保存为sin.mif文件。mif文件是quartus软件中ROM的存储文件,内容包含存储的数据和该数据在ROM中对应的地址。
    在这里插入图片描述

(2)ROM存储波形
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)计数器产生地址
在这里插入图片描述svg

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 )
begin
	if( !rst_n ) begin
		count_out <= 8'b0;
	end 
	else begin
		count_out <= count_out + 1'b1;
	end 
end 

endmodule

在这里插入图片描述

(4)例化顶层文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述工具

4.仿真结果
使用modelsim仿真分析,编写test bench。
在仿真的时候,没法以BDF原理图模式作顶层文件去调用(开发板实物能够,仿真仍是要用verilog去例化),这时候须要新建一个 Verilog 文件,并设置为顶层文件。
在这里插入图片描述学习

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