[FPGA 学习记录] 快速开发的法宝——IP核

快速开发的法宝——IP核

文章目录

  • 1 IP 核是什么
  • 2 为什么要使用 IP 核
  • 3 IP 核的存在形式
  • 4 IP 核的缺点
  • 5 Quartus II 软件下 IP 核的调用
  • 6 Altera IP 核的分类

在本小节当中,我们来学习一下 IP 核的相关知识。

IP 核在 FPGA 开发当中应用十分广泛,它被称为快速开发的法宝。在本小节当中,我们将和各位朋友一起来学习了解 IP 核的相关知识、理解掌握 IP 核的调用方法。

我们分为以下几个部分进行 IP 核的学习

  1. 首先是第一部分:IP 核是什么。在这一部分,我们会对 IP 核的基本概念做一个解析
  2. 第二部分是:为什么要使用 IP 核。在这一部分会告诉大家 IP 核的一个使用目的
  3. 第三部分是:IP 核的存在形式,也就是 IP 核的一个分类
  4. 第四部分是:IP 核的缺点。事物的存在有利也有弊,IP 核也不例外。这一部分会讲解一下:IP 核使用的一个局限性
  5. 第五部分就是:Quartus II 软件下 IP 核的一个调用。在这一部分会带领各位朋友,了解如何在 Quartus II 软件下调用 IP 核
  6. 第六部分是 Altera IP 核的一个分类。这部分内容的讲解目的是方便各位朋友,在以后的使用过程中能够快速准确的调用 IP 核

首先是第一部分内容的讲解:IP 核是什么?

1 IP 核是什么

IP 是一个英文(首字母缩写)简称,英文全称是:Intllectual Property,译为中文就是知识产权。在半导体产业中将 IP 核定义为:用于 ASIC 或者 FPGA 中预先设计好的电路功能模块;换句话说:IP 就是指电路功能模块。

在数字电路当中,我们将常用的而且比较复杂的功能模块设计成参数可修改的模块。比如说后面常用到的 FIFO、RAM,还有 SDRAM 控制器;这些常用的而且比较复杂的功能模块设计成参数可修改的模块,在使用过程中其他用户可以直接调用这些模块,这个就是 IP 核。

现在了解了 IP 核的概念之后,我们进入下一个问题:为什么要使用 IP 核?

2 为什么要使用 IP 核

随着科技的进步、IC 工艺的提高,FPGA 的规模越来越大;随着 FPGA 的规模越来越大,FPGA 的设计也是越来越复杂;IC 的复杂度每年以 55% 的速率提高,而我们的设计能力每年只提高 20% 左右;我们设计者的主要任务,是在规定的时间周期内完成一个复杂的设计,但是 IC 复杂度递增的速率大于我们设计能力的提高,这样就使得设计者需要的设计周期就越来越长,这样不利于产品的一个上市;为了解决这个问题,将一些在数字电路中常用的但是比较复杂的功能块,比如说前面提到的 FIFO、RAM、SDRAM 控制器设计成可修改的参数模块,就是前面提到的 IP 核,然后在开发过程中使用 IP 核,这样就可以避免重复劳动、提高开发效率、减少设计和调试的时间,加速开发进程、降低开发成本,这样也大大缩短了产品上市时间、减轻了工程师的一个负担,也是业内的一个发展趋势。这就是我们使用 IP 核开发的一个目的。

了解了 IP 核的概念以及使用目的之后,我们进入第三部分:IP 核的一个存在形式,就是它的分类

3 IP 核的存在形式

