【【萌新的SOC学习之自定义IP核的学习与设计】】

news2024/12/24 22:12:44

萌新的SOC学习之自定义IP核的学习与设计

本章为了更加深入的了解FPGA的自定义IP和IP封装测试等问题
参考了正点原子 第六讲自定义IP核呼吸灯实验 和 第十九章 IP封装与接口定义实验

为了更好的理解自定义IP核
我们先介绍一个带AXI主从接口的IP核
在这里插入图片描述

我们可以展开AXI从接口
在这里插入图片描述

下面开始vivado 工程的创建
我们创建的这个IP核 默认提供的功能是 根据外部的输入按键 当检测到上升沿的时候 它就开始对DDR3内存 开始读写 读写的范围是4096个字节
先写 然后 读 读完之后做一个比较 如果读写正确 会有一个 error 信号 读写正确 error 信号拉低 读写错误 把 error 信号拉高

下面介绍 AXI4 接口 之DDR读写实验
实验任务 : 本章的实验任务是通过自定义的一个AXI4 接口的 IP核,通过AXI_HP 接口 对PS 端 DDR3 进行读写测试

我们查看本次实验的系统框图
在这里插入图片描述

这个DDR3 Test IP核 就是我们自己设置的
有一个输入端口信号连接到了 PL_KEY 按键 还有两个输出 分别连接到了两个灯

把上面自定义的IP添加进入整个设计

在这里插入图片描述
在这里插入图片描述

#include"stdio.h"
//为了保证访问DDR的一致性 我们把 cache 缓存关掉
#include"xil_cache.h"
#include"xil_printf.h"
#include"xil_io.h"

int main()
{
    int i ;
    char c ;
    Xil_DCacheDisable();
    printf("AXI4 PL DDR TEST!\n\r");
    while(1)
    {
        scanf("%c",&c);
        if(c == 'c')
        {
            printf("start\r\n");
            for(i=0;i<4096;i=i+4)//  为什么是i+4因为单次是读4个字节
            {
                printf("%d is %d\n",i,(int)(Xil_In32(0x10000000+i)));
            }
        }
    }
    return 0 ;
}

前面我们用的更多的是xillix官方提供的 AXI4 AXI4-lite
我们想要把verilog文件封装成ip核 这样我们在后续的实验 操作时 可以很容易的调用这个ip核完成实验

我们接下来还会学习一下接口的定义 (什么是接口 我们回忆一下做的 AXI4 的 数据实验 我们会想起来 我们在外面进行的交互是以接口的形式 并不会把简单的一个个端口给暴露出来 )

下面展示带 AXI主从接口的IP核
在这里插入图片描述

这是接口 我们可以通过点击 + 号 将所有的端口都展示出来
在这里插入图片描述

第一个 : 把指定目录 封装成IP核
先创建一个文件夹 然后带上 ip还有if ip是我们创建的ip if 是interface接口
ip里面创建一个 src的文件夹 在 src内部写下verilog文件
下面我们来研究一下如何对接口的封装
举例如 pclk 我们点击
在这里插入图片描述
在这里插入图片描述

第一行是对接口的定义 我们点击三个点 选择分类 点击clock
第三行 的那个 module 我们是选择输入的模式 作为 时钟信号 应该选择为 输入模式 毕竟是外界给这个点提供时钟的

在这里插入图片描述

这个 port Mapping 是端口映射的意思

在这里插入图片描述

然后我们就可以看到 我们封装完成的 两个大的接口
在这里插入图片描述
在这里插入图片描述

我们现在还需要把这几个接口封装起来 上面的这几个 塞林斯 的官方是有接口提示的 但是 这个并没有 所以需要我们自己去定义

我们现在需要做的是 回到之前我们点击创立 IP核 的 界面 开始创立 一个接口定义
这个部分 最后指向我们的if文件夹

在这里插入图片描述
在这里插入图片描述

clock 如下图显示

在这里插入图片描述
在这里插入图片描述

在这里 相当于给了它一个注释 下次我们打开它 我们就能看到什么意思 了
在这里插入图片描述

这样就建设完IP了

完成实验配置
下面讲述 IP核封装之打包当前的工程为IP核

我们在打包 当前文件为IP核的时候 尽量选择 打包成.xci 文件 这样包含文件信息 可以 方便后续 更新升级 IP核
不过有一说一
我跟着正点原子的例程走 我在vivado 2019.1 并没有找到 .xci
在这里插入图片描述
在这里插入图片描述

但是视频显示的 是

打包完成打开
然后 先点击 接口 看一下 有没有把自定义接口加进去
然后 点击 add interface 添加接口

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

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

相关文章

Vue--》简易资金管理系统后台项目实战(后端)

今天开始使用 node vue3 ts搭建一个简易资金管理系统的前后端分离项目&#xff0c;因为前后端分离所以会分两个专栏分别讲解前端与后端的实现&#xff0c;后端项目文章讲解可参考&#xff1a;前端链接&#xff0c;我会在前后端的两类专栏的最后一篇文章中会将项目代码开源到我…

转行做程序员,多晚都不晚

大家好啊&#xff0c;我是董董灿。 最近有不少小伙伴加我微信咨询一些问题&#xff0c;有同学想了解AI行业的现状&#xff0c;想着转行的&#xff0c;也有在校生想了解毕业后工作方向的&#xff0c;当然也有想学习编程知识的。 诚惶诚恐&#xff0c;没想到之前写的文章&#…

【CHI】CHI协议,transaction事务汇总

前言 CHI协议最难的是什么&#xff0c;就是那一堆各种各样的事务&#xff0c;你不知道什么场景应该使用什么合适的事务&#xff0c;收到X事务又该回复什么事务。相当于CHI给你制定了很多种&#xff08;尽可能覆盖完全&#xff09;场景及事务&#xff0c;你需要去了解&#xff0…

