FPGA的软核、硬核、固核

news2024/9/21 2:32:45

“核”

       现在的FPGA设计,规模巨大而且功能复杂,因此设计的每一个部分都从头开始是不切实际的。一种解决的办法是:对于较为通用的部分可以重用现有的功能模块,而把主要的时间和资源用在设计中的那些全新的、独特的部分。这就像是你在开发应用程序的时候就不用直接去写驱动物理硬件的代码,而是直接调用Windows提供的API就行了。这种功能模块我们称作IP核(Intelligent Property) 。

 核(CORE)是一个数字系统的核心,负责整个系统的内存调度,中断管理,算术逻辑运算等,如同整个系统的大脑,是由物理电气实现逻辑功能的关键。尽管复杂,但不可忽略的是,核同其他数字器件一样,也是一个典型的逻辑器件(准确的说是时序逻辑),也由逻辑门、触发器构成,那么也就可以由硬件描述语言来描述。

  既然核可以由HDL来描述,那么对于每一个特定功能和性能(即逻辑的时序和功能特定)的核而言,必有一组HDL描述等价于它,而具体的器件信号、封装等,只不过是这组HDL依赖具体工艺的一种物理实现罢了。因此,我们应该认识到,所谓核,本质上是一种知识产权,是一种特定的可描述的逻辑结构。 

IP核

       IP核是具有知识产权的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了SOC 阶段,IP 核设计已成为ASIC 电路设计公司和FPGA 提供商的重要任务,也是其实力体现。对于FPGA 开发软件,其提供的IP 核越丰富,用户的设计就越方便,其市场占用率就越高。目前,IP 核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。

核的分类 

       从IP核的提供方式上,通常将其分为软核、固核和硬核这3类。从完成IP核所花费的成本来讲,硬核代价最大; 从使用灵活性来讲,软核的可复用使用性最高。与软核实现方式相比,硬核可以把功耗降低5~10 倍, 节约将近90%的逻辑资源。 

软核

        软核(Soft IP Core) : 软核在EDA 设计领域指的是综合之前的寄存器传输级(RTL) 模型;具体在FPGA 设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP 核应用最广泛的形式。 

固核

        固核(Firm IP Core) :固核在EDA 设计领域指的是带有平面规划信息的网表;具体在FPGA 设计中可以看做带有布局规划的软核,通常以RTL 代码和对应具体工艺网表的混合形式提供。将RTL 描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。 目前,固核也是IP 核的主流形式之一。 

硬核

        硬核 (Hard IP Core) :硬核在EDA 设计领域指经过验证的设计版图;具体在FPGA 设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。不能修改的原因有两个:首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;其次是保护知识产权的要求,不允许设计人员对其有任何改动。IP 硬核不允许修改的特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄。

软核、硬核优缺点 

制程技术独立性

软核是用FPGA的通用逻辑资源(LUT+FF)搭建而成的。从用户使用角度来看,二者没有什么开发难度上的区别;性能上,一般硬核速度比软核高,整体功耗也要低一些。 

    硬核是固化在FPGA内部的特殊硬件电路,简单理解的话,可以把硬核看成是嵌入在FPGA内部的ASIC。如嵌入式RAM,嵌入式乘法器,PLL等。 

    软核的其中一项优点就是制程技术独立性。高阶的Verilog或VHDL程序不需要运用某一特定的制程技术或标准的单元库(cell library)。这意谓同一套IP核心可重复应用在多种设计,或是未来新世代的设计方案中。(部份软核IP供货商开发出针对特定制程的方案,让其核心不具制程技术的独立性,但这种模式的优点尚不明确)。

  另一方面,硬核则具有相当高的制程技术特定性。事实上,若厂商变更其制程参数或单元库变量(cell library factor),硬核有可能就无法正常运作。因为IP供货商在制程参数改变后,须重新检验硬核,所以这种特性即衍生出运用上的风险。

    硬核可移植到新的制程技术,但须投入相当可观的心力与成本来重新进行最佳化调校。对于某些先进的微处理器核心而言,须耗费两年甚至更长的时间。因此,硬核的尺寸通常会针对新制程等比例缩小。这种方法虽简单且迅速,但可能减低研发团队针对最初制程进行的最佳客制化效益。

    事实上,软核可能是针对单一制程技术与单元库为设计依据,设计本身与此一技术无关。针对制程技术与单元库提供最佳的效能,类似的技术可能达到接近最佳化的成效,但是差异性较大的技术(例如搭配速度较慢的RAM)可能就无法达到相同的结果。此种现象并非绝对重要,所以软核在最佳化的弹性方面优于等比例光学缩小的硬核。

客制化弹性 

