4)调用该IP Core完成设计,代码如下:
module my_muladder(clk_50MHz, reset, ce, dina, dinb, dout); input clk_50MHz;
input reset;
input ce;
input [15:0] dina;
input [15:0] dinb;
output [34:0] dout;
reg [34:0] dout;
wire [34:0] p_out;
reg load = 0;
reg [2:0] cnt = 0;
always @(posedge clk_50MHz) begin
if(reset) begin
cnt <= 0;
load <= 0;
dout <= 0;
end
else begin
cnt <= cnt + 1'b1;
if(cnt == 0)
load <= 1'b0; //直通加法器
else
load <= 1'b1; //load=1累加
if(cnt == 2)
dout <= p_out;
else
dout <= dout;
end
end
muladder muladder( .A_IN(dina),
.B_IN(dinb),
.CE_IN(ce),
.CLK_IN(clk_50MHz),
.LOAD_IN(load),
.RST_IN(reset),
.P_OUT(p_out)
);
endmodule
上述程序经过Synplify Pro综合后,得到的RTL结构如图4-135所示。
图4-135 乘加器应用程序的RTL结构图
经过仿真测试得到的功能波形图如图4-136所示,可以看到本例正确地实现了8个乘积结果累加的功能。
图4-136 乘加器应用程序的仿真结果
4.7 本章小结 本章详细介绍了基于ISE的FPGA设计流程以及多个辅助工具(XST、XPower、PACE、ModelSim、Synplify以及MATLAB)的使用方法。首先介绍了ISE软件主要特性及其安装流程,然后介绍了如何通过ISE完成FPGA设计,详细介绍了综合、仿真以及实现的软件操作和XST、XPower、PACE等工具的基本操作。之后,简单介绍了Synplify Pro和ModelSim SE的安装流程,并介绍如何在ISE关联Synplify Pro和ModelSim SE 的使用方法以及和ISE的联合开发流程。再次,介绍了MATLAB和ISE的联合开发模式,其中利用MATLAB来辅助ISE开发是目前流行的设计方法之一,也是本书所强调的重点。最后,介绍了Xilinx FPGA底层单元(DCM、块RAM以及硬核乘加器)的原理和使用方法。鉴于篇幅,不可能对以上所提及软件的其他功能进行详细介绍,读者应该在实际工作中学习并熟练掌握。 |