自建AXI4的IP核的地址问题
自建AXI4的IP核的地址问题
1、问题概述
在AXI4中,对应的操作通过对对应的寄存器设置来完成。其中的寄存器又分为数据寄存器和地址寄存器。其中,如果只是想要操作数据的话,只需要使用数据寄存器即可。在自建AXI4的IP时,会选择数据寄存器的个数。在打开封装文件时也可以看到数据寄存器。一般是slv_reg0·····等编号。其中slv代表从机,reg0代表寄存器0.这里有一个如何操作寄存器的问题。
2、问题解决
可以看出,这个数据寄存器既可以接收AXI的数据,也可以发送数据到AXI上。这里的功能十分类似一个三态门。只不过这里的控制信号也是一个可控寄存器的输出。主机通过设置配置寄存器决定输入还是输出,通过地址读取或者写入数据。严格来说,如果要使用这个寄存器的作为输入输出口,是需要和控制信号也就是配置寄存器的状态关联的。比如,作为接收主机数据时的输入寄存器,该寄存器作为正常的输入口,可以直接输出到所需的PL模块。当作为发送数据到主机的输出口,则需要接受来自PL模块的信号。显然,这里是有矛盾的。一个寄存器不可能同时有两个输入和输出。所以,虽然AXI总线是可以设置从机的通信模式:接收或者发送,但是,在设计时,具体到某个数据寄存器时,只能作为输入或者输出,不可更改。作为向主机输入的输出寄存器,甚至可以直接采用wire型变量,实时等待发送。而作为向主机接收数据的输入寄存器,只需要用reg向其他变量赋值即可将数据导出到PL。显然,发送到主机是比较困难的,需要等待主机的读取。主机是可以对每个特定的寄存器设置输入输出模式的。所以在PS端需要提前设置模式以便寄存器正确的工作。当然,如果一定要实现某个寄存器的输入输出灵活转换,则可以牺牲另外一个寄存器用于配置PL的寄存器。如果对AXI总线的信号比较熟悉的话,也可以直接读取对应的从地址进行判断,这就是需要更加复杂的结构。现在暂时不涉及。
3、问题总结
这里主要通过对主地址和从地址的对应的物理信号出发,分析所需要的数据操作。下面给出一个AXI数据传输的关系图。