软核另一项超越硬核的优势就是:编译当时才做客制化,在建置之前,可自行选择许多设计选项。

    高速缓存大小是编译时常见的一种客制化项目。软核处理器让使用者选择其特定嵌入式系统所需的快取记忆容量。而硬核则无法进行这种客制化设定。
  许多软核具有的另一种客制化设计就是自行定义指令集,也就是自行支持特定指令的功能。例如若SOC有特殊需要,可使用外部协同处理器,有些系统或许需要运用具有压缩功能的指令码,但若系统不需要这些功能时,这些多余硬件就可从软核中移除,以节省芯片面积与功耗。
  软核同时也有一些建置组态参数,这些特殊的客制化参数能使软核进一步融入SOC团队所进行的设计环境。例如,微处理器核心通常运用逻辑闸频率电路进行建置,但这种频率可能无法搭配部分频率路由工具。若处理器核心有提供编译时的设定功能,能将所有逻辑闸频率变更成等效的再流通MUX(多任务)组件,就能减少建置过程中所遇到的困难。

整合的难易度 

 除非硬核由内部研发小组所建置,否则软核通常比较容易整合至作业流程。其原因是研发团队将在获得授权的IP核心周围加入各种RTL模块。此时核心就如同SOC中的其它模块,亦能采用相同的建置处理方式。

    硬核比较像一个黑箱RAM组件(black-box RAM),尤其是采用全客制化技术所建置的核心。这代表硬核供货商须提供更多的黑箱式核心模型,让SoC研发业者能针对这些处理器设计其模块。这种流程应用难度原本就高于软核。例如,一套全客制化的硬核可能没有逻辑闸层级的电路清单(netlist)。这是因为设计工作是在晶体管层级中进行,并未涉及逻辑闸。但设计团队可能需要做含有回馈(back-annotated)时序机制的逻辑闸层级功能仿真测试,此时若缺乏逻辑闸层级的电路图就很难进行这种模拟。
    软核通常以可综合的HDL提供,因此具有较高的灵活性,并与具体的实现工艺无关,其主要缺点是缺乏对时序、面积和功耗的预见性。由于软核是以源代码的形式提供,尽管源代码可以采用加密方法,但其知识产权保护问题不容忽视。硬核则以经过完全的布局布线的网表形式提供,这种硬核既具有可预见性,同时还可以针对特定工艺或购买商进行功耗和尺寸上的优化。尽管硬核由于缺乏灵活性而可移植性差,但由于无须提供寄存器转移级(RTL)文件,因而更易于实现IP保护。                                                    
    固核则是软核和硬核的折衷。大多数应用于FPGA的IP内核均为软核,软核有助于用户调节参数并增强可复用性。软核通常以加密形式提供,这样实际的RTL对用户是不可见的,但布局和布线灵活。在这些加密的软核中,如果对内核进行了参数化,那么用户就可通过头文件或图形用户接口(GUI)方便地对参数进行操作。对于那些对时序要求严格的内核(如PCI接口内核),可预布线特定信号或分配特定的布线资源,以满足时序要求。这些内核可归类为固核,由于内核是预先设计的代码模块,因此这有可能影响包含该内核的整体设计。由于内核的建立(setup)、保持时间和握手信号都可能是固定的,因此其它电路的设计时都必须考虑与该内核进行正确地接口。如果内核具有固定布局或部分固定的布局,那么这还将影响其它电路的布局。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang:cannot find main module; see ‘go help modules‘解决

出现这个的原因就是之前在Golang语言介绍、环境搭建以及编译工具( CDN 加速代理)https://mp.csdn.net/mp_blog/creation/editor/131431492 这个部分配置CDN加速代理的时候,开启了GO111MODULEon后; go会忽略GOPATH和vendor文件夹&…

问题杂谈(三十五)Linux中文乱码问题

前言: 如下,系统的中文描述是乱码 步骤: 输入locale,如有zh cn 表示已经安装了中文语言 如果没有,通过yum groupinstall chinese-support下载 临时更换语言:输入LANG"en_US.UTF-8"系统设置&a…

【python docker error】最近出现docker拉取python官方镜像出现运行程序容器无法跑起来的现象

最近出现docker拉取python官方镜像出现运行程序容器无法跑起来的现象 官方在最近也就是2023年6月初将docker的python镜像由debian的buster版本切换到bookworm版本,导致一众的用户发现使用官方python的基础镜像的容器启动报错,我也是受害者之一。解决办法…

机器视觉初步10:目标跟踪

目标跟踪是计算机视觉中的一个重要领域,主要目的是在视频序列中跟踪一个或多个目标对象。常见的目标跟踪方法分为三类:非机器学习方法、机器学习方法和深度学习方法1。 文章目录 1.非机器学习方法a) 光流法(Optical Flow)b) Haar…

【瑞萨RA_FSP】RTC——实时时钟

文章目录 一、RTC简介1. RTC 特性 二、RTC的结构框图1. RTC引脚2. 时钟分频3. 日历计数器/二进制计数器4. 闹钟功能 三、实验:用RTC提供日历时间1. 硬件设计2. 文件结构3. FSP配置4. 宏定义5. 初始化RTC6. RTC中断回调函数7. hal_entry函数 一、RTC简介 RA6M5 的RT…

虚幻引擎(UE5)-大世界分区WorldPartition教程(一)

文章目录 WC与WP的区别一、如何开启WP1.默认创建WP2.手动创建WP3.转换创建WP 二、设置World Partition参数三、启动流送总结 提示:以下是本篇文章正文内容,下面案例可供参考 WC与WP的区别 WorldCompostion(WC) 是UE4中制作大世界…