IP 核根据产品交付的方式进行分类,有三种不同的存在形式,分别对应我们常说的三类 IP 内核,这三种 IP 内核实现的方法也是各具特色

  1. HDL 语言形式–>软核

    软核也称为软 IP,它通常是以硬件描述语言 HDL 源文件的形式出现,它的应用开发过程与普通的 HDL 设计也是十分的相似,大多数应用于 FPGA 的 IP 内核均是软核。软核有助于用户调节参数并增强可复用性,就是说它可以进行参数的调整(复用性强);软核通常是以加密的形式提供,实际的用户是看不到内部的 RTL 代码的,但是它的布局布线是十分灵活的;在这些加密的软核当中如果对内核进行了参数化,用户就可以通过头文件或者说 GUI 图形界面对参数进行一个设置。软核它的设计周期短、设计投入少,软核由于不涉及物理实现,为后续设计留有很大的发挥空间,增大了 IP 核的一个灵活性和适应性。

    同时,软核也是有缺点的。软核是以源代码的形式提供,尽管源代码可以采用加密的方法,但是它的知识产权保护的问题仍然不容忽视。

  2. 网表形式–>固核

    固核是软核与硬核的一个折中,固核是完成了综合的功能块,它有较大的设计深度。对于那些对时序要求十分严格的内核,比如说:PCIE 接口内核,对于这种时序要求比较严格的内核,它可以预布线特定信号,或者说分配特定的一个布线资源,目的是满足这些内核的时序要求。

    固核也是有缺点的:如果说固核它有固定的布局或者部分固定的布局,在使用过程中会影响其他电路的一个布局,这是它的一个缺点。

  3. 版图形式–>硬核

    硬核是完整提供设计的最终阶段产品——掩膜,硬核是以经过完全的布局布线的网表形式提供,这种硬核既具有可预见性,同时还可以针对特定的工艺或者说购买商进行功耗和尺寸的一个优化。

    但是它缺乏灵活性、可移植性较差;但是,它不存在 RTL 文件,更易于实现 IP 核的一个保护。

事物的存在有利也有弊,IP 核在拥有众多的优点的同时,它也存在巨大的缺点

4 IP 核的缺点

我们来看一下 IP 核的缺点

  1. 首先第一点:IP 核往往不能跨平台使用。这句话什么意思呢?每个 FPGA 开发厂商会根据自己的芯片适配定制的 IP,如果说你之前使用的是赛灵思的芯片,使用了其中的一个 IP 核,但是因为某些原因,你需要将这个代码移植到 Altera 平台上,就必须在 Altera 平台上选择具有相同功能的 IP 核,进行一个替换,否则你就不能使用,这样就增加了代码移植的一个复杂性。
  2. IP 核的第二条缺点是:IP 核不透明,看不到内部的核心代码。IP 核相当于一个黑匣子,它是不透明的,我们只能看到输入信号和输出信号,内部的核心代码是看不到的;因为 IP 核都是各大 FPGA 厂商专门设计的,都会进行一个加密,内部的核心代码是看不到的。如果说我们在使用过程中,想要根据实际的应用进行一个优化,这是不可能的;因为我们是无法进行修改的。这个问题在使用过程中就很棘手
  3. IP 核的第三个缺点就是:定制的 IP 需要额外收费。我们平时使用的一些具有简单功能的 IP 核是 FPGA 厂商提供的,是免费的;但是说,如果你想要使用某些能够实现特殊功能的 IP 核,需要进行一个额外收费。

IP 核在能够缩短我们开发周期的情况下存在以上三个问题。这时候我们就需要权衡利弊,针对具体的需求来做一个具体的选择。

下面我们讲解第五部分:在 Quartus II 开发软件下进行 IP 核的一个调用

5 Quartus II 软件下 IP 核的调用

在 Quartus II 开发软件下进行 IP 核的调用有四种方式

  1. 第一种是 Mega Wizard 的插件管理器
  2. 第二种是 SOPC 构造器
  3. 第三种是 DSP 构造器
  4. 第四种是 Qsys 设计系统例化

在这四种方式中,后两种方式(DSP 构造器、Qsys 设计系统例化)它们仅支持部分的一个 IP 核的例化和使用,最为常用的 IP 核的调用方式是第一种:使用插件管理器的调用方式
Mega Wizard 插件管理器它可以用于创建和修改包含定制 IP 核的一个设计文件,然后在设计文件中例化 IP 核;可以自动生成设计文件、例化模板以及例化声明文件;使用这个插件管理器,可以指定 IP 核的不同选项,包括设置参数值、选择可选端口;还可以为第三方综合工具生成网表文件(第三方的 IP 核是以网表文件的形式进行提供的)。

