S03_CH02_AXI_DMA PL发送数据到PS
S03_CH02_AXI_DMA PL发送数据到PS
1.1概述
本课程的设计原理分析。
本课程循序渐进,承接《S03_CH01_AXI_DMA_LOOP 环路测试》这一课程,在DATA FIFO端加入FPGA代码,通过verilog 代码对FIFO写。其他硬件构架和《S03_CH01_AXI_DMA_LOOP 环路测试》一样。
《S03_CH01_AXI_DMA_LOOP 环路测试》课程中,详解讲解了工程步骤的创建,本章开始,一些简单的操作步骤将会省去。
1.2系统构架框图
在上图中,红色标记部分是和前面课程有稍微差异的部分。读者需要好好注意下。
下面看下关键模块的设置
1.2.1 ZYNQ IP的设置
增一路FCK_CLK1 为100MHZ(也可以设置其他频率)并且引出到外部提供verilog编程时钟。
双击S_AXIS设置参数
设置如下
双击FIFO 进行如下设置
由于只有写DMA通道,因此不用勾选读DMA通道
既然只用到了DMA写通道,也就只要使用1路中断资源。
1.3 PS部分
相对于《S03_CH01_AXI_DMA_LOOP 环路测试》中的代码,本章代码只有DMA的接收部分。在main.c源码中,实现了数据DMA的测速,并且通过OLED显示出来。为了实现测试,有增加了定时间中断,定时器每过0.5S中断一次。
中断初始化函数,如下
表1-3-1 init_intr_sys函数
int init_intr_sys(void) { DMA_Intr_Init(&AxiDma,0);//initial interrupt system Timer_init(&Timer,TIMER_LOAD_VALUE,0); Init_Intr_System(&Intc); // initial DMA interrupt system Setup_Intr_Exception(&Intc); DMA_Setup_Intr_System(&Intc,&AxiDma,TX_INTR_ID,RX_INTR_ID);//setup dma interrpt system Timer_Setup_Intr_System(&Intc,&Timer,TIMER_IRPT_INTR); DMA_Intr_Enable(&Intc,&AxiDma); } |
DMA读测速的部分的原理是计数DMA读传输的次数,然后每过2秒,计算一次速度。通过OLED显示测速。
表1-3-2 测试代码
if(RxDone) { RxDone=0; RX_ready=1; RX_success++; } if(TxDone) { TxDone=0; TX_ready=1; TX_success++; } if(usec==2) { usec=0; sprintf(oled_str,"RX_cnt=%d",RX_success); xil_printf("%s\r\n",oled_str); print_message(oled_str,0); speed_rx = MAX_PKT_LEN*RX_success/1024/1024; sprintf(oled_str,"RX_sp=%.2fMB/S",speed_rx); xil_printf("%s\r\n",oled_str); print_message(oled_str,1); sprintf(oled_str,"TX_cnt=%d",TX_success); xil_printf("%s\r\n",oled_str); print_message(oled_str,2); speed_tx = (MAX_PKT_LEN)*TX_success/1024/1024; sprintf(oled_str,"TX_sp=%.2fMB/S",speed_tx); xil_printf("%s\r\n",oled_str); print_message(oled_str,3); RX_success=0; TX_success=0; } |
定时器中断在第二季《S02_CH08_ ZYNQ 定时器中断实验》已经详细讲解过,至于DMA中断《S03_CH01_AXI_DMA_LOOP 环路测试》中也已经详细讲解,不在过多复述。
1.4 测试结果
转载于:https://www.cnblogs.com/milinker/p/6484040.html
S03_CH02_AXI_DMA PL发送数据到PS相关推荐
- PL读写DDR3 实现PS和PL间的数据交互 代码分析
本文是PL读写DDR3 实现PS和PL间的数据交互 的继续,深入分析其代码. 首先分析基本要求,或者需求分析,然后读写流程描述,实测采集的读写过程的波形图,最后分段代码分析,这个代码是上文中利用viv ...
- PL读写DDR3 实现PS和PL间的数据交互
本文构建一个AXI4-Lite Master IP来实现PL读写DDR3.最后用sdk 程序验证pl 读写过程中写入的数据. 本文参考 https://www.eefocus.com/antaur/b ...
- 米联客 ZYNQ/SOC 精品教程 S02-CH19 利用BRAM进行PS与PL间数据交互
软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! ...
- 移远BC35-G配置网络连接阿里云MQTT发送数据
移远BC35/BC26/BC28配置网络连接阿里云MQTT发送数据(一)精.防踩坑 硬件准备 接线部分 软件准备 烧录固件 QFlash 4.17烧录 阿里云准备 测试准备(AT指令) 连接阿里云 第 ...
- 嵌入式作业STM32采用串口DMA方式发送数据
目录 前言 要求 一.DMA的基本介绍 DMA的基本定义 DMA的主要特征 STM32F411x系列芯片DMA控制器 二.通过CubeMX配置项目 1.创建项目 2.选择芯片STM32F103C8T6 ...
- java串口发送16进制_串口发送数据——字符串发送与十六进制发送的区别
在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示.我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照 ...
- discard connection丢失数据_python kafka 生产者发送数据的三种方式
python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...
- netty发送数据_【Netty】JAVA IO模型
为什么要学Netty? 其实我们每学一样东西,就要了解学这个的必要性.那么为什么要学Netty呢. 其实但凡涉及网络通信就必然离不开网络编程.Netty目前作为JAVA网络编程最热门的框架,毫不夸张的 ...
- 通过 UDP 发送数据的简单范例
package j2se.core.net.udp; import java.io.IOException; import java.net.DatagramPacket; import java.n ...
最新文章
- 47分钟,BERT训练又破全新纪录!英伟达512个GPU训练83亿参数GPT-2 8B
- 浅谈算法和数据结构: 五 优先级队列与堆排序
- python每日一类(3):os和sys
- HTML5 Web Worker
- istio-0.8 服务超时配置
- rabbitmq基于http的认证和授权
- 我又发现一个直接就能安装中文小红帽的方法
- usb4java android,USB audio on Android platform
- 文件打包下载 (ZipArchive)
- 微信小程序--获取已发布微信小游戏和小程序源码
- 圆梦天宫,英雄凯旋—从神州十三号看IP技术在航天测控通信网的应用
- 深信服负载均衡开发实习面经
- 前端食堂技术周刊第 40 期:HTTP/3、WebContainers 登陆 Firefox、Remix Conf 2022、VueConf US 2022
- 利用免费cdn加速webpack单页应用
- 计算机的操作系统的功能有哪些,操作系统的主要功能是主要有哪些类型
- 用户需求调研—快速上手篇
- vbox虚拟机上装了银行的网络认证软件后不能正常使用的问题
- 任意模数ntt_MTT:任意模数NTT
- Hadoop生态系统——HiveQL操作实战
- shell-xargs
热门文章
- d3d12.dll丢失怎么修复-d3d12.dll修复工具下载
- 王思聪砸百万组装服务器,跑分全球第4
- HTML5 定位的使用
- t420i升级固态硬盘提升_电脑升级固态硬盘,速度还不够快?这些设置你一定没做好...
- Hibernate(六)一对一映射关系
- C# 特殊运算符 |,,^的运用
- oracle之查询某一列是否含有英文字符
- springboot通过ITextPDF写入模板并下载
- 网易云课堂web安全学习第七天——了解url跳转漏洞
- CPA、CPS、CPM、CPT、CPC 是什么?