【java实战】emoj表情导致mySQL存储错误,完美解决

MySQL表的编码格式为utf-8,现在表内数据量巨大,已不能新建表更改表的编码格式。 采用手动编码将有问题的数据转化为utf8进行存储 工具类 import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util…

大数据Doris(五十):Export导出原理

文章目录 Export导出原理 一、原理 二、查询计划拆分 三、查询计划执行 Export导出原理 Doris Export、Select Into Outfile、MySQL dump三种方式数据导出。用户可以根据自己的需求导出数据。此外数据还可以以文件形式通过Borker备份到远端存储系统中,之后可以…

Gitlab升级报错一:rails_migration[gitlab-rails] (gitlab::database_migrations line 51)

Gitlab-ce从V14.0.12升级到V14.3.6或V14.10.5时报错:如下图: 解决办法: 先停掉gitlab: gitlab-ctl stop 单独启动数据库,如果不单独启动数据库,就会报以上错误 sudo gitlab-ctl start postgresql 解决办法&#x…

哈工大计算机网络课程网络层协议详解之:互联网控制报文协议(ICMP)

哈工大计算机网络课程网络层协议详解之:互联网控制报文协议(ICMP) 在互联网中,IP数据报的传输很容易出现差错,当出现差错时,最简单的处理办法就是对该IP数据报进行丢弃。但是,并不是直接丢弃就…

android 如何分析应用的内存(九)——libc回调

android 如何分析应用的内存(九) 接上文,在前面文章中,介绍了bionic库提供的各种功能,其中包括: 自定义的mallocmalloc hookmalloc debug 接下来,介绍的是bionic库提供的libc回调功能&#x…

【Java】Java核心 77:Dom4j 解析 XML综合案例

文章目录 1、需求2、案例效果3、案例分析4、自定义JDBC框架-代码实现4.1、Configuration4.2、注解4.3、映射类:Mapper4.4、SqlSession类 5、自定义JDBC框架的使用5.1、数据表5.2、创建实体类5.3、UserMapper接口5.4、配置文件:config.xml5.5、测试类5.5、…

当金融风控遇上人工智能,众安金融的实时特征平台实践

导读:随着企业数字化转型升级,线上业务呈现多场景、多渠道、多元化的特征。数据要素价值的挖掘可谓分秒必争,业务也对数据的时效性和灵活性提出了更高的要求。在庞大分散、高并发的数据来源背景下,数据的实时处理能力成为企业提升…

vCenter崩了之后重新搭建处理办法

一、需要重新搭的情况下,vCenter虚拟机是无法使用分布式端口组的,而此时所有的物理网卡都在分布式交换机上,这样vCenter虚拟机的网络是无法访问的,所以需要先找到需要一台esxi。 二、此时可以看到两个分布式交换机 正常情况下分布…

高性能商品秒杀抢购系统

完整资料进入【数字空间】查看——baidu搜索"writebug" Goirisrabbbitmqmysql构建高性能商品秒杀抢购系统 一、项目介绍 1. 课程目标 应用GoWeb快速构建秒杀系统全流程应用开发及架构化设计思维梳理逐级优化,轻松应对“秒杀”及类似高并发场景 2. 知…

layui框架学习(30:树形模块)

Layui中的树形组件模块tree用于以树形形式显示上下级结构的数据&#xff0c;类似于winform中的tree控件。tree模块的基本用法及显示效果如下所示&#xff1a; <div id"test"></div><br /><script>layui.use([tree,layer], function(){var tr…

python安装pyelliptic-.5.7报错ImportError: No module named setuptools

1.背景&#xff1a; python安装pyelliptic-.5.7模块报错 2.环境及版本&#xff1a; linux&#xff1a;centos-7.7 python&#xff1a; 2.7.5 pyelliptic&#xff1a;5.7 注意&#xff1a;这里是纯内网环境所以pip不能使用&#xff0c;我这里配置了一个内部yum源 3.解决思路&…

Spring Boot 中的事务注解

在应用程序中&#xff0c;事务管理是一个非常重要的概念。事务是指一系列的操作&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败。在Spring Boot中&#xff0c;可以使用事务注解来管理事务。在使用事务注解的时候&#xff0c;一个非常重要的概念就是事务传播行为。 …

js内存泄漏及排查详解

js内存泄漏及排查详解 常见内存泄漏及解决方案 内存泄漏&#xff08;Memory Leak&#xff09;是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放&#xff0c;造成系统内存的浪费&#xff0c;导致程序运行速度减慢甚至系统崩溃等严重后果。 隐式全局变量 在局部…

音频小说项目介绍

看小说、听音频&#xff0c;App,H5网站&#xff0c;小程序多端开发 一、主页 主页tabBar四个分类&#xff1a; 首页&#xff0c;分类&#xff0c;收藏&#xff0c;我的 最上方是搜索框 下方是轮播图&#xff0c;不但自动滚动&#xff0c;还有动画效果 下面分类有&#xf…