当前位置: 首页 > article >正文

MYIR-ZYNQ7000系列-zturn教程(16):对axi_lite IP核进行仿真以及axi总线的初步讲解

我这里一共调用了两个自定义的IP都是基于axi_lite的IP核一个是主机master一个是从机slave然后将这两个调用的IP例化到一个新创建的fpga工程最好写一个仿真脚本让这个master主机对这个从机slave进行读写。工程链接主机从机将master和slave都例化到fpga工程的顶层文件如下图所示timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2018/05/21 10:27:22 // Design Name: // Module Name: test_axi // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module test_axi( input axi_aclk, input axi_aresetn, input app_txn, output state_err, output state_done ); parameter integer C_AXI_ADDR_WIDTH 32; parameter integer C_AXI_DATA_WIDTH 32; wire w_err; // 状态指示出现错误 wire w_txn_done; // 状态指示发送完毕 assign state_err w_err; assign state_done w_txn_done; wire [C_AXI_ADDR_WIDTH-1 : 0] axi_AWADDR; // AXI总线信号AWADDR wire [2 : 0] axi_AWPROT; // AXI总线信号AWPROT wire axi_AWVALID; // AXI总线信号AWVALID wire axi_AWREADY; // AXI总线信号AWREADY wire [C_AXI_DATA_WIDTH-1 : 0] axi_WDATA; // AXI总线信号WDATA wire [C_AXI_DATA_WIDTH/8-1 : 0] axi_WSTRB; // AXI总线信号WSTRB wire axi_WVALID; // AXI总线信号WVALID wire axi_WREADY; // AXI总线信号WREADY wire [1 : 0] axi_BRESP; // AXI总线信号BRESP wire axi_BVALID; // AXI总线信号BVALID wire axi_BREADY; // AXI总线信号BREADY wire [C_AXI_ADDR_WIDTH-1 : 0] axi_ARADDR; // AXI总线信号ARADDR wire [2 : 0] axi_ARPROT; // AXI总线信号ARPROT wire axi_ARVALID; // AXI总线信号ARVALID wire axi_ARREADY; // AXI总线信号ARREADY wire [C_AXI_DATA_WIDTH-1 : 0] axi_RDATA; // AXI总线信号RDATA wire [1 : 0] axi_RRESP; // AXI总线信号RRESP wire axi_RVAILD; // AXI总线信号RVAILD wire axi_RREADY; // AXI总线信号RREADY myip_master_0 u1 ( .m00_axi_awaddr(axi_AWADDR), // output wire [31 : 0] m00_axi_awaddr .m00_axi_awprot(axi_AWPROT), // output wire [2 : 0] m00_axi_awprot .m00_axi_awvalid(axi_AWVALID), // output wire m00_axi_awvalid .m00_axi_awready(axi_AWREADY), // input wire m00_axi_awready .m00_axi_wdata(axi_WDATA), // output wire [31 : 0] m00_axi_wdata .m00_axi_wstrb(axi_WSTRB), // output wire [3 : 0] m00_axi_wstrb .m00_axi_wvalid(axi_WVALID), // output wire m00_axi_wvalid .m00_axi_wready(axi_WREADY), // input wire m00_axi_wready .m00_axi_bresp(axi_BRESP), // input wire [1 : 0] m00_axi_bresp .m00_axi_bvalid(axi_BVALID), // input wire m00_axi_bvalid .m00_axi_bready(axi_BREADY), // output wire m00_axi_bready .m00_axi_araddr(axi_ARADDR), // output wire [31 : 0] m00_axi_araddr .m00_axi_arprot(axi_ARPROT), // output wire [2 : 0] m00_axi_arprot .m00_axi_arvalid(axi_ARVALID), // output wire m00_axi_arvalid .m00_axi_arready(axi_ARREADY), // input wire m00_axi_arready .m00_axi_rdata(axi_RDATA), // input wire [31 : 0] m00_axi_rdata .m00_axi_rresp(axi_RRESP), // input wire [1 : 0] m00_axi_rresp .m00_axi_rvalid(axi_RVAILD), // input wire m00_axi_rvalid .m00_axi_rready(axi_RREADY), // output wire m00_axi_rready .m00_axi_aclk(axi_aclk), // input wire m00_axi_aclk .m00_axi_aresetn(axi_aresetn), // input wire m00_axi_aresetn .m00_axi_init_axi_txn(app_txn), // input wire m00_axi_init_axi_txn .m00_axi_error(w_err), // output wire m00_axi_error .m00_axi_txn_done(w_txn_done) // output wire m00_axi_txn_done ); myip_Slave_0 u2 ( .s00_axi_awaddr(axi_AWADDR), // input wire [3 : 0] s00_axi_awaddr .s00_axi_awprot(axi_AWPROT), // input wire [2 : 0] s00_axi_awprot .s00_axi_awvalid(axi_AWVALID), // input wire s00_axi_awvalid .s00_axi_awready(axi_AWREADY), // output wire s00_axi_awready .s00_axi_wdata(axi_WDATA), // input wire [31 : 0] s00_axi_wdata .s00_axi_wstrb(axi_WSTRB), // input wire [3 : 0] s00_axi_wstrb .s00_axi_wvalid(axi_WVALID), // input wire s00_axi_wvalid .s00_axi_wready(axi_WREADY), // output wire s00_axi_wready .s00_axi_bresp(axi_BRESP), // output wire [1 : 0] s00_axi_bresp .s00_axi_bvalid(axi_BVALID), // output wire s00_axi_bvalid .s00_axi_bready(axi_BREADY), // input wire s00_axi_bready .s00_axi_araddr(axi_ARADDR), // input wire [3 : 0] s00_axi_araddr .s00_axi_arprot(axi_ARPROT), // input wire [2 : 0] s00_axi_arprot .s00_axi_arvalid(axi_ARVALID), // input wire s00_axi_arvalid .s00_axi_arready(axi_ARREADY), // output wire s00_axi_arready .s00_axi_rdata(axi_RDATA), // output wire [31 : 0] s00_axi_rdata .s00_axi_rresp(axi_RRESP), // output wire [1 : 0] s00_axi_rresp .s00_axi_rvalid(axi_RVAILD), // output wire s00_axi_rvalid .s00_axi_rready(axi_RREADY), // input wire s00_axi_rready .s00_axi_aclk(axi_aclk), // input wire s00_axi_aclk .s00_axi_aresetn(axi_aresetn) // input wire s00_axi_aresetn ); endmodule下面这个这个fpga工程的仿真脚本timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2018/05/21 11:10:59 // Design Name: // Module Name: test_tb // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module test_tb(); reg axi_aclk; // AXI总线时钟 reg axi_aresetn; // 系统复位信号 reg r_app_txn; wire w_err; // 状态指示出现错误 wire w_txn_done; // 状态指示发送完毕 test_axi u1 ( .axi_aclk(axi_aclk), .axi_aresetn(axi_aresetn), .app_txn(r_app_txn), .state_err(w_err), .state_done(w_txn_done) ); always begin #10; axi_aclk ~axi_aclk; end initial begin axi_aclk 1b0; axi_aresetn 1b1; r_app_txn 1b1; #10; axi_aresetn 1b0; #5; r_app_txn 1b0; #5; axi_aresetn 1b1; #5; r_app_txn 1b1; end endmodule这个是运行仿真脚本后的master写的波形这个是运行仿真脚本后master读的波形对比写和读可以发现写入的和读出的是一致的说明这个master对这个slave进行读写是成功的对于这个axi协议的各个引脚代表的含义我这里不做一一介绍下面的截图里面已经说得比较清楚了我这里主要介绍一个主机master对这个从机slave进行读写的详细过程master slave从机采集到主机的地址和数据从机内部开始进行执行写assign slv_reg_wren axi_wready S_AXI_WVALID axi_awready S_AXI_AWVALID;(从机开始写数据的使能条件)从机写完成后上面介绍的是一个master对slave写的全部过程这里介绍的是master对slave读master slaveassign slv_reg_rden axi_arready S_AXI_ARVALID ~axi_rvalid;(进行读时使能条件)主机读取完成后这里最后将这个读写过程总结一下主机master进行写主机master进行读将这个当做笔记来进行记录以免以后自己忘记了