说了这么多,下面就和各位朋友一起学习使用插件管理器进行一个 IP 核的调用。

我们回到桌面,然后打开 Quartus II 开发软件,关闭开发软件的启动页

image-20231206101736665

第一步就是启动 Mega Wizard 插件管理器:选择 Tools–>MegaWizard Plug-In Manager

image-20231206102053569

弹出了一个 Mega Wizard 插件管理器的选择页面

image-20231206102507483

其中有三个选项

  1. Create a new custom megafunction variation:创建一个新的 IP 核
  2. Edit an existing custom megafunction variation:编辑已经存在的 IP 核
  3. Copy an existing custom megafunction variation:复制已经存在的 IP 核

我们这儿选择第一个:创建一个新的 IP 核,然后点击下一步

image-20231206103003465

然后就到了 2a 页面

image-20231206103125427

首先第一步要选择右上角的位置,选择我们的 FPGA 芯片属于哪个系列;因为不同的器件类型,它可以使用的 IP 核是不同的;比如说我们选择征途系列开发板使用的器件就是 Cyclone IV E 系列

image-20231206103400296

所以说这个地方要保持与工程创建时我们选择的器件系列一致,避免出现 IP 核不支持器件的一个情况。

第二个位置要设置 IP 核输出文件的语言类型,语言类型的设置取决于工程具体设计所使用的语言,我们使用的是 Verilog 就选择 Verilog HDL

image-20231206103617075

第三个位置就是搜索框以及搜索框下方的列表,如果搜索框中不进行输入,下方列表就会分类显示出所有的 IP 核

image-20231206104022328

在这个搜索框当中输入我们想要使用的 IP 核的名称来进行一个 IP 核的搜索,比如说我们想要使用锁相环的 IP 核就输入 pll,下方列表当中就会显示出与我们搜索 IP 核相关的一些 IP 核

image-20231206104231907

然后我们选择使用其中一个 IP 核,选中 ALTPLL;在列表右侧我们就要选择 IP 核输出文件的一个保存位置,这个保存位置一般都是工程文件夹

image-20231206104609952

假如说在 2a 页面选择完毕之后,点击下一步就可以进行参数的一个设置,最后生成我们的 IP 核

image-20231206104649084

以上部分,就是使用 Mega Wizard 插件管理器实现 IP 核一个调用。

下面进入第六部分,就是 Altera IP 核的一个分类

6 Altera IP 核的分类

我们回到 Mega Wizard 插件管理器的 2a 页面,然后清空搜索框,搜索框下方的 IP 核列表当中显示的就是 Altera 提供的 IP 核

image-20231206122121483

下面就参照这个列表来对 Altera IP 核的类型做一个讲解。首先是:数学运算 IP 核

image-20231206122409266

这里面包含了四个部分

  1. 第一部分就是:LPM 类型的整数运算 IP 核

    LPM 表示参数化类型 IP 核库。LPM_ADD_SUB这个就是加法器和减法器的 IP 核、LPM COMPARE这个是比较器、LPM_COUNTER是计数器、LPM_DIVIDE是除法器、LPM_MULT是乘法器

  2. 第二部分就是:ALT 类型的整数运算 IP 核

    ALT 表示的是 Altera 特定的 IP 核。ALTMULT_ACCUM(MAC)是乘累加器、ALTMEMMULT是基于存储的常系数乘法器、ALTMULT_ADD是它的乘加器、ALTMULT_COMPLEX是它的复数乘法器

  3. 第三部分就是:浮点数运算 IP 核

    ALTFP_ADD_SUB就是浮点数加/减法器、ALTFP_DIV是浮点数的除法器、ALTFP_MULT是浮点数的乘法器、ALTFP_SQRT就是浮点数的平方根计算器

然后就是:逻辑运算 IP 核

image-20231206145709311

LPM_CLSHIFT是循环移位、LPM_CONSTANT常数、LPM_DECODE解码和LPM_MUX复用。

第三大类是:存储器 IP 核

image-20231206145941021

里面有 FIFOFIFO、RAM initializerRAM:1-PORTRAM:2-PORTRAM、ROM:1-PORTROM:2-PORTROM 等等
第四大类是:数字信号处理 IP 核

