1. 程式人生 > >AC620FPGA學習筆記——PLL與NCO

AC620FPGA學習筆記——PLL與NCO

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