相关文章:

MYIR-ZYNQ7000系列-zturn教程(16):对axi_lite IP核进行仿真以及axi总线的初步讲解

我这里一共调用了两个自定义的IP都是基于axi_lite的IP核,一个是主机master一个是从机slave,然后将这两个调用的IP例化到一个新创建的fpga工程,最好写一个仿真脚本让这个master主机对这个从机slave进行读写。 工程链接 主机: 从机…...

AI Agent 工具调用系统设计:让大模型掌控世界

AI Agent 工具调用系统设计:让大模型掌控世界 前言 工具调用(Tool Use / Function Calling)是 AI Agent 实现复杂任务的关键能力。通过工具调用,大模型可以与外部世界交互,执行计算、查询数据库、调用 API,…...

如何免费使用ColabFold进行蛋白质结构预测:面向新手的终极指南

如何免费使用ColabFold进行蛋白质结构预测:面向新手的终极指南 【免费下载链接】ColabFold Making Protein folding accessible to all! 项目地址: https://gitcode.com/gh_mirrors/co/ColabFold ColabFold蛋白质结构预测是生物信息学领域的一项革命性技术&a…...

揭秘AI专著写作:如何利用AI工具一键生成20万字专著并降低查重率?

撰写学术专著的挑战与AI工具解决方案 撰写学术专著不仅考验研究者的学术能力,更是对心理承受力的一种考验。与团队协作完成论文不同,专著的撰写往往是一个人的战斗。研究者需要在选题、构建框架到内容撰写和修改的每个环节都独立面对。长时间的孤独创作…...

