FPGA 中 IP基础学习

news/2024/10/23 11:24:20/

IP 是什么?

首先,要知道什么是IP。Intellecture Property,相当于软件领域的API函数库,三方开源项目。要开发一个真正可用的电路设计,不管什么领域,总会使用到一些IP,不太可能从头开始。IP分为硬核和软核,我们今天讲的是软核IP。

IP 的业界标准

IP 为了方便使用,业界对于IP 约定了封装的关键格式定义。IP - XACT ( eXchange ArchiteCTure),这是为了方便大家的IP能够互相通用。具体的内容,可参见:

IP-XACT 这是IP- XACT 的官方网站。

IP-XACT标准的User Guide为:
IP-XACT_User_Guide_2018-02-16.pdf
IPXACT-2014-issues-Dec-2019.pdf

IP 关键定义

component:基础定义

name: IP 核名称
version:IP 核版本
vendor:供应商(开发商)
library:库名称(实际就是分类,可以多个层级的嵌套)

model-parameter: 这是最关键的,定义了参数的名称,类型。

节点名称

节点说明

ipxact:name

参数名称

ipxact:value

参数默认值

属性名称

属性说明

parameterId

参数ID

resolve

解析方式,user和generated,user为用户自己解析,generated为软件自定解析连接。

type

参数类型,目前支持类型有:bit、byte、shortint、int、longint、shortreal、real、string

属性名称

属性说明

parameterId

Id号

minimum

最小值

maximum

最大值

resolve

同上

type

值定义,同上

choiceRef

值枚举,参考choices节点

注意:上面的choice说明该项是枚举值。

choices节点的定义:

节点名称

节点说明

ipxact:name

枚举名称

ipxact:enumeration

枚举值(N个)

model-port:接口定义

这是IP向外给出的接口,方向(进,出),是否出现(可以通过表达式来控制)

节点名称

子节点

子节点

节点说明

ipxact:name

端口名称

ipxact:isPresent

是否有效,通过true或false,或者表达式进行动态控制

ipxact:wire

端口线属性

ipxact:direction

端口方向,in、out、 inout、phantom

ipxact:drivers

端口驱动

ipxact:driver

端口驱动

ipxact:defaultValue

端口默认值

ipxact:qualifier

ipxact:isClock

是否是Clock

ipxact:isReset

是否是Reset

ipxact:isAddress

是否是Address

ipxact:isData

是否是Data

vendorExtensions

自定义的额外属性

eagle:portInfo

自有节点定义,定义端口信息

eagle:type

端口类型,暂定CLOCK、RESET、DATA

model-instantiations:实例化定义

主要约定了真实使用时,需要实例化的一些参数,比如:语言,涉及到哪些文件,涉及到的参数。

注意:参数并不一定是接口。

节点名称

节点说明

ipxact:name

组件实例化的名称

ipxact:language

实例化语言,包括Verilog、VHDL、System Verilog等

ipxact:moduleParameters

定义了Verilog中的所有参数,以DLRAM为例,则为下图中所有的参数。

ipxact:fileSetRef

定义了组件例化的所引用的文件名,参考fileSets节点

fileSets:约定了IP核需要的所有文件。

节点名称

子节点

节点说明

ipxact:name

文件集名称

ipxact:file

文件

ipxact:name

文件名,绝对路径或相对路径

ipxact:fileType

文件类型,如Verilog文件,VHDL文件等

ipxact:logicalName

定义在本xml中所使用的逻辑名称

Model-views:定义了不同视角需要的视图

设计视图,验证视图,物理视图,封装视图等。

节点名称

节点说明

ipxact:name

视图名称

ipxact:displayName

视图显示名称

ipxact:envIdentifier

当前视图的环境标识符,标识视图属于哪个环境,例如设计环境或验证环境等

ipxact:componentInstantiationRef

组件例化的引用

vendorExtensions:用于扩展

供应商自行定义的属性和功能。

表达式

另外,非常关键的是,上述定义的值部分,是可以用表达式的。这样,可以通过用户的不同输入,控制很多属性。表达式支持 SystemVerilog。

IP Catelog

好了,IP定义好了,那什么叫IP Catelog呢?如字面意思,它就是一个IP的集合,为了方便大家搜索,查找到需要的IP。所以,它可以按IP定义中的library和name来组成,没有任何难度,是很好实现的功能。

IP Package

IP Package 就是一个工具,可以把自已的工程打包成一个标准的IP。它包括文件封装,打包,目录版本管理,元数据的定义和相关的文档。还可以导入到客户工程,或者分项给其它用户。

这个可以理解为对 IP-XACT协议中的细节进行定义的过程和辅助的工具。它并不是必须的,因为,如果你足够了解XACT,你完全可以手工完成整个过程。

UI 生成工具

