AC620FPGA學習筆記——PLL與NCO
阿新 • • 發佈:2018-12-11
AC620FPGA學習筆記——PLL與NCO
PLL&NCO
工程地址:https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/FPGA/class09_NCO
使用之前的DAC輸出模組 配合 PLL 與 NCO模組完成正弦波發生器
整體框架
PLL配置
NCO配置
程式碼部分
phi_inc_i 與 freq_mod_i用於控制頻率
公式: outclk = CLK / (2^32 / (phi_inc_i + freq_mod_i))
CLK是NCO的工作頻率
outclk是輸出的訊號頻率
程式碼過多更多程式碼在github
頂層程式碼
module NCO(
dac_sclk,
dac_din,
dac_csn,
clk,
rst
);
output dac_sclk,dac_din,dac_csn;
input clk,rst;
wire _rst;
wire _clk;
wire _norst;
PLL PLL1 (
. areset(_norst),
.inclk0(clk),
.c0(_clk),
.locked(_rst)
);
wire [11:0]data_1;
wire [11:0]data_2;
nco_test nco_test1 (
.clk(_clk),
.clken(_rst),
.phi_inc_i(32'd429496),
.freq_mod_i(32'd429496),
.phase_mod_i(16'd65535),
.fsin_o(data_1),
.fcos_o(),
.out_valid(),
.reset_n(_rst)
);
tlv5618a_device tlv5618a_device1 (
.DATA_A(data_2),
.DATA_B(12'b010_0000),
.clk(_clk),
.rst(_rst),
.dac_sclk(dac_sclk),
.dac_din(dac_din),
.dac_csn(dac_csn)
);
assign data_2 = data_1 + 12'd2048;
assign _norst = ~rst;
endmodule