额,一般而言,FPGA是软核的,就是说你所写的代码部分,认为是一个核或是几个核,但是由于FPGA是基于门阵列的可编程结构,受到工艺尺寸以及技术的局限,对于很多更加专业的模块是很难做到很高频率的(比如说加法器,乘法器),但是往往系统却对计算性能有一定要求,所以一些高端的FPGA会集成一些硬件模块,如Xilinx集成IBM 的Power处理器,往往FPGA公司会提供这些模块的接口代码,当然也可以自己开发。这样就满足了高性能FPGA的需求,当然,这样的FPGA价格不菲,往往以万元记。
软核是一种可以综合的RTL代码交付的核(说白了就是HDL代码)
硬核是一种以GDSII文件形式集成的核,它是已经经过全局设计、布局、布线的核(实际上就是最后Layout的结果)
固核是介于软核和硬核之间的一种核,它可以是以RTL或网表的形式提交,也可以是带有部分布局信息的和物理设计信息的RTL编码。(固核是种中间产品,既具有一定的可移植性,就带有一部分物理设计的信息,带有时序或位置约束信息的网表就是固核的一种)