本编文章的目的主要用简明的方法在纯PS里对DDR3进行读写。

本文所使用的开发板是Miz702
PC 开发环境版本:Vivado 2015.4 Xilinx SDK 2015.4

11.0本章难度系数★☆☆☆☆☆☆

11.1 搭建硬件工程

Step1:新建一个名为为Miz702_sys的工程

Step2:选择RTL Project 勾选Do not specify source at this time

Step3:由于Miz702兼容zedboard 因此选择zedboard开发包

Step4:单击Finish

11.2使用IP Integrator创建硬件系统

Step1:单击Create Block Design

Step2:输入system

Step3:单击下图中添加IP按钮

Step4:搜素单词z选择ZYNQ7 Processing System,然后双击

Step5:添加进来了ZYNQ CPU IP,然后单击Run Block Automation

Step6:直接单击OK

Step7:在你点击了OK后,你会发现DDR以及FICED_IO自劢的延伸出来。

Step8:连线的作用就是把PS的时钟可以接入PL部分,当然这里我们暂时用不到PL部分的资源。在Block文件中,我们迚行连线,将鼠标放在引脚处,鼠标变成铅笔后迚行拖拽,连线如下图所示:

Step9:双击ZYNQ,使能UART1点击Run Connection Automation,按照如图所示配置后单击OK

Step10: 右击 system.bd, 单击Generate Output Products

Step11:支部操作会产生执行、仿真、综合的文件

Step12:右击system.bd 选择 Create HDL Wrapper 这步的作用是产生顶层的HDL文件

Step13:选择Leave Let Vivado manager wrapper and auto-update 然后单击OK

11.3导出SOC硬件到SDK

Step1:File->Export->Export Hardware

Step2:勾选Include bitstream 直接单击OK

Step3:File->Launch SDK加载到SDK

Step4:单击OK

11.4软件工程

新建一个PL_PS_INTC空的工程,并且添加main.c

DDR3的地址建好后,在mem_demo_bsp->ps7->cortexa9_0的路径下,打开xparameters_ps.h这个头文件,这个头文件是cortexA9可以直接控制的外设地址的宏定义。在里面可以找到DDR的地址,可以看到如下代码:

/* Canonical definitions for DDR MEMORY */
#define XPAR_DDR_MEM_BASEADDR 0x00000000U
#define XPAR_DDR_MEM_HIGHADDR 0x3FFFFFFFU

等会我们要使用这个地址,对DDR3进行读写操作,读写操作函数在mem_demo_bsp->ps7->cortexa9_0的路径下,打开xil_io.h这个头文件,这个头文件是cortexA9可以直接控制的内存映射或者映射到了地址空间的IO。在里面可以看到如下代码:
//从某个地址读数据 
u8 Xil_In8(INTPTR Addr);
u16 Xil_In16(INTPTR Addr);
u32 Xil_In32(INTPTR Addr);

//向某个地址写数据。
void Xil_Out8(INTPTR Addr, u8 Value);
void Xil_Out16(INTPTR Addr, u16 Value);
void Xil_Out32(INTPTR Addr, u32 Value);
OK,有了这些就可以简单的对DDR进行续写操作了

14.3代码实现

/*

* main.c

*

*  Created on: 2016年4月4日

*      Author: Administrator

*/

#include "stdio.h"

#include "xparameters.h"

#include "xparameters_ps.h"

#include "xil_printf.h"

#include "xil_io.h"

#define DDR_BASEARDDR      XPAR_DDR_MEM_BASEADDR + 0x10000000

int main()

{

    int i;

    int rev;

    xil_printf("Hello World\n\r");

    for(i=0; i<32; i++)

    {

        Xil_Out32(DDR_BASEARDDR+i*4,i);

    }

    for(i=0; i<32; i++)

    {

        rev = Xil_In32(DDR_BASEARDDR+i*4);

        xil_printf("the address at  %x data is : %x \n\r" ,DDR_BASEARDDR+i*4, rev);

    }

    return 0;

}

11.5 测试结果

串口终端的结果如下:
Hello World

the address at  10000000 data is : 0

the address at  10000004 data is : 1

the address at  10000008 data is : 2

the address at  1000000C data is : 3

the address at  10000010 data is : 4

the address at  10000014 data is : 5

the address at  10000018 data is : 6

the address at  1000001C data is : 7

the address at  10000020 data is : 8

the address at  10000024 data is : 9

the address at  10000028 data is : A

the address at  1000002C data is : B

the address at  10000030 data is : C

the address at  10000034 data is : D

the address at  10000038 data is : E

the address at  1000003C data is : F

the address at  10000040 data is : 10

the address at  10000044 data is : 11

the address at  10000048 data is : 12

the address at  1000004C data is : 13

the address at  10000050 data is : 14

the address at  10000054 data is : 15

the address at  10000058 data is : 16

the address at  1000005C data is : 17

the address at  10000060 data is : 18

the address at  10000064 data is : 19

the address at  10000068 data is : 1A

the address at  1000006C data is : 1B

the address at  10000070 data is : 1C

the address at  10000074 data is : 1D

the address at  10000078 data is : 1E

the address at  1000007C data is : 1F
....................

11.4 本章小结

通过本章的学习,在仅仅使用PS可以对DDR3读写,这样在处理一些速度不快但是量很大的数据时很方便,当然这种方式每次读写都需要CPU干预,效率是比较低的,主要看需求吧。