Akebi-GC 实战指南:掌握游戏功能修改与自动化测试技术

Akebi-GC 实战指南:掌握游戏功能修改与自动化测试技术 【免费下载链接】Akebi-GC (Fork) The great software for some game that exploiting anime girls (and boys). 项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GC 作为一款专注于游戏功能修改与自…...

揭秘AI专著撰写:工具加持,20万字专著快速成型!

AI专著写作:挑战与工具解决方案 学术专著的撰写,不仅考验着研究者的学术能力,更是对心理耐受力的一种挑战。与团队合作撰写论文不同,专著大多是由个人独立完成的。从选题到框架构建,再到具体内容的撰写、修改&#xf…...

AI专著生成神器来袭!用AI写专著,20万字专著轻松到手!

创新是学术专著的核心,也是写作中最具挑战性的部分。一部合格的专著不能仅仅是已有成果的简单堆叠,而是需要展现贯穿整本书的独到见解、理论框架或者研究方法。面对浩如烟海的学术文献,寻找那些尚未被挖掘的研究空白实属不易——有时选题已经…...

AI专著撰写神器来袭!一键生成20万字专著,附带专业框架和低查重保障!

写学术专著的挑战与AI工具助力 写学术专著是一项挑战,不仅考验学术能力,也对心理承受力提出了要求。与团队合作的论文写作不同,专著通常是独立完成的过程。从选题、框架搭建到具体内容的撰写与修改,每个环节都需要作者亲自去完成…...

如何快速掌握Subtitle Edit:免费开源字幕编辑器的终极指南

如何快速掌握Subtitle Edit:免费开源字幕编辑器的终极指南 【免费下载链接】subtitleedit the subtitle editor :) 项目地址: https://gitcode.com/gh_mirrors/su/subtitleedit 想要为视频添加专业字幕却苦于找不到合适的工具?Subtitle Edit作为一…...

保姆级教程:在Ubuntu 22.04 LTS上从零部署Zabbix 6.0监控系统(含MariaDB配置)

从零构建企业级监控系统:Ubuntu 22.04下Zabbix 6.0与MariaDB深度整合指南 第一次接触服务器监控系统时,我被各种专业术语和复杂的配置步骤弄得晕头转向。直到遇到Zabbix,这个开箱即用的监控解决方案彻底改变了我的运维工作方式。本文将带你完…...

Mac Mouse Fix:3步让你的普通鼠标超越苹果触控板体验

Mac Mouse Fix:3步让你的普通鼠标超越苹果触控板体验 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾为macOS上鼠标功能受限…...

百度文库纯净打印助手:3步实现无广告文档导出

百度文库纯净打印助手:3步实现无广告文档导出 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 百度文库纯净打印助手是一个开源JavaScript脚本,专为解决百度文库文档阅读和保…...

AI不可靠性工程指南:从失效机理到五层防护网

1. 这不是一句抱怨,而是一条必须写进操作手册的警告 “AI Is Unreliable”——当我在第三个项目里连续两次被同一个大模型生成的Python函数在边界条件下 silently 返回 None 而不是抛出异常、导致下游数据管道静默丢失23%的样本后,我把这句话钉在了团队共…...

G-Helper终极指南:3步释放华硕笔记本完整性能的轻量控制革命

G-Helper终极指南:3步释放华硕笔记本完整性能的轻量控制革命 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbo…...

基于AI流动性监测模型的黄金波动分析:油价跳水与美元回落下的黄金震荡企稳机制解析

摘要:本文通过AI宏观情绪识别模型、美元流动性监测框架以及能源价格传导算法,结合近期原油、美元与美债收益率变化,分析黄金在高波动市场环境下的价格修复逻辑,并探讨避险需求、通胀预期与美联储政策路径之间的动态博弈关系。一、…...

东南大学论文模板:告别格式烦恼,专注学术创新的8倍效率解决方案

东南大学论文模板:告别格式烦恼,专注学术创新的8倍效率解决方案 【免费下载链接】SEUThesis 东南大学论文模板 项目地址: https://gitcode.com/gh_mirrors/seu/SEUThesis 东南大学SEUThesis论文模板库是专为东大学子设计的学术写作利器&#xff0…...

