IP核及FPGA简略介绍

IP核及FPGA简略介绍第一种 互联网领域的技术词汇 专指 IP 协议或 IP 地址

大家好,欢迎来到IT知识分享网。

一、6.9

IP是什么?

第一种:互联网领域的技术词汇,专指IP协议或IP地址。

第二种:法律词汇,知识产权的英文简称。

第三种:芯片行业中的技术词汇、东西或是商品。一般称之为IP核。

IP核是什么?

IP核是指芯片中具有独立功能的电路模块的成熟设计。该电路模块设计可以应用在包含该电路模块的其他芯片设计项目中,从而减少设计工作量,缩短设计周期,提高芯片设计的成功率。该电路模块的成熟设计凝聚着设计者的智慧,体现了设计者的知识产权,因此,芯片行业就用IP核(Intellectual Property Core)来表示这种电路模块的成熟设计。IP核也可以理解为芯片设计的中间构件。

一般说来,一个复杂的芯片是由芯片设计者自主设计的电路部分和多个外购的IP核连接构成的。在芯片设计过程中,芯片上除了采用外购的IP核之外,一般说来,芯片设计者还要设计一部分自己的电路,并完成各部分之间的信号连线,最后还要对整个芯片的功能、性能进行制造前的反复检查和验证。芯片设计要考量IP核的许多参数和指标,并要把各个IP核和自主设计部分正确连接,保证整个芯片的功能和性能正确无误,IP核使复杂芯片的设计变得较容易。IP核被其他芯片设计公司采用,行业内称为IP复用。专门设计相对独立电路功能模块,目的是推广给其他芯片设计公司进行复用,这种设计工作称为IP开发。专门从事IP开发的公司称为IP厂商,或者IP提供商。IP厂商把IP销售给芯片设计公司是一种IP交易行为。

IP的由来要从早期的芯片设计过程讲起。早期芯片的集成规模有限,设计复杂度不高,芯片上所有的电路都是由芯片设计者自主完成。设计水平不高、能力有限的芯片公司只能设计规模小的简单的芯片。设计水平高、能力强的芯片公司才可以设计规模大、功能复杂的芯片。这个时期,不论芯片规模大还是小,芯片从“头”到“脚”都是由芯片公司自己设计的。早期的高端芯片基本上都是由为数不多的大型国际芯片公司把持。

随着现代信息社会对芯片要求提升,芯片的规模呈指数性增加,复杂性急剧增大。中小型芯片公司要独立完成一款复杂芯片设计几乎变得不太可能。特别是20世纪80年代末,芯片行业出现了晶圆代工(Foundry)商业模式,大批的中小微芯片设计公司(Fabless)应运而生。这个时期,芯片设计行业急需解决小芯片公司无法设计大芯片的难题。

解决这一难题的启发思路很多。例如:搭积木和拼图画玩具;由标准件设计大型机器;由软件子程序(或者中间件)调用设计大型软件;用芯片搭建大型电子系统等。思路都是重复使用预先设计好的成熟的构件来搭建更复杂的系统,省掉对构件内部问题的考虑,化繁为简;重复使用构件,减少重复劳动,节省时间;重复使用构件,提高整个复杂系统搭建的成功率。

芯片设计行业中的IP核开发和IP复用,就是在这些思路启发下形成的。IP核就类似于上述的构件。IP核是预先设计好的具有独立功能的电路模块设计。有了IP核这种构件,大的复杂的芯片设计就变得较容易、周期短、易成功。

IP的作用主要有四个方面,一是使芯片设计化繁为简,缩短芯片设计周期,提高复杂芯片设计的成功率。二是IP开发和IP复用技术使小公司设计大芯片成为可能;三是使系统整机企业可以设计自己的芯片,提升自主创新能力和整机系统的自主知识产权含量;四是使芯片设计行业摆脱传统IDM模式,成为产业链上独立的行业,促进了芯片设计业迅猛发展。