这只是用于理解PS端设计时的示意图。如果想要完全理解AXI的从机逻辑,必须要五个通道和辅助的模块出发。后面会逐渐涉及数据的读写、地址的读写、响应信号的构建、优先级判断、数据缓存等各种细节的问题。
自建AXI4的IP核的地址问题的更多相关文章
- 基于AXI4总线卷积FPGA加速IP核的尝试
本文先总结不同AXI IP核的实现的方法,性能的对比,性能差异的分析,可能改进的方面.使用的硬件平台是Zedboard. 不同的AXI总线卷积加速模块的概况 这次实现并逐渐优化了三个版本的卷积加速模块 ...
- Xilinx IP核的根目录地址,有datasheet 和仿真相关的资料
C:\Xilinx\14.7\ISE_DS\ISE\coregen\ip\xilinx\dsp\com\xilinx\ip Xilinx IP核的根目录地址,有datasheet 和仿真相关的资料
- NIOS II 自定义IP核的静态地址对齐和动态地址对齐
如果使用静态地址对齐(每个寄存器在Avalon总线上占4个字节的地址)设置IP使用静态地址对齐的方式为,在hw.tcl脚本里加上一局话:set_interface_property as addres ...
- AXI-Lite总线及其自定义IP核使用分析总结
ZYNQ的优势在于通过高效的接口总线组成了ARM+FPGA的架构.我认为两者是互为底层的,当进行算法验证时,ARM端现有的硬件控制器和库函数可以很方便地连接外设,而不像FPGA设计那样完全写出接口时序 ...
- 理解AXI Quad Serial Peripheral Interface(SPI) IP核
reference : PG153-AXI Quad SPI v3.2 LogiCORE IP Product Guide.pdf 在使用MicroBlaze过程中,调用了此IP,所以有必须仔细学 ...
- Vivado中xilinx_BRAM IP核使用
Vivado2017.2 中BRAM版本为 Block Memory Generator Specific Features 8.3 BRAM IP核包括有5种类型: Single-port RA ...
- 调用altera IP核的仿真流程—上
调用altera IP核的仿真流程—上 在学习本节内容之后,请详细阅读<基于modelsim-SE的简单仿真流程>,因为本节是基于<基于modelsim-SE的简单仿真流程>的 ...
- (转)modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核)
原地址modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核) 1.打开D:\Xilinx\14.7\ISE_DS\ISE\bin\nt64\compxlibgui.e ...
- Lattice 的 DDR IP核使用调试笔记之DDR 的 仿真
—— 远航路上ing 整理于 博客园.转载请标明出处. 在上节建立完工程之后,要想明确DDR IP的使用细节,最好是做仿真.然后参考仿真来控制IP 核. 仿真的建立: 1.在IP核内的以下路径找到以下 ...
- Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置
本文由远航路上ing 原创,转载请标明出处. 这节笔记记录IP核的生成以及参数设置. 先再IP库里下载安装Framebuffer 的ipcore 并安装完毕. 一.IP核的生成: 1.先点击IP核则右 ...
随机推荐
- 快速傅里叶变换(FFT)和小波分析在信号处理上的应用
1前言 1.1傅里叶变换 函数f(t)为一元连续函数,其傅里叶变换定义为: F(w)的傅里叶逆变换定义为: 其中,i为虚数单位.由欧拉公式: 任意绝对可积的连续函数f(t),都可以用三角函数表示,由于 ...
- 【Android】MediaCodec详解
1 前言 MediaCodec 主要用于视频解码和编码操作,可以实现视频倍速播放.全关键帧转换.视频倒放等功能. MediaCodec 的工作原理图如下: MediaCodec 的主要接口 ...
- Java设计模式-迭代器模式Iterator
介绍 根据GoF的定义,迭代器模式提供了一种顺序访问聚合对象的元素而不暴露其底层表示的方法.这是一种行为设计模式. 顾名思义,迭代器有助于以定义的方式遍历对象集合,这对客户端应用程序很有用.在迭代期间 ...
- Vue+SpringBoot+ElementUI实战学生管理系统-9.教师管理模块
1.章节介绍 前一篇介绍了班级管理模块,这一篇编写教师管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 教师列表 修改教师 4.模块 ...
- 变量,六大数据类型之字符串、列表、元祖----day02
1.变量:可以改变的量,实际具体指的是内存中的一块存储空间 (1)变量的概念 (2)变量的声明 (3)变量的命名 (4)变量的交换 *常量就是不可改变的量,python当中没有明确定义常量的关键字,所 ...
- Elasticsearch-Mapping(映射)
Elasticsearch-Mapping(映射) Mapping是用来定义一个文档(document),以及它所包含的属性(field)是如何存储和 索引的. 哪些字符串属性应该被看做全文本属性(f ...
- 【八股cover#2】CPP语法 Q&A与知识点
CPP语法 Q&A与知识点 简历cover 1.熟练使用C的指针应用及内存管理 指针与引用的区别 指针是一个存储地址的变量,可以有多级,可以为空,并且在初始化后可以改变指向: 引用是原变量的别 ...
- 服务网关ZUUL过滤器
过滤器两个功能: 1.其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础: 2.过滤器功能则负责对请求的处理过程进行预干预,是实现请求校验.服务聚合等功能的基础. 有4类 ...
- 【Azure 应用服务】Azure Function在执行Function的时候,如果失败了,是否可以重试呢?
问题描述 Azure Function在执行Function的时候,如果失败了,是否可以重试呢? 问题解答 Function app默认是不开启重试的,但是可以修改 host.json 文件来定义重试 ...
- 浅入 ABP 系列教程目录汇总
浅入ABP(1):搭建基础结构的 ABP 解决方案 https://www.cnblogs.com/whuanle/p/13675889.html 浅入ABP(2):添加基础集成服务 https:// ...