image-20231206150300040

这里边有 CIC v13.0CIC、FIR Compiler II v13.0FIR Compiler v13.0FIR 编码器,然后还有 NC0 v13.0NCO、FFT v13.0FFT(傅里叶变换)
然后是:数字通信类的 IP 核

image-20231206150545059

这儿有 CRC Compiler v13.0CRC 编码,还有 8B10B Encoder-Decoder v13.08B 转 10B 的编码译码器 IP 核。

下一个分类是:视频和图像处理 IP 核

image-20231206150836959

接下来就是:输入输出 IP 核

image-20231206150949454

刚才使用的 PLL(锁相环) 也在这里面ALTPLL,然后还有 ALTLVDS_RXALTLVDS_TXLVDS 收发器的 IP 核。

下面就是:接口 IP 核

image-20231206151158421

这里面有 PCIPCI 接口、PCI ExpressPCIE 接口、SDISDI 接口,还有 Ethernet以太网的接口等等一些的接口。
最后是:FPGA 调试部分的 IP 核

image-20231206151437183

这儿有 Parallel Flash Loader并行的 Flash、Serial Flash Loader串行的 Flash,然后后面会讲到的 SignalTap II Logic Analyzer在线逻辑分析仪。

除了刚刚讲到的一些 IP 核的分类之外,还有一些针对部分 Altera 系列的 FPGA 应用的专用的一些 IP 核,这儿就不再进行讲解了。


参考资料:

41-第二十四讲-快速开发的法宝

24. 快速开发的法宝 — IP核

File:Kamehameha DB scheme.svg

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

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

相关文章

使用Golang构建高性能网络爬虫

目录 一、Golang的特点 二、构建网络爬虫的步骤 三、关键技术和注意事项 使用协程进行并发处理 使用通道进行协程间的通信 合理控制并发数和处理速度 遵守网站使用协议和法律法规 防止被网站封禁或限制访问 优化网页解析和数据处理 异常处理和错误处理 日志记录和监控…

vmware虚拟机17 安装macos14过程及问题处理亲测

前期准备 1、可引导可虚拟机安装的macOS Sonoma 14 ISO镜像安装文件 我找到得地址,下载自行解决啦 2、VMware虚拟机应用软件 官网下载就好,搜个码搞定 3、解锁工具macOS Unlocker 开始安装: 1、打开VMware软件,新建一个系统…

Bert-vits2新版本V2.1英文模型本地训练以及中英文混合推理(mix)

中英文混合输出是文本转语音(TTS)项目中很常见的需求场景,尤其在技术文章或者技术视频领域里,其中文文本中一定会夹杂着海量的英文单词,我们当然不希望AI口播只会念中文,Bert-vits2老版本(2.0以下版本)并不支持英文训练和推理&…

完整方案开放下载!详解中国移动《通信网络中量子计算应用研究报告》

8月30日,中国移动在第四届科技周暨战略性新兴产业共创发展大会上重磅发布了《通信网络中量子计算应用研究报告》。 玻色量子作为中国移动在光量子计算领域的唯一一家合作企业兼战投企业,在量子计算应用于通信行业达成了深入合作,并在5G天线多…

干货分享|300平米A级机房设计方案

本方案中XXX计算机中心机房建设工程,是XXX的数据中心,机房位于建筑的X层,计算机机房面积300㎡。采购设备以及装修工艺主要用于XXX所属计算机机房装修工程。 考虑到中心机房投资大、使用周期长,而业主业务发展快,现代技…

空间地图GIS基础

关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、GIS基本概念 地理信息系统(Geographic Informaiton System, GIS)是一个可以建立、浏览、查询、分析地理空间数据的软件系统,其功能小…

【RHCE】openlab搭建web网站

网站需求: 1、基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 增加映射 [rootlocalhost ~]# vim /etc/hosts 创建网页 [rootlocalhost ~]# mkdir -p /www/openlab [rootlocalhost ~]# echo welcome to openlab > /www/openlab/index.h…

利用法线贴图渲染逼真的3D老虎模型

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

3-Mybatis