目前,许多中小微芯片设计公司虽然设计能力和水平有限,但出于抢占市场,缩短芯片设计周期的需要,会外购许多IP核来完成自己的芯片设计项目。业界的IP开发商、IP提供商数量不断增加,也变得越来越专业。各种功能、各种类型的IP核不断涌现。IP交易活动也日趋普遍,交易金额也越来越大。

IP核的种类

  IP核有行为(Behavior)级、结构(Structure)级和物理(Physical)级三个层次的分类,对应着三个种类型的IP核,它们是由硬件描述语言设计的软核(Soft IP Core)、完成结构描述的固核(Firm IP Core) 和基于物理描述并经过工艺验证的硬核(Hard IP Core)。

   1.软核: 它是用硬件描述语言(HDL)设计的独立功能的电路模块。从芯片设计程度来看,它只经过了RTL级设计优化和功能验证,通常是以HDL文本形式提交给用户。所以它不包含任何物理实现信息,因此,IP软核与制造工艺无关。软核相当于软件编程的库,比如Python调用一个四舍五入round(num,n) 函数一样。FPGA设计中也可以调用一个四舍五入的IP,这样就不用自己写代码了。

用户购买了IP软核后,可以综合出正确的门电路级设计网表,并可以进行后续的结构设计,具有很大的灵活性。借助于EDA综合工具,用户可以很容易与其它IP软核,以及自主设计的电路部分合成一体,并根据各种不同半导体工艺,设计成具有不同性能的芯片。

   2.固核: 它的设计程度介于IP软核和IP硬核之间,它除了完成IP软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。一般地,它以门级电路网表的形式提供给用户。

3.硬核: 它提供了电路设计最后阶段掩模级的电路模块。它以最终完成的布局布线网表形式提供给用户。IP硬核既具有结果的可预见性,也可以针对特定工艺或特定IP提供商进行功耗和尺寸的优化。

所以,三种类型的IP核是电路功能模块设计在不同设计阶段的产物,见下图。

用户经过精心评测和选择,购买了IP厂商的IP核后,开始设计自己的芯片。正如前面说过的,一个复杂芯片一般由购买的IP核和用户自主设计的电路部分组成。芯片设计过程包括了行为级、结构级和物理级三个阶段。行为级和结构级设计阶段的工作一般称为前端设计,物理级设计阶段的工作一般称为后端设计。下面的示意图说明,不同类型的IP核是在不同的设计阶段中加入到整个芯片设计中去。

三种类型的IP核各有优缺点,用户会根据自己的实际需要来选择。以下是三种IP核的优缺点简要总结。

软核: 它以综合源代码的形式交付给用户,其优点是源代码灵活,在功能一级可以重新配置,可以灵活选择目标制造工艺。灵活性高、可移植性强,允许用户自配置。其缺点是对电路功能模块的预测性较差,在后续设计中存在发生错误的可能性,有一定的设计风险。并且IP软核的知识产权保护难度较大。(如:调用一个PLL的IP核,你通过修改代码参数可以实现不同频率的倍频)

固核: 它的灵活性和成功率介于IP软核和IP硬核之间,是一种折中的类型。和IP软核相比,IP固核的设计灵活性稍差,但在可靠性上有较大提高。目前,IP固核是IP核的主流形式之一。

硬核: 它的最大优点是确保性能,如速度、功耗等达到预期效果。然而,IP硬核与制造工艺相关,难以转移到新的工艺或者集成到新的结构中去,是不可以重新配置的。IP硬核不许修改的特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄。但IP硬核的知识产权保护最为方便。

 IP核的举例,最典型有ARM公司的各种类型的CPU IP核。许多IP供应商提供的DSP IP核、USB IP核、PCI-X IP核、WiFi IP核、以太网IP核、嵌入式存储器IP核等,五花八门,品种十分繁多。

如果按大类分,大体上可分为处理器和微控制器类IP、存储器类IP、外设及接口类IP、模拟和混合电路类IP、通信类IP、图像和媒体类IP等。

