AXI MCDMA 仿真与工作流程分析

news/2024/5/19 13:57:03/文章来源:https://www.cnblogs.com/xingce/p/16670564.html

说明

关于背景知识,可以先看 https://www.cnblogs.com/xingce/p/16386108.html

引用一段官方的说明,AXI MCDMA存在的主要目的是为了节约资源,我们想要使用这个模块的主要目的也是为了降低资源消耗,从而可以将系统部署在更小面积的FPGA芯片上,当然,具体的效果还需要进一步的测试,先对该IP做一些仿真和在线测试吧。

FPGAs have been providing DMA engines in the Programmable Logic for many years. To add to the existing DMA offering, Xilinx added a Multichannel DMA IP into the Xilinx IP Catalog to provide additional channels. Additional DMA channels provide a hardware segregation of data that ultimately provides more efficient management of data streams. This leads to an overall savings of Programmable Logic, while maintaining data movement throughput.

下图是IP的接口和配置界面,更详细的描述请移步官方手册 https://docs.xilinx.com/v/u/en-US/pg288-axi-mcdma

初步目标

在开始之前,先确定一个目标,我们希望通过该仿真的学习,搞清楚IP的基本配置、工作流程,然后去创建自己的仿真工程

官方仿真范例

选择打开IP的example design,查看其仿真工程

先来看看顶层的*tb.v 仿真文件,里面生成了1个200M的基准时钟,然后发送了start开始信号,并检测结束done信号与status信号,根据status的状态输出测试结论,核心的测试代码不在这个文件里面

再来直接看DUT的顶层文件,先搞清楚对应的额层级关系

下图表明axi_traffic_gen_0 用作mcdma的axi lite master模块,完成对mcdma 寄存器的配置

AXI MCDMA会读出BRAM_CTL_0 中的数据,那么BRAM 0中的数据怎么才知道是不是对的,又需要一个模块写入测试数据,这个测试数据由axi4_write_master.vhd模块完成,在系统复位解除后,就开始写入测试数据

与读出通道对应,AXI MCDMA会向BRAM_CTL_1写入测试数据,检查数据正确性的时候,测试逻辑是直接检查的写入信号,并不是将BRAM 1中写入的数据读出做校验,这一点需要查看仿真波形,有可能设计人员偷懒,所以这样写的

descriptor信息预先存储在BRAM_CTL_3中,由AXI MCDMA的AXI SG接口将对应的信息读出,对应的descripto信息存储在"sg_mem.mem" 文件中

从以上信息基本可以看清整个仿真逻辑了,接下来再结合仿真信号看看真实的工作流程。

仿真信号查看

首先,根据IP手册,AXI MCDMA开始工作之前,需要配置对应寄存器

先看S2MM 写操作对应的流程,MM2S也是对应的流程,这里不介绍了,可以看仿真的时序和IP手册的说明

这是IP手册建议的流程

首先,需要先将MCDMA的S2MM 对应channels Run起来

向0x500 寄存器写入控制数据

对应仿真时序图如下,其中基地址为0x500 ,写入数据为0x000202f1

使能对应通道

向0x508寄存器写入对应参数,当disable的时候,并非真的stop了,而是当descriptor 链表对应也执行到含EOF标志的链表时才真正停止。
(这里有个问题就需要注意,如果是读出操作,我们丢弃不需要的数据,如果是写入操作,如何结束呢?)

应该向0x008写入0x1 使能MM2S的channel 0,仿真实际写入的是0x3,这个是由于仿真代码是设定的2个通道,2个通道是合理的,因为只有这样才能体现出Multichannel DMA的意义

配置descriptor 对应的地址

IP根据配置的descriptor地址去memory中fetch对应的descriptor链表,然后执行对应的axi读写操作

下面描述了对应channel 0 1的descriptor地址,由于我们是32bit 地址区间,所以只需要对应配置LSB 32bit地址即可,MSB 是在超过32bit地址空间的空间才有效

配置通道控制寄存器

每个通道都有自己的配置寄存器,这些寄存器第0个bit是开启descriptor的featch,其它bit基本都是和中断的产生相关的,仿真范例对S2MM和MM2S 通道进行了不同的设置,这个可以从仿真波形观察得到

BD descriptor的读取

通过观察寄存器写入的值,可以看出S2MM 的channel 0 对应写入的current BD 地址为0x100 , nexr BD 地址为0x140

下图是对应的时序,图中不能看出具体的地址,如果想看的话可以自己仿真,然后放大观察

BD descriptor 描述,下图描述了MM2S对应的descriptor描述,S2MM也是类似的内容,AXI MCDMA对应的通道会根据这个descriptor完成对应的dma操作

在这个仿真范例中,我们看一下

SG从0x100地址读指定 8*32bit的descriptor数据,然后根据descriptor去读取数据

整体看下来,这个仿真demo是非常简易的,不能覆盖真实的工况,下一步需要上机测试才能更好的模拟真实工作场景

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件定义网络第一次作业,问题与解决方法

软件定义网络第一次作业,问题与解决方法 实验结果截图:实验总结: 1.若使用VMware Workstation Pro。 版本最好使用20.04版本,网络较稳定且兼容性好。且22.04版本可能无法安装Vmware tools。 2.遇到网络无法访问,可尝试换源。 3.若需要压缩包,可在虚拟机中下载,或从电脑拖…

【kali】一款黑客们都在使用的操作系统

💕💕💕 博主昵称:摆烂阳💕💕💕 🥰博主主页跳转链接 👩‍💻博主研究方向:web渗透测试 、python编程 📃 博主寄语:希望本篇文…

共享单车需求量登记分类及影响因素分析——基于机器学习模型的比较分析

全文链接:http://tecdat.cn/?p28519 作者:Yiyi Hu 近年来,共享经济成为社会服务业内的一股重要力量。作为共享经济的一个代表性行业,共享单车快速发展,成为继地铁、公交之后的第三大公共出行方式。但与此同时&…

【笔记】Python网络爬虫与信息提取

实战:总结知识点疫情爬虫Re正则表达式Re库的使用scrapy爬虫框架介绍Scrapy常用命令网络爬虫技术亮点:1、采用requests发送请求,获取响应2、采用BeautifulSoup4解析页面数据3、采用正则表达式 提取不规则字符串4、采用json模块处理json格式数据…

Java架构师常见基础面试题(附答案)

随着每日确诊病例人数的减少以及治愈患者人数增多,随着这场抗“疫”战争即将以胜利告终,接踵而来的是企业复工、金三银四求职高峰季的来临。有很多Java工程师想要把握住这个机会,实现升职加薪、成为Java架构师。但你知道企业在招聘面试时会提…

证件照换底色

阅读原文 如有侵权,请联系立即删除。 5种方法轻松给证件照换底色不同底色的证件照有着不同的用途。如白底的证件照一般用于身份证、港澳通行证等用途;而蓝底的证件照则用于工作证、简历等。例如我们需要提供蓝色背景的证件照,而手头只有白色背景的证件照,该怎么办呢?其实我…

开学季征文丨来大学已两年,我还有几个两年?

👋写在前面 大家好,我是陈橘又青,一名双非本科大学生,计算机科学与技术专业,最近因为疫情的原因,开学以来一直在家里上网课,也不是很忙,所以我想借着这次开学季征文活动,…

羧基化聚苯乙烯-二氧化硅复合材料/季铵化壳聚糖掺杂荷正电聚苯乙烯微球的制备步骤

今日小编为大家分享了羧基化聚苯乙烯-二氧化硅复合材料/季铵化壳聚糖掺杂荷正电聚苯乙烯微球的制备步骤,一起来看! 羧基化聚苯乙烯-二氧化硅复合超疏水涂层的制备方法,其特征在于包括如下步骤: (聚苯乙烯种子微球的制备;羧基修饰的聚苯乙烯微…

【控制】滑模控制,小例子,有程序有结果图

目录滑模控制的一点笔记和看法1【控制】滑动模型控制(Sliding Mode Control)2【控制】滑模控制,小例子,有程序有结果图3【控制】滑模控制,滑模面的选择文章目录1 问题描述2 滑模控制器设计2.1 滑模面选择2.2 控制器设计…

麻了,别再为难软件测试员了

前言 有不少技术友在测试群里讨论,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些测试工程师了。 这不,为了帮大家节约时…

hive中使用iceberg表格式时锁表总结

1. 原因 写入iceberg表时,会在hive_locks表中插入一条记录,表示该表正在被写入(hive中的独占锁)当数据插入完成后,会自动删除该条记录。 2. 出现场景 (1)在同时往同一个iceberg表中写入数据时,会出现Retrying task after failure: Waiting for lock之类的警告信息 如果有…

Docker 环境 Nacos2 MySQL8

本文介绍 docker 环境下安装并单机运行 Nacos2,使用 docker 环境下的 MySQL 8 存储数据。本文介绍 docker 环境下安装并单机运行 Nacos2,使用 docker 环境下的 MySQL 8 存储数据。 1 拉取镜像 1.1 创建目录 在硬盘上创建 nacos 的有关目录: mkdir -p /Users/yygnb/dockerMe/…

FPGA之旅设计99例之第十三例-----FPGA在OLED上显示DHT11数据

一. 简介 这是FPGA之旅设计的第十三例啦,本例是一个综合性的例程,基于OLED屏幕显示,和DHT11温湿度采集,将DHT11采集到的温湿度显示到OLED屏幕上。 在开始本例之前,先补充一下,在上例中,代码中…

Webpack 打包 - 14. html压缩

这里使用 html-webpack-plugin 插件压缩 html 文件。 1.文件结构 2.代码 index.html<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>webpack</title> </head> <body> <!--这里…

《Hyperspectral Image Classification With Deep Feature Fusion Network》论文笔记

论文题目《Hyperspectral Image Classification With Deep Feature Fusion Network》 论文作者:Weiwei Song, Shutao Li, Leyuan Fang,Ting Lu 论文发表年份:2018 网络简称:DFFN 一、本文提出的挑战 1.由于光谱混合和光谱特征空间变异性的存在,HSIs通常具有非常复…

KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例

KingbaseES 、repmgr案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作。若主节点已经失效,希望将异地备机提升为主节点。 $bin/repmgr standby promote 适用版本:KingbaseES V8R6 集群节点信息…

Postman和Jmeter的区别

Postman是一款功能强大的用于发送HTTP请求的Chrome插件&#xff0c;主要用于接口测试&#xff1b; Jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;也可以用来进行接口测试。 很多同学经常将两款工具混淆&#xff0c;这里就为大家介绍一下二者的区别。 1…

Java 将Excel转为UOS

以.uos为后缀的文件,表示Uniform Office Spreadsheet文件,是一种国产的办公文件格式,该格式以统一办公格式(UOF)创建,使用XML和压缩保存电子表格。既有的Excel表格文件,可以通过格式转换的方式转换为UOS格式,本文将对此作相关介绍。 【导入jar包】 使用jar包:Spire.Xls…

Nginx log 日志分割

Nginx日志不处理的话,会一直追加,文件会变得很大 Linux nginx_log.sh#!/bin/bash date=$(date +%F -d -1day) cd /usr/local/nginx/logs if [ ! -d bak ] ; thenmkdir -p bak fi mv access.log bak/access_$date.log mv error.log bak/error_$date.log # /usr/bin/…