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 测试结果

S03_CH02_AXI_DMA PL发送数据到PS的更多相关文章

  1. STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT

    STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) http://home.eeworld.com.cn/my/space-uid-338727-blogid-47 ...

  2. Java使用UDP发送数据到InfluxDB

    最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分 ...

  3. 【原生态】Http请求数据 与 发送数据

    今天项目组小弟居然问我怎么用java访问特定的地址获取数据和发送请求 Http请求都是通过输入输出流来进行操作的,首先要制定GET或者POST,默认是GET,在安全和数据量较大情况下请使用post 根 ...

  4. POST在发送数据的时候使用的是HTTP命令

    防止SQL注入 SQL(结构化查询语言)是基于美国国家标准学会(ANSI)标准,并作为共同的语言与数据库通信.每个数据库系统增加了一些专有功能到基本的ANSI SQL. SQL注入是一门将制作好的SQ ...

  5. sim800 gprs发送数据的AT流程

    switch(send_flag) { case 1: uart_send(&huart4,"AT\r\n",4); //AT break; case 2: uart_se ...

  6. 通过 UDP 发送数据的简单范例

    package j2se.core.net.udp; import java.io.IOException;import java.net.DatagramPacket;import java.net ...

  7. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和串口只发送数据不能接收数据问题

    STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085的问题讨论:http://www.rt-thr ...

  8. Linux内核--网络栈实现分析(八)--应用层发送数据(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7547826 更多请查看专栏,地 ...

  9. C#串口通信—向串口发送数据,同步接收返回数据

    最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...

随机推荐

  1. 使用Flask设计带认证token的RESTful API接口

    大数据时代 Just a record. 使用Flask设计带认证token的RESTful API接口[翻译] 上一篇文章, 使用python的Flask实现一个RESTful API服务器端  简 ...

  2. kubernetes部署nginx/tomcat

    kubernetes集群已经部署好了,需要的话可以参考之前的文章https://www.cnblogs.com/winter1519/p/10015420.html [root@master tomc ...

  3. UVALive 3716 DNA Regions ——(扫描法)

    乍一看这个问题似乎是很复杂,但其实很好解决. 先处理出每个点到原点的距离和到x正半轴的角度(从x正半轴逆时针旋转的角度).然后以后者进行排序. 枚举每一个点到圆心的距离,作为半径,并找出其他到圆心距离 ...

  4. UC浏览器打开百度显示 丰臣吉秀.网址

  5. 修改Eclipse启动时的选择工作空间

    对于eclipse的默认的工作空间,如果不需要正常切换workspace的用户很方便,打开eclipse便自动进入默认的工作空间.而如果用户经常在多个workspace之间切换的话,启动eclipse ...

  6. Java NIO学习笔记八 Pipe

    Java NIO Pipe Java NIO管道是两个线程之间的单向数据连接.Pipe 具有源信道和接受通道.您将数据写入sink通道.然后可以从源通道读取该数据. 这是一个原理的Pipe流程图: J ...

  7. ps填充颜色快捷键

    一:选中区域: 二:填充前景色快捷键是“Alt+Delete”: 三:填充背景色的键盘快捷键是“Ctrl+Delete”:

  8. 无法登录到Windows云服务器怎么办?

    当您的云服务器无法远程登录时,我们首先建议您使用VNC方式登录. 是否可以通过控制台远程登录 远程登录失败时,请首先尝试能否通过管理控制台,使用VNC方式登录弹性云服务器. 登录管理控制台. 选择“计 ...

  9. PHPCMS全局自定义函数 获取用户信息的办法

    在这个文件中增加即可\phpcms\libs\functions\global.func.php /** * 获取当前登陆者的信息 * @param $f 取什么字段F就传什么值 */ functio ...

  10. jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具

    1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...