全球大的EDA供应商中,有些也是IP供应商。例如美国新思科技(Synopsys)可提供上千种各类IP。涵盖逻辑电路(Logic Libraries)、嵌入式存储器(Embedded Memories)、模拟电路(Analog Libraries)、有线和无线通信接口(Wired and Wireless Interface)、安全(Security)、嵌入式处理器(Embedded Processors) 和子系统(Subsystems)等方面的IP。

IP核开发与芯片设计过程比较相似,都需要紧跟芯片技术的发展趋势,不断积累芯片设计技术,了解芯片制造工艺发展步伐。所不同的是,芯片设计公司的商业模式是设计完整的芯片,并推向市场,实现芯片销售利润。而IP开发商不设计完整的芯片,他们只设计芯片局部的某些功能模块,追求这些功能模块(IP核)的设计是最优化的,并要实现IP核在多种复用场合的适应性、便利化。IP开发商谋求这些IP可以被众多芯片设计公司购买采用,并实现IP的销售利润。

但是,IP开发的技术难度和要求很高,并不是任何芯片设计公司想为即可为的事情。这主要体现在,一是IP的完备性要求。IP核作为芯片设计的构件,可以与软件设计的构件(中间件)作比较。软件构件中可以隐藏小瑕疵,集成后的系统软件还可以在投入实际应用时,通过打补丁升级的方式不断完善。但IP核必须非常完善,一点瑕疵都不能有。因为,IP核的任何小瑕疵都有可能影响到整个复杂芯片设计的成败,影响到花费了数百万元甚至上亿元整个芯片研发的投入产出。因此,复杂IP核的售价极为昂贵,从数十万元到上百万元不等。为了便于推广,IP厂商一般采用收取前期IP许可费(IP License)+后期按芯片出货量计算的版权费(Royalty)的商业模式,以降低用户的研发投入。二是IP的多参数需求,包括工艺节点、电源、功耗、性能等。这些都要求IP开发者对芯片设计、制造工艺和行业应用等非常熟悉。三是用户对IP提供商的信誉度要求,包括公司技术实力、影响力和稳定度等。用户很难接受一家规模较小,发展不稳定的IP厂商提供的IP,哪怕这些IP很便宜,甚至免费。用户宁愿购买著名的、大的IP厂商提供的较贵的IP,因为这样的IP才有质量保障和后续服务的保障。

————————————————

摘录原文链接:IP核及FPGA简略介绍

二、前言

  最近买了一块Altera Cyclone® IV系列的最小系统板,点开配套资料,看到一篇文章深受触动,在这里作为搬运工分享给大家,希望能有所共鸣。

1、不熟悉FPGA的内部结构,不了解可编程逻辑器件的基本原理

FPGA为什么是可以编程的?恐怕很多菜鸟不知道,他们也不想知道。因为他们觉得这是无关紧要的。他们潜意识的认为可编程嘛,肯定就是像写软件一样啦。软件编程的思想根深蒂固,看到Verilog或者VHDL就像看到C语言或者其它软件编程语言一样。一条条的读,一条条的分析。如果这些菜鸟们始终拒绝去了解为什么FPGA是可以编程的,不去了解FPGA的内部结构,要想学会FPGA恐怕是天方夜谭。虽然现在EDA软件已经非常先进,像写软件那样照猫画虎也能综合出点东西,但也许只有天知道EDA软件最后综合出来的到底是什么。也许点个灯,跑个马还行。这样就是为什么很多菜鸟学了N久以后依然是一个菜鸟的原因。那么FPGA为什么是可以“编程”的呢?