淘宝店铺:https://osrc.taobao.com

官网论坛:www.osrc.cn

视频链接:http://www.osrc.cn/forum.php?mod=viewthread&tid=1101

源码链接:链接:http://pan.baidu.com/s/1bUBet4 密码:o0ke

第十一章 ZYNQ-MIZ702 DDR3 PS读写操作方案的更多相关文章

  1. 第十章 ZYNQ-MIZ701 DDR3 PS读写操作方案

      本编文章的目的主要用简明的方法在纯PS里对DDR3进行读写. 本文所使用的开发板是Miz701 PC 开发环境版本:Vivado 2015.4 Xilinx SDK 2015.4 10.0本章难度 ...

  2. [求助] 关于DDR3的读写操作,看看我的流程对吗?

    [求助] 关于DDR3的读写操作,看看我的流程对吗? 最近简单调了一下KC705开发板上面的DDR3,型号是MT8JTF12864HZ-1G6:有时候加载程序后,发现读出数据不是写进去的,在这将我的操 ...

  3. 第十一章· MHA高可用及读写分离

    一.MHA简介 1.1.作者简介 松信嘉範: MySQL/Linux专家 2001年索尼公司入职 2001年开始使用oracle 2004年开始使用MySQL 2006年9月-2010年8月MySQL ...

  4. 76.ZYNQ-用PS控制DDR3内存读写

    本编文章的目的主要用简明的方法对DDR3进行读写,当然这种方式每次读写都需要CPU干预,效率是比较低的,但是这是学习的过程吧. 本系列文章尽可能的让每一个实验都相对独立,过程尽可能保证完整性,保证实验 ...

  5. D3.js的v5版本入门教程(第十一章)——交互式操作

    D3.js的v5版本入门教程(第十一章) 与图形进行交互操作是很重要的!所谓的交互操作也就是为图形元素添加监听事件,比如说当你鼠标放在某个图形元素上面的时候,就会显示相应的文字,而当鼠标移开后,文字就 ...

  6. 第十一章 ZYNQ-MIZ701 PS读写PL端BRAM

      本篇文章目的是使用Block Memory进行PS和PL的数据交互或者数据共享,通过zynq PS端的Master GP0端口向BRAM写数据,然后再通过PS端的Mater GP1把数据读出来,将 ...

  7. 第十二章 ZYNQ-MIZ702 PS读写PL端BRAM

      本篇文章目的是使用Block Memory进行PS和PL的数据交互或者数据共享,通过zynq PS端的Master GP0端口向BRAM写数据,然后再通过PS端的Mater GP1把数据读出来,将 ...

  8. 第十四章 ZYNQ TIMER定时器中断

      上篇文章实现了了PS接受来自PL的中断,本片文章将在ZYNQ的纯PS里实现私有定时器中断.每隔一秒中断一次,在中断函数里计数加1,通过串口打印输出. 本文所使用的开发板是Miz702 PC 开发环 ...

  9. [CSAPP笔记][第十一章网络编程]

    第十一章 网络编程 我们需要理解基本的客户端-服务端编程模型,以及如何编写使用因特网提供的服务的客户端-服务端程序. 最后,我们将把所有这些概念结合起来,开发一个小的但功能齐全的Web服务器,能够为真 ...

随机推荐

  1. Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤

    Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤 一.在ubuntu下尝试 1. 在虚拟机VWware Workstation 12. ...

  2. nltk data 离线安装

    运行程序时发现如下错误: 在命令行下载速度太慢,因此需要离线安装: 按照:http://www.nltk.org/data.html 中manual installation的方法, 将包下载好后解压 ...

  3. Flutter点击两次返回键退出APP

    在APP中一些页面为了防止用户操作失误点击到返回键导致退出APP,可以设置其一定时间内点击两次返回键才允许退出APP,完成这个功能可以通过WillPopScope和SystemNavigator.po ...

  4. vue的路由认识

    this.$router.options.routes //获得整个路由路径对象 this.$route.matched //获得当前路由的路径对象

  5. 强化学习——Q-learning算法

    假设有这样的房间     如果将房间表示成点,然后用房间之间的连通关系表示成线,如下图所示:       这就是房间对应的图.我们首先将agent(机器人)处于任何一个位置,让他自己走动,直到走到5房 ...

  6. Matplotlib数据可视化基础

    import numpy as np import matplotlib.pyplot as plt ## %matplotlib inline表示在行中显示图片,在命令行运行报错 data = np ...

  7. Hadoop 部署之 Hive (五)

    目录 一.Hive 简介 1.什么是 Hive 2.为什么使用 Hive 3.Hive 的特点 4.Hive 的架构 二.Hive 安装 1.MySQL 安装(datanode01) 2.MySQL ...

  8. sws office-强大小巧的开源office

    sws office是一款由国际软件分享组织于2019年刚刚开发完成的一个开源office,目的是为了响应CR2019的号召,开发一个体积只有2.2MB,占用内存小,运行速度极快的office,它支持 ...

  9. Vulnhub-XXE靶机学习

    ------------恢复内容开始------------ 前两天在微信公众号上看见了这个XXE靶场,就想试一试,虽然网上关于这个的文章已经写了太多太多了,但还是要写出来划划水,233333333, ...

  10. 如何运行spring boot 工程

    1.右键工程,Run As, Maven install, 2.右键工程,Run As,Spring Boot App 3.在地址栏输入127.0.0.1:8080 动图示例