基于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设计的更多相关文章

  1. ZYNQ自定义AXI总线IP应用——PWM实现呼吸灯效果

    一.前言 在实时性要求较高的场合中,CPU软件执行的方式显然不能满足需求,这时需要硬件逻辑实现部分功能.要想使自定义IP核被CPU访问,就必须带有总线接口.ZYNQ采用AXI BUS实现PS和PL之间 ...

  2. vivado设计三:一步一步生成自己的自定义IP核

    开发环境:xp  vivado2013.4 基于AXI-Lite的用户自定义IP核设计 这里以用户自定义led_ip为例: 1.建立工程 和设计一过程一样,见vivado设计一http://blog. ...

  3. ZYNQ笔记(7):AXI从口自定义IP封装

    使用 AXI_Lite 从口实现寄存器列表的读写,并且自己封装为一个自定义 IP,以便以后使用.本次记录的是 M_AXI_GP0 接口,此接口是 ARM 作为主机,FPGA 作为从机,配置 FPGA ...

  4. vivado设计四:自定义IP核测试

    在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...

  5. AXI-Lite总线及其自定义IP核使用分析总结

    ZYNQ的优势在于通过高效的接口总线组成了ARM+FPGA的架构.我认为两者是互为底层的,当进行算法验证时,ARM端现有的硬件控制器和库函数可以很方便地连接外设,而不像FPGA设计那样完全写出接口时序 ...

  6. IP包设计

    IP包 IP核(Intellectual Property core)就是知识产权核或知识产权模块的意思,用于配置FPGA或其它硅芯片上的逻辑资源. 引用链接https://blog.csdn.net ...

  7. Vivado 2017封装自定义IP Core

    使用Vivado2017.3自定义IP Core.通常情况下,我们做设计采用模块化设计,对于已经设计好的一部分模块功能,就可以直接拿来调用,IP Core就是这样来的,一般来说我们看不到IP Core ...

  8. 第三章 VIVADO 自定义IP 流水灯实验

    第二章里面已经说过了,MIZ701 PL部分没有输入时钟,因此驱动PL资源必须是通过PS来提供时钟,所以这个流水灯实验也得建立一个最小系统了,然后再添加一个流水灯的自定义IP. 3.0本章难度系数★★ ...

  9. 教你怎样写自定义IP地址算法

    通过IP地址可以看到算法规律,写成自定义IP地址,也可以把IP地址转为自定格式的IP地址.也可以用于加密一些明文数字.起始次方可自定义(以1次方和0次方为例) a.以下写正反算法(以1次方为最小单位) ...

  10. [转]为何TCP/IP协议栈设计成沙漏型的

    http://m.blog.csdn.net/blog/dog250/18959371 前几天有人回复我的一篇文章问,为何TCP/IP协议栈设计成沙漏型的.这个问题问得好!我先不谈为何它如此设计,我一 ...

随机推荐

  1. nginx 基于IP的多虚拟主机配置

    1.基于IP的多虚拟主机配置 1.1 网络配置 linux操作系统支持IP别名的添加. nginx 服务器提供的每台虚拟主机对应配置一个不同的IP,因此需要将网卡设置为同时能够监听多个IP地址. 先查 ...

  2. 【Unity3D】线段渲染器LineRenderer

    1 LineRenderer 简介 ​ LineRenderer 组件用于绘制线段,可以调整线段条数.端点坐标.颜色.宽度等属性,其属性面板如下: Materials:线段材质,最好设置为 Defau ...

  3. Annotation-specified bean name conflicts with existing

    问题说明 Annotation-specified bean name conflicts with existing,non-compatible bean definition of same n ...

  4. letcode-括号生成

    递归大法,空间换时间 就是记录左右括号数,一旦右括号数大于左括号数,退出. 当左右括号数相等,且等于n则为合法解. 使用char数组取代StringBuilder可以减少内存使用,这样每次进行回溯时不 ...

  5. 硬件开发笔记(九): 硬件开发基本流程,制作一个USB转RS232的模块(八):创建asm1117-3.3V封装库并关联原理图元器件

    前言   有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的.为了更好的表述封装设计过程,本文描述了一个创建asm1117-3.3V封 ...

  6. 【Azure 存储服务】调用REST API获取Stroage Account Table中所有的Entity计数 -- Count

    问题描述 在Storage Account的使用中,如果想获取Table中全部Entity的计数以及大小,如果是REST API方式,如何来获取呢? 问题解答 在Azure中,所有服务的Metrics ...

  7. 【Azure 环境】IntelliJ IDEA Community Edition 2021.2.3登陆Azure账号时,无法切换到中国区

    问题描述 在IntelliJ IDEA Community Edition 2021.2.3中开发Azure Function程序,最后准备部署到中国区 Azure Function中.如下,在Int ...

  8. RocketMQ(3) 根据消息key查询功能的实现: indexFile

    三: indexFile 除了通过通常的指定Topic进行消息消费外,RocketMQ还提供了根据key进行消息查询的功能. 该查询是通过store目录中的index子目录中的indexFile进行索 ...

  9. 使用Order By NULL 解决 group by后自动排序,优化Sql性能

    使用Order By NULL 解决 group by后自动排序,优化Sql性能 对于 Group by 后的结果,Mysql搜索引擎会将结果按照Group by 的字段按照升序,自动排序,例如: t ...

  10. Netty笔记(5) - 编码解码机制 和 Protobuf技术

    介绍: 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码 codec(编解码器) 的组成部分有两个:decoder(解码器)和 encode ...