AXI4从机总线分析验证之读取寄存器值
AXI4从机总线分析验证之读取寄存器值
1、实验目的
利用前面所学的AXI4总线协议的理论分析,验证如何将一个PL的输入信号通过AXI发送到PS端。大致思路就是取一个按键,信号接入自建的AXI4的IP中,取代AXI4中reg_data_out成为AXI4该寄存器从地址的读取信号。然后通过PS发送到另外一个缓存寄存器,该寄存器再由PL端连接到外部电路。
2、实验操作
(1)打包IP
在tools的create IP中就可以初始化一个AXI4的slave的总线IP,进入编辑界面后即可编辑文件。这里只需要对reg_data_out的赋值语句修改即可发送输入的信号。
assign slv_reg_rden = axi_arready & S_AXI_ARVALID & ~axi_rvalid;
always @(*)
begin
// Address decoding for reading registers
case ( axi_araddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] )
2'h0 : reg_data_out <= slv_reg0;
2'h1 : reg_data_out <= BTN; //slv_reg1;
2'h2 : reg_data_out <= slv_reg2;
2'h3 : reg_data_out <= slv_reg3;
default : reg_data_out <= 0;
endcase
end
对应的顶层的IP口及调用口和子模块的端口声明则是纯FPGA的知识,这里不做介绍。
这里有个问题就是打包第一次的IP不会加入自定义的端口,需要第二次打包。也不知道是哪个地方设置有问题。
(2)完善硬件
就是调用IP后使用自动连线和自动外延。LED和BTN需要自己引出。
(3)小问题
这里综合时出现了一个缺少DCP的问题,好像是因为自建的IP没有DDR的支持,具体原因可以去网上查找。解决方法就是reset_project指令输到TCL控制台即可解决。
(4)输出bitstream,输出硬件文件xsa
在配置好端口后即可直接生成bit流。
(5)软件设计
vitis创建工程后,使用xil_Out32和xil_In32就可以实现数据的读取操作和写入操作。这里最简单的验证方法就是把读的数据写入到对应的地方。
#include "xil_io.h"
#include "sleep.h"
#include "stdio.h"
#include "xparameters.h"
#define IP_BASE XPAR_MYIP_V1_0_0_BASEADDR
#define REG0_OFFSET 0
#define REG1_OFFSET 4
int main(){
int BTN;
while(1){
BTN=Xil_In32(IP_BASE+REG1_OFFSET); Xil_Out32(IP_BASE+REG0_OFFSET,BTN); }
}
含有main函数的文件,代码还是简单的。
3、实验结果
板级验证说明设计是成功的。reg_data_out就是数据发送的缓存器。
AXI4从机总线分析验证之读取寄存器值的更多相关文章
- openstack网络(四)-虚机流量分析
几种网络名词解释 使用LinuxBridge时虚机流量分析 VLAN FLAT Local VXLAN 使用OVS时虚机流量分析 几种网络名词解释 1.local网络:local网络是与其他网络和节点 ...
- java例题_47 读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*
1 /*47 [程序 47 打印星号] 2 题目:读取 7 个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*. 3 */ 4 5 /*分析 6 * 1.多次读取---for循环 7 * ...
- Dictionary读取键值的快捷方法
对泛型集合Dictionary<T,T> 进行读取键值是经常的操作,一般情况下,都是通过keys 和values进行键值的读取操作: eg: foreach (var item in di ...
- LoadRunner脚本实例来验证参数化的取值
LoadRunner脚本实例来验证参数化的取值 SINM {3]!G0问题提出: 主要想试验下,在Controller中,多个用户,多次迭代中参数的取值.51Testing软件测试网(['H5f,d ...
- 在C#中如何读取枚举值的描述属性
在C#中,有时候我们需要读取枚举值的描述属性,也就是说这个枚举值代表了什么意思.比如本文中枚举值 Chinese ,我们希望知道它代表意思的说明(即“中文”). 有下面的枚举: 1 2 3 4 5 6 ...
- 在C#中用Linq从属性文件中读取键值对Key-Value Pair
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在C#中用Linq从属性文件中读取键值对Key-Value Pair.
- MVC验证05-自定义验证规则、验证2个属性值不等
原文:MVC验证05-自定义验证规则.验证2个属性值不等 本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证 M ...
- js对象中动态读取属性值 动态属性值 js正则表达式全局替换
$(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...
- MPU6050可以读取ID值,温度值和原始数据值为零问题解决
MPU6050可以读取ID值是0x68,但是读取到的原始数据为零(下面虚拟示波器图中温度值是36.529是单位转换公式中的值被打印出来了,实际值也是零).经论坛搜寻,发现MPU6050出现问题的原因有 ...
- 自定义 Java Annotation ,读取注解值
1. 首先是自定义注解: package cn.veji.hibernate.po; import java.lang.annotation.ElementType; import java.lang ...
随机推荐
- pt-table-checksum对比数据测试(dsns方式)
1.1.工作原理 pt-table-checksum会对校验的表数据进行数据块(数据块大小根据服务负载情况调整)划分,并对数据块数据进行checksun处理:存储在建立的表中.在主库中执行基于stat ...
- Git实战系列教程
介绍 本文详细记录了Git一系列核心概念和工作中常用的操作命令,通篇以实际出发拒绝过度理论,值得典藏:). 概念 版本管理系统 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的 ...
- spring boot实现验证码登录
内容比较简单,需要完整项目的朋友留下邮箱,给你们发. 直接看效果: 下面是实现步骤 1.验证码生成工具类(引用自网络) package com.laoxu.test.helloweb.util; im ...
- 编译原理LR分析
LR(0)分析存在问题及解决办法 当LR(0)含有互相冲突的项目时,则需要向前展 望符号串,检查下一个输入符号的状态 例 项目集I={X→α· bβ,A→α·,B→α· } 当面临输入符号b时,应该选 ...
- 利用VkKeyScanA判断大写字母
string bind = "Hello"; for (int i = 0; i < bind.length(); i++) { short ch = VkKeyScanA( ...
- 关于dpi awareness 的清单文件设置
要设置dpi 意识,一般是使用SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE)来设置 具体可参考:Setting the default DP ...
- 【Android 逆向】【攻防世界】基础android
1. 下载并安装apk,提示要输入密码 2. apk拖入到jadx中看一下 this.login.setOnClickListener(new View.OnClickListener() { // ...
- 【Android 逆向】【ARM汇编】 arm64部分知识
arm64寄存器更多 X0-X30 SP CPSR PC 64位 W0-W30 32位 PC寄存器的值禁止修改 参数放在 X0-X7/W0-W7 结果放在 X0 函数返回 RET 相当于 bl lr ...
- python开发接口时,使用jsonschema模块对数据进行校验
import jsonschema schema = { "type": "object", # 先声明每个键都是对象 "properties&quo ...
- docker 发布.net core 项目(linux)
一.准备阶段:前提:一台linux系统,安装好了Docker并启动 1.上传.netcore项目压缩文件 2.解压 注:若没有解压软件,先下载rar解压软件再安装:需注意系统是64位还是32 (下 ...