对于model-views中的用户的参数设置界面,可以采用系统内置的列表式,也可以自定义界面,如果自定义界面,则需要自行解析相应的界面定义文件(需要自行实现若干输入UI组件)。一般情况,使用列表式界面即可。对于复杂的输入,则需要自定义界面。

Block Design

如果我们要连接不同的IP,进行组合处理,block design是一个很好的图形工具,使设计工程师能通过拖放和连接IP核来实现的复杂的功能模块。当然,最极端的情况是只有一个IP。当完成连接后,要给到用户使用,一般采取wrapper的方式。

IP Wrapper

通过Wrapper,定义blockdesign的输入,输出,会最终形成一个wrapper,然后用户按黑盒的方式,只需要了解wrapper,来使用真实的IP。所以,wrapper并不是一个设计期的行为,而是一个运行期的动作。因为它的前置还有block design。

IP 例化

IP最终实例化使用有两种情况,一种是用于行为仿真,一种是正常综合使用。基本雷同。

在使用时,非常简单,直接调用wrapper,当然,这时会要求填写一些参数,这时会使用到定义的参数界面。

IP 加密

如果用户想保护自已的IP源码,还可以采用先综合,再封装的方式,将源码隐藏起来,当然,这种方式会强依赖于综合工具,如果不同的产品之间,不一定能通用。

其它

IP实际上是和器件相关的,同一个IP可能在不同器件不一定兼容。这是可能发生的。

对于IP的使用,大概涉及的上述的内容,一开始接触时,容易把几个概念搞混淆。实际上,IP封装和使用的相关概念是比较简单的,自已要做一个IP Packager和 IP Generate,甚至产生IP 的 Repository 都是非常简单的,只需要严格按照 IP - XACT的最新协议来实现即可。

当然,要写好一个IP,那属于硬件电路设计编程的事情,不在这里讨论。我只是在考虑自已要实现IP封装相关的功能,需要做一些什么事情。

 


http://www.ppmy.cn/news/916671.html

相关文章

Hydra(九头蛇)密码破解工具的详细使用教程

简介 Hydra是⼀款开源的暴⼒密码pojie⼯具,⽀持多种协议密码的破译。 可以对多种服务的账号和密码进行爆破,包括 数据库、SSH、FTP 等服务,在 Kali Linux 中自带 Hydra。有了这个工具就可以很方便的对密码进行破解。 其简单的使用参数如下&a…

飞行动力学 - 第10节-空间机动性、稳定性与操纵性概述 之 基础点摘要

飞行动力学 - 第10节-空间机动性、稳定性与操纵性概述 之 基础点摘要 1. 协调盘旋性能计算流程2. 一般盘旋2.1 动力学方程2.2 角点速度2.3 典型战斗机盘旋曲线 3. 空间机动能力4. 飞行动力学:飞行性能稳定性与操纵性5. 稳定性定义6. 飞行品质6.1 品质等级6.2 品质评…

JAVAweb 02

第二章 MySQL基础 数据库的基本概念MySQL数据库软件SQLDDL:操作数据库、表DML:增删改表中数据DQL:查询表中的记录 数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库?* 用于存储和管理数据的仓…

数据分析大数据面试题大杂烩01

互联网:通过埋点实时计算用户浏览频次用优惠券等措施吸引用户,通过历史信息用非智能学习的title方式构造用户画像(抖音,京东) 电信,银行统计营收和针对用户的个人画像:处理大量非实时数据 政府:健康码,扫码之后确诊,找出与确诊对象有关联的人 订单 订单表(除商品以外所有信息),…

爬虫概述论

目录 一:windows环境下进入虚拟环境二: requests模块的基本使用2.1: requests模块请求对象:2.2: requests模块的响应对象:2.3: requests模块发送post请求:2.4:requests模块使用代理ip:2.5: requ…

软考中级网络工程师

(说明:本文全部内容均来源09~19年软考中级网络工程师上午单选题考试真题,笔者汇总的知识点均为单选题常考知识点,希望对您有所帮助,感谢支持♥♥♥) 目录 一、计算机组成原理 二、计算机网络概率 三、数…

Oracle 基础语法

oracle常用命令 文章目录 oracle常用命令一. 基础命令1.1.1 查看oracle数据库的单个表结构1.1.2 查看oracle单个数据表包含的索引1.1.3 更新多个记录1.1.4 锁表解决方案1.1.5 Oracle连接池监控1.1.6 新用户创建及授权1.1.7 [oracle中在一张表中新增字段和字段说明](https://www…

运维巡检参考手册

一、巡检表 二、巡检参考 2.1、centos巡检 1> 身份鉴别:确保root是唯一的UID为0的账户,除root以外其他UID为0的用户都应该删除,或者为其分配新的UID;查看命令: cat /etc/passwd | awk -F: ‘($3 0) { print $1 }’|grep -v…