文章目录 Mybatis概述什么是Mybatis?Mybatis导入知识补充数据持久化持久层 第一个Mybatis程序:数据的增删改查查创建环境编写代码1、目录结构2、核心配置文件:resources/mybatis-config.xml3、mybatis工具类:Utils/MybatisUtils4、…

ALNS的MDP模型| 还没整理完12-08

有好几篇论文已经这样做了,先摆出一篇,然后再慢慢更新 第一篇 该篇论文提出了一种称为深增强ALNS(DR-ALNS)的方法,它利用DRL选择最有效的破坏和修复运营商,配置破坏严重性参数施加在破坏算子上&#xff0c…

第二十一章网络通信总结

21.1 网络程序设计基础 Java网络程序设计基础涉及使用Java编程语言创建网络应用程序。这通常涉及到使用Java的网络API,如java.net包,以建立客户端和服务器之间的通信。 基本步骤包括: 1.创建服务器: 使用ServerSocket类创建服务…

常见的中间件--消息队列中间件测试点

最近刷题,看到了有问中间件的题目,于是整理了一些中间件的知识,大多是在小破站上的笔记,仅供大家参考~ 主要分为七个部分来分享: 一、常见的中间件 二、什么是队列? 三、常见消息队列MQ的比较 四、队列…

12_企业架构之Tomcat部署使用

Tomcat 学习目标和内容 1、能够描述Tomcat的使用场景 2、能够简单描述Tomcat的工作原理 3、能够实现部署安装Tomcat 4、能够实现配置Tomcat的service服务和自启动 5、能够实现Tomcat的Host的配置 6、能够实现Nginx反向代理Tomcat 7、能够实现Nginx负载均衡到Tomcat 一、Tomcat介…

linux的定时任务Corntab

安装crontab # yum安装crontab yum install -y crontab# 开机自启crond服务并现在启动 systemctl enable --now crondcron系统任务调度 系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。 在/etc/crontab文件,这…

机器学习之全面了解回归学习器

我们将和大家一起探讨机器学习与数据科学的主题。 本文主要讨论大家针对回归学习器提出的问题。我将概要介绍,然后探讨以下五个问题: 1. 能否将回归学习器用于时序数据? 2. 该如何缩短训练时间? 3. 该如何解释不同模型的结果和…

No suitable driver found for jdbc:mysql://localhost:3306(2023/12/7更新)

有两种情况: 压根没安装下载了但没设为库或方法不对 大多数为第一种情况: 一. 下载jdbc 打开网址选择一个版本进行下载 https://nowjava.com/jar/version/mysql/mysql-connector-java.html 二.安装jdbc 在项目里建一个lib文件夹 在把之前下载的jar文…

优化 SQL 日志记录的方法

为什么 SQL 日志记录是必不可少的 SQL 日志记录在数据库安全和审计中起着至关重要的作用,它涉及跟踪在数据库上执行的所有 SQL 语句,从而实现审计、故障排除和取证分析。SQL 日志记录可以提供有关数据库如何访问和使用的宝贵见解,使其成为确…

JNPF低代码平台详解 -- 系统架构

目录 一、技术介绍 技术架构 二、设计原理 三、界面展示 1.代码生成器 2.工作流程 3.门户设计 4.大屏设计 5.报表设计 6.第三方登录 7.多租户实现 8.分布式调度 9.消息中心 四、功能框架 JNPF低代码是一款新奇、实用、高效的企业级软件开发工具,支持企…

Qt/C++音视频开发58-逐帧播放/上一帧下一帧/切换播放进度/实时解码

一、前言 逐帧播放是近期增加的功能,之前也一直思考过这个功能该如何实现,对于mdk/qtav等内核组件,可以直接用该组件提供的接口实现即可,而对于ffmpeg,需要自己处理,如果有缓存的数据的话,可以…

Rust的eBFP框架Aya(一) - Linux内核网络基础

前言 在我的Rust入门及实战系列文章中已经说明, Rust是一门内存安全的高性能编程语言,从它的这些优秀特性来看,就是一门专为系统开发而诞生的语言。至于很多使用Rust来进行web开发的行为,不能说它们不好,只能说是杀鸡…