FPGA自学笔记

您所在的位置:网站首页 fpga扫频信号程序 FPGA自学笔记

FPGA自学笔记

2024-07-17 19:30| 来源: 网络整理| 查看: 265

学习记录之用。

一、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 ); endmodule

 tb文件如下。

`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