IP核的一般概念
IP(Intellectual Property)核是知识产权核或知识产权模块的意思,在FPGA设计中具有重要的作用。
由于IP核是经过验证的、性能及效率均比较理想的电路功能模块,因此在FPGA设计中具有十分重要的作用,尤其是一些较为复杂同时又十分常用的电路功能模块,如果使用相应的IP核,就会极大地提高FPGA设计的效率和性能。
在FPGA设计领域,一般把IP核分为软IP核(软核)、固IP核(固核)和硬IP核(硬核)三种。下面先来看看绝大多数著作或网站上对这三种IP核的描述。
IP 核 有 行 为 ( Behavior ) 级 、 结 构 ( Sructure ) 级 和 物 理(Physical)级三种不同程度的设计,对应着描述功能行为的软IP核(Soft IP Core)、描述结构的固IP核(Firm IP Core),以及基于物理描述并经过工艺验证的硬IP核(Hard IP Core)。
软IP核是用Verilog HDL或VHDL等硬件描述语言(HDL)描述的功能模块,并不涉及用什么具体电路元件实现这些功能。软IP核通常是以HDL文件的形式出现的,在开发过程中与普通的HDL文件十分相似,只是所需的开发软硬件环境比较昂贵。软IP核的设计周期短、投入少,由于不涉及物理实现,为后续设计留有很大的发挥空间,增大了IP核的灵活性和适应性。软IP核的主要缺点是在一定程度上使后续的扩展功能无法适应整体设计,从而需要在一定程度上修正软IP核修正,在性能上也不可能获得全面的优化。
硬IP核提供的是最终阶段的产品形式:掩模。硬IP核以经过完全布局布线的网表形式提供,既具有可扩展性,也可以针对特定工艺或购买商进行功耗和尺寸上的优化。尽管硬IP核缺乏灵活性、可移植性差,但由于无须提供寄存器传输级(RTL)文件,因而更易于实现硬IP核保护。
固IP核则是软IP核和硬IP核的折中。大多数应用于FPGA的IP核均为软IP核,软IP核有助于用户调节参数并增强可复用性。软IP核通常以加密的形式提供,这样实际的RTL文件对用户是不可见的,但布局布线灵活。在加密的软IP核中,如果对软IP核进行了参数化,那么用户就可通过头文件或图形用户接口(GUI)方便地对参数进行操作。对于那些对时序要求严格的IP核(如PCI接口IP核),可预布线特定信号或分配特定的布线资源,以满足时序要求,这些IP核可归类为固IP核。
FPGA设计中的IP核类型
FPGA中的IP核可以分为两个基本的类型:基于LUT等逻辑资源封装的软IP核、基于固定硬件结构封装的硬IP核。
软件IP核,是指基本实现结构为FPGA中的LUT、触发 器 等 资 源 , 用 户 在 调 用 这 些 IP 核 时 , 其 实 是 调 用 了 一 段HDL(Verilog HDL或VHDL)代码,以及已进行综合优化后的功能模块。这类IP核所占用的逻辑资源与用户自己编写HDL代码所占用的逻辑资源没有任何区别。
硬IP核,是指基本实现结构为特定硬件结构的资源,这些特定的硬件结构与LUT、触发器等逻辑资源完全不同,是专用于特定功能的资源。在FPGA设计中,即使用户没用使用硬IP核,这些资源也不能用于其他场合。换句话讲,我们可以简单地将硬IP核看成嵌入FPGA中的专用芯片,如乘法器、存储器等。由于硬IP核具有专用的硬件结构,虽然功能单一,但通常具有更好的运算性能。硬IP核的功能单一,可满足FPGA设计时序的要求,以及与其他模块的接口要求,通常需要在硬IP核的基础上增加少量的LUT及触发器资源。用户在使用硬IP核时,应当根据设计需求,通过硬IP核的设置界面对其接口及时序进行设置。