FPGA自学笔记 |
您所在的位置:网站首页 › fpga扫频信号程序 › FPGA自学笔记 |
学习记录之用。 一、DDS概念DDS(Direct Digital Frequency Synthesizer)直接数字频率合成器本文主要介绍如何调用Xilinx的DDS IP核生成某一频率的Sin和Cos信号。 二、频率选择打开IP核配置,parameter Selection选择System Parameters,有两种选择, 选择System Parameters时,输出频率可以在IP核中直接输入。 选择Hardware Parameter时,可以在IP核中或者程序中输入频率控制字PINC来确定, 如图, PINC选择的是 1101000110110111 = 53687 由手册公式, f = (53687*100*10^6)/(2^16) = 81.91986 MHz 我们再看IP核的信息。 另外,我们也可以在程序中控制PINC。 top.v 如下。 `timescale 1ns / 1ps module sin_20M( input clk, input config_tvalid, input rst_n, input [15:0] config_data_poff,config_data_pinc, output [7:0] dds_data_sin_0,dds_data_cos_0 ); wire m_axis_data_tvalid; wire m_axis_phase_tvalid; wire [15:0]m_axis_phase_tdata; dds_compiler_0 dds_init ( .aclk(clk), // input wire aclk .s_axis_config_tvalid(config_tvalid), // input wire s_axis_config_tvalid .s_axis_config_tdata({16'd0,config_data_pinc}), // input wire [31 : 0] s_axis_config_tdata .m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid .m_axis_data_tdata({ dds_data_sin_0,dds_data_cos_0}), // output wire [15 : 0] m_axis_data_tdata .m_axis_phase_tvalid(m_axis_phase_tvalid), // output wire m_axis_phase_tvalid .m_axis_phase_tdata(m_axis_phase_tdata) // output wire [15 : 0] m_axis_phase_tdata ); endmoduletb文件如下。 `timescale 1ns / 1ps // // 该tb文件中直接输入控制字 66 ----6666 // f=(PINC*fclk)/(2^phase width)=6666乘100000000/2的16次方=10.17MHz // module sintb( ); reg clk; always #5 clk |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |