关于普通接口转AXI接口AMM Master Bridge仿真和使用

news2024/11/27 11:36:50

平台:vivado2023.1

应用场景,在设计的过程中,在xilinx内部的IP采用AXI接口协议。而我们外部的FIFO,BRAM等接口有时候使用的Native接口。使用AMM Master Bridge IP将普通的native接口转换为AXI接口协议。

参考文件:pg287.下载地址

AMM Master Bridge (xilinx.com)

关于该IP的配置说明

IP可以将Avalon接口读写在内部仲裁转换为AXI接口读写。IP最多支持八个主Avalon接口。

Avalon Address Width:接口的地址位宽。最多支持64位地址。

DATA Width:接口的数据位宽,最大支持1024位宽。

Number of Avalon Masters:主Avalon接口。

Mode of operation:可以选择仅读,仅写和读写。

性能展示

关于读写操作的使能转换延迟。

关于读写操作的吞吐量。

从上面可以看出来,官方给出的指示在时钟为200MHz时,在理论带宽为6.4Gb/s时,不同的BL位宽的吞吐量。

端口介绍

这里主要学习他的Avalon端口。

端口名字

I/O

位宽

描述

avs_address_s#

I

C_AVA_ADDR_WIDTH

Avalon 地址通道

avs_byteenable_s#

I

C_AVA_DATA_WIDTH/8

字节启用写入。

avs_write_s#

I

1

从 Avalon 写入指示。

avs_read_s#

I

1

读取 Avalon 的指示。

avs_writedata_s#

I

C_AVA_DATA_WIDTH

写入数据。

avs_waitrequest_s#

O

1

等待请求给

avs_readdata_s#

O

C_AVA_DATA_WIDTH

读取数据输出。

avs_readdatavalid_s#

O

1

读取数据对 Avalon 主站的有效指示。

avs_burstcount_s#

I

11

命令的突发计数

下面对该IP进行仿真学习。

新建BD文件,添加AMM Master Bridge IP。添加BRAM。自动连线后。生成顶层。

下面直接对其进行仿真。看一下他是怎么转换的。

直接看仿真结果。

设置地址为0,突发长度为100个数据。

在Avalon端口,写入0-99。

可以看到在avs_write_s0为1和avs_waitrequest_s0为0的情况下写入有效。

读出。

在avs_read_s0为1和avs_waitrequest_s0为0时读使能握手成功。IP从BRAM中读出100个数据。

在AXI接口上写地址握手后写入数据。

仿真代码。

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/06/19 10:59:29
// Design Name: 
// Module Name: vtf_amm_axi_bridge
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module vtf_amm_axi_bridge;

reg                [31:0] Avalon_S0_0_address  ; 
reg                [10:0] Avalon_S0_0_burstcount; 
reg                       Avalon_S0_0_read     ; 
reg                       Avalon_S0_0_write    ; 
reg                [31:0] Avalon_S0_0_writedata; 
reg                       aresetn_0            ; 
reg                       clk_0                ; 

wire               [31:0] Avalon_S0_0_readdata ; 
wire                      Avalon_S0_0_readdatavalid; 
wire                      Avalon_S0_0_waitrequest; 


design_1_wrapper u_design_1_wrapper(
    .Avalon_S0_0_address          (Avalon_S0_0_address          ),
    .Avalon_S0_0_burstcount       (Avalon_S0_0_burstcount       ),
    .Avalon_S0_0_read             (Avalon_S0_0_read             ),
    .Avalon_S0_0_readdata         (Avalon_S0_0_readdata         ),
    .Avalon_S0_0_readdatavalid    (Avalon_S0_0_readdatavalid    ),
    .Avalon_S0_0_waitrequest      (Avalon_S0_0_waitrequest      ),
    .Avalon_S0_0_write            (Avalon_S0_0_write            ),
    .Avalon_S0_0_writedata        (Avalon_S0_0_writedata        ),
    .aresetn_0                    (aresetn_0                    ),
    .clk_0                        (clk_0                        ));


initial
begin

        Avalon_S0_0_address=0;
        Avalon_S0_0_burstcount=0;

        aresetn_0=0;
        clk_0=0;
        #100;
        aresetn_0=1;
        Avalon_S0_0_address=0;
        Avalon_S0_0_burstcount=11'd100;


end