在OpenClaw Agent工作流中无缝接入Taotoken调用多模型能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在OpenClaw Agent工作流中无缝接入Taotoken调用多模型能力 对于使用OpenClaw构建智能体工作流的开发者而言,能够灵活调…...

ML模型服务化落地实战:从Notebook到高稳定生产环境

1. 项目概述:这不是一次“部署上线”演示,而是一场真实世界的ML交付实战复盘“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题里藏着三个关键信号:Notebook是起点,不是终点;Produ…...

3步解锁百度网盘全速下载:baidu-wangpan-parse技术解析与应用实践

3步解锁百度网盘全速下载:baidu-wangpan-parse技术解析与应用实践 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾面对百度网盘那令人绝望的下载速度而束手…...

预训练模型技术演进史:从Word2Vec到多模态大模型

1. 项目概述:这本“沙滩读物”到底在讲什么? “Beach Reading: a Short History of Pre-Trained Models”——光看标题,你可能会以为这是本躺在夏威夷躺椅上、椰子水还没喝完就能翻完的轻松小册子。但别被“Beach Reading”这个温柔前缀骗了。…...

终极Mac抢票解决方案:12306ForMac让你的购票体验飞起来

终极Mac抢票解决方案:12306ForMac让你的购票体验飞起来 【免费下载链接】12306ForMac An unofficial 12306 Client for Mac 项目地址: https://gitcode.com/gh_mirrors/12/12306ForMac 还在为Mac上抢不到火车票而烦恼吗?作为Mac用户,你…...

SAP ABAP实战:用BAPI_PO_CREATE1创建采购订单时,如何彻底隐藏PBXX条件类型?

SAP ABAP实战:彻底隐藏BAPI_PO_CREATE1中的PBXX条件类型 最近在实施一个外协加工采购项目时,遇到了一个让人头疼的问题:使用BAPI_PO_CREATE1创建采购订单时,系统总是自动生成价格为0的PBXX条件类型行。这看起来像是个小问题&…...

甲骨文免费服务器到手后,用Xshell连接不上?这份SSH密钥配置避坑指南请收好

甲骨文云SSH连接全攻略:从密钥解析到Xshell实战配置 密钥管理的核心逻辑与常见误区 初次接触甲骨文云免费实例的用户,90%的SSH连接问题都源于密钥处理不当。与常规密码登录不同,甲骨文云强制采用密钥对认证机制,这种设计虽然提升了…...

利用 AI Agent 优化日常办公自动化流程

AI Agent优化办公自动化流程的核心逻辑是「人定规则,AI跑流程」‌,通过把重复、步骤明确的工作交给AI Agent自主执行,实现提效降本,具体可以按照以下方法落地:一、先明确落地逻辑把目标工作拆成「触发条件→执行步骤→…...

Lovable电商系统从零部署:手把手教你用Vue+Node+MongoDB搭建高转化率商城(含完整源码)

更多请点击: https://kaifayun.com 第一章:Lovable电商系统从零部署:手把手教你用VueNodeMongoDB搭建高转化率商城(含完整源码) Lovable电商系统是一套面向中小企业的轻量级高转化率商城解决方案,采用前后…...

突发环境事件怎么模拟?用Python+GIS实现高斯烟团模型(附完整代码)

突发污染事件动态模拟:Python与GIS融合的高斯烟团建模实战 化工泄漏、危险品运输事故等突发环境事件往往需要快速响应与精准评估。传统烟羽模型在瞬态污染场景中存在局限性,而高斯烟团模型凭借其动态扩散模拟能力成为应急决策的利器。本文将手把手带您实…...

Windows任务栏透明美化神器:5分钟掌握TranslucentTB完整使用指南

Windows任务栏透明美化神器:5分钟掌握TranslucentTB完整使用指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 想要让你的W…...

如何利用 AI Agent 优化日常办公自动化流程?

用 AI Agent 优化办公自动化,核心是把高频重复、规则清晰、跨系统搬运的工作交给 Agent,人专注决策与创意;先试点、再打通数据、最后规模化,通常能把事务性时间压减 50%–80%。下面从落地框架、核心场景、搭建步骤、工具选型与避坑…...

终极指南:3分钟掌握英雄联盟智能助手League Akari的完整使用技巧 [特殊字符]

终极指南:3分钟掌握英雄联盟智能助手League Akari的完整使用技巧 🚀 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 想…...

从SysTick中断到任务就绪:深入追踪FreeRTOS一次Tick如何触发PendSV切换

从SysTick中断到任务就绪:深入追踪FreeRTOS一次Tick如何触发PendSV切换 在嵌入式实时操作系统的世界里,任务切换的精确性和可靠性直接决定了系统的实时性能。对于使用FreeRTOS的开发者而言,理解从SysTick中断到最终任务切换的完整链条&#x…...