AXI-自定义IP-PS设计
基于AXI4的自定义IP核的设计
1、实验目标
利用vivado中内置的AXI总线初始化的IP核设计工具,将自己设计的流水灯的PL代码打包成IP核外设,挂在PS上,通过PS上的按钮控制流水灯的开始和结束。
2、实验原理
首先准备一个流水灯的代码,打包到AXI为基础的核上。然后利用PS访问这个部分并且控制开始与结束。
3、实验操作
(1)打开IP 核设计界面
tools》create and package new IP
第一页:简介部分,大致说明了主题功能,直接next就可以。
第二页:IP核的类型。默认的第三个是无总线的。第四个是有总线的。这里选择有总线的a new AXI4 peripheral即可next。
第三页:创建IP的基本信息,可以默认跳过。
第四页:创建AXI总线的设置。如名字、协议类型(这个在AXI总线的理论学习中接触过)、数据宽度、寄存器个数等设置。一般简单实验把寄存器个数设为最小的4,其他默认即可。
第五页:创建完后做什么。这里选择第二个编辑IP就可以自动打开IP设计器。
(2)添加Verilog文件
查看资源,这时候已经有了一个V顶层文件。这个文件是这个IP的顶层,用户自定义的PL设计也是要挂在这个顶层下的。如果对AXI协议比较熟悉的话,可以自己完成AXI总线的设计然后封装为AXI的IP核,跳过引导。这里先看一下如何利用引导快速将PL设计加入AXI的IP中。
这里的用法和FPGA的设计完全一致了,就是给了顶层,写好子模块就可以了。
module stream_led(
input clk,
input rst,
output reg [3:0] led
);
reg clk_div;
reg [25:0] cnt;
always@(posedge clk)begin
if(rst)begin
cnt<=26'd0;
end
else if(cnt==26'd10_000_000-1'b1)begin
cnt<=26'd0;
end
else begin
cnt<=cnt+1'b1;
end
end
always@(posedge clk)begin
if(rst)begin
clk_div<=1'b0;
end
else if(cnt==26'd10_000_000-1'b1)begin
clk_div<=~clk_div;
end
end
always@(posedge clk_div)begin
if(rst)begin
led<=4'd0;
end
else begin
case(led)
4'b0000: led<=4'b0001;
4'b0001: led<=4'b0010;
4'b0010: led<=4'b0100;
4'b0100: led<=4'b1000;
4'b1000: led<=4'b0001;
default: led<=4'b0000;
endcase
end
end
endmodule
由于时间关系,这里暂时完成到这一步。下面的操作需要分析vivado提供的模板,将AXI总线的理论和实验结合起来。这里需要不少时间。
4、实验结果
暂时先准备好代码,如何操作还需要找到一些资料来实现。大体的思路是将所需的端口挂在AXI总线的寄存器上。用一个寄存器做输入,一个寄存器做输出。其中clk直接引到顶层,通过PL连接出去。rst通过寄存器0的值输入控制。led通过寄存器1的值输出结果。具体的细节后面再看。
AXI-自定义IP-PS设计的更多相关文章
- ZYNQ自定义AXI总线IP应用——PWM实现呼吸灯效果
一.前言 在实时性要求较高的场合中,CPU软件执行的方式显然不能满足需求,这时需要硬件逻辑实现部分功能.要想使自定义IP核被CPU访问,就必须带有总线接口.ZYNQ采用AXI BUS实现PS和PL之间 ...
- vivado设计三:一步一步生成自己的自定义IP核
开发环境:xp vivado2013.4 基于AXI-Lite的用户自定义IP核设计 这里以用户自定义led_ip为例: 1.建立工程 和设计一过程一样,见vivado设计一http://blog. ...
- ZYNQ笔记(7):AXI从口自定义IP封装
使用 AXI_Lite 从口实现寄存器列表的读写,并且自己封装为一个自定义 IP,以便以后使用.本次记录的是 M_AXI_GP0 接口,此接口是 ARM 作为主机,FPGA 作为从机,配置 FPGA ...
- vivado设计四:自定义IP核测试
在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...
- AXI-Lite总线及其自定义IP核使用分析总结
ZYNQ的优势在于通过高效的接口总线组成了ARM+FPGA的架构.我认为两者是互为底层的,当进行算法验证时,ARM端现有的硬件控制器和库函数可以很方便地连接外设,而不像FPGA设计那样完全写出接口时序 ...
- IP包设计
IP包 IP核(Intellectual Property core)就是知识产权核或知识产权模块的意思,用于配置FPGA或其它硅芯片上的逻辑资源. 引用链接https://blog.csdn.net ...
- Vivado 2017封装自定义IP Core
使用Vivado2017.3自定义IP Core.通常情况下,我们做设计采用模块化设计,对于已经设计好的一部分模块功能,就可以直接拿来调用,IP Core就是这样来的,一般来说我们看不到IP Core ...
- 第三章 VIVADO 自定义IP 流水灯实验
第二章里面已经说过了,MIZ701 PL部分没有输入时钟,因此驱动PL资源必须是通过PS来提供时钟,所以这个流水灯实验也得建立一个最小系统了,然后再添加一个流水灯的自定义IP. 3.0本章难度系数★★ ...
- 教你怎样写自定义IP地址算法
通过IP地址可以看到算法规律,写成自定义IP地址,也可以把IP地址转为自定格式的IP地址.也可以用于加密一些明文数字.起始次方可自定义(以1次方和0次方为例) a.以下写正反算法(以1次方为最小单位) ...
- [转]为何TCP/IP协议栈设计成沙漏型的
http://m.blog.csdn.net/blog/dog250/18959371 前几天有人回复我的一篇文章问,为何TCP/IP协议栈设计成沙漏型的.这个问题问得好!我先不谈为何它如此设计,我一 ...
随机推荐
- 【Unity3D】Unity3D技术栈
1 前言 本文梳理了笔者在学习 Unity3D 的过程中,对 Unity3D 的理解和学习路线,以帮助读者循序渐进地学习 Unity3D,后续笔者仍会持续更新 Unity3D 相关技术栈,并同步到 ...
- vue+jsPlumb制成的流程图项目
本项目参考:https://github.com/wangduanduan/visual-ivr 主页面如下:
- mysql中如何批量生成百万级数据
# 准备 #1. 准备表 create table s1( id int, name varchar(20), gender char(6), email varchar(50), first_nam ...
- 关于“非法的前向引用(illegal forward reference)”的探究
1.问题: 有如下代码: public class Test { static { i = 0;// 给变量赋值可以正常编译通过 System.out.print(i);// 编译器会提示" ...
- FROM_UNIXTIME函数格式化时间戳日期类型
select FROM_UNIXTIME(bce.daysec_time/1000,'%Y-%m-%d %h:%i:%s') ,bce.* from biz_cvent bce where bce.d ...
- 【Azure 应用服务】部署WAR包到App Service访问出现404错误的解决方式
问题描述 在Linux的App Service上,通过FTP把war文件和HTML静态文件上传到wwwroot目录下,静态文件访问成功,但是java应用中的请求都返回404错误 问题解决 因为FTP上 ...
- linux基本知识汇总1(基础命令) 20000字汇总
$$$$ 命令选项查看方式1.内建命令(help)格式: help + 内建命令#### help 命令 // 命令使用说明 2.外部命令(–help)一般是 Linux 命令自带的帮助信息,并不是所 ...
- 阿里巴巴/1688 api接口 获取商品详情 数据采集
iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的阿里巴巴1688电商数据采集API,供用户按需调用. 接口使用详情请参考阿里巴巴1688接口 ...
- RAPTOR 一种基于树的RAG方法,RAG的准确率提高 20%
一种理解整个文档上下文的新颖的 RAG 方法 RAG 是当前使用LLM的标准方法,大多数现有方法仅从检索语料库中检索短的连续块,限制了对整个文档上下文的整体理解. 最近,一种名为 RAPTOR (Re ...
- 如何将应用一键部署至多个环境?丨Walrus教程
在 Walrus 平台上,运维团队在资源定义(Resource Definition)中声明提供的资源类型,通过设置匹配规则,将不同的资源部署模板应用到不同类型的环境.项目等.与此同时,研发人员无需关 ...