DDS直接数字合成1 - 简介

嵌入式系统 时间:2024-01-16来源:EEPW编译

让我们看看FPGA DSS实现是多么容易。

DAC接口

好的,您的新FPGA板具有快速DAC(数模转换器)模拟输出。 下面是一个运行频率为10MHz的100位DAC的电路板设置。

在100MHz频率下,FPGA每10ns向DAC提供一个新的10位值。
DAC输出模拟信号,对于周期性信号,奈奎斯特限值表示可以达到高达50MHz的速度。

一个简单的DDS

DDS 通常用于生成周期性信号。 现在,让我们尝试一些简单的东西并生成一个方波。

module SimpleDDS(DAC_clk, DAC_data);
input DAC_clk;
output [9:0] DAC_data;

// let's create a 16 bits free-running binary counter
reg [15:0] cnt;
always @(posedge DAC_clk) cnt <= cnt + 16'h1;

// and use it to generate the DAC signal output
wire cnt_tap = cnt[7];     // we take one bit out of the counter (here bit 7 = the 8th bit)
assign DAC_data = {10{cnt_tap}};   // and we duplicate it 10 times to create the 10-bits DAC value
                                    // with the maximum possible amplitude
endmodule

我们使用计数器的第 8 位来生成输出。 当计数器时钟频率为100MHz时,第8位以100MHz/2^8=390KHz的频率切换。 所以DAC输出是一个390KHz的方波信号。

现在,如果我们想要一个锯齿波,让我们用这行代码替换代码的最后两行:

assign DAC_data = cnt[9:0];

三角形信号也不难。

assign DAC_data = cnt[10] ? ~cnt[9:0] : cnt[9:0];

我们创建了一个 DSS,好吧。 但是,真实世界的 DDS 将允许我们:

上一篇:DDS直接数字合成 (eepw.com.cn)

下一篇:DDS直接数字合成2 - 任意信号

关键词: FPGA DDS DAC接口

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章


用户评论

请文明上网,做现代文明人
验证码:
查看电脑版