DDS直接數(shù)字合成1 - 簡(jiǎn)介
讓我們看看FPGA DSS實(shí)現(xiàn)是多么容易。
本文引用地址:http://www.ex-cimer.com/article/202401/454847.htmDAC接口
好的,您的新FPGA板具有快速DAC(數(shù)模轉(zhuǎn)換器)模擬輸出。 下面是一個(gè)運(yùn)行頻率為10MHz的100位DAC的電路板設(shè)置。
在100MHz頻率下,FPGA每10ns向DAC提供一個(gè)新的10位值。
DAC輸出模擬信號(hào),對(duì)于周期性信號(hào),奈奎斯特限值表示可以達(dá)到高達(dá)50MHz的速度。
一個(gè)簡(jiǎn)單的DDS
DDS 通常用于生成周期性信號(hào)。 現(xiàn)在,讓我們嘗試一些簡(jiǎn)單的東西并生成一個(gè)方波。
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
我們使用計(jì)數(shù)器的第 8 位來(lái)生成輸出。 當(dāng)計(jì)數(shù)器時(shí)鐘頻率為100MHz時(shí),第8位以100MHz/2^8=390KHz的頻率切換。 所以DAC輸出是一個(gè)390KHz的方波信號(hào)。
現(xiàn)在,如果我們想要一個(gè)鋸齒波,讓我們用這行代碼替換代碼的最后兩行:
assign DAC_data = cnt[9:0];
三角形信號(hào)也不難。
assign DAC_data = cnt[10] ? ~cnt[9:0] : cnt[9:0];
我們創(chuàng)建了一個(gè) DSS,好吧。 但是,真實(shí)世界的 DDS 將允許我們:
創(chuàng)建任何形狀的信號(hào)。
創(chuàng)建任何頻率信號(hào)。
評(píng)論