英语——分享篇——每日200词——2401-2600

2401——moisture——[mɔɪstʃə(r)]——n.潮气&#xff0c;湿气&#xff0c;水分——moisture——moist潮湿的(熟词)ur你的(编码your)e鹅(编码)——潮湿的地方你的鹅一身潮气——Moisture in the atmosphere condensed into dew during the night.——大气中的水分在夜间凝结…

二阶系统时域响应

二阶系统微分方程 二阶系统传递函数 二阶系统单位阶跃响应 过阻尼系统 临界阻尼系统 欠阻尼系统 无阻尼系统 二阶系统阶跃响应仿真 在Matlab中进行仿真&#xff0c;设置不同阻尼比2、1、0.5和0&#xff0c;可以得到结论&#xff1a; 阻尼比越小&#xff0c;系统响应速度越快&…

YOLOV8改进:RefConv(即插即用!重参数化重聚焦卷积替代常规卷积,无额外推理成本下涨点明显!)

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 3.涨点效果:RefConv,实现有效涨点! 论文地址…

【项目设计】网络对战五子棋(上)

想回家过年… 文章目录 一、项目前置知识1. websocketpp库1.1 http1.0/1.1和websocket协议1.2 websocketpp库接口的前置认识1.3 搭建一个http/websocket服务器 2. jsoncpp库3. mysqlclient库 二、 项目设计1. 项目模块划分2. 实用工具类模块2.1 日志宏封装2.2 mysql_util2.3 j…

蓝桥杯每日一题2023.10.21

后缀表达式 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 30分解法&#xff1a;要求出最大的结果就需要加的数越大&#xff0c;减的数越小&#xff0c;以此为思路简单列举即可 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10…

物联网知识复习

物联网的内涵和体系结构 物联网的基本内涵 物联网的基本内涵在于物联&#xff0c;物物相连或者物和人相连的互联网。 也就是说&#xff0c;它是要由物主动发起的&#xff0c;物物互联的互联网。 它的第一层意思是说物和物相连&#xff1b;第二层意思是说物和人相连。 物联网的…

Gradient conjugate priors and multi-layer neural networks

动机 先验参数 m , α , β , v m,\alpha,\beta,v m,α,β,v和随机变量 τ \tau τ KL散度的形式是&#xff1a; Dynamics of m , α , β , v m,\alpha,\beta,v m,α,β,v Dynamics of m , β , v m,\beta,v m,β,v for a fixed α \alpha α 绿色轨迹连接初始点和目标点…

【linux】Linux 查看内存使用情况的几种方法汇总

文章目录 GUI 查看命令获取命令 free命令 vmstat命令 top命令 htop Linux 查看内存使用情况的几种方法包括使用 free 命令、top 命令、htop 命令、vmstat 命令和/proc/meminfo 文件。这些方法可以帮助用户了解系统内存的使用情况&#xff0c;包括总内存、已用内存、空闲内存、缓…

MapperStruct实现类为空

​ 问题描述&#xff1a; MapperStruct生成的实现了为空 按照在MapperStruct官网Installation – MapStruct中的方法配置后&#xff0c;生成的实现了是空的&#xff0c;如下&#xff1a; Overridepublic DeployHistory toEntity(DeployHistoryDto arg0) {if ( arg0 null ) …

经典题型---旋转数组

经典题型—旋转数组 文章目录 经典题型---旋转数组一、题目二、代码实现 一、题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步…

EPLAN_010#STEP格式_箱柜模型的定义、拼柜

一、导入 首先创建一个宏项目——在布局空间中导航器新建一个布局空间 菜单栏——布局空间——导入(3D图形&#xff09;——导入下载下来的STEP 如果导入进来的箱柜是这种模样的&#xff0c;表示可以使用。如果左侧只显示一个逻辑组件&#xff0c;则无法使用。&#xff08;如果…

webgl计算包围盒大小

使用three.js&#xff1b; 代码&#xff1b; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>第一个three.js 示例</title><style>body {margin: 0;overflow: hidden;}</style><…

canvas绘制动态视频并且在视频上加上自定义logo

实现的效果&#xff1a;可以在画布上播放动态视频&#xff0c;并且加上自定义的图片logo放在视频的右下角 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthd…

Linux---(三)基本指令大全

前提引入&#xff1a;历史上先出现的键盘还是鼠标&#xff1f; 答案&#xff1a;键盘 ✨所以刚开始的时候绝对没有图形化界面&#xff0c;因此操作系统刚开始兴起的时候绝对没有图形化界面&#xff0c;因为当时没有鼠标。 ✨因为没有图形化界面&#xff0c;只有键盘&#xff0c…

【912.排序数组】

目录 一、题目描述二、算法原理2.1快速排序2.2归并排序 三、代码实现3.1快排代码实现3.2归并代码实现 一、题目描述 二、算法原理 2.1快速排序 2.2归并排序 三、代码实现 3.1快排代码实现 class Solution { public:int getRandom(int left,int right,vector<int>&…

CoDeSys系列-2、CoDeSys安装及Windows下创建项目测试

CoDeSys系列-2、CoDeSys安装及Windows下创建项目测试 文章目录 CoDeSys系列-2、CoDeSys安装及Windows下创建项目测试一、前言二、下载及安装三、Windows下软PLC项目创建及运行测试1、创建HMI工程1.1、新建标准工程&#xff1a;1.2、添加可视化对象&#xff1a;1.3、拖动添加拨码…

31二叉树-递归遍历二叉树

目录 LeetCode之路——145. 二叉树的后序遍历 分析 LeetCode之路——94. 二叉树的中序遍历 分析 LeetCode之路——145. 二叉树的后序遍历 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出…