首先来了解一下什么叫“程”。启示“程”只不过是一堆具有一定含义的01编码而已。编程,其实就是编写这些01编码。只不过我们现在有了很多开发工具运算或者是其它操作。所以软件是一条一条的,通常都不是直接编写这些01编码,而是以高级语言的形式来编写,最后由开发工具转换为这种01编码而已。对于软件编程而言,处理器会有一个专门的译码电路逐条把这些01编码翻译为各种控制信号,然后控制其内部的电路完成一个个的读,因为软件的操作是一步一步完成的。而FPGA的可编程,本质也是依靠这些01编码实现其功能的改变,但不同的是FPGA之所以可以完成不同的功能,不是依靠像软件那样将01编码翻译出来再去控制一个运算电路,FPGA里面没有这些东西。FPGA内部主要三块:可编程的逻辑单元、可编程的连线和可编程的IO模块。

其次再来了解下可编程的逻辑单元是什么?其基本结构某种存储器(SRAM、FLASH等)制成的4输入或6输入1输出地“真值表”加上一个D触发器构成。任何一个4输入1输出组合逻辑电路,都有一张对应的“真值表”,同样的如果用这么一个存储器制成的4输入1输出地“真值表”,只需要修改其“真值表”内部值就可以等效出任意4输入1输出的组合逻辑。这些“真值表”内部值是什么?就是那些01编码而已。如果要实现时序逻辑电路怎么办?这不有D触发器嘛,任何的时序逻辑都可以转换为组合逻辑+D触发器来完成。但这毕竟只实现了4输入1输出的逻辑电路而已,通常逻辑电路的规模那是相当的大哦。那怎么办呢?这个时候就需要用到可编程连线了。在这些连线上有很多用存储器控制的链接点,通过改写对应存储器的值就可以确定哪些线是连上的而哪些线是断开的。这就可以把很多可编程逻辑单元组合起来形成大型的逻辑电路。最后就是可编程的IO,这其实是FPGA作为芯片级使用必须要注意的。任何芯片都必然有输入引脚和输出引脚。有可编程的IO可以任意的定义某个非专用引脚(FPGA中有专门的非用户可使用的测试、下载用引脚)为输入还是输出,还可以对IO的电平标准进行设置。

总归一句话,FPGA之所以可编程是因为可以通过特殊的01代码制作成一张张“真值表”,并将这些“真值表”组合起来以实现大规模的逻辑功能。不了解FPGA内部结构,就不能明白最终代码如何变到FPGA里面去的。也就无法深入的了解如何能够充分运用FPGA。现在的FPGA,不单单是有前面讲的那三块,还有很多专用的硬件功能单元,如何利用好这些单元实现复杂的逻辑电路设计,是从菜鸟迈向高手的路上必须要克服的障碍。而这一切,还是必须先从了解FPGA内部逻辑及其工作原理做起。

2、FPGA本身不算什么,一切皆在FPGA之外这一点恐怕也是很多学FPGA的菜鸟最难理解的地方

FPGA是给谁用的?很多学校解释为给学微电子专业或者集成电路设计专业的学生用的,其实这不过是很多学校受资金限制,买不起专业的集成电路设计工具而用FPGA工具替代而已。其实FPGA是给设计电子系统的工程师使用的。这些工程师通常是使用已有的芯片搭配在一起完成一个电子设备,如基站、机顶盒、视频监控设备等。当现有芯片无法满足系统的需求时,就需要用FPGA来快速的定义一个能用的芯片。前面说了,FPGA里面无非就是一些“真值表”、触发器、各种连线以及一些硬件资源,电子系统工程师使用FPGA进行设计时无非就是考虑如何将这些以后资源组合起来实现一定的逻辑功能而已,而不必像IC设计工程师那样一直要关注到最后芯片是不是能够被制造出来。本质上和利用现有芯片组合成不同的电子系统没有区别,只是需要关注更底层的资源而已。要想把FPGA用起来还是简单的,因为无非就是那些资源,在理解了前面两点再搞个实验板,跑跑实验,做点简单的东西是可以的。而真正要把FPGA用好,那光懂点FPGA知识就远远不够了。因为最终要让FPGA里面的资源如何组合,实现何种功能才能满足系统的需要,那就需要懂得更多更广泛的知识。

