Vivado中仿真DDS核注意事项即仿真IP核时需要注意的事项

在使用Vivado中的DDS核生成正弦信号并进行仿真时遇到输出无数据的问题。通过检查输入信号发现s_axis_phase_tvalid和s_axis_phase_tdata存在异常。在板子上验证代码正常,后发现DDS核自带的testbench仿真正确,原因为IP核在仿真初期需要数个clock周期才能启动。解决方案是添加rst信号,确保仿真运行数个clock后再对IP核操作。
摘要由CSDN通过智能技术生成

本人需要利用Vivado软件中的DDS核生成一个正弦信号。由于后期还要生成线性调频信号,如果直接编写代码生成比特流文件下载到板子上进行验证会使工作的效率大大下降,所有想利用Vivado软件功能仿真,这样可以极大的提高效率。Vivado软件自带仿真功能,不需要对IP核进行特别的处理,所以很方便。

DDS核的基本原理,看以下一个链接:https://www.xilinx.com/support/documentation/ip_documentation/dds_compiler/v6_0/pg141-dds-compiler.pdf

此处对DDS核的配置如下:DDS核命名DDS_Signal



注意:上图中红色标记是更改的配置的参数,其他都默认设置。

生成DDS核后,自己利用Verilog写了一个很简单的测试平台,频率控制字配置好。

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2017/10/14 14:43:25
// Design Name: 
// Module Name: Signal_DDS_tb
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module Signal_DDS_tb(

    );
	
	parameter 	PERIOD=10;
	reg 		CLK=0;
	always begin
		#(PERIOD/2)	CLK=~CLK;
	end
	
	reg			s_axis_phase_tvalid	= 1'd1;
	reg	[31:0]		s_axis_phase_tdata	= 32'd42949673;//此处是频率控制字,生成1M的正余弦信号
	
	
	wire			m_axis_data_tvalid;
	wire	[31:0]		m_axis_data_tdata;
	
	DDS_Signal DDS_Signal_inst (
		.aclk			(CLK			),		// input wire aclk
		.s_axis_phase_tvalid	(s_axis_phase_tvalid),  		// input wire s_axis_phase_tvalid
		.s_axis_phase_tdata	(s_axis_phase_tdata	),    		// input wire [31 : 0] s_axis_phase_tdata
		.m_axis_data_tvalid	(m_axis_data_tvalid	),   		// output wire m_axis_data_tvalid
		.m_axis_data_tdata	(m_axis_data_tdata	)    		// output wire [31 : 0] m_axis_data_tdata
	);	
endmodule
至此,认为任务完成,进行仿真。

仿真结果如下:


输出的结果m_axis_data_tdata[31:0]的没有数据。

开始查找原因,抓取DDS核的输入是否正确即s_axis_phase_tva

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值