always@(posedge clk_0 or negedge aresetn_0)
begin
        if(aresetn_0 == 1'b0)begin
                Avalon_S0_0_writedata   <= 32'h0;
        end
        else if(Avalon_S0_0_write==1'b1 && Avalon_S0_0_waitrequest ==1'b0) begin
                Avalon_S0_0_writedata   <= Avalon_S0_0_writedata + 32'h1;
        end
        else begin
                Avalon_S0_0_writedata   <= Avalon_S0_0_writedata;
        end
end
always@(posedge clk_0 or negedge aresetn_0)
begin
        if(aresetn_0 == 1'b0)begin
                Avalon_S0_0_write   <= 1'h0;
        end
        else if(Avalon_S0_0_writedata<32'd99) begin
                Avalon_S0_0_write   <= 1'h1;
        end
        else begin
                Avalon_S0_0_write   <= 1'b0;
        end
end

always@(posedge clk_0 or negedge aresetn_0)
begin
        if(aresetn_0 == 1'b0)begin
                Avalon_S0_0_read   <= 1'h0;
        end
        else if(Avalon_S0_0_writedata==32'd99) begin
                Avalon_S0_0_read   <= 1'h1;
        end
        else if(Avalon_S0_0_read == 1'b1 && Avalon_S0_0_waitrequest == 1'b0)begin
                Avalon_S0_0_read    <=1'b0;
        end
        else begin
                Avalon_S0_0_read   <= Avalon_S0_0_read;
        end
end



always#5 clk_0 = ~clk_0;


endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1929607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ | Leetcode C++题解之第229题多数元素II

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> majorityElement(vector<int>& nums) {int n nums.size();vector<int> ans;unordered_map<int, int> cnt;for (auto & v : nums) {cnt[v];}for (auto & v : cnt…

leetcode 28.找出字符串中第一个匹配项的下标

对于Java来说直接秒呗&#xff1a; public static int strStr(String haystack, String needle) {return haystack.indexOf(needle); }

Unity UGUI Image Maskable

在Unity的UGUI系统中&#xff0c;Maskable属性用于控制UI元素是否受到父级遮罩组件的影响。以下是关于这个属性的详细说明和如何使用&#xff1a; Maskable属性 Maskable属性&#xff1a; 当你在GameObject上添加一个Image组件&#xff08;比如UI面板或按钮&#xff09;时&…

渲染100农场有哪些优势?渲染100邀请码1a12

渲染100是知名的渲染农场&#xff0c;深受广大设计师欢迎&#xff0c;比起其他农场&#xff0c;它有什么优势呢&#xff1f;我们一起来看看。 1、资源丰富 渲染100拥有强大的计算集群&#xff0c;能多线处理大规模、超复杂的场景渲染需要&#xff0c;性能卓越。2、成本低廉 渲…

【iOS】OC类与对象的本质分析

目录 前言clang常用命令对象本质探索属性的本质对象的内存大小isa 指针探究 前言 OC 代码的底层实现都是 C/C代码&#xff0c;OC 的对象都是基于 C/C 的数据结构实现的&#xff0c;实际 OC 对象的本质就是结构体&#xff0c;那到底是一个怎样的结构体呢&#xff1f; clang常用…

glibc-all-in-one+patchelf修改程序libc

主要是做堆的时候经常遇到libc小版本不对导致libcbase不对打不通的情况&#xff0c;再者&#xff0c;每个题换一个ubuntu虚拟机属实麻烦&#xff0c;所以还是回到最初也是最好用的做法&#xff1a;patch libc。 核心就是两个工具&#xff1a;glibc-all-in-one和patchlef。但是…

buuctf-web

查看后端源码 得到base64编码&#xff0c;解码得flag

pc端注册页面 密码校验规则

1.密码校验规则 格应包含大小写字母、数字和特殊符号,长度为8-20 var validateRetrievePassword (rule, value, callback) > {let reg /^(?.*[A-Za-z])(?.*\d)(?.*[~!#$%^&*()_<>?:"{},.\/\\;[\]])[A-Za-z\d~!#$%^&*()_<>?:"{},.\/\\;…

WSL-Ubuntu20.04训练环境配置

1.YOLOv8训练环境配置 训练环境配置的话就仍然以YOLOv8为例&#xff0c;来说明如何配置深度学习训练环境。这部分内容比较简单&#xff0c;主要是安装miniAnaconda以及安装torch和torchvision. 首先是miniAnaconda的安装(参考官网的教程Miniconda — Anaconda )&#xff0c;执行…

开发笔记 | 快速上手[法大大]电子合同SDK使用SpringBoot+JAVA

Springbootmavenjava 官方API文档 API - 法大大电子合同和电子签云平台 官方SDK下载 API - 法大大电子合同和电子签云平台 目录 目录 开发前准备 项目整合 功能1&#xff1a;查询文档模板列表 功能2&#xff1a;文档模板字段填充 开发前准备 1.点下方链接注册法大大测试环…

昇思25天学习打卡营第12天|munger85

基于MindSpore通过GPT实现情感分类 这个实现情感分类意思就是通过一些电影的数据最后知道他对于这个电影的评价&#xff0c;最后知道他对于这个电影的评价到底是好还是不好&#xff0c;零就是不好&#xff0c;一就是好。首先我们肯定是按安装这些依赖包了为了今天这个模型我们…

Postman、Apifox、Apipost用哪个?

Postman、Apifox、Apipost都是流行的API接口管理工具&#xff0c;它们各自具有不同的特点和优势&#xff0c;因此哪个更好用取决于具体的使用场景和需求。以下是对这三个工具的比较分析&#xff1a; 一、Postman 特点与优势&#xff1a; 支持多种请求方式&#xff1a;包括GE…

游戏分组(DFS)

游戏分组&#xff08;DFS&#xff09; 将10名参赛者根据其游戏水平评分分为实力尽量相近的两队。 深度优先搜索&#xff08;DFS&#xff09;是游戏分组中常用的一种算法思路。 DFS在解决特定类型的分组问题时&#xff0c;特别是需要遍历所有可能组合的情况&#xff0c;表现出了…

一文详解:医疗营销升级的智能解决方案

顺境是所有人的狂欢&#xff0c;逆境才是优秀者的天堂。淘金的时代过去了&#xff0c;未来是冶金的时代。 01、享受完改革开放40年的高速区间红利 企业正处于中速区间的全面竞争期 1978年&#xff0c;中国的GDP是3679亿。改革开放40多年&#xff0c;我们不断引进资本&#xf…

【嵌入式Linux】<总览> 网络编程(更新中)

文章目录 前言 一、网络知识概述 1. 网路结构分层 2. socket 3. IP地址 4. 端口号 5. 字节序 二、网络编程常用API 1. socket函数 2. bind函数 3. listen函数 4. accept函数 5. connect函数 6. read和recv函数 7. write和send函数 三、TCP编程 1. TCP介绍 2.…

Monaco 使用 DocumentFormattingEditProvider

文档格式化&#xff0c;是 VSCode 比较常用的功能&#xff0c;在文档上点击右键选择格式化文档。效果如下&#xff1a; 在 Monaco 通过 registerDocumentFormattingEditProvider 方法注册处理函数&#xff0c;实现 provider 方法。 provider 方法返回格式化好的代码。 TextE…

Android C++系列:Linux文件系统(二)

1. VFS虚拟文件系统 Linux支持各种各样的文件系统格式&#xff0c;如ext2、ext3、reiserfs、FAT、NTFS、iso9660 等等&#xff0c;不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式&#xff0c;然而这些文件系统 都可以mount到某个目录下&#xff0c;使我们看到一个…

Kafka(四) Consumer消费者

一&#xff0c;基础知识 1&#xff0c;消费者与消费组 每个消费者都有对应的消费组&#xff0c;不同消费组之间互不影响。 Partition的消息只能被一个消费组中的一个消费者所消费&#xff0c; 但Partition也可能被再平衡分配给新的消费者。 一个Topic的不同Partition会根据分配…

【C#】部分国家/语言,string字符串转decimal、float时,小数点解析异常、小数点丢失、小数点被忽略

现象&#xff1a; 部分国家地区&#xff0c;字符串转小数后&#xff0c;小数点丢失&#xff0c;比如&#xff1a;输入"12.34"&#xff0c;输出1234&#xff0c;而非12.34。 部分相关函数decimal.Parse、decimal.TryParse、float.Parse、float.TryParse 原因&…

【Linux】常用命令总结(updating)

1.date2.du&#xff08;disk use&#xff09;3.df&#xff08;disk free&#xff09;4.find5.crontab6.netstat shell命令可以使用man查看命令文档说明&#xff0c;说明界面中可通过b(backward)向上翻页&#xff0c;f(forward)向下翻页&#xff0c;g(go to)跳到说明首页&#x…