目前FPGA的应用主要是三个方向:

第一个方向: 也是传统方向主要用于通信设备的高速接口电路设计,这一方向主要是用FPGA处理高速接口的协议,并完成高速的数据收发和交换。这类应用通常要求采用具备高速收发接口的FPGA,同时要求设计者懂得高速接口电路设计和高速数字电路板级设计,具备EMC/EMI设计知识,以及较好的模拟电路基础,需要解决在高速收发过程中产生的信号完整性问题。FPGA最初以及到目前最广的应用就是在通信领域,一方面通信领域需要高速的通信协议处理方式,另一方面通信协议随时在修改,非常不适合做成专门的芯片。因此能够灵活改变功能的FPGA就成为首选。到目前为止FPGA的一半以上的应用也是在通信行业。

第二个方向: 可以称为数字信号处理方向或者数学计算方向,因为很大程度上这一方向已经大大超出了信号处理的范畴。例如早就在2006年就听说老美将FPGA用于金融数据分析,后来又见到有将FPGA用于医学数据分析的案例。在这一方向要求FPGA设计者有一定的数学功底,能够理解并改进较为复杂的数学算法,并利用FPGA内部的各种资源使之能够变为实际的运算电路。目前真正投入实用的还是在通信领域的无线信号处理、信道编解码以及图像信号处理等领域,其它领域的研究正在开展中,之所以没有大量实用的主要原因还是因为学金融的、学医学的不了解这玩意。不过最近发现欧美有很多电子工程、计算机类的博士转入到金融行业,开展金融信号处理,相信随着转入的人增加,FPGA在其它领域的数学计算功能会更好的发挥出来,而我也有意做一些这些方面的研究。不过国内学金融的、学医的恐怕连数学都很少用到,就不用说用FPGA来帮助他们完成数学_运算了,这个问题只有再议了。

第三个方向: 就是所谓的SOPC方向,其实严格意义上来说这个已经在FPGA设计的范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境,然后设计者主要是在上面进行嵌入式软件开发而已。设计对于FPGA本身的设计时相当少的。但如果涉及到需要在FPGA做专门的算法加速,实际上需要用到第二个方向的知识,而如果需要设计专用的接口电路则需要用到第一个方向的知识。就目前SOPC方向发展其实远不如第一和第二个方向,其主要原因是因为SOPC以FPGA为主,或者是在FPGA内部的资源实现一个“软”的处理器,或者是在FPGA内部嵌入一个处理器核。但大多数的嵌入式设计却是以软件为核心,以现有的硬件发展情况来看,多数情况下的接口都已经标准化,并不需要那么大的FPGA逻辑资源去设计太过复杂的接口。而且就目前看来SOPC相关的开发工具还非常的不完善,以ARM为代表的各类嵌入式处理器开发工具却早已深入人心,大多数以ARM为核心的SOC芯片提供了大多数标准的接口,大量成系列的单片机/嵌入式处理器提供了相关行业所需要的硬件加速电路,需要专门定制硬件场合确实很少。通常是在一些特种行业才会在这方面有非常迫切的需求。即使目前Xilinx将ARM的硬核加入到FPGA里面,相信目前的情况不会有太大改观,不要忘了很多老掉牙的8位单片机还在嵌入式领域混呢,嵌入式主要不是靠硬件的差异而更多的是靠软件的差异来体现价值的。我曾经看好的是cypress的Psoc这一想法。和SOPC系列不同,Psoc的思想史载SOC芯片里面去嵌入那么一小块FPGA,那这样其实可以满足嵌入式的那些微小的硬件接口差异,比如某个运用需要4个USB,而通常的处理器不会提供那么多,就可以用这么一块FPGA来提供多的USB接口。而另一种运用需要6个UART,也可以用同样的方法完成。对于嵌入式设计公司来说他们只需要备货一种芯片,就可以满足这些设计中各种微小的差异变化。其主要的差异化仍然是通过软件来完成。但目前cypress过于封闭,如果其采用ARM作为处理器内核,借助其完整的工具链。同时开放IP合作,让大量的第三方为它提供IP设计,其实是很有希望的。但目前cypress的日子怕不太好过,Psoc的思想也不知道何时能够发光。

