vivado乘法器IP核简单调用

vivado乘法器IP核简单调用

VIVADO设置

vivado乘法器IP核简单调用_第1张图片

搜索mult

vivado乘法器IP核简单调用_第2张图片

vivado乘法器IP核简单调用_第3张图片

vivado乘法器IP核简单调用_第4张图片

其中流水线的级数就是从出入数据到输出数据需要的时钟数,因为乘法器内部是以流水线的形式实现的。

代码实现以及简单仿真

生成的乘法器参数为:

输入输出数据为16位有符号数,输出为32位,5级流水线。

vivado乘法器IP核简单调用_第5张图片

在这个位置有自动生成的例化模板

仿真代码:

`timescale 1ns / 1ps

module tb_mult();

//输入
reg           sys_clk;
reg signed [15 : 0] A;
reg signed [15 : 0] B;

//输出
wire signed [31 : 0] p;
//信号初始化
initial begin
    sys_clk = 1'b0;
	A = -256;
	B = -256;
end

//生成时钟
always #10 sys_clk = ~sys_clk;
initial begin
	#10
	forever begin
		#(100);
		if (A <= 256) begin
			A = A + 1'b1;
			B = B + 1'b1;
		end
		else
		begin
			A = -256;
			B = -256;
		end


	end
end

//例化待测设计
mult_gen_0 u_mult_gen_0 (
  .CLK(sys_clk),  // input wire CLK
  .A(A),      // input wire [15 : 0] A
  .B(B),      // input wire [15 : 0] B
  .P(p)      // output wire [31 : 0] P
);

endmodule


仿真结果如下:

vivado乘法器IP核简单调用_第6张图片

可以看出,输出与输入信号之间差5个时钟周期。

你可能感兴趣的:(FPGA学习,fpga开发)