dds信号发生器 fpga实现

目录原理实现原理dds信号发生器:以rom为核心,外围控制输出地址,达到输出不同频率和相位或者幅度的结构。(这里不考虑ad转换和滤波)这里以正弦信号为例,用专用软件或者matlab生成一组正弦信号值的文件,这里使用quartus自带的ip核,将文件读入rom。剩下的就是控制输出地址来达到改变频率、相位和幅度的目的。实现这里分为3个模块一个模块实现按键消抖一个模块实现dds具体功能一个模块为rom例化按键消抖模块使用2个按键,模块消抖后输出高电平有效module key_debounc
摘要由CSDN通过智能技术生成

目录

原理

dds信号发生器:以rom为核心,外围控制输出地址,达到输出不同频率和相位或者幅度的结构。(这里不考虑ad转换和滤波)
这里以正弦信号为例,用专用软件或者matlab生成一组正弦信号值的文件,这里使用quartus自带的ip核,将文件读入rom。
剩下的就是控制输出地址来达到改变频率、相位和幅度的目的。

实现

这里分为3个模块
一个模块实现按键消抖
一个模块实现dds具体功能
一个模块为rom例化

按键消抖模块
使用2个按键,模块消抖后输出高电平有效

module key_debounce #(parameter KEY_W = 2,TIME_20MS = 1000_000)(
	input					clk		,
	input					rst_n	,
	input		[KEY_W-1:0]	key_in 	,
	
	output	reg	[KEY_W-1:0]	key_out	 //检测到按下,输出一个周期的高脉冲,其他时刻为0
);
	
//信号定义
	reg		[19:0]		cnt		;
	wire				add_cnt	;
	wire				end_cnt	;
	reg					add_flag;
	
	reg		[KEY_W-1:0]	key_r0	;//同步按键输入
	reg		[KEY_W-1:0]	key_r1	;//打拍
	wire	[KEY_W-1:0]	nedge	;//检测下降沿
	
//计数器  检测到下降沿的时候,开启计数器延时20ms
	always @(posedge clk or negedge rst_n)begin 
		if(!rst_n)begin 
			cnt <= 0;
		end
		else if(add_cnt)begin 
			if(end_cnt)
				cnt 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值