quartus 如何实现IP核的参数化调用
时间:2025-12-07 20:12:09
手机看文章
扫描二维码
随时随地手机看文章
在进行编码时,我们时常会使用到乘法器,除法器,等较复杂功能模块,为此fpga vendor设计定制了IP核,用户通过调用IP核来实现所需功能,耗费资源少且利于时序收敛。我们在日常verilog编码过程期望通过参数化的方式调用IP核。例如IP的位宽,时延,部分关键特性期望可以通过参数调用的方式实现,而不是通过打开GUI界面通过手动选择的方式实现。其实实现方式很简单。首先通过手动打开quartus,采用手动调用的方式选择想要使用的IP核,完成配置后并且产生IP,在生产的例化代码中查看如何配置功能和参数,然后自己按照例化案例模块中的格式编写一个verilog模块将IP包一层,并且关键特性使用参数化。这样就能实现IP核的参数化调用了。
首先通过器件手册获取IP核说明,也可以通过官网查询(https://www.intel.cn/content/www/cn/zh/docs/programmable/683037/23-1/core-references-91023.html)
本案例中LPM_MULT Intel FPGA IP 核是一个两个输入数据乘法器,两个相乘数据作为输入,所得结果作为输出。

1.IP功能特性描述
LPM_MULT 核提供如下特性:
生成一个乘法器将两个输入数据值相乘
支持1–256位数据宽度
支持有符号和无符号数据表示格式
支持区域或速度优化
支持具有可配置输出延迟的流水线操作
为专用数字信号处理(DSP)模块电路或逻辑单元(LE)中的实现提供选项。
2.IP参数设置



3.接口信号

4.quartus如何调用IP





FPGA IP描述文档路径


5.参数化调用IP
参考quartus工具给出的lpm_mult调用方法,参数化调用IP。
module asic_lpm_mult #(parameter PIPE_NUM = 4 ,parameter MULT_DATAA_WDTH = 16 ,parameter MULT_DATAB_WDTH = 16 ,parameter MULT_RESULT_WDTH = 32)(input i_clk ,input [MULT_DATAA_WDTH -1:0] dataa ,input [MULT_DATAB_WDTH -1:0] datab ,output [MULT_RESULT_WDTH -1:0] result);lpm_mult u_lpm_mult (.clock ( i_clk ),.dataa ( dataa ),.datab ( datab ),.result ( result ),.aclr ( ),.clken ( 1'b1 ),.sclr ( 1'b0 ),//.sum ( 1'b0 ));defparamu_lpm_mult.lpm_hint = "MAXIMIZE_SPEED=9",u_lpm_mult.lpm_pipeline = PIPE_NUM,u_lpm_mult.lpm_representation = "UNSIGNED",u_lpm_mult.lpm_type = "LPM_MULT",u_lpm_mult.lpm_widtha = MULT_DATAA_WDTH,u_lpm_mult.lpm_widthb = MULT_DATAB_WDTH,u_lpm_mult.lpm_widthp = MULT_RESULT_WDTH;endmodule





