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。

  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 )
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学习笔记——有符号数的乘法和加法

欢迎关注:FPGA探索者
在这里插入图片描述

  • 8
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值