3、错误理解HDL语言,怎么看都看不出硬件结构。

HDL语言的英语全称是:HardwareDescriptionLanguage,注意这个单词Description,而不是Design。老外为什么要用Description这个词而不是Design呢?因为HDL确实不是用用来设计硬件的,而仅仅是用来描述硬件的。描述这个词精确地反映了HDL语言的本质,HDL语言不过是已知硬件电路的文本表现形式而已,只是将以后的电路用文本的形式描述出来而已。而在编写语言之前,硬件电路应该已经被设计出来了。语言只不过是将这种设计转化为文字表达形式而已。但是很多人就不理解了,既然硬件都已经被设计出来了,直接拿去制作不就完了,为什么还要转化为文字表达形式再通过EDA工具这些麻烦的流程呢?其实这就是很多菜鸟没有了解设计的抽象层次的问题,任何设计包括什么服装、机械、广告设计都有一个抽象层次的问题。就拿广告设计来说吧,最初的设计也许就是一个概念,设计出这个概念也是就是一个点子而已,离最终拍成广告还差得很远。硬件设计也是有不同的抽象层次,每一个层次都需要设计。最高的抽象层次为算法级、然后依次是体系结构级、寄存器传输级、门级、物理版图级。使用HDL的好处在于我们已经设计好了一个寄存器传输级的电路,那么用HDL描述以后转化为文本的形式,剩下的向更低层次的转换就可以让EDA工具去做了,这就大大的降低了工作量。这就是可综合的概念,也就是说在对这一抽象层次上硬件单元进行描述可以被EDA工具理解并转化为底层的门级电路或其他结构的电路。在FPGA设计中,就是在将这以抽象层级的意见描述成HDL语言,就可以通过FPGA开发软件转化为问题1中所述的FPGA内部逻辑功能实现形式。HDL也可以描述更高的抽象层级如算法级或者是体系结构级,但目前受限于EDA软件的发展,EDA软件还无法理解这么高的抽象层次,所以HDL描述这样抽象层级是无法被转化为较低的抽象层级的,这也就是所谓的不可综合。所以在阅读或编写HDL语言,尤其是可综合的HDL,不应该看到的是语言本身,而是要看到语言背后所对应的硬件电路结构。如果看到的HDL始终是一条条的代码,那么这种人永远摆脱不了菜鸟的宿命。假如哪一天看到的代码不再是一行行的代码而是一块一块的硬件模块,那么恭喜脱离了菜鸟的级别,进入不那么菜的鸟级别。

4、数字逻辑知识是根本。

无论是FPGA的哪个方向,都离不开数字逻辑知识的支撑。 FPGA说白了是一种实现数字逻辑的方式而已。如果连最基本的数字逻辑的知识都有问题,学习FPGA的愿望只是空中楼阁而已。而这,恰恰是很多菜鸟最不愿意去面对的问题。数字逻辑是任何电子电气类专业的专业基础知识,也是必须要学好的一门课。很多人无非是学习了,考个试,完了。如果不能将数字逻辑知识烂熟于心,养成良好的设计习惯,学FPGA到最后仍然是雾里看花水中望月,始终是一场空的。以上四条只是我目前总结菜鸟们在学习FPGA时所最容易跑偏的地方,FPGA的学习其实就像学习围棋一样,学会如何在棋盘上落子很容易,成为一位高手却是难上加难。要真成为李昌镐那样的神一般的选手,除了靠刻苦专研,恐怕还确实得要一点天赋。

————————————————

原文链接:IP核及FPGA简略介绍

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118708.html

(0)
上一篇 2025-11-11 08:45
下一篇 2025-11-11 09:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信